Redux Framework - Version 3.5.6

Version Description

Download this release

Release Info

Developer dovyp
Plugin Icon 128x128 Redux Framework
Version 3.5.6
Comparing to
See all releases

Code changes from version 3.5.5 to 3.5.6

Files changed (52) hide show
  1. CHANGELOG.md +39 -0
  2. ReduxCore/assets/css/redux-fields.css +1 -1
  3. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css +1 -1
  4. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss +1 -1
  5. ReduxCore/assets/js/redux.js +19 -19
  6. ReduxCore/assets/js/redux.min.js +2 -2
  7. ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js +2 -2
  8. ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js +1 -1
  9. ReduxCore/core/enqueue.php +58 -45
  10. ReduxCore/framework.php +18 -28
  11. ReduxCore/inc/class.p.php +3 -3
  12. ReduxCore/inc/class.redux_api.php +2 -2
  13. ReduxCore/inc/class.redux_filesystem.php +4 -0
  14. ReduxCore/inc/class.redux_sass.php +0 -265
  15. ReduxCore/inc/extensions/customizer/extension_customizer.css +1 -0
  16. ReduxCore/inc/extensions/customizer/extension_customizer.js +361 -0
  17. ReduxCore/inc/extensions/customizer/extension_customizer.min.js +1 -0
  18. ReduxCore/inc/extensions/customizer/extension_customizer.php +313 -197
  19. ReduxCore/inc/extensions/customizer/extension_customizer.scss +193 -0
  20. ReduxCore/inc/extensions/customizer/inc/customizer_control.php +43 -0
  21. ReduxCore/inc/extensions/customizer/inc/customizer_devs.php +43 -0
  22. ReduxCore/inc/extensions/customizer/inc/customizer_fields.php +53 -0
  23. ReduxCore/inc/extensions/customizer/inc/customizer_panel.php +157 -0
  24. ReduxCore/inc/extensions/customizer/inc/customizer_section.php +150 -0
  25. ReduxCore/inc/fields/background/field_background.js +1 -0
  26. ReduxCore/inc/fields/background/field_background.min.js +1 -1
  27. ReduxCore/inc/fields/border/field_border.php +1 -0
  28. ReduxCore/inc/fields/color/field_color.js +1 -0
  29. ReduxCore/inc/fields/color/field_color.min.js +1 -1
  30. ReduxCore/inc/fields/color_gradient/field_color_gradient.js +1 -0
  31. ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js +1 -1
  32. ReduxCore/inc/fields/editor/field_editor_c.php +0 -0
  33. ReduxCore/inc/fields/media/field_media.php +1 -1
  34. ReduxCore/inc/fields/palette/field_palette.css +1 -1
  35. ReduxCore/inc/fields/palette/field_palette.scss +3 -1
  36. ReduxCore/inc/fields/select/field_select.js +3 -0
  37. ReduxCore/inc/fields/select/field_select.min.js +1 -1
  38. ReduxCore/inc/fields/text/field_text.css +1 -1
  39. ReduxCore/inc/fields/text/field_text.scss +24 -14
  40. ReduxCore/inc/fields/typography/field_typography.js +7 -4
  41. ReduxCore/inc/fields/typography/field_typography.min.js +1 -1
  42. ReduxCore/inc/scssphp/scss.inc.php +0 -4582
  43. ReduxCore/inc/themecheck/checks/embedded.php +1 -1
  44. ReduxCore/inc/themecheck/class.redux_themecheck.php +8 -9
  45. ReduxCore/inc/welcome/css/redux-welcome.css +1 -1
  46. ReduxCore/inc/welcome/css/redux-welcome.scss +0 -33
  47. ReduxCore/templates/panel/content.tpl.php +2 -0
  48. class.redux-plugin.php +3 -3
  49. composer.json +1 -1
  50. readme.txt +23 -1
  51. redux-framework.php +1 -1
  52. sample/sample-config.php +40 -40
CHANGELOG.md CHANGED
@@ -1,4 +1,43 @@
1
  # Redux Framework Changelog
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  ## 3.5.5
3
  * Fixed: Date-time fixes with CSS overloading and positioning.
4
 
1
  # Redux Framework Changelog
2
+
3
+ ## 3.5.6
4
+ * Fixed Customizer WP 4.3 final fixes.
5
+
6
+ ## 3.5.5.9
7
+ * Fixed #2500 - Conflict with outdated select2 in JW Player plugin.
8
+
9
+ ## 3.5.5.8
10
+ * Modified: icon_type no longer needed for section icons. Now detects if URLs are provided for images.
11
+ * Fixed: Various customizer fixes. HTML in the customizer title.
12
+ * Modified: Media URL now is 95% wide.
13
+ * Modified: Select2 now 100% width instead of just resolve (that doesn't always work).
14
+
15
+ ## 3.5.5.7
16
+ * Modified: Field enqueue method to allow for more flexibility.
17
+ * Added: Support for Airplane Mode plugin (https://github.com/norcross/airplane-mode) by @norcross. Thanks @chriscct7 #2463
18
+
19
+ ## 3.5.5.6
20
+ * Fixed: Undefined index in theme-check enhancements. Thanks @winwinwebdesign!
21
+ * Removed: SASS compiler & code. Note needed.
22
+ * Fixed: Color transparency live-update for Customizer for color, background,
23
+ and color gradient fields.
24
+
25
+ ## 3.5.5.5
26
+ * Fixed: Undefined index when removing a section.
27
+
28
+ ## 3.5.5.4
29
+ * Fixed: Typography bug onload always saying settings have changed.
30
+ * Modified: Added minified customizer JS.
31
+
32
+ ## 3.5.5.3
33
+ * Fixed: Redux CUSTOMIZER! YEA!
34
+
35
+ ## 3.5.5.2
36
+ * Fixed: Small echo in Redux API
37
+
38
+ ## 3.5.5.1
39
+ * Fixed: PHP 5.2 Theme-Check error.
40
+
41
  ## 3.5.5
42
  * Fixed: Date-time fixes with CSS overloading and positioning.
43
 
ReduxCore/assets/css/redux-fields.css CHANGED
@@ -1 +1 @@
1
- .redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1!important}.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select{width:200px!important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select{width:100%!important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block!important;width:100px!important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center!important}}.sp-container,.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.sp-replacer.focus,.sp-replacer.hover,.sp-replacer:focus,.sp-replacer:hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer.focus,.sp-replacer:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#ui-datepicker-div{z-index:15!important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container .select_wrapper,.redux-dimensions-container select{width:65px!important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block!important;width:100px!important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{float:none;border-color:#E7E7E7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px}.redux-main .divide .inner{width:42%!important;left:40%!important;margin-left:-6%;background-color:#FCFCFC;border-color:#E7E7E7;position:absolute;height:1px;top:50%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#FCFCFC;border-color:#E7E7E7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82%!important;left:18%!important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff)) #eee;background:-webkit-linear-gradient(bottom,#e3e3e3,#fff) #eee;background:-moz-linear-gradient(bottom,#e3e3e3,#fff) #eee;background:-o-linear-gradient(bottom,#e3e3e3,#fff) #eee;background:linear-gradient(to top,#e3e3e3,#fff) #eee}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0!important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=radio]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px;display:inline-block;padding:2px 2px 2px 0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected img{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0!important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0!important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-info-field .redux-info-desc,.wp-customizer .hasIcon.redux-notice-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-info-field .redux-info-icon,.wp-customizer .hasIcon.redux-notice-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.deletion,.redux-container .redux-multi-text-remove,.redux-container a.redux-multi-text-remove{color:red;padding:2px 4px;margin-left:5px;background:orange}.deletion:hover,.redux-container .redux-multi-text-remove:hover,.redux-container a.redux-multi-text-remove:hover{background:red;color:#fff;text-decoration:none}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100%!important}.redux-container-palette label{border-width:3px;border-radius:0;width:100%!important}.redux-container-palette label.ui-button.ui-widget{width:95%;background:0 0;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:700;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff,0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333!important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-main .form-table-section-indented{width:95%;margin-left:5%}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0!important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px!important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block!important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container,.redux-container-slider input,.redux-container-slider select{display:block!important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25%!important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#FAFAFA;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-origin{border-radius:2px}.noUi-target{border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #BBB}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#B8B8B8}[disabled] .noUi-handle{cursor:not-allowed}.noUi-state-blocked .noUi-connect,.noUi-state-blocked.noUi-connect{background:#4FDACF}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf!important;border-radius:3px!important;margin-top:0!important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move!important;font-weight:700;padding:0 10px!important;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:700}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100%!important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el{cursor:move}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0!important;font-size:12px!important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.labeled li{line-height:1.4em!important}.redux-container-sortable li{line-height:30px!important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=text]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#F9F9F9;border:1px solid #E3E3E3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #DFDFDF;cursor:move;font-weight:700;margin-bottom:10px!important;padding:0 10px;height:40px;line-height:40px!important;background-color:#F1F1F1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px}.redux-container-spacing .select_wrapper,.redux-container-spacing select{width:80px!important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block!important;width:70px!important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative!important;z-index:1;width:45px!important;height:30px!important;background:#e7e7e7!important;border:1px solid #bfbfbf!important;border-right:0!important;border-left:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff,#f3f3f3) #fff;background:-o-linear-gradient(#fff,#f3f3f3) #fff;background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3)) #fff;background:linear-gradient(#fff,#f3f3f3) #fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3,#fff) #f3f3f3;background:-o-linear-gradient(#f3f3f3,#fff) #f3f3f3;background:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff)) #f3f3f3;background:linear-gradient(#f3f3f3,#fff) #f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-enable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable span{line-height:30px;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable,.redux-container-switch .cb-enable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container .redux-typography-color,.redux-main .redux-typography-container input.wp-picker-default{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px!important;margin-top:0;margin-bottom:0;margin-left:4px!important;font-size:12px!important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48%!important;min-width:210px!important;max-width:324px!important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(even),.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px!important;display:block;float:left;height:28px!important;line-height:50px!important;padding:0!important;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0!important;margin-right:0!important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0!important;margin-right:5px!important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px!important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100%!important}.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px!important}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0 0!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:0 0!important;border:0!important;height:auto}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:3px 5px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin-top:0!important}.redux-main .wp-picker-clear{margin-top:0!important}.wp-customizer .redux-main .redux-typography-container .redux-typography-color,.wp-customizer .redux-main .redux-typography-container input.wp-picker-default,.wp-customizer .redux-main input.wp-picker-default{padding:0 4px!important}.wp-customizer .redux-main input.wp-color-picker{width:65px!important;margin-left:5px!important}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}
1
+ .redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1!important}.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select{width:200px!important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select{width:100%!important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block!important;width:100px!important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center!important}}.sp-container,.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.sp-replacer.focus,.sp-replacer.hover,.sp-replacer:focus,.sp-replacer:hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer.focus,.sp-replacer:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#ui-datepicker-div{z-index:15!important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container .select_wrapper,.redux-dimensions-container select{width:65px!important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block!important;width:100px!important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{float:none;border-color:#E7E7E7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px}.redux-main .divide .inner,.redux-main .divide .inner span{background-color:#FCFCFC;border-color:#E7E7E7;position:absolute}.redux-main .divide .inner{width:42%!important;left:40%!important;margin-left:-6%;height:1px;top:50%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{height:5px;width:5px;border-width:2px;border-style:solid;display:block;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82%!important;left:18%!important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0!important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=radio]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px;display:inline-block;padding:2px 2px 2px 0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected img{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field .redux-info-icon i,.redux-notice-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc,.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0!important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0!important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-info-field .redux-info-desc,.wp-customizer .hasIcon.redux-notice-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-info-field .redux-info-icon,.wp-customizer .hasIcon.redux-notice-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.deletion,.redux-container .redux-multi-text-remove,.redux-container a.redux-multi-text-remove{color:red;padding:2px 4px;margin-left:5px;background:orange}.deletion:hover,.redux-container .redux-multi-text-remove:hover,.redux-container a.redux-multi-text-remove:hover{background:red;color:#fff;text-decoration:none}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100%!important}.redux-container-palette label{border:3px solid transparent;border-color:transparent!important;border-radius:0;width:100%!important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:0 0;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:700;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff,0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333!important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-main .form-table-section-indented{width:95%;margin-left:5%}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0!important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px!important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block!important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container,.redux-container-slider input,.redux-container-slider select{display:block!important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25%!important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0;border-radius:2px}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#FAFAFA;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-target{border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #BBB}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#B8B8B8}[disabled] .noUi-handle{cursor:not-allowed}.noUi-state-blocked .noUi-connect,.noUi-state-blocked.noUi-connect{background:#4FDACF}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf!important;border-radius:3px!important;margin-top:0!important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move!important;font-weight:700;padding:0 10px!important;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:700}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100%!important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el{cursor:move}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0!important;font-size:12px!important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.labeled li{line-height:1.4em!important}.redux-container-sortable li{line-height:30px!important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=text]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#F9F9F9;border:1px solid #E3E3E3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #DFDFDF;cursor:move;font-weight:700;margin-bottom:10px!important;padding:0 10px;height:40px;line-height:40px!important;background-color:#F1F1F1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px}.redux-container-spacing .select_wrapper,.redux-container-spacing select{width:80px!important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block!important;width:70px!important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative!important;z-index:1;width:45px!important;height:30px!important;background:#e7e7e7!important;border:1px solid #bfbfbf!important;border-right:0!important;border-left:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff,#f3f3f3);background:-o-linear-gradient(#fff,#f3f3f3);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3));background:linear-gradient(#fff,#f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3,#fff);background:-o-linear-gradient(#f3f3f3,#fff);background:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background:linear-gradient(#f3f3f3,#fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat}.redux-container-switch .cb-disable.selected,.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-enable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable span{line-height:30px;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable,.redux-container-switch .cb-enable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px}.redux-container-switch .cb-disable{border-left:0;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0}.redux-container-text label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container .redux-typography-color,.redux-main .redux-typography-container input.wp-picker-default{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px!important;margin-top:0;margin-bottom:0;margin-left:4px!important;font-size:12px!important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48%!important;min-width:210px!important;max-width:324px!important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(even),.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px!important;display:block;float:left;height:28px!important;line-height:50px!important;padding:0!important;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0!important;margin-right:0!important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0!important;margin-right:5px!important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px!important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100%!important}.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px!important}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0 0!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:0 0!important;border:0!important;height:auto}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:3px 5px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin-top:0!important}.redux-main .wp-picker-clear{margin-top:0!important}.wp-customizer .redux-main .redux-typography-container .redux-typography-color,.wp-customizer .redux-main .redux-typography-container input.wp-picker-default,.wp-customizer .redux-main input.wp-picker-default{padding:0 4px!important}.wp-customizer .redux-main input.wp-color-picker{width:65px!important;margin-left:5px!important}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css CHANGED
@@ -6,4 +6,4 @@
6
  * Dual licensed under the MIT or GPL Version 2 licenses.
7
  *
8
  * Portions copyright jQuery UI & Twitter Bootstrap
9
- */.redux-container .ui-state-disabled{cursor:default !important}.redux-container .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.redux-container .ui-widget-content{border:1px solid #aaaaaa;background:#fff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x;color:#404040}.redux-container .ui-widget-header{font-weight:bold;border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border:1px solid #666}.redux-container .ui-widget-header a{color:#222222}.redux-container .ui-state-default,.redux-container .ui-widget-content .ui-state-default,.redux-container .ui-widget-header .ui-state-default{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-state-default a,.redux-container .ui-state-default a:link,.redux-container .ui-state-default a:visited{color:#555555;text-decoration:none}.redux-container .ui-state-hover,.redux-container .ui-widget-content .ui-state-hover,.redux-container .ui-widget-header .ui-state-hover,.redux-container .ui-state-focus,.redux-container .ui-widget-content .ui-state-focus,.redux-container .ui-widget-header .ui-state-focus{background-position:0 -15px;color:#333;text-decoration:none}.redux-container .ui-state-hover a,.redux-container .ui-state-hover a:hover,.redux-container .ui-state-hover a:link,.redux-container .ui-state-hover a:visited{color:#212121;text-decoration:none}.redux-container .ui-state-active,.redux-container .ui-widget-content .ui-state-active,.redux-container .ui-widget-header .ui-state-active{border:1px solid #aaaaaa;font-weight:normal;color:#212121}.redux-container .ui-state-active a,.redux-container .ui-state-active a:link,.redux-container .ui-state-active a:visited{color:#212121;text-decoration:none}.redux-container .ui-widget :active{outline:none}.redux-container .ui-state-highlight p,.redux-container .ui-state-error p,.redux-container .ui-state-default p{font-size:13px;font-weight:normal;line-height:18px;margin:7px 15px}.redux-container .ui-state-highlight,.redux-container .ui-widget-content .ui-state-highlight,.redux-container .ui-widget-header .ui-state-highlight{position:relative;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);text-shadow:0 1px 0 rgba(255,255,255,0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25)}.redux-container .ui-state-highlight a,.redux-container .ui-widget-content .ui-state-highlight a,.redux-container .ui-widget-header .ui-state-highlight a{color:#363636}.redux-container .ui-state-error,.redux-container .ui-widget-content .ui-state-error,.redux-container .ui-widget-header .ui-state-error{position:relative;margin-bottom:18px;color:#ffffff;border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-state-error a,.redux-container .ui-widget-content .ui-state-error a,.redux-container .ui-widget-header .ui-state-error a{color:#cd0a0a}.redux-container .ui-state-error-text,.redux-container .ui-widget-content .ui-state-error-text,.redux-container .ui-widget-header .ui-state-error-text{color:#cd0a0a}.redux-container .ui-priority-primary,.redux-container .ui-widget-content .ui-priority-primary,.redux-container .ui-widget-header .ui-priority-primary{font-weight:bold}.redux-container .ui-priority-secondary,.redux-container .ui-widget-content .ui-priority-secondary,.redux-container .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.redux-container .ui-state-disabled,.redux-container .ui-widget-content .ui-state-disabled,.redux-container .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.redux-container .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.redux-container .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.redux-container .ui-state-hover .ui-icon,.redux-container .ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.redux-container .ui-state-error .ui-icon,.redux-container .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_f6cf3b_256x240.png)}.redux-container .ui-icon-carat-1-n{background-position:0 0}.redux-container .ui-icon-carat-1-ne{background-position:-16px 0}.redux-container .ui-icon-carat-1-e{background-position:-32px 0}.redux-container .ui-icon-carat-1-se{background-position:-48px 0}.redux-container .ui-icon-carat-1-s{background-position:-64px 0}.redux-container .ui-icon-carat-1-sw{background-position:-80px 0}.redux-container .ui-icon-carat-1-w{background-position:-96px 0}.redux-container .ui-icon-carat-1-nw{background-position:-112px 0}.redux-container .ui-icon-carat-2-n-s{background-position:-128px 0}.redux-container .ui-icon-carat-2-e-w{background-position:-144px 0}.redux-container .ui-icon-triangle-1-n{background-position:0 -16px}.redux-container .ui-icon-triangle-1-ne{background-position:-16px -16px}.redux-container .ui-icon-triangle-1-e{background-position:-32px -16px}.redux-container .ui-icon-triangle-1-se{background-position:-48px -16px}.redux-container .ui-icon-triangle-1-s{background-position:-64px -16px}.redux-container .ui-icon-triangle-1-sw{background-position:-80px -16px}.redux-container .ui-icon-triangle-1-w{background-position:-96px -16px}.redux-container .ui-icon-triangle-1-nw{background-position:-112px -16px}.redux-container .ui-icon-triangle-2-n-s{background-position:-128px -16px}.redux-container .ui-icon-triangle-2-e-w{background-position:-144px -16px}.redux-container .ui-icon-arrow-1-n{background-position:0 -32px}.redux-container .ui-icon-arrow-1-ne{background-position:-16px -32px}.redux-container .ui-icon-arrow-1-e{background-position:-32px -32px}.redux-container .ui-icon-arrow-1-se{background-position:-48px -32px}.redux-container .ui-icon-arrow-1-s{background-position:-64px -32px}.redux-container .ui-icon-arrow-1-sw{background-position:-80px -32px}.redux-container .ui-icon-arrow-1-w{background-position:-96px -32px}.redux-container .ui-icon-arrow-1-nw{background-position:-112px -32px}.redux-container .ui-icon-arrow-2-n-s{background-position:-128px -32px}.redux-container .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.redux-container .ui-icon-arrow-2-e-w{background-position:-160px -32px}.redux-container .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.redux-container .ui-icon-arrowstop-1-n{background-position:-192px -32px}.redux-container .ui-icon-arrowstop-1-e{background-position:-208px -32px}.redux-container .ui-icon-arrowstop-1-s{background-position:-224px -32px}.redux-container .ui-icon-arrowstop-1-w{background-position:-240px -32px}.redux-container .ui-icon-arrowthick-1-n{background-position:0 -48px}.redux-container .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.redux-container .ui-icon-arrowthick-1-e{background-position:-32px -48px}.redux-container .ui-icon-arrowthick-1-se{background-position:-48px -48px}.redux-container .ui-icon-arrowthick-1-s{background-position:-64px -48px}.redux-container .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.redux-container .ui-icon-arrowthick-1-w{background-position:-96px -48px}.redux-container .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.redux-container .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.redux-container .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.redux-container .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.redux-container .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.redux-container .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.redux-container .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.redux-container .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.redux-container .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.redux-container .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.redux-container .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.redux-container .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.redux-container .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.redux-container .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.redux-container .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.redux-container .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.redux-container .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.redux-container .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.redux-container .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.redux-container .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.redux-container .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.redux-container .ui-icon-arrow-4{background-position:0 -80px}.redux-container .ui-icon-arrow-4-diag{background-position:-16px -80px}.redux-container .ui-icon-extlink{background-position:-32px -80px}.redux-container .ui-icon-newwin{background-position:-48px -80px}.redux-container .ui-icon-refresh{background-position:-64px -80px}.redux-container .ui-icon-shuffle{background-position:-80px -80px}.redux-container .ui-icon-transfer-e-w{background-position:-96px -80px}.redux-container .ui-icon-transferthick-e-w{background-position:-112px -80px}.redux-container .ui-icon-folder-collapsed{background-position:0 -96px}.redux-container .ui-icon-folder-open{background-position:-16px -96px}.redux-container .ui-icon-document{background-position:-32px -96px}.redux-container .ui-icon-document-b{background-position:-48px -96px}.redux-container .ui-icon-note{background-position:-64px -96px}.redux-container .ui-icon-mail-closed{background-position:-80px -96px}.redux-container .ui-icon-mail-open{background-position:-96px -96px}.redux-container .ui-icon-suitcase{background-position:-112px -96px}.redux-container .ui-icon-comment{background-position:-128px -96px}.redux-container .ui-icon-person{background-position:-144px -96px}.redux-container .ui-icon-print{background-position:-160px -96px}.redux-container .ui-icon-trash{background-position:-176px -96px}.redux-container .ui-icon-locked{background-position:-192px -96px}.redux-container .ui-icon-unlocked{background-position:-208px -96px}.redux-container .ui-icon-bookmark{background-position:-224px -96px}.redux-container .ui-icon-tag{background-position:-240px -96px}.redux-container .ui-icon-home{background-position:0 -112px}.redux-container .ui-icon-flag{background-position:-16px -112px}.redux-container .ui-icon-calendar{background-position:-32px -112px}.redux-container .ui-icon-cart{background-position:-48px -112px}.redux-container .ui-icon-pencil{background-position:-64px -112px}.redux-container .ui-icon-clock{background-position:-80px -112px}.redux-container .ui-icon-disk{background-position:-96px -112px}.redux-container .ui-icon-calculator{background-position:-112px -112px}.redux-container .ui-icon-zoomin{background-position:-128px -112px}.redux-container .ui-icon-zoomout{background-position:-144px -112px}.redux-container .ui-icon-search{background-position:-160px -112px}.redux-container .ui-icon-wrench{background-position:-176px -112px}.redux-container .ui-icon-gear{background-position:-192px -112px}.redux-container .ui-icon-heart{background-position:-208px -112px}.redux-container .ui-icon-star{background-position:-224px -112px}.redux-container .ui-icon-link{background-position:-240px -112px}.redux-container .ui-icon-cancel{background-position:0 -128px}.redux-container .ui-icon-plus{background-position:-16px -128px}.redux-container .ui-icon-plusthick{background-position:-32px -128px}.redux-container .ui-icon-minus{background-position:-48px -128px}.redux-container .ui-icon-minusthick{background-position:-64px -128px}.redux-container .ui-icon-close{background-position:-80px -128px}.redux-container .ui-icon-closethick{background-position:-96px -128px}.redux-container .ui-icon-key{background-position:-112px -128px}.redux-container .ui-icon-lightbulb{background-position:-128px -128px}.redux-container .ui-icon-scissors{background-position:-144px -128px}.redux-container .ui-icon-clipboard{background-position:-160px -128px}.redux-container .ui-icon-copy{background-position:-176px -128px}.redux-container .ui-icon-contact{background-position:-192px -128px}.redux-container .ui-icon-image{background-position:-208px -128px}.redux-container .ui-icon-video{background-position:-224px -128px}.redux-container .ui-icon-script{background-position:-240px -128px}.redux-container .ui-icon-alert{background-position:0 -144px}.redux-container .ui-icon-info{background-position:-16px -144px}.redux-container .ui-icon-notice{background-position:-32px -144px}.redux-container .ui-icon-help{background-position:-48px -144px}.redux-container .ui-icon-check{background-position:-64px -144px}.redux-container .ui-icon-bullet{background-position:-80px -144px}.redux-container .ui-icon-radio-off{background-position:-96px -144px}.redux-container .ui-icon-radio-on{background-position:-112px -144px}.redux-container .ui-icon-pin-w{background-position:-128px -144px}.redux-container .ui-icon-pin-s{background-position:-144px -144px}.redux-container .ui-icon-play{background-position:0 -160px}.redux-container .ui-icon-pause{background-position:-16px -160px}.redux-container .ui-icon-seek-next{background-position:-32px -160px}.redux-container .ui-icon-seek-prev{background-position:-48px -160px}.redux-container .ui-icon-seek-end{background-position:-64px -160px}.redux-container .ui-icon-seek-start{background-position:-80px -160px}.redux-container .ui-icon-seek-first{background-position:-80px -160px}.redux-container .ui-icon-stop{background-position:-96px -160px}.redux-container .ui-icon-eject{background-position:-112px -160px}.redux-container .ui-icon-volume-off{background-position:-128px -160px}.redux-container .ui-icon-volume-on{background-position:-144px -160px}.redux-container .ui-icon-power{background-position:0 -176px}.redux-container .ui-icon-signal-diag{background-position:-16px -176px}.redux-container .ui-icon-signal{background-position:-32px -176px}.redux-container .ui-icon-battery-0{background-position:-48px -176px}.redux-container .ui-icon-battery-1{background-position:-64px -176px}.redux-container .ui-icon-battery-2{background-position:-80px -176px}.redux-container .ui-icon-battery-3{background-position:-96px -176px}.redux-container .ui-icon-circle-plus{background-position:0 -192px}.redux-container .ui-icon-circle-minus{background-position:-16px -192px}.redux-container .ui-icon-circle-close{background-position:-32px -192px}.redux-container .ui-icon-circle-triangle-e{background-position:-48px -192px}.redux-container .ui-icon-circle-triangle-s{background-position:-64px -192px}.redux-container .ui-icon-circle-triangle-w{background-position:-80px -192px}.redux-container .ui-icon-circle-triangle-n{background-position:-96px -192px}.redux-container .ui-icon-circle-arrow-e{background-position:-112px -192px}.redux-container .ui-icon-circle-arrow-s{background-position:-128px -192px}.redux-container .ui-icon-circle-arrow-w{background-position:-144px -192px}.redux-container .ui-icon-circle-arrow-n{background-position:-160px -192px}.redux-container .ui-icon-circle-zoomin{background-position:-176px -192px}.redux-container .ui-icon-circle-zoomout{background-position:-192px -192px}.redux-container .ui-icon-circle-check{background-position:-208px -192px}.redux-container .ui-icon-circlesmall-plus{background-position:0 -208px}.redux-container .ui-icon-circlesmall-minus{background-position:-16px -208px}.redux-container .ui-icon-circlesmall-close{background-position:-32px -208px}.redux-container .ui-icon-squaresmall-plus{background-position:-48px -208px}.redux-container .ui-icon-squaresmall-minus{background-position:-64px -208px}.redux-container .ui-icon-squaresmall-close{background-position:-80px -208px}.redux-container .ui-icon-grip-dotted-vertical{background-position:0 -224px}.redux-container .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.redux-container .ui-icon-grip-solid-vertical{background-position:-32px -224px}.redux-container .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.redux-container .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.redux-container .ui-icon-grip-diagonal-se{background-position:-80px -224px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-left,.redux-container .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-right,.redux-container .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-left,.redux-container .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-right,.redux-container .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.redux-container .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.redux-container .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.redux-container .ui-accordion{width:100%}.redux-container .ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;font-weight:bold}.redux-container .ui-accordion .ui-accordion-li-fix{display:inline}.redux-container .ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.redux-container .ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em 1.7em}.redux-container .ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.redux-container .ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.redux-container .ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.redux-container .ui-accordion .ui-accordion-content-active{display:block}.redux-container .ui-button{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;margin:0;text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-button-primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-success{color:#ffffff;background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-error{color:#ffffff;background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-icon-only{width:2.2em}.redux-container .ui-button-icons-only{width:3.4em}.redux-container button.ui-button-icons-only{width:3.7em}.redux-container .ui-button .ui-button-text{display:block}.redux-container .ui-button-icon-only .ui-button-text,.redux-container .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;display:none}.redux-container .ui-button-text-icon-primary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.redux-container .ui-button-text-icon-secondary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.redux-container .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.redux-container .ui-button-icon-only .ui-icon,.redux-container .ui-button-text-icon-primary .ui-icon,.redux-container .ui-button-text-icon-secondary .ui-icon,.redux-container .ui-button-text-icons .ui-icon,.redux-container .ui-button-icons-only .ui-icon{top:50%;margin-top:-3px;margin-bottom:3px}.redux-container .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.redux-container .ui-button-text-icon-primary .ui-button-icon-primary,.redux-container .ui-button-text-icons .ui-button-icon-primary,.redux-container .ui-button-icons-only .ui-button-icon-primary{left:.5em}.redux-container .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-buttonset{margin-right:7px}.redux-container .ui-buttonset .ui-state-active{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-buttonset .ui-button{margin-left:0;margin-right:0}.redux-container button.ui-button::-moz-focus-inner{border:0;padding:0}.redux-container .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.redux-container .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;border:0px;font-weight:bold;width:100%;padding:4px 0;background-color:#f5f5f5;color:#808080}.redux-container .ui-datepicker .ui-datepicker-prev,.redux-container .ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.redux-container .ui-datepicker .ui-datepicker-prev{left:2px}.redux-container .ui-datepicker .ui-datepicker-next{right:2px}.redux-container .ui-datepicker .ui-datepicker-prev span,.redux-container .ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.redux-container .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.redux-container .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.redux-container .ui-datepicker select.ui-datepicker-month-year{width:100%}.redux-container .ui-datepicker select.ui-datepicker-month,.redux-container .ui-datepicker select.ui-datepicker-year{width:49%}.redux-container .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.redux-container .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.redux-container .ui-datepicker td{border:0;padding:1px}.redux-container .ui-datepicker td span,.redux-container .ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.redux-container .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.redux-container .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.redux-container .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.redux-container .ui-datepicker.ui-datepicker-multi{width:auto}.redux-container .ui-datepicker-multi .ui-datepicker-group{float:left}.redux-container .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.redux-container .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.redux-container .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.redux-container .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.redux-container .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.redux-container .ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.redux-container .ui-datepicker-rtl{direction:rtl}.redux-container .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.redux-container .ui-datepicker th{font-weight:bold;color:gray}.redux-container .ui-datepicker-today a:hover{background-color:#808080;color:#ffffff}.redux-container .ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0px}.redux-container .ui-datepicker td a{margin-bottom:0px;border:0px}.redux-container .ui-datepicker td:hover{color:#ffffff}.redux-container .ui-datepicker td .ui-state-default{border:0px;background:none;margin-bottom:0px;padding:5px;color:gray;text-align:center;filter:none}.redux-container .ui-datepicker td .ui-state-active{background:#BFBFBF;margin-bottom:0px;font-size:normal;text-shadow:0px;color:#ffffff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-container .ui-datepicker td .ui-state-hover{color:#ffffff;background:#0064cd;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.redux-container .ui-widget-content{border:1px solid #dfdfdf}.redux-container .ui-datepicker table{background:#fff}.redux-container .placeholder{background:#f9f9f9 !important;border:1px dashed #bbb !important}.wp-customizer #ui-datepicker-div{z-index:999999 !important}
6
  * Dual licensed under the MIT or GPL Version 2 licenses.
7
  *
8
  * Portions copyright jQuery UI & Twitter Bootstrap
9
+ */.redux-container .ui-state-disabled,.control-section-redux .ui-state-disabled,.control-panel-redux .ui-state-disabled,.redux-metabox .ui-state-disabled{cursor:default !important}.redux-container .ui-icon,.control-section-redux .ui-icon,.control-panel-redux .ui-icon,.redux-metabox .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.redux-container .ui-widget-content,.control-section-redux .ui-widget-content,.control-panel-redux .ui-widget-content,.redux-metabox .ui-widget-content{border:1px solid #aaaaaa;background:#fff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x;color:#404040}.redux-container .ui-widget-header,.control-section-redux .ui-widget-header,.control-panel-redux .ui-widget-header,.redux-metabox .ui-widget-header{font-weight:bold;border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border:1px solid #666}.redux-container .ui-widget-header a,.control-section-redux .ui-widget-header a,.control-panel-redux .ui-widget-header a,.redux-metabox .ui-widget-header a{color:#222222}.redux-container .ui-state-default,.redux-container .ui-widget-content .ui-state-default,.redux-container .ui-widget-header .ui-state-default,.control-section-redux .ui-state-default,.control-section-redux .ui-widget-content .ui-state-default,.control-section-redux .ui-widget-header .ui-state-default,.control-panel-redux .ui-state-default,.control-panel-redux .ui-widget-content .ui-state-default,.control-panel-redux .ui-widget-header .ui-state-default,.redux-metabox .ui-state-default,.redux-metabox .ui-widget-content .ui-state-default,.redux-metabox .ui-widget-header .ui-state-default{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-state-default a,.redux-container .ui-state-default a:link,.redux-container .ui-state-default a:visited,.control-section-redux .ui-state-default a,.control-section-redux .ui-state-default a:link,.control-section-redux .ui-state-default a:visited,.control-panel-redux .ui-state-default a,.control-panel-redux .ui-state-default a:link,.control-panel-redux .ui-state-default a:visited,.redux-metabox .ui-state-default a,.redux-metabox .ui-state-default a:link,.redux-metabox .ui-state-default a:visited{color:#555555;text-decoration:none}.redux-container .ui-state-hover,.redux-container .ui-widget-content .ui-state-hover,.redux-container .ui-widget-header .ui-state-hover,.redux-container .ui-state-focus,.redux-container .ui-widget-content .ui-state-focus,.redux-container .ui-widget-header .ui-state-focus,.control-section-redux .ui-state-hover,.control-section-redux .ui-widget-content .ui-state-hover,.control-section-redux .ui-widget-header .ui-state-hover,.control-section-redux .ui-state-focus,.control-section-redux .ui-widget-content .ui-state-focus,.control-section-redux .ui-widget-header .ui-state-focus,.control-panel-redux .ui-state-hover,.control-panel-redux .ui-widget-content .ui-state-hover,.control-panel-redux .ui-widget-header .ui-state-hover,.control-panel-redux .ui-state-focus,.control-panel-redux .ui-widget-content .ui-state-focus,.control-panel-redux .ui-widget-header .ui-state-focus,.redux-metabox .ui-state-hover,.redux-metabox .ui-widget-content .ui-state-hover,.redux-metabox .ui-widget-header .ui-state-hover,.redux-metabox .ui-state-focus,.redux-metabox .ui-widget-content .ui-state-focus,.redux-metabox .ui-widget-header .ui-state-focus{background-position:0 -15px;color:#333;text-decoration:none}.redux-container .ui-state-hover a,.redux-container .ui-state-hover a:hover,.redux-container .ui-state-hover a:link,.redux-container .ui-state-hover a:visited,.control-section-redux .ui-state-hover a,.control-section-redux .ui-state-hover a:hover,.control-section-redux .ui-state-hover a:link,.control-section-redux .ui-state-hover a:visited,.control-panel-redux .ui-state-hover a,.control-panel-redux .ui-state-hover a:hover,.control-panel-redux .ui-state-hover a:link,.control-panel-redux .ui-state-hover a:visited,.redux-metabox .ui-state-hover a,.redux-metabox .ui-state-hover a:hover,.redux-metabox .ui-state-hover a:link,.redux-metabox .ui-state-hover a:visited{color:#212121;text-decoration:none}.redux-container .ui-state-active,.redux-container .ui-widget-content .ui-state-active,.redux-container .ui-widget-header .ui-state-active,.control-section-redux .ui-state-active,.control-section-redux .ui-widget-content .ui-state-active,.control-section-redux .ui-widget-header .ui-state-active,.control-panel-redux .ui-state-active,.control-panel-redux .ui-widget-content .ui-state-active,.control-panel-redux .ui-widget-header .ui-state-active,.redux-metabox .ui-state-active,.redux-metabox .ui-widget-content .ui-state-active,.redux-metabox .ui-widget-header .ui-state-active{border:1px solid #aaaaaa;font-weight:normal;color:#212121}.redux-container .ui-state-active a,.redux-container .ui-state-active a:link,.redux-container .ui-state-active a:visited,.control-section-redux .ui-state-active a,.control-section-redux .ui-state-active a:link,.control-section-redux .ui-state-active a:visited,.control-panel-redux .ui-state-active a,.control-panel-redux .ui-state-active a:link,.control-panel-redux .ui-state-active a:visited,.redux-metabox .ui-state-active a,.redux-metabox .ui-state-active a:link,.redux-metabox .ui-state-active a:visited{color:#212121;text-decoration:none}.redux-container .ui-widget :active,.control-section-redux .ui-widget :active,.control-panel-redux .ui-widget :active,.redux-metabox .ui-widget :active{outline:none}.redux-container .ui-state-highlight p,.redux-container .ui-state-error p,.redux-container .ui-state-default p,.control-section-redux .ui-state-highlight p,.control-section-redux .ui-state-error p,.control-section-redux .ui-state-default p,.control-panel-redux .ui-state-highlight p,.control-panel-redux .ui-state-error p,.control-panel-redux .ui-state-default p,.redux-metabox .ui-state-highlight p,.redux-metabox .ui-state-error p,.redux-metabox .ui-state-default p{font-size:13px;font-weight:normal;line-height:18px;margin:7px 15px}.redux-container .ui-state-highlight,.redux-container .ui-widget-content .ui-state-highlight,.redux-container .ui-widget-header .ui-state-highlight,.control-section-redux .ui-state-highlight,.control-section-redux .ui-widget-content .ui-state-highlight,.control-section-redux .ui-widget-header .ui-state-highlight,.control-panel-redux .ui-state-highlight,.control-panel-redux .ui-widget-content .ui-state-highlight,.control-panel-redux .ui-widget-header .ui-state-highlight,.redux-metabox .ui-state-highlight,.redux-metabox .ui-widget-content .ui-state-highlight,.redux-metabox .ui-widget-header .ui-state-highlight{position:relative;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);text-shadow:0 1px 0 rgba(255,255,255,0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25)}.redux-container .ui-state-highlight a,.redux-container .ui-widget-content .ui-state-highlight a,.redux-container .ui-widget-header .ui-state-highlight a,.control-section-redux .ui-state-highlight a,.control-section-redux .ui-widget-content .ui-state-highlight a,.control-section-redux .ui-widget-header .ui-state-highlight a,.control-panel-redux .ui-state-highlight a,.control-panel-redux .ui-widget-content .ui-state-highlight a,.control-panel-redux .ui-widget-header .ui-state-highlight a,.redux-metabox .ui-state-highlight a,.redux-metabox .ui-widget-content .ui-state-highlight a,.redux-metabox .ui-widget-header .ui-state-highlight a{color:#363636}.redux-container .ui-state-error,.redux-container .ui-widget-content .ui-state-error,.redux-container .ui-widget-header .ui-state-error,.control-section-redux .ui-state-error,.control-section-redux .ui-widget-content .ui-state-error,.control-section-redux .ui-widget-header .ui-state-error,.control-panel-redux .ui-state-error,.control-panel-redux .ui-widget-content .ui-state-error,.control-panel-redux .ui-widget-header .ui-state-error,.redux-metabox .ui-state-error,.redux-metabox .ui-widget-content .ui-state-error,.redux-metabox .ui-widget-header .ui-state-error{position:relative;margin-bottom:18px;color:#ffffff;border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-state-error a,.redux-container .ui-widget-content .ui-state-error a,.redux-container .ui-widget-header .ui-state-error a,.control-section-redux .ui-state-error a,.control-section-redux .ui-widget-content .ui-state-error a,.control-section-redux .ui-widget-header .ui-state-error a,.control-panel-redux .ui-state-error a,.control-panel-redux .ui-widget-content .ui-state-error a,.control-panel-redux .ui-widget-header .ui-state-error a,.redux-metabox .ui-state-error a,.redux-metabox .ui-widget-content .ui-state-error a,.redux-metabox .ui-widget-header .ui-state-error a{color:#cd0a0a}.redux-container .ui-state-error-text,.redux-container .ui-widget-content .ui-state-error-text,.redux-container .ui-widget-header .ui-state-error-text,.control-section-redux .ui-state-error-text,.control-section-redux .ui-widget-content .ui-state-error-text,.control-section-redux .ui-widget-header .ui-state-error-text,.control-panel-redux .ui-state-error-text,.control-panel-redux .ui-widget-content .ui-state-error-text,.control-panel-redux .ui-widget-header .ui-state-error-text,.redux-metabox .ui-state-error-text,.redux-metabox .ui-widget-content .ui-state-error-text,.redux-metabox .ui-widget-header .ui-state-error-text{color:#cd0a0a}.redux-container .ui-priority-primary,.redux-container .ui-widget-content .ui-priority-primary,.redux-container .ui-widget-header .ui-priority-primary,.control-section-redux .ui-priority-primary,.control-section-redux .ui-widget-content .ui-priority-primary,.control-section-redux .ui-widget-header .ui-priority-primary,.control-panel-redux .ui-priority-primary,.control-panel-redux .ui-widget-content .ui-priority-primary,.control-panel-redux .ui-widget-header .ui-priority-primary,.redux-metabox .ui-priority-primary,.redux-metabox .ui-widget-content .ui-priority-primary,.redux-metabox .ui-widget-header .ui-priority-primary{font-weight:bold}.redux-container .ui-priority-secondary,.redux-container .ui-widget-content .ui-priority-secondary,.redux-container .ui-widget-header .ui-priority-secondary,.control-section-redux .ui-priority-secondary,.control-section-redux .ui-widget-content .ui-priority-secondary,.control-section-redux .ui-widget-header .ui-priority-secondary,.control-panel-redux .ui-priority-secondary,.control-panel-redux .ui-widget-content .ui-priority-secondary,.control-panel-redux .ui-widget-header .ui-priority-secondary,.redux-metabox .ui-priority-secondary,.redux-metabox .ui-widget-content .ui-priority-secondary,.redux-metabox .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.redux-container .ui-state-disabled,.redux-container .ui-widget-content .ui-state-disabled,.redux-container .ui-widget-header .ui-state-disabled,.control-section-redux .ui-state-disabled,.control-section-redux .ui-widget-content .ui-state-disabled,.control-section-redux .ui-widget-header .ui-state-disabled,.control-panel-redux .ui-state-disabled,.control-panel-redux .ui-widget-content .ui-state-disabled,.control-panel-redux .ui-widget-header .ui-state-disabled,.redux-metabox .ui-state-disabled,.redux-metabox .ui-widget-content .ui-state-disabled,.redux-metabox .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.redux-container .ui-state-disabled .ui-icon,.control-section-redux .ui-state-disabled .ui-icon,.control-panel-redux .ui-state-disabled .ui-icon,.redux-metabox .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.redux-container .ui-icon,.control-section-redux .ui-icon,.control-panel-redux .ui-icon,.redux-metabox .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-content .ui-icon,.control-section-redux .ui-widget-content .ui-icon,.control-panel-redux .ui-widget-content .ui-icon,.redux-metabox .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-header .ui-icon,.control-section-redux .ui-widget-header .ui-icon,.control-panel-redux .ui-widget-header .ui-icon,.redux-metabox .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-state-default .ui-icon,.control-section-redux .ui-state-default .ui-icon,.control-panel-redux .ui-state-default .ui-icon,.redux-metabox .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.redux-container .ui-state-hover .ui-icon,.redux-container .ui-state-focus .ui-icon,.control-section-redux .ui-state-hover .ui-icon,.control-section-redux .ui-state-focus .ui-icon,.control-panel-redux .ui-state-hover .ui-icon,.control-panel-redux .ui-state-focus .ui-icon,.redux-metabox .ui-state-hover .ui-icon,.redux-metabox .ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-active .ui-icon,.control-section-redux .ui-state-active .ui-icon,.control-panel-redux .ui-state-active .ui-icon,.redux-metabox .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-highlight .ui-icon,.control-section-redux .ui-state-highlight .ui-icon,.control-panel-redux .ui-state-highlight .ui-icon,.redux-metabox .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.redux-container .ui-state-error .ui-icon,.redux-container .ui-state-error-text .ui-icon,.control-section-redux .ui-state-error .ui-icon,.control-section-redux .ui-state-error-text .ui-icon,.control-panel-redux .ui-state-error .ui-icon,.control-panel-redux .ui-state-error-text .ui-icon,.redux-metabox .ui-state-error .ui-icon,.redux-metabox .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_f6cf3b_256x240.png)}.redux-container .ui-icon-carat-1-n,.control-section-redux .ui-icon-carat-1-n,.control-panel-redux .ui-icon-carat-1-n,.redux-metabox .ui-icon-carat-1-n{background-position:0 0}.redux-container .ui-icon-carat-1-ne,.control-section-redux .ui-icon-carat-1-ne,.control-panel-redux .ui-icon-carat-1-ne,.redux-metabox .ui-icon-carat-1-ne{background-position:-16px 0}.redux-container .ui-icon-carat-1-e,.control-section-redux .ui-icon-carat-1-e,.control-panel-redux .ui-icon-carat-1-e,.redux-metabox .ui-icon-carat-1-e{background-position:-32px 0}.redux-container .ui-icon-carat-1-se,.control-section-redux .ui-icon-carat-1-se,.control-panel-redux .ui-icon-carat-1-se,.redux-metabox .ui-icon-carat-1-se{background-position:-48px 0}.redux-container .ui-icon-carat-1-s,.control-section-redux .ui-icon-carat-1-s,.control-panel-redux .ui-icon-carat-1-s,.redux-metabox .ui-icon-carat-1-s{background-position:-64px 0}.redux-container .ui-icon-carat-1-sw,.control-section-redux .ui-icon-carat-1-sw,.control-panel-redux .ui-icon-carat-1-sw,.redux-metabox .ui-icon-carat-1-sw{background-position:-80px 0}.redux-container .ui-icon-carat-1-w,.control-section-redux .ui-icon-carat-1-w,.control-panel-redux .ui-icon-carat-1-w,.redux-metabox .ui-icon-carat-1-w{background-position:-96px 0}.redux-container .ui-icon-carat-1-nw,.control-section-redux .ui-icon-carat-1-nw,.control-panel-redux .ui-icon-carat-1-nw,.redux-metabox .ui-icon-carat-1-nw{background-position:-112px 0}.redux-container .ui-icon-carat-2-n-s,.control-section-redux .ui-icon-carat-2-n-s,.control-panel-redux .ui-icon-carat-2-n-s,.redux-metabox .ui-icon-carat-2-n-s{background-position:-128px 0}.redux-container .ui-icon-carat-2-e-w,.control-section-redux .ui-icon-carat-2-e-w,.control-panel-redux .ui-icon-carat-2-e-w,.redux-metabox .ui-icon-carat-2-e-w{background-position:-144px 0}.redux-container .ui-icon-triangle-1-n,.control-section-redux .ui-icon-triangle-1-n,.control-panel-redux .ui-icon-triangle-1-n,.redux-metabox .ui-icon-triangle-1-n{background-position:0 -16px}.redux-container .ui-icon-triangle-1-ne,.control-section-redux .ui-icon-triangle-1-ne,.control-panel-redux .ui-icon-triangle-1-ne,.redux-metabox .ui-icon-triangle-1-ne{background-position:-16px -16px}.redux-container .ui-icon-triangle-1-e,.control-section-redux .ui-icon-triangle-1-e,.control-panel-redux .ui-icon-triangle-1-e,.redux-metabox .ui-icon-triangle-1-e{background-position:-32px -16px}.redux-container .ui-icon-triangle-1-se,.control-section-redux .ui-icon-triangle-1-se,.control-panel-redux .ui-icon-triangle-1-se,.redux-metabox .ui-icon-triangle-1-se{background-position:-48px -16px}.redux-container .ui-icon-triangle-1-s,.control-section-redux .ui-icon-triangle-1-s,.control-panel-redux .ui-icon-triangle-1-s,.redux-metabox .ui-icon-triangle-1-s{background-position:-64px -16px}.redux-container .ui-icon-triangle-1-sw,.control-section-redux .ui-icon-triangle-1-sw,.control-panel-redux .ui-icon-triangle-1-sw,.redux-metabox .ui-icon-triangle-1-sw{background-position:-80px -16px}.redux-container .ui-icon-triangle-1-w,.control-section-redux .ui-icon-triangle-1-w,.control-panel-redux .ui-icon-triangle-1-w,.redux-metabox .ui-icon-triangle-1-w{background-position:-96px -16px}.redux-container .ui-icon-triangle-1-nw,.control-section-redux .ui-icon-triangle-1-nw,.control-panel-redux .ui-icon-triangle-1-nw,.redux-metabox .ui-icon-triangle-1-nw{background-position:-112px -16px}.redux-container .ui-icon-triangle-2-n-s,.control-section-redux .ui-icon-triangle-2-n-s,.control-panel-redux .ui-icon-triangle-2-n-s,.redux-metabox .ui-icon-triangle-2-n-s{background-position:-128px -16px}.redux-container .ui-icon-triangle-2-e-w,.control-section-redux .ui-icon-triangle-2-e-w,.control-panel-redux .ui-icon-triangle-2-e-w,.redux-metabox .ui-icon-triangle-2-e-w{background-position:-144px -16px}.redux-container .ui-icon-arrow-1-n,.control-section-redux .ui-icon-arrow-1-n,.control-panel-redux .ui-icon-arrow-1-n,.redux-metabox .ui-icon-arrow-1-n{background-position:0 -32px}.redux-container .ui-icon-arrow-1-ne,.control-section-redux .ui-icon-arrow-1-ne,.control-panel-redux .ui-icon-arrow-1-ne,.redux-metabox .ui-icon-arrow-1-ne{background-position:-16px -32px}.redux-container .ui-icon-arrow-1-e,.control-section-redux .ui-icon-arrow-1-e,.control-panel-redux .ui-icon-arrow-1-e,.redux-metabox .ui-icon-arrow-1-e{background-position:-32px -32px}.redux-container .ui-icon-arrow-1-se,.control-section-redux .ui-icon-arrow-1-se,.control-panel-redux .ui-icon-arrow-1-se,.redux-metabox .ui-icon-arrow-1-se{background-position:-48px -32px}.redux-container .ui-icon-arrow-1-s,.control-section-redux .ui-icon-arrow-1-s,.control-panel-redux .ui-icon-arrow-1-s,.redux-metabox .ui-icon-arrow-1-s{background-position:-64px -32px}.redux-container .ui-icon-arrow-1-sw,.control-section-redux .ui-icon-arrow-1-sw,.control-panel-redux .ui-icon-arrow-1-sw,.redux-metabox .ui-icon-arrow-1-sw{background-position:-80px -32px}.redux-container .ui-icon-arrow-1-w,.control-section-redux .ui-icon-arrow-1-w,.control-panel-redux .ui-icon-arrow-1-w,.redux-metabox .ui-icon-arrow-1-w{background-position:-96px -32px}.redux-container .ui-icon-arrow-1-nw,.control-section-redux .ui-icon-arrow-1-nw,.control-panel-redux .ui-icon-arrow-1-nw,.redux-metabox .ui-icon-arrow-1-nw{background-position:-112px -32px}.redux-container .ui-icon-arrow-2-n-s,.control-section-redux .ui-icon-arrow-2-n-s,.control-panel-redux .ui-icon-arrow-2-n-s,.redux-metabox .ui-icon-arrow-2-n-s{background-position:-128px -32px}.redux-container .ui-icon-arrow-2-ne-sw,.control-section-redux .ui-icon-arrow-2-ne-sw,.control-panel-redux .ui-icon-arrow-2-ne-sw,.redux-metabox .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.redux-container .ui-icon-arrow-2-e-w,.control-section-redux .ui-icon-arrow-2-e-w,.control-panel-redux .ui-icon-arrow-2-e-w,.redux-metabox .ui-icon-arrow-2-e-w{background-position:-160px -32px}.redux-container .ui-icon-arrow-2-se-nw,.control-section-redux .ui-icon-arrow-2-se-nw,.control-panel-redux .ui-icon-arrow-2-se-nw,.redux-metabox .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.redux-container .ui-icon-arrowstop-1-n,.control-section-redux .ui-icon-arrowstop-1-n,.control-panel-redux .ui-icon-arrowstop-1-n,.redux-metabox .ui-icon-arrowstop-1-n{background-position:-192px -32px}.redux-container .ui-icon-arrowstop-1-e,.control-section-redux .ui-icon-arrowstop-1-e,.control-panel-redux .ui-icon-arrowstop-1-e,.redux-metabox .ui-icon-arrowstop-1-e{background-position:-208px -32px}.redux-container .ui-icon-arrowstop-1-s,.control-section-redux .ui-icon-arrowstop-1-s,.control-panel-redux .ui-icon-arrowstop-1-s,.redux-metabox .ui-icon-arrowstop-1-s{background-position:-224px -32px}.redux-container .ui-icon-arrowstop-1-w,.control-section-redux .ui-icon-arrowstop-1-w,.control-panel-redux .ui-icon-arrowstop-1-w,.redux-metabox .ui-icon-arrowstop-1-w{background-position:-240px -32px}.redux-container .ui-icon-arrowthick-1-n,.control-section-redux .ui-icon-arrowthick-1-n,.control-panel-redux .ui-icon-arrowthick-1-n,.redux-metabox .ui-icon-arrowthick-1-n{background-position:0 -48px}.redux-container .ui-icon-arrowthick-1-ne,.control-section-redux .ui-icon-arrowthick-1-ne,.control-panel-redux .ui-icon-arrowthick-1-ne,.redux-metabox .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.redux-container .ui-icon-arrowthick-1-e,.control-section-redux .ui-icon-arrowthick-1-e,.control-panel-redux .ui-icon-arrowthick-1-e,.redux-metabox .ui-icon-arrowthick-1-e{background-position:-32px -48px}.redux-container .ui-icon-arrowthick-1-se,.control-section-redux .ui-icon-arrowthick-1-se,.control-panel-redux .ui-icon-arrowthick-1-se,.redux-metabox .ui-icon-arrowthick-1-se{background-position:-48px -48px}.redux-container .ui-icon-arrowthick-1-s,.control-section-redux .ui-icon-arrowthick-1-s,.control-panel-redux .ui-icon-arrowthick-1-s,.redux-metabox .ui-icon-arrowthick-1-s{background-position:-64px -48px}.redux-container .ui-icon-arrowthick-1-sw,.control-section-redux .ui-icon-arrowthick-1-sw,.control-panel-redux .ui-icon-arrowthick-1-sw,.redux-metabox .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.redux-container .ui-icon-arrowthick-1-w,.control-section-redux .ui-icon-arrowthick-1-w,.control-panel-redux .ui-icon-arrowthick-1-w,.redux-metabox .ui-icon-arrowthick-1-w{background-position:-96px -48px}.redux-container .ui-icon-arrowthick-1-nw,.control-section-redux .ui-icon-arrowthick-1-nw,.control-panel-redux .ui-icon-arrowthick-1-nw,.redux-metabox .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.redux-container .ui-icon-arrowthick-2-n-s,.control-section-redux .ui-icon-arrowthick-2-n-s,.control-panel-redux .ui-icon-arrowthick-2-n-s,.redux-metabox .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.redux-container .ui-icon-arrowthick-2-ne-sw,.control-section-redux .ui-icon-arrowthick-2-ne-sw,.control-panel-redux .ui-icon-arrowthick-2-ne-sw,.redux-metabox .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.redux-container .ui-icon-arrowthick-2-e-w,.control-section-redux .ui-icon-arrowthick-2-e-w,.control-panel-redux .ui-icon-arrowthick-2-e-w,.redux-metabox .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.redux-container .ui-icon-arrowthick-2-se-nw,.control-section-redux .ui-icon-arrowthick-2-se-nw,.control-panel-redux .ui-icon-arrowthick-2-se-nw,.redux-metabox .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.redux-container .ui-icon-arrowthickstop-1-n,.control-section-redux .ui-icon-arrowthickstop-1-n,.control-panel-redux .ui-icon-arrowthickstop-1-n,.redux-metabox .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.redux-container .ui-icon-arrowthickstop-1-e,.control-section-redux .ui-icon-arrowthickstop-1-e,.control-panel-redux .ui-icon-arrowthickstop-1-e,.redux-metabox .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.redux-container .ui-icon-arrowthickstop-1-s,.control-section-redux .ui-icon-arrowthickstop-1-s,.control-panel-redux .ui-icon-arrowthickstop-1-s,.redux-metabox .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.redux-container .ui-icon-arrowthickstop-1-w,.control-section-redux .ui-icon-arrowthickstop-1-w,.control-panel-redux .ui-icon-arrowthickstop-1-w,.redux-metabox .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.redux-container .ui-icon-arrowreturnthick-1-w,.control-section-redux .ui-icon-arrowreturnthick-1-w,.control-panel-redux .ui-icon-arrowreturnthick-1-w,.redux-metabox .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.redux-container .ui-icon-arrowreturnthick-1-n,.control-section-redux .ui-icon-arrowreturnthick-1-n,.control-panel-redux .ui-icon-arrowreturnthick-1-n,.redux-metabox .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.redux-container .ui-icon-arrowreturnthick-1-e,.control-section-redux .ui-icon-arrowreturnthick-1-e,.control-panel-redux .ui-icon-arrowreturnthick-1-e,.redux-metabox .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.redux-container .ui-icon-arrowreturnthick-1-s,.control-section-redux .ui-icon-arrowreturnthick-1-s,.control-panel-redux .ui-icon-arrowreturnthick-1-s,.redux-metabox .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.redux-container .ui-icon-arrowreturn-1-w,.control-section-redux .ui-icon-arrowreturn-1-w,.control-panel-redux .ui-icon-arrowreturn-1-w,.redux-metabox .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.redux-container .ui-icon-arrowreturn-1-n,.control-section-redux .ui-icon-arrowreturn-1-n,.control-panel-redux .ui-icon-arrowreturn-1-n,.redux-metabox .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.redux-container .ui-icon-arrowreturn-1-e,.control-section-redux .ui-icon-arrowreturn-1-e,.control-panel-redux .ui-icon-arrowreturn-1-e,.redux-metabox .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.redux-container .ui-icon-arrowreturn-1-s,.control-section-redux .ui-icon-arrowreturn-1-s,.control-panel-redux .ui-icon-arrowreturn-1-s,.redux-metabox .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.redux-container .ui-icon-arrowrefresh-1-w,.control-section-redux .ui-icon-arrowrefresh-1-w,.control-panel-redux .ui-icon-arrowrefresh-1-w,.redux-metabox .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.redux-container .ui-icon-arrowrefresh-1-n,.control-section-redux .ui-icon-arrowrefresh-1-n,.control-panel-redux .ui-icon-arrowrefresh-1-n,.redux-metabox .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.redux-container .ui-icon-arrowrefresh-1-e,.control-section-redux .ui-icon-arrowrefresh-1-e,.control-panel-redux .ui-icon-arrowrefresh-1-e,.redux-metabox .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.redux-container .ui-icon-arrowrefresh-1-s,.control-section-redux .ui-icon-arrowrefresh-1-s,.control-panel-redux .ui-icon-arrowrefresh-1-s,.redux-metabox .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.redux-container .ui-icon-arrow-4,.control-section-redux .ui-icon-arrow-4,.control-panel-redux .ui-icon-arrow-4,.redux-metabox .ui-icon-arrow-4{background-position:0 -80px}.redux-container .ui-icon-arrow-4-diag,.control-section-redux .ui-icon-arrow-4-diag,.control-panel-redux .ui-icon-arrow-4-diag,.redux-metabox .ui-icon-arrow-4-diag{background-position:-16px -80px}.redux-container .ui-icon-extlink,.control-section-redux .ui-icon-extlink,.control-panel-redux .ui-icon-extlink,.redux-metabox .ui-icon-extlink{background-position:-32px -80px}.redux-container .ui-icon-newwin,.control-section-redux .ui-icon-newwin,.control-panel-redux .ui-icon-newwin,.redux-metabox .ui-icon-newwin{background-position:-48px -80px}.redux-container .ui-icon-refresh,.control-section-redux .ui-icon-refresh,.control-panel-redux .ui-icon-refresh,.redux-metabox .ui-icon-refresh{background-position:-64px -80px}.redux-container .ui-icon-shuffle,.control-section-redux .ui-icon-shuffle,.control-panel-redux .ui-icon-shuffle,.redux-metabox .ui-icon-shuffle{background-position:-80px -80px}.redux-container .ui-icon-transfer-e-w,.control-section-redux .ui-icon-transfer-e-w,.control-panel-redux .ui-icon-transfer-e-w,.redux-metabox .ui-icon-transfer-e-w{background-position:-96px -80px}.redux-container .ui-icon-transferthick-e-w,.control-section-redux .ui-icon-transferthick-e-w,.control-panel-redux .ui-icon-transferthick-e-w,.redux-metabox .ui-icon-transferthick-e-w{background-position:-112px -80px}.redux-container .ui-icon-folder-collapsed,.control-section-redux .ui-icon-folder-collapsed,.control-panel-redux .ui-icon-folder-collapsed,.redux-metabox .ui-icon-folder-collapsed{background-position:0 -96px}.redux-container .ui-icon-folder-open,.control-section-redux .ui-icon-folder-open,.control-panel-redux .ui-icon-folder-open,.redux-metabox .ui-icon-folder-open{background-position:-16px -96px}.redux-container .ui-icon-document,.control-section-redux .ui-icon-document,.control-panel-redux .ui-icon-document,.redux-metabox .ui-icon-document{background-position:-32px -96px}.redux-container .ui-icon-document-b,.control-section-redux .ui-icon-document-b,.control-panel-redux .ui-icon-document-b,.redux-metabox .ui-icon-document-b{background-position:-48px -96px}.redux-container .ui-icon-note,.control-section-redux .ui-icon-note,.control-panel-redux .ui-icon-note,.redux-metabox .ui-icon-note{background-position:-64px -96px}.redux-container .ui-icon-mail-closed,.control-section-redux .ui-icon-mail-closed,.control-panel-redux .ui-icon-mail-closed,.redux-metabox .ui-icon-mail-closed{background-position:-80px -96px}.redux-container .ui-icon-mail-open,.control-section-redux .ui-icon-mail-open,.control-panel-redux .ui-icon-mail-open,.redux-metabox .ui-icon-mail-open{background-position:-96px -96px}.redux-container .ui-icon-suitcase,.control-section-redux .ui-icon-suitcase,.control-panel-redux .ui-icon-suitcase,.redux-metabox .ui-icon-suitcase{background-position:-112px -96px}.redux-container .ui-icon-comment,.control-section-redux .ui-icon-comment,.control-panel-redux .ui-icon-comment,.redux-metabox .ui-icon-comment{background-position:-128px -96px}.redux-container .ui-icon-person,.control-section-redux .ui-icon-person,.control-panel-redux .ui-icon-person,.redux-metabox .ui-icon-person{background-position:-144px -96px}.redux-container .ui-icon-print,.control-section-redux .ui-icon-print,.control-panel-redux .ui-icon-print,.redux-metabox .ui-icon-print{background-position:-160px -96px}.redux-container .ui-icon-trash,.control-section-redux .ui-icon-trash,.control-panel-redux .ui-icon-trash,.redux-metabox .ui-icon-trash{background-position:-176px -96px}.redux-container .ui-icon-locked,.control-section-redux .ui-icon-locked,.control-panel-redux .ui-icon-locked,.redux-metabox .ui-icon-locked{background-position:-192px -96px}.redux-container .ui-icon-unlocked,.control-section-redux .ui-icon-unlocked,.control-panel-redux .ui-icon-unlocked,.redux-metabox .ui-icon-unlocked{background-position:-208px -96px}.redux-container .ui-icon-bookmark,.control-section-redux .ui-icon-bookmark,.control-panel-redux .ui-icon-bookmark,.redux-metabox .ui-icon-bookmark{background-position:-224px -96px}.redux-container .ui-icon-tag,.control-section-redux .ui-icon-tag,.control-panel-redux .ui-icon-tag,.redux-metabox .ui-icon-tag{background-position:-240px -96px}.redux-container .ui-icon-home,.control-section-redux .ui-icon-home,.control-panel-redux .ui-icon-home,.redux-metabox .ui-icon-home{background-position:0 -112px}.redux-container .ui-icon-flag,.control-section-redux .ui-icon-flag,.control-panel-redux .ui-icon-flag,.redux-metabox .ui-icon-flag{background-position:-16px -112px}.redux-container .ui-icon-calendar,.control-section-redux .ui-icon-calendar,.control-panel-redux .ui-icon-calendar,.redux-metabox .ui-icon-calendar{background-position:-32px -112px}.redux-container .ui-icon-cart,.control-section-redux .ui-icon-cart,.control-panel-redux .ui-icon-cart,.redux-metabox .ui-icon-cart{background-position:-48px -112px}.redux-container .ui-icon-pencil,.control-section-redux .ui-icon-pencil,.control-panel-redux .ui-icon-pencil,.redux-metabox .ui-icon-pencil{background-position:-64px -112px}.redux-container .ui-icon-clock,.control-section-redux .ui-icon-clock,.control-panel-redux .ui-icon-clock,.redux-metabox .ui-icon-clock{background-position:-80px -112px}.redux-container .ui-icon-disk,.control-section-redux .ui-icon-disk,.control-panel-redux .ui-icon-disk,.redux-metabox .ui-icon-disk{background-position:-96px -112px}.redux-container .ui-icon-calculator,.control-section-redux .ui-icon-calculator,.control-panel-redux .ui-icon-calculator,.redux-metabox .ui-icon-calculator{background-position:-112px -112px}.redux-container .ui-icon-zoomin,.control-section-redux .ui-icon-zoomin,.control-panel-redux .ui-icon-zoomin,.redux-metabox .ui-icon-zoomin{background-position:-128px -112px}.redux-container .ui-icon-zoomout,.control-section-redux .ui-icon-zoomout,.control-panel-redux .ui-icon-zoomout,.redux-metabox .ui-icon-zoomout{background-position:-144px -112px}.redux-container .ui-icon-search,.control-section-redux .ui-icon-search,.control-panel-redux .ui-icon-search,.redux-metabox .ui-icon-search{background-position:-160px -112px}.redux-container .ui-icon-wrench,.control-section-redux .ui-icon-wrench,.control-panel-redux .ui-icon-wrench,.redux-metabox .ui-icon-wrench{background-position:-176px -112px}.redux-container .ui-icon-gear,.control-section-redux .ui-icon-gear,.control-panel-redux .ui-icon-gear,.redux-metabox .ui-icon-gear{background-position:-192px -112px}.redux-container .ui-icon-heart,.control-section-redux .ui-icon-heart,.control-panel-redux .ui-icon-heart,.redux-metabox .ui-icon-heart{background-position:-208px -112px}.redux-container .ui-icon-star,.control-section-redux .ui-icon-star,.control-panel-redux .ui-icon-star,.redux-metabox .ui-icon-star{background-position:-224px -112px}.redux-container .ui-icon-link,.control-section-redux .ui-icon-link,.control-panel-redux .ui-icon-link,.redux-metabox .ui-icon-link{background-position:-240px -112px}.redux-container .ui-icon-cancel,.control-section-redux .ui-icon-cancel,.control-panel-redux .ui-icon-cancel,.redux-metabox .ui-icon-cancel{background-position:0 -128px}.redux-container .ui-icon-plus,.control-section-redux .ui-icon-plus,.control-panel-redux .ui-icon-plus,.redux-metabox .ui-icon-plus{background-position:-16px -128px}.redux-container .ui-icon-plusthick,.control-section-redux .ui-icon-plusthick,.control-panel-redux .ui-icon-plusthick,.redux-metabox .ui-icon-plusthick{background-position:-32px -128px}.redux-container .ui-icon-minus,.control-section-redux .ui-icon-minus,.control-panel-redux .ui-icon-minus,.redux-metabox .ui-icon-minus{background-position:-48px -128px}.redux-container .ui-icon-minusthick,.control-section-redux .ui-icon-minusthick,.control-panel-redux .ui-icon-minusthick,.redux-metabox .ui-icon-minusthick{background-position:-64px -128px}.redux-container .ui-icon-close,.control-section-redux .ui-icon-close,.control-panel-redux .ui-icon-close,.redux-metabox .ui-icon-close{background-position:-80px -128px}.redux-container .ui-icon-closethick,.control-section-redux .ui-icon-closethick,.control-panel-redux .ui-icon-closethick,.redux-metabox .ui-icon-closethick{background-position:-96px -128px}.redux-container .ui-icon-key,.control-section-redux .ui-icon-key,.control-panel-redux .ui-icon-key,.redux-metabox .ui-icon-key{background-position:-112px -128px}.redux-container .ui-icon-lightbulb,.control-section-redux .ui-icon-lightbulb,.control-panel-redux .ui-icon-lightbulb,.redux-metabox .ui-icon-lightbulb{background-position:-128px -128px}.redux-container .ui-icon-scissors,.control-section-redux .ui-icon-scissors,.control-panel-redux .ui-icon-scissors,.redux-metabox .ui-icon-scissors{background-position:-144px -128px}.redux-container .ui-icon-clipboard,.control-section-redux .ui-icon-clipboard,.control-panel-redux .ui-icon-clipboard,.redux-metabox .ui-icon-clipboard{background-position:-160px -128px}.redux-container .ui-icon-copy,.control-section-redux .ui-icon-copy,.control-panel-redux .ui-icon-copy,.redux-metabox .ui-icon-copy{background-position:-176px -128px}.redux-container .ui-icon-contact,.control-section-redux .ui-icon-contact,.control-panel-redux .ui-icon-contact,.redux-metabox .ui-icon-contact{background-position:-192px -128px}.redux-container .ui-icon-image,.control-section-redux .ui-icon-image,.control-panel-redux .ui-icon-image,.redux-metabox .ui-icon-image{background-position:-208px -128px}.redux-container .ui-icon-video,.control-section-redux .ui-icon-video,.control-panel-redux .ui-icon-video,.redux-metabox .ui-icon-video{background-position:-224px -128px}.redux-container .ui-icon-script,.control-section-redux .ui-icon-script,.control-panel-redux .ui-icon-script,.redux-metabox .ui-icon-script{background-position:-240px -128px}.redux-container .ui-icon-alert,.control-section-redux .ui-icon-alert,.control-panel-redux .ui-icon-alert,.redux-metabox .ui-icon-alert{background-position:0 -144px}.redux-container .ui-icon-info,.control-section-redux .ui-icon-info,.control-panel-redux .ui-icon-info,.redux-metabox .ui-icon-info{background-position:-16px -144px}.redux-container .ui-icon-notice,.control-section-redux .ui-icon-notice,.control-panel-redux .ui-icon-notice,.redux-metabox .ui-icon-notice{background-position:-32px -144px}.redux-container .ui-icon-help,.control-section-redux .ui-icon-help,.control-panel-redux .ui-icon-help,.redux-metabox .ui-icon-help{background-position:-48px -144px}.redux-container .ui-icon-check,.control-section-redux .ui-icon-check,.control-panel-redux .ui-icon-check,.redux-metabox .ui-icon-check{background-position:-64px -144px}.redux-container .ui-icon-bullet,.control-section-redux .ui-icon-bullet,.control-panel-redux .ui-icon-bullet,.redux-metabox .ui-icon-bullet{background-position:-80px -144px}.redux-container .ui-icon-radio-off,.control-section-redux .ui-icon-radio-off,.control-panel-redux .ui-icon-radio-off,.redux-metabox .ui-icon-radio-off{background-position:-96px -144px}.redux-container .ui-icon-radio-on,.control-section-redux .ui-icon-radio-on,.control-panel-redux .ui-icon-radio-on,.redux-metabox .ui-icon-radio-on{background-position:-112px -144px}.redux-container .ui-icon-pin-w,.control-section-redux .ui-icon-pin-w,.control-panel-redux .ui-icon-pin-w,.redux-metabox .ui-icon-pin-w{background-position:-128px -144px}.redux-container .ui-icon-pin-s,.control-section-redux .ui-icon-pin-s,.control-panel-redux .ui-icon-pin-s,.redux-metabox .ui-icon-pin-s{background-position:-144px -144px}.redux-container .ui-icon-play,.control-section-redux .ui-icon-play,.control-panel-redux .ui-icon-play,.redux-metabox .ui-icon-play{background-position:0 -160px}.redux-container .ui-icon-pause,.control-section-redux .ui-icon-pause,.control-panel-redux .ui-icon-pause,.redux-metabox .ui-icon-pause{background-position:-16px -160px}.redux-container .ui-icon-seek-next,.control-section-redux .ui-icon-seek-next,.control-panel-redux .ui-icon-seek-next,.redux-metabox .ui-icon-seek-next{background-position:-32px -160px}.redux-container .ui-icon-seek-prev,.control-section-redux .ui-icon-seek-prev,.control-panel-redux .ui-icon-seek-prev,.redux-metabox .ui-icon-seek-prev{background-position:-48px -160px}.redux-container .ui-icon-seek-end,.control-section-redux .ui-icon-seek-end,.control-panel-redux .ui-icon-seek-end,.redux-metabox .ui-icon-seek-end{background-position:-64px -160px}.redux-container .ui-icon-seek-start,.control-section-redux .ui-icon-seek-start,.control-panel-redux .ui-icon-seek-start,.redux-metabox .ui-icon-seek-start{background-position:-80px -160px}.redux-container .ui-icon-seek-first,.control-section-redux .ui-icon-seek-first,.control-panel-redux .ui-icon-seek-first,.redux-metabox .ui-icon-seek-first{background-position:-80px -160px}.redux-container .ui-icon-stop,.control-section-redux .ui-icon-stop,.control-panel-redux .ui-icon-stop,.redux-metabox .ui-icon-stop{background-position:-96px -160px}.redux-container .ui-icon-eject,.control-section-redux .ui-icon-eject,.control-panel-redux .ui-icon-eject,.redux-metabox .ui-icon-eject{background-position:-112px -160px}.redux-container .ui-icon-volume-off,.control-section-redux .ui-icon-volume-off,.control-panel-redux .ui-icon-volume-off,.redux-metabox .ui-icon-volume-off{background-position:-128px -160px}.redux-container .ui-icon-volume-on,.control-section-redux .ui-icon-volume-on,.control-panel-redux .ui-icon-volume-on,.redux-metabox .ui-icon-volume-on{background-position:-144px -160px}.redux-container .ui-icon-power,.control-section-redux .ui-icon-power,.control-panel-redux .ui-icon-power,.redux-metabox .ui-icon-power{background-position:0 -176px}.redux-container .ui-icon-signal-diag,.control-section-redux .ui-icon-signal-diag,.control-panel-redux .ui-icon-signal-diag,.redux-metabox .ui-icon-signal-diag{background-position:-16px -176px}.redux-container .ui-icon-signal,.control-section-redux .ui-icon-signal,.control-panel-redux .ui-icon-signal,.redux-metabox .ui-icon-signal{background-position:-32px -176px}.redux-container .ui-icon-battery-0,.control-section-redux .ui-icon-battery-0,.control-panel-redux .ui-icon-battery-0,.redux-metabox .ui-icon-battery-0{background-position:-48px -176px}.redux-container .ui-icon-battery-1,.control-section-redux .ui-icon-battery-1,.control-panel-redux .ui-icon-battery-1,.redux-metabox .ui-icon-battery-1{background-position:-64px -176px}.redux-container .ui-icon-battery-2,.control-section-redux .ui-icon-battery-2,.control-panel-redux .ui-icon-battery-2,.redux-metabox .ui-icon-battery-2{background-position:-80px -176px}.redux-container .ui-icon-battery-3,.control-section-redux .ui-icon-battery-3,.control-panel-redux .ui-icon-battery-3,.redux-metabox .ui-icon-battery-3{background-position:-96px -176px}.redux-container .ui-icon-circle-plus,.control-section-redux .ui-icon-circle-plus,.control-panel-redux .ui-icon-circle-plus,.redux-metabox .ui-icon-circle-plus{background-position:0 -192px}.redux-container .ui-icon-circle-minus,.control-section-redux .ui-icon-circle-minus,.control-panel-redux .ui-icon-circle-minus,.redux-metabox .ui-icon-circle-minus{background-position:-16px -192px}.redux-container .ui-icon-circle-close,.control-section-redux .ui-icon-circle-close,.control-panel-redux .ui-icon-circle-close,.redux-metabox .ui-icon-circle-close{background-position:-32px -192px}.redux-container .ui-icon-circle-triangle-e,.control-section-redux .ui-icon-circle-triangle-e,.control-panel-redux .ui-icon-circle-triangle-e,.redux-metabox .ui-icon-circle-triangle-e{background-position:-48px -192px}.redux-container .ui-icon-circle-triangle-s,.control-section-redux .ui-icon-circle-triangle-s,.control-panel-redux .ui-icon-circle-triangle-s,.redux-metabox .ui-icon-circle-triangle-s{background-position:-64px -192px}.redux-container .ui-icon-circle-triangle-w,.control-section-redux .ui-icon-circle-triangle-w,.control-panel-redux .ui-icon-circle-triangle-w,.redux-metabox .ui-icon-circle-triangle-w{background-position:-80px -192px}.redux-container .ui-icon-circle-triangle-n,.control-section-redux .ui-icon-circle-triangle-n,.control-panel-redux .ui-icon-circle-triangle-n,.redux-metabox .ui-icon-circle-triangle-n{background-position:-96px -192px}.redux-container .ui-icon-circle-arrow-e,.control-section-redux .ui-icon-circle-arrow-e,.control-panel-redux .ui-icon-circle-arrow-e,.redux-metabox .ui-icon-circle-arrow-e{background-position:-112px -192px}.redux-container .ui-icon-circle-arrow-s,.control-section-redux .ui-icon-circle-arrow-s,.control-panel-redux .ui-icon-circle-arrow-s,.redux-metabox .ui-icon-circle-arrow-s{background-position:-128px -192px}.redux-container .ui-icon-circle-arrow-w,.control-section-redux .ui-icon-circle-arrow-w,.control-panel-redux .ui-icon-circle-arrow-w,.redux-metabox .ui-icon-circle-arrow-w{background-position:-144px -192px}.redux-container .ui-icon-circle-arrow-n,.control-section-redux .ui-icon-circle-arrow-n,.control-panel-redux .ui-icon-circle-arrow-n,.redux-metabox .ui-icon-circle-arrow-n{background-position:-160px -192px}.redux-container .ui-icon-circle-zoomin,.control-section-redux .ui-icon-circle-zoomin,.control-panel-redux .ui-icon-circle-zoomin,.redux-metabox .ui-icon-circle-zoomin{background-position:-176px -192px}.redux-container .ui-icon-circle-zoomout,.control-section-redux .ui-icon-circle-zoomout,.control-panel-redux .ui-icon-circle-zoomout,.redux-metabox .ui-icon-circle-zoomout{background-position:-192px -192px}.redux-container .ui-icon-circle-check,.control-section-redux .ui-icon-circle-check,.control-panel-redux .ui-icon-circle-check,.redux-metabox .ui-icon-circle-check{background-position:-208px -192px}.redux-container .ui-icon-circlesmall-plus,.control-section-redux .ui-icon-circlesmall-plus,.control-panel-redux .ui-icon-circlesmall-plus,.redux-metabox .ui-icon-circlesmall-plus{background-position:0 -208px}.redux-container .ui-icon-circlesmall-minus,.control-section-redux .ui-icon-circlesmall-minus,.control-panel-redux .ui-icon-circlesmall-minus,.redux-metabox .ui-icon-circlesmall-minus{background-position:-16px -208px}.redux-container .ui-icon-circlesmall-close,.control-section-redux .ui-icon-circlesmall-close,.control-panel-redux .ui-icon-circlesmall-close,.redux-metabox .ui-icon-circlesmall-close{background-position:-32px -208px}.redux-container .ui-icon-squaresmall-plus,.control-section-redux .ui-icon-squaresmall-plus,.control-panel-redux .ui-icon-squaresmall-plus,.redux-metabox .ui-icon-squaresmall-plus{background-position:-48px -208px}.redux-container .ui-icon-squaresmall-minus,.control-section-redux .ui-icon-squaresmall-minus,.control-panel-redux .ui-icon-squaresmall-minus,.redux-metabox .ui-icon-squaresmall-minus{background-position:-64px -208px}.redux-container .ui-icon-squaresmall-close,.control-section-redux .ui-icon-squaresmall-close,.control-panel-redux .ui-icon-squaresmall-close,.redux-metabox .ui-icon-squaresmall-close{background-position:-80px -208px}.redux-container .ui-icon-grip-dotted-vertical,.control-section-redux .ui-icon-grip-dotted-vertical,.control-panel-redux .ui-icon-grip-dotted-vertical,.redux-metabox .ui-icon-grip-dotted-vertical{background-position:0 -224px}.redux-container .ui-icon-grip-dotted-horizontal,.control-section-redux .ui-icon-grip-dotted-horizontal,.control-panel-redux .ui-icon-grip-dotted-horizontal,.redux-metabox .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.redux-container .ui-icon-grip-solid-vertical,.control-section-redux .ui-icon-grip-solid-vertical,.control-panel-redux .ui-icon-grip-solid-vertical,.redux-metabox .ui-icon-grip-solid-vertical{background-position:-32px -224px}.redux-container .ui-icon-grip-solid-horizontal,.control-section-redux .ui-icon-grip-solid-horizontal,.control-panel-redux .ui-icon-grip-solid-horizontal,.redux-metabox .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.redux-container .ui-icon-gripsmall-diagonal-se,.control-section-redux .ui-icon-gripsmall-diagonal-se,.control-panel-redux .ui-icon-gripsmall-diagonal-se,.redux-metabox .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.redux-container .ui-icon-grip-diagonal-se,.control-section-redux .ui-icon-grip-diagonal-se,.control-panel-redux .ui-icon-grip-diagonal-se,.redux-metabox .ui-icon-grip-diagonal-se{background-position:-80px -224px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-left,.redux-container .ui-corner-tl,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-top,.control-section-redux .ui-corner-left,.control-section-redux .ui-corner-tl,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-top,.control-panel-redux .ui-corner-left,.control-panel-redux .ui-corner-tl,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-top,.redux-metabox .ui-corner-left,.redux-metabox .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-right,.redux-container .ui-corner-tr,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-top,.control-section-redux .ui-corner-right,.control-section-redux .ui-corner-tr,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-top,.control-panel-redux .ui-corner-right,.control-panel-redux .ui-corner-tr,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-top,.redux-metabox .ui-corner-right,.redux-metabox .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-left,.redux-container .ui-corner-bl,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-bottom,.control-section-redux .ui-corner-left,.control-section-redux .ui-corner-bl,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-bottom,.control-panel-redux .ui-corner-left,.control-panel-redux .ui-corner-bl,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-bottom,.redux-metabox .ui-corner-left,.redux-metabox .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-right,.redux-container .ui-corner-br,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-bottom,.control-section-redux .ui-corner-right,.control-section-redux .ui-corner-br,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-bottom,.control-panel-redux .ui-corner-right,.control-panel-redux .ui-corner-br,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-bottom,.redux-metabox .ui-corner-right,.redux-metabox .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.redux-container .ui-widget-overlay,.control-section-redux .ui-widget-overlay,.control-panel-redux .ui-widget-overlay,.redux-metabox .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.redux-container .ui-widget-shadow,.control-section-redux .ui-widget-shadow,.control-panel-redux .ui-widget-shadow,.redux-metabox .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.redux-container .ui-accordion,.control-section-redux .ui-accordion,.control-panel-redux .ui-accordion,.redux-metabox .ui-accordion{width:100%}.redux-container .ui-accordion .ui-accordion-header,.control-section-redux .ui-accordion .ui-accordion-header,.control-panel-redux .ui-accordion .ui-accordion-header,.redux-metabox .ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;font-weight:bold}.redux-container .ui-accordion .ui-accordion-li-fix,.control-section-redux .ui-accordion .ui-accordion-li-fix,.control-panel-redux .ui-accordion .ui-accordion-li-fix,.redux-metabox .ui-accordion .ui-accordion-li-fix{display:inline}.redux-container .ui-accordion .ui-accordion-header-active,.control-section-redux .ui-accordion .ui-accordion-header-active,.control-panel-redux .ui-accordion .ui-accordion-header-active,.redux-metabox .ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.redux-container .ui-accordion .ui-accordion-header a,.control-section-redux .ui-accordion .ui-accordion-header a,.control-panel-redux .ui-accordion .ui-accordion-header a,.redux-metabox .ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em 1.7em}.redux-container .ui-accordion-icons .ui-accordion-header a,.control-section-redux .ui-accordion-icons .ui-accordion-header a,.control-panel-redux .ui-accordion-icons .ui-accordion-header a,.redux-metabox .ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.redux-container .ui-accordion .ui-accordion-header .ui-icon,.control-section-redux .ui-accordion .ui-accordion-header .ui-icon,.control-panel-redux .ui-accordion .ui-accordion-header .ui-icon,.redux-metabox .ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.redux-container .ui-accordion .ui-accordion-content,.control-section-redux .ui-accordion .ui-accordion-content,.control-panel-redux .ui-accordion .ui-accordion-content,.redux-metabox .ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.redux-container .ui-accordion .ui-accordion-content-active,.control-section-redux .ui-accordion .ui-accordion-content-active,.control-panel-redux .ui-accordion .ui-accordion-content-active,.redux-metabox .ui-accordion .ui-accordion-content-active{display:block}.redux-container .ui-button,.control-section-redux .ui-button,.control-panel-redux .ui-button,.redux-metabox .ui-button{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;margin:0;text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-button-primary,.control-section-redux .ui-button-primary,.control-panel-redux .ui-button-primary,.redux-metabox .ui-button-primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-success,.control-section-redux .ui-button-success,.control-panel-redux .ui-button-success,.redux-metabox .ui-button-success{color:#ffffff;background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-error,.control-section-redux .ui-button-error,.control-panel-redux .ui-button-error,.redux-metabox .ui-button-error{color:#ffffff;background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-icon-only,.control-section-redux .ui-button-icon-only,.control-panel-redux .ui-button-icon-only,.redux-metabox .ui-button-icon-only{width:2.2em}.redux-container .ui-button-icons-only,.control-section-redux .ui-button-icons-only,.control-panel-redux .ui-button-icons-only,.redux-metabox .ui-button-icons-only{width:3.4em}.redux-container button.ui-button-icons-only,.control-section-redux button.ui-button-icons-only,.control-panel-redux button.ui-button-icons-only,.redux-metabox button.ui-button-icons-only{width:3.7em}.redux-container .ui-button .ui-button-text,.control-section-redux .ui-button .ui-button-text,.control-panel-redux .ui-button .ui-button-text,.redux-metabox .ui-button .ui-button-text{display:block}.redux-container .ui-button-icon-only .ui-button-text,.redux-container .ui-button-icons-only .ui-button-text,.control-section-redux .ui-button-icon-only .ui-button-text,.control-section-redux .ui-button-icons-only .ui-button-text,.control-panel-redux .ui-button-icon-only .ui-button-text,.control-panel-redux .ui-button-icons-only .ui-button-text,.redux-metabox .ui-button-icon-only .ui-button-text,.redux-metabox .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;display:none}.redux-container .ui-button-text-icon-primary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icon-primary .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icon-primary .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icon-primary .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.redux-container .ui-button-text-icon-secondary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icon-secondary .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icon-secondary .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icon-secondary .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.redux-container .ui-button-icon-only .ui-icon,.redux-container .ui-button-text-icon-primary .ui-icon,.redux-container .ui-button-text-icon-secondary .ui-icon,.redux-container .ui-button-text-icons .ui-icon,.redux-container .ui-button-icons-only .ui-icon,.control-section-redux .ui-button-icon-only .ui-icon,.control-section-redux .ui-button-text-icon-primary .ui-icon,.control-section-redux .ui-button-text-icon-secondary .ui-icon,.control-section-redux .ui-button-text-icons .ui-icon,.control-section-redux .ui-button-icons-only .ui-icon,.control-panel-redux .ui-button-icon-only .ui-icon,.control-panel-redux .ui-button-text-icon-primary .ui-icon,.control-panel-redux .ui-button-text-icon-secondary .ui-icon,.control-panel-redux .ui-button-text-icons .ui-icon,.control-panel-redux .ui-button-icons-only .ui-icon,.redux-metabox .ui-button-icon-only .ui-icon,.redux-metabox .ui-button-text-icon-primary .ui-icon,.redux-metabox .ui-button-text-icon-secondary .ui-icon,.redux-metabox .ui-button-text-icons .ui-icon,.redux-metabox .ui-button-icons-only .ui-icon{top:50%;margin-top:-3px;margin-bottom:3px}.redux-container .ui-button-icon-only .ui-icon,.control-section-redux .ui-button-icon-only .ui-icon,.control-panel-redux .ui-button-icon-only .ui-icon,.redux-metabox .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.redux-container .ui-button-text-icon-primary .ui-button-icon-primary,.redux-container .ui-button-text-icons .ui-button-icon-primary,.redux-container .ui-button-icons-only .ui-button-icon-primary,.control-section-redux .ui-button-text-icon-primary .ui-button-icon-primary,.control-section-redux .ui-button-text-icons .ui-button-icon-primary,.control-section-redux .ui-button-icons-only .ui-button-icon-primary,.control-panel-redux .ui-button-text-icon-primary .ui-button-icon-primary,.control-panel-redux .ui-button-text-icons .ui-button-icon-primary,.control-panel-redux .ui-button-icons-only .ui-button-icon-primary,.redux-metabox .ui-button-text-icon-primary .ui-button-icon-primary,.redux-metabox .ui-button-text-icons .ui-button-icon-primary,.redux-metabox .ui-button-icons-only .ui-button-icon-primary{left:.5em}.redux-container .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary,.control-section-redux .ui-button-text-icon-secondary .ui-button-icon-secondary,.control-section-redux .ui-button-text-icons .ui-button-icon-secondary,.control-section-redux .ui-button-icons-only .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icon-secondary .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icons .ui-button-icon-secondary,.control-panel-redux .ui-button-icons-only .ui-button-icon-secondary,.redux-metabox .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-metabox .ui-button-text-icons .ui-button-icon-secondary,.redux-metabox .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary,.control-section-redux .ui-button-text-icons .ui-button-icon-secondary,.control-section-redux .ui-button-icons-only .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icons .ui-button-icon-secondary,.control-panel-redux .ui-button-icons-only .ui-button-icon-secondary,.redux-metabox .ui-button-text-icons .ui-button-icon-secondary,.redux-metabox .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-buttonset,.control-section-redux .ui-buttonset,.control-panel-redux .ui-buttonset,.redux-metabox .ui-buttonset{margin-right:7px}.redux-container .ui-buttonset .ui-state-active,.control-section-redux .ui-buttonset .ui-state-active,.control-panel-redux .ui-buttonset .ui-state-active,.redux-metabox .ui-buttonset .ui-state-active{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-buttonset .ui-button,.control-section-redux .ui-buttonset .ui-button,.control-panel-redux .ui-buttonset .ui-button,.redux-metabox .ui-buttonset .ui-button{margin-left:0;margin-right:0}.redux-container button.ui-button::-moz-focus-inner,.control-section-redux button.ui-button::-moz-focus-inner,.control-panel-redux button.ui-button::-moz-focus-inner,.redux-metabox button.ui-button::-moz-focus-inner{border:0;padding:0}.redux-container .ui-datepicker,.control-section-redux .ui-datepicker,.control-panel-redux .ui-datepicker,.redux-metabox .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.redux-container .ui-datepicker .ui-datepicker-header,.control-section-redux .ui-datepicker .ui-datepicker-header,.control-panel-redux .ui-datepicker .ui-datepicker-header,.redux-metabox .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;border:0px;font-weight:bold;width:100%;padding:4px 0;background-color:#f5f5f5;color:#808080}.redux-container .ui-datepicker .ui-datepicker-prev,.redux-container .ui-datepicker .ui-datepicker-next,.control-section-redux .ui-datepicker .ui-datepicker-prev,.control-section-redux .ui-datepicker .ui-datepicker-next,.control-panel-redux .ui-datepicker .ui-datepicker-prev,.control-panel-redux .ui-datepicker .ui-datepicker-next,.redux-metabox .ui-datepicker .ui-datepicker-prev,.redux-metabox .ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.redux-container .ui-datepicker .ui-datepicker-prev,.control-section-redux .ui-datepicker .ui-datepicker-prev,.control-panel-redux .ui-datepicker .ui-datepicker-prev,.redux-metabox .ui-datepicker .ui-datepicker-prev{left:2px}.redux-container .ui-datepicker .ui-datepicker-next,.control-section-redux .ui-datepicker .ui-datepicker-next,.control-panel-redux .ui-datepicker .ui-datepicker-next,.redux-metabox .ui-datepicker .ui-datepicker-next{right:2px}.redux-container .ui-datepicker .ui-datepicker-prev span,.redux-container .ui-datepicker .ui-datepicker-next span,.control-section-redux .ui-datepicker .ui-datepicker-prev span,.control-section-redux .ui-datepicker .ui-datepicker-next span,.control-panel-redux .ui-datepicker .ui-datepicker-prev span,.control-panel-redux .ui-datepicker .ui-datepicker-next span,.redux-metabox .ui-datepicker .ui-datepicker-prev span,.redux-metabox .ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.redux-container .ui-datepicker .ui-datepicker-title,.control-section-redux .ui-datepicker .ui-datepicker-title,.control-panel-redux .ui-datepicker .ui-datepicker-title,.redux-metabox .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.redux-container .ui-datepicker .ui-datepicker-title select,.control-section-redux .ui-datepicker .ui-datepicker-title select,.control-panel-redux .ui-datepicker .ui-datepicker-title select,.redux-metabox .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.redux-container .ui-datepicker select.ui-datepicker-month-year,.control-section-redux .ui-datepicker select.ui-datepicker-month-year,.control-panel-redux .ui-datepicker select.ui-datepicker-month-year,.redux-metabox .ui-datepicker select.ui-datepicker-month-year{width:100%}.redux-container .ui-datepicker select.ui-datepicker-month,.redux-container .ui-datepicker select.ui-datepicker-year,.control-section-redux .ui-datepicker select.ui-datepicker-month,.control-section-redux .ui-datepicker select.ui-datepicker-year,.control-panel-redux .ui-datepicker select.ui-datepicker-month,.control-panel-redux .ui-datepicker select.ui-datepicker-year,.redux-metabox .ui-datepicker select.ui-datepicker-month,.redux-metabox .ui-datepicker select.ui-datepicker-year{width:49%}.redux-container .ui-datepicker table,.control-section-redux .ui-datepicker table,.control-panel-redux .ui-datepicker table,.redux-metabox .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.redux-container .ui-datepicker th,.control-section-redux .ui-datepicker th,.control-panel-redux .ui-datepicker th,.redux-metabox .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.redux-container .ui-datepicker td,.control-section-redux .ui-datepicker td,.control-panel-redux .ui-datepicker td,.redux-metabox .ui-datepicker td{border:0;padding:1px}.redux-container .ui-datepicker td span,.redux-container .ui-datepicker td a,.control-section-redux .ui-datepicker td span,.control-section-redux .ui-datepicker td a,.control-panel-redux .ui-datepicker td span,.control-panel-redux .ui-datepicker td a,.redux-metabox .ui-datepicker td span,.redux-metabox .ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.redux-container .ui-datepicker .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.redux-container .ui-datepicker .ui-datepicker-buttonpane button,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane button,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane button,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.redux-container .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.redux-container .ui-datepicker.ui-datepicker-multi,.control-section-redux .ui-datepicker.ui-datepicker-multi,.control-panel-redux .ui-datepicker.ui-datepicker-multi,.redux-metabox .ui-datepicker.ui-datepicker-multi{width:auto}.redux-container .ui-datepicker-multi .ui-datepicker-group,.control-section-redux .ui-datepicker-multi .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group,.redux-metabox .ui-datepicker-multi .ui-datepicker-group{float:left}.redux-container .ui-datepicker-multi .ui-datepicker-group table,.control-section-redux .ui-datepicker-multi .ui-datepicker-group table,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group table,.redux-metabox .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.redux-container .ui-datepicker-multi-2 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-2 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-2 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.redux-container .ui-datepicker-multi-3 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-3 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-3 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.redux-container .ui-datepicker-multi-4 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-4 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-4 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.redux-container .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.control-section-redux .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.redux-metabox .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.control-section-redux .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.redux-metabox .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker-multi .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker-multi .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.redux-container .ui-datepicker-row-break,.control-section-redux .ui-datepicker-row-break,.control-panel-redux .ui-datepicker-row-break,.redux-metabox .ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.redux-container .ui-datepicker-rtl,.control-section-redux .ui-datepicker-rtl,.control-panel-redux .ui-datepicker-rtl,.redux-metabox .ui-datepicker-rtl{direction:rtl}.redux-container .ui-datepicker-rtl .ui-datepicker-prev,.control-section-redux .ui-datepicker-rtl .ui-datepicker-prev,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-prev,.redux-metabox .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next,.control-section-redux .ui-datepicker-rtl .ui-datepicker-next,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-next,.redux-metabox .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-prev:hover,.control-section-redux .ui-datepicker-rtl .ui-datepicker-prev:hover,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-prev:hover,.redux-metabox .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next:hover,.control-section-redux .ui-datepicker-rtl .ui-datepicker-next:hover,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-next:hover,.redux-metabox .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-cover,.control-section-redux .ui-datepicker-cover,.control-panel-redux .ui-datepicker-cover,.redux-metabox .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.redux-container .ui-datepicker th,.control-section-redux .ui-datepicker th,.control-panel-redux .ui-datepicker th,.redux-metabox .ui-datepicker th{font-weight:bold;color:gray}.redux-container .ui-datepicker-today a:hover,.control-section-redux .ui-datepicker-today a:hover,.control-panel-redux .ui-datepicker-today a:hover,.redux-metabox .ui-datepicker-today a:hover{background-color:#808080;color:#ffffff}.redux-container .ui-datepicker-today a,.control-section-redux .ui-datepicker-today a,.control-panel-redux .ui-datepicker-today a,.redux-metabox .ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0px}.redux-container .ui-datepicker td a,.control-section-redux .ui-datepicker td a,.control-panel-redux .ui-datepicker td a,.redux-metabox .ui-datepicker td a{margin-bottom:0px;border:0px}.redux-container .ui-datepicker td:hover,.control-section-redux .ui-datepicker td:hover,.control-panel-redux .ui-datepicker td:hover,.redux-metabox .ui-datepicker td:hover{color:#ffffff}.redux-container .ui-datepicker td .ui-state-default,.control-section-redux .ui-datepicker td .ui-state-default,.control-panel-redux .ui-datepicker td .ui-state-default,.redux-metabox .ui-datepicker td .ui-state-default{border:0px;background:none;margin-bottom:0px;padding:5px;color:gray;text-align:center;filter:none}.redux-container .ui-datepicker td .ui-state-active,.control-section-redux .ui-datepicker td .ui-state-active,.control-panel-redux .ui-datepicker td .ui-state-active,.redux-metabox .ui-datepicker td .ui-state-active{background:#BFBFBF;margin-bottom:0px;font-size:normal;text-shadow:0px;color:#ffffff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-container .ui-datepicker td .ui-state-hover,.control-section-redux .ui-datepicker td .ui-state-hover,.control-panel-redux .ui-datepicker td .ui-state-hover,.redux-metabox .ui-datepicker td .ui-state-hover{color:#ffffff;background:#0064cd;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.redux-container .ui-widget-content,.control-section-redux .ui-widget-content,.control-panel-redux .ui-widget-content,.redux-metabox .ui-widget-content{border:1px solid #dfdfdf}.redux-container .ui-datepicker table,.control-section-redux .ui-datepicker table,.control-panel-redux .ui-datepicker table,.redux-metabox .ui-datepicker table{background:#fff}.redux-container .placeholder,.control-section-redux .placeholder,.control-panel-redux .placeholder,.redux-metabox .placeholder{background:#f9f9f9 !important;border:1px dashed #bbb !important}.wp-customizer #ui-datepicker-div{z-index:999999 !important}
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss CHANGED
@@ -8,7 +8,7 @@
8
  * Portions copyright jQuery UI & Twitter Bootstrap
9
  */
10
 
11
- .redux-container {
12
  /* Interaction Cues
13
  ----------------------------------*/
14
  .ui-state-disabled { cursor: default !important; }
8
  * Portions copyright jQuery UI & Twitter Bootstrap
9
  */
10
 
11
+ .redux-container, .control-section-redux, .control-panel-redux, .redux-metabox {
12
  /* Interaction Cues
13
  ----------------------------------*/
14
  .ui-state-disabled { cursor: default !important; }
ReduxCore/assets/js/redux.js CHANGED
@@ -435,7 +435,7 @@
435
  $( this ).fadeOut( tipHideDuration );
436
  break;
437
  default:
438
- $( this ).show( tipHideDuration );
439
  break;
440
  }
441
  },
@@ -653,11 +653,11 @@
653
  if ( typeof redux.field_objects != 'undefined' && redux.field_objects[type] && redux.field_objects[type] ) {
654
  redux.field_objects[type].init();
655
  }
656
- if ( $( this ).hasClass( 'redux_remove_th' ) ) {
657
 
658
  var tr = $( this ).parents( 'tr:first' );
659
  var th = tr.find( 'th:first' );
660
- if ( th.html() !== undefined && th.html().length > 0 ) {
661
  $( this ).prepend( th.html() );
662
  $( this ).find( '.redux_field_th' ).css( 'padding', '0 0 10px 0' );
663
  }
@@ -977,11 +977,11 @@
977
  };
978
 
979
  $.redux.check_dependencies_visibility = function( parentValue, data ) {
980
- var show = false;
981
- var checkValue_array;
982
- var checkValue = data.checkValue;
983
- var operation = data.operation;
984
- var arr;
985
 
986
  switch ( operation ) {
987
  case '=':
@@ -990,8 +990,8 @@
990
  // var arr = Object.keys(parentValue).map(function (key) {return parentValue[key]});
991
  // parentValue = arr;
992
  // }
993
-
994
- if ( $.isArray( parentValue) ) {
995
  $( parentValue[0] ).each(
996
  function( idx, val ) {
997
  if ( $.isArray( checkValue ) ) {
@@ -1121,18 +1121,18 @@
1121
  });
1122
  parentValue = arr;
1123
  }
1124
-
1125
  if ($.isPlainObject(checkValue)) {
1126
  arr = Object.keys(checkValue).map(function (key) {
1127
  return checkValue[key];
1128
  });
1129
  checkValue = arr;
1130
- }
1131
-
1132
  if ( $.isArray( checkValue ) ) {
1133
  $( checkValue ).each(
1134
  function( idx, val ) {
1135
- console.log (val);
1136
  if ( parentValue.toString().indexOf( val ) !== -1 ) {
1137
  show = true;
1138
  }
@@ -1153,14 +1153,14 @@
1153
  });
1154
  parentValue = arr;
1155
  }
1156
-
1157
  if ($.isPlainObject(checkValue)) {
1158
  arr = Object.keys(checkValue).map(function (key) {
1159
  return checkValue[key];
1160
  });
1161
  checkValue = arr;
1162
- }
1163
-
1164
  if ( $.isArray( checkValue ) ) {
1165
  $( checkValue ).each(
1166
  function( idx, val ) {
@@ -1434,8 +1434,8 @@
1434
  $( '#redux-header' ).append( '<div class="rAds"></div>' );
1435
  el = $( '#redux-header' );
1436
  } else {
1437
- $( '#customize-info .accordion-section-title' ).append( '<div class="rAds"></div>' );
1438
- el = $( '#customize-info .accordion-section-title' );
1439
  }
1440
 
1441
  el.css( 'position', 'relative' );
435
  $( this ).fadeOut( tipHideDuration );
436
  break;
437
  default:
438
+ $( this ).hide( tipHideDuration );
439
  break;
440
  }
441
  },
653
  if ( typeof redux.field_objects != 'undefined' && redux.field_objects[type] && redux.field_objects[type] ) {
654
  redux.field_objects[type].init();
655
  }
656
+ if ( !redux.customizer && $( this ).hasClass( 'redux_remove_th' ) ) {
657
 
658
  var tr = $( this ).parents( 'tr:first' );
659
  var th = tr.find( 'th:first' );
660
+ if ( th.html() && th.html().length > 0 ) {
661
  $( this ).prepend( th.html() );
662
  $( this ).find( '.redux_field_th' ).css( 'padding', '0 0 10px 0' );
663
  }
977
  };
978
 
979
  $.redux.check_dependencies_visibility = function( parentValue, data ) {
980
+ var show = false,
981
+ checkValue_array,
982
+ checkValue = data.checkValue,
983
+ operation = data.operation,
984
+ arr;
985
 
986
  switch ( operation ) {
987
  case '=':
990
  // var arr = Object.keys(parentValue).map(function (key) {return parentValue[key]});
991
  // parentValue = arr;
992
  // }
993
+
994
+ if ( $.isArray( parentValue ) ) {
995
  $( parentValue[0] ).each(
996
  function( idx, val ) {
997
  if ( $.isArray( checkValue ) ) {
1121
  });
1122
  parentValue = arr;
1123
  }
1124
+
1125
  if ($.isPlainObject(checkValue)) {
1126
  arr = Object.keys(checkValue).map(function (key) {
1127
  return checkValue[key];
1128
  });
1129
  checkValue = arr;
1130
+ }
1131
+
1132
  if ( $.isArray( checkValue ) ) {
1133
  $( checkValue ).each(
1134
  function( idx, val ) {
1135
+ //console.log (val);
1136
  if ( parentValue.toString().indexOf( val ) !== -1 ) {
1137
  show = true;
1138
  }
1153
  });
1154
  parentValue = arr;
1155
  }
1156
+
1157
  if ($.isPlainObject(checkValue)) {
1158
  arr = Object.keys(checkValue).map(function (key) {
1159
  return checkValue[key];
1160
  });
1161
  checkValue = arr;
1162
+ }
1163
+
1164
  if ( $.isArray( checkValue ) ) {
1165
  $( checkValue ).each(
1166
  function( idx, val ) {
1434
  $( '#redux-header' ).append( '<div class="rAds"></div>' );
1435
  el = $( '#redux-header' );
1436
  } else {
1437
+ $('#customize-theme-controls ul').first().prepend('<li id="redux_rAds" class="accordion-section rAdsContainer" style="position: relative;"><div class="rAds"></div></li>');
1438
+ el = $( '#redux_rAds' );
1439
  }
1440
 
1441
  el.css( 'position', 'relative' );
ReduxCore/assets/js/redux.min.js CHANGED
@@ -1,2 +1,2 @@
1
- function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1);var b=jQuery(a).parents(".redux-container:first"),c=jQuery(a).closest(".redux-group-tab").attr("id"),d=c.split("_");d=d[0];var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".redux-group-tab-link-li:first"),f=jQuery("#"+c+"_li").parents(".hasSubSections:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var g=parseInt(b.find(".redux-field-errors span").text())-1;if(0>=g)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var h=parseInt(e.find(".redux-menu-error:first").text())-1;0>=h?e.find(".redux-menu-error:first").fadeOut().remove():e.find(".redux-menu-error:first").text(h),b.find(".redux-field-errors span").text(g)}0!==f.length&&0===f.find(".redux-menu-error").length&&f.find(".hasError").removeClass("hasError")}if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-warning")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-warning"),jQuery(a).parent().find(".redux-th-warning").slideUp();var i=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=i)jQuery("#"+c+"_li .redux-menu-warning").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasWarning"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-warnings").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-warnings").slideUp(),jQuery("#redux_metaboxes_warnings").slideUp();else{var j=parseInt(e.find(".redux-menu-warning:first").text())-1;0>=j?e.find(".redux-menu-warning:first").fadeOut().remove():e.find(".redux-menu-warning:first").text(j),b.find(".redux-field-warning span").text(i)}0!==f.length&&0===f.find(".redux-menu-warning").length&&f.find(".hasWarning").removeClass("hasWarning")}return b.find(".saved_notice:visible").length>0?void 0:redux.customizer?void redux.customizer.save(a,b,c):void(redux.args.disable_save_warn||(b.find(".redux-save-warn").slideDown(),window.onbeforeunload=confirmOnPageExit))}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?jQueryCookie.define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){a.fn.serializeForm=function(){if(this.length<1)return!1;var b={},c=b,d=':input[type!="checkbox"][type!="radio"], input:checked',e=function(){if(!this.disabled){var d=this.name.replace(/\[([^\]]+)?\]/g,",$1").split(","),e=d.length-1,f=a(this);if(d[0]){for(var g=0;e>g;g++)c=c[d[g]]=c[d[g]]||(""===d[g+1]||"0"===d[g+1]?[]:{});void 0!==c.length?c.push(f.val()):c[d[e]]=f.val(),c=b}}};return this.filter(d).each(e),this.find(d).each(e),b}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&d<c.min&&e.val(""),void(f(c.max)&&d>c.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),e.length==f.length+1?a.alphanum_caret(g-1):a.alphanum_caret(g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c<b.min?!0:!1}function s(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");k(g,c,b)&&e.push(c)}return e.join("")}function t(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");l(g,c,b)&&e.push(c)}return e.join("")}function u(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==b&&b!=c?!0:!1}function v(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==c&&b!=c?!0:!1}function w(a){return a.toUpperCase()==a.toLowerCase()?!0:!1}function x(a,b){var c=new B(H+b),d=new B(a),e=c.subtract(d);return e}function y(){var a,b="0123456789".split(""),c={},d=0;for(d=0;d<b.length;d++)a=b[d],c[a]=!0;return c}function z(){var a="abcdefghijklmnopqrstuvwxyz",b=a.toUpperCase(),c=new B(a+b);return c}function A(a,b){if(0==a.length)return!1;var c=a.indexOf(J);if(c>=0)return!1;var d=a.indexOf(I);if(0>d)return!0;var e=a.lastIndexOf(I),f=a.length-e-1;if(3>f)return!1;var g=m(a.substring(d));return g%3>0?!1:!0}function B(a){"string"==typeof a?this.map=C(a):this.map={}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e<d.length;e++)b=d[e],c[b]=!0;return c}a.fn.alphanum=function(a){var b=i(a),c=this;return d(c,s,b),this},a.fn.alpha=function(a){var b=i("alpha"),c=i(a,b),e=this;return d(e,s,c),this},a.fn.numeric=function(a){var b=j(a),c=this;return d(c,t,b),c.blur(function(){e(this,a)}),this};var D={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:NaN},E={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:NaN,maxDecimalPlaces:NaN,maxPreDecimalPlaces:NaN,max:NaN,min:NaN},F={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},G={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},H=b()+c(),I=",",J=".",K=y(),L=z();B.prototype.add=function(a){var b=this.clone();for(var c in a.map)b.map[c]=!0;return b},B.prototype.subtract=function(a){var b=this.clone();for(var c in a.map)delete b.map[c];return b},B.prototype.contains=function(a){return this.map[a]?!0:!1},B.prototype.clone=function(){var a=new B;for(var b in this.map)a.map[b]=!0;return a},a.fn.alphanum.backdoorAlphaNum=function(a,b){var c=i(b);return s(a,c)},a.fn.alphanum.backdoorNumeric=function(a,b){var c=j(b);return t(a,c)},a.fn.alphanum.setNumericSeparators=function(a){1==a.thousandsSeparator.length&&1==a.decimalSeparator.length&&(I=a.thousandsSeparator,J=a.decimalSeparator)}}(jQuery),function(a){function b(a,b){if(a.createTextRange){var c=a.createTextRange();c.move("character",b),c.select()}else null!=a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function c(a){if("selection"in document){var b=a.createTextRange();try{b.setEndPoint("EndToStart",document.selection.createRange())}catch(c){return 0}return b.text.length}return null!=a.selectionStart?a.selectionStart:void 0}a.fn.alphanum_caret=function(d,e){return"undefined"==typeof d?c(this.get(0)):this.queue(function(c){if(isNaN(d)){var f=a(this).val().indexOf(d);e===!0?f+=d.length:"undefined"!=typeof e&&(f+=e),b(this,f)}else b(this,d);c()})}}(jQuery),function(a){var b=function(a){return a?a.ownerDocument.defaultView||a.ownerDocument.parentWindow:window},c=function(b,c){var d=a.Range.current(b).clone(),e=a.Range(b).select(b);return d.overlaps(e)?(d.compare("START_TO_START",e)<1?(startPos=0,d.move("START_TO_START",e)):(fromElementToCurrent=e.clone(),fromElementToCurrent.move("END_TO_START",d),startPos=fromElementToCurrent.toString().length),d.compare("END_TO_END",e)>=0?endPos=e.toString().length:endPos=startPos+d.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]<b&&(c[0]={el:d,count:c[0]-a}),"number"==typeof c[1]&&c[1]<=b&&(c[1]={el:d,count:c[1]-a})},g=function(a,b,c){var d,e;c=c||0;for(var h=0;a[h];h++)d=a[h],3===d.nodeType||4===d.nodeType?(e=c,c+=d.nodeValue.length,f(e,c,b,d)):8!==d.nodeType&&(c=g(d.childNodes,b,c));return c};jQuery.fn.selection=function(a,b){return void 0!==a?this.each(function(){e(this,a,b)}):d(this[0])},a.fn.selection.getCharElement=g}(jQuery),function(a){"use strict";a.redux=a.redux||{},a(document).ready(function(){a.fn.isOnScreen=function(){if(window){var b=a(window),c={top:b.scrollTop()};c.right=c.left+b.width(),c.bottom=c.top+b.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(c.right<d.left||c.left>d.right||c.bottom<d.top||c.top>d.bottom)}},a.redux.hideFields(),a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl()}),a.redux.ajax_save=function(b){var c=a(document.getElementById("redux_ajax_overlay"));c.fadeIn(),jQuery(".redux-action_bar .spinner").addClass("is-active"),jQuery(".redux-action_bar input").attr("disabled","disabled");var d=jQuery(document.getElementById("redux_notification_bar"));d.slideUp(),jQuery(".redux-save-warn").slideUp(),jQuery(".redux_ajax_save_error").slideUp("medium",function(){jQuery(this).remove()});var e=jQuery(document.getElementById("redux-form-wrapper"));redux.fields.hasOwnProperty("editor")&&a.each(redux.fields.editor,function(a,b){var c=tinyMCE.get(a);c&&c.save()});var f=e.serialize();e.find("input[type=checkbox]").each(function(){if("undefined"!=typeof a(this).attr("name")){var b=a(this).is(":checked")?a(this).val():"0";f+="&"+a(this).attr("name")+"="+b}}),"redux_save"!=b.attr("name")&&(f+="&"+b.attr("name")+"="+b.val());var g=e.attr("data-nonce");return jQuery.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.args.opt_name+"_ajax_save",nonce:g,opt_name:redux.args.opt_name,data:f},error:function(a){window.console||(console={}),console.log=console.log||function(a,b){},console.log(redux.ajax.console),console.log(a.responseText),jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),alert(redux.ajax.alert)},success:function(b){if(b.action&&"reload"==b.action)location.reload(!0);else if("success"==b.status){jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),redux.options=b.options,redux.errors=b.errors,redux.warnings=b.warnings,d.html(b.notification_bar).slideDown("fast"),(null!==b.errors||null!==b.warnings)&&a.redux.notices();var e=a(document.getElementById("redux_notification_bar")).find(".saved_notice");e.slideDown(),e.delay(4e3).slideUp()}else jQuery(".redux-action_bar input").removeAttr("disabled"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),c.fadeOut("fast"),jQuery(".wrap h2:first").parent().append('<div class="error redux_ajax_save_error" style="display:none;"><p>'+b.status+"</p></div>"),jQuery(".redux_ajax_save_error").slideDown(),jQuery("html, body").animate({scrollTop:0},"slow")}}),!1},a.redux.initEvents=function(){a(".redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")&&a(this).attr("href").toLowerCase().indexOf(redux.args.slug+"&tab=")>=0){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a(".redux-action_bar input").on("click",function(b){if(a(this).attr("name")==redux.args.opt_name+"[defaults]"){if(!confirm(redux.args.reset_confirm))return!1}else if(a(this).attr("name")==redux.args.opt_name+"[defaults-section]"&&!confirm(redux.args.reset_section_confirm))return!1;window.onbeforeunload=null,redux.args.ajax_save===!0&&(a.redux.ajax_save(a(this)),b.preventDefault())}),a(".expand_options").click(function(b){b.preventDefault();var c=a(".redux-container");if(a(c).hasClass("fully-expanded")){a(c).removeClass("fully-expanded");var d=a.cookie("redux_current_tab");a(".redux-container:first").find("#"+d+"_section_group").fadeIn(200,function(){0!==a(".redux-container:first").find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()})}return a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),a("#redux-footer-sticky").removeClass("hide"),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp()},a.redux.hideFields=function(){a("label[for='redux_hide_field']").each(function(b,c){var d=a(this).parent().parent();a(d).addClass("hidden")})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(b){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h+",redux-qtip";j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-dev-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){a(this).slideDown(500)},event:"mouseover"},hide:{effect:function(){a(this).slideUp(500)},event:"mouseleave"},style:{classes:"qtip-shadow qtip-light"},position:{my:"top center",at:"bottom center"}})}),a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).show(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}if(e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab=");(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length)e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild");else if(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length)e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active");else if(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length){e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")});var i=e.find("#"+f+"_section_group_li").parents(".hasSubSections:first");i.length>0&&(e.find("#"+f+"_section_group_li").removeClass("active"),f=i.find(".redux-group-tab-link-a:first").data("rel"),i.hasClass("empty_section")?(i.find(".subsection li:first").addClass("active"),e.find("#"+f+"_section_group_li").removeClass("active").addClass("activeChild").find("ul.subsection").slideDown(),i=i.find(".subsection li:first"),f=i.find(".redux-group-tab-link-a:first").data("rel")):e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown())}else e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")));e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-group-tab:visible").find(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");if("undefined"!=typeof redux.field_objects&&redux.field_objects[b]&&redux.field_objects[b]&&redux.field_objects[b].init(),a(this).hasClass("redux_remove_th")){var c=a(this).parents("tr:first"),d=c.find("th:first");void 0!==d.html()&&d.html().length>0&&(a(this).prepend(d.html()),a(this).find(".redux_field_th").css("padding","0 0 10px 0")),a(this).parent().attr("colspan","2"),d.remove()}})},a.redux.notices=function(){redux.errors&&redux.errors.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-error">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-error").remove();var c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-error">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}))})),redux.warnings&&redux.warnings.warnings&&(a.each(redux.warnings.warnings,function(b,c){a.each(c.warnings,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-warning"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-warning">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-warning").remove();var c=b.find(".redux-field-warning").length;c>0&&(b.find(".redux-field-warnings span").text(c),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-warning">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),
2
- d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-media")&&(c=c.url),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b,c){var d=a(this),e=!1,g=a("#"+redux.args.opt_name+"-"+b),h=g.parents("tr:first");if(f||(e=a.redux.check_parents_dependencies(b)),e===!0){if(g.hasClass("redux-container-section")){var i=a("#section-"+b);i.hasClass("redux-section-indent-start")&&i.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),i.fadeIn(300).removeClass("hide"))}if(g.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-raw")){var j=g.parents().find("table#"+redux.args.opt_name+"-"+b);j.fadeIn(300).removeClass("hide")}h.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(g.hasClass("redux-container-section")||g.hasClass("redux-container-info"))&&h.css({display:"none"})}else e===!1&&h.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});d.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d,e=!1,f=c.checkValue,g=c.operation;switch(g){case"=":case"equals":a.isArray(b)?a(b[0]).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c==b?(e=!0,!0):void 0});else if(c==f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b==c&&(e=!0)}):b==f&&(e=!0);break;case"!=":case"not":a.isArray(b)?a(b).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c!=b?(e=!0,!0):void 0});else if(c!=f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b!=c&&(e=!0)}):b!=f&&(e=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(f)&&(e=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(f)&&(e=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)<parseFloat(f)&&(e=!0);break;case"<=":case"less_equal":case"is_smaller_equal":parseFloat(b)<=parseFloat(f)&&(e=!0);break;case"contains":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){console.log(c),-1!==b.toString().indexOf(c)&&(e=!0)}):-1!==b.toString().indexOf(f)&&(e=!0);break;case"doesnt_contain":case"not_contain":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){-1===b.toString().indexOf(c)&&(e=!0)}):-1===b.toString().indexOf(f)&&(e=!0);break;case"is_empty_or":(""===b||b==f)&&(e=!0);break;case"not_empty_and":""!==b&&b!=f&&(e=!0);break;case"is_empty":case"empty":case"!isset":b&&""!==b&&null!==b||(e=!0);break;case"not_empty":case"!empty":case"isset":b&&""!==b&&null!==b&&(e=!0)}return e},a.redux.verifyPos=function(a,b){if(a=a.replace(/^\s+|\s+$/gm,""),""===a||-1==a.search(" "))return b===!0?"top left":"bottom right";var c=a.split(" "),d=b?"top":"bottom";("top"==c[0]||"center"==c[0]||"bottom"==c[0])&&(d=c[0]);var e=b?"left":"right";return("left"==c[1]||"center"==c[1]||"right"==c[1])&&(e=c[1]),d+" "+e},a.redux.stickyInfo=function(){var b=a(".redux-main").innerWidth()-20;a("#info_bar").isOnScreen()||a("#redux-footer-sticky").isOnScreen()?(a("#redux-footer").css({background:"#eee",position:"inherit",bottom:"inherit",width:"inherit"}),a("#redux-sticky-padder").hide(),a("#redux-footer").removeClass("sticky-footer-fixed")):(a("#redux-footer").css({position:"fixed",bottom:"0",width:b,right:21}),a("#redux-footer").addClass("sticky-footer-fixed"),a(".redux-save-warn").css("left",a("#redux-sticky").offset().left),a("#redux-sticky-padder").show()),a("#info_bar").isOnScreen()?a("#redux-sticky").removeClass("sticky-save-warn"):a("#redux-sticky").addClass("sticky-save-warn")},a.redux.expandOptions=function(b){var c=b.find(".expand_options"),d=b.find(".redux-sidebar").width()-1,e=a(".redux-group-menu .active a").data("rel")+"_section_group";return c.hasClass("expanded")?(c.removeClass("expanded"),b.find(".redux-main").removeClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":"0px"},500),b.find(".redux-main").stop().animate({"margin-left":d},500,function(){b.find(".redux-main").attr("style","")}),b.find(".redux-group-tab").each(function(){a(this).attr("id")!==e&&a(this).fadeOut("fast")})):(c.addClass("expanded"),b.find(".redux-main").addClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":-d-113},500),b.find(".redux-main").stop().animate({"margin-left":"-1px"},500),b.find(".redux-group-tab").fadeIn("medium",function(){a.redux.initFields()})),!1},a.redux.scaleToRatio=function(b,c,d){var e=0,f=b.attr("data-width");f||(f=b.width(),b.attr("data-width",f));var g=b.attr("data-height"),h=b.height();(!g||h>g)&&(g=h,b.attr("data-height",g),b.css("width","auto"),b.attr("data-width",b.width()),f=b.width()),f>d?(e=d/f,b.css("width",d),b.css("height",g*e),g*=e,f*=e):b.css("width","auto"),g>c?(e=c/g,b.css("height",c),b.css("width",f*e),f*=e,g*=e):b.css("height","auto");var i=(a(document.getElementById("redux-header")).height()-b.height())/2;i>0?b.css("margin-top",i):b.css("margin-top",0),a("#redux-header .redux_field_search")&&a("#redux-header .redux_field_search").css("right",a(b).width()+20)},a.redux.resizeAds=function(){var b,c=a("#redux-header");c.length?b=c.width()-c.find(".display_header").width()-30:(c=a("#customize-info"),b=c.width());var d=c.height(),e=c.find(".rAds");a(e).find("video").each(function(){a.redux.scaleToRatio(a(this),d,b)}),a(e).find("img").each(function(){a.redux.scaleToRatio(a(this),d,b)}),a(e).find("div").each(function(){a.redux.scaleToRatio(a(this),d,b)}),"-99999px"==e.css("left")&&e.css("display","none").css("left","auto"),e.fadeIn("slow")},a(document).ready(function(){redux.rAds&&setTimeout(function(){var b;a("#redux-header").length>0?(a("#redux-header").append('<div class="rAds"></div>'),b=a("#redux-header")):(a("#customize-info .accordion-section-title").append('<div class="rAds"></div>'),b=a("#customize-info .accordion-section-title")),b.css("position","relative"),b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px"),b.find(".rAds").html(redux.rAds.replace(/<br\s?\/?>/,""));var c=b.find(".rAds");b.height(),b.width()-b.find(".display_header").width()-30;c.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px"),a(document).ajaxComplete(function(){c.find("a").hide(),setTimeout(function(){a.redux.resizeAds(),c.find("a").fadeIn()},1400),setTimeout(function(){a.redux.resizeAds()},1500),a(document).unbind("ajaxComplete")}),a(window).resize(function(){a.redux.resizeAds()})},400)})}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(a){a=a||window.event;var b=redux.args.save_pending;return a&&(a.returnValue=b),window.onbeforeunload=null,b};
1
+ function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1);var b=jQuery(a).parents(".redux-container:first"),c=jQuery(a).closest(".redux-group-tab").attr("id"),d=c.split("_");d=d[0];var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".redux-group-tab-link-li:first"),f=jQuery("#"+c+"_li").parents(".hasSubSections:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var g=parseInt(b.find(".redux-field-errors span").text())-1;if(0>=g)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var h=parseInt(e.find(".redux-menu-error:first").text())-1;0>=h?e.find(".redux-menu-error:first").fadeOut().remove():e.find(".redux-menu-error:first").text(h),b.find(".redux-field-errors span").text(g)}0!==f.length&&0===f.find(".redux-menu-error").length&&f.find(".hasError").removeClass("hasError")}if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-warning")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-warning"),jQuery(a).parent().find(".redux-th-warning").slideUp();var i=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=i)jQuery("#"+c+"_li .redux-menu-warning").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasWarning"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-warnings").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-warnings").slideUp(),jQuery("#redux_metaboxes_warnings").slideUp();else{var j=parseInt(e.find(".redux-menu-warning:first").text())-1;0>=j?e.find(".redux-menu-warning:first").fadeOut().remove():e.find(".redux-menu-warning:first").text(j),b.find(".redux-field-warning span").text(i)}0!==f.length&&0===f.find(".redux-menu-warning").length&&f.find(".hasWarning").removeClass("hasWarning")}return b.find(".saved_notice:visible").length>0?void 0:redux.customizer?void redux.customizer.save(a,b,c):void(redux.args.disable_save_warn||(b.find(".redux-save-warn").slideDown(),window.onbeforeunload=confirmOnPageExit))}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?jQueryCookie.define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){a.fn.serializeForm=function(){if(this.length<1)return!1;var b={},c=b,d=':input[type!="checkbox"][type!="radio"], input:checked',e=function(){if(!this.disabled){var d=this.name.replace(/\[([^\]]+)?\]/g,",$1").split(","),e=d.length-1,f=a(this);if(d[0]){for(var g=0;e>g;g++)c=c[d[g]]=c[d[g]]||(""===d[g+1]||"0"===d[g+1]?[]:{});void 0!==c.length?c.push(f.val()):c[d[e]]=f.val(),c=b}}};return this.filter(d).each(e),this.find(d).each(e),b}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&d<c.min&&e.val(""),void(f(c.max)&&d>c.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),e.length==f.length+1?a.alphanum_caret(g-1):a.alphanum_caret(g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c<b.min?!0:!1}function s(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");k(g,c,b)&&e.push(c)}return e.join("")}function t(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");l(g,c,b)&&e.push(c)}return e.join("")}function u(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==b&&b!=c?!0:!1}function v(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==c&&b!=c?!0:!1}function w(a){return a.toUpperCase()==a.toLowerCase()?!0:!1}function x(a,b){var c=new B(H+b),d=new B(a),e=c.subtract(d);return e}function y(){var a,b="0123456789".split(""),c={},d=0;for(d=0;d<b.length;d++)a=b[d],c[a]=!0;return c}function z(){var a="abcdefghijklmnopqrstuvwxyz",b=a.toUpperCase(),c=new B(a+b);return c}function A(a,b){if(0==a.length)return!1;var c=a.indexOf(J);if(c>=0)return!1;var d=a.indexOf(I);if(0>d)return!0;var e=a.lastIndexOf(I),f=a.length-e-1;if(3>f)return!1;var g=m(a.substring(d));return g%3>0?!1:!0}function B(a){"string"==typeof a?this.map=C(a):this.map={}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e<d.length;e++)b=d[e],c[b]=!0;return c}a.fn.alphanum=function(a){var b=i(a),c=this;return d(c,s,b),this},a.fn.alpha=function(a){var b=i("alpha"),c=i(a,b),e=this;return d(e,s,c),this},a.fn.numeric=function(a){var b=j(a),c=this;return d(c,t,b),c.blur(function(){e(this,a)}),this};var D={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:NaN},E={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:NaN,maxDecimalPlaces:NaN,maxPreDecimalPlaces:NaN,max:NaN,min:NaN},F={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},G={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},H=b()+c(),I=",",J=".",K=y(),L=z();B.prototype.add=function(a){var b=this.clone();for(var c in a.map)b.map[c]=!0;return b},B.prototype.subtract=function(a){var b=this.clone();for(var c in a.map)delete b.map[c];return b},B.prototype.contains=function(a){return this.map[a]?!0:!1},B.prototype.clone=function(){var a=new B;for(var b in this.map)a.map[b]=!0;return a},a.fn.alphanum.backdoorAlphaNum=function(a,b){var c=i(b);return s(a,c)},a.fn.alphanum.backdoorNumeric=function(a,b){var c=j(b);return t(a,c)},a.fn.alphanum.setNumericSeparators=function(a){1==a.thousandsSeparator.length&&1==a.decimalSeparator.length&&(I=a.thousandsSeparator,J=a.decimalSeparator)}}(jQuery),function(a){function b(a,b){if(a.createTextRange){var c=a.createTextRange();c.move("character",b),c.select()}else null!=a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function c(a){if("selection"in document){var b=a.createTextRange();try{b.setEndPoint("EndToStart",document.selection.createRange())}catch(c){return 0}return b.text.length}return null!=a.selectionStart?a.selectionStart:void 0}a.fn.alphanum_caret=function(d,e){return"undefined"==typeof d?c(this.get(0)):this.queue(function(c){if(isNaN(d)){var f=a(this).val().indexOf(d);e===!0?f+=d.length:"undefined"!=typeof e&&(f+=e),b(this,f)}else b(this,d);c()})}}(jQuery),function(a){var b=function(a){return a?a.ownerDocument.defaultView||a.ownerDocument.parentWindow:window},c=function(b,c){var d=a.Range.current(b).clone(),e=a.Range(b).select(b);return d.overlaps(e)?(d.compare("START_TO_START",e)<1?(startPos=0,d.move("START_TO_START",e)):(fromElementToCurrent=e.clone(),fromElementToCurrent.move("END_TO_START",d),startPos=fromElementToCurrent.toString().length),d.compare("END_TO_END",e)>=0?endPos=e.toString().length:endPos=startPos+d.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]<b&&(c[0]={el:d,count:c[0]-a}),"number"==typeof c[1]&&c[1]<=b&&(c[1]={el:d,count:c[1]-a})},g=function(a,b,c){var d,e;c=c||0;for(var h=0;a[h];h++)d=a[h],3===d.nodeType||4===d.nodeType?(e=c,c+=d.nodeValue.length,f(e,c,b,d)):8!==d.nodeType&&(c=g(d.childNodes,b,c));return c};jQuery.fn.selection=function(a,b){return void 0!==a?this.each(function(){e(this,a,b)}):d(this[0])},a.fn.selection.getCharElement=g}(jQuery),function(a){"use strict";a.redux=a.redux||{},a(document).ready(function(){a.fn.isOnScreen=function(){if(window){var b=a(window),c={top:b.scrollTop()};c.right=c.left+b.width(),c.bottom=c.top+b.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(c.right<d.left||c.left>d.right||c.bottom<d.top||c.top>d.bottom)}},a.redux.hideFields(),a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl()}),a.redux.ajax_save=function(b){var c=a(document.getElementById("redux_ajax_overlay"));c.fadeIn(),jQuery(".redux-action_bar .spinner").addClass("is-active"),jQuery(".redux-action_bar input").attr("disabled","disabled");var d=jQuery(document.getElementById("redux_notification_bar"));d.slideUp(),jQuery(".redux-save-warn").slideUp(),jQuery(".redux_ajax_save_error").slideUp("medium",function(){jQuery(this).remove()});var e=jQuery(document.getElementById("redux-form-wrapper"));redux.fields.hasOwnProperty("editor")&&a.each(redux.fields.editor,function(a,b){var c=tinyMCE.get(a);c&&c.save()});var f=e.serialize();e.find("input[type=checkbox]").each(function(){if("undefined"!=typeof a(this).attr("name")){var b=a(this).is(":checked")?a(this).val():"0";f+="&"+a(this).attr("name")+"="+b}}),"redux_save"!=b.attr("name")&&(f+="&"+b.attr("name")+"="+b.val());var g=e.attr("data-nonce");return jQuery.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.args.opt_name+"_ajax_save",nonce:g,opt_name:redux.args.opt_name,data:f},error:function(a){window.console||(console={}),console.log=console.log||function(a,b){},console.log(redux.ajax.console),console.log(a.responseText),jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),alert(redux.ajax.alert)},success:function(b){if(b.action&&"reload"==b.action)location.reload(!0);else if("success"==b.status){jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),redux.options=b.options,redux.errors=b.errors,redux.warnings=b.warnings,d.html(b.notification_bar).slideDown("fast"),(null!==b.errors||null!==b.warnings)&&a.redux.notices();var e=a(document.getElementById("redux_notification_bar")).find(".saved_notice");e.slideDown(),e.delay(4e3).slideUp()}else jQuery(".redux-action_bar input").removeAttr("disabled"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),c.fadeOut("fast"),jQuery(".wrap h2:first").parent().append('<div class="error redux_ajax_save_error" style="display:none;"><p>'+b.status+"</p></div>"),jQuery(".redux_ajax_save_error").slideDown(),jQuery("html, body").animate({scrollTop:0},"slow")}}),!1},a.redux.initEvents=function(){a(".redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")&&a(this).attr("href").toLowerCase().indexOf(redux.args.slug+"&tab=")>=0){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a(".redux-action_bar input").on("click",function(b){if(a(this).attr("name")==redux.args.opt_name+"[defaults]"){if(!confirm(redux.args.reset_confirm))return!1}else if(a(this).attr("name")==redux.args.opt_name+"[defaults-section]"&&!confirm(redux.args.reset_section_confirm))return!1;window.onbeforeunload=null,redux.args.ajax_save===!0&&(a.redux.ajax_save(a(this)),b.preventDefault())}),a(".expand_options").click(function(b){b.preventDefault();var c=a(".redux-container");if(a(c).hasClass("fully-expanded")){a(c).removeClass("fully-expanded");var d=a.cookie("redux_current_tab");a(".redux-container:first").find("#"+d+"_section_group").fadeIn(200,function(){0!==a(".redux-container:first").find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()})}return a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),a("#redux-footer-sticky").removeClass("hide"),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp()},a.redux.hideFields=function(){a("label[for='redux_hide_field']").each(function(b,c){var d=a(this).parent().parent();a(d).addClass("hidden")})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(b){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h+",redux-qtip";j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-dev-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){a(this).slideDown(500)},event:"mouseover"},hide:{effect:function(){a(this).slideUp(500)},event:"mouseleave"},style:{classes:"qtip-shadow qtip-light"},position:{my:"top center",at:"bottom center"}})}),a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).hide(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}if(e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab=");(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length)e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild");else if(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length)e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active");else if(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length){e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")});var i=e.find("#"+f+"_section_group_li").parents(".hasSubSections:first");i.length>0&&(e.find("#"+f+"_section_group_li").removeClass("active"),f=i.find(".redux-group-tab-link-a:first").data("rel"),i.hasClass("empty_section")?(i.find(".subsection li:first").addClass("active"),e.find("#"+f+"_section_group_li").removeClass("active").addClass("activeChild").find("ul.subsection").slideDown(),i=i.find(".subsection li:first"),f=i.find(".redux-group-tab-link-a:first").data("rel")):e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown())}else e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")));e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-group-tab:visible").find(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");if("undefined"!=typeof redux.field_objects&&redux.field_objects[b]&&redux.field_objects[b]&&redux.field_objects[b].init(),!redux.customizer&&a(this).hasClass("redux_remove_th")){var c=a(this).parents("tr:first"),d=c.find("th:first");d.html()&&d.html().length>0&&(a(this).prepend(d.html()),a(this).find(".redux_field_th").css("padding","0 0 10px 0")),a(this).parent().attr("colspan","2"),d.remove()}})},a.redux.notices=function(){redux.errors&&redux.errors.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-error">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-error").remove();var c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-error">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}))})),redux.warnings&&redux.warnings.warnings&&(a.each(redux.warnings.warnings,function(b,c){a.each(c.warnings,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-warning"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-warning">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-warning").remove();var c=b.find(".redux-field-warning").length;c>0&&(b.find(".redux-field-warnings span").text(c),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-warning">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),
2
+ d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-media")&&(c=c.url),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b,c){var d=a(this),e=!1,g=a("#"+redux.args.opt_name+"-"+b),h=g.parents("tr:first");if(f||(e=a.redux.check_parents_dependencies(b)),e===!0){if(g.hasClass("redux-container-section")){var i=a("#section-"+b);i.hasClass("redux-section-indent-start")&&i.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),i.fadeIn(300).removeClass("hide"))}if(g.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-raw")){var j=g.parents().find("table#"+redux.args.opt_name+"-"+b);j.fadeIn(300).removeClass("hide")}h.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(g.hasClass("redux-container-section")||g.hasClass("redux-container-info"))&&h.css({display:"none"})}else e===!1&&h.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});d.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d,e=!1,f=c.checkValue,g=c.operation;switch(g){case"=":case"equals":a.isArray(b)?a(b[0]).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c==b?(e=!0,!0):void 0});else if(c==f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b==c&&(e=!0)}):b==f&&(e=!0);break;case"!=":case"not":a.isArray(b)?a(b).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c!=b?(e=!0,!0):void 0});else if(c!=f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b!=c&&(e=!0)}):b!=f&&(e=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(f)&&(e=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(f)&&(e=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)<parseFloat(f)&&(e=!0);break;case"<=":case"less_equal":case"is_smaller_equal":parseFloat(b)<=parseFloat(f)&&(e=!0);break;case"contains":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){-1!==b.toString().indexOf(c)&&(e=!0)}):-1!==b.toString().indexOf(f)&&(e=!0);break;case"doesnt_contain":case"not_contain":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){-1===b.toString().indexOf(c)&&(e=!0)}):-1===b.toString().indexOf(f)&&(e=!0);break;case"is_empty_or":(""===b||b==f)&&(e=!0);break;case"not_empty_and":""!==b&&b!=f&&(e=!0);break;case"is_empty":case"empty":case"!isset":b&&""!==b&&null!==b||(e=!0);break;case"not_empty":case"!empty":case"isset":b&&""!==b&&null!==b&&(e=!0)}return e},a.redux.verifyPos=function(a,b){if(a=a.replace(/^\s+|\s+$/gm,""),""===a||-1==a.search(" "))return b===!0?"top left":"bottom right";var c=a.split(" "),d=b?"top":"bottom";("top"==c[0]||"center"==c[0]||"bottom"==c[0])&&(d=c[0]);var e=b?"left":"right";return("left"==c[1]||"center"==c[1]||"right"==c[1])&&(e=c[1]),d+" "+e},a.redux.stickyInfo=function(){var b=a(".redux-main").innerWidth()-20;a("#info_bar").isOnScreen()||a("#redux-footer-sticky").isOnScreen()?(a("#redux-footer").css({background:"#eee",position:"inherit",bottom:"inherit",width:"inherit"}),a("#redux-sticky-padder").hide(),a("#redux-footer").removeClass("sticky-footer-fixed")):(a("#redux-footer").css({position:"fixed",bottom:"0",width:b,right:21}),a("#redux-footer").addClass("sticky-footer-fixed"),a(".redux-save-warn").css("left",a("#redux-sticky").offset().left),a("#redux-sticky-padder").show()),a("#info_bar").isOnScreen()?a("#redux-sticky").removeClass("sticky-save-warn"):a("#redux-sticky").addClass("sticky-save-warn")},a.redux.expandOptions=function(b){var c=b.find(".expand_options"),d=b.find(".redux-sidebar").width()-1,e=a(".redux-group-menu .active a").data("rel")+"_section_group";return c.hasClass("expanded")?(c.removeClass("expanded"),b.find(".redux-main").removeClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":"0px"},500),b.find(".redux-main").stop().animate({"margin-left":d},500,function(){b.find(".redux-main").attr("style","")}),b.find(".redux-group-tab").each(function(){a(this).attr("id")!==e&&a(this).fadeOut("fast")})):(c.addClass("expanded"),b.find(".redux-main").addClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":-d-113},500),b.find(".redux-main").stop().animate({"margin-left":"-1px"},500),b.find(".redux-group-tab").fadeIn("medium",function(){a.redux.initFields()})),!1},a.redux.scaleToRatio=function(b,c,d){var e=0,f=b.attr("data-width");f||(f=b.width(),b.attr("data-width",f));var g=b.attr("data-height"),h=b.height();(!g||h>g)&&(g=h,b.attr("data-height",g),b.css("width","auto"),b.attr("data-width",b.width()),f=b.width()),f>d?(e=d/f,b.css("width",d),b.css("height",g*e),g*=e,f*=e):b.css("width","auto"),g>c?(e=c/g,b.css("height",c),b.css("width",f*e),f*=e,g*=e):b.css("height","auto");var i=(a(document.getElementById("redux-header")).height()-b.height())/2;i>0?b.css("margin-top",i):b.css("margin-top",0),a("#redux-header .redux_field_search")&&a("#redux-header .redux_field_search").css("right",a(b).width()+20)},a.redux.resizeAds=function(){var b,c=a("#redux-header");c.length?b=c.width()-c.find(".display_header").width()-30:(c=a("#customize-info"),b=c.width());var d=c.height(),e=c.find(".rAds");a(e).find("video").each(function(){a.redux.scaleToRatio(a(this),d,b)}),a(e).find("img").each(function(){a.redux.scaleToRatio(a(this),d,b)}),a(e).find("div").each(function(){a.redux.scaleToRatio(a(this),d,b)}),"-99999px"==e.css("left")&&e.css("display","none").css("left","auto"),e.fadeIn("slow")},a(document).ready(function(){redux.rAds&&setTimeout(function(){var b;a("#redux-header").length>0?(a("#redux-header").append('<div class="rAds"></div>'),b=a("#redux-header")):(a("#customize-theme-controls ul").first().prepend('<li id="redux_rAds" class="accordion-section rAdsContainer" style="position: relative;"><div class="rAds"></div></li>'),b=a("#redux_rAds")),b.css("position","relative"),b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px"),b.find(".rAds").html(redux.rAds.replace(/<br\s?\/?>/,""));var c=b.find(".rAds");b.height(),b.width()-b.find(".display_header").width()-30;c.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px"),a(document).ajaxComplete(function(){c.find("a").hide(),setTimeout(function(){a.redux.resizeAds(),c.find("a").fadeIn()},1400),setTimeout(function(){a.redux.resizeAds()},1500),a(document).unbind("ajaxComplete")}),a(window).resize(function(){a.redux.resizeAds()})},400)})}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(a){a=a||window.event;var b=redux.args.save_pending;return a&&(a.returnValue=b),window.onbeforeunload=null,b};
ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js CHANGED
@@ -54,8 +54,8 @@
54
  return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');
55
  })(),
56
  inputTypeColorSupport = (function() {
57
- var colorInput = $("<input type='color' value='!' />")[0];
58
- return colorInput.type === "color" && colorInput.value !== "!";
59
  })(),
60
  replaceInput = [
61
  "<div class='sp-replacer'>",
54
  return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');
55
  })(),
56
  inputTypeColorSupport = (function() {
57
+ var colorInput = $("<input type='color' value='#ffffff' />")[0];
58
+ return colorInput.type === "color" && colorInput.value !== "#ffffff";
59
  })(),
60
  replaceInput = [
61
  "<div class='sp-replacer'>",
ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js CHANGED
@@ -1 +1 @@
1
- !function(a,b,c){function d(a,b,c,d){for(var e=[],f=0;f<a.length;f++){var g=a[f];if(g){var h=tinycolor(g),i=h.toHsl().l<.5?"sp-thumb-el sp-thumb-dark":"sp-thumb-el sp-thumb-light";i+=tinycolor.equals(b,g)?" sp-thumb-active":"";var j=h.toString(d||"rgb"),k=r?"background-color:"+h.toRgbString():"filter:"+h.toFilter();e.push('<span title="'+j+'" data-color="'+h.toRgbString()+'" class="'+i+'"><span class="sp-thumb-inner" style="'+k+';" /></span>')}else{var l="sp-clear-display";e.push('<span title="No Color Selected" data-color="" style="background-color:transparent;" class="'+l+'"></span>')}}return"<div class='sp-cf "+c+"'>"+e.join("")+"</div>"}function e(){for(var a=0;a<p.length;a++)p[a]&&p[a].hide()}function f(a,c){var d=b.extend({},o,a);return d.callbacks={move:l(d.move,c),change:l(d.change,c),show:l(d.show,c),hide:l(d.hide,c),beforeShow:l(d.beforeShow,c)},d}function g(g,j){function l(){if(T.showPaletteOnly&&(T.showPalette=!0),T.palette){la=T.palette.slice(0),ma=b.isArray(la[0])?la:[la],na={};for(var a=0;a<ma.length;a++)for(var c=0;c<ma[a].length;c++){var d=tinycolor(ma[a][c]).toRgbString();na[d]=!0}}wa.toggleClass("sp-flat",U),wa.toggleClass("sp-input-disabled",!T.showInput),wa.toggleClass("sp-alpha-enabled",T.showAlpha),wa.toggleClass("sp-clear-enabled",Wa),wa.toggleClass("sp-buttons-disabled",!T.showButtons),wa.toggleClass("sp-palette-disabled",!T.showPalette),wa.toggleClass("sp-palette-only",T.showPaletteOnly),wa.toggleClass("sp-initial-disabled",!T.showInitial),wa.addClass(T.className).addClass(T.containerClassName),O()}function o(){function a(a){return a.data&&a.data.ignore?(H(b(this).data("color")),K()):(H(b(this).data("color")),K(),N(!0),F()),!1}if(q&&wa.find("*:not(input)").attr("unselectable","on"),l(),Ma&&ua.after(Na).hide(),Wa||Ia.hide(),U)ua.after(wa).hide();else{var c="parent"===T.appendTo?ua.parent():b(T.appendTo);1!==c.length&&(c=b("body")),c.append(wa)}v(),Oa.bind("click.spectrum touchstart.spectrum",function(a){va||D(),a.stopPropagation(),b(a.target).is("input")||a.preventDefault()}),(ua.is(":disabled")||T.disabled===!0)&&S(),wa.click(k),Ea.change(C),Ea.bind("paste",function(){setTimeout(C,1)}),Ea.keydown(function(a){13==a.keyCode&&C()}),Ha.text(T.cancelText),Ha.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),F("cancel")}),Ia.attr("title",T.clearText),Ia.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),Va=!0,K(),U&&N(!0)}),Ja.text(T.chooseText),Ja.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),J()&&(N(!0),F())}),m(Ca,function(a,b,c){ka=a/ea,Va=!1,c.shiftKey&&(ka=Math.round(10*ka)/10),K()},A,B),m(za,function(a,b){ha=parseFloat(b/ca),Va=!1,T.showAlpha||(ka=1),K()},A,B),m(xa,function(a,b,c){if(c.shiftKey){if(!sa){var d=ia*_,e=aa-ja*aa,f=Math.abs(a-d)>Math.abs(b-e);sa=f?"x":"y"}}else sa=null;var g=!sa||"x"===sa,h=!sa||"y"===sa;g&&(ia=parseFloat(a/_)),h&&(ja=parseFloat((aa-b)/aa)),Va=!1,T.showAlpha||(ka=1),K()},A,B),Qa?(H(Qa),L(),Ta=Sa||tinycolor(Qa).format,w(Qa)):L(),U&&E();var d=q?"mousedown.spectrum":"click.spectrum touchstart.spectrum";Fa.delegate(".sp-thumb-el",d,a),Ga.delegate(".sp-thumb-el:nth-child(1)",d,{ignore:!0},a)}function v(){if(W&&a.localStorage){try{var c=a.localStorage[W].split(",#");c.length>1&&(delete a.localStorage[W],b.each(c,function(a,b){w(b)}))}catch(d){}try{oa=a.localStorage[W].split(";")}catch(d){}}}function w(c){if(V){var d=tinycolor(c).toRgbString();if(!na[d]&&-1===b.inArray(d,oa))for(oa.push(d);oa.length>pa;)oa.shift();if(W&&a.localStorage)try{a.localStorage[W]=oa.join(";")}catch(e){}}}function x(){var a=[];if(T.showPalette)for(i=0;i<oa.length;i++){var b=tinycolor(oa[i]).toRgbString();na[b]||a.push(oa[i])}return a.reverse().slice(0,T.maxSelectionSize)}function y(){var a=I(),c=b.map(ma,function(b,c){return d(b,a,"sp-palette-row sp-palette-row-"+c,T.preferredFormat)});v(),oa&&c.push(d(x(),a,"sp-palette-row sp-palette-row-selection",T.preferredFormat)),Fa.html(c.join(""))}function z(){if(T.showInitial){var a=Ra,b=I();Ga.html(d([a,b],b,"sp-palette-row-initial",T.preferredFormat))}}function A(){(0>=aa||0>=_||0>=ca)&&O(),wa.addClass(qa),sa=null,ua.trigger("dragstart.spectrum",[I()])}function B(){wa.removeClass(qa),ua.trigger("dragstop.spectrum",[I()])}function C(){var a=Ea.val();if(null!==a&&""!==a||!Wa){var b=tinycolor(a);b.ok?(H(b),N(!0)):Ea.addClass("sp-validation-error")}else H(null),N(!0)}function D(){$?F():E()}function E(){var c=b.Event("beforeShow.spectrum");return $?void O():(ua.trigger(c,[I()]),void(Y.beforeShow(I())===!1||c.isDefaultPrevented()||(e(),$=!0,b(ta).bind("click.spectrum",F),b(a).bind("resize.spectrum",Z),Na.addClass("sp-active"),wa.removeClass("sp-hidden"),O(),L(),Ra=I(),z(),Y.show(Ra),ua.trigger("show.spectrum",[Ra]))))}function F(c){if((!c||"click"!=c.type||2!=c.button)&&$&&!U){$=!1,b(ta).unbind("click.spectrum",F),b(a).unbind("resize.spectrum",Z),Na.removeClass("sp-active"),wa.addClass("sp-hidden");var d=!tinycolor.equals(I(),Ra);d&&(Ua&&"cancel"!==c?N(!0):G()),Y.hide(I()),ua.trigger("hide.spectrum",[I()])}}function G(){H(Ra,!0)}function H(a,b){if(tinycolor.equals(a,I()))return void L();var c,d;!a&&Wa?Va=!0:(Va=!1,c=tinycolor(a),d=c.toHsv(),ha=d.h%360/360,ia=d.s,ja=d.v,ka=d.a),L(),c&&c.ok&&!b&&(Ta=Sa||c.format)}function I(a){return a=a||{},Wa&&Va?null:tinycolor.fromRatio({h:ha,s:ia,v:ja,a:Math.round(100*ka)/100},{format:a.format||Ta})}function J(){return!Ea.hasClass("sp-validation-error")}function K(){L(),Y.move(I()),ua.trigger("move.spectrum",[I()])}function L(){Ea.removeClass("sp-validation-error"),M();var a=tinycolor.fromRatio({h:ha,s:1,v:1});xa.css("background-color",a.toHexString());var b=Ta;1>ka&&(0!==ka||"name"!==b)&&("hex"===b||"hex3"===b||"hex6"===b||"name"===b)&&(b="rgb");var c=I({format:b}),d="";if(Pa.removeClass("sp-clear-display"),Pa.css("background-color","transparent"),!c&&Wa)Pa.addClass("sp-clear-display");else{var e=c.toHexString(),f=c.toRgbString();if(r||1===c.alpha?Pa.css("background-color",f):(Pa.css("background-color","transparent"),Pa.css("filter",c.toFilter())),T.showAlpha){var g=c.toRgb();g.a=0;var h=tinycolor(g).toRgbString(),i="linear-gradient(left, "+h+", "+e+")";q?Ba.css("filter",tinycolor(h).toFilter({gradientType:1},e)):(Ba.css("background","-webkit-"+i),Ba.css("background","-moz-"+i),Ba.css("background","-ms-"+i),Ba.css("background","linear-gradient(to right, "+h+", "+e+")"))}d=c.toString(b)}T.showInput&&Ea.val(d),T.showPalette&&y(),z()}function M(){var a=ia,b=ja;if(Wa&&Va)Da.hide(),Aa.hide(),ya.hide();else{Da.show(),Aa.show(),ya.show();var c=a*_,d=aa-b*aa;c=Math.max(-ba,Math.min(_-ba,c-ba)),d=Math.max(-ba,Math.min(aa-ba,d-ba)),ya.css({top:d+"px",left:c+"px"});var e=ka*ea;Da.css({left:e-fa/2+"px"});var f=ha*ca;Aa.css({top:f-ga+"px"})}}function N(a){var b=I(),c="",d=!tinycolor.equals(b,Ra);b&&(c=b.toString(Ta),w(b)),Ka&&ua.val(c),Ra=b,a&&d&&(Y.change(b),ua.trigger("change",[b]))}function O(){_=xa.width(),aa=xa.height(),ba=ya.height(),da=za.width(),ca=za.height(),ga=Aa.height(),ea=Ca.width(),fa=Da.width(),U||(wa.css("position","absolute"),wa.offset(h(wa,Oa))),M(),T.showPalette&&y(),ua.trigger("reflow.spectrum")}function P(){ua.show(),Oa.unbind("click.spectrum touchstart.spectrum"),wa.remove(),Na.remove(),p[Ya.id]=null}function Q(a,d){return a===c?b.extend({},T):d===c?T[a]:(T[a]=d,void l())}function R(){va=!1,ua.attr("disabled",!1),Oa.removeClass("sp-disabled")}function S(){F(),va=!0,ua.attr("disabled",!0),Oa.addClass("sp-disabled")}var T=f(j,g),U=T.flat,V=T.showSelectionPalette,W=T.localStorageKey,X=T.theme,Y=T.callbacks,Z=n(O,10),$=!1,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=1,la=[],ma=[],na={},oa=T.selectionPalette.slice(0),pa=T.maxSelectionSize,qa="sp-dragging",ra=T.inputText,sa=null,ta=g.ownerDocument,ua=(ta.body,b(g)),va=!1,wa=b(u,ta).addClass(X),xa=wa.find(".sp-color"),ya=wa.find(".sp-dragger"),za=wa.find(".sp-hue"),Aa=wa.find(".sp-slider"),Ba=wa.find(".sp-alpha-inner"),Ca=wa.find(".sp-alpha"),Da=wa.find(".sp-alpha-handle"),Ea=wa.find(".sp-input"),Fa=wa.find(".sp-palette"),Ga=wa.find(".sp-initial"),Ha=wa.find(".sp-cancel"),Ia=wa.find(".sp-clear"),Ja=wa.find(".sp-choose"),Ka=ua.is("input"),La=Ka&&s&&"color"===ua.attr("type"),Ma=Ka&&!U,Na=Ma?b(t).addClass(X).addClass(T.className).addClass(T.replacerClassName):b([]),Oa=Ma?Na:ua,Pa=Na.find(".sp-preview-inner"),Qa=T.color||Ka&&ua.val(),Ra=!1,Sa=T.preferredFormat,Ta=Sa,Ua=!T.showButtons||T.clickoutFiresChange,Va=!Qa,Wa=T.allowEmpty&&!La;if(""!==ra){var Xa=b(Oa).find("div.sp-dd");Xa.text(ra)}o();var Ya={show:E,hide:F,toggle:D,reflow:O,option:Q,enable:R,disable:S,set:function(a){H(a),N()},get:I,destroy:P,container:wa};return Ya.id=p.push(Ya)-1,Ya}function h(a,c){var d=0,e=a.outerWidth(),f=a.outerHeight(),g=c.outerHeight(),h=a[0].ownerDocument,i=h.documentElement,j=i.clientWidth+b(h).scrollLeft(),k=i.clientHeight+b(h).scrollTop(),l=c.offset();return l.top+=g,l.left-=Math.min(l.left,l.left+e>j&&j>e?Math.abs(l.left+e-j):0),l.top-=Math.min(l.top,l.top+f>k&&k>f?Math.abs(f+g-d):d),l}function j(){}function k(a){a.stopPropagation()}function l(a,b){var c=Array.prototype.slice,d=c.call(arguments,2);return function(){return a.apply(b,d.concat(c.call(arguments)))}}function m(c,d,e,f){function g(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.returnValue=!1}function h(a){if(l){if(q&&document.documentMode<9&&!a.button)return j();var b=a.originalEvent.touches,e=b?b[0].pageX:a.pageX,f=b?b[0].pageY:a.pageY,h=Math.max(0,Math.min(e-m.left,o)),i=Math.max(0,Math.min(f-m.top,n));p&&g(a),d.apply(c,[h,i,a])}}function i(a){var d=a.which?3==a.which:2==a.button;a.originalEvent.touches;d||l||e.apply(c,arguments)!==!1&&(l=!0,n=b(c).height(),o=b(c).width(),m=b(c).offset(),b(k).bind(r),b(k.body).addClass("sp-dragging"),p||h(a),g(a))}function j(){l&&(b(k).unbind(r),b(k.body).removeClass("sp-dragging"),f.apply(c,arguments)),l=!1}d=d||function(){},e=e||function(){},f=f||function(){};var k=c.ownerDocument||document,l=!1,m={},n=0,o=0,p="ontouchstart"in a,r={};r.selectstart=g,r.dragstart=g,r["touchmove mousemove"]=h,r["touchend mouseup"]=j,b(c).bind("touchstart mousedown",i)}function n(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,a.apply(e,f)};c&&clearTimeout(d),(c||!d)&&(d=setTimeout(g,b))}}var o={beforeShow:j,move:j,change:j,show:j,hide:j,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!1,showInitial:!1,showPalette:!1,showPaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",clearText:"Clear Color Selection",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,inputText:""},p=[],q=!!/msie/i.exec(a.navigator.userAgent),r=function(){function a(a,b){return!!~(""+a).indexOf(b)}var b=document.createElement("div"),c=b.style;return c.cssText="background-color:rgba(0,0,0,.5)",a(c.backgroundColor,"rgba")||a(c.backgroundColor,"hsla")}(),s=function(){var a=b("<input type='color' value='!' />")[0];return"color"===a.type&&"!"!==a.value}(),t=["<div class='sp-replacer'>","<div class='sp-preview'><div class='sp-preview-inner'></div></div>","<div class='sp-dd'>&#9660;</div>","</div>"].join(""),u=function(){var a="";if(q)for(var b=1;6>=b;b++)a+="<div class='sp-"+b+"'></div>";return["<div class='sp-container sp-hidden'>","<div class='sp-palette-container'>","<div class='sp-palette sp-thumb sp-cf'></div>","</div>","<div class='sp-picker-container'>","<div class='sp-top sp-cf'>","<div class='sp-fill'></div>","<div class='sp-top-inner'>","<div class='sp-color'>","<div class='sp-sat'>","<div class='sp-val'>","<div class='sp-dragger'></div>","</div>","</div>","</div>","<div class='sp-clear sp-clear-display'>","</div>","<div class='sp-hue'>","<div class='sp-slider'></div>",a,"</div>","</div>","<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>","</div>","<div class='sp-input-container sp-cf'>","<input class='sp-input' type='text' spellcheck='false' />","</div>","<div class='sp-initial sp-thumb sp-cf'></div>","<div class='sp-button-container sp-cf'>","<a class='sp-cancel' href='#'></a>","<button type='button' class='sp-choose'></button>","</div>","</div>","</div>"].join("")}(),v="spectrum.id";b.fn.spectrum=function(a,c){if("string"==typeof a){var d=this,e=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=p[b(this).data(v)];if(c){var f=c[a];if(!f)throw new Error("Spectrum: no such method: '"+a+"'");"get"==a?d=c.get():"container"==a?d=c.container:"option"==a?d=c.option.apply(c,e):"destroy"==a?(c.destroy(),b(this).removeData(v)):f.apply(c,e)}}),d}return this.spectrum("destroy").each(function(){var c=b.extend({},a,b(this).data()),d=g(this,c);b(this).data(v,d.id)})},b.fn.spectrum.load=!0,b.fn.spectrum.loadOpts={},b.fn.spectrum.draggable=m,b.fn.spectrum.defaults=o,b.spectrum={},b.spectrum.localization={},b.spectrum.palettes={},b.fn.spectrum.processNativeColorInputs=function(){s||b("input[type=color]").spectrum({preferredFormat:"hex6"})},function(){function b(a,d){if(a=a?a:"",d=d||{},"object"==typeof a&&a.hasOwnProperty("_tc_id"))return a;var f=c(a),h=f.r,k=f.g,n=f.b,o=f.a,p=A(100*o)/100,q=d.format||f.format;return 1>h&&(h=A(h)),1>k&&(k=A(k)),1>n&&(n=A(n)),{ok:f.ok,format:q,_tc_id:y++,alpha:o,getAlpha:function(){return o},setAlpha:function(a){o=l(a),p=A(100*o)/100},toHsv:function(){var a=g(h,k,n);return{h:360*a.h,s:a.s,v:a.v,a:o}},toHsvString:function(){var a=g(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.v);return 1==o?"hsv("+b+", "+c+"%, "+d+"%)":"hsva("+b+", "+c+"%, "+d+"%, "+p+")"},toHsl:function(){var a=e(h,k,n);return{h:360*a.h,s:a.s,l:a.l,a:o}},toHslString:function(){var a=e(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.l);return 1==o?"hsl("+b+", "+c+"%, "+d+"%)":"hsla("+b+", "+c+"%, "+d+"%, "+p+")"},toHex:function(a){return i(h,k,n,a)},toHexString:function(a){return"#"+this.toHex(a)},toHex8:function(){return j(h,k,n,o)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:A(h),g:A(k),b:A(n),a:o}},toRgbString:function(){return 1==o?"rgb("+A(h)+", "+A(k)+", "+A(n)+")":"rgba("+A(h)+", "+A(k)+", "+A(n)+", "+p+")"},toPercentageRgb:function(){return{r:A(100*m(h,255))+"%",g:A(100*m(k,255))+"%",b:A(100*m(n,255))+"%",a:o}},toPercentageRgbString:function(){return 1==o?"rgb("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%)":"rgba("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%, "+p+")"},toName:function(){return 0===o?"transparent":F[i(h,k,n,!0)]||!1},toFilter:function(a){var c="#"+j(h,k,n,o),e=c,f=d&&d.gradientType?"GradientType = 1, ":"";if(a){var g=b(a);e=g.toHex8String()}return"progid:DXImageTransform.Microsoft.gradient("+f+"startColorstr="+c+",endColorstr="+e+")"},toString:function(a){var b=!!a;a=a||this.format;var c=!1,d=!b&&1>o&&o>0,e=d&&("hex"===a||"hex6"===a||"hex3"===a||"name"===a);return"rgb"===a&&(c=this.toRgbString()),"prgb"===a&&(c=this.toPercentageRgbString()),("hex"===a||"hex6"===a)&&(c=this.toHexString()),"hex3"===a&&(c=this.toHexString(!0)),"hex8"===a&&(c=this.toHex8String()),"name"===a&&(c=this.toName()),"hsl"===a&&(c=this.toHslString()),"hsv"===a&&(c=this.toHsvString()),e?this.toRgbString():c||this.toHexString()}}}function c(a){var b={r:0,g:0,b:0},c=1,e=!1,g=!1;return"string"==typeof a&&(a=v(a)),"object"==typeof a&&(a.hasOwnProperty("r")&&a.hasOwnProperty("g")&&a.hasOwnProperty("b")?(b=d(a.r,a.g,a.b),e=!0,g="%"===String(a.r).substr(-1)?"prgb":"rgb"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("v")?(a.s=s(a.s),a.v=s(a.v),b=h(a.h,a.s,a.v),e=!0,g="hsv"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("l")&&(a.s=s(a.s),a.l=s(a.l),b=f(a.h,a.s,a.l),e=!0,g="hsl"),a.hasOwnProperty("a")&&(c=a.a)),c=l(c),{ok:e,format:a.format||g,r:B(255,C(b.r,0)),g:B(255,C(b.g,0)),b:B(255,C(b.b,0)),a:c}}function d(a,b,c){return{r:255*m(a,255),g:255*m(b,255),b:255*m(c,255)}}function e(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,l:h}}function f(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(a=m(a,360),b=m(b,100),c=m(c,100),0===b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return{r:255*e,g:255*f,b:255*g}}function g(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=f,i=f-g;if(e=0===f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,v:h}}function h(a,b,c){a=6*m(a,360),b=m(b,100),c=m(c,100);var d=z.floor(a),e=a-d,f=c*(1-b),g=c*(1-e*b),h=c*(1-(1-e)*b),i=d%6,j=[c,g,f,f,h,c][i],k=[h,c,c,g,f,f][i],l=[f,f,h,c,c,g][i];return{r:255*j,g:255*k,b:255*l}}function i(a,b,c,d){var e=[r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return d&&e[0].charAt(0)==e[0].charAt(1)&&e[1].charAt(0)==e[1].charAt(1)&&e[2].charAt(0)==e[2].charAt(1)?e[0].charAt(0)+e[1].charAt(0)+e[2].charAt(0):e.join("")}function j(a,b,c,d){var e=[r(t(d)),r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return e.join("")}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b}function l(a){return a=parseFloat(a),(isNaN(a)||0>a||a>1)&&(a=1),a}function m(a,b){p(a)&&(a="100%");var c=q(a);return a=B(b,C(0,parseFloat(a))),c&&(a=parseInt(a*b,10)/100),z.abs(a-b)<1e-6?1:a%b/parseFloat(b)}function n(a){return B(1,C(0,a))}function o(a){return parseInt(a,16)}function p(a){return"string"==typeof a&&-1!=a.indexOf(".")&&1===parseFloat(a)}function q(a){return"string"==typeof a&&-1!=a.indexOf("%")}function r(a){return 1==a.length?"0"+a:""+a}function s(a){return 1>=a&&(a=100*a+"%"),a}function t(a){return Math.round(255*parseFloat(a)).toString(16)}function u(a){return o(a)/255}function v(a){a=a.replace(w,"").replace(x,"").toLowerCase();var b=!1;if(E[a])a=E[a],b=!0;else if("transparent"==a)return{r:0,g:0,b:0,a:0,format:"name"};var c;return(c=G.rgb.exec(a))?{r:c[1],g:c[2],b:c[3]}:(c=G.rgba.exec(a))?{r:c[1],g:c[2],b:c[3],a:c[4]}:(c=G.hsl.exec(a))?{h:c[1],s:c[2],l:c[3]}:(c=G.hsla.exec(a))?{h:c[1],s:c[2],l:c[3],a:c[4]}:(c=G.hsv.exec(a))?{h:c[1],s:c[2],v:c[3]}:(c=G.hex8.exec(a))?{a:u(c[1]),r:o(c[2]),g:o(c[3]),b:o(c[4]),format:b?"name":"hex8"}:(c=G.hex6.exec(a))?{r:o(c[1]),g:o(c[2]),b:o(c[3]),format:b?"name":"hex"}:(c=G.hex3.exec(a))?{r:o(c[1]+""+c[1]),g:o(c[2]+""+c[2]),b:o(c[3]+""+c[3]),format:b?"name":"hex"}:!1}var w=/^[\s,#]+/,x=/\s+$/,y=0,z=Math,A=z.round,B=z.min,C=z.max,D=z.random;b.fromRatio=function(a,c){if("object"==typeof a){var d={};for(var e in a)a.hasOwnProperty(e)&&("a"===e?d[e]=a[e]:d[e]=s(a[e]));a=d}return b(a,c)},b.equals=function(a,c){return a&&c?b(a).toRgbString()==b(c).toRgbString():!1},b.random=function(){return b.fromRatio({r:D(),g:D(),b:D()})},b.desaturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s-=c/100,d.s=n(d.s),b(d)},b.saturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s+=c/100,d.s=n(d.s),b(d)},b.greyscale=function(a){return b.desaturate(a,100)},b.lighten=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l+=c/100,d.l=n(d.l),b(d)},b.darken=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l-=c/100,d.l=n(d.l),b(d)},b.complement=function(a){var c=b(a).toHsl();return c.h=(c.h+180)%360,b(c)},b.triad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+120)%360,s:c.s,l:c.l}),b({h:(d+240)%360,s:c.s,l:c.l})]},b.tetrad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+90)%360,s:c.s,l:c.l}),b({h:(d+180)%360,s:c.s,l:c.l}),b({h:(d+270)%360,s:c.s,l:c.l})]},b.splitcomplement=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+72)%360,s:c.s,l:c.l}),b({h:(d+216)%360,s:c.s,l:c.l})]},b.analogous=function(a,c,d){c=c||6,d=d||30;var e=b(a).toHsl(),f=360/d,g=[b(a)];for(e.h=(e.h-(f*c>>1)+720)%360;--c;)e.h=(e.h+f)%360,g.push(b(e));return g},b.monochromatic=function(a,c){c=c||6;for(var d=b(a).toHsv(),e=d.h,f=d.s,g=d.v,h=[],i=1/c;c--;)h.push(b({h:e,s:f,v:g})),g=(g+i)%1;return h},b.readability=function(a,c){var d=b(a).toRgb(),e=b(c).toRgb(),f=(299*d.r+587*d.g+114*d.b)/1e3,g=(299*e.r+587*e.g+114*e.b)/1e3,h=Math.max(d.r,e.r)-Math.min(d.r,e.r)+Math.max(d.g,e.g)-Math.min(d.g,e.g)+Math.max(d.b,e.b)-Math.min(d.b,e.b);return{brightness:Math.abs(f-g),color:h}},b.readable=function(a,c){var d=b.readability(a,c);return d.brightness>125&&d.color>500},b.mostReadable=function(a,c){for(var d=null,e=0,f=!1,g=0;g<c.length;g++){var h=b.readability(a,c[g]),i=h.brightness>125&&h.color>500,j=3*(h.brightness/125)+h.color/500;(i&&!f||i&&f&&j>e||!i&&!f&&j>e)&&(f=i,e=j,d=b(c[g]))}return d};var E=b.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},F=b.hexNames=k(E),G=function(){var a="[-\\+]?\\d+%?",b="[-\\+]?\\d*\\.\\d+%?",c="(?:"+b+")|(?:"+a+")",d="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?",e="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?";return{rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+e),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+e),hsv:new RegExp("hsv"+d),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();a.tinycolor=b}(),b(function(){b.fn.spectrum.load&&b.fn.spectrum.processNativeColorInputs()})}(window,jQuery);
1
+ !function(a,b,c){function d(a,b,c,d){for(var e=[],f=0;f<a.length;f++){var g=a[f];if(g){var h=tinycolor(g),i=h.toHsl().l<.5?"sp-thumb-el sp-thumb-dark":"sp-thumb-el sp-thumb-light";i+=tinycolor.equals(b,g)?" sp-thumb-active":"";var j=h.toString(d||"rgb"),k=r?"background-color:"+h.toRgbString():"filter:"+h.toFilter();e.push('<span title="'+j+'" data-color="'+h.toRgbString()+'" class="'+i+'"><span class="sp-thumb-inner" style="'+k+';" /></span>')}else{var l="sp-clear-display";e.push('<span title="No Color Selected" data-color="" style="background-color:transparent;" class="'+l+'"></span>')}}return"<div class='sp-cf "+c+"'>"+e.join("")+"</div>"}function e(){for(var a=0;a<p.length;a++)p[a]&&p[a].hide()}function f(a,c){var d=b.extend({},o,a);return d.callbacks={move:l(d.move,c),change:l(d.change,c),show:l(d.show,c),hide:l(d.hide,c),beforeShow:l(d.beforeShow,c)},d}function g(g,j){function l(){if(T.showPaletteOnly&&(T.showPalette=!0),T.palette){la=T.palette.slice(0),ma=b.isArray(la[0])?la:[la],na={};for(var a=0;a<ma.length;a++)for(var c=0;c<ma[a].length;c++){var d=tinycolor(ma[a][c]).toRgbString();na[d]=!0}}wa.toggleClass("sp-flat",U),wa.toggleClass("sp-input-disabled",!T.showInput),wa.toggleClass("sp-alpha-enabled",T.showAlpha),wa.toggleClass("sp-clear-enabled",Wa),wa.toggleClass("sp-buttons-disabled",!T.showButtons),wa.toggleClass("sp-palette-disabled",!T.showPalette),wa.toggleClass("sp-palette-only",T.showPaletteOnly),wa.toggleClass("sp-initial-disabled",!T.showInitial),wa.addClass(T.className).addClass(T.containerClassName),O()}function o(){function a(a){return a.data&&a.data.ignore?(H(b(this).data("color")),K()):(H(b(this).data("color")),K(),N(!0),F()),!1}if(q&&wa.find("*:not(input)").attr("unselectable","on"),l(),Ma&&ua.after(Na).hide(),Wa||Ia.hide(),U)ua.after(wa).hide();else{var c="parent"===T.appendTo?ua.parent():b(T.appendTo);1!==c.length&&(c=b("body")),c.append(wa)}v(),Oa.bind("click.spectrum touchstart.spectrum",function(a){va||D(),a.stopPropagation(),b(a.target).is("input")||a.preventDefault()}),(ua.is(":disabled")||T.disabled===!0)&&S(),wa.click(k),Ea.change(C),Ea.bind("paste",function(){setTimeout(C,1)}),Ea.keydown(function(a){13==a.keyCode&&C()}),Ha.text(T.cancelText),Ha.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),F("cancel")}),Ia.attr("title",T.clearText),Ia.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),Va=!0,K(),U&&N(!0)}),Ja.text(T.chooseText),Ja.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),J()&&(N(!0),F())}),m(Ca,function(a,b,c){ka=a/ea,Va=!1,c.shiftKey&&(ka=Math.round(10*ka)/10),K()},A,B),m(za,function(a,b){ha=parseFloat(b/ca),Va=!1,T.showAlpha||(ka=1),K()},A,B),m(xa,function(a,b,c){if(c.shiftKey){if(!sa){var d=ia*_,e=aa-ja*aa,f=Math.abs(a-d)>Math.abs(b-e);sa=f?"x":"y"}}else sa=null;var g=!sa||"x"===sa,h=!sa||"y"===sa;g&&(ia=parseFloat(a/_)),h&&(ja=parseFloat((aa-b)/aa)),Va=!1,T.showAlpha||(ka=1),K()},A,B),Qa?(H(Qa),L(),Ta=Sa||tinycolor(Qa).format,w(Qa)):L(),U&&E();var d=q?"mousedown.spectrum":"click.spectrum touchstart.spectrum";Fa.delegate(".sp-thumb-el",d,a),Ga.delegate(".sp-thumb-el:nth-child(1)",d,{ignore:!0},a)}function v(){if(W&&a.localStorage){try{var c=a.localStorage[W].split(",#");c.length>1&&(delete a.localStorage[W],b.each(c,function(a,b){w(b)}))}catch(d){}try{oa=a.localStorage[W].split(";")}catch(d){}}}function w(c){if(V){var d=tinycolor(c).toRgbString();if(!na[d]&&-1===b.inArray(d,oa))for(oa.push(d);oa.length>pa;)oa.shift();if(W&&a.localStorage)try{a.localStorage[W]=oa.join(";")}catch(e){}}}function x(){var a=[];if(T.showPalette)for(i=0;i<oa.length;i++){var b=tinycolor(oa[i]).toRgbString();na[b]||a.push(oa[i])}return a.reverse().slice(0,T.maxSelectionSize)}function y(){var a=I(),c=b.map(ma,function(b,c){return d(b,a,"sp-palette-row sp-palette-row-"+c,T.preferredFormat)});v(),oa&&c.push(d(x(),a,"sp-palette-row sp-palette-row-selection",T.preferredFormat)),Fa.html(c.join(""))}function z(){if(T.showInitial){var a=Ra,b=I();Ga.html(d([a,b],b,"sp-palette-row-initial",T.preferredFormat))}}function A(){(0>=aa||0>=_||0>=ca)&&O(),wa.addClass(qa),sa=null,ua.trigger("dragstart.spectrum",[I()])}function B(){wa.removeClass(qa),ua.trigger("dragstop.spectrum",[I()])}function C(){var a=Ea.val();if(null!==a&&""!==a||!Wa){var b=tinycolor(a);b.ok?(H(b),N(!0)):Ea.addClass("sp-validation-error")}else H(null),N(!0)}function D(){$?F():E()}function E(){var c=b.Event("beforeShow.spectrum");return $?void O():(ua.trigger(c,[I()]),void(Y.beforeShow(I())===!1||c.isDefaultPrevented()||(e(),$=!0,b(ta).bind("click.spectrum",F),b(a).bind("resize.spectrum",Z),Na.addClass("sp-active"),wa.removeClass("sp-hidden"),O(),L(),Ra=I(),z(),Y.show(Ra),ua.trigger("show.spectrum",[Ra]))))}function F(c){if((!c||"click"!=c.type||2!=c.button)&&$&&!U){$=!1,b(ta).unbind("click.spectrum",F),b(a).unbind("resize.spectrum",Z),Na.removeClass("sp-active"),wa.addClass("sp-hidden");var d=!tinycolor.equals(I(),Ra);d&&(Ua&&"cancel"!==c?N(!0):G()),Y.hide(I()),ua.trigger("hide.spectrum",[I()])}}function G(){H(Ra,!0)}function H(a,b){if(tinycolor.equals(a,I()))return void L();var c,d;!a&&Wa?Va=!0:(Va=!1,c=tinycolor(a),d=c.toHsv(),ha=d.h%360/360,ia=d.s,ja=d.v,ka=d.a),L(),c&&c.ok&&!b&&(Ta=Sa||c.format)}function I(a){return a=a||{},Wa&&Va?null:tinycolor.fromRatio({h:ha,s:ia,v:ja,a:Math.round(100*ka)/100},{format:a.format||Ta})}function J(){return!Ea.hasClass("sp-validation-error")}function K(){L(),Y.move(I()),ua.trigger("move.spectrum",[I()])}function L(){Ea.removeClass("sp-validation-error"),M();var a=tinycolor.fromRatio({h:ha,s:1,v:1});xa.css("background-color",a.toHexString());var b=Ta;1>ka&&(0!==ka||"name"!==b)&&("hex"===b||"hex3"===b||"hex6"===b||"name"===b)&&(b="rgb");var c=I({format:b}),d="";if(Pa.removeClass("sp-clear-display"),Pa.css("background-color","transparent"),!c&&Wa)Pa.addClass("sp-clear-display");else{var e=c.toHexString(),f=c.toRgbString();if(r||1===c.alpha?Pa.css("background-color",f):(Pa.css("background-color","transparent"),Pa.css("filter",c.toFilter())),T.showAlpha){var g=c.toRgb();g.a=0;var h=tinycolor(g).toRgbString(),i="linear-gradient(left, "+h+", "+e+")";q?Ba.css("filter",tinycolor(h).toFilter({gradientType:1},e)):(Ba.css("background","-webkit-"+i),Ba.css("background","-moz-"+i),Ba.css("background","-ms-"+i),Ba.css("background","linear-gradient(to right, "+h+", "+e+")"))}d=c.toString(b)}T.showInput&&Ea.val(d),T.showPalette&&y(),z()}function M(){var a=ia,b=ja;if(Wa&&Va)Da.hide(),Aa.hide(),ya.hide();else{Da.show(),Aa.show(),ya.show();var c=a*_,d=aa-b*aa;c=Math.max(-ba,Math.min(_-ba,c-ba)),d=Math.max(-ba,Math.min(aa-ba,d-ba)),ya.css({top:d+"px",left:c+"px"});var e=ka*ea;Da.css({left:e-fa/2+"px"});var f=ha*ca;Aa.css({top:f-ga+"px"})}}function N(a){var b=I(),c="",d=!tinycolor.equals(b,Ra);b&&(c=b.toString(Ta),w(b)),Ka&&ua.val(c),Ra=b,a&&d&&(Y.change(b),ua.trigger("change",[b]))}function O(){_=xa.width(),aa=xa.height(),ba=ya.height(),da=za.width(),ca=za.height(),ga=Aa.height(),ea=Ca.width(),fa=Da.width(),U||(wa.css("position","absolute"),wa.offset(h(wa,Oa))),M(),T.showPalette&&y(),ua.trigger("reflow.spectrum")}function P(){ua.show(),Oa.unbind("click.spectrum touchstart.spectrum"),wa.remove(),Na.remove(),p[Ya.id]=null}function Q(a,d){return a===c?b.extend({},T):d===c?T[a]:(T[a]=d,void l())}function R(){va=!1,ua.attr("disabled",!1),Oa.removeClass("sp-disabled")}function S(){F(),va=!0,ua.attr("disabled",!0),Oa.addClass("sp-disabled")}var T=f(j,g),U=T.flat,V=T.showSelectionPalette,W=T.localStorageKey,X=T.theme,Y=T.callbacks,Z=n(O,10),$=!1,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=1,la=[],ma=[],na={},oa=T.selectionPalette.slice(0),pa=T.maxSelectionSize,qa="sp-dragging",ra=T.inputText,sa=null,ta=g.ownerDocument,ua=(ta.body,b(g)),va=!1,wa=b(u,ta).addClass(X),xa=wa.find(".sp-color"),ya=wa.find(".sp-dragger"),za=wa.find(".sp-hue"),Aa=wa.find(".sp-slider"),Ba=wa.find(".sp-alpha-inner"),Ca=wa.find(".sp-alpha"),Da=wa.find(".sp-alpha-handle"),Ea=wa.find(".sp-input"),Fa=wa.find(".sp-palette"),Ga=wa.find(".sp-initial"),Ha=wa.find(".sp-cancel"),Ia=wa.find(".sp-clear"),Ja=wa.find(".sp-choose"),Ka=ua.is("input"),La=Ka&&s&&"color"===ua.attr("type"),Ma=Ka&&!U,Na=Ma?b(t).addClass(X).addClass(T.className).addClass(T.replacerClassName):b([]),Oa=Ma?Na:ua,Pa=Na.find(".sp-preview-inner"),Qa=T.color||Ka&&ua.val(),Ra=!1,Sa=T.preferredFormat,Ta=Sa,Ua=!T.showButtons||T.clickoutFiresChange,Va=!Qa,Wa=T.allowEmpty&&!La;if(""!==ra){var Xa=b(Oa).find("div.sp-dd");Xa.text(ra)}o();var Ya={show:E,hide:F,toggle:D,reflow:O,option:Q,enable:R,disable:S,set:function(a){H(a),N()},get:I,destroy:P,container:wa};return Ya.id=p.push(Ya)-1,Ya}function h(a,c){var d=0,e=a.outerWidth(),f=a.outerHeight(),g=c.outerHeight(),h=a[0].ownerDocument,i=h.documentElement,j=i.clientWidth+b(h).scrollLeft(),k=i.clientHeight+b(h).scrollTop(),l=c.offset();return l.top+=g,l.left-=Math.min(l.left,l.left+e>j&&j>e?Math.abs(l.left+e-j):0),l.top-=Math.min(l.top,l.top+f>k&&k>f?Math.abs(f+g-d):d),l}function j(){}function k(a){a.stopPropagation()}function l(a,b){var c=Array.prototype.slice,d=c.call(arguments,2);return function(){return a.apply(b,d.concat(c.call(arguments)))}}function m(c,d,e,f){function g(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.returnValue=!1}function h(a){if(l){if(q&&document.documentMode<9&&!a.button)return j();var b=a.originalEvent.touches,e=b?b[0].pageX:a.pageX,f=b?b[0].pageY:a.pageY,h=Math.max(0,Math.min(e-m.left,o)),i=Math.max(0,Math.min(f-m.top,n));p&&g(a),d.apply(c,[h,i,a])}}function i(a){var d=a.which?3==a.which:2==a.button;a.originalEvent.touches;d||l||e.apply(c,arguments)!==!1&&(l=!0,n=b(c).height(),o=b(c).width(),m=b(c).offset(),b(k).bind(r),b(k.body).addClass("sp-dragging"),p||h(a),g(a))}function j(){l&&(b(k).unbind(r),b(k.body).removeClass("sp-dragging"),f.apply(c,arguments)),l=!1}d=d||function(){},e=e||function(){},f=f||function(){};var k=c.ownerDocument||document,l=!1,m={},n=0,o=0,p="ontouchstart"in a,r={};r.selectstart=g,r.dragstart=g,r["touchmove mousemove"]=h,r["touchend mouseup"]=j,b(c).bind("touchstart mousedown",i)}function n(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,a.apply(e,f)};c&&clearTimeout(d),(c||!d)&&(d=setTimeout(g,b))}}var o={beforeShow:j,move:j,change:j,show:j,hide:j,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!1,showInitial:!1,showPalette:!1,showPaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",clearText:"Clear Color Selection",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,inputText:""},p=[],q=!!/msie/i.exec(a.navigator.userAgent),r=function(){function a(a,b){return!!~(""+a).indexOf(b)}var b=document.createElement("div"),c=b.style;return c.cssText="background-color:rgba(0,0,0,.5)",a(c.backgroundColor,"rgba")||a(c.backgroundColor,"hsla")}(),s=function(){var a=b("<input type='color' value='#ffffff' />")[0];return"color"===a.type&&"#ffffff"!==a.value}(),t=["<div class='sp-replacer'>","<div class='sp-preview'><div class='sp-preview-inner'></div></div>","<div class='sp-dd'>&#9660;</div>","</div>"].join(""),u=function(){var a="";if(q)for(var b=1;6>=b;b++)a+="<div class='sp-"+b+"'></div>";return["<div class='sp-container sp-hidden'>","<div class='sp-palette-container'>","<div class='sp-palette sp-thumb sp-cf'></div>","</div>","<div class='sp-picker-container'>","<div class='sp-top sp-cf'>","<div class='sp-fill'></div>","<div class='sp-top-inner'>","<div class='sp-color'>","<div class='sp-sat'>","<div class='sp-val'>","<div class='sp-dragger'></div>","</div>","</div>","</div>","<div class='sp-clear sp-clear-display'>","</div>","<div class='sp-hue'>","<div class='sp-slider'></div>",a,"</div>","</div>","<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>","</div>","<div class='sp-input-container sp-cf'>","<input class='sp-input' type='text' spellcheck='false' />","</div>","<div class='sp-initial sp-thumb sp-cf'></div>","<div class='sp-button-container sp-cf'>","<a class='sp-cancel' href='#'></a>","<button type='button' class='sp-choose'></button>","</div>","</div>","</div>"].join("")}(),v="spectrum.id";b.fn.spectrum=function(a,c){if("string"==typeof a){var d=this,e=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=p[b(this).data(v)];if(c){var f=c[a];if(!f)throw new Error("Spectrum: no such method: '"+a+"'");"get"==a?d=c.get():"container"==a?d=c.container:"option"==a?d=c.option.apply(c,e):"destroy"==a?(c.destroy(),b(this).removeData(v)):f.apply(c,e)}}),d}return this.spectrum("destroy").each(function(){var c=b.extend({},a,b(this).data()),d=g(this,c);b(this).data(v,d.id)})},b.fn.spectrum.load=!0,b.fn.spectrum.loadOpts={},b.fn.spectrum.draggable=m,b.fn.spectrum.defaults=o,b.spectrum={},b.spectrum.localization={},b.spectrum.palettes={},b.fn.spectrum.processNativeColorInputs=function(){s||b("input[type=color]").spectrum({preferredFormat:"hex6"})},function(){function b(a,d){if(a=a?a:"",d=d||{},"object"==typeof a&&a.hasOwnProperty("_tc_id"))return a;var f=c(a),h=f.r,k=f.g,n=f.b,o=f.a,p=A(100*o)/100,q=d.format||f.format;return 1>h&&(h=A(h)),1>k&&(k=A(k)),1>n&&(n=A(n)),{ok:f.ok,format:q,_tc_id:y++,alpha:o,getAlpha:function(){return o},setAlpha:function(a){o=l(a),p=A(100*o)/100},toHsv:function(){var a=g(h,k,n);return{h:360*a.h,s:a.s,v:a.v,a:o}},toHsvString:function(){var a=g(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.v);return 1==o?"hsv("+b+", "+c+"%, "+d+"%)":"hsva("+b+", "+c+"%, "+d+"%, "+p+")"},toHsl:function(){var a=e(h,k,n);return{h:360*a.h,s:a.s,l:a.l,a:o}},toHslString:function(){var a=e(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.l);return 1==o?"hsl("+b+", "+c+"%, "+d+"%)":"hsla("+b+", "+c+"%, "+d+"%, "+p+")"},toHex:function(a){return i(h,k,n,a)},toHexString:function(a){return"#"+this.toHex(a)},toHex8:function(){return j(h,k,n,o)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:A(h),g:A(k),b:A(n),a:o}},toRgbString:function(){return 1==o?"rgb("+A(h)+", "+A(k)+", "+A(n)+")":"rgba("+A(h)+", "+A(k)+", "+A(n)+", "+p+")"},toPercentageRgb:function(){return{r:A(100*m(h,255))+"%",g:A(100*m(k,255))+"%",b:A(100*m(n,255))+"%",a:o}},toPercentageRgbString:function(){return 1==o?"rgb("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%)":"rgba("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%, "+p+")"},toName:function(){return 0===o?"transparent":F[i(h,k,n,!0)]||!1},toFilter:function(a){var c="#"+j(h,k,n,o),e=c,f=d&&d.gradientType?"GradientType = 1, ":"";if(a){var g=b(a);e=g.toHex8String()}return"progid:DXImageTransform.Microsoft.gradient("+f+"startColorstr="+c+",endColorstr="+e+")"},toString:function(a){var b=!!a;a=a||this.format;var c=!1,d=!b&&1>o&&o>0,e=d&&("hex"===a||"hex6"===a||"hex3"===a||"name"===a);return"rgb"===a&&(c=this.toRgbString()),"prgb"===a&&(c=this.toPercentageRgbString()),("hex"===a||"hex6"===a)&&(c=this.toHexString()),"hex3"===a&&(c=this.toHexString(!0)),"hex8"===a&&(c=this.toHex8String()),"name"===a&&(c=this.toName()),"hsl"===a&&(c=this.toHslString()),"hsv"===a&&(c=this.toHsvString()),e?this.toRgbString():c||this.toHexString()}}}function c(a){var b={r:0,g:0,b:0},c=1,e=!1,g=!1;return"string"==typeof a&&(a=v(a)),"object"==typeof a&&(a.hasOwnProperty("r")&&a.hasOwnProperty("g")&&a.hasOwnProperty("b")?(b=d(a.r,a.g,a.b),e=!0,g="%"===String(a.r).substr(-1)?"prgb":"rgb"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("v")?(a.s=s(a.s),a.v=s(a.v),b=h(a.h,a.s,a.v),e=!0,g="hsv"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("l")&&(a.s=s(a.s),a.l=s(a.l),b=f(a.h,a.s,a.l),e=!0,g="hsl"),a.hasOwnProperty("a")&&(c=a.a)),c=l(c),{ok:e,format:a.format||g,r:B(255,C(b.r,0)),g:B(255,C(b.g,0)),b:B(255,C(b.b,0)),a:c}}function d(a,b,c){return{r:255*m(a,255),g:255*m(b,255),b:255*m(c,255)}}function e(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,l:h}}function f(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(a=m(a,360),b=m(b,100),c=m(c,100),0===b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return{r:255*e,g:255*f,b:255*g}}function g(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=f,i=f-g;if(e=0===f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,v:h}}function h(a,b,c){a=6*m(a,360),b=m(b,100),c=m(c,100);var d=z.floor(a),e=a-d,f=c*(1-b),g=c*(1-e*b),h=c*(1-(1-e)*b),i=d%6,j=[c,g,f,f,h,c][i],k=[h,c,c,g,f,f][i],l=[f,f,h,c,c,g][i];return{r:255*j,g:255*k,b:255*l}}function i(a,b,c,d){var e=[r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return d&&e[0].charAt(0)==e[0].charAt(1)&&e[1].charAt(0)==e[1].charAt(1)&&e[2].charAt(0)==e[2].charAt(1)?e[0].charAt(0)+e[1].charAt(0)+e[2].charAt(0):e.join("")}function j(a,b,c,d){var e=[r(t(d)),r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return e.join("")}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b}function l(a){return a=parseFloat(a),(isNaN(a)||0>a||a>1)&&(a=1),a}function m(a,b){p(a)&&(a="100%");var c=q(a);return a=B(b,C(0,parseFloat(a))),c&&(a=parseInt(a*b,10)/100),z.abs(a-b)<1e-6?1:a%b/parseFloat(b)}function n(a){return B(1,C(0,a))}function o(a){return parseInt(a,16)}function p(a){return"string"==typeof a&&-1!=a.indexOf(".")&&1===parseFloat(a)}function q(a){return"string"==typeof a&&-1!=a.indexOf("%")}function r(a){return 1==a.length?"0"+a:""+a}function s(a){return 1>=a&&(a=100*a+"%"),a}function t(a){return Math.round(255*parseFloat(a)).toString(16)}function u(a){return o(a)/255}function v(a){a=a.replace(w,"").replace(x,"").toLowerCase();var b=!1;if(E[a])a=E[a],b=!0;else if("transparent"==a)return{r:0,g:0,b:0,a:0,format:"name"};var c;return(c=G.rgb.exec(a))?{r:c[1],g:c[2],b:c[3]}:(c=G.rgba.exec(a))?{r:c[1],g:c[2],b:c[3],a:c[4]}:(c=G.hsl.exec(a))?{h:c[1],s:c[2],l:c[3]}:(c=G.hsla.exec(a))?{h:c[1],s:c[2],l:c[3],a:c[4]}:(c=G.hsv.exec(a))?{h:c[1],s:c[2],v:c[3]}:(c=G.hex8.exec(a))?{a:u(c[1]),r:o(c[2]),g:o(c[3]),b:o(c[4]),format:b?"name":"hex8"}:(c=G.hex6.exec(a))?{r:o(c[1]),g:o(c[2]),b:o(c[3]),format:b?"name":"hex"}:(c=G.hex3.exec(a))?{r:o(c[1]+""+c[1]),g:o(c[2]+""+c[2]),b:o(c[3]+""+c[3]),format:b?"name":"hex"}:!1}var w=/^[\s,#]+/,x=/\s+$/,y=0,z=Math,A=z.round,B=z.min,C=z.max,D=z.random;b.fromRatio=function(a,c){if("object"==typeof a){var d={};for(var e in a)a.hasOwnProperty(e)&&("a"===e?d[e]=a[e]:d[e]=s(a[e]));a=d}return b(a,c)},b.equals=function(a,c){return a&&c?b(a).toRgbString()==b(c).toRgbString():!1},b.random=function(){return b.fromRatio({r:D(),g:D(),b:D()})},b.desaturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s-=c/100,d.s=n(d.s),b(d)},b.saturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s+=c/100,d.s=n(d.s),b(d)},b.greyscale=function(a){return b.desaturate(a,100)},b.lighten=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l+=c/100,d.l=n(d.l),b(d)},b.darken=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l-=c/100,d.l=n(d.l),b(d)},b.complement=function(a){var c=b(a).toHsl();return c.h=(c.h+180)%360,b(c)},b.triad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+120)%360,s:c.s,l:c.l}),b({h:(d+240)%360,s:c.s,l:c.l})]},b.tetrad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+90)%360,s:c.s,l:c.l}),b({h:(d+180)%360,s:c.s,l:c.l}),b({h:(d+270)%360,s:c.s,l:c.l})]},b.splitcomplement=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+72)%360,s:c.s,l:c.l}),b({h:(d+216)%360,s:c.s,l:c.l})]},b.analogous=function(a,c,d){c=c||6,d=d||30;var e=b(a).toHsl(),f=360/d,g=[b(a)];for(e.h=(e.h-(f*c>>1)+720)%360;--c;)e.h=(e.h+f)%360,g.push(b(e));return g},b.monochromatic=function(a,c){c=c||6;for(var d=b(a).toHsv(),e=d.h,f=d.s,g=d.v,h=[],i=1/c;c--;)h.push(b({h:e,s:f,v:g})),g=(g+i)%1;return h},b.readability=function(a,c){var d=b(a).toRgb(),e=b(c).toRgb(),f=(299*d.r+587*d.g+114*d.b)/1e3,g=(299*e.r+587*e.g+114*e.b)/1e3,h=Math.max(d.r,e.r)-Math.min(d.r,e.r)+Math.max(d.g,e.g)-Math.min(d.g,e.g)+Math.max(d.b,e.b)-Math.min(d.b,e.b);return{brightness:Math.abs(f-g),color:h}},b.readable=function(a,c){var d=b.readability(a,c);return d.brightness>125&&d.color>500},b.mostReadable=function(a,c){for(var d=null,e=0,f=!1,g=0;g<c.length;g++){var h=b.readability(a,c[g]),i=h.brightness>125&&h.color>500,j=3*(h.brightness/125)+h.color/500;(i&&!f||i&&f&&j>e||!i&&!f&&j>e)&&(f=i,e=j,d=b(c[g]))}return d};var E=b.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},F=b.hexNames=k(E),G=function(){var a="[-\\+]?\\d+%?",b="[-\\+]?\\d*\\.\\d+%?",c="(?:"+b+")|(?:"+a+")",d="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?",e="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?";return{rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+e),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+e),hsv:new RegExp("hsv"+d),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();a.tinycolor=b}(),b(function(){b.fn.spectrum.load&&b.fn.spectrum.processNativeColorInputs()})}(window,jQuery);
ReduxCore/core/enqueue.php CHANGED
@@ -207,6 +207,15 @@
207
  //*****************************************************************
208
  // Select2 JS
209
  //*****************************************************************
 
 
 
 
 
 
 
 
 
210
  Redux_CDN::register_script(
211
  'select2-js',
212
  '//cdn.jsdelivr.net/select2/3.5.2/select2' . $this->min . '.js',
@@ -284,55 +293,59 @@
284
  );
285
  }
286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  private function enqueue_fields() {
288
  foreach ( $this->parent->sections as $section ) {
289
  if ( isset( $section['fields'] ) ) {
290
  foreach ( $section['fields'] as $field ) {
291
- // TODO AFTER GROUP WORKS - Revert IF below
292
- // if( isset( $field['type'] ) && $field['type'] != 'callback' ) {
293
- if ( isset( $field['type'] ) && $field['type'] != 'callback' ) {
294
-
295
- $field_class = 'ReduxFramework_' . $field['type'];
296
-
297
- /**
298
- * Field class file
299
- * filter 'redux/{opt_name}/field/class/{field.type}
300
- *
301
- * @param string field class file path
302
- * @param array $field field config data
303
- */
304
- $class_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/class/{$field['type']}", ReduxFramework::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field );
305
- if ( $class_file ) {
306
- if ( ! class_exists( $field_class ) ) {
307
- if ( file_exists( $class_file ) ) {
308
- require_once $class_file;
309
- }
310
- }
311
-
312
- if ( ( method_exists( $field_class, 'enqueue' ) ) || method_exists( $field_class, 'localize' ) ) {
313
-
314
- if ( ! isset( $this->parent->options[ $field['id'] ] ) ) {
315
- $this->parent->options[ $field['id'] ] = "";
316
- }
317
- $theField = new $field_class( $field, $this->parent->options[ $field['id'] ], $this->parent );
318
-
319
- // Move dev_mode check to a new if/then block
320
- if ( ! wp_script_is( 'redux-field-' . $field['type'] . '-js', 'enqueued' ) && class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) {
321
- $theField->enqueue();
322
- }
323
-
324
- if ( method_exists( $field_class, 'localize' ) ) {
325
- $params = $theField->localize( $field );
326
- if ( ! isset( $this->parent->localize_data[ $field['type'] ] ) ) {
327
- $this->parent->localize_data[ $field['type'] ] = array();
328
- }
329
- $this->parent->localize_data[ $field['type'] ][ $field['id'] ] = $theField->localize( $field );
330
- }
331
-
332
- unset( $theField );
333
- }
334
- }
335
- }
336
  }
337
  }
338
  }
207
  //*****************************************************************
208
  // Select2 JS
209
  //*****************************************************************
210
+
211
+ // JWp6 plugin giving us problems. They need to update.
212
+ if ( wp_script_is ( 'jquerySelect2' )) {
213
+ wp_deregister_script( 'jquerySelect2' );
214
+ wp_dequeue_script('jquerySelect2');
215
+ wp_dequeue_style('jquerySelect2Style');
216
+ }
217
+
218
+
219
  Redux_CDN::register_script(
220
  'select2-js',
221
  '//cdn.jsdelivr.net/select2/3.5.2/select2' . $this->min . '.js',
293
  );
294
  }
295
 
296
+ public function _enqueue_field($field) {
297
+ // TODO AFTER GROUP WORKS - Revert IF below
298
+ // if( isset( $field['type'] ) && $field['type'] != 'callback' ) {
299
+ if ( isset( $field['type'] ) && $field['type'] != 'callback' ) {
300
+
301
+ $field_class = 'ReduxFramework_' . $field['type'];
302
+
303
+ /**
304
+ * Field class file
305
+ * filter 'redux/{opt_name}/field/class/{field.type}
306
+ *
307
+ * @param string field class file path
308
+ * @param array $field field config data
309
+ */
310
+ $class_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/class/{$field['type']}", ReduxFramework::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field );
311
+ if ( $class_file ) {
312
+ if ( ! class_exists( $field_class ) ) {
313
+ if ( file_exists( $class_file ) ) {
314
+ require_once $class_file;
315
+ }
316
+ }
317
+
318
+ if ( ( method_exists( $field_class, 'enqueue' ) ) || method_exists( $field_class, 'localize' ) ) {
319
+
320
+ if ( ! isset( $this->parent->options[ $field['id'] ] ) ) {
321
+ $this->parent->options[ $field['id'] ] = "";
322
+ }
323
+ $theField = new $field_class( $field, $this->parent->options[ $field['id'] ], $this->parent );
324
+
325
+ // Move dev_mode check to a new if/then block
326
+ if ( ! wp_script_is( 'redux-field-' . $field['type'] . '-js', 'enqueued' ) && class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) {
327
+ $theField->enqueue();
328
+ }
329
+
330
+ if ( method_exists( $field_class, 'localize' ) ) {
331
+ $params = $theField->localize( $field );
332
+ if ( ! isset( $this->parent->localize_data[ $field['type'] ] ) ) {
333
+ $this->parent->localize_data[ $field['type'] ] = array();
334
+ }
335
+ $this->parent->localize_data[ $field['type'] ][ $field['id'] ] = $theField->localize( $field );
336
+ }
337
+
338
+ unset( $theField );
339
+ }
340
+ }
341
+ }
342
+ }
343
+
344
  private function enqueue_fields() {
345
  foreach ( $this->parent->sections as $section ) {
346
  if ( isset( $section['fields'] ) ) {
347
  foreach ( $section['fields'] as $field ) {
348
+ $this->_enqueue_field( $field );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  }
350
  }
351
  }
ReduxCore/framework.php CHANGED
@@ -66,8 +66,6 @@
66
  // Welcome
67
  require_once dirname( __FILE__ ) . '/inc/welcome/welcome.php';
68
 
69
- //require_once dirname( __FILE__ ) . '/inc/class.redux_sass.php';
70
-
71
  /**
72
  * Main ReduxFramework class
73
  *
@@ -79,7 +77,7 @@
79
  // Please update the build number with each push, no matter how small.
80
  // This will make for easier support when we ask users what version they are using.
81
 
82
- public static $_version = '3.5.5';
83
  public static $_dir;
84
  public static $_url;
85
  public static $_upload_dir;
@@ -339,7 +337,7 @@
339
  $this->get_options();
340
 
341
  // Tracking
342
- if ( true != Redux_Helpers::isTheme( __FILE__ ) || true == Redux_Helpers::isTheme( __FILE__ ) ) {
343
  $this->_tracking();
344
  }
345
 
@@ -446,9 +444,6 @@
446
  $upload_dir = wp_upload_dir();
447
  self::$_upload_dir = $upload_dir['basedir'] . '/redux/';
448
  self::$_upload_url = $upload_dir['baseurl'] . '/redux/';
449
- if ( ! is_dir( self::$_upload_dir ) && $this->args['save_defaults'] === true ) {
450
- $this->filesystem->execute( 'mkdir', self::$_upload_dir );
451
- }
452
  }
453
 
454
  private function set_default_args() {
@@ -1284,6 +1279,18 @@
1284
  $this->args['admin_bar'] = false;
1285
  $this->args['allow_sub_menu'] = false;
1286
  }
 
 
 
 
 
 
 
 
 
 
 
 
1287
  }
1288
 
1289
  /**
@@ -1653,7 +1660,7 @@
1653
  s.parentNode.insertBefore( wf, s );
1654
  })();
1655
  </script>
1656
- <?php
1657
  } elseif ( ! $this->args['disable_google_fonts_link'] ) {
1658
  $protocol = ( ! empty ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:";
1659
 
@@ -1677,23 +1684,6 @@
1677
  require_once 'core/enqueue.php';
1678
  $enqueue = new reduxCoreEnqueue ( $this );
1679
  $enqueue->init();
1680
-
1681
-
1682
- // if ($this->args['sass']['enabled']) {
1683
- // $ret = reduxSassCompiler::compile_sass($this);
1684
- //
1685
- // if ($ret == reduxSassCompiler::SASS_FILE_COMPILE || $ret == reduxSassCompiler::SASS_NO_COMPILE) {
1686
- // if (file_exists(ReduxFramework::$_upload_dir . $this->args['opt_name'] . '-redux.css')) {
1687
- // wp_enqueue_style(
1688
- // 'redux-fields-css',
1689
- // ReduxFramework::$_upload_url . $this->args['opt_name'] . '-redux.css',
1690
- // array(),
1691
- // $timestamp,
1692
- // 'all'
1693
- // );
1694
- // }
1695
- // }
1696
- // }
1697
  }
1698
  // _enqueue()
1699
 
@@ -1936,7 +1926,7 @@
1936
  $hint_color = isset ( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3';
1937
 
1938
  // Set hint html with appropriate position css
1939
- $hint = '<div class="redux-hint-qtip" style="float:' . $this->args['hints']['icon_position'] . '; font-size: ' . $size . '; color:' . $hint_color . '; cursor: ' . $pointer . ';" qtip-title="' . $titleParam . '" qtip-content="' . $contentParam . '"><i class="' . ( isset( $this->args['hints']['icon'] ) ? $this->args['hints']['icon'] : '' ) . '"></i>&nbsp&nbsp</div>';
1940
  }
1941
  }
1942
 
@@ -2928,7 +2918,7 @@
2928
 
2929
  // Make sure 'validate field' is set to 'not_empty' or 'email_not_empty'
2930
  //if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) {
2931
- if (strtolower (substr( $field['validate'], -9) ) == 'not_empty'){
2932
 
2933
  // Set the flag.
2934
  $isNotEmpty = true;
@@ -3094,7 +3084,7 @@
3094
  }
3095
 
3096
  $string = "";
3097
- if ( ( isset ( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset ( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) {
3098
  //if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
3099
  $icon = ( ! isset ( $section['icon'] ) ) ? '' : '<img class="image_icon_type" src="' . $section['icon'] . '" /> ';
3100
  } else {
66
  // Welcome
67
  require_once dirname( __FILE__ ) . '/inc/welcome/welcome.php';
68
 
 
 
69
  /**
70
  * Main ReduxFramework class
71
  *
77
  // Please update the build number with each push, no matter how small.
78
  // This will make for easier support when we ask users what version they are using.
79
 
80
+ public static $_version = '3.5.6';
81
  public static $_dir;
82
  public static $_url;
83
  public static $_upload_dir;
337
  $this->get_options();
338
 
339
  // Tracking
340
+ if ( isset( $this->args['allow_tracking'] ) && $this->args['allow_tracking'] && Redux_Helpers::isTheme( __FILE__ ) ) {
341
  $this->_tracking();
342
  }
343
 
444
  $upload_dir = wp_upload_dir();
445
  self::$_upload_dir = $upload_dir['basedir'] . '/redux/';
446
  self::$_upload_url = $upload_dir['baseurl'] . '/redux/';
 
 
 
447
  }
448
 
449
  private function set_default_args() {
1279
  $this->args['admin_bar'] = false;
1280
  $this->args['allow_sub_menu'] = false;
1281
  }
1282
+
1283
+ // Check if the Airplane Mode plugin is installed
1284
+ if ( class_exists( 'Airplane_Mode_Core' ) ) {
1285
+ $airplane = Airplane_Mode_Core::getInstance();
1286
+ if ( method_exists( $airplane, 'enabled' ) ) {
1287
+ if ( $airplane->enabled() ) {
1288
+ $this->args['use_cdn'] = false;
1289
+ }
1290
+ } else if ( $airplane->check_status() == 'on' ) {
1291
+ $this->args['use_cdn'] = false;
1292
+ }
1293
+ }
1294
  }
1295
 
1296
  /**
1660
  s.parentNode.insertBefore( wf, s );
1661
  })();
1662
  </script>
1663
+ <?php
1664
  } elseif ( ! $this->args['disable_google_fonts_link'] ) {
1665
  $protocol = ( ! empty ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:";
1666
 
1684
  require_once 'core/enqueue.php';
1685
  $enqueue = new reduxCoreEnqueue ( $this );
1686
  $enqueue->init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1687
  }
1688
  // _enqueue()
1689
 
1926
  $hint_color = isset ( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3';
1927
 
1928
  // Set hint html with appropriate position css
1929
+ $hint = '<div class="redux-hint-qtip" style="float:' . $this->args['hints']['icon_position'] . '; font-size: ' . $size . '; color:' . $hint_color . '; cursor: ' . $pointer . ';" qtip-title="' . $titleParam . '" qtip-content="' . $contentParam . '">&nbsp;<i class="' . ( isset( $this->args['hints']['icon'] ) ? $this->args['hints']['icon'] : '' ) . '"></i></div>';
1930
  }
1931
  }
1932
 
2918
 
2919
  // Make sure 'validate field' is set to 'not_empty' or 'email_not_empty'
2920
  //if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) {
2921
+ if ( strtolower( substr( $field['validate'], - 9 ) ) == 'not_empty' ) {
2922
 
2923
  // Set the flag.
2924
  $isNotEmpty = true;
3084
  }
3085
 
3086
  $string = "";
3087
+ if ( ( ( isset ( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset ( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) || ( strpos( $section['icon'], '/' ) !== false ) ) {
3088
  //if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
3089
  $icon = ( ! isset ( $section['icon'] ) ) ? '' : '<img class="image_icon_type" src="' . $section['icon'] . '" /> ';
3090
  } else {
ReduxCore/inc/class.p.php CHANGED
@@ -244,13 +244,13 @@
244
  $status = array( 'http_code' => 'ERROR' );
245
  }
246
 
247
- if ( isset( $response['headers']['content-type'] ) ) {
248
  header( 'Content-Type: ' . $response['headers']['content-type'] );
249
  }
250
- if ( isset( $response['headers']['content-language'] ) ) {
251
  header( 'Content-Language: ' . $response['headers']['content-language'] );
252
  }
253
- if ( isset( $response['headers']['set-cookie'] ) ) {
254
  header( 'Set-Cookie: ' . $response['headers']['set-cookie'] );
255
  }
256
 
244
  $status = array( 'http_code' => 'ERROR' );
245
  }
246
 
247
+ if ( ! is_wp_error( $response ) && isset( $response['headers']['content-type'] ) ) {
248
  header( 'Content-Type: ' . $response['headers']['content-type'] );
249
  }
250
+ if ( ! is_wp_error( $response ) && isset( $response['headers']['content-language'] ) ) {
251
  header( 'Content-Language: ' . $response['headers']['content-language'] );
252
  }
253
+ if ( ! is_wp_error( $response ) && isset( $response['headers']['set-cookie'] ) ) {
254
  header( 'Set-Cookie: ' . $response['headers']['set-cookie'] );
255
  }
256
 
ReduxCore/inc/class.redux_api.php CHANGED
@@ -157,7 +157,7 @@
157
  $section['fields'] = self::constructFields( $opt_name, $section_id );
158
  $p = $section['priority'];
159
  while ( isset( $sections[ $p ] ) ) {
160
- echo $p ++;
161
  }
162
  $sections[ $p ] = $section;
163
  }
@@ -369,7 +369,7 @@
369
  unset( self::$fields[ $opt_name ][ $id ] );
370
  continue;
371
  }
372
- if ( $priority != "" ) {
373
  $newPriority = $field['priority'];
374
  $field['priority'] = $priority;
375
  self::$fields[ $opt_name ][ $key ] = $field;
157
  $section['fields'] = self::constructFields( $opt_name, $section_id );
158
  $p = $section['priority'];
159
  while ( isset( $sections[ $p ] ) ) {
160
+ $p++;
161
  }
162
  $sections[ $p ] = $section;
163
  }
369
  unset( self::$fields[ $opt_name ][ $id ] );
370
  continue;
371
  }
372
+ if ( isset( $priority ) && $priority != "" ) {
373
  $newPriority = $field['priority'];
374
  $field['priority'] = $priority;
375
  self::$fields[ $opt_name ][ $key ] = $field;
ReduxCore/inc/class.redux_filesystem.php CHANGED
@@ -119,6 +119,10 @@
119
  extract( $params );
120
  }
121
 
 
 
 
 
122
  // Setup the filesystem with creds
123
  require_once ABSPATH . '/wp-admin/includes/template.php';
124
  require_once ABSPATH . '/wp-admin/includes/file.php';
119
  extract( $params );
120
  }
121
 
122
+ if ( ! is_dir( ReduxFramework::$_upload_dir ) ) {
123
+ wp_mkdir_p( ReduxFramework::$_upload_dir );
124
+ }
125
+
126
  // Setup the filesystem with creds
127
  require_once ABSPATH . '/wp-admin/includes/template.php';
128
  require_once ABSPATH . '/wp-admin/includes/file.php';
ReduxCore/inc/class.redux_sass.php DELETED
@@ -1,265 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit;
5
- }
6
-
7
- if ( ! class_exists( 'reduxSassCompiler' ) ) {
8
- class reduxSassCompiler {
9
- public static $path = array();
10
- public static $import = array();
11
- public static $_do_compile = false;
12
- public static $parent;
13
-
14
- private static $matrix_file = '';
15
- private static $matrix_key = '';
16
-
17
- const SASS_NO_COMPILE = 0;
18
- const SASS_FILE_COMPILE = 1;
19
- const SASS_PAGE_OUTPUT = 2;
20
-
21
- private static function is_sass_dir( $dir ) {
22
- if ( ! is_dir( $dir ) ) {
23
- wp_mkdir_p( $dir );
24
-
25
- if ( is_dir( $dir ) ) {
26
- return true;
27
- } else {
28
- return false;
29
- }
30
- } else {
31
- return true;
32
- }
33
- }
34
-
35
- public static function get_current_id_matrix( $parent ) {
36
- self::$parent = $parent;
37
- if ( $parent->args['sass']['enabled'] && ! $parent->args['sass']['page_output'] ) {
38
- $ids = '';
39
-
40
- foreach ( $parent->options as $id => $opts ) {
41
- $ids .= $id . '|';
42
- }
43
-
44
- $ids = rtrim( $ids, '|' );
45
-
46
- return $ids;
47
- }
48
- }
49
-
50
- public static function get_id_matrix() {
51
- if ( ! file_exists( self::$matrix_file ) ) {
52
- $ids = get_option( self::$matrix_key );
53
- } else {
54
- $ids = self::$parent->filesystem->execute( 'get_contents', self::$matrix_file );
55
- }
56
-
57
- return $ids;
58
- }
59
-
60
- public static function set_id_matrix( $ids ) {
61
- $ret = self::$parent->filesystem->execute( 'put_contents', self::$matrix_file, array( 'content' => $ids ) );
62
-
63
- if ( $ret == false ) {
64
- return update_option( self::$matrix_key, $ids );
65
- }
66
- }
67
-
68
- public static function add_path( $path ) {
69
- if ( ! in_array( $path, self::$path ) ) {
70
- array_push( self::$path, $path );
71
- }
72
- }
73
-
74
- public static function add_import( $import ) {
75
- if ( ! in_array( $import, self::$import ) ) {
76
- array_push( self::$import, $import );
77
- }
78
- }
79
-
80
- public static function is_scss_newer( $dir, $filename ) {
81
- $css_time = filemtime( $dir . '/' . $filename . '.css' );
82
- $scss_time = filemtime( $dir . '/' . $filename . '.scss' );
83
-
84
- if ( $scss_time > $css_time ) {
85
- echo 'css: ' . $css_time . '<br>';
86
- echo 'scss: ' . $scss_time . '<br>';
87
-
88
- return true;
89
- }
90
-
91
- return false;
92
- }
93
-
94
- public static function compile_sass( $parent ) {
95
- if ( ! empty( self::$path ) ) {
96
- self::$parent = $parent;
97
- $do_compile = false;
98
- $as_output = false;
99
-
100
- if ( ! self::is_sass_dir( ReduxFramework::$_upload_dir . 'sass' ) ) {
101
- $as_output = true;
102
- }
103
-
104
- if ( $parent->args['sass']['page_output'] ) {
105
- $as_output = true;
106
- }
107
-
108
- $mb = $parent->extensions['metaboxes'];
109
- if ( ! empty( $mb->boxes ) ) {
110
- $as_output = true;
111
- }
112
-
113
- $opt_name = $parent->args['opt_name'];
114
-
115
- self::$matrix_file = ReduxFramework::$_upload_dir . 'sass/' . $opt_name . '-id-matrix';
116
- self::$matrix_key = 'redux-sass-' . $opt_name . '-id-matrix';
117
-
118
- if ( ! $as_output ) {
119
- $current_ids = self::get_current_id_matrix( $parent );
120
- $saved_ids = self::get_id_matrix();
121
-
122
- if ( $saved_ids == '' || empty( $saved_ids ) ) {
123
- $ret = self::set_id_matrix( $current_ids );
124
- $do_compile = true;
125
- } else {
126
- if ( $current_ids != $saved_ids ) {
127
- logconsole( 'not the same' );
128
- self::set_id_matrix( $current_ids );
129
- $do_compile = true;
130
- } else {
131
- logconsole( 'the same' );
132
- }
133
- }
134
- } else {
135
- $do_compile = true;
136
- }
137
-
138
- if ( $do_compile || self::$_do_compile ) {
139
- logconsole( 'compiler run' );
140
- if ( ! class_exists( 'scssc' ) && ! isset( $GLOBALS['redux_scss_compiler'] ) ) {
141
- $GLOBALS['redux_scss_compiler'] = true;
142
- require_once "scssphp/scss.inc.php";
143
- }
144
-
145
- $scss = new scssc();
146
- $scss::$parent = self::$parent;
147
-
148
- $scss->setImportPaths( self::$path );
149
-
150
- if ( ! $parent->args['dev_mode'] ) {
151
- $scss->setFormatter( "scss_formatter_compressed" );
152
- }
153
-
154
- $new_css = '';
155
-
156
- foreach ( self::$import as $import ) {
157
- $new_css .= $scss->compile( $import );
158
- }
159
-
160
- unset ( $scss );
161
-
162
- if ( $new_css != '' ) {
163
- if ( $as_output ) {
164
- self::css_to_page( $opt_name, $new_css );
165
-
166
- return self::SASS_PAGE_OUTPUT;
167
- } else {
168
- $css_file = Redux_Helpers::cleanFilePath( ReduxFramework::$_upload_dir . $parent->args['opt_name'] . '-redux.css' );
169
-
170
-
171
- $ret = self::$parent->filesystem->execute( 'put_contents', $css_file, array( 'content' => $new_css ) );
172
-
173
- if ( $ret == false ) {
174
- self::css_to_page( $opt_name, $new_css );
175
-
176
- return self::SASS_PAGE_OUTPUT;
177
- }
178
-
179
- return self::SASS_FILE_COMPILE;
180
- }
181
- }
182
- } // do_compile
183
- }
184
-
185
- return self::SASS_NO_COMPILE;
186
- }
187
-
188
- private static function css_to_page( $opt_name, $css ) {
189
- echo '<style type="text/css" id="redux-' . esc_attr( $opt_name ) . '">' . wp_kses( $css, array(), array() ) . '</style>';
190
- }
191
-
192
- public static function compile_single_field( $parent, $scss_path, $filename ) {
193
- self::$parent = $parent;
194
- echo 'single field compile: ' . $scss_path . ' ' . $filename;
195
-
196
- if ( ! class_exists( 'scssc' ) && ! isset( $GLOBALS['redux_scss_compiler'] ) ) {
197
- $GLOBALS['redux_scss_compiler'] = true;
198
- require_once "scssphp/scss.inc.php";
199
- }
200
-
201
- $scss = new scssc();
202
-
203
- $scss->setImportPaths( $scss_path );
204
-
205
- if ( ! $parent->args['dev_mode'] ) {
206
- $scss->setFormatter( "scss_formatter_compressed" );
207
- }
208
-
209
- $new_css = $scss->compile( '@import "' . $filename . '.scss"' );
210
-
211
- unset ( $scss );
212
-
213
- self::$parent->filesystem->execute( 'put_contents', $scss_path . '/' . $filename . '.css', array( 'content' => $new_css ) );
214
- }
215
- }
216
- }
217
-
218
- if ( ! function_exists( 'redux_enqueue_style' ) ) {
219
- /**
220
- * Enqueues style for SASS comnpile or WP enqueue, depending on 'use_sass' arg.
221
- *
222
- * @since 3.3.9
223
- * @access public
224
- *
225
- * @param string $handle Name of the stylesheet.
226
- * @param string $css_src Path to the stylesheet from the root directory of WordPress. Example: '/css/mystyle.css'.
227
- * @param string $scss_dir Directory path to SCSS file.
228
- * @param array $deps An array of registered style handles this stylesheet depends on. Default empty array.
229
- * @param string $ver String specifying the stylesheet version number, if it has one. This parameter is used to ensure that the correct version is sent to the client regardless of caching, and so should be included if a version number is available and makes sense for the stylesheet.
230
- * @param string $media Optional. The media for which this stylesheet has been defined. Default 'all'. Accepts 'all', 'aural', 'braille', 'handheld', 'projection', 'print', 'screen', 'tty', or 'tv'.
231
- *
232
- * @return void
233
- */
234
- function redux_enqueue_style( $parent, $handle, $css_src, $scss_dir, $deps = array(), $ver = '', $media = false ) {
235
- if ( $parent->args['sass']['enabled'] ) {
236
- self::$parent = $parent;
237
- //if ($parent->args['dev_mode'] || $parent->args['sass']['page_output']) {
238
- $path_parts = pathinfo( $css_src );
239
-
240
- $filename = $path_parts['filename'];
241
- //echo $filename . '<br>';
242
- $scss_dir = Redux_Helpers::cleanFilePath( $scss_dir );
243
- $scss_dir = untrailingslashit( $scss_dir );
244
-
245
- $is_diff = reduxSassCompiler::is_scss_newer( $scss_dir, $filename );
246
-
247
- if ( $is_diff ) {
248
- reduxSassCompiler::compile_single_field( $parent, $scss_dir, $filename );
249
- reduxSassCompiler::$_do_compile = true;
250
- }
251
-
252
- reduxSassCompiler::add_path( $scss_dir );
253
- reduxSassCompiler::add_import( '@import "' . $filename . '.scss"' );
254
- //}
255
- } else {
256
- wp_enqueue_style(
257
- $handle,
258
- $css_src,
259
- $deps,
260
- $ver,
261
- $media
262
- );
263
- }
264
- }
265
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ReduxCore/inc/extensions/customizer/extension_customizer.css ADDED
@@ -0,0 +1 @@
 
1
+ .redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.redux-section p.customize-section-description.legacy{margin-top:7px}.control-section-themes .accordion-section-title{margin:0}#customize-controls .customize-info{margin-bottom:0}#customize-controls .redux-section .accordion-section-content{background:#FCFCFC}.redux-section .accordion-section-title i,.redux-field .accordion-field-title i,.redux-panel .accordion-section-title i{margin-right:5px}.accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.redux_field_th{padding:13px 0px 0px 0px}.redux-main .redux-field-container{padding:10px 0}.redux-main .select_wrapper{float:none;width:100%;display:inline-block}.redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.redux-main .select_wrapper:nth-child(odd){margin-right:0}.redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.redux-main .upload{width:100% !important}.redux-main h3{margin-top:inherit}.redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.redux-main .redux-container-password input{width:100%}.select2-drop{z-index:999999}.rAdsContainer{line-height:0;border:0}.rAds{position:inherit !important;right:0 !important;top:0 !important;bottom:0 !important;left:0 !important;text-align:center;margin-bottom:0;line-height:0;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.rAds img{-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.admin-color-fresh #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#0073aa}.admin-color-fresh #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-fresh #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-fresh #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-fresh #customize-theme-controls .redux-section .customize-section-back:hover{background:#0073aa;color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#a3b745}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-ectoplasm #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-ectoplasm #customize-theme-controls .redux-section .customize-section-back:hover{background:#a3b745;color:#fff}.admin-color-light #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-light #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#888}.admin-color-light #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-light #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-light #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-light #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-light #customize-theme-controls .redux-section .customize-section-back:hover{background:#888;color:#fff}.admin-color-blue #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-blue #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#096484}.admin-color-blue #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-blue #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-blue #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-blue #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-blue #customize-theme-controls .redux-section .customize-section-back:hover{background:#096484;color:#fff}.admin-color-coffee #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#c7a589}.admin-color-coffee #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-coffee #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-coffee #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-coffee #customize-theme-controls .redux-section .customize-section-back:hover{background:#c7a589;color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#523f6d}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-ectoplasm #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-ectoplasm #customize-theme-controls .redux-section .customize-section-back:hover{background:#523f6d;color:#fff}.admin-color-midnight #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#e14d43}.admin-color-midnight #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-midnight #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-midnight #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-midnight #customize-theme-controls .redux-section .customize-section-back:hover{background:#e14d43;color:#fff}.admin-color-ocean #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#9ebaa0}.admin-color-ocean #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-ocean #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-ocean #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-ocean #customize-theme-controls .redux-section .customize-section-back:hover{background:#9ebaa0;color:#fff}.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#cf4944}.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-sunrise #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-sunrise #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-sunrise #customize-theme-controls .redux-section .customize-section-back:hover{background:#cf4944;color:#fff}
ReduxCore/inc/extensions/customizer/extension_customizer.js ADDED
@@ -0,0 +1,361 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global redux, setting */
2
+
3
+ /*!
4
+ SerializeJSON jQuery plugin.
5
+ https://github.com/marioizquierdo/jquery.serializeJSON
6
+ version 2.6.0 (Apr, 2015)
7
+
8
+ Copyright (c) 2012, 2015 Mario Izquierdo
9
+ Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
10
+ and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
11
+ */
12
+ (function( $ ) {
13
+ "use strict";
14
+
15
+ // jQuery('form').serializeJSON()
16
+ $.fn.serializeJSON = function( options ) {
17
+ var serializedObject, formAsArray, keys, type, value, _ref, f, opts;
18
+ f = $.serializeJSON;
19
+ opts = f.setupOpts( options ); // calculate values for options {parseNumbers, parseBoolens, parseNulls}
20
+ formAsArray = this.serializeArray(); // array of objects {name, value}
21
+ f.readCheckboxUncheckedValues( formAsArray, this, opts ); // add {name, value} of unchecked checkboxes if needed
22
+
23
+ serializedObject = {};
24
+ $.each(
25
+ formAsArray, function( i, input ) {
26
+ keys = f.splitInputNameIntoKeysArray( input.name, opts );
27
+ type = keys.pop(); // the last element is always the type ("string" by default)
28
+ if ( type !== 'skip' ) { // easy way to skip a value
29
+ value = f.parseValue( input.value, type, opts ); // string, number, boolean or null
30
+ if ( opts.parseWithFunction && type === '_' ) value = opts.parseWithFunction( value, input.name ); // allow for custom parsing
31
+ f.deepSet( serializedObject, keys, value, opts );
32
+ }
33
+ }
34
+ );
35
+ return serializedObject;
36
+ };
37
+
38
+ // Use $.serializeJSON as namespace for the auxiliar functions
39
+ // and to define defaults
40
+ $.serializeJSON = {
41
+
42
+ defaultOptions: {
43
+ checkboxUncheckedValue: undefined, // to include that value for unchecked checkboxes (instead of ignoring them)
44
+
45
+ parseNumbers: false, // convert values like "1", "-2.33" to 1, -2.33
46
+ parseBooleans: false, // convert "true", "false" to true, false
47
+ parseNulls: false, // convert "null" to null
48
+ parseAll: false, // all of the above
49
+ parseWithFunction: null, // to use custom parser, a function like: function(val){ return parsed_val; }
50
+
51
+ customTypes: {}, // override defaultTypes
52
+ defaultTypes: {
53
+ string: function( str ) {
54
+ return String( str )
55
+ },
56
+ number: function( str ) {
57
+ return Number( str )
58
+ },
59
+ boolean: function( str ) {
60
+ return (["false", "null", "undefined", "", "0"].indexOf( str ) === -1)
61
+ },
62
+ null: function( str ) {
63
+ return (["false", "null", "undefined", "", "0"].indexOf( str ) !== -1) ? null : str
64
+ },
65
+ array: function( str ) {
66
+ return JSON.parse( str )
67
+ },
68
+ object: function( str ) {
69
+ return JSON.parse( str )
70
+ },
71
+ auto: function( str ) {
72
+ return $.serializeJSON.parseValue(
73
+ str, null, {parseNumbers: true, parseBooleans: true, parseNulls: true}
74
+ )
75
+ } // try again with something like "parseAll"
76
+ },
77
+
78
+ useIntKeysAsArrayIndex: false, // name="foo[2]" value="v" => {foo: [null, null, "v"]}, instead of {foo: ["2": "v"]}
79
+ },
80
+
81
+ // Merge option defaults into the options
82
+ setupOpts: function( options ) {
83
+ var opt, validOpts, defaultOptions, optWithDefault, parseAll, f;
84
+ f = $.serializeJSON;
85
+
86
+ if ( options == null ) options = {}; // options ||= {}
87
+ defaultOptions = f.defaultOptions || {}; // defaultOptions
88
+
89
+ // Make sure that the user didn't misspell an option
90
+ validOpts = ['checkboxUncheckedValue', 'parseNumbers', 'parseBooleans', 'parseNulls', 'parseAll', 'parseWithFunction', 'customTypes', 'defaultTypes', 'useIntKeysAsArrayIndex']; // re-define because the user may override the defaultOptions
91
+ for ( opt in options ) {
92
+ if ( validOpts.indexOf( opt ) === -1 ) {
93
+ throw new Error( "serializeJSON ERROR: invalid option '" + opt + "'. Please use one of " + validOpts.join( ', ' ) );
94
+ }
95
+ }
96
+
97
+ // Helper to get the default value for this option if none is specified by the user
98
+ optWithDefault = function( key ) {
99
+ return (options[key] !== false) && (options[key] !== '') && (options[key] || defaultOptions[key]);
100
+ }
101
+
102
+ // Return computed options (opts to be used in the rest of the script)
103
+ parseAll = optWithDefault( 'parseAll' );
104
+ return {
105
+ checkboxUncheckedValue: optWithDefault( 'checkboxUncheckedValue' ),
106
+
107
+ parseNumbers: parseAll || optWithDefault( 'parseNumbers' ),
108
+ parseBooleans: parseAll || optWithDefault( 'parseBooleans' ),
109
+ parseNulls: parseAll || optWithDefault( 'parseNulls' ),
110
+ parseWithFunction: optWithDefault( 'parseWithFunction' ),
111
+
112
+ typeFunctions: $.extend( {}, optWithDefault( 'defaultTypes' ), optWithDefault( 'customTypes' ) ),
113
+
114
+ useIntKeysAsArrayIndex: optWithDefault( 'useIntKeysAsArrayIndex' ),
115
+ }
116
+ },
117
+
118
+ // Given a string, apply the type or the relevant "parse" options, to return the parsed value
119
+ parseValue: function( str, type, opts ) {
120
+ var typeFunction, f;
121
+ f = $.serializeJSON;
122
+
123
+ // Parse with a type if available
124
+ typeFunction = opts.typeFunctions && opts.typeFunctions[type];
125
+ if ( typeFunction ) return typeFunction( str ); // use specific type
126
+
127
+ // Otherwise, check if there is any auto-parse option enabled and use it.
128
+ if ( opts.parseNumbers && f.isNumeric( str ) ) return Number( str ); // auto: number
129
+ if ( opts.parseBooleans && (str === "true" || str === "false") ) return str === "true"; // auto: boolean
130
+ if ( opts.parseNulls && str == "null" ) return null; // auto: null
131
+
132
+ // If none applies, just return the str
133
+ return str;
134
+ },
135
+
136
+ isObject: function( obj ) {
137
+ return obj === Object( obj );
138
+ }, // is this variable an object?
139
+ isUndefined: function( obj ) {
140
+ return obj === void 0;
141
+ }, // safe check for undefined values
142
+ isValidArrayIndex: function( val ) {
143
+ return /^[0-9]+$/.test( String( val ) );
144
+ }, // 1,2,3,4 ... are valid array indexes
145
+ isNumeric: function( obj ) {
146
+ return obj - parseFloat( obj ) >= 0;
147
+ }, // taken from jQuery.isNumeric implementation. Not using jQuery.isNumeric to support old jQuery and Zepto versions
148
+
149
+ optionKeys: function( obj ) {
150
+ if ( Object.keys ) {
151
+ return Object.keys( obj );
152
+ } else {
153
+ var keys = [];
154
+ for ( var key in obj ) {
155
+ keys.push( key )
156
+ }
157
+ ;
158
+ return keys;
159
+ }
160
+ }, // polyfill Object.keys to get option keys in IE<9
161
+
162
+ // Split the input name in programatically readable keys.
163
+ // The last element is always the type (default "_").
164
+ // Examples:
165
+ // "foo" => ['foo', '_']
166
+ // "foo:string" => ['foo', 'string']
167
+ // "foo:boolean" => ['foo', 'boolean']
168
+ // "[foo]" => ['foo', '_']
169
+ // "foo[inn][bar]" => ['foo', 'inn', 'bar', '_']
170
+ // "foo[inn[bar]]" => ['foo', 'inn', 'bar', '_']
171
+ // "foo[inn][arr][0]" => ['foo', 'inn', 'arr', '0', '_']
172
+ // "arr[][val]" => ['arr', '', 'val', '_']
173
+ // "arr[][val]:null" => ['arr', '', 'val', 'null']
174
+ splitInputNameIntoKeysArray: function( name, opts ) {
175
+ var keys, nameWithoutType, type, _ref, f;
176
+ f = $.serializeJSON;
177
+ _ref = f.extractTypeFromInputName( name, opts ), nameWithoutType = _ref[0], type = _ref[1];
178
+ keys = nameWithoutType.split( '[' ); // split string into array
179
+ keys = $.map(
180
+ keys, function( key ) {
181
+ return key.replace( /]/g, '' );
182
+ }
183
+ ); // remove closing brackets
184
+ if ( keys[0] === '' ) {
185
+ keys.shift();
186
+ } // ensure no opening bracket ("[foo][inn]" should be same as "foo[inn]")
187
+ keys.push( type ); // add type at the end
188
+ return keys;
189
+ },
190
+
191
+ // Returns [name-without-type, type] from name.
192
+ // "foo" => ["foo", '_']
193
+ // "foo:boolean" => ["foo", 'boolean']
194
+ // "foo[bar]:null" => ["foo[bar]", 'null']
195
+ extractTypeFromInputName: function( name, opts ) {
196
+ var match, validTypes, f;
197
+ if ( match = name.match( /(.*):([^:]+)$/ ) ) {
198
+ f = $.serializeJSON;
199
+
200
+ validTypes = f.optionKeys( opts ? opts.typeFunctions : f.defaultOptions.defaultTypes );
201
+ validTypes.push( 'skip' ); // skip is a special type that makes it easy to remove
202
+ if ( validTypes.indexOf( match[2] ) !== -1 ) {
203
+ return [match[1], match[2]];
204
+ } else {
205
+ throw new Error( "serializeJSON ERROR: Invalid type " + match[2] + " found in input name '" + name + "', please use one of " + validTypes.join( ', ' ) )
206
+ }
207
+ } else {
208
+ return [name, '_']; // no defined type, then use parse options
209
+ }
210
+ },
211
+
212
+ // Set a value in an object or array, using multiple keys to set in a nested object or array:
213
+ //
214
+ // deepSet(obj, ['foo'], v) // obj['foo'] = v
215
+ // deepSet(obj, ['foo', 'inn'], v) // obj['foo']['inn'] = v // Create the inner obj['foo'] object, if needed
216
+ // deepSet(obj, ['foo', 'inn', '123'], v) // obj['foo']['arr']['123'] = v //
217
+ //
218
+ // deepSet(obj, ['0'], v) // obj['0'] = v
219
+ // deepSet(arr, ['0'], v, {useIntKeysAsArrayIndex: true}) // arr[0] = v
220
+ // deepSet(arr, [''], v) // arr.push(v)
221
+ // deepSet(obj, ['arr', ''], v) // obj['arr'].push(v)
222
+ //
223
+ // arr = [];
224
+ // deepSet(arr, ['', v] // arr => [v]
225
+ // deepSet(arr, ['', 'foo'], v) // arr => [v, {foo: v}]
226
+ // deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}]
227
+ // deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}, {bar: v}]
228
+ //
229
+ deepSet: function( o, keys, value, opts ) {
230
+ var key, nextKey, tail, lastIdx, lastVal, f;
231
+ if ( opts == null ) opts = {};
232
+ f = $.serializeJSON;
233
+ if ( f.isUndefined( o ) ) {
234
+ throw new Error( "ArgumentError: param 'o' expected to be an object or array, found undefined" );
235
+ }
236
+ if ( !keys || keys.length === 0 ) {
237
+ throw new Error( "ArgumentError: param 'keys' expected to be an array with least one element" );
238
+ }
239
+
240
+ key = keys[0];
241
+
242
+ // Only one key, then it's not a deepSet, just assign the value.
243
+ if ( keys.length === 1 ) {
244
+ if ( key === '' ) {
245
+ o.push( value ); // '' is used to push values into the array (assume o is an array)
246
+ } else {
247
+ o[key] = value; // other keys can be used as object keys or array indexes
248
+ }
249
+
250
+ // With more keys is a deepSet. Apply recursively.
251
+ } else {
252
+ nextKey = keys[1];
253
+
254
+ // '' is used to push values into the array,
255
+ // with nextKey, set the value into the same object, in object[nextKey].
256
+ // Covers the case of ['', 'foo'] and ['', 'var'] to push the object {foo, var}, and the case of nested arrays.
257
+ if ( key === '' ) {
258
+ lastIdx = o.length - 1; // asume o is array
259
+ lastVal = o[lastIdx];
260
+ if ( f.isObject( lastVal ) && (f.isUndefined( lastVal[nextKey] ) || keys.length > 2) ) { // if nextKey is not present in the last object element, or there are more keys to deep set
261
+ key = lastIdx; // then set the new value in the same object element
262
+ } else {
263
+ key = lastIdx + 1; // otherwise, point to set the next index in the array
264
+ }
265
+ }
266
+
267
+ // '' is used to push values into the array "array[]"
268
+ if ( nextKey === '' ) {
269
+ if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) {
270
+ o[key] = []; // define (or override) as array to push values
271
+ }
272
+ } else {
273
+ if ( opts.useIntKeysAsArrayIndex && f.isValidArrayIndex( nextKey ) ) { // if 1, 2, 3 ... then use an array, where nextKey is the index
274
+ if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) {
275
+ o[key] = []; // define (or override) as array, to insert values using int keys as array indexes
276
+ }
277
+ } else { // for anything else, use an object, where nextKey is going to be the attribute name
278
+ if ( f.isUndefined( o[key] ) || !f.isObject( o[key] ) ) {
279
+ o[key] = {}; // define (or override) as object, to set nested properties
280
+ }
281
+ }
282
+ }
283
+
284
+ // Recursively set the inner object
285
+ tail = keys.slice( 1 );
286
+ f.deepSet( o[key], tail, value, opts );
287
+ }
288
+ },
289
+
290
+ // Fill the formAsArray object with values for the unchecked checkbox inputs,
291
+ // using the same format as the jquery.serializeArray function.
292
+ // The value of the unchecked values is determined from the opts.checkboxUncheckedValue
293
+ // and/or the data-unchecked-value attribute of the inputs.
294
+ readCheckboxUncheckedValues: function( formAsArray, $form, opts ) {
295
+ var selector, $uncheckedCheckboxes, $el, dataUncheckedValue, f;
296
+ if ( opts == null ) opts = {};
297
+ f = $.serializeJSON;
298
+
299
+ selector = 'input[type=checkbox][name]:not(:checked):not([disabled])';
300
+ $uncheckedCheckboxes = $form.find( selector ).add( $form.filter( selector ) );
301
+ $uncheckedCheckboxes.each(
302
+ function( i, el ) {
303
+ $el = $( el );
304
+ dataUncheckedValue = $el.attr( 'data-unchecked-value' );
305
+ if ( dataUncheckedValue ) { // data-unchecked-value has precedence over option opts.checkboxUncheckedValue
306
+ formAsArray.push( {name: el.name, value: dataUncheckedValue} );
307
+ } else {
308
+ if ( !f.isUndefined( opts.checkboxUncheckedValue ) ) {
309
+ formAsArray.push( {name: el.name, value: opts.checkboxUncheckedValue} );
310
+ }
311
+ }
312
+ }
313
+ );
314
+ }
315
+
316
+ };
317
+
318
+ }( window.jQuery || window.$ ));
319
+
320
+
321
+ (function( $ ) { //This functions first parameter is named $
322
+ 'use strict';
323
+
324
+ redux.customizer = redux.customizer || {};
325
+
326
+ $( document ).ready(
327
+ function() {
328
+ redux.customizer.init();
329
+ }
330
+ );
331
+ redux.customizer.init = function() {
332
+ $( 'body' ).addClass( redux_customizer.body_class );
333
+ $( '.accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title' ).click(
334
+ function() {
335
+ $.redux.initFields();
336
+ }
337
+ );
338
+ };
339
+ redux.customizer.save = function( $obj, $container ) {
340
+ var $parent = $obj.hasClass( 'redux-field' ) ? $obj : $obj.parents( '.redux-field:first' );
341
+ var $id = $parent.parent().find( '.redux-customizer-input' ).data( 'id' );
342
+
343
+ var $nData = $parent.serializeJSON();
344
+
345
+ $.each(
346
+ $nData, function( $k, $v ) {
347
+ $nData = $v;
348
+ }
349
+ );
350
+ //console.log( $nData );
351
+
352
+ var $control = wp.customize.control( $id );
353
+ //console.log($control);
354
+ $control.setting.set( $nData );
355
+ };
356
+ })( jQuery );
357
+
358
+
359
+
360
+
361
+
ReduxCore/inc/extensions/customizer/extension_customizer.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){"use strict";a.fn.serializeJSON=function(b){var c,d,e,f,g,h,i;return h=a.serializeJSON,i=h.setupOpts(b),d=this.serializeArray(),h.readCheckboxUncheckedValues(d,this,i),c={},a.each(d,function(a,b){e=h.splitInputNameIntoKeysArray(b.name,i),f=e.pop(),"skip"!==f&&(g=h.parseValue(b.value,f,i),i.parseWithFunction&&"_"===f&&(g=i.parseWithFunction(g,b.name)),h.deepSet(c,e,g,i))}),c},a.serializeJSON={defaultOptions:{checkboxUncheckedValue:void 0,parseNumbers:!1,parseBooleans:!1,parseNulls:!1,parseAll:!1,parseWithFunction:null,customTypes:{},defaultTypes:{string:function(a){return String(a)},number:function(a){return Number(a)},"boolean":function(a){return-1===["false","null","undefined","","0"].indexOf(a)},"null":function(a){return-1!==["false","null","undefined","","0"].indexOf(a)?null:a},array:function(a){return JSON.parse(a)},object:function(a){return JSON.parse(a)},auto:function(b){return a.serializeJSON.parseValue(b,null,{parseNumbers:!0,parseBooleans:!0,parseNulls:!0})}},useIntKeysAsArrayIndex:!1},setupOpts:function(b){var c,d,e,f,g,h;h=a.serializeJSON,null==b&&(b={}),e=h.defaultOptions||{},d=["checkboxUncheckedValue","parseNumbers","parseBooleans","parseNulls","parseAll","parseWithFunction","customTypes","defaultTypes","useIntKeysAsArrayIndex"];for(c in b)if(-1===d.indexOf(c))throw new Error("serializeJSON ERROR: invalid option '"+c+"'. Please use one of "+d.join(", "));return f=function(a){return b[a]!==!1&&""!==b[a]&&(b[a]||e[a])},g=f("parseAll"),{checkboxUncheckedValue:f("checkboxUncheckedValue"),parseNumbers:g||f("parseNumbers"),parseBooleans:g||f("parseBooleans"),parseNulls:g||f("parseNulls"),parseWithFunction:f("parseWithFunction"),typeFunctions:a.extend({},f("defaultTypes"),f("customTypes")),useIntKeysAsArrayIndex:f("useIntKeysAsArrayIndex")}},parseValue:function(b,c,d){var e,f;return f=a.serializeJSON,e=d.typeFunctions&&d.typeFunctions[c],e?e(b):d.parseNumbers&&f.isNumeric(b)?Number(b):!d.parseBooleans||"true"!==b&&"false"!==b?d.parseNulls&&"null"==b?null:b:"true"===b},isObject:function(a){return a===Object(a)},isUndefined:function(a){return void 0===a},isValidArrayIndex:function(a){return/^[0-9]+$/.test(String(a))},isNumeric:function(a){return a-parseFloat(a)>=0},optionKeys:function(a){if(Object.keys)return Object.keys(a);var b=[];for(var c in a)b.push(c);return b},splitInputNameIntoKeysArray:function(b,c){var d,e,f,g,h;return h=a.serializeJSON,g=h.extractTypeFromInputName(b,c),e=g[0],f=g[1],d=e.split("["),d=a.map(d,function(a){return a.replace(/]/g,"")}),""===d[0]&&d.shift(),d.push(f),d},extractTypeFromInputName:function(b,c){var d,e,f;if(d=b.match(/(.*):([^:]+)$/)){if(f=a.serializeJSON,e=f.optionKeys(c?c.typeFunctions:f.defaultOptions.defaultTypes),e.push("skip"),-1!==e.indexOf(d[2]))return[d[1],d[2]];throw new Error("serializeJSON ERROR: Invalid type "+d[2]+" found in input name '"+b+"', please use one of "+e.join(", "))}return[b,"_"]},deepSet:function(b,c,d,e){var f,g,h,i,j,k;if(null==e&&(e={}),k=a.serializeJSON,k.isUndefined(b))throw new Error("ArgumentError: param 'o' expected to be an object or array, found undefined");if(!c||0===c.length)throw new Error("ArgumentError: param 'keys' expected to be an array with least one element");f=c[0],1===c.length?""===f?b.push(d):b[f]=d:(g=c[1],""===f&&(i=b.length-1,j=b[i],f=k.isObject(j)&&(k.isUndefined(j[g])||c.length>2)?i:i+1),""===g?(k.isUndefined(b[f])||!a.isArray(b[f]))&&(b[f]=[]):e.useIntKeysAsArrayIndex&&k.isValidArrayIndex(g)?(k.isUndefined(b[f])||!a.isArray(b[f]))&&(b[f]=[]):(k.isUndefined(b[f])||!k.isObject(b[f]))&&(b[f]={}),h=c.slice(1),k.deepSet(b[f],h,d,e))},readCheckboxUncheckedValues:function(b,c,d){var e,f,g,h,i;null==d&&(d={}),i=a.serializeJSON,e="input[type=checkbox][name]:not(:checked):not([disabled])",f=c.find(e).add(c.filter(e)),f.each(function(c,e){g=a(e),h=g.attr("data-unchecked-value"),h?b.push({name:e.name,value:h}):i.isUndefined(d.checkboxUncheckedValue)||b.push({name:e.name,value:d.checkboxUncheckedValue})})}}}(window.jQuery||window.$),function(a){"use strict";redux.customizer=redux.customizer||{},a(document).ready(function(){redux.customizer.init()}),redux.customizer.init=function(){a("body").addClass(redux_customizer.body_class),a(".accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title").click(function(){a.redux.initFields()})},redux.customizer.save=function(b,c){var d=b.hasClass("redux-field")?b:b.parents(".redux-field:first"),e=d.parent().find(".redux-customizer-input").data("id"),f=d.serializeJSON();a.each(f,function(a,b){f=b});var g=wp.customize.control(e);g.setting.set(f)}}(jQuery);
ReduxCore/inc/extensions/customizer/extension_customizer.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
-
 
3
  /**
4
  * Redux Framework is free software: you can redistribute it and/or modify
5
  * it under the terms of the GNU General Public License as published by
@@ -14,7 +15,7 @@
14
  *
15
  * @package ReduxFramework
16
  * @author Dovy Paukstys (dovy)
17
- * @version 3.0.0
18
  */
19
 
20
  // Exit if accessed directly
@@ -39,7 +40,8 @@
39
  private $parent;
40
  private $orig_options = array();
41
  private static $post_values = array();
42
- public static $version = "2.0";
 
43
 
44
  /**
45
  * Class Constructor. Defines the args for the extions class
@@ -54,8 +56,21 @@
54
  * @return void
55
  */
56
  public function __construct( $parent ) {
 
 
 
 
 
 
57
  //add_action('wp_head', array( $this, '_enqueue_new' ));
58
 
 
 
 
 
 
 
 
59
  global $pagenow, $wp_customize;
60
  if ( ! isset( $wp_customize ) && $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" ) {
61
  return;
@@ -64,7 +79,6 @@
64
  //return;
65
  }
66
 
67
- $this->parent = $parent;
68
 
69
  if ( empty( $this->_extension_dir ) ) {
70
  $this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
@@ -73,7 +87,6 @@
73
 
74
  self::get_post_values();
75
 
76
-
77
  // Create defaults array
78
  $defaults = array();
79
  /*
@@ -84,36 +97,68 @@
84
  customize_controls_print_footer_scripts
85
  */
86
 
 
87
 
88
- if ( ! ( isset( $_POST['action'] ) || ( isset( $_POST['action'] ) && $_POST['action'] != "customize_save" ) ) ) {
 
 
89
 
 
90
  add_action( "redux/options/{$this->parent->args['opt_name']}/options", array(
91
  $this,
92
  '_override_values'
93
  ), 100 );
 
94
 
95
- //if ( ! isset( $_POST['customized'] ) || $pagenow == "admin-ajax.php" ) {
96
- if ( current_user_can( $this->parent->args['page_permissions'] ) ) {
97
- add_action( 'customize_register', array(
98
- $this,
99
- '_register_customizer_controls'
100
- ) ); // Create controls
101
- }
102
- //}
103
-
104
 
105
- add_action( 'wp_head', array( $this, 'customize_preview_init' ) );
106
- }
107
 
108
 
109
  //add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save
110
  add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
111
 
 
 
 
 
 
112
 
113
  //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css
114
  //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript
115
  //add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 );
116
  //$this->_enqueue_new();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
 
119
  function customize_preview_init() {
@@ -130,11 +175,22 @@
130
 
131
  self::get_post_values();
132
 
 
133
  if ( isset( $_POST['customized'] ) && ! empty( self::$post_values ) ) {
134
 
135
  if ( is_array( self::$post_values ) ) {
136
  foreach ( self::$post_values as $key => $value ) {
137
  if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
 
 
 
 
 
 
 
 
 
 
138
  $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
139
  $data[ $key ] = $value;
140
  $GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value;
@@ -178,8 +234,120 @@
178
  */
179
  }
180
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
  // All sections, settings, and controls will be added here
182
  public function _register_customizer_controls( $wp_customize ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  $order = array(
184
  'heading' => - 500,
185
  'option' => - 500,
@@ -193,14 +361,17 @@
193
  );
194
  $panel = "";
195
 
 
 
 
196
  foreach ( $this->parent->sections as $key => $section ) {
197
 
198
- if ( isset( $section['id'] ) && $section['id'] == "import/export" ) {
 
199
  continue;
200
  }
201
 
202
- // Not a type that should go on the customizer
203
- if ( empty( $section['fields'] ) || ( isset( $section['type'] ) && $section['type'] == "divide" ) ) {
204
  continue;
205
  }
206
 
@@ -209,12 +380,7 @@
209
  continue;
210
  }
211
 
212
- // Evaluate section permissions
213
- if ( isset( $section['permissions'] ) ) {
214
- if ( ! current_user_can( $section['permissions'] ) ) {
215
- continue;
216
- }
217
- }
218
 
219
  // No errors please
220
  if ( ! isset( $section['desc'] ) ) {
@@ -233,7 +399,7 @@
233
 
234
  // No title is present, let's show what section is missing a title
235
  if ( ! isset( $section['title'] ) ) {
236
- //print_r( $section );
237
  }
238
 
239
  // Let's set a default priority
@@ -242,61 +408,75 @@
242
  $order['heading'] ++;
243
  }
244
 
 
 
 
 
 
 
245
  if ( method_exists( $wp_customize, 'add_panel' ) && ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) && isset( $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) && $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) {
246
 
247
- $wp_customize->add_panel( $section['id'], array(
248
- 'priority' => $section['priority'],
249
- 'capability' => 'customize',
250
- 'theme_supports' => '',
251
- 'title' => $section['title'],
252
- 'description' => $section['desc'],
253
- ) );
 
 
254
  $panel = $section['id'];
255
 
256
- $wp_customize->add_section( $section['id'], array(
257
  'title' => $section['title'],
258
  'priority' => $section['priority'],
259
  'description' => $section['desc'],
 
 
 
260
  'panel' => $panel
261
- ) );
262
 
263
 
264
  } else {
265
  if ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) {
266
  $panel = "";
267
  }
268
- $wp_customize->add_section( $section['id'], array(
269
  'title' => $section['title'],
270
  'priority' => $section['priority'],
271
  'description' => $section['desc'],
 
 
 
272
  'panel' => $panel
273
- ) );
274
  }
275
 
276
-
277
  foreach ( $section['fields'] as $skey => $option ) {
278
 
279
- // Evaluate section permissions
280
- if ( isset( $option['permissions'] ) ) {
281
- if ( ! current_user_can( $option['permissions'] ) ) {
282
- continue;
283
- }
284
- }
285
- if ( isset( $option['validate'] ) && $option['validate'] != false ) {
286
- continue;
287
- }
288
-
289
- if ( isset( $option['validate_callback'] ) && !empty( $option['validate_callback'] ) ) {
290
- continue;
291
- }
292
-
293
  if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
294
  continue;
295
  }
 
296
  if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) {
297
  continue;
298
  }
299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  //Change the item priority if not set
301
  if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) {
302
  $option['priority'] = $order['option'];
@@ -317,27 +497,27 @@
317
  $option['title'] = "";
318
  }
319
 
320
- // Wordpress doesn't support multi-select
321
- if ( $option['type'] == "select" && isset( $option['multi'] ) && $option['multi'] == true ) {
322
- continue;
323
- }
324
 
325
  $option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']';
326
 
327
- if ( $option['type'] != "heading" && $option['type'] != "import_export" && $option['type'] != "options_object" && ! empty( $option['type'] ) ) {
 
328
  $wp_customize->add_setting( $option['id'],
329
  array(
330
  'default' => $option['default'],
331
- 'type' => 'option',
332
- 'capabilities' => 'edit_theme_options',
 
333
  //'capabilities' => $this->parent->args['page_permissions'],
334
  'transport' => 'refresh',
335
- 'theme_supports' => '',
 
336
  //'sanitize_callback' => '__return_false',
337
  'sanitize_callback' => array( $this, '_field_validation' ),
338
  //'sanitize_js_callback' =>array( &$parent, '_field_input' ),
339
  )
340
  );
 
341
  }
342
 
343
  if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) {
@@ -356,151 +536,86 @@
356
  $option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] );
357
  }
358
 
359
- switch ( $option['type'] ) {
360
- case 'heading':
361
- // We don't want to put up the section unless it's used by something visible in the customizer
362
- $section = $option;
363
- $section['id'] = strtolower( str_replace( " ", "", $option['title'] ) );
364
- $order['heading'] = - 500;
365
-
366
- if ( ! empty( $option['priority'] ) ) {
367
- $section['priority'] = $option['priority'];
368
- } else {
369
- $section['priority'] = $order['heading'];
370
- $order['heading'] ++;
371
- }
372
- break;
373
 
374
- case 'text':
375
- if ( isset( $option['data'] ) && $option['data'] ) {
376
- continue;
377
- }
378
- //if ($option['title'] == "Twitter Publisher Username") {
379
- // print_r($option);
380
- // $trueID = str_replace(array(']', 'redux_demo['),'',$option['id']);
381
- // $data = get_option($this->parent->args['opt_name']);
382
- // print_r($data[$trueID]);
383
- // print_r($this->parent->options[$trueID]);
384
- // exit();
385
- //}
386
- $wp_customize->add_control( $option['id'], array(
387
- 'label' => $option['title'],
388
- 'section' => $section['id'],
389
- 'settings' => $option['id'],
390
- 'priority' => $option['priority'],
391
- 'type' => 'text',
392
- ) );
393
- break;
394
-
395
- case 'select':
396
- case 'button_set':
397
- if ( ! isset( $option['options'] ) ) {
398
- continue;
399
- }
400
 
401
- $newOptions = array();
402
- foreach ( $option['options'] as $key => $value ) {
403
- if ( is_array( $value ) ) {
404
- foreach ( $value as $key => $v ) {
405
- $newOptions[] = $v;
406
- }
407
 
408
- }
409
- }
 
 
 
 
 
 
 
 
 
 
 
 
410
 
411
- if ( ! empty( $newOptions ) ) {
412
- $option['options'] = $newOptions;
413
- }
414
 
415
- if ( ( isset( $option['sortable'] ) && $option['sortable'] ) ) {
416
- continue;
417
- }
 
418
 
419
- if ( ( isset( $option['multi'] ) && $option['multi'] ) ) {
420
- continue;
421
- }
422
 
423
- $wp_customize->add_control( $option['id'], array(
424
- 'label' => $option['title'],
425
- 'section' => $section['id'],
426
- 'settings' => $option['id'],
427
- 'priority' => $option['priority'],
428
- 'type' => 'select',
429
- 'choices' => $option['options']
430
- ) );
431
- break;
432
-
433
- case 'radio':
434
- //continue;
435
- $wp_customize->add_control( $option['id'], array(
436
- 'label' => $option['title'],
437
- 'section' => $section['id'],
438
- 'settings' => $option['id'],
439
- 'priority' => $option['priority'],
440
- 'type' => 'radio',
441
- 'choices' => $option['options']
442
- ) );
443
- break;
444
-
445
- case 'checkbox':
446
- if ( ( isset( $option['data'] ) && $option['data'] ) || ( ( isset( $option['multi'] ) && $option['multi'] ) ) || ( ( isset( $option['options'] ) && ! empty( $option['options'] ) ) ) ) {
447
- continue;
448
- }
449
- $wp_customize->add_control( $option['id'], array(
450
- 'label' => $option['title'],
451
- 'section' => $section['id'],
452
- 'settings' => $option['id'],
453
- 'priority' => $option['priority'],
454
- 'type' => 'checkbox',
455
- ) );
456
- break;
457
-
458
- case 'media':
459
- continue;
460
- $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, $option['id'], array(
461
- 'label' => $option['title'],
462
- 'section' => $section['id'],
463
- 'settings' => $option['id'],
464
- 'priority' => $option['priority']
465
- ) ) );
466
- break;
467
-
468
- case 'color':
469
- $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $option['id'], array(
470
- 'label' => $option['title'],
471
- 'section' => $section['id'],
472
- 'settings' => $option['id'],
473
- 'priority' => $option['priority']
474
- ) ) );
475
- break;
476
-
477
- case 'switch':
478
- continue;
479
- $wp_customize->add_control( new Redux_customizer_switch( $wp_customize, $option['id'], array(
480
- 'label' => $option['title'],
481
- 'section' => $section['id'],
482
- 'settings' => $option['id'],
483
- 'field' => $option,
484
- 'ReduxFramework' => $this->parent,
485
- 'priority' => $option['priority'],
486
- ) ) );
487
-
488
- break;
489
-
490
- default:
491
- break;
492
- }
493
  }
494
  }
495
 
496
- /*
497
- title_tagline - Site Title & Tagline
498
- colors - Colors
499
- header_image - Header Image
500
- background_image - Background Image
501
- nav - Navigation
502
- static_front_page - Static Front Page
503
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  }
505
 
506
  public function customizer_save_before( $plugin_options ) {
@@ -616,6 +731,7 @@
616
 
617
  do_action( 'redux-enqueue-' . $this->args['opt_name'] );
618
 
 
619
  foreach ( $this->sections as $section ) {
620
  if ( isset( $section['fields'] ) ) {
621
  foreach ( $section['fields'] as $field ) {
@@ -626,7 +742,7 @@
626
  $class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
627
  if ( $class_file ) {
628
  /** @noinspection PhpIncludeInspection */
629
- require_once $class_file;
630
  }
631
  }
632
 
1
  <?php
2
+ // <input type="radio" value="1" name="_customize-radio-redux_demo[opt-radio]" data-customize-setting-link="redux_demo[opt-color-title]">
3
+ //return;
4
  /**
5
  * Redux Framework is free software: you can redistribute it and/or modify
6
  * it under the terms of the GNU General Public License as published by
15
  *
16
  * @package ReduxFramework
17
  * @author Dovy Paukstys (dovy)
18
+ * @version 0.1.0
19
  */
20
 
21
  // Exit if accessed directly
40
  private $parent;
41
  private $orig_options = array();
42
  private static $post_values = array();
43
+ public static $version = "2.0.0";
44
+ private $options = array();
45
 
46
  /**
47
  * Class Constructor. Defines the args for the extions class
56
  * @return void
57
  */
58
  public function __construct( $parent ) {
59
+
60
+ $this->parent = $parent;
61
+
62
+ $this->upload_dir = ReduxFramework::$_upload_dir . 'advanced-customizer/';
63
+ $this->upload_url = ReduxFramework::$_upload_url . 'advanced-customizer/';
64
+
65
  //add_action('wp_head', array( $this, '_enqueue_new' ));
66
 
67
+
68
+ // Override the ReduxCore class
69
+ add_filter( "redux/extension/{$this->parent->args['opt_name']}/customizer", array(
70
+ $this,
71
+ 'remove_core_customizer_class'
72
+ ) );
73
+
74
  global $pagenow, $wp_customize;
75
  if ( ! isset( $wp_customize ) && $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" ) {
76
  return;
79
  //return;
80
  }
81
 
 
82
 
83
  if ( empty( $this->_extension_dir ) ) {
84
  $this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
87
 
88
  self::get_post_values();
89
 
 
90
  // Create defaults array
91
  $defaults = array();
92
  /*
97
  customize_controls_print_footer_scripts
98
  */
99
 
100
+ //add_action('customize_save', );
101
 
102
+ if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == "on" ) {
103
+ $this->parent->args['customizer_only'] = true;
104
+ }
105
 
106
+ if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == "on" && isset( $_POST['customized'] ) && ! empty( $_POST['customized'] ) && ! isset( $_POST['action'] ) ) {
107
  add_action( "redux/options/{$this->parent->args['opt_name']}/options", array(
108
  $this,
109
  '_override_values'
110
  ), 100 );
111
+ }
112
 
113
+ add_action( 'customize_register', array(
114
+ $this,
115
+ '_register_customizer_controls'
116
+ ) ); // Create controls
 
 
 
 
 
117
 
118
+ add_action( 'wp_head', array( $this, 'customize_preview_init' ) );
 
119
 
120
 
121
  //add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save
122
  add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
123
 
124
+ // Add global controls CSS file
125
+ add_action( 'customize_controls_print_scripts', array( $this, 'enqueue_controls_css' ) );
126
+
127
+ add_action( 'customize_controls_init', array( $this, 'enqueue_panel_css' ) );
128
+
129
 
130
  //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css
131
  //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript
132
  //add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 );
133
  //$this->_enqueue_new();
134
+
135
+
136
+ }
137
+
138
+ function enqueue_controls_css() {
139
+
140
+ include_once( ReduxFramework::$_dir . 'core/enqueue.php' );
141
+ $enqueue = new reduxCoreEnqueue ( $this->parent );
142
+ $enqueue->get_warnings_and_errors_array();
143
+ $enqueue->init();
144
+ wp_enqueue_style( 'redux-extension-advanced-customizer', $this->_extension_url . 'extension_customizer.css', '', time() );
145
+
146
+ wp_enqueue_script(
147
+ 'redux-extension-customizer',
148
+ $this->_extension_url . 'extension_customizer' . Redux_Functions::isMin() . '.js',
149
+ array( 'jquery', 'redux-js' ),
150
+ ReduxFramework_extension_customizer::$version,
151
+ true
152
+ );
153
+ wp_localize_script( 'redux-extension-customizer', 'redux_customizer', array( 'body_class' => sanitize_html_class( 'admin-color-' . get_user_option( 'admin_color' ), 'fresh' ) ) );
154
+ }
155
+
156
+ function enqueue_panel_css() {
157
+
158
+ }
159
+
160
+ function remove_core_customizer_class( $path ) {
161
+ return "";
162
  }
163
 
164
  function customize_preview_init() {
175
 
176
  self::get_post_values();
177
 
178
+
179
  if ( isset( $_POST['customized'] ) && ! empty( self::$post_values ) ) {
180
 
181
  if ( is_array( self::$post_values ) ) {
182
  foreach ( self::$post_values as $key => $value ) {
183
  if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
184
+
185
+ //if (is_array($value)) {
186
+ // $value = @stripslashes( $value );
187
+ // if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) {
188
+ // $value = @array_map( 'stripslashes_deep', $value );
189
+ // $value = @array_map( 'urldecode', $value );
190
+ // }
191
+ //} else {
192
+ // $value = @urldecode($value);
193
+ //}
194
  $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
195
  $data[ $key ] = $value;
196
  $GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value;
234
  */
235
  }
236
 
237
+ public function render( $control ) {
238
+ $fieldID = str_replace( $this->parent->args['opt_name'] . '-', '', $control->redux_id );
239
+ $field = $this->options[ $fieldID ];
240
+
241
+ if ( isset( $field['compiler'] ) && ! empty( $field['compiler'] ) ) {
242
+ echo '<tr class="compiler">';
243
+ } else {
244
+ echo '<tr>';
245
+ }
246
+ echo '<th scope="row">' . $this->parent->field_head[ $field['id'] ] . '</th>';
247
+ echo '<td>';
248
+ //$field['data-customize-setting-link'] = array(
249
+ // 'name' => $field['name'],
250
+ // 'suffix' => isset($field['name_suffix']) ? $field['name_suffix'] : ''
251
+ //);
252
+ //
253
+ $field['name'] = $field['id'];
254
+ $this->parent->_field_input( $field );
255
+ echo '</td>';
256
+ echo '</tr>';
257
+ }
258
+
259
  // All sections, settings, and controls will be added here
260
  public function _register_customizer_controls( $wp_customize ) {
261
+
262
+ if ( ! class_exists( 'Redux_Customizer_Section' ) ) {
263
+ include_once dirname( __FILE__ ) . '/inc/customizer_section.php';
264
+ if ( method_exists( $wp_customize, 'register_section_type' ) ) {
265
+ $wp_customize->register_section_type( 'Redux_Customizer_Section' );
266
+ }
267
+ }
268
+ if ( ! class_exists( 'Redux_Customizer_Panel' ) ) {
269
+ include_once dirname( __FILE__ ) . '/inc/customizer_panel.php';
270
+ if ( method_exists( $wp_customize, 'register_panel_type' ) ) {
271
+ $wp_customize->register_panel_type( 'Redux_Customizer_Panel' );
272
+ }
273
+ }
274
+ if ( ! class_exists( 'Redux_Customizer_Control' ) ) {
275
+ include_once dirname( __FILE__ ) . '/inc/customizer_control.php';
276
+ }
277
+
278
+ include_once dirname( __FILE__ ) . '/inc/customizer_fields.php';
279
+ include_once dirname( __FILE__ ) . '/inc/customizer_devs.php';
280
+
281
+ do_action( "redux/extension/customizer/control/includes" );
282
+
283
+ //if ($this->parent->args['dev_mode']) {
284
+ // $section = new Redux_Customizer_rAds( $wp_customize, 'redux_rAds', array(
285
+ // 'priority' => 0,
286
+ // ) );
287
+ // $wp_customize->add_section( $section, array(
288
+ // 'priority' => 0,
289
+ // ) );
290
+ //
291
+ // //$wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array(
292
+ // // 'section' => 'redux_rAds',
293
+ // // 'settings' => 'redux_rAds_field',
294
+ // // 'type' => 'redux-rAds',
295
+ // //) ) );
296
+ //
297
+ //
298
+ //
299
+ //
300
+ //}
301
+ if ( $this->parent->args['dev_mode'] ) {
302
+ //$args = array(
303
+ // 'priority' => 0,
304
+ //);
305
+ ////$section = new Redux_Customizer_Section( $wp_customize, 'redux_rAds', $args );
306
+ ////$wp_customize->add_section( $section, $args );
307
+ //$this->add_section( 'redux_rAds', array(
308
+ // 'title' => '',
309
+ // 'priority' => 1,
310
+ // 'description' => '',
311
+ // 'capability' => 'edit_theme_options',
312
+ //), $wp_customize );
313
+ //
314
+ //$wp_customize->add_control( new WP_Customize_Color_Control(
315
+ // $wp_customize,
316
+ // 'redux_rAds_display',
317
+ // array(
318
+ // 'section' => 'redux_rAds',
319
+ // 'settings' => 'redux_rAds_display',
320
+ // )
321
+ //));
322
+ ////$wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array(
323
+ //// 'section' => 'redux_rAds',
324
+ //// 'settings' => 'redux_rAds_field',
325
+ //// 'type' => 'redux-rAds',
326
+ ////) ) );
327
+ //start copyright settings
328
+
329
+ //$section = new Redux_Customizer_section_rAds( $wp_customize, 'redux_rAds', array(
330
+ // 'priority' => -999,
331
+ //) );
332
+ //$wp_customize->add_section( $section, array(
333
+ // 'priority' => -999,
334
+ //) );
335
+ //$wp_customize->add_setting(
336
+ // 'redux_rAds_empty'
337
+ //);
338
+ //$wp_customize->add_control(
339
+ // new Redux_Customizer_Control_rAds(
340
+ // $wp_customize,
341
+ // 'redux_rAds_empty',
342
+ // array(
343
+ // 'section' => 'redux_rAds',
344
+ // 'settings' => 'redux_rAds_empty'
345
+ // )
346
+ // )
347
+ //);
348
+ }
349
+
350
+
351
  $order = array(
352
  'heading' => - 500,
353
  'option' => - 500,
361
  );
362
  $panel = "";
363
 
364
+ $this->parent->args['options_api'] = false;
365
+ $this->parent->_register_settings();
366
+
367
  foreach ( $this->parent->sections as $key => $section ) {
368
 
369
+ // Not a type that should go on the customizer
370
+ if ( isset( $section['type'] ) && ( $section['type'] == "divide" ) ) {
371
  continue;
372
  }
373
 
374
+ if ( isset( $section['id'] ) && $section['id'] == "import/export" ) {
 
375
  continue;
376
  }
377
 
380
  continue;
381
  }
382
 
383
+ $section['permissions'] = isset( $section['permissions'] ) ? $section['permissions'] : 'edit_theme_options';
 
 
 
 
 
384
 
385
  // No errors please
386
  if ( ! isset( $section['desc'] ) ) {
399
 
400
  // No title is present, let's show what section is missing a title
401
  if ( ! isset( $section['title'] ) ) {
402
+ $section['title'] = "";
403
  }
404
 
405
  // Let's set a default priority
408
  $order['heading'] ++;
409
  }
410
 
411
+ //print_r($section);
412
+ //print_r($this->parent->sections[$key+1]);
413
+ //echo $key;
414
+ //exit();
415
+
416
+
417
  if ( method_exists( $wp_customize, 'add_panel' ) && ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) && isset( $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) && $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) {
418
 
419
+ $this->add_panel( $section['id'], array(
420
+ 'priority' => $section['priority'],
421
+ 'capability' => $section['permissions'],
422
+ //'theme_supports' => '',
423
+ 'title' => $section['title'],
424
+ 'section' => $section,
425
+ 'opt_name' => $this->parent->args['opt_name'],
426
+ 'description' => '',
427
+ ), $wp_customize );
428
  $panel = $section['id'];
429
 
430
+ $this->add_section( $section['id'], array(
431
  'title' => $section['title'],
432
  'priority' => $section['priority'],
433
  'description' => $section['desc'],
434
+ 'section' => $section,
435
+ 'opt_name' => $this->parent->args['opt_name'],
436
+ 'capability' => $section['permissions'],
437
  'panel' => $panel
438
+ ), $wp_customize );
439
 
440
 
441
  } else {
442
  if ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) {
443
  $panel = "";
444
  }
445
+ $this->add_section( $section['id'], array(
446
  'title' => $section['title'],
447
  'priority' => $section['priority'],
448
  'description' => $section['desc'],
449
+ 'opt_name' => $this->parent->args['opt_name'],
450
+ 'section' => $section,
451
+ 'capability' => $section['permissions'],
452
  'panel' => $panel
453
+ ), $wp_customize );
454
  }
455
 
 
456
  foreach ( $section['fields'] as $skey => $option ) {
457
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
459
  continue;
460
  }
461
+
462
  if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) {
463
  continue;
464
  }
465
 
466
+ $this->options[ $option['id'] ] = $option;
467
+ add_action( 'redux/advanced_customizer/control/render/' . $this->parent->args['opt_name'] . '-' . $option['id'], array(
468
+ $this,
469
+ 'render'
470
+ ) );
471
+
472
+ $option['permissions'] = isset( $option['permissions'] ) ? $option['permissions'] : 'edit_theme_options';
473
+
474
+ //
475
+ //if ( isset( $option['validate_callback'] ) && ! empty( $option['validate_callback'] ) ) {
476
+ // continue;
477
+ //}
478
+
479
+
480
  //Change the item priority if not set
481
  if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) {
482
  $option['priority'] = $order['option'];
497
  $option['title'] = "";
498
  }
499
 
 
 
 
 
500
 
501
  $option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']';
502
 
503
+ if ( $option['type'] != "heading" && $option['type'] != "import_export" && ! empty( $option['type'] ) ) {
504
+
505
  $wp_customize->add_setting( $option['id'],
506
  array(
507
  'default' => $option['default'],
508
+ //'type' => 'option',
509
+ //'capabilities' => $option['permissions'],
510
+ //'capabilities' => 'edit_theme_options',
511
  //'capabilities' => $this->parent->args['page_permissions'],
512
  'transport' => 'refresh',
513
+ 'opt_name' => $this->parent->args['opt_name'],
514
+ //'theme_supports' => '',
515
  //'sanitize_callback' => '__return_false',
516
  'sanitize_callback' => array( $this, '_field_validation' ),
517
  //'sanitize_js_callback' =>array( &$parent, '_field_input' ),
518
  )
519
  );
520
+
521
  }
522
 
523
  if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) {
536
  $option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] );
537
  }
538
 
539
+ $class_name = 'Redux_Customizer_Control_' . $option['type'];
 
 
 
 
 
 
 
 
 
 
 
 
 
540
 
541
+ do_action( 'redux/extension/customizer/control_init', $option );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
542
 
543
+ if ( ! class_exists( $class_name ) ) {
544
+ continue;
545
+ }
 
 
 
546
 
547
+ $wp_customize->add_control( new $class_name( $wp_customize, $option['id'], array(
548
+ 'label' => $option['title'],
549
+ 'section' => $section['id'],
550
+ 'settings' => $option['id'],
551
+ 'type' => 'redux-' . $option['type'],
552
+ 'field' => $option,
553
+ 'ReduxFramework' => $this->parent,
554
+ 'priority' => $option['priority'],
555
+ ) ) );
556
+
557
+ $section['fields'][ $skey ]['name'] = $option['id'];
558
+ if ( ! isset ( $section['fields'][ $skey ]['class'] ) ) { // No errors please
559
+ $section['fields'][ $skey ]['class'] = "";
560
+ }
561
 
562
+ $this->controls[ $section['fields'][ $skey ]['id'] ] = $section['fields'][ $skey ];
 
 
563
 
564
+ add_action( 'redux/advanced_customizer/render/' . $option['id'], array(
565
+ $this,
566
+ 'field_render'
567
+ ), $option['priority'] );
568
 
 
 
 
569
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
570
  }
571
  }
572
 
573
+ }
574
+
575
+ public function add_section( $id, $args = array(), $wp_customize ) {
576
+
577
+ if ( is_a( $id, 'WP_Customize_Section' ) ) {
578
+ $section = $id;
579
+ } else {
580
+
581
+ $section_class = apply_filters( 'redux/customizer/section/class_name', "Redux_Customizer_Section" );
582
+ $section = new $section_class( $wp_customize, $id, $args );
583
+ }
584
+
585
+ $wp_customize->add_section( $section, $args );
586
+
587
+ }
588
+
589
+ /**
590
+ * Add a customize panel.
591
+ *
592
+ * @since 4.0.0
593
+ * @access public
594
+ *
595
+ * @param WP_Customize_Panel|string $id Customize Panel object, or Panel ID.
596
+ * @param array $args Optional. Panel arguments. Default empty array.
597
+ */
598
+ public function add_panel( $id, $args = array(), $wp_customize ) {
599
+ if ( is_a( $id, 'WP_Customize_Panel' ) ) {
600
+ $panel = $id;
601
+ } else {
602
+ $panel_class = apply_filters( 'redux/customizer/panel/class_name', "Redux_Customizer_Panel" );
603
+ $panel = new $panel_class( $wp_customize, $id, $args );
604
+ }
605
+
606
+ $wp_customize->add_panel( $panel, $args );
607
+ }
608
+
609
+ public function field_render( $option ) {
610
+ echo '1';
611
+ preg_match_all( "/\[([^\]]*)\]/", $option->id, $matches );
612
+ $id = $matches[1][0];
613
+ echo $option->link();
614
+ //$link = $option->link();
615
+ //echo $link;
616
+
617
+ $this->parent->_field_input( $this->controls[ $id ] );
618
+ echo '2';
619
  }
620
 
621
  public function customizer_save_before( $plugin_options ) {
731
 
732
  do_action( 'redux-enqueue-' . $this->args['opt_name'] );
733
 
734
+
735
  foreach ( $this->sections as $section ) {
736
  if ( isset( $section['fields'] ) ) {
737
  foreach ( $section['fields'] as $field ) {
742
  $class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
743
  if ( $class_file ) {
744
  /** @noinspection PhpIncludeInspection */
745
+ require_once( $class_file );
746
  }
747
  }
748
 
ReduxCore/inc/extensions/customizer/extension_customizer.scss ADDED
@@ -0,0 +1,193 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .redux-section {
2
+ p.customize-section-description {
3
+ margin-top: 22px;
4
+ word-break: break-word;
5
+ &.legacy {
6
+ margin-top: 7px;
7
+ }
8
+ }
9
+ }
10
+
11
+ .control-section-themes .accordion-section-title {
12
+ margin: 0;
13
+ }
14
+
15
+ #customize-controls {
16
+ .customize-info {
17
+ margin-bottom: 0;
18
+ }
19
+ .redux-section .accordion-section-content {
20
+ background: #FCFCFC;
21
+ }
22
+ }
23
+
24
+ .redux-section .accordion-section-title i,
25
+ .redux-field .accordion-field-title i,
26
+ .redux-panel .accordion-section-title i {
27
+ margin-right: 5px;
28
+ }
29
+
30
+ .accordion-section.redux-main {
31
+ background: inherit;
32
+ margin-left: inherit;
33
+ border-left: inherit;
34
+ -moz-box-shadow: inherit;
35
+ -webkit-box-shadow: inherit;
36
+ padding: inherit;
37
+ box-shadow: inherit;
38
+ }
39
+
40
+ .redux_field_th {
41
+ padding: 13px 0px 0px 0px;
42
+ }
43
+
44
+ .redux-main {
45
+ .redux-field-container {
46
+ padding: 10px 0;
47
+ }
48
+ .select_wrapper {
49
+ float: none;
50
+ width: 100%;
51
+ display: inline-block;
52
+ }
53
+ .select2-container {
54
+ margin-right: 0 !important;
55
+ margin-bottom: 5px !important;
56
+ width: 100% !important;
57
+ }
58
+ .select_wrapper:nth-child(odd) {
59
+ margin-right: 0;
60
+ }
61
+ .redux-option-image {
62
+ max-width: 42% !important;
63
+ margin-right: 3%;
64
+ }
65
+ .customize-control {
66
+ border-bottom: 1px solid #ddd;
67
+ padding-bottom: 4px;
68
+ }
69
+ .customize-control:last-child {
70
+ border-bottom: 0;
71
+ padding-bottom: 0;
72
+ }
73
+ .upload {
74
+ width: 100% !important;
75
+ }
76
+ h3 {
77
+ margin-top: inherit;
78
+ }
79
+ .redux-container-raw {
80
+ margin-top: 22px;
81
+ word-break: break-word;
82
+ padding: 0 !important;
83
+ }
84
+ .redux-container-password input {
85
+ width: 100%;
86
+ }
87
+ }
88
+
89
+ .select2-drop {
90
+ z-index: 999999;
91
+ }
92
+
93
+ .rAdsContainer {
94
+ line-height: 0;
95
+ border: 0;
96
+ /*margin-top: -15px;*/
97
+ /*margin-bottom: -15px;*/
98
+ }
99
+
100
+ .rAds {
101
+ position: inherit !important;
102
+ right: 0 !important;
103
+ top: 0 !important;
104
+ bottom: 0 !important;
105
+ left: 0 !important;
106
+ text-align: center;
107
+ margin-bottom: 0;
108
+ line-height: 0;
109
+ -webkit-transition: left ease-in-out .18s;
110
+ transition: left ease-in-out .18s;
111
+ img {
112
+ -webkit-transition: left ease-in-out .18s;
113
+ transition: left ease-in-out .18s;
114
+ }
115
+ }
116
+
117
+ @mixin adminCustomizerThemeColorOverrides($highlight-color, $text-color) {
118
+
119
+ $menu-highlight-background: $highlight-color;
120
+ $menu-highlight-text: $text-color;
121
+
122
+ #customize-theme-controls {
123
+ .control-section.control-section-redux:hover > h3.accordion-section-title,
124
+ .control-section.control-section-redux h3.accordion-section-title:hover,
125
+ .control-section.control-section-redux.open h3.accordion-section-title,
126
+ .control-section.control-section-redux h3.accordion-section-title:focus,
127
+ .control-panel.control-panel-redux:hover > h3.accordion-section-title,
128
+ .control-panel.control-panel-redux h3.accordion-section-title:hover,
129
+ .control-panel.control-panel-redux.open h3.accordion-section-title,
130
+ .control-panel.control-panel-redux h3.accordion-section-title:focus {
131
+ color: $text-color;
132
+ background: $highlight-color;
133
+ &:after {
134
+ color: $text-color;
135
+ }
136
+ }
137
+ .control-section.control-panel.control-panel-redux>.accordion-section-title:after {
138
+ background: transparent;
139
+ border-left: none;
140
+ }
141
+ .control-panel-redux .customize-panel-back, .redux-section .customize-section-back {
142
+ &:hover {
143
+ background: $highlight-color;
144
+ color: $text-color;
145
+ }
146
+ }
147
+ }
148
+ }
149
+
150
+ /* Light fresh theme */
151
+ .admin-color-fresh {
152
+ @include adminCustomizerThemeColorOverrides(#0073aa, #fff);
153
+ }
154
+
155
+ /* Ectoplasm theme */
156
+ .admin-color-ectoplasm {
157
+ @include adminCustomizerThemeColorOverrides(#a3b745, #fff);
158
+ }
159
+
160
+ /* Light admin theme */
161
+ .admin-color-light {
162
+ @include adminCustomizerThemeColorOverrides(#888, #fff);
163
+ }
164
+
165
+ /* Blue admin theme */
166
+ .admin-color-blue {
167
+ @include adminCustomizerThemeColorOverrides(#096484, #fff);
168
+ }
169
+
170
+ /* Coffee admin theme */
171
+ .admin-color-coffee {
172
+ @include adminCustomizerThemeColorOverrides(#c7a589, #fff);
173
+ }
174
+
175
+ /* Ectoplasm admin theme */
176
+ .admin-color-ectoplasm {
177
+ @include adminCustomizerThemeColorOverrides(#523f6d, #fff);
178
+ }
179
+
180
+ /* Midnight admin theme */
181
+ .admin-color-midnight {
182
+ @include adminCustomizerThemeColorOverrides(#e14d43, #fff);
183
+ }
184
+
185
+ /* Ocean admin theme */
186
+ .admin-color-ocean {
187
+ @include adminCustomizerThemeColorOverrides(#9ebaa0, #fff);
188
+ }
189
+
190
+ /* Sunrise admin theme */
191
+ .admin-color-sunrise {
192
+ @include adminCustomizerThemeColorOverrides(#cf4944, #fff);
193
+ }
ReduxCore/inc/extensions/customizer/inc/customizer_control.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! class_exists( 'Redux_Customizer_Control' ) ) {
4
+ class Redux_Customizer_Control extends WP_Customize_Control {
5
+
6
+ public function render() {
7
+ $this->redux_id = str_replace( 'customize-control-', '', 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ) );
8
+ $class = 'customize-control redux-group-tab redux-field customize-control-' . $this->type;
9
+ ?>
10
+ <li id="<?php echo esc_attr( $this->redux_id ); ?>" class="<?php echo esc_attr( $class ); ?>">
11
+ <input type="hidden" data-id="<?php echo $this->id; ?>" class="redux-customizer-input"
12
+ id="customizer_control_id_<?php echo $this->redux_id; ?>" <?php echo $this->link() ?>
13
+ value=""/>
14
+ <?php $this->render_content(); ?>
15
+ </li>
16
+ <?php
17
+
18
+ }
19
+
20
+ public function render_content() {
21
+ do_action( 'redux/advanced_customizer/control/render/' . $this->redux_id, $this );
22
+ }
23
+
24
+ public function label() {
25
+ // The label has already been sanitized in the Fields class, no need to re-sanitize it.
26
+ echo $this->label;
27
+ }
28
+
29
+ public function description() {
30
+ if ( ! empty( $this->description ) ) {
31
+ // The description has already been sanitized in the Fields class, no need to re-sanitize it.
32
+ echo '<span class="description customize-control-description">' . $this->description . '</span>';
33
+ }
34
+ }
35
+
36
+ public function title() {
37
+ echo '<span class="customize-control-title">';
38
+ $this->label();
39
+ $this->description();
40
+ echo '</span>';
41
+ }
42
+ }
43
+ }
ReduxCore/inc/extensions/customizer/inc/customizer_devs.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! class_exists( 'Redux_Customizer_Control_rAds' ) && ! class_exists( 'Redux_Customizer_section_rAds' ) ) {
4
+ /**
5
+ * Customizer section representing widget area (sidebar).
6
+ *
7
+ * @package WordPress
8
+ * @subpackage Customize
9
+ * @since 4.1.0
10
+ * @see WP_Customize_Section
11
+ */
12
+ class Redux_Customizer_section_rAds extends WP_Customize_Section {
13
+
14
+ /**
15
+ * Type of this section.
16
+ *
17
+ * @since 4.1.0
18
+ * @access public
19
+ * @var string
20
+ */
21
+ public $type = 'redux-rAds';
22
+
23
+ protected function render() {
24
+ ?>
25
+ <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="accordion-section rAdsContainer"></li>
26
+ <?php
27
+ }
28
+ }
29
+
30
+ class Redux_Customizer_Control_rAds extends WP_Customize_Control {
31
+ public function render() {
32
+ }
33
+
34
+ public function label() {
35
+ }
36
+
37
+ public function description() {
38
+ }
39
+
40
+ public function title() {
41
+ }
42
+ }
43
+ }
ReduxCore/inc/extensions/customizer/inc/customizer_fields.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Redux_Customizer_Control_checkbox extends Redux_Customizer_Control {
4
+ public $type = "redux-checkbox";
5
+ }
6
+ class Redux_Customizer_Control_color_rgba extends Redux_Customizer_Control {
7
+ public $type = "redux-color_rgba";
8
+ }
9
+ class Redux_Customizer_Control_color extends Redux_Customizer_Control {
10
+ public $type = "redux-color";
11
+ }
12
+ class Redux_Customizer_Control_raw extends Redux_Customizer_Control {
13
+ public $type = "redux-raw";
14
+ }
15
+ class Redux_Customizer_Control_media extends Redux_Customizer_Control {
16
+ public $type = "redux-media";
17
+ }
18
+ class Redux_Customizer_Control_spinner extends Redux_Customizer_Control {
19
+ public $type = "redux-spinner";
20
+ }
21
+ class Redux_Customizer_Control_palette extends Redux_Customizer_Control {
22
+ public $type = "redux-palette";
23
+ }
24
+ class Redux_Customizer_Control_button_set extends Redux_Customizer_Control {
25
+ public $type = "redux-button_set";
26
+ }
27
+ class Redux_Customizer_Control_image_select extends Redux_Customizer_Control {
28
+ public $type = "redux-image_select";
29
+ }
30
+ class Redux_Customizer_Control_radio extends Redux_Customizer_Control {
31
+ public $type = "redux-radio";
32
+ }
33
+ class Redux_Customizer_Control_select extends Redux_Customizer_Control {
34
+ public $type = "redux-select";
35
+ }
36
+ class Redux_Customizer_Control_gallery extends Redux_Customizer_Control {
37
+ public $type = "redux-gallery";
38
+ }
39
+ class Redux_Customizer_Control_slider extends Redux_Customizer_Control {
40
+ public $type = "redux-slider";
41
+ }
42
+ class Redux_Customizer_Control_sortable extends Redux_Customizer_Control {
43
+ public $type = "redux-sortable";
44
+ }
45
+ class Redux_Customizer_Control_switch extends Redux_Customizer_Control {
46
+ public $type = "redux-switch";
47
+ }
48
+ class Redux_Customizer_Control_text extends Redux_Customizer_Control {
49
+ public $type = "redux-text";
50
+ }
51
+ class Redux_Customizer_Control_textarea extends Redux_Customizer_Control {
52
+ public $type = "redux-textarea";
53
+ }
ReduxCore/inc/extensions/customizer/inc/customizer_panel.php ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Customizer section representing widget area (sidebar).
5
+ *
6
+ * @package WordPress
7
+ * @subpackage Customize
8
+ * @since 4.1.0
9
+ * @see WP_Customize_Section
10
+ */
11
+ class Redux_Customizer_Panel extends WP_Customize_Panel {
12
+
13
+ /**
14
+ * Type of this panel.
15
+ *
16
+ * @since 4.1.0
17
+ * @access public
18
+ * @var string
19
+ */
20
+ public $type = 'redux';
21
+
22
+ /**
23
+ * Constructor.
24
+ * Any supplied $args override class property defaults.
25
+ *
26
+ * @since 4.0.0
27
+ *
28
+ * @param WP_Customize_Manager $manager Customizer bootstrap instance.
29
+ * @param string $id An specific ID for the panel.
30
+ * @param array $args Panel arguments.
31
+ */
32
+ public function __construct( $manager, $id, $args = array() ) {
33
+ $keys = array_keys( get_object_vars( $this ) );
34
+ foreach ( $keys as $key ) {
35
+ if ( isset( $args[ $key ] ) ) {
36
+ $this->$key = $args[ $key ];
37
+ }
38
+ }
39
+ $this->manager = $manager;
40
+ $this->id = $id;
41
+ if ( empty( $this->active_callback ) ) {
42
+ $this->active_callback = array( $this, 'active_callback' );
43
+ }
44
+ self::$instance_count += 1;
45
+ $this->instance_number = self::$instance_count;
46
+
47
+ $this->sections = array(); // Users cannot customize the $sections array.
48
+
49
+ // TODO Redux addition
50
+ if ( isset( $args['section'] ) ) {
51
+ $this->section = $args['section'];
52
+ $this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : '';
53
+ $this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : '';
54
+ }
55
+ // TODO END Redux Addition
56
+ }
57
+
58
+ /**
59
+ * WP < 4.3 Render
60
+ *
61
+ * @since
62
+ * @access protected
63
+ */
64
+ protected function render() {
65
+ global $wp_version;
66
+ $version = explode( '-', $wp_version );
67
+ if ( version_compare( $version[0], '4.3', '<' ) ) {
68
+ $this->render_fallback();
69
+ }
70
+
71
+ }
72
+
73
+ protected function render_fallback() {
74
+ $classes = 'accordion-section redux-main redux-panel control-section control-panel control-panel-' . $this->type;
75
+ ?>
76
+ <li id="accordion-panel-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
77
+ <h3 class="accordion-section-title" tabindex="0">
78
+ <?php
79
+ echo wp_kses( $this->title, array(
80
+ 'em' => array(),
81
+ 'i' => array(),
82
+ 'strong' => array(),
83
+ 'span' => array(
84
+ 'class' => array(),
85
+ 'style' => array(),
86
+ ),
87
+ ) );
88
+ ?>
89
+ <span class="screen-reader-text"><?php _e( 'Press return or enter to open this panel', 'redux-framework' ); ?></span>
90
+ </h3>
91
+ <ul class="accordion-sub-container control-panel-content">
92
+ <table class="form-table">
93
+ <tbody><?php $this->render_content(); ?></tbody>
94
+ </table>
95
+ </ul>
96
+ </li>
97
+ <?php
98
+ }
99
+
100
+ /**
101
+ * Render the sections that have been added to the panel.
102
+ *
103
+ * @since 4.1.0
104
+ * @access protected
105
+ */
106
+ protected function render_content() {
107
+ ?>
108
+ <li class="panel-meta accordion-section redux-panel redux-panel-meta control-section<?php if ( empty( $this->description ) ) {
109
+ echo ' cannot-expand';
110
+ } ?>">
111
+ <div class="accordion-section-title" tabindex="0">
112
+ <span class="preview-notice"><?php
113
+ /* translators: %s is the site/panel title in the Customizer */
114
+ echo sprintf( __( 'You are customizing %s', 'redux-framework' ), '<strong class="panel-title">' . esc_html( $this->title ) . '</strong>' );
115
+ ?></span>
116
+ </div>
117
+ <?php if ( ! empty( $this->description ) ) : ?>
118
+ <div class="accordion-section-content description legacy">
119
+ <?php echo $this->description; ?>
120
+ </div>
121
+ <?php endif; ?>
122
+ </li>
123
+ <?php
124
+ }
125
+
126
+ /**
127
+ * An Underscore (JS) template for this panel's content (but not its container).
128
+ * Class variables for this panel class are available in the `data` JS object;
129
+ * export custom variables by overriding {@see WP_Customize_Panel::json()}.
130
+ *
131
+ * @see WP_Customize_Panel::print_template()
132
+ * @since 4.3.0
133
+ */
134
+ protected function content_template() {
135
+ ?>
136
+ <li class="panel-meta customize-info redux-panel accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
137
+ <button class="customize-panel-back" tabindex="-1">
138
+ <span class="screen-reader-text"><?php _e( 'Back', 'redux-framework' ); ?></span></button>
139
+ <div class="accordion-section-title">
140
+ <span class="preview-notice"><?php
141
+ /* translators: %s is the site/panel title in the Customizer */
142
+ echo sprintf( __( 'You are customizing %s', 'redux-framework' ), '<strong class="panel-title">{{ data.title }}</strong>' );
143
+ ?></span>
144
+ <# if ( data.description ) { #>
145
+ <button class="customize-help-toggle dashicons dashicons-editor-help" tabindex="0" aria-expanded="false">
146
+ <span class="screen-reader-text"><?php _e( 'Help', 'redux-framework' ); ?></span></button>
147
+ <# } #>
148
+ </div>
149
+ <# if ( data.description ) { #>
150
+ <div class="description customize-panel-description">
151
+ {{{ data.description }}}
152
+ </div>
153
+ <# } #>
154
+ </li>
155
+ <?php
156
+ }
157
+ }
ReduxCore/inc/extensions/customizer/inc/customizer_section.php ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ /**
5
+ * Customizer section representing widget area (sidebar).
6
+ *
7
+ * @package WordPress
8
+ * @subpackage Customize
9
+ * @since 4.1.0
10
+ * @see WP_Customize_Section
11
+ */
12
+ class Redux_Customizer_Section extends WP_Customize_Section {
13
+
14
+ /**
15
+ * Type of this section.
16
+ *
17
+ * @since 4.1.0
18
+ * @access public
19
+ * @var string
20
+ */
21
+ public $type = 'redux';
22
+
23
+ /**
24
+ * Constructor.
25
+ * Any supplied $args override class property defaults.
26
+ *
27
+ * @since 3.4.0
28
+ *
29
+ * @param WP_Customize_Manager $manager Customizer bootstrap instance.
30
+ * @param string $id An specific ID of the section.
31
+ * @param array $args Section arguments.
32
+ */
33
+ public function __construct( $manager, $id, $args = array() ) {
34
+ $keys = array_keys( get_object_vars( $this ) );
35
+ foreach ( $keys as $key ) {
36
+ if ( isset( $args[ $key ] ) ) {
37
+ $this->$key = $args[ $key ];
38
+ }
39
+ }
40
+
41
+ $this->manager = $manager;
42
+ $this->id = $id;
43
+ if ( empty( $this->active_callback ) ) {
44
+ $this->active_callback = array( $this, 'active_callback' );
45
+ }
46
+ self::$instance_count += 1;
47
+ $this->instance_number = self::$instance_count;
48
+
49
+ $this->controls = array(); // Users cannot customize the $controls array.
50
+
51
+ // TODO Redux addition
52
+ if ( isset( $args['section'] ) ) {
53
+ $this->section = $args['section'];
54
+ $this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : '';
55
+ $this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : '';
56
+ }
57
+ }
58
+
59
+ /**
60
+ * An Underscore (JS) template for rendering this section.
61
+ * Class variables for this section class are available in the `data` JS object;
62
+ * export custom variables by overriding {@see WP_Customize_Section::json()}.
63
+ *
64
+ * @see WP_Customize_Section::print_template()
65
+ * @since 4.3.0
66
+ */
67
+ protected function render_template() {
68
+ ?>
69
+ <li id="accordion-section-{{ data.id }}" class="redux-section accordion-section control-section control-section-{{ data.type }}">
70
+ <h3 class="accordion-section-title" tabindex="0">
71
+ {{ data.title }}
72
+ <span class="screen-reader-text"><?php _e( 'Press return or enter to open', 'redux-framework' ); ?></span>
73
+ </h3>
74
+ <ul class="accordion-section-content redux-main">
75
+
76
+ <li class="customize-section-description-container">
77
+ <div class="customize-section-title">
78
+ <button class="customize-section-back" tabindex="-1">
79
+ <span class="screen-reader-text"><?php _e( 'Back', 'redux-framework' ); ?></span>
80
+ </button>
81
+ <h3>
82
+ <span class="customize-action">
83
+ {{{ data.customizeAction }}}
84
+ </span> {{ data.title }}
85
+ </h3>
86
+ </div>
87
+ <# if ( data.description ) { #>
88
+ <p class="description customize-section-description">{{{ data.description }}}</p>
89
+ <# } #>
90
+ <?php
91
+ if ( isset( $this->opt_name ) && isset( $this->section ) ) {
92
+ do_action( "redux/page/{$this->opt_name}/section/before", $this->section );
93
+ }
94
+ ?>
95
+ </li>
96
+ </ul>
97
+ </li>
98
+ <?php
99
+ }
100
+
101
+ /**
102
+ * Render the section, and the controls that have been added to it.
103
+ *
104
+ * @since 3.4.0
105
+ */
106
+ protected function render_fallback() {
107
+ $classes = 'accordion-section redux-section control-section control-section-' . $this->type;
108
+ ?>
109
+ <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
110
+ <h3 class="accordion-section-title" tabindex="0">
111
+ <?php
112
+ echo wp_kses( $this->title, array(
113
+ 'em' => array(),
114
+ 'i' => array(),
115
+ 'strong' => array(),
116
+ 'span' => array(
117
+ 'class' => array(),
118
+ 'style' => array(),
119
+ ),
120
+ ) );
121
+ ?>
122
+ <span class="screen-reader-text"><?php _e( 'Press return or enter to expand', 'redux-framework' ); ?></span>
123
+ </h3>
124
+ <ul class="accordion-section-content redux-main">
125
+ <?php
126
+ if ( isset( $this->opt_name ) && isset( $this->section ) ) {
127
+ do_action( "redux/page/{$this->opt_name}/section/before", $this->section );
128
+ }
129
+ ?>
130
+ <?php if ( ! empty( $this->description ) ) : ?>
131
+ <li class="customize-section-description-container">
132
+ <p class="description customize-section-description legacy"><?php echo $this->description; ?></p>
133
+ </li>
134
+ <?php endif; ?>
135
+ </ul>
136
+ </li>
137
+ <?php
138
+ }
139
+
140
+ protected function render() {
141
+ global $wp_version;
142
+ $version = explode( '-', $wp_version );
143
+ if ( version_compare( $version[0], '4.3', '<' ) ) {
144
+ $this->render_fallback();
145
+ }
146
+ }
147
+
148
+ }
149
+
150
+
ReduxCore/inc/fields/background/field_background.js CHANGED
@@ -151,6 +151,7 @@
151
  }
152
  }
153
  redux.field_objects.background.preview( $( this ) );
 
154
  }
155
  );
156
 
151
  }
152
  }
153
  redux.field_objects.background.preview( $( this ) );
154
+ redux_change( $( this ) );
155
  }
156
  );
157
 
ReduxCore/inc/fields/background/field_background.min.js CHANGED
@@ -1 +1 @@
1
- !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.background=redux.field_objects.background||{},redux.field_objects.background.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-background:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find(".redux-remove-background").unbind("click").on("click",function(b){return b.preventDefault(),redux.field_objects.background.removeImage(a(this).parents(".redux-container-background:first")),!1}),b.find(".redux-background-upload").unbind().on("click",function(b){redux.field_objects.background.addImage(b,a(this).parents(".redux-container-background:first"))}),b.find(".redux-background-input").on("change",function(){redux.field_objects.background.preview(a(this))}),b.find(".redux-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux_change(a(this)),a("#"+b.target.id+"-transparency").removeAttr("checked"),redux.field_objects.background.preview(a(this))},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init")),redux.field_objects.background.preview(a(this))}}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux.field_objects.background.preview(a(this))});var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(" .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position").select2(d)}})},redux.field_objects.background.preview=function(b){var c=a(b).parents(".redux-container-background:first"),d=a(c).find(".background-preview");if(d){var e=!0,f="height:"+d.height()+"px;";a(c).find(".redux-background-input").each(function(){var b=a(this).serializeArray();b=b[0],b&&-1!=b.name.indexOf("[background-")&&""!==b.value&&(e=!1,b.name=b.name.split("[background-"),b.name="background-"+b.name[1].replace("]",""),f+="background-image"==b.name?b.name+':url("'+b.value+'");':b.name+":"+b.value+";")}),e?d.slideUp():d.attr("style",f).fadeIn()}},redux.field_objects.background.addImage=function(b,c){b.preventDefault();var d,e=a(this);return d?void d.open():(d=wp.media({multiple:!1,library:{},title:e.data("choose"),button:{text:e.data("update")}}),d.on("select",function(){var b=d.state().get("selection").first();if(d.close(),"image"===b.attributes.type){c.find(".upload").val(b.attributes.url),c.find(".upload-id").val(b.attributes.id),c.find(".upload-height").val(b.attributes.height),c.find(".upload-width").val(b.attributes.width),redux_change(a(c).find(".upload-id"));var e=b.attributes.url;if("undefined"!=typeof b.attributes.sizes&&"undefined"!=typeof b.attributes.sizes.thumbnail)e=b.attributes.sizes.thumbnail.url;else if("undefined"!=typeof b.attributes.sizes){var f=b.attributes.height;for(var g in b.attributes.sizes){var h=b.attributes.sizes[g];h.height<f&&(f=h.height,e=h.url)}}else e=b.attributes.icon;c.find(".upload-thumbnail").val(e),c.find(".upload").hasClass("noPreview")||c.find(".screenshot").empty().hide().append('<img class="redux-option-image" src="'+e+'">').slideDown("fast"),c.find(".redux-remove-background").removeClass("hide"),c.find(".redux-background-input-properties").slideDown(),redux.field_objects.background.preview(c.find(".upload"))}}),void d.open())},redux.field_objects.background.removeImage=function(b){if(b.find(".redux-remove-background").addClass("hide")){b.find(".redux-remove-background").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-input-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),a(".section-upload .upload-notice").length>0&&a(".redux-background-upload").remove()}}}(jQuery);
1
+ !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.background=redux.field_objects.background||{},redux.field_objects.background.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-background:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find(".redux-remove-background").unbind("click").on("click",function(b){return b.preventDefault(),redux.field_objects.background.removeImage(a(this).parents(".redux-container-background:first")),!1}),b.find(".redux-background-upload").unbind().on("click",function(b){redux.field_objects.background.addImage(b,a(this).parents(".redux-container-background:first"))}),b.find(".redux-background-input").on("change",function(){redux.field_objects.background.preview(a(this))}),b.find(".redux-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux_change(a(this)),a("#"+b.target.id+"-transparency").removeAttr("checked"),redux.field_objects.background.preview(a(this))},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init")),redux.field_objects.background.preview(a(this))}}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux.field_objects.background.preview(a(this)),redux_change(a(this))});var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(" .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position").select2(d)}})},redux.field_objects.background.preview=function(b){var c=a(b).parents(".redux-container-background:first"),d=a(c).find(".background-preview");if(d){var e=!0,f="height:"+d.height()+"px;";a(c).find(".redux-background-input").each(function(){var b=a(this).serializeArray();b=b[0],b&&-1!=b.name.indexOf("[background-")&&""!==b.value&&(e=!1,b.name=b.name.split("[background-"),b.name="background-"+b.name[1].replace("]",""),f+="background-image"==b.name?b.name+':url("'+b.value+'");':b.name+":"+b.value+";")}),e?d.slideUp():d.attr("style",f).fadeIn()}},redux.field_objects.background.addImage=function(b,c){b.preventDefault();var d,e=a(this);return d?void d.open():(d=wp.media({multiple:!1,library:{},title:e.data("choose"),button:{text:e.data("update")}}),d.on("select",function(){var b=d.state().get("selection").first();if(d.close(),"image"===b.attributes.type){c.find(".upload").val(b.attributes.url),c.find(".upload-id").val(b.attributes.id),c.find(".upload-height").val(b.attributes.height),c.find(".upload-width").val(b.attributes.width),redux_change(a(c).find(".upload-id"));var e=b.attributes.url;if("undefined"!=typeof b.attributes.sizes&&"undefined"!=typeof b.attributes.sizes.thumbnail)e=b.attributes.sizes.thumbnail.url;else if("undefined"!=typeof b.attributes.sizes){var f=b.attributes.height;for(var g in b.attributes.sizes){var h=b.attributes.sizes[g];h.height<f&&(f=h.height,e=h.url)}}else e=b.attributes.icon;c.find(".upload-thumbnail").val(e),c.find(".upload").hasClass("noPreview")||c.find(".screenshot").empty().hide().append('<img class="redux-option-image" src="'+e+'">').slideDown("fast"),c.find(".redux-remove-background").removeClass("hide"),c.find(".redux-background-input-properties").slideDown(),redux.field_objects.background.preview(c.find(".upload"))}}),void d.open())},redux.field_objects.background.removeImage=function(b){if(b.find(".redux-remove-background").addClass("hide")){b.find(".redux-remove-background").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-input-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),a(".section-upload .upload-notice").length>0&&a(".redux-background-upload").remove()}}}(jQuery);
ReduxCore/inc/fields/border/field_border.php CHANGED
@@ -168,6 +168,7 @@ if ( ! class_exists( 'ReduxFramework_border' ) ) {
168
  'solid' => 'Solid',
169
  'dashed' => 'Dashed',
170
  'dotted' => 'Dotted',
 
171
  'none' => 'None'
172
  );
173
  echo '<select original-title="' . __( 'Border style', 'redux-framework' ) . '" id="' . $this->field['id'] . '[border-style]" name="' . $this->field['name'] . $this->field['name_suffix'] . '[border-style]" class="tips redux-border-style ' . $this->field['class'] . '" rows="6" data-id="' . $this->field['id'] . '">';
168
  'solid' => 'Solid',
169
  'dashed' => 'Dashed',
170
  'dotted' => 'Dotted',
171
+ 'double' => "Double",
172
  'none' => 'None'
173
  );
174
  echo '<select original-title="' . __( 'Border style', 'redux-framework' ) . '" id="' . $this->field['id'] . '[border-style]" name="' . $this->field['name'] . $this->field['name_suffix'] . '[border-style]" class="tips redux-border-style ' . $this->field['class'] . '" rows="6" data-id="' . $this->field['id'] . '">';
ReduxCore/inc/fields/color/field_color.js CHANGED
@@ -167,6 +167,7 @@
167
  el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
168
  }
169
  }
 
170
  }
171
  );
172
  }
167
  el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
168
  }
169
  }
170
+ redux_change( $( this ) );
171
  }
172
  );
173
  }
ReduxCore/inc/fields/color/field_color.min.js CHANGED
@@ -1 +1 @@
1
- !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color=redux.field_objects.color||{},a(document).ready(function(){}),redux.field_objects.color.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}}))})}}(jQuery);
1
+ !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color=redux.field_objects.color||{},a(document).ready(function(){}),redux.field_objects.color.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux_change(a(this))}))})}}(jQuery);
ReduxCore/inc/fields/color_gradient/field_color_gradient.js CHANGED
@@ -133,6 +133,7 @@
133
  el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
134
  }
135
  }
 
136
  }
137
  );
138
  }
133
  el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
134
  }
135
  }
136
+ redux_change( $( this ) );
137
  }
138
  );
139
  }
ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js CHANGED
@@ -1 +1 @@
1
- !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_gradient=redux.field_objects.color_gradient||{},a(document).ready(function(){}),redux.field_objects.color_gradient.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color_gradient:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}}))})}}(jQuery);
1
+ !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_gradient=redux.field_objects.color_gradient||{},a(document).ready(function(){}),redux.field_objects.color_gradient.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color_gradient:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux_change(a(this))}))})}}(jQuery);
ReduxCore/inc/fields/editor/field_editor_c.php ADDED
File without changes
ReduxCore/inc/fields/media/field_media.php CHANGED
@@ -153,7 +153,7 @@ if ( ! class_exists( 'ReduxFramework_media' ) ) {
153
  $readOnly = '';
154
  }
155
 
156
- echo '<input placeholder="' . $placeholder . '" type="text" class="' . $hide . 'upload regular-text ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[url]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][url]" value="' . $this->value['url'] . '"' . $readOnly . '/>';
157
  echo '<input type="hidden" class="data" data-mode="' . $this->field['mode'] . '" />';
158
  echo '<input type="hidden" class="library-filter" data-lib-filter="' . $libFilter . '" />';
159
  echo '<input type="hidden" class="upload-id ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[id]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][id]" value="' . $this->value['id'] . '" />';
153
  $readOnly = '';
154
  }
155
 
156
+ echo '<input placeholder="' . $placeholder . '" type="text" class="' . $hide . 'upload large-text ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[url]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][url]" value="' . $this->value['url'] . '"' . $readOnly . '/>';
157
  echo '<input type="hidden" class="data" data-mode="' . $this->field['mode'] . '" />';
158
  echo '<input type="hidden" class="library-filter" data-lib-filter="' . $libFilter . '" />';
159
  echo '<input type="hidden" class="upload-id ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[id]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][id]" value="' . $this->value['id'] . '" />';
ReduxCore/inc/fields/palette/field_palette.css CHANGED
@@ -1 +1 @@
1
- .redux-container-palette label{border-width:3px;border-radius:0;width:100% !important}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}
1
+ .redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}
ReduxCore/inc/fields/palette/field_palette.scss CHANGED
@@ -1,9 +1,11 @@
1
  .redux-container-palette {
2
  label {
3
- border-width: 3px;
 
4
  border-radius: 0;
5
  //border: 0;
6
  width: 100% !important;
 
7
  &.ui-button.ui-widget {
8
  width: 95%;
9
  background: none;
1
  .redux-container-palette {
2
  label {
3
+ border: 3px solid transparent;
4
+ border-color: transparent !important;
5
  border-radius: 0;
6
  //border: 0;
7
  width: 100% !important;
8
+ display: block;
9
  &.ui-button.ui-widget {
10
  width: 95%;
11
  background: none;
ReduxCore/inc/fields/select/field_select.js CHANGED
@@ -36,6 +36,9 @@
36
  triggerChange: true,
37
  allowClear: true
38
  };
 
 
 
39
 
40
  if ( $( this ).siblings( '.select2_params' ).size() > 0 ) {
41
  var select2_params = $( this ).siblings( '.select2_params' ).val();
36
  triggerChange: true,
37
  allowClear: true
38
  };
39
+ if ( $(this).attr('multiple') == "multiple" ) {
40
+ default_params.width = "100%";
41
+ }
42
 
43
  if ( $( this ).siblings( '.select2_params' ).size() > 0 ) {
44
  var select2_params = $( this ).siblings( '.select2_params' ).val();
ReduxCore/inc/fields/select/field_select.min.js CHANGED
@@ -1 +1 @@
1
- !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select=redux.field_objects.select||{},redux.field_objects.select.init=function(b){b||(b=a(document).find(".redux-container-select:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find("select.redux-select-item").each(function(){var b={width:"resolve",triggerChange:!0,allowClear:!0};if(a(this).siblings(".select2_params").size()>0){var c=a(this).siblings(".select2_params").val();c=JSON.parse(c),b=a.extend({},b,c)}a(this).hasClass("font-icons")&&(b=a.extend({},{formatResult:redux.field_objects.select.addIcon,formatSelection:redux.field_objects.select.addIcon,escapeMarkup:function(a){return a}},b)),a(this).select2(b),a(this).hasClass("select2-sortable")&&(b={},b.bindOrder="sortableStop",b.sortableOptions={placeholder:"ui-state-highlight"},a(this).select2Sortable(b)),a(this).on("change",function(){redux_change(a(a(this))),a(this).select2SortableOrder()})}))})},redux.field_objects.select.addIcon=function(a){return a.hasOwnProperty("id")?"<span class='elusive'><i class='"+a.id+"'></i>&nbsp;&nbsp;"+a.text+"</span>":void 0}}(jQuery);
1
+ !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select=redux.field_objects.select||{},redux.field_objects.select.init=function(b){b||(b=a(document).find(".redux-container-select:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find("select.redux-select-item").each(function(){var b={width:"resolve",triggerChange:!0,allowClear:!0};if("multiple"==a(this).attr("multiple")&&(b.width="100%"),a(this).siblings(".select2_params").size()>0){var c=a(this).siblings(".select2_params").val();c=JSON.parse(c),b=a.extend({},b,c)}a(this).hasClass("font-icons")&&(b=a.extend({},{formatResult:redux.field_objects.select.addIcon,formatSelection:redux.field_objects.select.addIcon,escapeMarkup:function(a){return a}},b)),a(this).select2(b),a(this).hasClass("select2-sortable")&&(b={},b.bindOrder="sortableStop",b.sortableOptions={placeholder:"ui-state-highlight"},a(this).select2Sortable(b)),a(this).on("change",function(){redux_change(a(a(this))),a(this).select2SortableOrder()})}))})},redux.field_objects.select.addIcon=function(a){return a.hasOwnProperty("id")?"<span class='elusive'><i class='"+a.id+"'></i>&nbsp;&nbsp;"+a.text+"</span>":void 0}}(jQuery);
ReduxCore/inc/fields/text/field_text.css CHANGED
@@ -1 +1 @@
1
- .redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}
1
+ .redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}
ReduxCore/inc/fields/text/field_text.scss CHANGED
@@ -16,19 +16,29 @@
16
  }
17
 
18
  .input_wrapper {
19
- display: block;
20
- position: relative;
21
- padding: 0;
22
- width: 23%;
23
- max-width: 23%;
24
- min-width: 70px;
25
- float: left;
26
- clear: left;
27
- height: 57px;
28
- -webkit-box-sizing: border-box;
29
- -moz-box-sizing: border-box;
30
- -o-box-sizing: border-box;
31
- box-sizing: border-box;
32
- vertical-align: baseline;
 
 
 
 
 
 
 
 
 
 
33
  }
34
  }
16
  }
17
 
18
  .input_wrapper {
19
+ display: block;
20
+ position: relative;
21
+ padding: 0;
22
+ width: 23%;
23
+ max-width: 23%;
24
+ min-width: 70px;
25
+ float: left;
26
+ clear: left;
27
+ height: 57px;
28
+ -webkit-box-sizing: border-box;
29
+ -moz-box-sizing: border-box;
30
+ -o-box-sizing: border-box;
31
+ box-sizing: border-box;
32
+ vertical-align: baseline;
33
+ }
34
+ }
35
+
36
+ .wp-customizer {
37
+ .redux-container-text {
38
+ .input_wrapper {
39
+ width: 100%;
40
+ max-width: 100%;
41
+ height: auto;
42
+ }
43
  }
44
  }
ReduxCore/inc/fields/typography/field_typography.js CHANGED
@@ -31,7 +31,7 @@
31
  }
32
  );
33
 
34
- redux.field_objects.typography.init = function( selector ) {
35
 
36
  if ( !selector ) {
37
  selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-typography:visible' );
@@ -79,7 +79,7 @@
79
 
80
  fontClear = Boolean( $( this ).find( '.redux-font-clear' ).val() );
81
 
82
- redux.field_objects.typography.select( family );
83
 
84
  window.onbeforeunload = null;
85
  }
@@ -310,7 +310,7 @@
310
 
311
 
312
  // Sync up font options
313
- redux.field_objects.typography.select = function( selector ) {
314
  var mainID;
315
 
316
  // Main id for selected field
@@ -646,7 +646,10 @@
646
 
647
  isSelecting = false;
648
 
649
- redux_change( selector );
 
 
 
650
 
651
  };
652
  })( jQuery );
31
  }
32
  );
33
 
34
+ redux.field_objects.typography.init = function( selector, skipCheck) {
35
 
36
  if ( !selector ) {
37
  selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-typography:visible' );
79
 
80
  fontClear = Boolean( $( this ).find( '.redux-font-clear' ).val() );
81
 
82
+ redux.field_objects.typography.select( family, true );
83
 
84
  window.onbeforeunload = null;
85
  }
310
 
311
 
312
  // Sync up font options
313
+ redux.field_objects.typography.select = function( selector, skipCheck ) {
314
  var mainID;
315
 
316
  // Main id for selected field
646
 
647
  isSelecting = false;
648
 
649
+ if ( ! skipCheck ) {
650
+ redux_change( selector );
651
+ }
652
+
653
 
654
  };
655
  })( jQuery );
ReduxCore/inc/fields/typography/field_typography.min.js CHANGED
@@ -1 +1 @@
1
- !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.typography=redux.field_objects.typography||{};var b=[],c=!1,d={width:"resolve",triggerChange:!0,allowClear:!0};a(document).ready(function(){}),redux.field_objects.typography.init=function(e){e||(e=a(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")),a(e).each(function(){var e=a(this),f=e;if(e.hasClass("redux-field-container")||(f=e.parents(".redux-field-container:first")),!f.is(":hidden")&&f.hasClass("redux-field-init")){f.removeClass("redux-field-init");var g;e.each(function(){a(this).find(".redux-typography-container").each(function(){var b=a(this).find(".redux-typography-family");void 0===b.data("value")?b=a(this):""!==b.data("value")&&a(b).val(b.data("value"));var c=a(this).find(".select2_params");if(c.size()>0){var e=c.val();e=JSON.parse(e),d=a.extend({},d,e)}g=Boolean(a(this).find(".redux-font-clear").val()),redux.field_objects.typography.select(b),window.onbeforeunload=null}),a(this).find(".redux-typography").on("change",function(){redux.field_objects.typography.select(a(this))}),a(this).find(".redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").keyup(function(){redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}),a(this).find(".redux-typography-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}}),a(this).find(".redux-typography-size").numeric({allowMinus:!1}),a(this).find(".redux-typography-height, .redux-typography-word, .redux-typography-letter").numeric({allowMinus:!0});var f=[{id:"none",text:"none"}];a(this).find(".redux-typography-family").select2({matcher:function(a,b){return 0===b.toUpperCase().indexOf(a.toUpperCase())},query:function(a){return window.Select2.query.local(f)(a)},initSelection:function(a,b){var c={id:a.val(),text:a.val()};b(c)},allowClear:g}).on("select2-opening",function(b){var c=a(this).parents(".redux-container-typography:first").attr("data-id"),d=a("#"+c+" .redux-typography-font-family").data("user-fonts");d=d?1:0;var e=a("#"+c+" .redux-typography-google").val();e=e?1:0;var g=[];if(void 0!==redux.customfonts&&g.push(redux.customfonts),void 0!==redux.stdfonts&&0===d&&g.push(redux.stdfonts),1==d){var h=[];for(var i in redux.typography[c]){var j=redux.typography[c].std_font;for(var k in j)j.hasOwnProperty(k)&&h.push({id:k,text:k,"data-google":"false"})}var l={text:"Standard Fonts",children:h};g.push(l)}(1==e||e===!0&&void 0!==redux.googlefonts)&&g.push(redux.googlefonts),f=g;var m=a("#"+c+" #"+c+"-family").attr("placeholder");m||(m=null),a("#"+c+" .redux-typography-family").select2("val",m)}).on("select2-selecting",function(d,e){var f=d.object.text,g=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+g+" #"+g+"-family").data("value",f),a("#"+g+" #"+g+"-family").attr("placeholder",f),b=d,c=!0,redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}).on("select2-clearing",function(b,c){var d=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+d+" #"+d+"-family").attr("data-value",""),a("#"+d+" #"+d+"-family").attr("placeholder","Font Family"),a("#"+d+" #"+d+"-google-font").val("false"),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))});var h=e.find(".redux-typography-family");h.hasClass("redux-typography-family")||e.find(".redux-typography-style").select2(d),e.find(".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").select2(d)})}})},redux.field_objects.typography.size=function(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c},redux.field_objects.typography.makeBool=function(a){return"false"==a||"0"==a||a===!1||0===a?!1:"true"==a||"1"==a||a===!0||1==a?!0:void 0},redux.field_objects.typography.contrastColour=function(a){var b="#444444";if(""!==a){a=a.replace("#","");var c=parseInt(a.substr(0,2),16),d=parseInt(a.substr(2,2),16),e=parseInt(a.substr(4,2),16),f=(299*c+587*d+114*e)/1e3;b=f>=128?"#444444":"#ffffff"}return b},redux.field_objects.typography.select=function(e){var f;f=a(e).parents(".redux-container-typography:first").attr("data-id"),void 0===f&&(f=a(e).attr("data-id"));var g=(a(e).parents(".redux-container-typography:first"),a("#"+f+" #"+f+"-family").val());g||(g=null);var h,i=a("#"+f+" select.redux-typography-family-backup").val(),j=a("#"+f+" .redux-typography-size").val(),k=a("#"+f+" .redux-typography-height").val(),l=a("#"+f+" .redux-typography-word").val(),m=a("#"+f+" .redux-typography-letter").val(),n=a("#"+f+" select.redux-typography-align").val(),o=a("#"+f+" select.redux-typography-transform").val(),p=a("#"+f+" select.redux-typography-font-variant").val(),q=a("#"+f+" select.redux-typography-decoration").val(),r=a("#"+f+" select.redux-typography-style").val(),s=a("#"+f+" select.redux-typography-subsets").val(),t=a("#"+f+" .redux-typography-color").val(),u=a("#"+f).data("units");c===!0?(h=redux.field_objects.typography.makeBool(b.object["data-google"]),a("#"+f+" .redux-typography-google-font").val(h)):h=redux.field_objects.typography.makeBool(a("#"+f+" .redux-typography-google-font").val()),a("#"+f).hasClass("typography-initialized")||(r=a("#"+f+" select.redux-typography-style").data("value"),s=a("#"+f+" select.redux-typography-subsets").data("value"),""!==r&&(r=String(r)),void 0!==typeof s&&(s=String(s))),void 0===redux.fonts.google&&(h=!1);var v="";if(v=h===!0&&g in redux.fonts.google?redux.fonts.google[g]:{400:"Normal 400",700:"Bold 700","400italic":"Normal 400 Italic","700italic":"Bold 700 Italic"},a(e).hasClass("redux-typography-subsets")&&a("#"+f+" input.typography-subsets").val(s),a(e).hasClass("redux-typography-family")){var w='<option value=""></option>';if(h===!0){var x="";a.each(v.variants,function(a,b){b.id===r||1===redux.field_objects.typography.size(v.variants)?(x=' selected="selected"',r=b.id):x="",w+='<option value="'+b.id+'"'+x+">"+b.name.replace(/\+/g," ")+"</option>"}),a("#"+f+" .redux-typography-style").select2("destroy"),a("#"+f+" .redux-typography-style").html(w),a("#"+f+" .redux-typography-style").select2(d),x="",w='<option value=""></option>',a.each(v.subsets,function(b,c){c.id===s||1===redux.field_objects.typography.size(v.subsets)?(x=' selected="selected"',s=c.id,a("#"+f+" input.typography-subsets").val(s)):x="",w+='<option value="'+c.id+'"'+x+">"+c.name.replace(/\+/g," ")+"</option>"}),a("#"+f+" .redux-typography-subsets").select2("destroy"),a("#"+f+" .redux-typography-subsets").html(w),a("#"+f+" .redux-typography-subsets").select2(d),a("#"+f+" .redux-typography-subsets").parent().fadeIn("fast"),a("#"+f+" .typography-family-backup").fadeIn("fast")}else v&&(a.each(v,function(b,c){b===r||"normal"===b?(x=' selected="selected"',a("#"+f+" .typography-style .select2-chosen").text(c)):x="",w+='<option value="'+b+'"'+x+">"+c.replace("+"," ")+"</option>"}),a("#"+f+" .redux-typography-style").select2("destroy"),a("#"+f+" .redux-typography-style").html(w),a("#"+f+" .redux-typography-style").select2(d),a("#"+f+" .redux-typography-subsets").parent().fadeOut("fast"),a("#"+f+" .typography-family-backup").fadeOut("fast"));a("#"+f+" .redux-typography-font-family").val(g)}else a(e).hasClass("redux-typography-family-backup")&&""!==i&&a("#"+f+" .redux-typography-font-family-backup").val(i);0===a("#"+f+" select.redux-typography-style option[value='"+r+"']").length?(r="",a("#"+f+" select.redux-typography-style").select2("val","")):"400"===r&&a("#"+f+" select.redux-typography-style").select2("val",r),0===a("#"+f+" select.redux-typography-subsets option[value='"+s+"']").length&&(s="",a("#"+f+" select.redux-typography-subsets").select2("val",""),a("#"+f+" input.typography-subsets").val(s));var y="style_link_"+f;if(a("."+y).remove(),null!==g&&"inherit"!==g&&a("#"+f).hasClass("typography-initialized")){var z=g.replace(/\s+/g,"+");if(h===!0){var A=z;r&&""!==r&&(A+=":"+r.replace(/\-/g," ")),s&&""!==s&&(A+="&subset="+s),c===!1&&"undefined"!=typeof WebFont&&WebFont&&WebFont.load({google:{families:[A]}}),a("#"+f+" .redux-typography-google").val(!0)}else a("#"+f+" .redux-typography-google").val(!1)}if(-1!==r.indexOf("italic")?(a("#"+f+" .typography-preview").css("font-style","italic"),a("#"+f+" .typography-font-style").val("italic"),r=r.replace("italic","")):(a("#"+f+" .typography-preview").css("font-style","normal"),a("#"+f+" .typography-font-style").val("")),a("#"+f+" .typography-font-weight").val(r),k||(k=j),""===j||void 0===j?a("#"+f+" .typography-font-size").val(""):a("#"+f+" .typography-font-size").val(j+u),""===k||void 0===k?a("#"+f+" .typography-line-height").val(""):a("#"+f+" .typography-line-height").val(k+u),""===l||void 0===l?a("#"+f+" .typography-word-spacing").val(""):a("#"+f+" .typography-word-spacing").val(l+u),""===m||void 0===m?a("#"+f+" .typography-letter-spacing").val(""):a("#"+f+" .typography-letter-spacing").val(m+u),a("#"+f).hasClass("typography-initialized")){var B=a("#"+f+" .typography-preview").data("preview-size");"0"==B&&a("#"+f+" .typography-preview").css("font-size",j+u),a("#"+f+" .typography-preview").css("font-weight",r),a("#"+f+" .typography-preview").css("font-family",g+", sans-serif"),"none"===g&&""===g&&a("#"+f+" .typography-preview").css("font-family","inherit"),a("#"+f+" .typography-preview").css("line-height",k+u),a("#"+f+" .typography-preview").css("word-spacing",l+u),a("#"+f+" .typography-preview").css("letter-spacing",m+u),t&&(a("#"+f+" .typography-preview").css("color",t),a("#"+f+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(t))),a("#"+f+" .typography-style .select2-chosen").text(a("#"+f+" .redux-typography-style option:selected").text()),a("#"+f+" .typography-script .select2-chosen").text(a("#"+f+" .redux-typography-subsets option:selected").text()),n&&a("#"+f+" .typography-preview").css("text-align",n),o&&a("#"+f+" .typography-preview").css("text-transform",o),p&&a("#"+f+" .typography-preview").css("font-variant",p),q&&a("#"+f+" .typography-preview").css("text-decoration",q),a("#"+f+" .typography-preview").slideDown()}a("#"+f).hasClass("typography-initialized")||a("#"+f).addClass("typography-initialized"),c=!1,redux_change(e)}}(jQuery);
1
+ !function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.typography=redux.field_objects.typography||{};var b=[],c=!1,d={width:"resolve",triggerChange:!0,allowClear:!0};a(document).ready(function(){}),redux.field_objects.typography.init=function(e,f){e||(e=a(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")),a(e).each(function(){var e=a(this),f=e;if(e.hasClass("redux-field-container")||(f=e.parents(".redux-field-container:first")),!f.is(":hidden")&&f.hasClass("redux-field-init")){f.removeClass("redux-field-init");var g;e.each(function(){a(this).find(".redux-typography-container").each(function(){var b=a(this).find(".redux-typography-family");void 0===b.data("value")?b=a(this):""!==b.data("value")&&a(b).val(b.data("value"));var c=a(this).find(".select2_params");if(c.size()>0){var e=c.val();e=JSON.parse(e),d=a.extend({},d,e)}g=Boolean(a(this).find(".redux-font-clear").val()),redux.field_objects.typography.select(b,!0),window.onbeforeunload=null}),a(this).find(".redux-typography").on("change",function(){redux.field_objects.typography.select(a(this))}),a(this).find(".redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").keyup(function(){redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}),a(this).find(".redux-typography-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}}),a(this).find(".redux-typography-size").numeric({allowMinus:!1}),a(this).find(".redux-typography-height, .redux-typography-word, .redux-typography-letter").numeric({allowMinus:!0});var f=[{id:"none",text:"none"}];a(this).find(".redux-typography-family").select2({matcher:function(a,b){return 0===b.toUpperCase().indexOf(a.toUpperCase())},query:function(a){return window.Select2.query.local(f)(a)},initSelection:function(a,b){var c={id:a.val(),text:a.val()};b(c)},allowClear:g}).on("select2-opening",function(b){var c=a(this).parents(".redux-container-typography:first").attr("data-id"),d=a("#"+c+" .redux-typography-font-family").data("user-fonts");d=d?1:0;var e=a("#"+c+" .redux-typography-google").val();e=e?1:0;var g=[];if(void 0!==redux.customfonts&&g.push(redux.customfonts),void 0!==redux.stdfonts&&0===d&&g.push(redux.stdfonts),1==d){var h=[];for(var i in redux.typography[c]){var j=redux.typography[c].std_font;for(var k in j)j.hasOwnProperty(k)&&h.push({id:k,text:k,"data-google":"false"})}var l={text:"Standard Fonts",children:h};g.push(l)}(1==e||e===!0&&void 0!==redux.googlefonts)&&g.push(redux.googlefonts),f=g;var m=a("#"+c+" #"+c+"-family").attr("placeholder");m||(m=null),a("#"+c+" .redux-typography-family").select2("val",m)}).on("select2-selecting",function(d,e){var f=d.object.text,g=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+g+" #"+g+"-family").data("value",f),a("#"+g+" #"+g+"-family").attr("placeholder",f),b=d,c=!0,redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}).on("select2-clearing",function(b,c){var d=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+d+" #"+d+"-family").attr("data-value",""),a("#"+d+" #"+d+"-family").attr("placeholder","Font Family"),a("#"+d+" #"+d+"-google-font").val("false"),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))});var h=e.find(".redux-typography-family");h.hasClass("redux-typography-family")||e.find(".redux-typography-style").select2(d),e.find(".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").select2(d)})}})},redux.field_objects.typography.size=function(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c},redux.field_objects.typography.makeBool=function(a){return"false"==a||"0"==a||a===!1||0===a?!1:"true"==a||"1"==a||a===!0||1==a?!0:void 0},redux.field_objects.typography.contrastColour=function(a){var b="#444444";if(""!==a){a=a.replace("#","");var c=parseInt(a.substr(0,2),16),d=parseInt(a.substr(2,2),16),e=parseInt(a.substr(4,2),16),f=(299*c+587*d+114*e)/1e3;b=f>=128?"#444444":"#ffffff"}return b},redux.field_objects.typography.select=function(e,f){var g;g=a(e).parents(".redux-container-typography:first").attr("data-id"),void 0===g&&(g=a(e).attr("data-id"));var h=(a(e).parents(".redux-container-typography:first"),a("#"+g+" #"+g+"-family").val());h||(h=null);var i,j=a("#"+g+" select.redux-typography-family-backup").val(),k=a("#"+g+" .redux-typography-size").val(),l=a("#"+g+" .redux-typography-height").val(),m=a("#"+g+" .redux-typography-word").val(),n=a("#"+g+" .redux-typography-letter").val(),o=a("#"+g+" select.redux-typography-align").val(),p=a("#"+g+" select.redux-typography-transform").val(),q=a("#"+g+" select.redux-typography-font-variant").val(),r=a("#"+g+" select.redux-typography-decoration").val(),s=a("#"+g+" select.redux-typography-style").val(),t=a("#"+g+" select.redux-typography-subsets").val(),u=a("#"+g+" .redux-typography-color").val(),v=a("#"+g).data("units");c===!0?(i=redux.field_objects.typography.makeBool(b.object["data-google"]),a("#"+g+" .redux-typography-google-font").val(i)):i=redux.field_objects.typography.makeBool(a("#"+g+" .redux-typography-google-font").val()),a("#"+g).hasClass("typography-initialized")||(s=a("#"+g+" select.redux-typography-style").data("value"),t=a("#"+g+" select.redux-typography-subsets").data("value"),""!==s&&(s=String(s)),void 0!==typeof t&&(t=String(t))),void 0===redux.fonts.google&&(i=!1);var w="";if(w=i===!0&&h in redux.fonts.google?redux.fonts.google[h]:{400:"Normal 400",700:"Bold 700","400italic":"Normal 400 Italic","700italic":"Bold 700 Italic"},a(e).hasClass("redux-typography-subsets")&&a("#"+g+" input.typography-subsets").val(t),a(e).hasClass("redux-typography-family")){var x='<option value=""></option>';if(i===!0){var y="";a.each(w.variants,function(a,b){b.id===s||1===redux.field_objects.typography.size(w.variants)?(y=' selected="selected"',s=b.id):y="",x+='<option value="'+b.id+'"'+y+">"+b.name.replace(/\+/g," ")+"</option>"}),a("#"+g+" .redux-typography-style").select2("destroy"),a("#"+g+" .redux-typography-style").html(x),a("#"+g+" .redux-typography-style").select2(d),y="",x='<option value=""></option>',a.each(w.subsets,function(b,c){c.id===t||1===redux.field_objects.typography.size(w.subsets)?(y=' selected="selected"',t=c.id,a("#"+g+" input.typography-subsets").val(t)):y="",x+='<option value="'+c.id+'"'+y+">"+c.name.replace(/\+/g," ")+"</option>"}),a("#"+g+" .redux-typography-subsets").select2("destroy"),a("#"+g+" .redux-typography-subsets").html(x),a("#"+g+" .redux-typography-subsets").select2(d),a("#"+g+" .redux-typography-subsets").parent().fadeIn("fast"),a("#"+g+" .typography-family-backup").fadeIn("fast")}else w&&(a.each(w,function(b,c){b===s||"normal"===b?(y=' selected="selected"',a("#"+g+" .typography-style .select2-chosen").text(c)):y="",x+='<option value="'+b+'"'+y+">"+c.replace("+"," ")+"</option>"}),a("#"+g+" .redux-typography-style").select2("destroy"),a("#"+g+" .redux-typography-style").html(x),a("#"+g+" .redux-typography-style").select2(d),a("#"+g+" .redux-typography-subsets").parent().fadeOut("fast"),a("#"+g+" .typography-family-backup").fadeOut("fast"));a("#"+g+" .redux-typography-font-family").val(h)}else a(e).hasClass("redux-typography-family-backup")&&""!==j&&a("#"+g+" .redux-typography-font-family-backup").val(j);0===a("#"+g+" select.redux-typography-style option[value='"+s+"']").length?(s="",a("#"+g+" select.redux-typography-style").select2("val","")):"400"===s&&a("#"+g+" select.redux-typography-style").select2("val",s),0===a("#"+g+" select.redux-typography-subsets option[value='"+t+"']").length&&(t="",a("#"+g+" select.redux-typography-subsets").select2("val",""),a("#"+g+" input.typography-subsets").val(t));var z="style_link_"+g;if(a("."+z).remove(),null!==h&&"inherit"!==h&&a("#"+g).hasClass("typography-initialized")){var A=h.replace(/\s+/g,"+");if(i===!0){var B=A;s&&""!==s&&(B+=":"+s.replace(/\-/g," ")),t&&""!==t&&(B+="&subset="+t),c===!1&&"undefined"!=typeof WebFont&&WebFont&&WebFont.load({google:{families:[B]}}),a("#"+g+" .redux-typography-google").val(!0)}else a("#"+g+" .redux-typography-google").val(!1)}if(-1!==s.indexOf("italic")?(a("#"+g+" .typography-preview").css("font-style","italic"),a("#"+g+" .typography-font-style").val("italic"),s=s.replace("italic","")):(a("#"+g+" .typography-preview").css("font-style","normal"),a("#"+g+" .typography-font-style").val("")),a("#"+g+" .typography-font-weight").val(s),l||(l=k),""===k||void 0===k?a("#"+g+" .typography-font-size").val(""):a("#"+g+" .typography-font-size").val(k+v),""===l||void 0===l?a("#"+g+" .typography-line-height").val(""):a("#"+g+" .typography-line-height").val(l+v),""===m||void 0===m?a("#"+g+" .typography-word-spacing").val(""):a("#"+g+" .typography-word-spacing").val(m+v),""===n||void 0===n?a("#"+g+" .typography-letter-spacing").val(""):a("#"+g+" .typography-letter-spacing").val(n+v),a("#"+g).hasClass("typography-initialized")){var C=a("#"+g+" .typography-preview").data("preview-size");"0"==C&&a("#"+g+" .typography-preview").css("font-size",k+v),a("#"+g+" .typography-preview").css("font-weight",s),a("#"+g+" .typography-preview").css("font-family",h+", sans-serif"),"none"===h&&""===h&&a("#"+g+" .typography-preview").css("font-family","inherit"),a("#"+g+" .typography-preview").css("line-height",l+v),a("#"+g+" .typography-preview").css("word-spacing",m+v),a("#"+g+" .typography-preview").css("letter-spacing",n+v),u&&(a("#"+g+" .typography-preview").css("color",u),a("#"+g+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(u))),a("#"+g+" .typography-style .select2-chosen").text(a("#"+g+" .redux-typography-style option:selected").text()),a("#"+g+" .typography-script .select2-chosen").text(a("#"+g+" .redux-typography-subsets option:selected").text()),o&&a("#"+g+" .typography-preview").css("text-align",o),p&&a("#"+g+" .typography-preview").css("text-transform",p),q&&a("#"+g+" .typography-preview").css("font-variant",q),r&&a("#"+g+" .typography-preview").css("text-decoration",r),a("#"+g+" .typography-preview").slideDown()}a("#"+g).hasClass("typography-initialized")||a("#"+g).addClass("typography-initialized"),c=!1,f||redux_change(e)}}(jQuery);
ReduxCore/inc/scssphp/scss.inc.php DELETED
@@ -1,4582 +0,0 @@
1
- <?php
2
- /**
3
- * SCSS compiler written in PHP
4
- *
5
- * @copyright 2012-2013 Leaf Corcoran
6
- *
7
- * @license http://opensource.org/licenses/gpl-license GPL-3.0
8
- * @license http://opensource.org/licenses/MIT MIT
9
- *
10
- * @link http://leafo.net/scssphp
11
- */
12
-
13
- /**
14
- * The scss compiler and parser.
15
- *
16
- * Converting SCSS to CSS is a three stage process. The incoming file is parsed
17
- * by `scss_parser` into a syntax tree, then it is compiled into another tree
18
- * representing the CSS structure by `scssc`. The CSS tree is fed into a
19
- * formatter, like `scss_formatter` which then outputs CSS as a string.
20
- *
21
- * During the first compile, all values are *reduced*, which means that their
22
- * types are brought to the lowest form before being dump as strings. This
23
- * handles math equations, variable dereferences, and the like.
24
- *
25
- * The `parse` function of `scssc` is the entry point.
26
- *
27
- * In summary:
28
- *
29
- * The `scssc` class creates an instance of the parser, feeds it SCSS code,
30
- * then transforms the resulting tree to a CSS tree. This class also holds the
31
- * evaluation context, such as all available mixins and variables at any given
32
- * time.
33
- *
34
- * The `scss_parser` class is only concerned with parsing its input.
35
- *
36
- * The `scss_formatter` takes a CSS tree, and dumps it to a formatted string,
37
- * handling things like indentation.
38
- */
39
-
40
- /**
41
- * SCSS compiler
42
- *
43
- * @author Leaf Corcoran <leafot@gmail.com>
44
- */
45
- class scssc {
46
- static public $VERSION = 'v0.0.12';
47
-
48
- static protected $operatorNames = array(
49
- '+' => "add",
50
- '-' => "sub",
51
- '*' => "mul",
52
- '/' => "div",
53
- '%' => "mod",
54
-
55
- '==' => "eq",
56
- '!=' => "neq",
57
- '<' => "lt",
58
- '>' => "gt",
59
-
60
- '<=' => "lte",
61
- '>=' => "gte",
62
- );
63
-
64
- static protected $namespaces = array(
65
- "special" => "%",
66
- "mixin" => "@",
67
- "function" => "^",
68
- );
69
-
70
- static protected $unitTable = array(
71
- "in" => array(
72
- "in" => 1,
73
- "pt" => 72,
74
- "pc" => 6,
75
- "cm" => 2.54,
76
- "mm" => 25.4,
77
- "px" => 96,
78
- )
79
- );
80
-
81
- static public $true = array("keyword", "true");
82
- static public $false = array("keyword", "false");
83
- static public $null = array("null");
84
- static public $parent = null;
85
-
86
- static public $defaultValue = array("keyword", "");
87
- static public $selfSelector = array("self");
88
-
89
- protected $importPaths = array("");
90
- protected $importCache = array();
91
-
92
- protected $userFunctions = array();
93
- protected $registeredVars = array();
94
-
95
- protected $numberPrecision = 5;
96
-
97
- protected $formatter = "scss_formatter_nested";
98
-
99
- /**
100
- * Compile scss
101
- *
102
- * @param string $code
103
- * @param string $name
104
- *
105
- * @return string
106
- */
107
- public function compile($code, $name = null)
108
- {
109
- $this->indentLevel = -1;
110
- $this->commentsSeen = array();
111
- $this->extends = array();
112
- $this->extendsMap = array();
113
- $this->parsedFiles = array();
114
- $this->env = null;
115
- $this->scope = null;
116
-
117
- $locale = setlocale(LC_NUMERIC, 0);
118
- setlocale(LC_NUMERIC, "C");
119
-
120
- $this->parser = new scss_parser($name);
121
-
122
- $tree = $this->parser->parse($code);
123
-
124
- $this->formatter = new $this->formatter();
125
-
126
- $this->pushEnv($tree);
127
- $this->injectVariables($this->registeredVars);
128
- $this->compileRoot($tree);
129
- $this->popEnv();
130
-
131
- $out = $this->formatter->format($this->scope);
132
-
133
- setlocale(LC_NUMERIC, $locale);
134
-
135
- return $out;
136
- }
137
-
138
- protected function isSelfExtend($target, $origin) {
139
- foreach ($origin as $sel) {
140
- if (in_array($target, $sel)) {
141
- return true;
142
- }
143
- }
144
-
145
- return false;
146
- }
147
-
148
- protected function pushExtends($target, $origin) {
149
- if ($this->isSelfExtend($target, $origin)) {
150
- return;
151
- }
152
-
153
- $i = count($this->extends);
154
- $this->extends[] = array($target, $origin);
155
-
156
- foreach ($target as $part) {
157
- if (isset($this->extendsMap[$part])) {
158
- $this->extendsMap[$part][] = $i;
159
- } else {
160
- $this->extendsMap[$part] = array($i);
161
- }
162
- }
163
- }
164
-
165
- protected function makeOutputBlock($type, $selectors = null) {
166
- $out = new stdClass;
167
- $out->type = $type;
168
- $out->lines = array();
169
- $out->children = array();
170
- $out->parent = $this->scope;
171
- $out->selectors = $selectors;
172
- $out->depth = $this->env->depth;
173
-
174
- return $out;
175
- }
176
-
177
- protected function matchExtendsSingle($single, &$outOrigin) {
178
- $counts = array();
179
- foreach ($single as $part) {
180
- if (!is_string($part)) return false; // hmm
181
-
182
- if (isset($this->extendsMap[$part])) {
183
- foreach ($this->extendsMap[$part] as $idx) {
184
- $counts[$idx] =
185
- isset($counts[$idx]) ? $counts[$idx] + 1 : 1;
186
- }
187
- }
188
- }
189
-
190
- $outOrigin = array();
191
- $found = false;
192
-
193
- foreach ($counts as $idx => $count) {
194
- list($target, $origin) = $this->extends[$idx];
195
-
196
- // check count
197
- if ($count != count($target)) continue;
198
-
199
- // check if target is subset of single
200
- if (array_diff(array_intersect($single, $target), $target)) continue;
201
-
202
- $rem = array_diff($single, $target);
203
-
204
- foreach ($origin as $j => $new) {
205
- // prevent infinite loop when target extends itself
206
- foreach ($new as $new_selector) {
207
- if (!array_diff($single, $new_selector)) {
208
- continue 2;
209
- }
210
- }
211
-
212
- $origin[$j][count($origin[$j]) - 1] = $this->combineSelectorSingle(end($new), $rem);
213
- }
214
-
215
- $outOrigin = array_merge($outOrigin, $origin);
216
-
217
- $found = true;
218
- }
219
-
220
- return $found;
221
- }
222
-
223
- protected function combineSelectorSingle($base, $other) {
224
- $tag = null;
225
- $out = array();
226
-
227
- foreach (array($base, $other) as $single) {
228
- foreach ($single as $part) {
229
- if (preg_match('/^[^\[.#:]/', $part)) {
230
- $tag = $part;
231
- } else {
232
- $out[] = $part;
233
- }
234
- }
235
- }
236
-
237
- if ($tag) {
238
- array_unshift($out, $tag);
239
- }
240
-
241
- return $out;
242
- }
243
-
244
- protected function matchExtends($selector, &$out, $from = 0, $initial=true) {
245
- foreach ($selector as $i => $part) {
246
- if ($i < $from) continue;
247
-
248
- if ($this->matchExtendsSingle($part, $origin)) {
249
- $before = array_slice($selector, 0, $i);
250
- $after = array_slice($selector, $i + 1);
251
-
252
- foreach ($origin as $new) {
253
- $k = 0;
254
-
255
- // remove shared parts
256
- if ($initial) {
257
- foreach ($before as $k => $val) {
258
- if (!isset($new[$k]) || $val != $new[$k]) {
259
- break;
260
- }
261
- }
262
- }
263
-
264
- $result = array_merge(
265
- $before,
266
- $k > 0 ? array_slice($new, $k) : $new,
267
- $after);
268
-
269
-
270
- if ($result == $selector) continue;
271
- $out[] = $result;
272
-
273
- // recursively check for more matches
274
- $this->matchExtends($result, $out, $i, false);
275
-
276
- // selector sequence merging
277
- if (!empty($before) && count($new) > 1) {
278
- $result2 = array_merge(
279
- array_slice($new, 0, -1),
280
- $k > 0 ? array_slice($before, $k) : $before,
281
- array_slice($new, -1),
282
- $after);
283
-
284
- $out[] = $result2;
285
- }
286
- }
287
- }
288
- }
289
- }
290
-
291
- protected function flattenSelectors($block, $parentKey = null) {
292
- if ($block->selectors) {
293
- $selectors = array();
294
- foreach ($block->selectors as $s) {
295
- $selectors[] = $s;
296
- if (!is_array($s)) continue;
297
- // check extends
298
- if (!empty($this->extendsMap)) {
299
- $this->matchExtends($s, $selectors);
300
- }
301
- }
302
-
303
- $block->selectors = array();
304
- $placeholderSelector = false;
305
- foreach ($selectors as $selector) {
306
- if ($this->hasSelectorPlaceholder($selector)) {
307
- $placeholderSelector = true;
308
- continue;
309
- }
310
- $block->selectors[] = $this->compileSelector($selector);
311
- }
312
-
313
- if ($placeholderSelector && 0 == count($block->selectors) && null !== $parentKey) {
314
- unset($block->parent->children[$parentKey]);
315
- return;
316
- }
317
- }
318
-
319
- foreach ($block->children as $key => $child) {
320
- $this->flattenSelectors($child, $key);
321
- }
322
- }
323
-
324
- protected function compileRoot($rootBlock)
325
- {
326
- $this->scope = $this->makeOutputBlock('root');
327
-
328
- $this->compileChildren($rootBlock->children, $this->scope);
329
- $this->flattenSelectors($this->scope);
330
- }
331
-
332
- protected function compileMedia($media) {
333
- $this->pushEnv($media);
334
-
335
- $mediaQuery = $this->compileMediaQuery($this->multiplyMedia($this->env));
336
-
337
- if (!empty($mediaQuery)) {
338
-
339
- $this->scope = $this->makeOutputBlock("media", array($mediaQuery));
340
-
341
- $parentScope = $this->mediaParent($this->scope);
342
-
343
- $parentScope->children[] = $this->scope;
344
-
345
- // top level properties in a media cause it to be wrapped
346
- $needsWrap = false;
347
- foreach ($media->children as $child) {
348
- $type = $child[0];
349
- if ($type !== 'block' && $type !== 'media' && $type !== 'directive') {
350
- $needsWrap = true;
351
- break;
352
- }
353
- }
354
-
355
- if ($needsWrap) {
356
- $wrapped = (object)array(
357
- "selectors" => array(),
358
- "children" => $media->children
359
- );
360
- $media->children = array(array("block", $wrapped));
361
- }
362
-
363
- $this->compileChildren($media->children, $this->scope);
364
-
365
- $this->scope = $this->scope->parent;
366
- }
367
-
368
- $this->popEnv();
369
- }
370
-
371
- protected function mediaParent($scope) {
372
- while (!empty($scope->parent)) {
373
- if (!empty($scope->type) && $scope->type != "media") {
374
- break;
375
- }
376
- $scope = $scope->parent;
377
- }
378
-
379
- return $scope;
380
- }
381
-
382
- // TODO refactor compileNestedBlock and compileMedia into same thing
383
- protected function compileNestedBlock($block, $selectors) {
384
- $this->pushEnv($block);
385
-
386
- $this->scope = $this->makeOutputBlock($block->type, $selectors);
387
- $this->scope->parent->children[] = $this->scope;
388
- $this->compileChildren($block->children, $this->scope);
389
-
390
- $this->scope = $this->scope->parent;
391
- $this->popEnv();
392
- }
393
-
394
- /**
395
- * Recursively compiles a block.
396
- *
397
- * A block is analogous to a CSS block in most cases. A single SCSS document
398
- * is encapsulated in a block when parsed, but it does not have parent tags
399
- * so all of its children appear on the root level when compiled.
400
- *
401
- * Blocks are made up of selectors and children.
402
- *
403
- * The children of a block are just all the blocks that are defined within.
404
- *
405
- * Compiling the block involves pushing a fresh environment on the stack,
406
- * and iterating through the props, compiling each one.
407
- *
408
- * @see scss::compileChild()
409
- *
410
- * @param \StdClass $block
411
- */
412
- protected function compileBlock($block) {
413
- $env = $this->pushEnv($block);
414
-
415
- $env->selectors =
416
- array_map(array($this, "evalSelector"), $block->selectors);
417
-
418
- $out = $this->makeOutputBlock(null, $this->multiplySelectors($env));
419
- $this->scope->children[] = $out;
420
- $this->compileChildren($block->children, $out);
421
-
422
- $this->popEnv();
423
- }
424
-
425
- // joins together .classes and #ids
426
- protected function flattenSelectorSingle($single) {
427
- $joined = array();
428
- foreach ($single as $part) {
429
- if (empty($joined) ||
430
- !is_string($part) ||
431
- preg_match('/[\[.:#%]/', $part))
432
- {
433
- $joined[] = $part;
434
- continue;
435
- }
436
-
437
- if (is_array(end($joined))) {
438
- $joined[] = $part;
439
- } else {
440
- $joined[count($joined) - 1] .= $part;
441
- }
442
- }
443
-
444
- return $joined;
445
- }
446
-
447
- // replaces all the interpolates
448
- protected function evalSelector($selector) {
449
- return array_map(array($this, "evalSelectorPart"), $selector);
450
- }
451
-
452
- protected function evalSelectorPart($piece) {
453
- foreach ($piece as &$p) {
454
- if (!is_array($p)) continue;
455
-
456
- switch ($p[0]) {
457
- case "interpolate":
458
- $p = $this->compileValue($p);
459
- break;
460
- case "string":
461
- $p = $this->compileValue($p);
462
- break;
463
- }
464
- }
465
-
466
- return $this->flattenSelectorSingle($piece);
467
- }
468
-
469
- // compiles to string
470
- // self(&) should have been replaced by now
471
- protected function compileSelector($selector) {
472
- if (!is_array($selector)) return $selector; // media and the like
473
-
474
- return implode(" ", array_map(
475
- array($this, "compileSelectorPart"), $selector));
476
- }
477
-
478
- protected function compileSelectorPart($piece) {
479
- foreach ($piece as &$p) {
480
- if (!is_array($p)) continue;
481
-
482
- switch ($p[0]) {
483
- case "self":
484
- $p = "&";
485
- break;
486
- default:
487
- $p = $this->compileValue($p);
488
- break;
489
- }
490
- }
491
-
492
- return implode($piece);
493
- }
494
-
495
- protected function hasSelectorPlaceholder($selector)
496
- {
497
- if (!is_array($selector)) return false;
498
-
499
- foreach ($selector as $parts) {
500
- foreach ($parts as $part) {
501
- if ('%' == $part[0]) {
502
- return true;
503
- }
504
- }
505
- }
506
-
507
- return false;
508
- }
509
-
510
- protected function compileChildren($stms, $out) {
511
- foreach ($stms as $stm) {
512
- $ret = $this->compileChild($stm, $out);
513
- if (isset($ret)) return $ret;
514
- }
515
- }
516
-
517
- protected function compileMediaQuery($queryList) {
518
- $out = "@media";
519
- $first = true;
520
- foreach ($queryList as $query){
521
- $type = null;
522
- $parts = array();
523
- foreach ($query as $q) {
524
- switch ($q[0]) {
525
- case "mediaType":
526
- if ($type) {
527
- $type = $this->mergeMediaTypes($type, array_map(array($this, "compileValue"), array_slice($q, 1)));
528
- if (empty($type)) { // merge failed
529
- return null;
530
- }
531
- } else {
532
- $type = array_map(array($this, "compileValue"), array_slice($q, 1));
533
- }
534
- break;
535
- case "mediaExp":
536
- if (isset($q[2])) {
537
- $parts[] = "(". $this->compileValue($q[1]) . $this->formatter->assignSeparator . $this->compileValue($q[2]) . ")";
538
- } else {
539
- $parts[] = "(" . $this->compileValue($q[1]) . ")";
540
- }
541
- break;
542
- }
543
- }
544
- if ($type) {
545
- array_unshift($parts, implode(' ', array_filter($type)));
546
- }
547
- if (!empty($parts)) {
548
- if ($first) {
549
- $first = false;
550
- $out .= " ";
551
- } else {
552
- $out .= $this->formatter->tagSeparator;
553
- }
554
- $out .= implode(" and ", $parts);
555
- }
556
- }
557
- return $out;
558
- }
559
-
560
- protected function mergeMediaTypes($type1, $type2) {
561
- if (empty($type1)) {
562
- return $type2;
563
- }
564
- if (empty($type2)) {
565
- return $type1;
566
- }
567
- $m1 = '';
568
- $t1 = '';
569
- if (count($type1) > 1) {
570
- $m1= strtolower($type1[0]);
571
- $t1= strtolower($type1[1]);
572
- } else {
573
- $t1 = strtolower($type1[0]);
574
- }
575
- $m2 = '';
576
- $t2 = '';
577
- if (count($type2) > 1) {
578
- $m2 = strtolower($type2[0]);
579
- $t2 = strtolower($type2[1]);
580
- } else {
581
- $t2 = strtolower($type2[0]);
582
- }
583
- if (($m1 == 'not') ^ ($m2 == 'not')) {
584
- if ($t1 == $t2) {
585
- return null;
586
- }
587
- return array(
588
- $m1 == 'not' ? $m2 : $m1,
589
- $m1 == 'not' ? $t2 : $t1
590
- );
591
- } elseif ($m1 == 'not' && $m2 == 'not') {
592
- # CSS has no way of representing "neither screen nor print"
593
- if ($t1 != $t2) {
594
- return null;
595
- }
596
- return array('not', $t1);
597
- } elseif ($t1 != $t2) {
598
- return null;
599
- } else { // t1 == t2, neither m1 nor m2 are "not"
600
- return array(empty($m1)? $m2 : $m1, $t1);
601
- }
602
- }
603
-
604
- // returns true if the value was something that could be imported
605
- protected function compileImport($rawPath, $out) {
606
- if ($rawPath[0] == "string") {
607
- $path = $this->compileStringContent($rawPath);
608
- if ($path = $this->findImport($path)) {
609
- $this->importFile($path, $out);
610
- return true;
611
- }
612
- return false;
613
- }
614
- if ($rawPath[0] == "list") {
615
- // handle a list of strings
616
- if (count($rawPath[2]) == 0) return false;
617
- foreach ($rawPath[2] as $path) {
618
- if ($path[0] != "string") return false;
619
- }
620
-
621
- foreach ($rawPath[2] as $path) {
622
- $this->compileImport($path, $out);
623
- }
624
-
625
- return true;
626
- }
627
-
628
- return false;
629
- }
630
-
631
- // return a value to halt execution
632
- protected function compileChild($child, $out) {
633
- $this->sourcePos = isset($child[-1]) ? $child[-1] : -1;
634
- $this->sourceParser = isset($child[-2]) ? $child[-2] : $this->parser;
635
-
636
- switch ($child[0]) {
637
- case "import":
638
- list(,$rawPath) = $child;
639
- $rawPath = $this->reduce($rawPath);
640
- if (!$this->compileImport($rawPath, $out)) {
641
- $out->lines[] = "@import " . $this->compileValue($rawPath) . ";";
642
- }
643
- break;
644
- case "directive":
645
- list(, $directive) = $child;
646
- $s = "@" . $directive->name;
647
- if (!empty($directive->value)) {
648
- $s .= " " . $this->compileValue($directive->value);
649
- }
650
- $this->compileNestedBlock($directive, array($s));
651
- break;
652
- case "media":
653
- $this->compileMedia($child[1]);
654
- break;
655
- case "block":
656
- $this->compileBlock($child[1]);
657
- break;
658
- case "charset":
659
- $out->lines[] = "@charset ".$this->compileValue($child[1]).";";
660
- break;
661
- case "assign":
662
- list(,$name, $value) = $child;
663
- if ($name[0] == "var") {
664
- $isDefault = !empty($child[3]);
665
-
666
- if ($isDefault) {
667
- $existingValue = $this->get($name[1], true);
668
- $shouldSet = $existingValue === true || $existingValue == self::$null;
669
- }
670
-
671
- if (!$isDefault || $shouldSet) {
672
- $this->set($name[1], $this->reduce($value));
673
- }
674
- break;
675
- }
676
-
677
- // if the value reduces to null from something else then
678
- // the property should be discarded
679
- if ($value[0] != "null") {
680
- $value = $this->reduce($value);
681
- if ($value[0] == "null") {
682
- break;
683
- }
684
- }
685
-
686
- $compiledValue = $this->compileValue($value);
687
- $out->lines[] = $this->formatter->property(
688
- $this->compileValue($name),
689
- $compiledValue);
690
- break;
691
- case "comment":
692
- $out->lines[] = $child[1];
693
- break;
694
- case "mixin":
695
- case "function":
696
- list(,$block) = $child;
697
- $this->set(self::$namespaces[$block->type] . $block->name, $block);
698
- break;
699
- case "extend":
700
- list(, $selectors) = $child;
701
- foreach ($selectors as $sel) {
702
- // only use the first one
703
- $sel = current($this->evalSelector($sel));
704
- $this->pushExtends($sel, $out->selectors);
705
- }
706
- break;
707
- case "if":
708
- list(, $if) = $child;
709
- if ($this->isTruthy($this->reduce($if->cond, true))) {
710
- return $this->compileChildren($if->children, $out);
711
- } else {
712
- foreach ($if->cases as $case) {
713
- if ($case->type == "else" ||
714
- $case->type == "elseif" && $this->isTruthy($this->reduce($case->cond)))
715
- {
716
- return $this->compileChildren($case->children, $out);
717
- }
718
- }
719
- }
720
- break;
721
- case "return":
722
- return $this->reduce($child[1], true);
723
- case "each":
724
- list(,$each) = $child;
725
- $list = $this->coerceList($this->reduce($each->list));
726
- foreach ($list[2] as $item) {
727
- $this->pushEnv();
728
- $this->set($each->var, $item);
729
- // TODO: allow return from here
730
- $this->compileChildren($each->children, $out);
731
- $this->popEnv();
732
- }
733
- break;
734
- case "while":
735
- list(,$while) = $child;
736
- while ($this->isTruthy($this->reduce($while->cond, true))) {
737
- $ret = $this->compileChildren($while->children, $out);
738
- if ($ret) return $ret;
739
- }
740
- break;
741
- case "for":
742
- list(,$for) = $child;
743
- $start = $this->reduce($for->start, true);
744
- $start = $start[1];
745
- $end = $this->reduce($for->end, true);
746
- $end = $end[1];
747
- $d = $start < $end ? 1 : -1;
748
-
749
- while (true) {
750
- if ((!$for->until && $start - $d == $end) ||
751
- ($for->until && $start == $end))
752
- {
753
- break;
754
- }
755
-
756
- $this->set($for->var, array("number", $start, ""));
757
- $start += $d;
758
-
759
- $ret = $this->compileChildren($for->children, $out);
760
- if ($ret) return $ret;
761
- }
762
-
763
- break;
764
- case "nestedprop":
765
- list(,$prop) = $child;
766
- $prefixed = array();
767
- $prefix = $this->compileValue($prop->prefix) . "-";
768
- foreach ($prop->children as $child) {
769
- if ($child[0] == "assign") {
770
- array_unshift($child[1][2], $prefix);
771
- }
772
- if ($child[0] == "nestedprop") {
773
- array_unshift($child[1]->prefix[2], $prefix);
774
- }
775
- $prefixed[] = $child;
776
- }
777
- $this->compileChildren($prefixed, $out);
778
- break;
779
- case "include": // including a mixin
780
- list(,$name, $argValues, $content) = $child;
781
- $mixin = $this->get(self::$namespaces["mixin"] . $name, false);
782
- if (!$mixin) {
783
- $this->throwError("Undefined mixin $name");
784
- }
785
-
786
- $callingScope = $this->env;
787
-
788
- // push scope, apply args
789
- $this->pushEnv();
790
- if ($this->env->depth > 0) {
791
- $this->env->depth--;
792
- }
793
-
794
- if (isset($content)) {
795
- $content->scope = $callingScope;
796
- $this->setRaw(self::$namespaces["special"] . "content", $content);
797
- }
798
-
799
- if (isset($mixin->args)) {
800
- $this->applyArguments($mixin->args, $argValues);
801
- }
802
-
803
- foreach ($mixin->children as $child) {
804
- $this->compileChild($child, $out);
805
- }
806
-
807
- $this->popEnv();
808
-
809
- break;
810
- case "mixin_content":
811
- $content = $this->get(self::$namespaces["special"] . "content");
812
- if (!isset($content)) {
813
- $this->throwError("Expected @content inside of mixin");
814
- }
815
-
816
- $strongTypes = array('include', 'block', 'for', 'while');
817
- foreach ($content->children as $child) {
818
- $this->storeEnv = (in_array($child[0], $strongTypes))
819
- ? null
820
- : $content->scope;
821
-
822
- $this->compileChild($child, $out);
823
- }
824
-
825
- unset($this->storeEnv);
826
- break;
827
- case "debug":
828
- list(,$value, $pos) = $child;
829
- $line = $this->parser->getLineNo($pos);
830
- $value = $this->compileValue($this->reduce($value, true));
831
- //fwrite(STDERR, "Line $line DEBUG: $value\n");
832
- break;
833
- default:
834
- $this->throwError("unknown child type: $child[0]");
835
- }
836
- }
837
-
838
- protected function expToString($exp) {
839
- list(, $op, $left, $right, $inParens, $whiteLeft, $whiteRight) = $exp;
840
- $content = array($this->reduce($left));
841
- if ($whiteLeft) $content[] = " ";
842
- $content[] = $op;
843
- if ($whiteRight) $content[] = " ";
844
- $content[] = $this->reduce($right);
845
- return array("string", "", $content);
846
- }
847
-
848
- protected function isTruthy($value) {
849
- return $value != self::$false && $value != self::$null;
850
- }
851
-
852
- // should $value cause its operand to eval
853
- protected function shouldEval($value) {
854
- switch ($value[0]) {
855
- case "exp":
856
- if ($value[1] == "/") {
857
- return $this->shouldEval($value[2], $value[3]);
858
- }
859
- case "var":
860
- case "fncall":
861
- return true;
862
- }
863
- return false;
864
- }
865
-
866
- protected function reduce($value, $inExp = false) {
867
- list($type) = $value;
868
- switch ($type) {
869
- case "exp":
870
- list(, $op, $left, $right, $inParens) = $value;
871
- $opName = isset(self::$operatorNames[$op]) ? self::$operatorNames[$op] : $op;
872
-
873
- $inExp = $inExp || $this->shouldEval($left) || $this->shouldEval($right);
874
-
875
- $left = $this->reduce($left, true);
876
- $right = $this->reduce($right, true);
877
-
878
- // only do division in special cases
879
- if ($opName == "div" && !$inParens && !$inExp) {
880
- if ($left[0] != "color" && $right[0] != "color") {
881
- return $this->expToString($value);
882
- }
883
- }
884
-
885
- $left = $this->coerceForExpression($left);
886
- $right = $this->coerceForExpression($right);
887
-
888
- $ltype = $left[0];
889
- $rtype = $right[0];
890
-
891
- // this tries:
892
- // 1. op_[op name]_[left type]_[right type]
893
- // 2. op_[left type]_[right type] (passing the op as first arg
894
- // 3. op_[op name]
895
- $fn = "op_${opName}_${ltype}_${rtype}";
896
- if (is_callable(array($this, $fn)) ||
897
- (($fn = "op_${ltype}_${rtype}") &&
898
- is_callable(array($this, $fn)) &&
899
- $passOp = true) ||
900
- (($fn = "op_${opName}") &&
901
- is_callable(array($this, $fn)) &&
902
- $genOp = true))
903
- {
904
- $unitChange = false;
905
- if (!isset($genOp) &&
906
- $left[0] == "number" && $right[0] == "number")
907
- {
908
- if ($opName == "mod" && $right[2] != "") {
909
- $this->throwError("Cannot modulo by a number with units: $right[1]$right[2].");
910
- }
911
-
912
- $unitChange = true;
913
- $emptyUnit = $left[2] == "" || $right[2] == "";
914
- $targetUnit = "" != $left[2] ? $left[2] : $right[2];
915
-
916
- if ($opName != "mul") {
917
- $left[2] = "" != $left[2] ? $left[2] : $targetUnit;
918
- $right[2] = "" != $right[2] ? $right[2] : $targetUnit;
919
- }
920
-
921
- if ($opName != "mod") {
922
- $left = $this->normalizeNumber($left);
923
- $right = $this->normalizeNumber($right);
924
- }
925
-
926
- if ($opName == "div" && !$emptyUnit && $left[2] == $right[2]) {
927
- $targetUnit = "";
928
- }
929
-
930
- if ($opName == "mul") {
931
- $left[2] = "" != $left[2] ? $left[2] : $right[2];
932
- $right[2] = "" != $right[2] ? $right[2] : $left[2];
933
- } elseif ($opName == "div" && $left[2] == $right[2]) {
934
- $left[2] = "";
935
- $right[2] = "";
936
- }
937
- }
938
-
939
- $shouldEval = $inParens || $inExp;
940
- if (isset($passOp)) {
941
- $out = $this->$fn($op, $left, $right, $shouldEval);
942
- } else {
943
- $out = $this->$fn($left, $right, $shouldEval);
944
- }
945
-
946
- if (isset($out)) {
947
- if ($unitChange && $out[0] == "number") {
948
- $out = $this->coerceUnit($out, $targetUnit);
949
- }
950
- return $out;
951
- }
952
- }
953
-
954
- return $this->expToString($value);
955
- case "unary":
956
- list(, $op, $exp, $inParens) = $value;
957
- $inExp = $inExp || $this->shouldEval($exp);
958
-
959
- $exp = $this->reduce($exp);
960
- if ($exp[0] == "number") {
961
- switch ($op) {
962
- case "+":
963
- return $exp;
964
- case "-":
965
- $exp[1] *= -1;
966
- return $exp;
967
- }
968
- }
969
-
970
- if ($op == "not") {
971
- if ($inExp || $inParens) {
972
- if ($exp == self::$false) {
973
- return self::$true;
974
- } else {
975
- return self::$false;
976
- }
977
- } else {
978
- $op = $op . " ";
979
- }
980
- }
981
-
982
- return array("string", "", array($op, $exp));
983
- case "var":
984
- list(, $name) = $value;
985
- return $this->reduce($this->get($name));
986
- case "list":
987
- foreach ($value[2] as &$item) {
988
- $item = $this->reduce($item);
989
- }
990
- return $value;
991
- case "string":
992
- foreach ($value[2] as &$item) {
993
- if (is_array($item)) {
994
- $item = $this->reduce($item);
995
- }
996
- }
997
- return $value;
998
- case "interpolate":
999
- $value[1] = $this->reduce($value[1]);
1000
- return $value;
1001
- case "fncall":
1002
- list(,$name, $argValues) = $value;
1003
-
1004
- // user defined function?
1005
- $func = $this->get(self::$namespaces["function"] . $name, false);
1006
- if ($func) {
1007
- $this->pushEnv();
1008
-
1009
- // set the args
1010
- if (isset($func->args)) {
1011
- $this->applyArguments($func->args, $argValues);
1012
- }
1013
-
1014
- // throw away lines and children
1015
- $tmp = (object)array(
1016
- "lines" => array(),
1017
- "children" => array()
1018
- );
1019
- $ret = $this->compileChildren($func->children, $tmp);
1020
- $this->popEnv();
1021
-
1022
- return !isset($ret) ? self::$defaultValue : $ret;
1023
- }
1024
-
1025
- // built in function
1026
- if ($this->callBuiltin($name, $argValues, $returnValue)) {
1027
- return $returnValue;
1028
- }
1029
-
1030
- // need to flatten the arguments into a list
1031
- $listArgs = array();
1032
- foreach ((array)$argValues as $arg) {
1033
- if (empty($arg[0])) {
1034
- $listArgs[] = $this->reduce($arg[1]);
1035
- }
1036
- }
1037
- return array("function", $name, array("list", ",", $listArgs));
1038
- default:
1039
- return $value;
1040
- }
1041
- }
1042
-
1043
- public function normalizeValue($value) {
1044
- $value = $this->coerceForExpression($this->reduce($value));
1045
- list($type) = $value;
1046
-
1047
- switch ($type) {
1048
- case "list":
1049
- $value = $this->extractInterpolation($value);
1050
- if ($value[0] != "list") {
1051
- return array("keyword", $this->compileValue($value));
1052
- }
1053
- foreach ($value[2] as $key => $item) {
1054
- $value[2][$key] = $this->normalizeValue($item);
1055
- }
1056
- return $value;
1057
- case "number":
1058
- return $this->normalizeNumber($value);
1059
- default:
1060
- return $value;
1061
- }
1062
- }
1063
-
1064
- // just does physical lengths for now
1065
- protected function normalizeNumber($number) {
1066
- list(, $value, $unit) = $number;
1067
- if (isset(self::$unitTable["in"][$unit])) {
1068
- $conv = self::$unitTable["in"][$unit];
1069
- return array("number", $value / $conv, "in");
1070
- }
1071
- return $number;
1072
- }
1073
-
1074
- // $number should be normalized
1075
- protected function coerceUnit($number, $unit) {
1076
- list(, $value, $baseUnit) = $number;
1077
- if (isset(self::$unitTable[$baseUnit][$unit])) {
1078
- $value = $value * self::$unitTable[$baseUnit][$unit];
1079
- }
1080
-
1081
- return array("number", $value, $unit);
1082
- }
1083
-
1084
- protected function op_add_number_number($left, $right) {
1085
- return array("number", $left[1] + $right[1], $left[2]);
1086
- }
1087
-
1088
- protected function op_mul_number_number($left, $right) {
1089
- return array("number", $left[1] * $right[1], $left[2]);
1090
- }
1091
-
1092
- protected function op_sub_number_number($left, $right) {
1093
- return array("number", $left[1] - $right[1], $left[2]);
1094
- }
1095
-
1096
- protected function op_div_number_number($left, $right) {
1097
- return array("number", $left[1] / $right[1], $left[2]);
1098
- }
1099
-
1100
- protected function op_mod_number_number($left, $right) {
1101
- return array("number", $left[1] % $right[1], $left[2]);
1102
- }
1103
-
1104
- // adding strings
1105
- protected function op_add($left, $right) {
1106
- if ($strLeft = $this->coerceString($left)) {
1107
- if ($right[0] == "string") {
1108
- $right[1] = "";
1109
- }
1110
- $strLeft[2][] = $right;
1111
- return $strLeft;
1112
- }
1113
-
1114
- if ($strRight = $this->coerceString($right)) {
1115
- if ($left[0] == "string") {
1116
- $left[1] = "";
1117
- }
1118
- array_unshift($strRight[2], $left);
1119
- return $strRight;
1120
- }
1121
- }
1122
-
1123
- protected function op_and($left, $right, $shouldEval) {
1124
- if (!$shouldEval) return;
1125
- if ($left != self::$false) return $right;
1126
- return $left;
1127
- }
1128
-
1129
- protected function op_or($left, $right, $shouldEval) {
1130
- if (!$shouldEval) return;
1131
- if ($left != self::$false) return $left;
1132
- return $right;
1133
- }
1134
-
1135
- protected function op_color_color($op, $left, $right) {
1136
- $out = array('color');
1137
- foreach (range(1, 3) as $i) {
1138
- $lval = isset($left[$i]) ? $left[$i] : 0;
1139
- $rval = isset($right[$i]) ? $right[$i] : 0;
1140
- switch ($op) {
1141
- case '+':
1142
- $out[] = $lval + $rval;
1143
- break;
1144
- case '-':
1145
- $out[] = $lval - $rval;
1146
- break;
1147
- case '*':
1148
- $out[] = $lval * $rval;
1149
- break;
1150
- case '%':
1151
- $out[] = $lval % $rval;
1152
- break;
1153
- case '/':
1154
- if ($rval == 0) {
1155
- $this->throwError("color: Can't divide by zero");
1156
- }
1157
- $out[] = $lval / $rval;
1158
- break;
1159
- case "==":
1160
- return $this->op_eq($left, $right);
1161
- case "!=":
1162
- return $this->op_neq($left, $right);
1163
- default:
1164
- $this->throwError("color: unknown op $op");
1165
- }
1166
- }
1167
-
1168
- if (isset($left[4])) $out[4] = $left[4];
1169
- elseif (isset($right[4])) $out[4] = $right[4];
1170
-
1171
- return $this->fixColor($out);
1172
- }
1173
-
1174
- protected function op_color_number($op, $left, $right) {
1175
- $value = $right[1];
1176
- return $this->op_color_color($op, $left,
1177
- array("color", $value, $value, $value));
1178
- }
1179
-
1180
- protected function op_number_color($op, $left, $right) {
1181
- $value = $left[1];
1182
- return $this->op_color_color($op,
1183
- array("color", $value, $value, $value), $right);
1184
- }
1185
-
1186
- protected function op_eq($left, $right) {
1187
- if (($lStr = $this->coerceString($left)) && ($rStr = $this->coerceString($right))) {
1188
- $lStr[1] = "";
1189
- $rStr[1] = "";
1190
- return $this->toBool($this->compileValue($lStr) == $this->compileValue($rStr));
1191
- }
1192
-
1193
- return $this->toBool($left == $right);
1194
- }
1195
-
1196
- protected function op_neq($left, $right) {
1197
- return $this->toBool($left != $right);
1198
- }
1199
-
1200
- protected function op_gte_number_number($left, $right) {
1201
- return $this->toBool($left[1] >= $right[1]);
1202
- }
1203
-
1204
- protected function op_gt_number_number($left, $right) {
1205
- return $this->toBool($left[1] > $right[1]);
1206
- }
1207
-
1208
- protected function op_lte_number_number($left, $right) {
1209
- return $this->toBool($left[1] <= $right[1]);
1210
- }
1211
-
1212
- protected function op_lt_number_number($left, $right) {
1213
- return $this->toBool($left[1] < $right[1]);
1214
- }
1215
-
1216
- public function toBool($thing) {
1217
- return $thing ? self::$true : self::$false;
1218
- }
1219
-
1220
- /**
1221
- * Compiles a primitive value into a CSS property value.
1222
- *
1223
- * Values in scssphp are typed by being wrapped in arrays, their format is
1224
- * typically:
1225
- *
1226
- * array(type, contents [, additional_contents]*)
1227
- *
1228
- * The input is expected to be reduced. This function will not work on
1229
- * things like expressions and variables.
1230
- *
1231
- * @param array $value
1232
- */
1233
- protected function compileValue($value) {
1234
- $value = $this->reduce($value);
1235
-
1236
- list($type) = $value;
1237
- switch ($type) {
1238
- case "keyword":
1239
- return $value[1];
1240
- case "color":
1241
- // [1] - red component (either number for a %)
1242
- // [2] - green component
1243
- // [3] - blue component
1244
- // [4] - optional alpha component
1245
- list(, $r, $g, $b) = $value;
1246
-
1247
- $r = round($r);
1248
- $g = round($g);
1249
- $b = round($b);
1250
-
1251
- if (count($value) == 5 && $value[4] != 1) { // rgba
1252
- return 'rgba('.$r.', '.$g.', '.$b.', '.$value[4].')';
1253
- }
1254
-
1255
- $h = sprintf("#%02x%02x%02x", $r, $g, $b);
1256
-
1257
- // Converting hex color to short notation (e.g. #003399 to #039)
1258
- if ($h[1] === $h[2] && $h[3] === $h[4] && $h[5] === $h[6]) {
1259
- $h = '#' . $h[1] . $h[3] . $h[5];
1260
- }
1261
-
1262
- return $h;
1263
- case "number":
1264
- return round($value[1], $this->numberPrecision) . $value[2];
1265
- case "string":
1266
- return $value[1] . $this->compileStringContent($value) . $value[1];
1267
- case "function":
1268
- $args = !empty($value[2]) ? $this->compileValue($value[2]) : "";
1269
- return "$value[1]($args)";
1270
- case "list":
1271
- $value = $this->extractInterpolation($value);
1272
- if ($value[0] != "list") return $this->compileValue($value);
1273
-
1274
- list(, $delim, $items) = $value;
1275
-
1276
- $filtered = array();
1277
- foreach ($items as $item) {
1278
- if ($item[0] == "null") continue;
1279
- $filtered[] = $this->compileValue($item);
1280
- }
1281
-
1282
- return implode("$delim ", $filtered);
1283
- case "interpolated": # node created by extractInterpolation
1284
- list(, $interpolate, $left, $right) = $value;
1285
- list(,, $whiteLeft, $whiteRight) = $interpolate;
1286
-
1287
- $left = count($left[2]) > 0 ?
1288
- $this->compileValue($left).$whiteLeft : "";
1289
-
1290
- $right = count($right[2]) > 0 ?
1291
- $whiteRight.$this->compileValue($right) : "";
1292
-
1293
- return $left.$this->compileValue($interpolate).$right;
1294
-
1295
- case "interpolate": # raw parse node
1296
- list(, $exp) = $value;
1297
-
1298
- // strip quotes if it's a string
1299
- $reduced = $this->reduce($exp);
1300
- switch ($reduced[0]) {
1301
- case "string":
1302
- $reduced = array("keyword",
1303
- $this->compileStringContent($reduced));
1304
- break;
1305
- case "null":
1306
- $reduced = array("keyword", "");
1307
- }
1308
-
1309
- return $this->compileValue($reduced);
1310
- case "null":
1311
- return "null";
1312
- default:
1313
- $this->throwError("unknown value type: $type");
1314
- }
1315
- }
1316
-
1317
- protected function compileStringContent($string) {
1318
- $parts = array();
1319
- foreach ($string[2] as $part) {
1320
- if (is_array($part)) {
1321
- $parts[] = $this->compileValue($part);
1322
- } else {
1323
- $parts[] = $part;
1324
- }
1325
- }
1326
-
1327
- return implode($parts);
1328
- }
1329
-
1330
- // doesn't need to be recursive, compileValue will handle that
1331
- protected function extractInterpolation($list) {
1332
- $items = $list[2];
1333
- foreach ($items as $i => $item) {
1334
- if ($item[0] == "interpolate") {
1335
- $before = array("list", $list[1], array_slice($items, 0, $i));
1336
- $after = array("list", $list[1], array_slice($items, $i + 1));
1337
- return array("interpolated", $item, $before, $after);
1338
- }
1339
- }
1340
- return $list;
1341
- }
1342
-
1343
- // find the final set of selectors
1344
- protected function multiplySelectors($env) {
1345
- $envs = array();
1346
- while (null !== $env) {
1347
- if (!empty($env->selectors)) {
1348
- $envs[] = $env;
1349
- }
1350
- $env = $env->parent;
1351
- };
1352
-
1353
- $selectors = array();
1354
- $parentSelectors = array(array());
1355
- while ($env = array_pop($envs)) {
1356
- $selectors = array();
1357
- foreach ($env->selectors as $selector) {
1358
- foreach ($parentSelectors as $parent) {
1359
- $selectors[] = $this->joinSelectors($parent, $selector);
1360
- }
1361
- }
1362
- $parentSelectors = $selectors;
1363
- }
1364
-
1365
- return $selectors;
1366
- }
1367
-
1368
- // looks for & to replace, or append parent before child
1369
- protected function joinSelectors($parent, $child) {
1370
- $setSelf = false;
1371
- $out = array();
1372
- foreach ($child as $part) {
1373
- $newPart = array();
1374
- foreach ($part as $p) {
1375
- if ($p == self::$selfSelector) {
1376
- $setSelf = true;
1377
- foreach ($parent as $i => $parentPart) {
1378
- if ($i > 0) {
1379
- $out[] = $newPart;
1380
- $newPart = array();
1381
- }
1382
-
1383
- foreach ($parentPart as $pp) {
1384
- $newPart[] = $pp;
1385
- }
1386
- }
1387
- } else {
1388
- $newPart[] = $p;
1389
- }
1390
- }
1391
-
1392
- $out[] = $newPart;
1393
- }
1394
-
1395
- return $setSelf ? $out : array_merge($parent, $child);
1396
- }
1397
-
1398
- protected function multiplyMedia($env, $childQueries = null) {
1399
- if (!isset($env) ||
1400
- !empty($env->block->type) && $env->block->type != "media")
1401
- {
1402
- return $childQueries;
1403
- }
1404
-
1405
- // plain old block, skip
1406
- if (empty($env->block->type)) {
1407
- return $this->multiplyMedia($env->parent, $childQueries);
1408
- }
1409
-
1410
- $parentQueries = $env->block->queryList;
1411
- if ($childQueries == null) {
1412
- $childQueries = $parentQueries;
1413
- } else {
1414
- $originalQueries = $childQueries;
1415
- $childQueries = array();
1416
-
1417
- foreach ($parentQueries as $parentQuery){
1418
- foreach ($originalQueries as $childQuery) {
1419
- $childQueries []= array_merge($parentQuery, $childQuery);
1420
- }
1421
- }
1422
- }
1423
-
1424
- return $this->multiplyMedia($env->parent, $childQueries);
1425
- }
1426
-
1427
- // convert something to list
1428
- protected function coerceList($item, $delim = ",") {
1429
- if (isset($item) && $item[0] == "list") {
1430
- return $item;
1431
- }
1432
-
1433
- return array("list", $delim, !isset($item) ? array(): array($item));
1434
- }
1435
-
1436
- protected function applyArguments($argDef, $argValues) {
1437
- $hasVariable = false;
1438
- $args = array();
1439
- foreach ($argDef as $i => $arg) {
1440
- list($name, $default, $isVariable) = $argDef[$i];
1441
- $args[$name] = array($i, $name, $default, $isVariable);
1442
- $hasVariable |= $isVariable;
1443
- }
1444
-
1445
- $keywordArgs = array();
1446
- $deferredKeywordArgs = array();
1447
- $remaining = array();
1448
- // assign the keyword args
1449
- foreach ((array) $argValues as $arg) {
1450
- if (!empty($arg[0])) {
1451
- if (!isset($args[$arg[0][1]])) {
1452
- if ($hasVariable) {
1453
- $deferredKeywordArgs[$arg[0][1]] = $arg[1];
1454
- } else {
1455
- $this->throwError("Mixin or function doesn't have an argument named $%s.", $arg[0][1]);
1456
- }
1457
- } elseif ($args[$arg[0][1]][0] < count($remaining)) {
1458
- $this->throwError("The argument $%s was passed both by position and by name.", $arg[0][1]);
1459
- } else {
1460
- $keywordArgs[$arg[0][1]] = $arg[1];
1461
- }
1462
- } elseif (count($keywordArgs)) {
1463
- $this->throwError('Positional arguments must come before keyword arguments.');
1464
- } elseif ($arg[2] == true) {
1465
- $val = $this->reduce($arg[1], true);
1466
- if ($val[0] == "list") {
1467
- foreach ($val[2] as $name => $item) {
1468
- if (!is_numeric($name)) {
1469
- $keywordArgs[$name] = $item;
1470
- } else {
1471
- $remaining[] = $item;
1472
- }
1473
- }
1474
- } else {
1475
- $remaining[] = $val;
1476
- }
1477
- } else {
1478
- $remaining[] = $arg[1];
1479
- }
1480
- }
1481
-
1482
- foreach ($args as $arg) {
1483
- list($i, $name, $default, $isVariable) = $arg;
1484
- if ($isVariable) {
1485
- $val = array("list", ",", array());
1486
- for ($count = count($remaining); $i < $count; $i++) {
1487
- $val[2][] = $remaining[$i];
1488
- }
1489
- foreach ($deferredKeywordArgs as $itemName => $item) {
1490
- $val[2][$itemName] = $item;
1491
- }
1492
- } elseif (isset($remaining[$i])) {
1493
- $val = $remaining[$i];
1494
- } elseif (isset($keywordArgs[$name])) {
1495
- $val = $keywordArgs[$name];
1496
- } elseif (!empty($default)) {
1497
- $val = $default;
1498
- } else {
1499
- $this->throwError("Missing argument $name");
1500
- }
1501
-
1502
- $this->set($name, $this->reduce($val, true), true);
1503
- }
1504
- }
1505
-
1506
- protected function pushEnv($block=null) {
1507
- $env = new stdClass;
1508
- $env->parent = $this->env;
1509
- $env->store = array();
1510
- $env->block = $block;
1511
- $env->depth = isset($this->env->depth) ? $this->env->depth + 1 : 0;
1512
-
1513
- $this->env = $env;
1514
- return $env;
1515
- }
1516
-
1517
- protected function normalizeName($name) {
1518
- return str_replace("-", "_", $name);
1519
- }
1520
-
1521
- protected function getStoreEnv() {
1522
- return isset($this->storeEnv) ? $this->storeEnv : $this->env;
1523
- }
1524
-
1525
- protected function set($name, $value, $shadow=false) {
1526
- $name = $this->normalizeName($name);
1527
-
1528
- if ($shadow) {
1529
- $this->setRaw($name, $value);
1530
- } else {
1531
- $this->setExisting($name, $value);
1532
- }
1533
- }
1534
-
1535
- protected function setExisting($name, $value, $env = null) {
1536
- if (!isset($env)) $env = $this->getStoreEnv();
1537
-
1538
- if (isset($env->store[$name]) || !isset($env->parent)) {
1539
- $env->store[$name] = $value;
1540
- } else {
1541
- $this->setExisting($name, $value, $env->parent);
1542
- }
1543
- }
1544
-
1545
- protected function setRaw($name, $value) {
1546
- $env = $this->getStoreEnv();
1547
- $env->store[$name] = $value;
1548
- }
1549
-
1550
- public function get($name, $defaultValue = null, $env = null) {
1551
- $name = $this->normalizeName($name);
1552
-
1553
- if (!isset($env)) $env = $this->getStoreEnv();
1554
- if (!isset($defaultValue)) $defaultValue = self::$defaultValue;
1555
-
1556
- if (isset($env->store[$name])) {
1557
- return $env->store[$name];
1558
- } elseif (isset($env->parent)) {
1559
- return $this->get($name, $defaultValue, $env->parent);
1560
- }
1561
-
1562
- return $defaultValue; // found nothing
1563
- }
1564
-
1565
- protected function injectVariables(array $args)
1566
- {
1567
- if (empty($args)) {
1568
- return;
1569
- }
1570
-
1571
- $parser = new scss_parser(__METHOD__, false);
1572
-
1573
- foreach ($args as $name => $strValue) {
1574
- if ($name[0] === '$') {
1575
- $name = substr($name, 1);
1576
- }
1577
-
1578
- $parser->env = null;
1579
- $parser->count = 0;
1580
- $parser->buffer = (string) $strValue;
1581
- $parser->inParens = false;
1582
- $parser->eatWhiteDefault = true;
1583
- $parser->insertComments = true;
1584
-
1585
- if ( ! $parser->valueList($value)) {
1586
- throw new Exception("failed to parse passed in variable $name: $strValue");
1587
- }
1588
-
1589
- $this->set($name, $value);
1590
- }
1591
- }
1592
-
1593
- /**
1594
- * Set variables
1595
- *
1596
- * @param array $variables
1597
- */
1598
- public function setVariables(array $variables)
1599
- {
1600
- $this->registeredVars = array_merge($this->registeredVars, $variables);
1601
- }
1602
-
1603
- /**
1604
- * Unset variable
1605
- *
1606
- * @param string $name
1607
- */
1608
- public function unsetVariable($name)
1609
- {
1610
- unset($this->registeredVars[$name]);
1611
- }
1612
-
1613
- protected function popEnv() {
1614
- $env = $this->env;
1615
- $this->env = $this->env->parent;
1616
- return $env;
1617
- }
1618
-
1619
- public function getParsedFiles() {
1620
- return $this->parsedFiles;
1621
- }
1622
-
1623
- public function addImportPath($path) {
1624
- $this->importPaths[] = $path;
1625
- }
1626
-
1627
- public function setImportPaths($path) {
1628
- $this->importPaths = (array)$path;
1629
- }
1630
-
1631
- public function setNumberPrecision($numberPrecision) {
1632
- $this->numberPrecision = $numberPrecision;
1633
- }
1634
-
1635
- public function setFormatter($formatterName) {
1636
- $this->formatter = $formatterName;
1637
- }
1638
-
1639
- public function registerFunction($name, $func) {
1640
- $this->userFunctions[$this->normalizeName($name)] = $func;
1641
- }
1642
-
1643
- public function unregisterFunction($name) {
1644
- unset($this->userFunctions[$this->normalizeName($name)]);
1645
- }
1646
-
1647
- protected function importFile($path, $out) {
1648
- // see if tree is cached
1649
- $realPath = realpath($path);
1650
- if (isset($this->importCache[$realPath])) {
1651
- $tree = $this->importCache[$realPath];
1652
- } else {
1653
- $code = self::$parent->filesystem->execute( 'get_contents', $path );
1654
- //$code = file_get_contents($path);
1655
- $parser = new scss_parser($path, false);
1656
- $tree = $parser->parse($code);
1657
- $this->parsedFiles[] = $path;
1658
-
1659
- $this->importCache[$realPath] = $tree;
1660
- }
1661
-
1662
- $pi = pathinfo($path);
1663
- array_unshift($this->importPaths, $pi['dirname']);
1664
- $this->compileChildren($tree->children, $out);
1665
- array_shift($this->importPaths);
1666
- }
1667
-
1668
- // results the file path for an import url if it exists
1669
- public function findImport($url) {
1670
- $urls = array();
1671
-
1672
- // for "normal" scss imports (ignore vanilla css and external requests)
1673
- if (!preg_match('/\.css|^http:\/\/$/', $url)) {
1674
- // try both normal and the _partial filename
1675
- $urls = array($url, preg_replace('/[^\/]+$/', '_\0', $url));
1676
- }
1677
-
1678
- foreach ($this->importPaths as $dir) {
1679
- if (is_string($dir)) {
1680
- // check urls for normal import paths
1681
- foreach ($urls as $full) {
1682
- $full = $dir .
1683
- (!empty($dir) && substr($dir, -1) != '/' ? '/' : '') .
1684
- $full;
1685
-
1686
- if ($this->fileExists($file = $full.'.scss') ||
1687
- $this->fileExists($file = $full))
1688
- {
1689
- return $file;
1690
- }
1691
- }
1692
- } else {
1693
- // check custom callback for import path
1694
- $file = call_user_func($dir,$url,$this);
1695
- if ($file !== null) {
1696
- return $file;
1697
- }
1698
- }
1699
- }
1700
-
1701
- return null;
1702
- }
1703
-
1704
- protected function fileExists($name) {
1705
- return is_file($name);
1706
- }
1707
-
1708
- protected function callBuiltin($name, $args, &$returnValue) {
1709
- // try a lib function
1710
- $name = $this->normalizeName($name);
1711
- $libName = "lib_".$name;
1712
- $f = array($this, $libName);
1713
- if (is_callable($f)) {
1714
- $prototype = isset(self::$$libName) ? self::$$libName : null;
1715
- $sorted = $this->sortArgs($prototype, $args);
1716
- foreach ($sorted as &$val) {
1717
- $val = $this->reduce($val, true);
1718
- }
1719
- $returnValue = call_user_func($f, $sorted, $this);
1720
- } elseif (isset($this->userFunctions[$name])) {
1721
- // see if we can find a user function
1722
- $fn = $this->userFunctions[$name];
1723
-
1724
- foreach ($args as &$val) {
1725
- $val = $this->reduce($val[1], true);
1726
- }
1727
-
1728
- $returnValue = call_user_func($fn, $args, $this);
1729
- }
1730
-
1731
- if (isset($returnValue)) {
1732
- // coerce a php value into a scss one
1733
- if (is_numeric($returnValue)) {
1734
- $returnValue = array('number', $returnValue, "");
1735
- } elseif (is_bool($returnValue)) {
1736
- $returnValue = $returnValue ? self::$true : self::$false;
1737
- } elseif (!is_array($returnValue)) {
1738
- $returnValue = array('keyword', $returnValue);
1739
- }
1740
-
1741
- return true;
1742
- }
1743
-
1744
- return false;
1745
- }
1746
-
1747
- // sorts any keyword arguments
1748
- // TODO: merge with apply arguments
1749
- protected function sortArgs($prototype, $args) {
1750
- $keyArgs = array();
1751
- $posArgs = array();
1752
-
1753
- foreach ($args as $arg) {
1754
- list($key, $value) = $arg;
1755
- $key = $key[1];
1756
- if (empty($key)) {
1757
- $posArgs[] = $value;
1758
- } else {
1759
- $keyArgs[$key] = $value;
1760
- }
1761
- }
1762
-
1763
- if (!isset($prototype)) return $posArgs;
1764
-
1765
- $finalArgs = array();
1766
- foreach ($prototype as $i => $names) {
1767
- if (isset($posArgs[$i])) {
1768
- $finalArgs[] = $posArgs[$i];
1769
- continue;
1770
- }
1771
-
1772
- $set = false;
1773
- foreach ((array)$names as $name) {
1774
- if (isset($keyArgs[$name])) {
1775
- $finalArgs[] = $keyArgs[$name];
1776
- $set = true;
1777
- break;
1778
- }
1779
- }
1780
-
1781
- if (!$set) {
1782
- $finalArgs[] = null;
1783
- }
1784
- }
1785
-
1786
- return $finalArgs;
1787
- }
1788
-
1789
- protected function coerceForExpression($value) {
1790
- if ($color = $this->coerceColor($value)) {
1791
- return $color;
1792
- }
1793
-
1794
- return $value;
1795
- }
1796
-
1797
- protected function coerceColor($value) {
1798
- switch ($value[0]) {
1799
- case "color": return $value;
1800
- case "keyword":
1801
- $name = $value[1];
1802
- if (isset(self::$cssColors[$name])) {
1803
- $rgba = explode(',', self::$cssColors[$name]);
1804
- return isset($rgba[3])
1805
- ? array('color', (int) $rgba[0], (int) $rgba[1], (int) $rgba[2], (int) $rgba[3])
1806
- : array('color', (int) $rgba[0], (int) $rgba[1], (int) $rgba[2]);
1807
- }
1808
- return null;
1809
- }
1810
-
1811
- return null;
1812
- }
1813
-
1814
- protected function coerceString($value) {
1815
- switch ($value[0]) {
1816
- case "string":
1817
- return $value;
1818
- case "keyword":
1819
- return array("string", "", array($value[1]));
1820
- }
1821
- return null;
1822
- }
1823
-
1824
- public function assertList($value) {
1825
- if ($value[0] != "list")
1826
- $this->throwError("expecting list");
1827
- return $value;
1828
- }
1829
-
1830
- public function assertColor($value) {
1831
- if ($color = $this->coerceColor($value)) return $color;
1832
- $this->throwError("expecting color");
1833
- }
1834
-
1835
- public function assertNumber($value) {
1836
- if ($value[0] != "number")
1837
- $this->throwError("expecting number");
1838
- return $value[1];
1839
- }
1840
-
1841
- protected function coercePercent($value) {
1842
- if ($value[0] == "number") {
1843
- if ($value[2] == "%") {
1844
- return $value[1] / 100;
1845
- }
1846
- return $value[1];
1847
- }
1848
- return 0;
1849
- }
1850
-
1851
- // make sure a color's components don't go out of bounds
1852
- protected function fixColor($c) {
1853
- foreach (range(1, 3) as $i) {
1854
- if ($c[$i] < 0) $c[$i] = 0;
1855
- if ($c[$i] > 255) $c[$i] = 255;
1856
- }
1857
-
1858
- return $c;
1859
- }
1860
-
1861
- public function toHSL($red, $green, $blue) {
1862
- $min = min($red, $green, $blue);
1863
- $max = max($red, $green, $blue);
1864
-
1865
- $l = $min + $max;
1866
-
1867
- if ($min == $max) {
1868
- $s = $h = 0;
1869
- } else {
1870
- $d = $max - $min;
1871
-
1872
- if ($l < 255)
1873
- $s = $d / $l;
1874
- else
1875
- $s = $d / (510 - $l);
1876
-
1877
- if ($red == $max)
1878
- $h = 60 * ($green - $blue) / $d;
1879
- elseif ($green == $max)
1880
- $h = 60 * ($blue - $red) / $d + 120;
1881
- elseif ($blue == $max)
1882
- $h = 60 * ($red - $green) / $d + 240;
1883
- }
1884
-
1885
- return array('hsl', fmod($h, 360), $s * 100, $l / 5.1);
1886
- }
1887
-
1888
- public function hueToRGB($m1, $m2, $h) {
1889
- if ($h < 0)
1890
- $h += 1;
1891
- elseif ($h > 1)
1892
- $h -= 1;
1893
-
1894
- if ($h * 6 < 1)
1895
- return $m1 + ($m2 - $m1) * $h * 6;
1896
-
1897
- if ($h * 2 < 1)
1898
- return $m2;
1899
-
1900
- if ($h * 3 < 2)
1901
- return $m1 + ($m2 - $m1) * (2/3 - $h) * 6;
1902
-
1903
- return $m1;
1904
- }
1905
-
1906
- // H from 0 to 360, S and L from 0 to 100
1907
- public function toRGB($hue, $saturation, $lightness) {
1908
- if ($hue < 0) {
1909
- $hue += 360;
1910
- }
1911
-
1912
- $h = $hue / 360;
1913
- $s = min(100, max(0, $saturation)) / 100;
1914
- $l = min(100, max(0, $lightness)) / 100;
1915
-
1916
- $m2 = $l <= 0.5 ? $l * ($s + 1) : $l + $s - $l * $s;
1917
- $m1 = $l * 2 - $m2;
1918
-
1919
- $r = $this->hueToRGB($m1, $m2, $h + 1/3) * 255;
1920
- $g = $this->hueToRGB($m1, $m2, $h) * 255;
1921
- $b = $this->hueToRGB($m1, $m2, $h - 1/3) * 255;
1922
-
1923
- $out = array('color', $r, $g, $b);
1924
- return $out;
1925
- }
1926
-
1927
- // Built in functions
1928
-
1929
- protected static $lib_if = array("condition", "if-true", "if-false");
1930
- protected function lib_if($args) {
1931
- list($cond,$t, $f) = $args;
1932
- if (!$this->isTruthy($cond)) return $f;
1933
- return $t;
1934
- }
1935
-
1936
- protected static $lib_index = array("list", "value");
1937
- protected function lib_index($args) {
1938
- list($list, $value) = $args;
1939
- $list = $this->assertList($list);
1940
-
1941
- $values = array();
1942
- foreach ($list[2] as $item) {
1943
- $values[] = $this->normalizeValue($item);
1944
- }
1945
- $key = array_search($this->normalizeValue($value), $values);
1946
-
1947
- return false === $key ? false : $key + 1;
1948
- }
1949
-
1950
- protected static $lib_rgb = array("red", "green", "blue");
1951
- protected function lib_rgb($args) {
1952
- list($r,$g,$b) = $args;
1953
- return array("color", $r[1], $g[1], $b[1]);
1954
- }
1955
-
1956
- protected static $lib_rgba = array(
1957
- array("red", "color"),
1958
- "green", "blue", "alpha");
1959
- protected function lib_rgba($args) {
1960
- if ($color = $this->coerceColor($args[0])) {
1961
- $num = !isset($args[1]) ? $args[3] : $args[1];
1962
- $alpha = $this->assertNumber($num);
1963
- $color[4] = $alpha;
1964
- return $color;
1965
- }
1966
-
1967
- list($r,$g,$b, $a) = $args;
1968
- return array("color", $r[1], $g[1], $b[1], $a[1]);
1969
- }
1970
-
1971
- // helper function for adjust_color, change_color, and scale_color
1972
- protected function alter_color($args, $fn) {
1973
- $color = $this->assertColor($args[0]);
1974
-
1975
- foreach (array(1,2,3,7) as $i) {
1976
- if (isset($args[$i])) {
1977
- $val = $this->assertNumber($args[$i]);
1978
- $ii = $i == 7 ? 4 : $i; // alpha
1979
- $color[$ii] =
1980
- $this->$fn(isset($color[$ii]) ? $color[$ii] : 0, $val, $i);
1981
- }
1982
- }
1983
-
1984
- if (isset($args[4]) || isset($args[5]) || isset($args[6])) {
1985
- $hsl = $this->toHSL($color[1], $color[2], $color[3]);
1986
- foreach (array(4,5,6) as $i) {
1987
- if (isset($args[$i])) {
1988
- $val = $this->assertNumber($args[$i]);
1989
- $hsl[$i - 3] = $this->$fn($hsl[$i - 3], $val, $i);
1990
- }
1991
- }
1992
-
1993
- $rgb = $this->toRGB($hsl[1], $hsl[2], $hsl[3]);
1994
- if (isset($color[4])) $rgb[4] = $color[4];
1995
- $color = $rgb;
1996
- }
1997
-
1998
- return $color;
1999
- }
2000
-
2001
- protected static $lib_adjust_color = array(
2002
- "color", "red", "green", "blue",
2003
- "hue", "saturation", "lightness", "alpha"
2004
- );
2005
- protected function adjust_color_helper($base, $alter, $i) {
2006
- return $base += $alter;
2007
- }
2008
- protected function lib_adjust_color($args) {
2009
- return $this->alter_color($args, "adjust_color_helper");
2010
- }
2011
-
2012
- protected static $lib_change_color = array(
2013
- "color", "red", "green", "blue",
2014
- "hue", "saturation", "lightness", "alpha"
2015
- );
2016
- protected function change_color_helper($base, $alter, $i) {
2017
- return $alter;
2018
- }
2019
- protected function lib_change_color($args) {
2020
- return $this->alter_color($args, "change_color_helper");
2021
- }
2022
-
2023
- protected static $lib_scale_color = array(
2024
- "color", "red", "green", "blue",
2025
- "hue", "saturation", "lightness", "alpha"
2026
- );
2027
- protected function scale_color_helper($base, $scale, $i) {
2028
- // 1,2,3 - rgb
2029
- // 4, 5, 6 - hsl
2030
- // 7 - a
2031
- switch ($i) {
2032
- case 1:
2033
- case 2:
2034
- case 3:
2035
- $max = 255; break;
2036
- case 4:
2037
- $max = 360; break;
2038
- case 7:
2039
- $max = 1; break;
2040
- default:
2041
- $max = 100;
2042
- }
2043
-
2044
- $scale = $scale / 100;
2045
- if ($scale < 0) {
2046
- return $base * $scale + $base;
2047
- } else {
2048
- return ($max - $base) * $scale + $base;
2049
- }
2050
- }
2051
- protected function lib_scale_color($args) {
2052
- return $this->alter_color($args, "scale_color_helper");
2053
- }
2054
-
2055
- protected static $lib_ie_hex_str = array("color");
2056
- protected function lib_ie_hex_str($args) {
2057
- $color = $this->coerceColor($args[0]);
2058
- $color[4] = isset($color[4]) ? round(255*$color[4]) : 255;
2059
-
2060
- return sprintf('#%02X%02X%02X%02X', $color[4], $color[1], $color[2], $color[3]);
2061
- }
2062
-
2063
- protected static $lib_red = array("color");
2064
- protected function lib_red($args) {
2065
- $color = $this->coerceColor($args[0]);
2066
- return $color[1];
2067
- }
2068
-
2069
- protected static $lib_green = array("color");
2070
- protected function lib_green($args) {
2071
- $color = $this->coerceColor($args[0]);
2072
- return $color[2];
2073
- }
2074
-
2075
- protected static $lib_blue = array("color");
2076
- protected function lib_blue($args) {
2077
- $color = $this->coerceColor($args[0]);
2078
- return $color[3];
2079
- }
2080
-
2081
- protected static $lib_alpha = array("color");
2082
- protected function lib_alpha($args) {
2083
- if ($color = $this->coerceColor($args[0])) {
2084
- return isset($color[4]) ? $color[4] : 1;
2085
- }
2086
-
2087
- // this might be the IE function, so return value unchanged
2088
- return null;
2089
- }
2090
-
2091
- protected static $lib_opacity = array("color");
2092
- protected function lib_opacity($args) {
2093
- $value = $args[0];
2094
- if ($value[0] === 'number') return null;
2095
- return $this->lib_alpha($args);
2096
- }
2097
-
2098
- // mix two colors
2099
- protected static $lib_mix = array("color-1", "color-2", "weight");
2100
- protected function lib_mix($args) {
2101
- list($first, $second, $weight) = $args;
2102
- $first = $this->assertColor($first);
2103
- $second = $this->assertColor($second);
2104
-
2105
- if (!isset($weight)) {
2106
- $weight = 0.5;
2107
- } else {
2108
- $weight = $this->coercePercent($weight);
2109
- }
2110
-
2111
- $firstAlpha = isset($first[4]) ? $first[4] : 1;
2112
- $secondAlpha = isset($second[4]) ? $second[4] : 1;
2113
-
2114
- $w = $weight * 2 - 1;
2115
- $a = $firstAlpha - $secondAlpha;
2116
-
2117
- $w1 = (($w * $a == -1 ? $w : ($w + $a)/(1 + $w * $a)) + 1) / 2.0;
2118
- $w2 = 1.0 - $w1;
2119
-
2120
- $new = array('color',
2121
- $w1 * $first[1] + $w2 * $second[1],
2122
- $w1 * $first[2] + $w2 * $second[2],
2123
- $w1 * $first[3] + $w2 * $second[3],
2124
- );
2125
-
2126
- if ($firstAlpha != 1.0 || $secondAlpha != 1.0) {
2127
- $new[] = $firstAlpha * $weight + $secondAlpha * ($weight - 1);
2128
- }
2129
-
2130
- return $this->fixColor($new);
2131
- }
2132
-
2133
- protected static $lib_hsl = array("hue", "saturation", "lightness");
2134
- protected function lib_hsl($args) {
2135
- list($h, $s, $l) = $args;
2136
- return $this->toRGB($h[1], $s[1], $l[1]);
2137
- }
2138
-
2139
- protected static $lib_hsla = array("hue", "saturation",
2140
- "lightness", "alpha");
2141
- protected function lib_hsla($args) {
2142
- list($h, $s, $l, $a) = $args;
2143
- $color = $this->toRGB($h[1], $s[1], $l[1]);
2144
- $color[4] = $a[1];
2145
- return $color;
2146
- }
2147
-
2148
- protected static $lib_hue = array("color");
2149
- protected function lib_hue($args) {
2150
- $color = $this->assertColor($args[0]);
2151
- $hsl = $this->toHSL($color[1], $color[2], $color[3]);
2152
- return array("number", $hsl[1], "deg");
2153
- }
2154
-
2155
- protected static $lib_saturation = array("color");
2156
- protected function lib_saturation($args) {
2157
- $color = $this->assertColor($args[0]);
2158
- $hsl = $this->toHSL($color[1], $color[2], $color[3]);
2159
- return array("number", $hsl[2], "%");
2160
- }
2161
-
2162
- protected static $lib_lightness = array("color");
2163
- protected function lib_lightness($args) {
2164
- $color = $this->assertColor($args[0]);
2165
- $hsl = $this->toHSL($color[1], $color[2], $color[3]);
2166
- return array("number", $hsl[3], "%");
2167
- }
2168
-
2169
- protected function adjustHsl($color, $idx, $amount) {
2170
- $hsl = $this->toHSL($color[1], $color[2], $color[3]);
2171
- $hsl[$idx] += $amount;
2172
- $out = $this->toRGB($hsl[1], $hsl[2], $hsl[3]);
2173
- if (isset($color[4])) $out[4] = $color[4];
2174
- return $out;
2175
- }
2176
-
2177
- protected static $lib_adjust_hue = array("color", "degrees");
2178
- protected function lib_adjust_hue($args) {
2179
- $color = $this->assertColor($args[0]);
2180
- $degrees = $this->assertNumber($args[1]);
2181
- return $this->adjustHsl($color, 1, $degrees);
2182
- }
2183
-
2184
- protected static $lib_lighten = array("color", "amount");
2185
- protected function lib_lighten($args) {
2186
- $color = $this->assertColor($args[0]);
2187
- $amount = 100*$this->coercePercent($args[1]);
2188
- return $this->adjustHsl($color, 3, $amount);
2189
- }
2190
-
2191
- protected static $lib_darken = array("color", "amount");
2192
- protected function lib_darken($args) {
2193
- $color = $this->assertColor($args[0]);
2194
- $amount = 100*$this->coercePercent($args[1]);
2195
- return $this->adjustHsl($color, 3, -$amount);
2196
- }
2197
-
2198
- protected static $lib_saturate = array("color", "amount");
2199
- protected function lib_saturate($args) {
2200
- $value = $args[0];
2201
- if ($value[0] === 'number') return null;
2202
- $color = $this->assertColor($value);
2203
- $amount = 100*$this->coercePercent($args[1]);
2204
- return $this->adjustHsl($color, 2, $amount);
2205
- }
2206
-
2207
- protected static $lib_desaturate = array("color", "amount");
2208
- protected function lib_desaturate($args) {
2209
- $color = $this->assertColor($args[0]);
2210
- $amount = 100*$this->coercePercent($args[1]);
2211
- return $this->adjustHsl($color, 2, -$amount);
2212
- }
2213
-
2214
- protected static $lib_grayscale = array("color");
2215
- protected function lib_grayscale($args) {
2216
- $value = $args[0];
2217
- if ($value[0] === 'number') return null;
2218
- return $this->adjustHsl($this->assertColor($value), 2, -100);
2219
- }
2220
-
2221
- protected static $lib_complement = array("color");
2222
- protected function lib_complement($args) {
2223
- return $this->adjustHsl($this->assertColor($args[0]), 1, 180);
2224
- }
2225
-
2226
- protected static $lib_invert = array("color");
2227
- protected function lib_invert($args) {
2228
- $value = $args[0];
2229
- if ($value[0] === 'number') return null;
2230
- $color = $this->assertColor($value);
2231
- $color[1] = 255 - $color[1];
2232
- $color[2] = 255 - $color[2];
2233
- $color[3] = 255 - $color[3];
2234
- return $color;
2235
- }
2236
-
2237
- // increases opacity by amount
2238
- protected static $lib_opacify = array("color", "amount");
2239
- protected function lib_opacify($args) {
2240
- $color = $this->assertColor($args[0]);
2241
- $amount = $this->coercePercent($args[1]);
2242
-
2243
- $color[4] = (isset($color[4]) ? $color[4] : 1) + $amount;
2244
- $color[4] = min(1, max(0, $color[4]));
2245
- return $color;
2246
- }
2247
-
2248
- protected static $lib_fade_in = array("color", "amount");
2249
- protected function lib_fade_in($args) {
2250
- return $this->lib_opacify($args);
2251
- }
2252
-
2253
- // decreases opacity by amount
2254
- protected static $lib_transparentize = array("color", "amount");
2255
- protected function lib_transparentize($args) {
2256
- $color = $this->assertColor($args[0]);
2257
- $amount = $this->coercePercent($args[1]);
2258
-
2259
- $color[4] = (isset($color[4]) ? $color[4] : 1) - $amount;
2260
- $color[4] = min(1, max(0, $color[4]));
2261
- return $color;
2262
- }
2263
-
2264
- protected static $lib_fade_out = array("color", "amount");
2265
- protected function lib_fade_out($args) {
2266
- return $this->lib_transparentize($args);
2267
- }
2268
-
2269
- protected static $lib_unquote = array("string");
2270
- protected function lib_unquote($args) {
2271
- $str = $args[0];
2272
- if ($str[0] == "string") $str[1] = "";
2273
- return $str;
2274
- }
2275
-
2276
- protected static $lib_quote = array("string");
2277
- protected function lib_quote($args) {
2278
- $value = $args[0];
2279
- if ($value[0] == "string" && !empty($value[1]))
2280
- return $value;
2281
- return array("string", '"', array($value));
2282
- }
2283
-
2284
- protected static $lib_percentage = array("value");
2285
- protected function lib_percentage($args) {
2286
- return array("number",
2287
- $this->coercePercent($args[0]) * 100,
2288
- "%");
2289
- }
2290
-
2291
- protected static $lib_round = array("value");
2292
- protected function lib_round($args) {
2293
- $num = $args[0];
2294
- $num[1] = round($num[1]);
2295
- return $num;
2296
- }
2297
-
2298
- protected static $lib_floor = array("value");
2299
- protected function lib_floor($args) {
2300
- $num = $args[0];
2301
- $num[1] = floor($num[1]);
2302
- return $num;
2303
- }
2304
-
2305
- protected static $lib_ceil = array("value");
2306
- protected function lib_ceil($args) {
2307
- $num = $args[0];
2308
- $num[1] = ceil($num[1]);
2309
- return $num;
2310
- }
2311
-
2312
- protected static $lib_abs = array("value");
2313
- protected function lib_abs($args) {
2314
- $num = $args[0];
2315
- $num[1] = abs($num[1]);
2316
- return $num;
2317
- }
2318
-
2319
- protected function lib_min($args) {
2320
- $numbers = $this->getNormalizedNumbers($args);
2321
- $min = null;
2322
- foreach ($numbers as $key => $number) {
2323
- if (null === $min || $number[1] <= $min[1]) {
2324
- $min = array($key, $number[1]);
2325
- }
2326
- }
2327
-
2328
- return $args[$min[0]];
2329
- }
2330
-
2331
- protected function lib_max($args) {
2332
- $numbers = $this->getNormalizedNumbers($args);
2333
- $max = null;
2334
- foreach ($numbers as $key => $number) {
2335
- if (null === $max || $number[1] >= $max[1]) {
2336
- $max = array($key, $number[1]);
2337
- }
2338
- }
2339
-
2340
- return $args[$max[0]];
2341
- }
2342
-
2343
- protected function getNormalizedNumbers($args) {
2344
- $unit = null;
2345
- $originalUnit = null;
2346
- $numbers = array();
2347
- foreach ($args as $key => $item) {
2348
- if ('number' != $item[0]) {
2349
- $this->throwError("%s is not a number", $item[0]);
2350
- }
2351
- $number = $this->normalizeNumber($item);
2352
-
2353
- if (null === $unit) {
2354
- $unit = $number[2];
2355
- $originalUnit = $item[2];
2356
- } elseif ($unit !== $number[2]) {
2357
- $this->throwError('Incompatible units: "%s" and "%s".', $originalUnit, $item[2]);
2358
- }
2359
-
2360
- $numbers[$key] = $number;
2361
- }
2362
-
2363
- return $numbers;
2364
- }
2365
-
2366
- protected static $lib_length = array("list");
2367
- protected function lib_length($args) {
2368
- $list = $this->coerceList($args[0]);
2369
- return count($list[2]);
2370
- }
2371
-
2372
- protected static $lib_nth = array("list", "n");
2373
- protected function lib_nth($args) {
2374
- $list = $this->coerceList($args[0]);
2375
- $n = $this->assertNumber($args[1]) - 1;
2376
- return isset($list[2][$n]) ? $list[2][$n] : self::$defaultValue;
2377
- }
2378
-
2379
- protected function listSeparatorForJoin($list1, $sep) {
2380
- if (!isset($sep)) return $list1[1];
2381
- switch ($this->compileValue($sep)) {
2382
- case "comma":
2383
- return ",";
2384
- case "space":
2385
- return "";
2386
- default:
2387
- return $list1[1];
2388
- }
2389
- }
2390
-
2391
- protected static $lib_join = array("list1", "list2", "separator");
2392
- protected function lib_join($args) {
2393
- list($list1, $list2, $sep) = $args;
2394
- $list1 = $this->coerceList($list1, " ");
2395
- $list2 = $this->coerceList($list2, " ");
2396
- $sep = $this->listSeparatorForJoin($list1, $sep);
2397
- return array("list", $sep, array_merge($list1[2], $list2[2]));
2398
- }
2399
-
2400
- protected static $lib_append = array("list", "val", "separator");
2401
- protected function lib_append($args) {
2402
- list($list1, $value, $sep) = $args;
2403
- $list1 = $this->coerceList($list1, " ");
2404
- $sep = $this->listSeparatorForJoin($list1, $sep);
2405
- return array("list", $sep, array_merge($list1[2], array($value)));
2406
- }
2407
-
2408
- protected function lib_zip($args) {
2409
- foreach ($args as $arg) {
2410
- $this->assertList($arg);
2411
- }
2412
-
2413
- $lists = array();
2414
- $firstList = array_shift($args);
2415
- foreach ($firstList[2] as $key => $item) {
2416
- $list = array("list", "", array($item));
2417
- foreach ($args as $arg) {
2418
- if (isset($arg[2][$key])) {
2419
- $list[2][] = $arg[2][$key];
2420
- } else {
2421
- break 2;
2422
- }
2423
- }
2424
- $lists[] = $list;
2425
- }
2426
-
2427
- return array("list", ",", $lists);
2428
- }
2429
-
2430
- protected static $lib_type_of = array("value");
2431
- protected function lib_type_of($args) {
2432
- $value = $args[0];
2433
- switch ($value[0]) {
2434
- case "keyword":
2435
- if ($value == self::$true || $value == self::$false) {
2436
- return "bool";
2437
- }
2438
-
2439
- if ($this->coerceColor($value)) {
2440
- return "color";
2441
- }
2442
-
2443
- return "string";
2444
- default:
2445
- return $value[0];
2446
- }
2447
- }
2448
-
2449
- protected static $lib_unit = array("number");
2450
- protected function lib_unit($args) {
2451
- $num = $args[0];
2452
- if ($num[0] == "number") {
2453
- return array("string", '"', array($num[2]));
2454
- }
2455
- return "";
2456
- }
2457
-
2458
- protected static $lib_unitless = array("number");
2459
- protected function lib_unitless($args) {
2460
- $value = $args[0];
2461
- return $value[0] == "number" && empty($value[2]);
2462
- }
2463
-
2464
- protected static $lib_comparable = array("number-1", "number-2");
2465
- protected function lib_comparable($args) {
2466
- list($number1, $number2) = $args;
2467
- if (!isset($number1[0]) || $number1[0] != "number" || !isset($number2[0]) || $number2[0] != "number") {
2468
- $this->throwError('Invalid argument(s) for "comparable"');
2469
- }
2470
-
2471
- $number1 = $this->normalizeNumber($number1);
2472
- $number2 = $this->normalizeNumber($number2);
2473
-
2474
- return $number1[2] == $number2[2] || $number1[2] == "" || $number2[2] == "";
2475
- }
2476
-
2477
- /**
2478
- * Workaround IE7's content counter bug.
2479
- *
2480
- * @param array $args
2481
- */
2482
- protected function lib_counter($args) {
2483
- $list = array_map(array($this, 'compileValue'), $args);
2484
- return array('string', '', array('counter(' . implode(',', $list) . ')'));
2485
- }
2486
-
2487
- public function throwError($msg = null) {
2488
- if (func_num_args() > 1) {
2489
- $msg = call_user_func_array("sprintf", func_get_args());
2490
- }
2491
-
2492
- if ($this->sourcePos >= 0 && isset($this->sourceParser)) {
2493
- $this->sourceParser->throwParseError($msg, $this->sourcePos);
2494
- }
2495
-
2496
- throw new Exception($msg);
2497
- }
2498
-
2499
- /**
2500
- * CSS Colors
2501
- *
2502
- * @see http://www.w3.org/TR/css3-color
2503
- */
2504
- static protected $cssColors = array(
2505
- 'aliceblue' => '240,248,255',
2506
- 'antiquewhite' => '250,235,215',
2507
- 'aqua' => '0,255,255',
2508
- 'aquamarine' => '127,255,212',
2509
- 'azure' => '240,255,255',
2510
- 'beige' => '245,245,220',
2511
- 'bisque' => '255,228,196',
2512
- 'black' => '0,0,0',
2513
- 'blanchedalmond' => '255,235,205',
2514
- 'blue' => '0,0,255',
2515
- 'blueviolet' => '138,43,226',
2516
- 'brown' => '165,42,42',
2517
- 'burlywood' => '222,184,135',
2518
- 'cadetblue' => '95,158,160',
2519
- 'chartreuse' => '127,255,0',
2520
- 'chocolate' => '210,105,30',
2521
- 'coral' => '255,127,80',
2522
- 'cornflowerblue' => '100,149,237',
2523
- 'cornsilk' => '255,248,220',
2524
- 'crimson' => '220,20,60',
2525
- 'cyan' => '0,255,255',
2526
- 'darkblue' => '0,0,139',
2527
- 'darkcyan' => '0,139,139',
2528
- 'darkgoldenrod' => '184,134,11',
2529
- 'darkgray' => '169,169,169',
2530
- 'darkgreen' => '0,100,0',
2531
- 'darkgrey' => '169,169,169',
2532
- 'darkkhaki' => '189,183,107',
2533
- 'darkmagenta' => '139,0,139',
2534
- 'darkolivegreen' => '85,107,47',
2535
- 'darkorange' => '255,140,0',
2536
- 'darkorchid' => '153,50,204',
2537
- 'darkred' => '139,0,0',
2538
- 'darksalmon' => '233,150,122',
2539
- 'darkseagreen' => '143,188,143',
2540
- 'darkslateblue' => '72,61,139',
2541
- 'darkslategray' => '47,79,79',
2542
- 'darkslategrey' => '47,79,79',
2543
- 'darkturquoise' => '0,206,209',
2544
- 'darkviolet' => '148,0,211',
2545
- 'deeppink' => '255,20,147',
2546
- 'deepskyblue' => '0,191,255',
2547
- 'dimgray' => '105,105,105',
2548
- 'dimgrey' => '105,105,105',
2549
- 'dodgerblue' => '30,144,255',
2550
- 'firebrick' => '178,34,34',
2551
- 'floralwhite' => '255,250,240',
2552
- 'forestgreen' => '34,139,34',
2553
- 'fuchsia' => '255,0,255',
2554
- 'gainsboro' => '220,220,220',
2555
- 'ghostwhite' => '248,248,255',
2556
- 'gold' => '255,215,0',
2557
- 'goldenrod' => '218,165,32',
2558
- 'gray' => '128,128,128',
2559
- 'green' => '0,128,0',
2560
- 'greenyellow' => '173,255,47',
2561
- 'grey' => '128,128,128',
2562
- 'honeydew' => '240,255,240',
2563
- 'hotpink' => '255,105,180',
2564
- 'indianred' => '205,92,92',
2565
- 'indigo' => '75,0,130',
2566
- 'ivory' => '255,255,240',
2567
- 'khaki' => '240,230,140',
2568
- 'lavender' => '230,230,250',
2569
- 'lavenderblush' => '255,240,245',
2570
- 'lawngreen' => '124,252,0',
2571
- 'lemonchiffon' => '255,250,205',
2572
- 'lightblue' => '173,216,230',
2573
- 'lightcoral' => '240,128,128',
2574
- 'lightcyan' => '224,255,255',
2575
- 'lightgoldenrodyellow' => '250,250,210',
2576
- 'lightgray' => '211,211,211',
2577
- 'lightgreen' => '144,238,144',
2578
- 'lightgrey' => '211,211,211',
2579
- 'lightpink' => '255,182,193',
2580
- 'lightsalmon' => '255,160,122',
2581
- 'lightseagreen' => '32,178,170',
2582
- 'lightskyblue' => '135,206,250',
2583
- 'lightslategray' => '119,136,153',
2584
- 'lightslategrey' => '119,136,153',
2585
- 'lightsteelblue' => '176,196,222',
2586
- 'lightyellow' => '255,255,224',
2587
- 'lime' => '0,255,0',
2588
- 'limegreen' => '50,205,50',
2589
- 'linen' => '250,240,230',
2590
- 'magenta' => '255,0,255',
2591
- 'maroon' => '128,0,0',
2592
- 'mediumaquamarine' => '102,205,170',
2593
- 'mediumblue' => '0,0,205',
2594
- 'mediumorchid' => '186,85,211',
2595
- 'mediumpurple' => '147,112,219',
2596
- 'mediumseagreen' => '60,179,113',
2597
- 'mediumslateblue' => '123,104,238',
2598
- 'mediumspringgreen' => '0,250,154',
2599
- 'mediumturquoise' => '72,209,204',
2600
- 'mediumvioletred' => '199,21,133',
2601
- 'midnightblue' => '25,25,112',
2602
- 'mintcream' => '245,255,250',
2603
- 'mistyrose' => '255,228,225',
2604
- 'moccasin' => '255,228,181',
2605
- 'navajowhite' => '255,222,173',
2606
- 'navy' => '0,0,128',
2607
- 'oldlace' => '253,245,230',
2608
- 'olive' => '128,128,0',
2609
- 'olivedrab' => '107,142,35',
2610
- 'orange' => '255,165,0',
2611
- 'orangered' => '255,69,0',
2612
- 'orchid' => '218,112,214',
2613
- 'palegoldenrod' => '238,232,170',
2614
- 'palegreen' => '152,251,152',
2615
- 'paleturquoise' => '175,238,238',
2616
- 'palevioletred' => '219,112,147',
2617
- 'papayawhip' => '255,239,213',
2618
- 'peachpuff' => '255,218,185',
2619
- 'peru' => '205,133,63',
2620
- 'pink' => '255,192,203',
2621
- 'plum' => '221,160,221',
2622
- 'powderblue' => '176,224,230',
2623
- 'purple' => '128,0,128',
2624
- 'red' => '255,0,0',
2625
- 'rosybrown' => '188,143,143',
2626
- 'royalblue' => '65,105,225',
2627
- 'saddlebrown' => '139,69,19',
2628
- 'salmon' => '250,128,114',
2629
- 'sandybrown' => '244,164,96',
2630
- 'seagreen' => '46,139,87',
2631
- 'seashell' => '255,245,238',
2632
- 'sienna' => '160,82,45',
2633
- 'silver' => '192,192,192',
2634
- 'skyblue' => '135,206,235',
2635
- 'slateblue' => '106,90,205',
2636
- 'slategray' => '112,128,144',
2637
- 'slategrey' => '112,128,144',
2638
- 'snow' => '255,250,250',
2639
- 'springgreen' => '0,255,127',
2640
- 'steelblue' => '70,130,180',
2641
- 'tan' => '210,180,140',
2642
- 'teal' => '0,128,128',
2643
- 'thistle' => '216,191,216',
2644
- 'tomato' => '255,99,71',
2645
- 'transparent' => '0,0,0,0',
2646
- 'turquoise' => '64,224,208',
2647
- 'violet' => '238,130,238',
2648
- 'wheat' => '245,222,179',
2649
- 'white' => '255,255,255',
2650
- 'whitesmoke' => '245,245,245',
2651
- 'yellow' => '255,255,0',
2652
- 'yellowgreen' => '154,205,50'
2653
- );
2654
- }
2655
-
2656
- /**
2657
- * SCSS parser
2658
- *
2659
- * @author Leaf Corcoran <leafot@gmail.com>
2660
- */
2661
- class scss_parser {
2662
- static protected $precedence = array(
2663
- "or" => 0,
2664
- "and" => 1,
2665
-
2666
- '==' => 2,
2667
- '!=' => 2,
2668
- '<=' => 2,
2669
- '>=' => 2,
2670
- '=' => 2,
2671
- '<' => 3,
2672
- '>' => 2,
2673
-
2674
- '+' => 3,
2675
- '-' => 3,
2676
- '*' => 4,
2677
- '/' => 4,
2678
- '%' => 4,
2679
- );
2680
-
2681
- static protected $operators = array("+", "-", "*", "/", "%",
2682
- "==", "!=", "<=", ">=", "<", ">", "and", "or");
2683
-
2684
- static protected $operatorStr;
2685
- static protected $whitePattern;
2686
- static protected $commentMulti;
2687
-
2688
- static protected $commentSingle = "//";
2689
- static protected $commentMultiLeft = "/*";
2690
- static protected $commentMultiRight = "*/";
2691
-
2692
- /**
2693
- * Constructor
2694
- *
2695
- * @param string $sourceName
2696
- * @param boolean $rootParser
2697
- */
2698
- public function __construct($sourceName = null, $rootParser = true) {
2699
- $this->sourceName = $sourceName;
2700
- $this->rootParser = $rootParser;
2701
-
2702
- if (empty(self::$operatorStr)) {
2703
- self::$operatorStr = $this->makeOperatorStr(self::$operators);
2704
-
2705
- $commentSingle = $this->preg_quote(self::$commentSingle);
2706
- $commentMultiLeft = $this->preg_quote(self::$commentMultiLeft);
2707
- $commentMultiRight = $this->preg_quote(self::$commentMultiRight);
2708
- self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight;
2709
- self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais';
2710
- }
2711
- }
2712
-
2713
- static protected function makeOperatorStr($operators) {
2714
- return '('.implode('|', array_map(array('scss_parser','preg_quote'),
2715
- $operators)).')';
2716
- }
2717
-
2718
- /**
2719
- * Parser buffer
2720
- *
2721
- * @param string $buffer;
2722
- *
2723
- * @return \StdClass
2724
- */
2725
- public function parse($buffer)
2726
- {
2727
- $this->count = 0;
2728
- $this->env = null;
2729
- $this->inParens = false;
2730
- $this->eatWhiteDefault = true;
2731
- $this->insertComments = true;
2732
- $this->buffer = $buffer;
2733
-
2734
- $this->pushBlock(null); // root block
2735
- $this->whitespace();
2736
-
2737
- while (false !== $this->parseChunk())
2738
- ;
2739
-
2740
- if ($this->count != strlen($this->buffer)) {
2741
- $this->throwParseError();
2742
- }
2743
-
2744
- if (!empty($this->env->parent)) {
2745
- $this->throwParseError("unclosed block");
2746
- }
2747
-
2748
- $this->env->isRoot = true;
2749
-
2750
- return $this->env;
2751
- }
2752
-
2753
- /**
2754
- * Parse a single chunk off the head of the buffer and append it to the
2755
- * current parse environment.
2756
- *
2757
- * Returns false when the buffer is empty, or when there is an error.
2758
- *
2759
- * This function is called repeatedly until the entire document is
2760
- * parsed.
2761
- *
2762
- * This parser is most similar to a recursive descent parser. Single
2763
- * functions represent discrete grammatical rules for the language, and
2764
- * they are able to capture the text that represents those rules.
2765
- *
2766
- * Consider the function scssc::keyword(). (All parse functions are
2767
- * structured the same.)
2768
- *
2769
- * The function takes a single reference argument. When calling the
2770
- * function it will attempt to match a keyword on the head of the buffer.
2771
- * If it is successful, it will place the keyword in the referenced
2772
- * argument, advance the position in the buffer, and return true. If it
2773
- * fails then it won't advance the buffer and it will return false.
2774
- *
2775
- * All of these parse functions are powered by scssc::match(), which behaves
2776
- * the same way, but takes a literal regular expression. Sometimes it is
2777
- * more convenient to use match instead of creating a new function.
2778
- *
2779
- * Because of the format of the functions, to parse an entire string of
2780
- * grammatical rules, you can chain them together using &&.
2781
- *
2782
- * But, if some of the rules in the chain succeed before one fails, then
2783
- * the buffer position will be left at an invalid state. In order to
2784
- * avoid this, scssc::seek() is used to remember and set buffer positions.
2785
- *
2786
- * Before parsing a chain, use $s = $this->seek() to remember the current
2787
- * position into $s. Then if a chain fails, use $this->seek($s) to
2788
- * go back where we started.
2789
- *
2790
- * @return boolean
2791
- */
2792
- protected function parseChunk() {
2793
- $s = $this->seek();
2794
-
2795
- // the directives
2796
- if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "@") {
2797
- if ($this->literal("@media") && $this->mediaQueryList($mediaQueryList) && $this->literal("{")) {
2798
- $media = $this->pushSpecialBlock("media");
2799
- $media->queryList = $mediaQueryList[2];
2800
- return true;
2801
- } else {
2802
- $this->seek($s);
2803
- }
2804
-
2805
- if ($this->literal("@mixin") &&
2806
- $this->keyword($mixinName) &&
2807
- ($this->argumentDef($args) || true) &&
2808
- $this->literal("{"))
2809
- {
2810
- $mixin = $this->pushSpecialBlock("mixin");
2811
- $mixin->name = $mixinName;
2812
- $mixin->args = $args;
2813
- return true;
2814
- } else {
2815
- $this->seek($s);
2816
- }
2817
-
2818
- if ($this->literal("@include") &&
2819
- $this->keyword($mixinName) &&
2820
- ($this->literal("(") &&
2821
- ($this->argValues($argValues) || true) &&
2822
- $this->literal(")") || true) &&
2823
- ($this->end() ||
2824
- $this->literal("{") && $hasBlock = true))
2825
- {
2826
- $child = array("include",
2827
- $mixinName, isset($argValues) ? $argValues : null, null);
2828
-
2829
- if (!empty($hasBlock)) {
2830
- $include = $this->pushSpecialBlock("include");
2831
- $include->child = $child;
2832
- } else {
2833
- $this->append($child, $s);
2834
- }
2835
-
2836
- return true;
2837
- } else {
2838
- $this->seek($s);
2839
- }
2840
-
2841
- if ($this->literal("@import") &&
2842
- $this->valueList($importPath) &&
2843
- $this->end())
2844
- {
2845
- $this->append(array("import", $importPath), $s);
2846
- return true;
2847
- } else {
2848
- $this->seek($s);
2849
- }
2850
-
2851
- if ($this->literal("@extend") &&
2852
- $this->selectors($selector) &&
2853
- $this->end())
2854
- {
2855
- $this->append(array("extend", $selector), $s);
2856
- return true;
2857
- } else {
2858
- $this->seek($s);
2859
- }
2860
-
2861
- if ($this->literal("@function") &&
2862
- $this->keyword($fnName) &&
2863
- $this->argumentDef($args) &&
2864
- $this->literal("{"))
2865
- {
2866
- $func = $this->pushSpecialBlock("function");
2867
- $func->name = $fnName;
2868
- $func->args = $args;
2869
- return true;
2870
- } else {
2871
- $this->seek($s);
2872
- }
2873
-
2874
- if ($this->literal("@return") && $this->valueList($retVal) && $this->end()) {
2875
- $this->append(array("return", $retVal), $s);
2876
- return true;
2877
- } else {
2878
- $this->seek($s);
2879
- }
2880
-
2881
- if ($this->literal("@each") &&
2882
- $this->variable($varName) &&
2883
- $this->literal("in") &&
2884
- $this->valueList($list) &&
2885
- $this->literal("{"))
2886
- {
2887
- $each = $this->pushSpecialBlock("each");
2888
- $each->var = $varName[1];
2889
- $each->list = $list;
2890
- return true;
2891
- } else {
2892
- $this->seek($s);
2893
- }
2894
-
2895
- if ($this->literal("@while") &&
2896
- $this->expression($cond) &&
2897
- $this->literal("{"))
2898
- {
2899
- $while = $this->pushSpecialBlock("while");
2900
- $while->cond = $cond;
2901
- return true;
2902
- } else {
2903
- $this->seek($s);
2904
- }
2905
-
2906
- if ($this->literal("@for") &&
2907
- $this->variable($varName) &&
2908
- $this->literal("from") &&
2909
- $this->expression($start) &&
2910
- ($this->literal("through") ||
2911
- ($forUntil = true && $this->literal("to"))) &&
2912
- $this->expression($end) &&
2913
- $this->literal("{"))
2914
- {
2915
- $for = $this->pushSpecialBlock("for");
2916
- $for->var = $varName[1];
2917
- $for->start = $start;
2918
- $for->end = $end;
2919
- $for->until = isset($forUntil);
2920
- return true;
2921
- } else {
2922
- $this->seek($s);
2923
- }
2924
-
2925
- if ($this->literal("@if") && $this->valueList($cond) && $this->literal("{")) {
2926
- $if = $this->pushSpecialBlock("if");
2927
- $if->cond = $cond;
2928
- $if->cases = array();
2929
- return true;
2930
- } else {
2931
- $this->seek($s);
2932
- }
2933
-
2934
- if (($this->literal("@debug") || $this->literal("@warn")) &&
2935
- $this->valueList($value) &&
2936
- $this->end()) {
2937
- $this->append(array("debug", $value, $s), $s);
2938
- return true;
2939
- } else {
2940
- $this->seek($s);
2941
- }
2942
-
2943
- if ($this->literal("@content") && $this->end()) {
2944
- $this->append(array("mixin_content"), $s);
2945
- return true;
2946
- } else {
2947
- $this->seek($s);
2948
- }
2949
-
2950
- $last = $this->last();
2951
- if (isset($last) && $last[0] == "if") {
2952
- list(, $if) = $last;
2953
- if ($this->literal("@else")) {
2954
- if ($this->literal("{")) {
2955
- $else = $this->pushSpecialBlock("else");
2956
- } elseif ($this->literal("if") && $this->valueList($cond) && $this->literal("{")) {
2957
- $else = $this->pushSpecialBlock("elseif");
2958
- $else->cond = $cond;
2959
- }
2960
-
2961
- if (isset($else)) {
2962
- $else->dontAppend = true;
2963
- $if->cases[] = $else;
2964
- return true;
2965
- }
2966
- }
2967
-
2968
- $this->seek($s);
2969
- }
2970
-
2971
- if ($this->literal("@charset") &&
2972
- $this->valueList($charset) && $this->end())
2973
- {
2974
- $this->append(array("charset", $charset), $s);
2975
- return true;
2976
- } else {
2977
- $this->seek($s);
2978
- }
2979
-
2980
- // doesn't match built in directive, do generic one
2981
- if ($this->literal("@", false) && $this->keyword($dirName) &&
2982
- ($this->openString("{", $dirValue) || true) &&
2983
- $this->literal("{"))
2984
- {
2985
- $directive = $this->pushSpecialBlock("directive");
2986
- $directive->name = $dirName;
2987
- if (isset($dirValue)) $directive->value = $dirValue;
2988
- return true;
2989
- }
2990
-
2991
- $this->seek($s);
2992
- return false;
2993
- }
2994
-
2995
- // property shortcut
2996
- // captures most properties before having to parse a selector
2997
- if ($this->keyword($name, false) &&
2998
- $this->literal(": ") &&
2999
- $this->valueList($value) &&
3000
- $this->end())
3001
- {
3002
- $name = array("string", "", array($name));
3003
- $this->append(array("assign", $name, $value), $s);
3004
- return true;
3005
- } else {
3006
- $this->seek($s);
3007
- }
3008
-
3009
- // variable assigns
3010
- if ($this->variable($name) &&
3011
- $this->literal(":") &&
3012
- $this->valueList($value) && $this->end())
3013
- {
3014
- // check for !default
3015
- $defaultVar = $value[0] == "list" && $this->stripDefault($value);
3016
- $this->append(array("assign", $name, $value, $defaultVar), $s);
3017
- return true;
3018
- } else {
3019
- $this->seek($s);
3020
- }
3021
-
3022
- // misc
3023
- if ($this->literal("-->")) {
3024
- return true;
3025
- }
3026
-
3027
- // opening css block
3028
- $oldComments = $this->insertComments;
3029
- $this->insertComments = false;
3030
- if ($this->selectors($selectors) && $this->literal("{")) {
3031
- $this->pushBlock($selectors);
3032
- $this->insertComments = $oldComments;
3033
- return true;
3034
- } else {
3035
- $this->seek($s);
3036
- }
3037
- $this->insertComments = $oldComments;
3038
-
3039
- // property assign, or nested assign
3040
- if ($this->propertyName($name) && $this->literal(":")) {
3041
- $foundSomething = false;
3042
- if ($this->valueList($value)) {
3043
- $this->append(array("assign", $name, $value), $s);
3044
- $foundSomething = true;
3045
- }
3046
-
3047
- if ($this->literal("{")) {
3048
- $propBlock = $this->pushSpecialBlock("nestedprop");
3049
- $propBlock->prefix = $name;
3050
- $foundSomething = true;
3051
- } elseif ($foundSomething) {
3052
- $foundSomething = $this->end();
3053
- }
3054
-
3055
- if ($foundSomething) {
3056
- return true;
3057
- }
3058
-
3059
- $this->seek($s);
3060
- } else {
3061
- $this->seek($s);
3062
- }
3063
-
3064
- // closing a block
3065
- if ($this->literal("}")) {
3066
- $block = $this->popBlock();
3067
- if (isset($block->type) && $block->type == "include") {
3068
- $include = $block->child;
3069
- unset($block->child);
3070
- $include[3] = $block;
3071
- $this->append($include, $s);
3072
- } elseif (empty($block->dontAppend)) {
3073
- $type = isset($block->type) ? $block->type : "block";
3074
- $this->append(array($type, $block), $s);
3075
- }
3076
- return true;
3077
- }
3078
-
3079
- // extra stuff
3080
- if ($this->literal(";") ||
3081
- $this->literal("<!--"))
3082
- {
3083
- return true;
3084
- }
3085
-
3086
- return false;
3087
- }
3088
-
3089
- protected function stripDefault(&$value) {
3090
- $def = end($value[2]);
3091
- if ($def[0] == "keyword" && $def[1] == "!default") {
3092
- array_pop($value[2]);
3093
- $value = $this->flattenList($value);
3094
- return true;
3095
- }
3096
-
3097
- if ($def[0] == "list") {
3098
- return $this->stripDefault($value[2][count($value[2]) - 1]);
3099
- }
3100
-
3101
- return false;
3102
- }
3103
-
3104
- protected function literal($what, $eatWhitespace = null) {
3105
- if (!isset($eatWhitespace)) $eatWhitespace = $this->eatWhiteDefault;
3106
-
3107
- // shortcut on single letter
3108
- if (!isset($what[1]) && isset($this->buffer[$this->count])) {
3109
- if ($this->buffer[$this->count] == $what) {
3110
- if (!$eatWhitespace) {
3111
- $this->count++;
3112
- return true;
3113
- }
3114
- // goes below...
3115
- } else {
3116
- return false;
3117
- }
3118
- }
3119
-
3120
- return $this->match($this->preg_quote($what), $m, $eatWhitespace);
3121
- }
3122
-
3123
- // tree builders
3124
-
3125
- protected function pushBlock($selectors) {
3126
- $b = new stdClass;
3127
- $b->parent = $this->env; // not sure if we need this yet
3128
-
3129
- $b->selectors = $selectors;
3130
- $b->children = array();
3131
-
3132
- $this->env = $b;
3133
- return $b;
3134
- }
3135
-
3136
- protected function pushSpecialBlock($type) {
3137
- $block = $this->pushBlock(null);
3138
- $block->type = $type;
3139
- return $block;
3140
- }
3141
-
3142
- protected function popBlock() {
3143
- if (empty($this->env->parent)) {
3144
- $this->throwParseError("unexpected }");
3145
- }
3146
-
3147
- $old = $this->env;
3148
- $this->env = $this->env->parent;
3149
- unset($old->parent);
3150
- return $old;
3151
- }
3152
-
3153
- protected function append($statement, $pos=null) {
3154
- if ($pos !== null) {
3155
- $statement[-1] = $pos;
3156
- if (!$this->rootParser) $statement[-2] = $this;
3157
- }
3158
- $this->env->children[] = $statement;
3159
- }
3160
-
3161
- // last child that was appended
3162
- protected function last() {
3163
- $i = count($this->env->children) - 1;
3164
- if (isset($this->env->children[$i]))
3165
- return $this->env->children[$i];
3166
- }
3167
-
3168
- // high level parsers (they return parts of ast)
3169
-
3170
- protected function mediaQueryList(&$out) {
3171
- return $this->genericList($out, "mediaQuery", ",", false);
3172
- }
3173
-
3174
- protected function mediaQuery(&$out) {
3175
- $s = $this->seek();
3176
-
3177
- $expressions = null;
3178
- $parts = array();
3179
-
3180
- if (($this->literal("only") && ($only = true) || $this->literal("not") && ($not = true) || true) && $this->mixedKeyword($mediaType)) {
3181
- $prop = array("mediaType");
3182
- if (isset($only)) $prop[] = array("keyword", "only");
3183
- if (isset($not)) $prop[] = array("keyword", "not");
3184
- $media = array("list", "", array());
3185
- foreach ((array)$mediaType as $type) {
3186
- if (is_array($type)) {
3187
- $media[2][] = $type;
3188
- } else {
3189
- $media[2][] = array("keyword", $type);
3190
- }
3191
- }
3192
- $prop[] = $media;
3193
- $parts[] = $prop;
3194
- }
3195
-
3196
- if (empty($parts) || $this->literal("and")) {
3197
- $this->genericList($expressions, "mediaExpression", "and", false);
3198
- if (is_array($expressions)) $parts = array_merge($parts, $expressions[2]);
3199
- }
3200
-
3201
- $out = $parts;
3202
- return true;
3203
- }
3204
-
3205
- protected function mediaExpression(&$out) {
3206
- $s = $this->seek();
3207
- $value = null;
3208
- if ($this->literal("(") &&
3209
- $this->expression($feature) &&
3210
- ($this->literal(":") && $this->expression($value) || true) &&
3211
- $this->literal(")"))
3212
- {
3213
- $out = array("mediaExp", $feature);
3214
- if ($value) $out[] = $value;
3215
- return true;
3216
- }
3217
-
3218
- $this->seek($s);
3219
- return false;
3220
- }
3221
-
3222
- protected function argValues(&$out) {
3223
- if ($this->genericList($list, "argValue", ",", false)) {
3224
- $out = $list[2];
3225
- return true;
3226
- }
3227
- return false;
3228
- }
3229
-
3230
- protected function argValue(&$out) {
3231
- $s = $this->seek();
3232
-
3233
- $keyword = null;
3234
- if (!$this->variable($keyword) || !$this->literal(":")) {
3235
- $this->seek($s);
3236
- $keyword = null;
3237
- }
3238
-
3239
- if ($this->genericList($value, "expression")) {
3240
- $out = array($keyword, $value, false);
3241
- $s = $this->seek();
3242
- if ($this->literal("...")) {
3243
- $out[2] = true;
3244
- } else {
3245
- $this->seek($s);
3246
- }
3247
- return true;
3248
- }
3249
-
3250
- return false;
3251
- }
3252
-
3253
- /**
3254
- * Parse list
3255
- *
3256
- * @param string $out
3257
- *
3258
- * @return boolean
3259
- */
3260
- public function valueList(&$out)
3261
- {
3262
- return $this->genericList($out, 'spaceList', ',');
3263
- }
3264
-
3265
- protected function spaceList(&$out)
3266
- {
3267
- return $this->genericList($out, 'expression');
3268
- }
3269
-
3270
- protected function genericList(&$out, $parseItem, $delim="", $flatten=true) {
3271
- $s = $this->seek();
3272
- $items = array();
3273
- while ($this->$parseItem($value)) {
3274
- $items[] = $value;
3275
- if ($delim) {
3276
- if (!$this->literal($delim)) break;
3277
- }
3278
- }
3279
-
3280
- if (count($items) == 0) {
3281
- $this->seek($s);
3282
- return false;
3283
- }
3284
-
3285
- if ($flatten && count($items) == 1) {
3286
- $out = $items[0];
3287
- } else {
3288
- $out = array("list", $delim, $items);
3289
- }
3290
-
3291
- return true;
3292
- }
3293
-
3294
- protected function expression(&$out) {
3295
- $s = $this->seek();
3296
-
3297
- if ($this->literal("(")) {
3298
- if ($this->literal(")")) {
3299
- $out = array("list", "", array());
3300
- return true;
3301
- }
3302
-
3303
- if ($this->valueList($out) && $this->literal(')') && $out[0] == "list") {
3304
- return true;
3305
- }
3306
-
3307
- $this->seek($s);
3308
- }
3309
-
3310
- if ($this->value($lhs)) {
3311
- $out = $this->expHelper($lhs, 0);
3312
- return true;
3313
- }
3314
-
3315
- return false;
3316
- }
3317
-
3318
- protected function expHelper($lhs, $minP) {
3319
- $opstr = self::$operatorStr;
3320
-
3321
- $ss = $this->seek();
3322
- $whiteBefore = isset($this->buffer[$this->count - 1]) &&
3323
- ctype_space($this->buffer[$this->count - 1]);
3324
- while ($this->match($opstr, $m) && self::$precedence[$m[1]] >= $minP) {
3325
- $whiteAfter = isset($this->buffer[$this->count - 1]) &&
3326
- ctype_space($this->buffer[$this->count - 1]);
3327
-
3328
- $op = $m[1];
3329
-
3330
- // don't turn negative numbers into expressions
3331
- if ($op == "-" && $whiteBefore) {
3332
- if (!$whiteAfter) break;
3333
- }
3334
-
3335
- if (!$this->value($rhs)) break;
3336
-
3337
- // peek and see if rhs belongs to next operator
3338
- if ($this->peek($opstr, $next) && self::$precedence[$next[1]] > self::$precedence[$op]) {
3339
- $rhs = $this->expHelper($rhs, self::$precedence[$next[1]]);
3340
- }
3341
-
3342
- $lhs = array("exp", $op, $lhs, $rhs, $this->inParens, $whiteBefore, $whiteAfter);
3343
- $ss = $this->seek();
3344
- $whiteBefore = isset($this->buffer[$this->count - 1]) &&
3345
- ctype_space($this->buffer[$this->count - 1]);
3346
- }
3347
-
3348
- $this->seek($ss);
3349
- return $lhs;
3350
- }
3351
-
3352
- protected function value(&$out) {
3353
- $s = $this->seek();
3354
-
3355
- if ($this->literal("not", false) && $this->whitespace() && $this->value($inner)) {
3356
- $out = array("unary", "not", $inner, $this->inParens);
3357
- return true;
3358
- } else {
3359
- $this->seek($s);
3360
- }
3361
-
3362
- if ($this->literal("+") && $this->value($inner)) {
3363
- $out = array("unary", "+", $inner, $this->inParens);
3364
- return true;
3365
- } else {
3366
- $this->seek($s);
3367
- }
3368
-
3369
- // negation
3370
- if ($this->literal("-", false) &&
3371
- ($this->variable($inner) ||
3372
- $this->unit($inner) ||
3373
- $this->parenValue($inner)))
3374
- {
3375
- $out = array("unary", "-", $inner, $this->inParens);
3376
- return true;
3377
- } else {
3378
- $this->seek($s);
3379
- }
3380
-
3381
- if ($this->parenValue($out)) return true;
3382
- if ($this->interpolation($out)) return true;
3383
- if ($this->variable($out)) return true;
3384
- if ($this->color($out)) return true;
3385
- if ($this->unit($out)) return true;
3386
- if ($this->string($out)) return true;
3387
- if ($this->func($out)) return true;
3388
- if ($this->progid($out)) return true;
3389
-
3390
- if ($this->keyword($keyword)) {
3391
- if ($keyword == "null") {
3392
- $out = array("null");
3393
- } else {
3394
- $out = array("keyword", $keyword);
3395
- }
3396
- return true;
3397
- }
3398
-
3399
- return false;
3400
- }
3401
-
3402
- // value wrappen in parentheses
3403
- protected function parenValue(&$out) {
3404
- $s = $this->seek();
3405
-
3406
- $inParens = $this->inParens;
3407
- if ($this->literal("(") &&
3408
- ($this->inParens = true) && $this->expression($exp) &&
3409
- $this->literal(")"))
3410
- {
3411
- $out = $exp;
3412
- $this->inParens = $inParens;
3413
- return true;
3414
- } else {
3415
- $this->inParens = $inParens;
3416
- $this->seek($s);
3417
- }
3418
-
3419
- return false;
3420
- }
3421
-
3422
- protected function progid(&$out) {
3423
- $s = $this->seek();
3424
- if ($this->literal("progid:", false) &&
3425
- $this->openString("(", $fn) &&
3426
- $this->literal("("))
3427
- {
3428
- $this->openString(")", $args, "(");
3429
- if ($this->literal(")")) {
3430
- $out = array("string", "", array(
3431
- "progid:", $fn, "(", $args, ")"
3432
- ));
3433
- return true;
3434
- }
3435
- }
3436
-
3437
- $this->seek($s);
3438
- return false;
3439
- }
3440
-
3441
- protected function func(&$func) {
3442
- $s = $this->seek();
3443
-
3444
- if ($this->keyword($name, false) &&
3445
- $this->literal("("))
3446
- {
3447
- if ($name == "alpha" && $this->argumentList($args)) {
3448
- $func = array("function", $name, array("string", "", $args));
3449
- return true;
3450
- }
3451
-
3452
- if ($name != "expression" && !preg_match("/^(-[a-z]+-)?calc$/", $name)) {
3453
- $ss = $this->seek();
3454
- if ($this->argValues($args) && $this->literal(")")) {
3455
- $func = array("fncall", $name, $args);
3456
- return true;
3457
- }
3458
- $this->seek($ss);
3459
- }
3460
-
3461
- if (($this->openString(")", $str, "(") || true ) &&
3462
- $this->literal(")"))
3463
- {
3464
- $args = array();
3465
- if (!empty($str)) {
3466
- $args[] = array(null, array("string", "", array($str)));
3467
- }
3468
-
3469
- $func = array("fncall", $name, $args);
3470
- return true;
3471
- }
3472
- }
3473
-
3474
- $this->seek($s);
3475
- return false;
3476
- }
3477
-
3478
- protected function argumentList(&$out) {
3479
- $s = $this->seek();
3480
- $this->literal("(");
3481
-
3482
- $args = array();
3483
- while ($this->keyword($var)) {
3484
- $ss = $this->seek();
3485
-
3486
- if ($this->literal("=") && $this->expression($exp)) {
3487
- $args[] = array("string", "", array($var."="));
3488
- $arg = $exp;
3489
- } else {
3490
- break;
3491
- }
3492
-
3493
- $args[] = $arg;
3494
-
3495
- if (!$this->literal(",")) break;
3496
-
3497
- $args[] = array("string", "", array(", "));
3498
- }
3499
-
3500
- if (!$this->literal(")") || !count($args)) {
3501
- $this->seek($s);
3502
- return false;
3503
- }
3504
-
3505
- $out = $args;
3506
- return true;
3507
- }
3508
-
3509
- protected function argumentDef(&$out) {
3510
- $s = $this->seek();
3511
- $this->literal("(");
3512
-
3513
- $args = array();
3514
- while ($this->variable($var)) {
3515
- $arg = array($var[1], null, false);
3516
-
3517
- $ss = $this->seek();
3518
- if ($this->literal(":") && $this->genericList($defaultVal, "expression")) {
3519
- $arg[1] = $defaultVal;
3520
- } else {
3521
- $this->seek($ss);
3522
- }
3523
-
3524
- $ss = $this->seek();
3525
- if ($this->literal("...")) {
3526
- $sss = $this->seek();
3527
- if (!$this->literal(")")) {
3528
- $this->throwParseError("... has to be after the final argument");
3529
- }
3530
- $arg[2] = true;
3531
- $this->seek($sss);
3532
- } else {
3533
- $this->seek($ss);
3534
- }
3535
-
3536
- $args[] = $arg;
3537
- if (!$this->literal(",")) break;
3538
- }
3539
-
3540
- if (!$this->literal(")")) {
3541
- $this->seek($s);
3542
- return false;
3543
- }
3544
-
3545
- $out = $args;
3546
- return true;
3547
- }
3548
-
3549
- protected function color(&$out) {
3550
- $color = array('color');
3551
-
3552
- if ($this->match('(#([0-9a-f]{6})|#([0-9a-f]{3}))', $m)) {
3553
- if (isset($m[3])) {
3554
- $num = $m[3];
3555
- $width = 16;
3556
- } else {
3557
- $num = $m[2];
3558
- $width = 256;
3559
- }
3560
-
3561
- $num = hexdec($num);
3562
- foreach (array(3,2,1) as $i) {
3563
- $t = $num % $width;
3564
- $num /= $width;
3565
-
3566
- $color[$i] = $t * (256/$width) + $t * floor(16/$width);
3567
- }
3568
-
3569
- $out = $color;
3570
- return true;
3571
- }
3572
-
3573
- return false;
3574
- }
3575
-
3576
- protected function unit(&$unit) {
3577
- if ($this->match('([0-9]*(\.)?[0-9]+)([%a-zA-Z]+)?', $m)) {
3578
- $unit = array("number", $m[1], empty($m[3]) ? "" : $m[3]);
3579
- return true;
3580
- }
3581
- return false;
3582
- }
3583
-
3584
- protected function string(&$out) {
3585
- $s = $this->seek();
3586
- if ($this->literal('"', false)) {
3587
- $delim = '"';
3588
- } elseif ($this->literal("'", false)) {
3589
- $delim = "'";
3590
- } else {
3591
- return false;
3592
- }
3593
-
3594
- $content = array();
3595
- $oldWhite = $this->eatWhiteDefault;
3596
- $this->eatWhiteDefault = false;
3597
-
3598
- while ($this->matchString($m, $delim)) {
3599
- $content[] = $m[1];
3600
- if ($m[2] == "#{") {
3601
- $this->count -= strlen($m[2]);
3602
- if ($this->interpolation($inter, false)) {
3603
- $content[] = $inter;
3604
- } else {
3605
- $this->count += strlen($m[2]);
3606
- $content[] = "#{"; // ignore it
3607
- }
3608
- } elseif ($m[2] == '\\') {
3609
- $content[] = $m[2];
3610
- if ($this->literal($delim, false)) {
3611
- $content[] = $delim;
3612
- }
3613
- } else {
3614
- $this->count -= strlen($delim);
3615
- break; // delim
3616
- }
3617
- }
3618
-
3619
- $this->eatWhiteDefault = $oldWhite;
3620
-
3621
- if ($this->literal($delim)) {
3622
- $out = array("string", $delim, $content);
3623
- return true;
3624
- }
3625
-
3626
- $this->seek($s);
3627
- return false;
3628
- }
3629
-
3630
- protected function mixedKeyword(&$out) {
3631
- $s = $this->seek();
3632
-
3633
- $parts = array();
3634
-
3635
- $oldWhite = $this->eatWhiteDefault;
3636
- $this->eatWhiteDefault = false;
3637
-
3638
- while (true) {
3639
- if ($this->keyword($key)) {
3640
- $parts[] = $key;
3641
- continue;
3642
- }
3643
-
3644
- if ($this->interpolation($inter)) {
3645
- $parts[] = $inter;
3646
- continue;
3647
- }
3648
-
3649
- break;
3650
- }
3651
-
3652
- $this->eatWhiteDefault = $oldWhite;
3653
-
3654
- if (count($parts) == 0) return false;
3655
-
3656
- if ($this->eatWhiteDefault) {
3657
- $this->whitespace();
3658
- }
3659
-
3660
- $out = $parts;
3661
- return true;
3662
- }
3663
-
3664
- // an unbounded string stopped by $end
3665
- protected function openString($end, &$out, $nestingOpen=null) {
3666
- $oldWhite = $this->eatWhiteDefault;
3667
- $this->eatWhiteDefault = false;
3668
-
3669
- $stop = array("'", '"', "#{", $end);
3670
- $stop = array_map(array($this, "preg_quote"), $stop);
3671
- $stop[] = self::$commentMulti;
3672
-
3673
- $patt = '(.*?)('.implode("|", $stop).')';
3674
-
3675
- $nestingLevel = 0;
3676
-
3677
- $content = array();
3678
- while ($this->match($patt, $m, false)) {
3679
- if (isset($m[1]) && $m[1] !== '') {
3680
- $content[] = $m[1];
3681
- if ($nestingOpen) {
3682
- $nestingLevel += substr_count($m[1], $nestingOpen);
3683
- }
3684
- }
3685
-
3686
- $tok = $m[2];
3687
-
3688
- $this->count-= strlen($tok);
3689
- if ($tok == $end) {
3690
- if ($nestingLevel == 0) {
3691
- break;
3692
- } else {
3693
- $nestingLevel--;
3694
- }
3695
- }
3696
-
3697
- if (($tok == "'" || $tok == '"') && $this->string($str)) {
3698
- $content[] = $str;
3699
- continue;
3700
- }
3701
-
3702
- if ($tok == "#{" && $this->interpolation($inter)) {
3703
- $content[] = $inter;
3704
- continue;
3705
- }
3706
-
3707
- $content[] = $tok;
3708
- $this->count+= strlen($tok);
3709
- }
3710
-
3711
- $this->eatWhiteDefault = $oldWhite;
3712
-
3713
- if (count($content) == 0) return false;
3714
-
3715
- // trim the end
3716
- if (is_string(end($content))) {
3717
- $content[count($content) - 1] = rtrim(end($content));
3718
- }
3719
-
3720
- $out = array("string", "", $content);
3721
- return true;
3722
- }
3723
-
3724
- // $lookWhite: save information about whitespace before and after
3725
- protected function interpolation(&$out, $lookWhite=true) {
3726
- $oldWhite = $this->eatWhiteDefault;
3727
- $this->eatWhiteDefault = true;
3728
-
3729
- $s = $this->seek();
3730
- if ($this->literal("#{") && $this->valueList($value) && $this->literal("}", false)) {
3731
-
3732
- // TODO: don't error if out of bounds
3733
-
3734
- if ($lookWhite) {
3735
- $left = preg_match('/\s/', $this->buffer[$s - 1]) ? " " : "";
3736
- $right = preg_match('/\s/', $this->buffer[$this->count]) ? " ": "";
3737
- } else {
3738
- $left = $right = false;
3739
- }
3740
-
3741
- $out = array("interpolate", $value, $left, $right);
3742
- $this->eatWhiteDefault = $oldWhite;
3743
- if ($this->eatWhiteDefault) $this->whitespace();
3744
- return true;
3745
- }
3746
-
3747
- $this->seek($s);
3748
- $this->eatWhiteDefault = $oldWhite;
3749
- return false;
3750
- }
3751
-
3752
- // low level parsers
3753
-
3754
- // returns an array of parts or a string
3755
- protected function propertyName(&$out) {
3756
- $s = $this->seek();
3757
- $parts = array();
3758
-
3759
- $oldWhite = $this->eatWhiteDefault;
3760
- $this->eatWhiteDefault = false;
3761
-
3762
- while (true) {
3763
- if ($this->interpolation($inter)) {
3764
- $parts[] = $inter;
3765
- } elseif ($this->keyword($text)) {
3766
- $parts[] = $text;
3767
- } elseif (count($parts) == 0 && $this->match('[:.#]', $m, false)) {
3768
- // css hacks
3769
- $parts[] = $m[0];
3770
- } else {
3771
- break;
3772
- }
3773
- }
3774
-
3775
- $this->eatWhiteDefault = $oldWhite;
3776
- if (count($parts) == 0) return false;
3777
-
3778
- // match comment hack
3779
- if (preg_match(self::$whitePattern,
3780
- $this->buffer, $m, null, $this->count))
3781
- {
3782
- if (!empty($m[0])) {
3783
- $parts[] = $m[0];
3784
- $this->count += strlen($m[0]);
3785
- }
3786
- }
3787
-
3788
- $this->whitespace(); // get any extra whitespace
3789
-
3790
- $out = array("string", "", $parts);
3791
- return true;
3792
- }
3793
-
3794
- // comma separated list of selectors
3795
- protected function selectors(&$out) {
3796
- $s = $this->seek();
3797
- $selectors = array();
3798
- while ($this->selector($sel)) {
3799
- $selectors[] = $sel;
3800
- if (!$this->literal(",")) break;
3801
- while ($this->literal(",")); // ignore extra
3802
- }
3803
-
3804
- if (count($selectors) == 0) {
3805
- $this->seek($s);
3806
- return false;
3807
- }
3808
-
3809
- $out = $selectors;
3810
- return true;
3811
- }
3812
-
3813
- // whitespace separated list of selectorSingle
3814
- protected function selector(&$out) {
3815
- $selector = array();
3816
-
3817
- while (true) {
3818
- if ($this->match('[>+~]+', $m)) {
3819
- $selector[] = array($m[0]);
3820
- } elseif ($this->selectorSingle($part)) {
3821
- $selector[] = $part;
3822
- $this->whitespace();
3823
- } elseif ($this->match('\/[^\/]+\/', $m)) {
3824
- $selector[] = array($m[0]);
3825
- } else {
3826
- break;
3827
- }
3828
-
3829
- }
3830
-
3831
- if (count($selector) == 0) {
3832
- return false;
3833
- }
3834
-
3835
- $out = $selector;
3836
- return true;
3837
- }
3838
-
3839
- // the parts that make up
3840
- // div[yes=no]#something.hello.world:nth-child(-2n+1)%placeholder
3841
- protected function selectorSingle(&$out) {
3842
- $oldWhite = $this->eatWhiteDefault;
3843
- $this->eatWhiteDefault = false;
3844
-
3845
- $parts = array();
3846
-
3847
- if ($this->literal("*", false)) {
3848
- $parts[] = "*";
3849
- }
3850
-
3851
- while (true) {
3852
- // see if we can stop early
3853
- if ($this->match("\s*[{,]", $m)) {
3854
- $this->count--;
3855
- break;
3856
- }
3857
-
3858
- $s = $this->seek();
3859
- // self
3860
- if ($this->literal("&", false)) {
3861
- $parts[] = scssc::$selfSelector;
3862
- continue;
3863
- }
3864
-
3865
- if ($this->literal(".", false)) {
3866
- $parts[] = ".";
3867
- continue;
3868
- }
3869
-
3870
- if ($this->literal("|", false)) {
3871
- $parts[] = "|";
3872
- continue;
3873
- }
3874
-
3875
- // for keyframes
3876
- if ($this->unit($unit)) {
3877
- $parts[] = $unit;
3878
- continue;
3879
- }
3880
-
3881
- if ($this->keyword($name)) {
3882
- $parts[] = $name;
3883
- continue;
3884
- }
3885
-
3886
- if ($this->interpolation($inter)) {
3887
- $parts[] = $inter;
3888
- continue;
3889
- }
3890
-
3891
- if ($this->literal('%', false) && $this->placeholder($placeholder)) {
3892
- $parts[] = '%';
3893
- $parts[] = $placeholder;
3894
- continue;
3895
- }
3896
-
3897
- if ($this->literal("#", false)) {
3898
- $parts[] = "#";
3899
- continue;
3900
- }
3901
-
3902
- // a pseudo selector
3903
- if ($this->match("::?", $m) && $this->mixedKeyword($nameParts)) {
3904
- $parts[] = $m[0];
3905
- foreach ($nameParts as $sub) {
3906
- $parts[] = $sub;
3907
- }
3908
-
3909
- $ss = $this->seek();
3910
- if ($this->literal("(") &&
3911
- ($this->openString(")", $str, "(") || true ) &&
3912
- $this->literal(")"))
3913
- {
3914
- $parts[] = "(";
3915
- if (!empty($str)) $parts[] = $str;
3916
- $parts[] = ")";
3917
- } else {
3918
- $this->seek($ss);
3919
- }
3920
-
3921
- continue;
3922
- } else {
3923
- $this->seek($s);
3924
- }
3925
-
3926
- // attribute selector
3927
- // TODO: replace with open string?
3928
- if ($this->literal("[", false)) {
3929
- $attrParts = array("[");
3930
- // keyword, string, operator
3931
- while (true) {
3932
- if ($this->literal("]", false)) {
3933
- $this->count--;
3934
- break; // get out early
3935
- }
3936
-
3937
- if ($this->match('\s+', $m)) {
3938
- $attrParts[] = " ";
3939
- continue;
3940
- }
3941
- if ($this->string($str)) {
3942
- $attrParts[] = $str;
3943
- continue;
3944
- }
3945
-
3946
- if ($this->keyword($word)) {
3947
- $attrParts[] = $word;
3948
- continue;
3949
- }
3950
-
3951
- if ($this->interpolation($inter, false)) {
3952
- $attrParts[] = $inter;
3953
- continue;
3954
- }
3955
-
3956
- // operator, handles attr namespace too
3957
- if ($this->match('[|-~\$\*\^=]+', $m)) {
3958
- $attrParts[] = $m[0];
3959
- continue;
3960
- }
3961
-
3962
- break;
3963
- }
3964
-
3965
- if ($this->literal("]", false)) {
3966
- $attrParts[] = "]";
3967
- foreach ($attrParts as $part) {
3968
- $parts[] = $part;
3969
- }
3970
- continue;
3971
- }
3972
- $this->seek($s);
3973
- // should just break here?
3974
- }
3975
-
3976
- break;
3977
- }
3978
-
3979
- $this->eatWhiteDefault = $oldWhite;
3980
-
3981
- if (count($parts) == 0) return false;
3982
-
3983
- $out = $parts;
3984
- return true;
3985
- }
3986
-
3987
- protected function variable(&$out) {
3988
- $s = $this->seek();
3989
- if ($this->literal("$", false) && $this->keyword($name)) {
3990
- $out = array("var", $name);
3991
- return true;
3992
- }
3993
- $this->seek($s);
3994
- return false;
3995
- }
3996
-
3997
- protected function keyword(&$word, $eatWhitespace = null) {
3998
- if ($this->match('([\w_\-\*!"\'\\\\][\w\-_"\'\\\\]*)',
3999
- $m, $eatWhitespace))
4000
- {
4001
- $word = $m[1];
4002
- return true;
4003
- }
4004
- return false;
4005
- }
4006
-
4007
- protected function placeholder(&$placeholder) {
4008
- if ($this->match('([\w\-_]+)', $m)) {
4009
- $placeholder = $m[1];
4010
- return true;
4011
- }
4012
- return false;
4013
- }
4014
-
4015
- // consume an end of statement delimiter
4016
- protected function end() {
4017
- if ($this->literal(';')) {
4018
- return true;
4019
- } elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') {
4020
- // if there is end of file or a closing block next then we don't need a ;
4021
- return true;
4022
- }
4023
- return false;
4024
- }
4025
-
4026
- // advance counter to next occurrence of $what
4027
- // $until - don't include $what in advance
4028
- // $allowNewline, if string, will be used as valid char set
4029
- protected function to($what, &$out, $until = false, $allowNewline = false) {
4030
- if (is_string($allowNewline)) {
4031
- $validChars = $allowNewline;
4032
- } else {
4033
- $validChars = $allowNewline ? "." : "[^\n]";
4034
- }
4035
- if (!$this->match('('.$validChars.'*?)'.$this->preg_quote($what), $m, !$until)) return false;
4036
- if ($until) $this->count -= strlen($what); // give back $what
4037
- $out = $m[1];
4038
- return true;
4039
- }
4040
-
4041
- public function throwParseError($msg = "parse error", $count = null) {
4042
- $count = !isset($count) ? $this->count : $count;
4043
-
4044
- $line = $this->getLineNo($count);
4045
-
4046
- if (!empty($this->sourceName)) {
4047
- $loc = "$this->sourceName on line $line";
4048
- } else {
4049
- $loc = "line: $line";
4050
- }
4051
-
4052
- if ($this->peek("(.*?)(\n|$)", $m, $count)) {
4053
- throw new Exception("$msg: failed at `$m[1]` $loc");
4054
- } else {
4055
- throw new Exception("$msg: $loc");
4056
- }
4057
- }
4058
-
4059
- public function getLineNo($pos) {
4060
- return 1 + substr_count(substr($this->buffer, 0, $pos), "\n");
4061
- }
4062
-
4063
- /**
4064
- * Match string looking for either ending delim, escape, or string interpolation
4065
- *
4066
- * {@internal This is a workaround for preg_match's 250K string match limit. }}
4067
- *
4068
- * @param array $m Matches (passed by reference)
4069
- * @param string $delim Delimeter
4070
- *
4071
- * @return boolean True if match; false otherwise
4072
- */
4073
- protected function matchString(&$m, $delim) {
4074
- $token = null;
4075
-
4076
- $end = strpos($this->buffer, "\n", $this->count);
4077
- if ($end === false || $this->buffer[$end - 1] == '\\' || $this->buffer[$end - 2] == '\\' && $this->buffer[$end - 1] == "\r") {
4078
- $end = strlen($this->buffer);
4079
- }
4080
-
4081
- // look for either ending delim, escape, or string interpolation
4082
- foreach (array('#{', '\\', $delim) as $lookahead) {
4083
- $pos = strpos($this->buffer, $lookahead, $this->count);
4084
- if ($pos !== false && $pos < $end) {
4085
- $end = $pos;
4086
- $token = $lookahead;
4087
- }
4088
- }
4089
-
4090
- if (!isset($token)) {
4091
- return false;
4092
- }
4093
-
4094
- $match = substr($this->buffer, $this->count, $end - $this->count);
4095
- $m = array(
4096
- $match . $token,
4097
- $match,
4098
- $token
4099
- );
4100
- $this->count = $end + strlen($token);
4101
-
4102
- return true;
4103
- }
4104
-
4105
- // try to match something on head of buffer
4106
- protected function match($regex, &$out, $eatWhitespace = null) {
4107
- if (!isset($eatWhitespace)) $eatWhitespace = $this->eatWhiteDefault;
4108
-
4109
- $r = '/'.$regex.'/Ais';
4110
- if (preg_match($r, $this->buffer, $out, null, $this->count)) {
4111
- $this->count += strlen($out[0]);
4112
- if ($eatWhitespace) $this->whitespace();
4113
- return true;
4114
- }
4115
- return false;
4116
- }
4117
-
4118
- // match some whitespace
4119
- protected function whitespace() {
4120
- $gotWhite = false;
4121
- while (preg_match(self::$whitePattern, $this->buffer, $m, null, $this->count)) {
4122
- if ($this->insertComments) {
4123
- if (isset($m[1]) && empty($this->commentsSeen[$this->count])) {
4124
- $this->append(array("comment", $m[1]));
4125
- $this->commentsSeen[$this->count] = true;
4126
- }
4127
- }
4128
- $this->count += strlen($m[0]);
4129
- $gotWhite = true;
4130
- }
4131
- return $gotWhite;
4132
- }
4133
-
4134
- protected function peek($regex, &$out, $from=null) {
4135
- if (!isset($from)) $from = $this->count;
4136
-
4137
- $r = '/'.$regex.'/Ais';
4138
- $result = preg_match($r, $this->buffer, $out, null, $from);
4139
-
4140
- return $result;
4141
- }
4142
-
4143
- protected function seek($where = null) {
4144
- if ($where === null) return $this->count;
4145
- else $this->count = $where;
4146
- return true;
4147
- }
4148
-
4149
- static function preg_quote($what) {
4150
- return preg_quote($what, '/');
4151
- }
4152
-
4153
- protected function show() {
4154
- if ($this->peek("(.*?)(\n|$)", $m, $this->count)) {
4155
- return $m[1];
4156
- }
4157
- return "";
4158
- }
4159
-
4160
- // turn list of length 1 into value type
4161
- protected function flattenList($value) {
4162
- if ($value[0] == "list" && count($value[2]) == 1) {
4163
- return $this->flattenList($value[2][0]);
4164
- }
4165
- return $value;
4166
- }
4167
- }
4168
-
4169
- /**
4170
- * SCSS base formatter
4171
- *
4172
- * @author Leaf Corcoran <leafot@gmail.com>
4173
- */
4174
- class scss_formatter {
4175
- public $indentChar = " ";
4176
-
4177
- public $break = "\n";
4178
- public $open = " {";
4179
- public $close = "}";
4180
- public $tagSeparator = ", ";
4181
- public $assignSeparator = ": ";
4182
-
4183
- public function __construct() {
4184
- $this->indentLevel = 0;
4185
- }
4186
-
4187
- public function indentStr($n = 0) {
4188
- return str_repeat($this->indentChar, max($this->indentLevel + $n, 0));
4189
- }
4190
-
4191
- public function property($name, $value) {
4192
- return $name . $this->assignSeparator . $value . ";";
4193
- }
4194
-
4195
- protected function block($block) {
4196
- if (empty($block->lines) && empty($block->children)) return;
4197
-
4198
- $inner = $pre = $this->indentStr();
4199
-
4200
- if (!empty($block->selectors)) {
4201
- echo $pre .
4202
- implode($this->tagSeparator, $block->selectors) .
4203
- $this->open . $this->break;
4204
- $this->indentLevel++;
4205
- $inner = $this->indentStr();
4206
- }
4207
-
4208
- if (!empty($block->lines)) {
4209
- $glue = $this->break.$inner;
4210
- echo $inner . implode($glue, $block->lines);
4211
- if (!empty($block->children)) {
4212
- echo $this->break;
4213
- }
4214
- }
4215
-
4216
- foreach ($block->children as $child) {
4217
- $this->block($child);
4218
- }
4219
-
4220
- if (!empty($block->selectors)) {
4221
- $this->indentLevel--;
4222
- if (empty($block->children)) echo $this->break;
4223
- echo $pre . $this->close . $this->break;
4224
- }
4225
- }
4226
-
4227
- public function format($block) {
4228
- ob_start();
4229
- $this->block($block);
4230
- $out = ob_get_clean();
4231
-
4232
- return $out;
4233
- }
4234
- }
4235
-
4236
- /**
4237
- * SCSS nested formatter
4238
- *
4239
- * @author Leaf Corcoran <leafot@gmail.com>
4240
- */
4241
- class scss_formatter_nested extends scss_formatter {
4242
- public $close = " }";
4243
-
4244
- // adjust the depths of all children, depth first
4245
- public function adjustAllChildren($block) {
4246
- // flatten empty nested blocks
4247
- $children = array();
4248
- foreach ($block->children as $i => $child) {
4249
- if (empty($child->lines) && empty($child->children)) {
4250
- if (isset($block->children[$i + 1])) {
4251
- $block->children[$i + 1]->depth = $child->depth;
4252
- }
4253
- continue;
4254
- }
4255
- $children[] = $child;
4256
- }
4257
-
4258
- $count = count($children);
4259
- for ($i = 0; $i < $count; $i++) {
4260
- $depth = $children[$i]->depth;
4261
- $j = $i + 1;
4262
- if (isset($children[$j]) && $depth < $children[$j]->depth) {
4263
- $childDepth = $children[$j]->depth;
4264
- for (; $j < $count; $j++) {
4265
- if ($depth < $children[$j]->depth && $childDepth >= $children[$j]->depth) {
4266
- $children[$j]->depth = $depth + 1;
4267
- }
4268
- }
4269
- }
4270
- }
4271
-
4272
- $block->children = $children;
4273
-
4274
- // make relative to parent
4275
- foreach ($block->children as $child) {
4276
- $this->adjustAllChildren($child);
4277
- $child->depth = $child->depth - $block->depth;
4278
- }
4279
- }
4280
-
4281
- protected function block($block) {
4282
- if ($block->type == "root") {
4283
- $this->adjustAllChildren($block);
4284
- }
4285
-
4286
- $inner = $pre = $this->indentStr($block->depth - 1);
4287
- if (!empty($block->selectors)) {
4288
- echo $pre .
4289
- implode($this->tagSeparator, $block->selectors) .
4290
- $this->open . $this->break;
4291
- $this->indentLevel++;
4292
- $inner = $this->indentStr($block->depth - 1);
4293
- }
4294
-
4295
- if (!empty($block->lines)) {
4296
- $glue = $this->break.$inner;
4297
- echo $inner . implode($glue, $block->lines);
4298
- if (!empty($block->children)) echo $this->break;
4299
- }
4300
-
4301
- foreach ($block->children as $i => $child) {
4302
- // echo "*** block: ".$block->depth." child: ".$child->depth."\n";
4303
- $this->block($child);
4304
- if ($i < count($block->children) - 1) {
4305
- echo $this->break;
4306
-
4307
- if (isset($block->children[$i + 1])) {
4308
- $next = $block->children[$i + 1];
4309
- if ($next->depth == max($block->depth, 1) && $child->depth >= $next->depth) {
4310
- echo $this->break;
4311
- }
4312
- }
4313
- }
4314
- }
4315
-
4316
- if (!empty($block->selectors)) {
4317
- $this->indentLevel--;
4318
- echo $this->close;
4319
- }
4320
-
4321
- if ($block->type == "root") {
4322
- echo $this->break;
4323
- }
4324
- }
4325
- }
4326
-
4327
- /**
4328
- * SCSS compressed formatter
4329
- *
4330
- * @author Leaf Corcoran <leafot@gmail.com>
4331
- */
4332
- class scss_formatter_compressed extends scss_formatter {
4333
- public $open = "{";
4334
- public $tagSeparator = ",";
4335
- public $assignSeparator = ":";
4336
- public $break = "";
4337
-
4338
- public function indentStr($n = 0) {
4339
- return "";
4340
- }
4341
- }
4342
-
4343
- /**
4344
- * SCSS server
4345
- *
4346
- * @author Leaf Corcoran <leafot@gmail.com>
4347
- */
4348
- class scss_server {
4349
- /**
4350
- * Join path components
4351
- *
4352
- * @param string $left Path component, left of the directory separator
4353
- * @param string $right Path component, right of the directory separator
4354
- *
4355
- * @return string
4356
- */
4357
- protected function join($left, $right) {
4358
- return rtrim($left, '/\\') . DIRECTORY_SEPARATOR . ltrim($right, '/\\');
4359
- }
4360
-
4361
- /**
4362
- * Get name of requested .scss file
4363
- *
4364
- * @return string|null
4365
- */
4366
- protected function inputName() {
4367
- switch (true) {
4368
- case isset($_GET['p']):
4369
- return $_GET['p'];
4370
- case isset($_SERVER['PATH_INFO']):
4371
- return $_SERVER['PATH_INFO'];
4372
- case isset($_SERVER['DOCUMENT_URI']):
4373
- return substr($_SERVER['DOCUMENT_URI'], strlen($_SERVER['SCRIPT_NAME']));
4374
- }
4375
- }
4376
-
4377
- /**
4378
- * Get path to requested .scss file
4379
- *
4380
- * @return string
4381
- */
4382
- protected function findInput() {
4383
- if (($input = $this->inputName())
4384
- && strpos($input, '..') === false
4385
- && substr($input, -5) === '.scss'
4386
- ) {
4387
- $name = $this->join($this->dir, $input);
4388
-
4389
- if (is_file($name) && is_readable($name)) {
4390
- return $name;
4391
- }
4392
- }
4393
-
4394
- return false;
4395
- }
4396
-
4397
- /**
4398
- * Get path to cached .css file
4399
- *
4400
- * @return string
4401
- */
4402
- protected function cacheName($fname) {
4403
- return $this->join($this->cacheDir, md5($fname) . '.css');
4404
- }
4405
-
4406
- /**
4407
- * Get path to cached imports
4408
- *
4409
- * @return string
4410
- */
4411
- protected function importsCacheName($out) {
4412
- return $out . '.imports';
4413
- }
4414
-
4415
- /**
4416
- * Determine whether .scss file needs to be re-compiled.
4417
- *
4418
- * @param string $in Input path
4419
- * @param string $out Output path
4420
- *
4421
- * @return boolean True if compile required.
4422
- */
4423
- protected function needsCompile($in, $out) {
4424
- if (!is_file($out)) return true;
4425
-
4426
- $mtime = filemtime($out);
4427
- if (filemtime($in) > $mtime) return true;
4428
-
4429
- // look for modified imports
4430
- $icache = $this->importsCacheName($out);
4431
- if (is_readable($icache)) {
4432
- $imports = unserialize( self::$parent->filesystem->execute( 'get_contents', $icache ));
4433
- //$imports = unserialize(file_get_contents($icache));
4434
- foreach ($imports as $import) {
4435
- if (filemtime($import) > $mtime) return true;
4436
- }
4437
- }
4438
- return false;
4439
- }
4440
-
4441
- /**
4442
- * Get If-Modified-Since header from client request
4443
- *
4444
- * @return string
4445
- */
4446
- protected function getModifiedSinceHeader()
4447
- {
4448
- $modifiedSince = '';
4449
-
4450
- if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
4451
- $modifiedSince = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
4452
-
4453
- if (false !== ($semicolonPos = strpos($modifiedSince, ';'))) {
4454
- $modifiedSince = substr($modifiedSince, 0, $semicolonPos);
4455
- }
4456
- }
4457
-
4458
- return $modifiedSince;
4459
- }
4460
-
4461
- /**
4462
- * Compile .scss file
4463
- *
4464
- * @param string $in Input path (.scss)
4465
- * @param string $out Output path (.css)
4466
- *
4467
- * @return string
4468
- */
4469
- protected function compile($in, $out) {
4470
- $start = microtime(true);
4471
-
4472
- $css = $this->scss->compile(self::$parent->filesystem->execute( 'get_contents', $in ), $in);
4473
- //$css = $this->scss->compile(file_get_contents($in), $in);
4474
- $elapsed = round((microtime(true) - $start), 4);
4475
-
4476
- $v = scssc::$VERSION;
4477
- $t = @date('r');
4478
- $css = "/* compiled by scssphp $v on $t (${elapsed}s) */\n\n" . $css;
4479
-
4480
- self::$parent->filesystem->execute( 'put_contents', $out, array('content'=>$css) );
4481
- self::$parent->filesystem->execute( 'put_contents', $this->importsCacheName($out), array('content'=>serialize($this->scss->getParsedFiles())) );
4482
- //file_put_contents($out, $css);
4483
- //file_put_contents($this->importsCacheName($out),
4484
- // serialize($this->scss->getParsedFiles()));
4485
- return $css;
4486
- }
4487
-
4488
- /**
4489
- * Compile requested scss and serve css. Outputs HTTP response.
4490
- *
4491
- * @param string $salt Prefix a string to the filename for creating the cache name hash
4492
- */
4493
- public function serve($salt = '') {
4494
- $protocol = isset($_SERVER['SERVER_PROTOCOL'])
4495
- ? $_SERVER['SERVER_PROTOCOL']
4496
- : 'HTTP/1.0';
4497
-
4498
- if ($input = $this->findInput()) {
4499
- $output = $this->cacheName($salt . $input);
4500
-
4501
- if ($this->needsCompile($input, $output)) {
4502
- try {
4503
- $css = $this->compile($input, $output);
4504
-
4505
- $lastModified = gmdate('D, d M Y H:i:s', filemtime($output)) . ' GMT';
4506
-
4507
- header('Last-Modified: ' . $lastModified);
4508
- header('Content-type: text/css');
4509
-
4510
- echo $css;
4511
-
4512
- return;
4513
- } catch (Exception $e) {
4514
- header($protocol . ' 500 Internal Server Error');
4515
- header('Content-type: text/plain');
4516
-
4517
- echo 'Parse error: ' . $e->getMessage() . "\n";
4518
- }
4519
- }
4520
-
4521
- header('X-SCSS-Cache: true');
4522
- header('Content-type: text/css');
4523
-
4524
- $modifiedSince = $this->getModifiedSinceHeader();
4525
- $mtime = filemtime($output);
4526
-
4527
- if (@strtotime($modifiedSince) === $mtime) {
4528
- header($protocol . ' 304 Not Modified');
4529
-
4530
- return;
4531
- }
4532
-
4533
- $lastModified = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
4534
- header('Last-Modified: ' . $lastModified);
4535
-
4536
- echo self::$parent->filesystem->execute( 'get_contents', $output );
4537
- //echo file_get_contents($output);
4538
-
4539
- return;
4540
- }
4541
-
4542
- header($protocol . ' 404 Not Found');
4543
- header('Content-type: text/plain');
4544
-
4545
- $v = scssc::$VERSION;
4546
- echo "/* INPUT NOT FOUND scss $v */\n";
4547
- }
4548
-
4549
- /**
4550
- * Constructor
4551
- *
4552
- * @param string $dir Root directory to .scss files
4553
- * @param string $cacheDir Cache directory
4554
- * @param \scssc|null $scss SCSS compiler instance
4555
- */
4556
- public function __construct($dir, $cacheDir=null, $scss=null) {
4557
- $this->dir = $dir;
4558
-
4559
- if (!isset($cacheDir)) {
4560
- $cacheDir = $this->join($dir, 'scss_cache');
4561
- }
4562
-
4563
- $this->cacheDir = $cacheDir;
4564
- if (!is_dir($this->cacheDir)) mkdir($this->cacheDir, 0755, true);
4565
-
4566
- if (!isset($scss)) {
4567
- $scss = new scssc();
4568
- $scss->setImportPaths($this->dir);
4569
- }
4570
- $this->scss = $scss;
4571
- }
4572
-
4573
- /**
4574
- * Helper method to serve compiled scss
4575
- *
4576
- * @param string $path Root path
4577
- */
4578
- static public function serveFrom($path) {
4579
- $server = new self($path);
4580
- $server->serve();
4581
- }
4582
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ReduxCore/inc/themecheck/checks/embedded.php CHANGED
@@ -12,7 +12,7 @@
12
  if ( $redux ) {
13
  if ( ! isset( $_POST['redux_wporg'] ) ) {
14
  checkcount();
15
- $this->error[] = '<div class="redux-error">' . sprintf( __( '<span class="tc-lead tc-recommended">RECOMMENDED</span>: If you are submitting to WordPress.org Theme Repository, it is <strong>strongly</strong> suggested that you read <a href="%1" target="_blank">this document</a>, or your theme will be rejected because of Redux.', 'redux-framework' ), 'https://docs.reduxframework.com/core/wordpress-org-submissions/' ) . '</div>';
16
  $ret = false;
17
  } else {
18
  // TODO Granular WP.org tests!!!
12
  if ( $redux ) {
13
  if ( ! isset( $_POST['redux_wporg'] ) ) {
14
  checkcount();
15
+ $this->error[] = '<div class="redux-error">' . sprintf( __( '<span class="tc-lead tc-recommended">RECOMMENDED</span>: If you are submitting to WordPress.org Theme Repository, it is <strong>strongly</strong> suggested that you read <a href="%s" target="_blank">this document</a>, or your theme will be rejected because of Redux.', 'redux-framework' ), 'https://docs.reduxframework.com/core/wordpress-org-submissions/' ) . '</div>';
16
  $ret = false;
17
  } else {
18
  // TODO Granular WP.org tests!!!
ReduxCore/inc/themecheck/class.redux_themecheck.php CHANGED
@@ -66,6 +66,10 @@
66
  */
67
  private function __construct() {
68
 
 
 
 
 
69
  // Load admin style sheet and JavaScript.
70
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
71
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
@@ -118,11 +122,11 @@
118
  if ( self::$redux_details === null ) {
119
  foreach ( $php_files as $php_key => $phpfile ) {
120
  if ( strpos( $phpfile, 'class' . ' ReduxFramework {' ) !== false ) {
121
- self::$redux_details = array(
122
  'filename' => strtolower( basename( $php_key ) ),
123
  'path' => $php_key,
124
  );
125
- self::$redux_details['dir'] = str_replace( basename( $php_key ), '', $php_key );
126
  self::$redux_details['parent_dir'] = str_replace( basename( self::$redux_details['dir'] ) . '/', '', self::$redux_details['dir'] );
127
  }
128
  }
@@ -187,11 +191,7 @@
187
  public function enqueue_admin_styles() {
188
  $screen = get_current_screen();
189
  if ( 'appearance_page_themecheck' == $screen->id ) {
190
- //if ( ! isset( $_POST['themename'] ) ) {
191
- $redux = self::get_redux_instance();
192
-
193
- wp_enqueue_style( $this->slug . '-admin-styles', $redux::$_url . 'inc/themecheck/css/admin.css', array(), $this->version );
194
- //}
195
  }
196
  }
197
 
@@ -205,8 +205,7 @@
205
  $screen = get_current_screen();
206
 
207
  if ( 'appearance_page_themecheck' == $screen->id ) {
208
- $redux = self::get_redux_instance();
209
- wp_enqueue_script( $this->slug . '-admin-script', $redux::$_url . 'inc/themecheck/js/admin.js', array( 'jquery' ), $this->version );
210
 
211
  if ( ! isset( $_POST['themename'] ) ) {
212
 
66
  */
67
  private function __construct() {
68
 
69
+ if ( ! class_exists( 'ThemeCheckMain' ) ) {
70
+ return;
71
+ }
72
+
73
  // Load admin style sheet and JavaScript.
74
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
75
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
122
  if ( self::$redux_details === null ) {
123
  foreach ( $php_files as $php_key => $phpfile ) {
124
  if ( strpos( $phpfile, 'class' . ' ReduxFramework {' ) !== false ) {
125
+ self::$redux_details = array(
126
  'filename' => strtolower( basename( $php_key ) ),
127
  'path' => $php_key,
128
  );
129
+ self::$redux_details['dir'] = str_replace( basename( $php_key ), '', $php_key );
130
  self::$redux_details['parent_dir'] = str_replace( basename( self::$redux_details['dir'] ) . '/', '', self::$redux_details['dir'] );
131
  }
132
  }
191
  public function enqueue_admin_styles() {
192
  $screen = get_current_screen();
193
  if ( 'appearance_page_themecheck' == $screen->id ) {
194
+ wp_enqueue_style( $this->slug . '-admin-styles', ReduxFramework::$_url . 'inc/themecheck/css/admin.css', array(), $this->version );
 
 
 
 
195
  }
196
  }
197
 
205
  $screen = get_current_screen();
206
 
207
  if ( 'appearance_page_themecheck' == $screen->id ) {
208
+ wp_enqueue_script( $this->slug . '-admin-script', ReduxFramework::$_url . 'inc/themecheck/js/admin.js', array( 'jquery' ), $this->version );
 
209
 
210
  if ( ! isset( $_POST['themename'] ) ) {
211
 
ReduxCore/inc/welcome/css/redux-welcome.css CHANGED
@@ -1 +1 @@
1
- .about-wrap.redux-status .updated,.about-wrap.redux-status .error{margin-top:10px}.about-wrap.redux-status .updated.redux-message{display:block !important}.about-wrap.redux-status .redux-message{position:relative;border-left-color:#00A2E3 !important;overflow:hidden}.about-wrap.redux-status .redux-message a.skip,.about-wrap.redux-status .redux-message a.docs{opacity:0.5;text-decoration:none !important}.about-wrap.redux-status #debug-report{display:none;margin:10px 0;padding:0;position:relative}.about-wrap.redux-status #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.about-wrap.redux-status table.redux_status_table{margin-bottom:1em}.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) th,.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) td{background:#fcfcfc}.about-wrap.redux-status table.redux_status_table th{font-weight:700;padding:9px}.about-wrap.redux-status table.redux_status_table td:first-child{width:33%}.about-wrap.redux-status table.redux_status_table td.help{width:1em}.about-wrap.redux-status table.redux_status_table td{padding:9px}.about-wrap.redux-status table.redux_status_table td mark{background:transparent none}.about-wrap.redux-status table.redux_status_table td mark.yes{color:#7ad03a}.about-wrap.redux-status table.redux_status_table td mark.no{color:#999}.about-wrap.redux-status table.redux_status_table td mark.error{color:#a00}.about-wrap.redux-status table.redux_status_table td ul{margin:0}.about-wrap.redux-status table.redux_status_table .redux-hint-qtip{cursor:help}.about-wrap #footer-upgrade{display:none}.about-wrap .redux-badge{position:absolute;top:0;background:#00A2E3;padding:20px;color:#efefef;margin:5px 0 0 0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);box-shadow:0 1px 3px rgba(0,0,0,0.2)}.about-wrap .redux-badge:before{color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:80px;font-weight:normal;width:165px;height:165px;line-height:165px;text-align:center;position:absolute;top:0;margin:0;vertical-align:middle}.about-wrap .redux-badge .el{background:#00A2E3;display:block !important;font-size:8em;color:#fff;margin-bottom:30px}.about-wrap .redux-badge span{font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:rgba(50,50,49,0.47);left:0;right:0;padding:8px}.about-wrap .redux-feature{overflow:visible !important;*zoom:1}.about-wrap .redux-feature:before,.about-wrap .redux-feature:after{content:" ";display:table}.about-wrap .redux-feature:after{clear:both}.about-wrap h3+.redux-feature{margin-top:0}.about-wrap .feature-rest div{width:50% !important;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 !important}.about-wrap .feature-rest div.icon:before{font-weight:normal;width:100%;font-size:170px;line-height:125px;color:#9c5d90;display:inline-block;position:relative;text-align:center;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.about-wrap div.icon{width:0 !important;padding:0;margin:20px 0 !important}.about-wrap .about-integrations{background:#fff;margin:20px 0;padding:1px 20px 10px}.about-wrap .changelog h2{line-height:1.4;padding-bottom:0}.about-wrap .changelog .feature-section{padding-top:1.4em}.about-wrap .changelog .prettyprint{overflow-wrap:break-word}.about-wrap .changelog .gist-it-gist .gist-file{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data pre{padding-top:10px !important;word-break:break-word}.about-wrap .theme-screenshot{color:#eee;transition:all 0.5s}.about-wrap .theme-screenshot:hover{color:#fff}.about-wrap .theme-screenshot i{text-align:center;display:block;margin:10px;font-size:90px;line-height:200px;transition:all 0.5s ease}.about-wrap .theme-browser .theme{transition:all 0.5s}.about-wrap .theme-browser .theme:hover .theme-screenshot i{transition:all 0.5s;font-size:120px}.about-wrap .theme-browser .theme .theme-screenshot:after{content:inherit;display:inherit;padding-top:inherit}.about-wrap .theme-screenshot figure{position:relative;overflow:hidden;cursor:pointer;margin:0}.about-wrap .theme-screenshot figure i{position:relative;display:block;font-size:11em;opacity:0.8}.about-wrap .theme-screenshot figure figcaption{padding:15px;color:#fff;text-transform:uppercase;font-size:1.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.about-wrap .theme-screenshot figure figcaption:before,.about-wrap .theme-screenshot figure figcaption:after{pointer-events:none}.about-wrap .theme-screenshot figure figcaption,.about-wrap .theme-screenshot figure figcaption>a{position:absolute;top:0;left:0;right:0;bottom:0}.about-wrap .theme-screenshot figure figcaption>a{z-index:1000;text-indent:200%;white-space:nowrap;font-size:0;opacity:0}.about-wrap .theme-screenshot figure p{margin:0;letter-spacing:1px;font-size:68.5%}.about-wrap .theme-screenshot figure i{opacity:0.7;-webkit-transition:opacity 0.35s;transition:opacity 0.35s}.about-wrap .theme:hover figcaption::before,.about-wrap .theme:hover figcaption::after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.about-wrap .theme:hover i{opacity:0.3}.about-wrap .theme:hover p{opacity:1;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);text-shadow:2px 2px 1px rgba(0,0,0,0.3)}.about-wrap figure figcaption::before,.about-wrap figure figcaption::after{position:absolute;top:15px;right:15px;bottom:15px;left:15px;content:'';opacity:0;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s}.about-wrap figure figcaption::before{border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transform:scale(0, 1);transform:scale(0, 1)}.about-wrap figure figcaption::after{border-right:1px solid #fff;border-left:1px solid #fff;-webkit-transform:scale(1, 0);transform:scale(1, 0)}.about-wrap figure p{padding:10px;text-transform:none;opacity:0;margin-top:0 !important;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}.redux-message .twitter-share-button,p.redux-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.redux-message a.donate,.redux-message a.review-us,p.redux-actions a.donate,p.redux-actions a.review-us{opacity:.5;text-decoration:none !important}#redux-message{margin-top:15px !important;display:block !important;margin:5px 0 15px;border-color:#00A2E3}#redux-message h4{margin-top:.5em}@media only screen and (min-width: 2000px){#wpwrap .avada-demo-themes .theme{width:31%;margin:0 3% 3% 0}#wpwrap .avada-demo-themes .theme:nth-child(3n){margin-right:0}#wpwrap .theme-browser .theme:nth-child(4n),#wpwrap .theme-browser .theme:nth-child(5n){margin-right:3%}}@media screen and (max-width: 500px){.avada-wrap .avada-logo{display:block;position:relative;margin:0 auto 50px auto}.about-wrap h2 .nav-tab{width:100%;margin:0;padding:0;height:40px;line-height:40px;text-align:center;margin-bottom:10px;margin-top:10px}.about-wrap h2.nav-tab-wrapper{padding:0;width:100%}.avada-demo-themes .theme:hover .theme-actions{display:block !important;opacity:1 !important}.avada-demo-themes .theme:hover .screenshot-hover{display:none !important}}@media only screen and (max-width: 1120px){.theme-browser .theme:nth-child(odd){margin-right:5% !important}.theme-browser .theme{width:47.5% !important;margin-right:auto !important}}@media screen and (max-width: 620px){.theme-browser .theme{width:100% !important;margin-right:0}.avada-demo-themes .theme:hover .theme-actions{display:block !important;opacity:1 !important}.avada-demo-themes .theme:hover .screenshot-hover{display:none !important}}#support_div input.hash{text-align:center}#support_div .hide{display:none}#support_div .previous{opacity:.8}#support_div #supportform{margin-top:10px;text-align:center;position:relative}#support_div #supportform fieldset{background:white;border:0 none;border-radius:3px;box-shadow:0 0 15px 1px rgba(0,0,0,0.4);padding:20px 30px;box-sizing:border-box;width:86%;margin:0 7%;position:absolute}#support_div #supportform fieldset:not(:first-of-type){display:none}#support_div #supportform input,#support_div #supportform textarea{padding:15px;border:1px solid #ccc;border-radius:3px;margin-bottom:10px;width:100%;box-sizing:border-box;font-family:montserrat;color:#2C3E50;font-size:13px}#support_div #supportform input.checkbox{width:initial;margin-top:10px}#support_div #supportform .action-button{width:100px;background:#27AE60;font-weight:bold;color:white;border:0 none;border-radius:1px;cursor:pointer;padding:10px 5px;margin:10px 5px}#support_div #supportform .action-button:disabled{opacity:.5}#support_div #supportform .action-button:hover,#support_div #supportform .action-button:focus{box-shadow:0 0 0 2px white, 0 0 0 3px #27AE60}#support_div #supportform .fs-title{font-size:15px;text-transform:uppercase;color:#2C3E50;margin-bottom:10px}#support_div #supportform .fs-subtitle{font-weight:normal;font-size:13px;text-align:left;color:#666;margin-bottom:20px}#support_div #supportform #toDebug li{text-align:left;width:45%;float:left}#support_div #supportform #user_type{width:100%}#support_div #supportform #user_type td{cursor:pointer;width:50%}#support_div #supportform #user_type td i{font-size:130px;margin-bottom:10px}#support_div #supportform #user_type td:hover i{color:#176C8E}#support_div #supportform #user_type td small{line-height:2.5em;font-style:italic}#support_div #supportform #support_hash{text-align:center;word-break:break-all}#support_div .breadcrumb{display:inline-block;box-shadow:0 0 10px 1px rgba(0,0,0,0.35);overflow:hidden;border-radius:5px;margin:15px 0;counter-reset:flag}#support_div .breadcrumb li{text-decoration:none;outline:none;display:block;float:left;font-size:12px;transition:all 0.5s;width:auto;margin:0;line-height:36px;color:white;padding:0 10px 0 60px;background:#666;position:relative}#support_div .breadcrumb li:first-child{padding-left:46px;border-radius:5px 0 0 5px}#support_div .breadcrumb li:first-child:before{left:14px}#support_div .breadcrumb li:last-child{border-radius:0 5px 5px 0;padding-right:20px}#support_div .breadcrumb li:last-child:after{content:none}#support_div .breadcrumb li.active{background:#333}#support_div .breadcrumb li.active:after{background:#333}#support_div .breadcrumb li.active:before{background:#555}#support_div .breadcrumb li:after{content:'';position:absolute;top:0;right:-18px;width:36px;height:36px;transform:scale(0.707) rotate(45deg);z-index:1;background:#666;box-shadow:2px -2px 0 2px rgba(0,0,0,0.4),3px -3px 0 2px rgba(255,255,255,0.1);border-radius:0 5px 0 50px;transition:all 0.5s}#support_div .breadcrumb li:before{transition:all 0.5s;content:counter(flag);counter-increment:flag;border-radius:100%;width:20px;height:20px;line-height:20px;margin:8px 0;position:absolute;top:0;left:30px;background:#444;font-weight:bold}
1
+ .about-wrap.redux-status .updated,.about-wrap.redux-status .error{margin-top:10px}.about-wrap.redux-status .updated.redux-message{display:block !important}.about-wrap.redux-status .redux-message{position:relative;border-left-color:#00A2E3 !important;overflow:hidden}.about-wrap.redux-status .redux-message a.skip,.about-wrap.redux-status .redux-message a.docs{opacity:0.5;text-decoration:none !important}.about-wrap.redux-status #debug-report{display:none;margin:10px 0;padding:0;position:relative}.about-wrap.redux-status #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.about-wrap.redux-status table.redux_status_table{margin-bottom:1em}.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) th,.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) td{background:#fcfcfc}.about-wrap.redux-status table.redux_status_table th{font-weight:700;padding:9px}.about-wrap.redux-status table.redux_status_table td:first-child{width:33%}.about-wrap.redux-status table.redux_status_table td.help{width:1em}.about-wrap.redux-status table.redux_status_table td{padding:9px}.about-wrap.redux-status table.redux_status_table td mark{background:transparent none}.about-wrap.redux-status table.redux_status_table td mark.yes{color:#7ad03a}.about-wrap.redux-status table.redux_status_table td mark.no{color:#999}.about-wrap.redux-status table.redux_status_table td mark.error{color:#a00}.about-wrap.redux-status table.redux_status_table td ul{margin:0}.about-wrap.redux-status table.redux_status_table .redux-hint-qtip{cursor:help}.about-wrap #footer-upgrade{display:none}.about-wrap .redux-badge{position:absolute;top:0;background:#00A2E3;padding:20px;color:#efefef;margin:5px 0 0 0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);box-shadow:0 1px 3px rgba(0,0,0,0.2)}.about-wrap .redux-badge:before{color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:80px;font-weight:normal;width:165px;height:165px;line-height:165px;text-align:center;position:absolute;top:0;margin:0;vertical-align:middle}.about-wrap .redux-badge .el{background:#00A2E3;display:block !important;font-size:8em;color:#fff;margin-bottom:30px}.about-wrap .redux-badge span{font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:rgba(50,50,49,0.47);left:0;right:0;padding:8px}.about-wrap .redux-feature{overflow:visible !important;*zoom:1}.about-wrap .redux-feature:before,.about-wrap .redux-feature:after{content:" ";display:table}.about-wrap .redux-feature:after{clear:both}.about-wrap h3+.redux-feature{margin-top:0}.about-wrap .feature-rest div{width:50% !important;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 !important}.about-wrap .feature-rest div.icon:before{font-weight:normal;width:100%;font-size:170px;line-height:125px;color:#9c5d90;display:inline-block;position:relative;text-align:center;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.about-wrap div.icon{width:0 !important;padding:0;margin:20px 0 !important}.about-wrap .about-integrations{background:#fff;margin:20px 0;padding:1px 20px 10px}.about-wrap .changelog h2{line-height:1.4;padding-bottom:0}.about-wrap .changelog .feature-section{padding-top:1.4em}.about-wrap .changelog .prettyprint{overflow-wrap:break-word}.about-wrap .changelog .gist-it-gist .gist-file{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data pre{padding-top:10px !important;word-break:break-word}.about-wrap .theme-screenshot{color:#eee;transition:all 0.5s}.about-wrap .theme-screenshot:hover{color:#fff}.about-wrap .theme-screenshot i{text-align:center;display:block;margin:10px;font-size:90px;line-height:200px;transition:all 0.5s ease}.about-wrap .theme-browser .theme{transition:all 0.5s}.about-wrap .theme-browser .theme:hover .theme-screenshot i{transition:all 0.5s;font-size:120px}.about-wrap .theme-browser .theme .theme-screenshot:after{content:inherit;display:inherit;padding-top:inherit}.about-wrap .theme-screenshot figure{position:relative;overflow:hidden;cursor:pointer;margin:0}.about-wrap .theme-screenshot figure i{position:relative;display:block;font-size:11em;opacity:0.8}.about-wrap .theme-screenshot figure figcaption{padding:15px;color:#fff;text-transform:uppercase;font-size:1.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.about-wrap .theme-screenshot figure figcaption:before,.about-wrap .theme-screenshot figure figcaption:after{pointer-events:none}.about-wrap .theme-screenshot figure figcaption,.about-wrap .theme-screenshot figure figcaption>a{position:absolute;top:0;left:0;right:0;bottom:0}.about-wrap .theme-screenshot figure figcaption>a{z-index:1000;text-indent:200%;white-space:nowrap;font-size:0;opacity:0}.about-wrap .theme-screenshot figure p{margin:0;letter-spacing:1px;font-size:68.5%}.about-wrap .theme-screenshot figure i{opacity:0.7;-webkit-transition:opacity 0.35s;transition:opacity 0.35s}.about-wrap .theme:hover figcaption::before,.about-wrap .theme:hover figcaption::after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.about-wrap .theme:hover i{opacity:0.3}.about-wrap .theme:hover p{opacity:1;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);text-shadow:2px 2px 1px rgba(0,0,0,0.3)}.about-wrap figure figcaption::before,.about-wrap figure figcaption::after{position:absolute;top:15px;right:15px;bottom:15px;left:15px;content:'';opacity:0;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s}.about-wrap figure figcaption::before{border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transform:scale(0, 1);transform:scale(0, 1)}.about-wrap figure figcaption::after{border-right:1px solid #fff;border-left:1px solid #fff;-webkit-transform:scale(1, 0);transform:scale(1, 0)}.about-wrap figure p{padding:10px;text-transform:none;opacity:0;margin-top:0 !important;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}.redux-message .twitter-share-button,p.redux-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.redux-message a.donate,.redux-message a.review-us,p.redux-actions a.donate,p.redux-actions a.review-us{opacity:.5;text-decoration:none !important}#redux-message{margin-top:15px !important;display:block !important;margin:5px 0 15px;border-color:#00A2E3}#redux-message h4{margin-top:.5em}@media only screen and (min-width: 2000px){#wpwrap .theme-browser .theme:nth-child(4n),#wpwrap .theme-browser .theme:nth-child(5n){margin-right:3%}}@media screen and (max-width: 500px){.about-wrap h2 .nav-tab{width:100%;margin:0;padding:0;height:40px;line-height:40px;text-align:center;margin-bottom:10px;margin-top:10px}.about-wrap h2.nav-tab-wrapper{padding:0;width:100%}}@media only screen and (max-width: 1120px){.theme-browser .theme:nth-child(odd){margin-right:5% !important}.theme-browser .theme{width:47.5% !important;margin-right:auto !important}}@media screen and (max-width: 620px){.theme-browser .theme{width:100% !important;margin-right:0}}#support_div input.hash{text-align:center}#support_div .hide{display:none}#support_div .previous{opacity:.8}#support_div #supportform{margin-top:10px;text-align:center;position:relative}#support_div #supportform fieldset{background:white;border:0 none;border-radius:3px;box-shadow:0 0 15px 1px rgba(0,0,0,0.4);padding:20px 30px;box-sizing:border-box;width:86%;margin:0 7%;position:absolute}#support_div #supportform fieldset:not(:first-of-type){display:none}#support_div #supportform input,#support_div #supportform textarea{padding:15px;border:1px solid #ccc;border-radius:3px;margin-bottom:10px;width:100%;box-sizing:border-box;font-family:montserrat;color:#2C3E50;font-size:13px}#support_div #supportform input.checkbox{width:initial;margin-top:10px}#support_div #supportform .action-button{width:100px;background:#27AE60;font-weight:bold;color:white;border:0 none;border-radius:1px;cursor:pointer;padding:10px 5px;margin:10px 5px}#support_div #supportform .action-button:disabled{opacity:.5}#support_div #supportform .action-button:hover,#support_div #supportform .action-button:focus{box-shadow:0 0 0 2px white, 0 0 0 3px #27AE60}#support_div #supportform .fs-title{font-size:15px;text-transform:uppercase;color:#2C3E50;margin-bottom:10px}#support_div #supportform .fs-subtitle{font-weight:normal;font-size:13px;text-align:left;color:#666;margin-bottom:20px}#support_div #supportform #toDebug li{text-align:left;width:45%;float:left}#support_div #supportform #user_type{width:100%}#support_div #supportform #user_type td{cursor:pointer;width:50%}#support_div #supportform #user_type td i{font-size:130px;margin-bottom:10px}#support_div #supportform #user_type td:hover i{color:#176C8E}#support_div #supportform #user_type td small{line-height:2.5em;font-style:italic}#support_div #supportform #support_hash{text-align:center;word-break:break-all}#support_div .breadcrumb{display:inline-block;box-shadow:0 0 10px 1px rgba(0,0,0,0.35);overflow:hidden;border-radius:5px;margin:15px 0;counter-reset:flag}#support_div .breadcrumb li{text-decoration:none;outline:none;display:block;float:left;font-size:12px;transition:all 0.5s;width:auto;margin:0;line-height:36px;color:white;padding:0 10px 0 60px;background:#666;position:relative}#support_div .breadcrumb li:first-child{padding-left:46px;border-radius:5px 0 0 5px}#support_div .breadcrumb li:first-child:before{left:14px}#support_div .breadcrumb li:last-child{border-radius:0 5px 5px 0;padding-right:20px}#support_div .breadcrumb li:last-child:after{content:none}#support_div .breadcrumb li.active{background:#333}#support_div .breadcrumb li.active:after{background:#333}#support_div .breadcrumb li.active:before{background:#555}#support_div .breadcrumb li:after{content:'';position:absolute;top:0;right:-18px;width:36px;height:36px;transform:scale(0.707) rotate(45deg);z-index:1;background:#666;box-shadow:2px -2px 0 2px rgba(0,0,0,0.4),3px -3px 0 2px rgba(255,255,255,0.1);border-radius:0 5px 0 50px;transition:all 0.5s}#support_div .breadcrumb li:before{transition:all 0.5s;content:counter(flag);counter-increment:flag;border-radius:100%;width:20px;height:20px;line-height:20px;margin:8px 0;position:absolute;top:0;left:30px;background:#444;font-weight:bold}
ReduxCore/inc/welcome/css/redux-welcome.scss CHANGED
@@ -435,15 +435,6 @@ p.redux-actions {
435
  }
436
 
437
  @media only screen and (min-width: 2000px) {
438
- #wpwrap .avada-demo-themes .theme {
439
- width: 31%;
440
- margin: 0 3% 3% 0;
441
- }
442
-
443
- #wpwrap .avada-demo-themes .theme:nth-child(3n) {
444
- margin-right: 0;
445
- }
446
-
447
  #wpwrap .theme-browser .theme:nth-child(4n),
448
  #wpwrap .theme-browser .theme:nth-child(5n) {
449
  margin-right: 3%;
@@ -451,12 +442,6 @@ p.redux-actions {
451
  }
452
 
453
  @media screen and (max-width: 500px) {
454
- .avada-wrap .avada-logo {
455
- display: block;
456
- position: relative;
457
- margin: 0 auto 50px auto;
458
- }
459
-
460
  .about-wrap h2 .nav-tab {
461
  width: 100%;
462
  margin: 0;
@@ -472,15 +457,6 @@ p.redux-actions {
472
  padding: 0;
473
  width: 100%;
474
  }
475
-
476
- .avada-demo-themes .theme:hover .theme-actions {
477
- display: block !important;
478
- opacity: 1 !important;
479
- }
480
-
481
- .avada-demo-themes .theme:hover .screenshot-hover {
482
- display: none !important;
483
- }
484
  }
485
 
486
  @media only screen and (max-width: 1120px) {
@@ -499,15 +475,6 @@ p.redux-actions {
499
  width: 100% !important;
500
  margin-right: 0;
501
  }
502
-
503
- .avada-demo-themes .theme:hover .theme-actions {
504
- display: block !important;
505
- opacity: 1 !important;
506
- }
507
-
508
- .avada-demo-themes .theme:hover .screenshot-hover {
509
- display: none !important;
510
- }
511
  }
512
 
513
  #support_div {
435
  }
436
 
437
  @media only screen and (min-width: 2000px) {
 
 
 
 
 
 
 
 
 
438
  #wpwrap .theme-browser .theme:nth-child(4n),
439
  #wpwrap .theme-browser .theme:nth-child(5n) {
440
  margin-right: 3%;
442
  }
443
 
444
  @media screen and (max-width: 500px) {
 
 
 
 
 
 
445
  .about-wrap h2 .nav-tab {
446
  width: 100%;
447
  margin: 0;
457
  padding: 0;
458
  width: 100%;
459
  }
 
 
 
 
 
 
 
 
 
460
  }
461
 
462
  @media only screen and (max-width: 1120px) {
475
  width: 100% !important;
476
  margin-right: 0;
477
  }
 
 
 
 
 
 
 
 
 
478
  }
479
 
480
  #support_div {
ReduxCore/templates/panel/content.tpl.php CHANGED
@@ -66,7 +66,9 @@
66
  }
67
 
68
  if ( $display ) {
 
69
  $this->output_section( $k );
 
70
  }
71
  //}
72
  ?></div><?php
66
  }
67
 
68
  if ( $display ) {
69
+ do_action( "redux/page/{$this->parent->args['opt_name']}/section/before", $section );
70
  $this->output_section( $k );
71
+ do_action( "redux/page/{$this->parent->args['opt_name']}/section/after", $section );
72
  }
73
  //}
74
  ?></div><?php
class.redux-plugin.php CHANGED
@@ -26,7 +26,7 @@
26
  * @since 3.0.0
27
  */
28
 
29
- const VERSION = '3.5.5';
30
 
31
  /**
32
  * @access protected
@@ -323,8 +323,8 @@
323
  */
324
  public function admin_notices() {
325
  do_action( 'ReduxFrameworkPlugin_admin_notice' );
326
-
327
- if ( $notices = get_option( 'ReduxFrameworkPlugin_ACTIVATED_NOTICES' ) ) {
328
  foreach ( $notices as $notice ) {
329
  echo '<div class="updated notice is-dismissible"><p>' . $notice . '</p></div>';
330
  }
26
  * @since 3.0.0
27
  */
28
 
29
+ const VERSION = '3.5.6';
30
 
31
  /**
32
  * @access protected
323
  */
324
  public function admin_notices() {
325
  do_action( 'ReduxFrameworkPlugin_admin_notice' );
326
+ $notices = get_option( 'ReduxFrameworkPlugin_ACTIVATED_NOTICES', '' );
327
+ if ( !empty( $notices ) ) {
328
  foreach ( $notices as $notice ) {
329
  echo '<div class="updated notice is-dismissible"><p>' . $notice . '</p></div>';
330
  }
composer.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "redux-framework/redux-framework",
3
- "version": "3.5.4.34",
4
  "authors": [
5
  {
6
  "name": "Team Redux"
1
  {
2
  "name": "redux-framework/redux-framework",
3
+ "version": "3.5.6",
4
  "authors": [
5
  {
6
  "name": "Team Redux"
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://ideas.reduxframework.com
4
  Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts
5
  Requires at least: 3.5.1
6
  Tested up to: 4.3
7
- Stable tag: 3.5.5
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -125,6 +125,28 @@ That's because the real FAQ section is on our site! Please visit [http://docs.re
125
 
126
  == Changelog ==
127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  = 3.5.5 =
129
  * Fixed: Date-time fixes with CSS overloading and positioning.
130
  * Added: Lite support for https://wordpress.org/plugins/plugin-dependencies/
4
  Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts
5
  Requires at least: 3.5.1
6
  Tested up to: 4.3
7
+ Stable tag: 3.5.6
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
125
 
126
  == Changelog ==
127
 
128
+ ## 3.5.6
129
+ * Fixed Customizer WP 4.3 final fixes.
130
+ * Fixed #2500 - Conflict with outdated select2 in JW Player plugin.
131
+ * Modified: icon_type no longer needed for section icons. Now detects if URLs are provided for images.
132
+ * Fixed: Various customizer fixes. HTML in the customizer title.
133
+ * Modified: Media URL now is 95% wide.
134
+ * Modified: Select2 now 100% width instead of just resolve (that doesn't always work).
135
+ * Modified: Field enqueue method to allow for more flexibility.
136
+ * Added: Support for Airplane Mode plugin (https://github.com/norcross/airplane-mode) by @norcross. Thanks @chriscct7 #2463
137
+ * Fixed: Undefined index in theme-check enhancements. Thanks @winwinwebdesign!
138
+ * Removed: SASS compiler & code. Note needed.
139
+ * Fixed: Color transparency live-update for Customizer for color, background,
140
+ and color gradient fields.
141
+ * Fixed: Undefined index when removing a section.
142
+ * Fixed: Typography bug onload always saying settings have changed.
143
+ * Modified: Added minified customizer JS.
144
+ * Fixed: Redux CUSTOMIZER! YEA!
145
+ * Fixed: Small echo in Redux API
146
+
147
+ = 3.5.5.1 =
148
+ * Fixed: Sigh, PHP 5.2 issues.
149
+
150
  = 3.5.5 =
151
  * Fixed: Date-time fixes with CSS overloading and positioning.
152
  * Added: Lite support for https://wordpress.org/plugins/plugin-dependencies/
redux-framework.php CHANGED
@@ -12,7 +12,7 @@
12
  * Description: Redux is a simple, truly extensible options framework for WordPress themes and plugins.
13
  * Author: Team Redux
14
  * Author URI: http://reduxframework.com
15
- * Version: 3.5.5
16
  * Text Domain: redux-framework
17
  * License: GPL3+
18
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
  * Description: Redux is a simple, truly extensible options framework for WordPress themes and plugins.
13
  * Author: Team Redux
14
  * Author URI: http://reduxframework.com
15
+ * Version: 3.5.6
16
  * Text Domain: redux-framework
17
  * License: GPL3+
18
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
sample/sample-config.php CHANGED
@@ -280,7 +280,7 @@
280
  Redux::setSection( $opt_name, array(
281
  'title' => __( 'Basic Fields', 'redux-framework-demo' ),
282
  'id' => 'basic',
283
- 'desc' => __( '', 'redux-framework-demo' ),
284
  'customizer_width' => '400px',
285
  'icon' => 'el el-home'
286
  ) );
@@ -290,7 +290,7 @@
290
  'id' => 'basic-checkbox',
291
  'subsection' => true,
292
  'customizer_width' => '450px',
293
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/checkbox/" target="_blank">//docs.reduxframework.com/core/fields/checkbox/</a>',
294
  'fields' => array(
295
  array(
296
  'id' => 'opt-checkbox',
@@ -342,7 +342,7 @@
342
  'id' => 'basic-Radio',
343
  'subsection' => true,
344
  'customizer_width' => '500px',
345
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/radio/" target="_blank">//docs.reduxframework.com/core/fields/radio/</a>',
346
  'fields' => array(
347
  array(
348
  'id' => 'opt-radio',
@@ -372,7 +372,7 @@
372
  'title' => __( 'Sortable', 'redux-framework-demo' ),
373
  'id' => 'basic-Sortable',
374
  'subsection' => true,
375
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sortable/" target="_blank">//docs.reduxframework.com/core/fields/sortable/</a>',
376
  'fields' => array(
377
  array(
378
  'id' => 'opt-sortable',
@@ -411,7 +411,7 @@
411
 
412
  Redux::setSection( $opt_name, array(
413
  'title' => __( 'Text', 'redux-framework-demo' ),
414
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/text/" target="_blank">//docs.reduxframework.com/core/fields/text/</a>',
415
  'id' => 'basic-Text',
416
  'subsection' => true,
417
  'customizer_width' => '700px',
@@ -451,7 +451,7 @@
451
  Redux::setSection( $opt_name, array(
452
  'title' => __( 'Multi Text', 'redux-framework-demo' ),
453
  'id' => 'basic-Multi Text',
454
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/multi-text/" target="_blank">//docs.reduxframework.com/core/fields/multi-text/</a>',
455
  'subsection' => true,
456
  'fields' => array(
457
  array(
@@ -466,7 +466,7 @@
466
  Redux::setSection( $opt_name, array(
467
  'title' => __( 'Password', 'redux-framework-demo' ),
468
  'id' => 'basic-Password',
469
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/password/" target="_blank">//docs.reduxframework.com/core/fields/password/</a>',
470
  'subsection' => true,
471
  'fields' => array(
472
  array(
@@ -485,7 +485,7 @@
485
  Redux::setSection( $opt_name, array(
486
  'title' => __( 'Textarea', 'redux-framework-demo' ),
487
  'id' => 'basic-Textarea',
488
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/textarea/" target="_blank">//docs.reduxframework.com/core/fields/textarea/</a>',
489
  'subsection' => true,
490
  'fields' => array(
491
  array(
@@ -511,7 +511,7 @@
511
  'title' => __( 'WordPress Editor', 'redux-framework-demo' ),
512
  'id' => 'editor-wordpress',
513
  //'icon' => 'el el-home'
514
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank">//docs.reduxframework.com/core/fields/editor/</a>',
515
  'subsection' => true,
516
  'fields' => array(
517
  array(
@@ -544,7 +544,7 @@
544
  'full_width' => true
545
  ),
546
  ),
547
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank">//docs.reduxframework.com/core/fields/editor/</a>',
548
  ) );
549
 
550
  Redux::setSection( $opt_name, array(
@@ -552,7 +552,7 @@
552
  'id' => 'editor-ace',
553
  //'icon' => 'el el-home'
554
  'subsection' => true,
555
- 'desc' => __( 'For full documentation on the this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/ace-editor/" target="_blank">//docs.reduxframework.com/core/fields/ace-editor/</a>',
556
  'fields' => array(
557
  array(
558
  'id' => 'opt-ace-editor-css',
@@ -602,7 +602,7 @@
602
  Redux::setSection( $opt_name, array(
603
  'title' => __( 'Color', 'redux-framework-demo' ),
604
  'id' => 'color-Color',
605
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color/" target="_blank">//docs.reduxframework.com/core/fields/color/</a>',
606
  'subsection' => true,
607
  'fields' => array(
608
  array(
@@ -625,7 +625,7 @@
625
  ) );
626
  Redux::setSection( $opt_name, array(
627
  'title' => __( 'Color Gradient', 'redux-framework-demo' ),
628
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-gradient/" target="_blank">//docs.reduxframework.com/core/fields/color-gradient/</a>',
629
  'id' => 'color-gradient',
630
  'subsection' => true,
631
  'fields' => array(
@@ -644,7 +644,7 @@
644
  ) );
645
  Redux::setSection( $opt_name, array(
646
  'title' => __( 'Color RGBA', 'redux-framework-demo' ),
647
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-rgba/" target="_blank">//docs.reduxframework.com/core/fields/color-rgba/</a>',
648
  'id' => 'color-rgba',
649
  'subsection' => true,
650
  'fields' => array(
@@ -665,7 +665,7 @@
665
  ) );
666
  Redux::setSection( $opt_name, array(
667
  'title' => __( 'Link Color', 'redux-framework-demo' ),
668
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/link-color/" target="_blank">//docs.reduxframework.com/core/fields/link-color/</a>',
669
  'id' => 'color-link',
670
  'subsection' => true,
671
  'fields' => array(
@@ -690,7 +690,7 @@
690
 
691
  Redux::setSection( $opt_name, array(
692
  'title' => __( 'Palette Colors', 'redux-framework-demo' ),
693
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/palette-color/" target="_blank">//docs.reduxframework.com/core/fields/palette-color/</a>',
694
  'id' => 'color-palette',
695
  'subsection' => true,
696
  'fields' => array(
@@ -750,13 +750,13 @@
750
  ),
751
 
752
  ),
753
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/background/" target="_blank">//docs.reduxframework.com/core/fields/background/</a>',
754
  ) );
755
 
756
  Redux::setSection( $opt_name, array(
757
  'title' => __( 'Border', 'redux-framework-demo' ),
758
  'id' => 'design-border',
759
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/border/" target="_blank">//docs.reduxframework.com/core/fields/border/</a>',
760
  'subsection' => true,
761
  'fields' => array(
762
  array(
@@ -800,7 +800,7 @@
800
  Redux::setSection( $opt_name, array(
801
  'title' => __( 'Dimensions', 'redux-framework-demo' ),
802
  'id' => 'design-dimensions',
803
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/dimensions/" target="_blank">//docs.reduxframework.com/core/fields/dimensions/</a>',
804
  'subsection' => true,
805
  'fields' => array(
806
  array(
@@ -836,7 +836,7 @@
836
  Redux::setSection( $opt_name, array(
837
  'title' => __( 'Spacing', 'redux-framework-demo' ),
838
  'id' => 'design-spacing',
839
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spacing/" target="_blank">//docs.reduxframework.com/core/fields/spacing/</a>',
840
  'subsection' => true,
841
  'fields' => array(
842
 
@@ -906,7 +906,7 @@
906
  Redux::setSection( $opt_name, array(
907
  'title' => __( 'Gallery', 'redux-framework-demo' ),
908
  'id' => 'media-gallery',
909
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/gallery/" target="_blank">//docs.reduxframework.com/core/fields/gallery/</a>',
910
  'subsection' => true,
911
  'fields' => array(
912
  array(
@@ -922,7 +922,7 @@
922
  Redux::setSection( $opt_name, array(
923
  'title' => __( 'Media', 'redux-framework-demo' ),
924
  'id' => 'media-media',
925
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/media/" target="_blank">//docs.reduxframework.com/core/fields/media/</a>',
926
  'subsection' => true,
927
  'fields' => array(
928
  array(
@@ -975,7 +975,7 @@
975
  Redux::setSection( $opt_name, array(
976
  'title' => __( 'Slides', 'redux-framework-demo' ),
977
  'id' => 'additional-slides',
978
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slides/" target="_blank">//docs.reduxframework.com/core/fields/slides/</a>',
979
  'subsection' => true,
980
  'fields' => array(
981
  array(
@@ -1004,7 +1004,7 @@
1004
  Redux::setSection( $opt_name, array(
1005
  'title' => __( 'Divide', 'redux-framework-demo' ),
1006
  'id' => 'presentation-divide',
1007
- 'desc' => __( 'The spacer to the section menu as seen to the left (after this section block) is the divide "section". Also the divider below is the divide "field".', 'redux-framework-demo' ) . '<br />' . __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/divide/" target="_blank">//docs.reduxframework.com/core/fields/divide/</a>',
1008
  'subsection' => true,
1009
  'fields' => array(
1010
  array(
@@ -1017,7 +1017,7 @@
1017
  Redux::setSection( $opt_name, array(
1018
  'title' => __( 'Info', 'redux-framework-demo' ),
1019
  'id' => 'presentation-info',
1020
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/info/" target="_blank">//docs.reduxframework.com/core/fields/info/</a>',
1021
  'subsection' => true,
1022
  'fields' => array(
1023
  array(
@@ -1112,7 +1112,7 @@
1112
  Redux::setSection( $opt_name, array(
1113
  'title' => __( 'Section', 'redux-framework-demo' ),
1114
  'id' => 'presentation-section',
1115
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/section/" target="_blank">//docs.reduxframework.com/core/fields/section/</a>',
1116
  'subsection' => true,
1117
  'fields' => array(
1118
  array(
@@ -1162,7 +1162,7 @@
1162
  Redux::setSection( $opt_name, array(
1163
  'title' => __( 'Button Set', 'redux-framework-demo' ),
1164
  'id' => 'switch_buttonset-set',
1165
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/button-set/" target="_blank">//docs.reduxframework.com/core/fields/button-set/</a>',
1166
  'subsection' => true,
1167
  'fields' => array(
1168
  array(
@@ -1201,7 +1201,7 @@
1201
  Redux::setSection( $opt_name, array(
1202
  'title' => __( 'Switch', 'redux-framework-demo' ),
1203
  'id' => 'switch_buttonset-switch',
1204
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/switch/" target="_blank">//docs.reduxframework.com/core/fields/switch/</a>',
1205
  'subsection' => true,
1206
  'fields' => array(
1207
 
@@ -1260,7 +1260,7 @@
1260
  Redux::setSection( $opt_name, array(
1261
  'title' => __( 'Select', 'redux-framework-demo' ),
1262
  'id' => 'select-select',
1263
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select/" target="_blank">//docs.reduxframework.com/core/fields/select/</a>',
1264
  'subsection' => true,
1265
  'fields' => array(
1266
 
@@ -1485,7 +1485,7 @@
1485
  Redux::setSection( $opt_name, array(
1486
  'title' => __( 'Image Select', 'redux-framework-demo' ),
1487
  'id' => 'select-image_select',
1488
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/image-select/" target="_blank">//docs.reduxframework.com/core/fields/image-select/</a>',
1489
  'subsection' => true,
1490
  'fields' => array(
1491
 
@@ -1580,7 +1580,7 @@
1580
  Redux::setSection( $opt_name, array(
1581
  'title' => __( 'Select Image', 'redux-framework-demo' ),
1582
  'id' => 'select-select_image',
1583
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select-image/" target="_blank">//docs.reduxframework.com/core/fields/select-image/</a>',
1584
  'subsection' => true,
1585
  'fields' => array(
1586
  array(
@@ -1614,7 +1614,7 @@
1614
  Redux::setSection( $opt_name, array(
1615
  'title' => __( 'Slider', 'redux-framework-demo' ),
1616
  'id' => 'slider_spinner-slider',
1617
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slider/" target="_blank">//docs.reduxframework.com/core/fields/slider/</a>',
1618
  'fields' => array(
1619
 
1620
  array(
@@ -1678,7 +1678,7 @@
1678
  Redux::setSection( $opt_name, array(
1679
  'title' => __( 'Spinner', 'redux-framework-demo' ),
1680
  'id' => 'slider_spinner-spinner',
1681
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spinner/" target="_blank">//docs.reduxframework.com/core/fields/spinner/</a>',
1682
  'subsection' => true,
1683
  'fields' => array(
1684
  array(
@@ -1698,7 +1698,7 @@
1698
  Redux::setSection( $opt_name, array(
1699
  'title' => __( 'Typography', 'redux-framework-demo' ),
1700
  'id' => 'typography',
1701
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/typography/" target="_blank">//docs.reduxframework.com/core/fields/typography/</a>',
1702
  'icon' => 'el el-font',
1703
  'fields' => array(
1704
  array(
@@ -1780,7 +1780,7 @@
1780
  Redux::setSection( $opt_name, array(
1781
  'title' => __( 'Date', 'redux-framework-demo' ),
1782
  'id' => 'additional-date',
1783
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/date/" target="_blank">//docs.reduxframework.com/core/fields/date/</a>',
1784
  'subsection' => true,
1785
  'fields' => array(
1786
  array(
@@ -1796,7 +1796,7 @@
1796
  Redux::setSection( $opt_name, array(
1797
  'title' => __( 'Sorter', 'redux-framework-demo' ),
1798
  'id' => 'additional-sorter',
1799
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sorter/" target="_blank">//docs.reduxframework.com/core/fields/sorter/</a>',
1800
  'subsection' => true,
1801
  'fields' => array(
1802
  array(
@@ -1844,7 +1844,7 @@
1844
  Redux::setSection( $opt_name, array(
1845
  'title' => __( 'Raw', 'redux-framework-demo' ),
1846
  'id' => 'additional-raw',
1847
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/raw/" target="_blank">//docs.reduxframework.com/core/fields/raw/</a>',
1848
  'subsection' => true,
1849
  'fields' => array(
1850
  array(
@@ -1876,7 +1876,7 @@
1876
  Redux::setSection( $opt_name, array(
1877
  'title' => __( 'Callback', 'redux-framework-demo' ),
1878
  'id' => 'additional-callback',
1879
- 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/callback/" target="_blank">//docs.reduxframework.com/core/fields/callback/</a>',
1880
  'subsection' => true,
1881
  'fields' => array(
1882
  array(
@@ -1894,7 +1894,7 @@
1894
  Redux::setSection( $opt_name, array(
1895
  'title' => __( 'Field Validation', 'redux-framework-demo' ),
1896
  'id' => 'validation',
1897
- 'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/validation/" target="_blank">//docs.reduxframework.com/core/the-basics/validation/</a>',
1898
  'subsection' => true,
1899
  'fields' => array(
1900
  array(
@@ -2060,7 +2060,7 @@
2060
  Redux::setSection( $opt_name, array(
2061
  'title' => __( 'Field Required / Linking', 'redux-framework-demo' ),
2062
  'id' => 'required',
2063
- 'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/required/" target="_blank">//docs.reduxframework.com/core/the-basics/required/</a>',
2064
  'subsection' => true,
2065
  'fields' => array(
2066
  array(
280
  Redux::setSection( $opt_name, array(
281
  'title' => __( 'Basic Fields', 'redux-framework-demo' ),
282
  'id' => 'basic',
283
+ 'desc' => __( 'These are really basic fields!', 'redux-framework-demo' ),
284
  'customizer_width' => '400px',
285
  'icon' => 'el el-home'
286
  ) );
290
  'id' => 'basic-checkbox',
291
  'subsection' => true,
292
  'customizer_width' => '450px',
293
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/checkbox/" target="_blank">docs.reduxframework.com/core/fields/checkbox/</a>',
294
  'fields' => array(
295
  array(
296
  'id' => 'opt-checkbox',
342
  'id' => 'basic-Radio',
343
  'subsection' => true,
344
  'customizer_width' => '500px',
345
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/radio/" target="_blank">docs.reduxframework.com/core/fields/radio/</a>',
346
  'fields' => array(
347
  array(
348
  'id' => 'opt-radio',
372
  'title' => __( 'Sortable', 'redux-framework-demo' ),
373
  'id' => 'basic-Sortable',
374
  'subsection' => true,
375
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sortable/" target="_blank">docs.reduxframework.com/core/fields/sortable/</a>',
376
  'fields' => array(
377
  array(
378
  'id' => 'opt-sortable',
411
 
412
  Redux::setSection( $opt_name, array(
413
  'title' => __( 'Text', 'redux-framework-demo' ),
414
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/text/" target="_blank">docs.reduxframework.com/core/fields/text/</a>',
415
  'id' => 'basic-Text',
416
  'subsection' => true,
417
  'customizer_width' => '700px',
451
  Redux::setSection( $opt_name, array(
452
  'title' => __( 'Multi Text', 'redux-framework-demo' ),
453
  'id' => 'basic-Multi Text',
454
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/multi-text/" target="_blank">docs.reduxframework.com/core/fields/multi-text/</a>',
455
  'subsection' => true,
456
  'fields' => array(
457
  array(
466
  Redux::setSection( $opt_name, array(
467
  'title' => __( 'Password', 'redux-framework-demo' ),
468
  'id' => 'basic-Password',
469
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/password/" target="_blank">docs.reduxframework.com/core/fields/password/</a>',
470
  'subsection' => true,
471
  'fields' => array(
472
  array(
485
  Redux::setSection( $opt_name, array(
486
  'title' => __( 'Textarea', 'redux-framework-demo' ),
487
  'id' => 'basic-Textarea',
488
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/textarea/" target="_blank">docs.reduxframework.com/core/fields/textarea/</a>',
489
  'subsection' => true,
490
  'fields' => array(
491
  array(
511
  'title' => __( 'WordPress Editor', 'redux-framework-demo' ),
512
  'id' => 'editor-wordpress',
513
  //'icon' => 'el el-home'
514
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank">docs.reduxframework.com/core/fields/editor/</a>',
515
  'subsection' => true,
516
  'fields' => array(
517
  array(
544
  'full_width' => true
545
  ),
546
  ),
547
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank">docs.reduxframework.com/core/fields/editor/</a>',
548
  ) );
549
 
550
  Redux::setSection( $opt_name, array(
552
  'id' => 'editor-ace',
553
  //'icon' => 'el el-home'
554
  'subsection' => true,
555
+ 'desc' => __( 'For full documentation on the this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/ace-editor/" target="_blank">docs.reduxframework.com/core/fields/ace-editor/</a>',
556
  'fields' => array(
557
  array(
558
  'id' => 'opt-ace-editor-css',
602
  Redux::setSection( $opt_name, array(
603
  'title' => __( 'Color', 'redux-framework-demo' ),
604
  'id' => 'color-Color',
605
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color/" target="_blank">docs.reduxframework.com/core/fields/color/</a>',
606
  'subsection' => true,
607
  'fields' => array(
608
  array(
625
  ) );
626
  Redux::setSection( $opt_name, array(
627
  'title' => __( 'Color Gradient', 'redux-framework-demo' ),
628
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-gradient/" target="_blank">docs.reduxframework.com/core/fields/color-gradient/</a>',
629
  'id' => 'color-gradient',
630
  'subsection' => true,
631
  'fields' => array(
644
  ) );
645
  Redux::setSection( $opt_name, array(
646
  'title' => __( 'Color RGBA', 'redux-framework-demo' ),
647
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-rgba/" target="_blank">docs.reduxframework.com/core/fields/color-rgba/</a>',
648
  'id' => 'color-rgba',
649
  'subsection' => true,
650
  'fields' => array(
665
  ) );
666
  Redux::setSection( $opt_name, array(
667
  'title' => __( 'Link Color', 'redux-framework-demo' ),
668
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/link-color/" target="_blank">docs.reduxframework.com/core/fields/link-color/</a>',
669
  'id' => 'color-link',
670
  'subsection' => true,
671
  'fields' => array(
690
 
691
  Redux::setSection( $opt_name, array(
692
  'title' => __( 'Palette Colors', 'redux-framework-demo' ),
693
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/palette-color/" target="_blank">docs.reduxframework.com/core/fields/palette-color/</a>',
694
  'id' => 'color-palette',
695
  'subsection' => true,
696
  'fields' => array(
750
  ),
751
 
752
  ),
753
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/background/" target="_blank">docs.reduxframework.com/core/fields/background/</a>',
754
  ) );
755
 
756
  Redux::setSection( $opt_name, array(
757
  'title' => __( 'Border', 'redux-framework-demo' ),
758
  'id' => 'design-border',
759
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/border/" target="_blank">docs.reduxframework.com/core/fields/border/</a>',
760
  'subsection' => true,
761
  'fields' => array(
762
  array(
800
  Redux::setSection( $opt_name, array(
801
  'title' => __( 'Dimensions', 'redux-framework-demo' ),
802
  'id' => 'design-dimensions',
803
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/dimensions/" target="_blank">docs.reduxframework.com/core/fields/dimensions/</a>',
804
  'subsection' => true,
805
  'fields' => array(
806
  array(
836
  Redux::setSection( $opt_name, array(
837
  'title' => __( 'Spacing', 'redux-framework-demo' ),
838
  'id' => 'design-spacing',
839
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spacing/" target="_blank">docs.reduxframework.com/core/fields/spacing/</a>',
840
  'subsection' => true,
841
  'fields' => array(
842
 
906
  Redux::setSection( $opt_name, array(
907
  'title' => __( 'Gallery', 'redux-framework-demo' ),
908
  'id' => 'media-gallery',
909
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/gallery/" target="_blank">docs.reduxframework.com/core/fields/gallery/</a>',
910
  'subsection' => true,
911
  'fields' => array(
912
  array(
922
  Redux::setSection( $opt_name, array(
923
  'title' => __( 'Media', 'redux-framework-demo' ),
924
  'id' => 'media-media',
925
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/media/" target="_blank">docs.reduxframework.com/core/fields/media/</a>',
926
  'subsection' => true,
927
  'fields' => array(
928
  array(
975
  Redux::setSection( $opt_name, array(
976
  'title' => __( 'Slides', 'redux-framework-demo' ),
977
  'id' => 'additional-slides',
978
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slides/" target="_blank">docs.reduxframework.com/core/fields/slides/</a>',
979
  'subsection' => true,
980
  'fields' => array(
981
  array(
1004
  Redux::setSection( $opt_name, array(
1005
  'title' => __( 'Divide', 'redux-framework-demo' ),
1006
  'id' => 'presentation-divide',
1007
+ 'desc' => __( 'The spacer to the section menu as seen to the left (after this section block) is the divide "section". Also the divider below is the divide "field".', 'redux-framework-demo' ) . '<br />' . __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/divide/" target="_blank">docs.reduxframework.com/core/fields/divide/</a>',
1008
  'subsection' => true,
1009
  'fields' => array(
1010
  array(
1017
  Redux::setSection( $opt_name, array(
1018
  'title' => __( 'Info', 'redux-framework-demo' ),
1019
  'id' => 'presentation-info',
1020
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/info/" target="_blank">docs.reduxframework.com/core/fields/info/</a>',
1021
  'subsection' => true,
1022
  'fields' => array(
1023
  array(
1112
  Redux::setSection( $opt_name, array(
1113
  'title' => __( 'Section', 'redux-framework-demo' ),
1114
  'id' => 'presentation-section',
1115
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/section/" target="_blank">docs.reduxframework.com/core/fields/section/</a>',
1116
  'subsection' => true,
1117
  'fields' => array(
1118
  array(
1162
  Redux::setSection( $opt_name, array(
1163
  'title' => __( 'Button Set', 'redux-framework-demo' ),
1164
  'id' => 'switch_buttonset-set',
1165
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/button-set/" target="_blank">docs.reduxframework.com/core/fields/button-set/</a>',
1166
  'subsection' => true,
1167
  'fields' => array(
1168
  array(
1201
  Redux::setSection( $opt_name, array(
1202
  'title' => __( 'Switch', 'redux-framework-demo' ),
1203
  'id' => 'switch_buttonset-switch',
1204
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/switch/" target="_blank">docs.reduxframework.com/core/fields/switch/</a>',
1205
  'subsection' => true,
1206
  'fields' => array(
1207
 
1260
  Redux::setSection( $opt_name, array(
1261
  'title' => __( 'Select', 'redux-framework-demo' ),
1262
  'id' => 'select-select',
1263
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select/" target="_blank">docs.reduxframework.com/core/fields/select/</a>',
1264
  'subsection' => true,
1265
  'fields' => array(
1266
 
1485
  Redux::setSection( $opt_name, array(
1486
  'title' => __( 'Image Select', 'redux-framework-demo' ),
1487
  'id' => 'select-image_select',
1488
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/image-select/" target="_blank">docs.reduxframework.com/core/fields/image-select/</a>',
1489
  'subsection' => true,
1490
  'fields' => array(
1491
 
1580
  Redux::setSection( $opt_name, array(
1581
  'title' => __( 'Select Image', 'redux-framework-demo' ),
1582
  'id' => 'select-select_image',
1583
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select-image/" target="_blank">docs.reduxframework.com/core/fields/select-image/</a>',
1584
  'subsection' => true,
1585
  'fields' => array(
1586
  array(
1614
  Redux::setSection( $opt_name, array(
1615
  'title' => __( 'Slider', 'redux-framework-demo' ),
1616
  'id' => 'slider_spinner-slider',
1617
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slider/" target="_blank">docs.reduxframework.com/core/fields/slider/</a>',
1618
  'fields' => array(
1619
 
1620
  array(
1678
  Redux::setSection( $opt_name, array(
1679
  'title' => __( 'Spinner', 'redux-framework-demo' ),
1680
  'id' => 'slider_spinner-spinner',
1681
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spinner/" target="_blank">docs.reduxframework.com/core/fields/spinner/</a>',
1682
  'subsection' => true,
1683
  'fields' => array(
1684
  array(
1698
  Redux::setSection( $opt_name, array(
1699
  'title' => __( 'Typography', 'redux-framework-demo' ),
1700
  'id' => 'typography',
1701
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/typography/" target="_blank">docs.reduxframework.com/core/fields/typography/</a>',
1702
  'icon' => 'el el-font',
1703
  'fields' => array(
1704
  array(
1780
  Redux::setSection( $opt_name, array(
1781
  'title' => __( 'Date', 'redux-framework-demo' ),
1782
  'id' => 'additional-date',
1783
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/date/" target="_blank">docs.reduxframework.com/core/fields/date/</a>',
1784
  'subsection' => true,
1785
  'fields' => array(
1786
  array(
1796
  Redux::setSection( $opt_name, array(
1797
  'title' => __( 'Sorter', 'redux-framework-demo' ),
1798
  'id' => 'additional-sorter',
1799
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sorter/" target="_blank">docs.reduxframework.com/core/fields/sorter/</a>',
1800
  'subsection' => true,
1801
  'fields' => array(
1802
  array(
1844
  Redux::setSection( $opt_name, array(
1845
  'title' => __( 'Raw', 'redux-framework-demo' ),
1846
  'id' => 'additional-raw',
1847
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/raw/" target="_blank">docs.reduxframework.com/core/fields/raw/</a>',
1848
  'subsection' => true,
1849
  'fields' => array(
1850
  array(
1876
  Redux::setSection( $opt_name, array(
1877
  'title' => __( 'Callback', 'redux-framework-demo' ),
1878
  'id' => 'additional-callback',
1879
+ 'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/callback/" target="_blank">docs.reduxframework.com/core/fields/callback/</a>',
1880
  'subsection' => true,
1881
  'fields' => array(
1882
  array(
1894
  Redux::setSection( $opt_name, array(
1895
  'title' => __( 'Field Validation', 'redux-framework-demo' ),
1896
  'id' => 'validation',
1897
+ 'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/validation/" target="_blank">docs.reduxframework.com/core/the-basics/validation/</a>',
1898
  'subsection' => true,
1899
  'fields' => array(
1900
  array(
2060
  Redux::setSection( $opt_name, array(
2061
  'title' => __( 'Field Required / Linking', 'redux-framework-demo' ),
2062
  'id' => 'required',
2063
+ 'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/required/" target="_blank">docs.reduxframework.com/core/the-basics/required/</a>',
2064
  'subsection' => true,
2065
  'fields' => array(
2066
  array(