Cherry Sidebars - Version 1.0.4

Version Description

Download this release

Release Info

Developer TemplateMonster 2002
Plugin Icon 128x128 Cherry Sidebars
Version 1.0.4
Comparing to
See all releases

Code changes from version 1.0.5 to 1.0.4

Files changed (128) hide show
  1. README.md +4 -0
  2. admin/assets/css/cherry-admin-sidebars.css +1 -1
  3. admin/assets/css/cherry-sidebars-post-page.css +1 -0
  4. admin/assets/css/interface-builder.css +90 -0
  5. admin/assets/js/cherry-admin-sidebars.js +16 -14
  6. admin/assets/js/min/cherry-admin-sidebars.min.js +1 -1
  7. admin/assets/scss/cherry-admin-sidebars.scss +41 -80
  8. admin/assets/scss/cherry-sidebars-post-page.scss +6 -0
  9. admin/includes/class-cherry-custom-sidebar.php +2 -2
  10. admin/includes/class-cherry-sidebars-admin.php +11 -2
  11. admin/views/cherry-new-sidebar.php +1 -1
  12. admin/views/cherry-widgets-page.php +6 -16
  13. cherry-framework/.gitignore +30 -0
  14. cherry-framework/README.md +2 -0
  15. cherry-framework/cherry-core.php +6 -7
  16. cherry-framework/codesniffer.ruleset.xml +24 -0
  17. cherry-framework/config.json +68 -53
  18. cherry-framework/modules/cherry-breadcrumbs/cherry-breadcrumbs.php +0 -1560
  19. cherry-framework/modules/cherry-customizer/assets/fonts/google.json +0 -15622
  20. cherry-framework/modules/cherry-customizer/assets/fonts/standard.json +0 -209
  21. cherry-framework/modules/cherry-customizer/cherry-customizer.php +0 -1163
  22. cherry-framework/modules/cherry-customizer/inc/class-cherry-wp-customize-iconpicker.php +0 -90
  23. cherry-framework/modules/cherry-dynamic-css/assets/cherry-css-collector.js +0 -24
  24. cherry-framework/modules/cherry-dynamic-css/assets/min/cherry-css-collector.min.js +0 -1
  25. cherry-framework/modules/cherry-dynamic-css/cherry-dynamic-css.php +0 -479
  26. cherry-framework/modules/cherry-dynamic-css/inc/class-cherry-dynamic-css-collector.php +0 -281
  27. cherry-framework/modules/cherry-dynamic-css/inc/class-cherry-dynamic-css-utilities.php +0 -858
  28. cherry-framework/modules/cherry-google-fonts-loader/cherry-google-fonts-loader.php +0 -372
  29. cherry-framework/modules/cherry-handler/assets/css/cherry-handler-styles.min.css +0 -1
  30. cherry-framework/modules/cherry-handler/assets/js/cherry-handler.js +0 -287
  31. cherry-framework/modules/cherry-handler/assets/js/min/cherry-handler.min.js +0 -1
  32. cherry-framework/modules/cherry-handler/assets/scss/cherry-handler-styles.scss +0 -65
  33. cherry-framework/modules/cherry-handler/cherry-handler.php +0 -233
  34. cherry-framework/modules/cherry-interface-builder/cherry-interface-builder.php +0 -471
  35. cherry-framework/modules/cherry-interface-builder/inc/assets/_use-in-js.scss +0 -17
  36. cherry-framework/modules/cherry-interface-builder/inc/assets/cherry-interface-builder.js +0 -189
  37. cherry-framework/modules/cherry-interface-builder/inc/assets/cherry-interface-builder.scss +0 -463
  38. cherry-framework/modules/cherry-interface-builder/inc/assets/min/cherry-interface-builder.min.css +0 -1
  39. cherry-framework/modules/cherry-interface-builder/inc/assets/min/cherry-interface-builder.min.js +0 -1
  40. cherry-framework/modules/cherry-interface-builder/inc/views/component-accordion.php +0 -30
  41. cherry-framework/modules/cherry-interface-builder/inc/views/component-repeater.php +0 -30
  42. cherry-framework/modules/cherry-interface-builder/inc/views/component-tab-horizontal.php +0 -35
  43. cherry-framework/modules/cherry-interface-builder/inc/views/component-tab-vertical.php +0 -35
  44. cherry-framework/modules/cherry-interface-builder/inc/views/component-toggle.php +0 -30
  45. cherry-framework/modules/cherry-interface-builder/inc/views/control.php +0 -34
  46. cherry-framework/modules/cherry-interface-builder/inc/views/form.php +0 -24
  47. cherry-framework/modules/cherry-interface-builder/inc/views/html.php +0 -24
  48. cherry-framework/modules/cherry-interface-builder/inc/views/section.php +0 -36
  49. cherry-framework/modules/cherry-interface-builder/inc/views/settings-children-title.php +0 -18
  50. cherry-framework/modules/cherry-interface-builder/inc/views/settings.php +0 -32
  51. cherry-framework/modules/cherry-interface-builder/inc/views/tab-children-title.php +0 -20
  52. cherry-framework/modules/cherry-interface-builder/inc/views/toggle-children-title.php +0 -22
  53. cherry-framework/modules/cherry-js-core/assets/js/cherry-js-core.js +56 -1
  54. cherry-framework/modules/cherry-js-core/assets/js/min/cherry-js-core.min.js +1 -1
  55. cherry-framework/modules/cherry-post-formats-api/assets/js/cherry-post-formats.js +0 -68
  56. cherry-framework/modules/cherry-post-formats-api/assets/js/min/cherry-post-formats.min.js +0 -1
  57. cherry-framework/modules/cherry-post-formats-api/cherry-post-formats-api.php +0 -1096
  58. cherry-framework/modules/cherry-post-formats-api/inc/class-cherry-facebook-embed.php +0 -81
  59. cherry-framework/modules/cherry-post-meta/cherry-post-meta.php +0 -547
  60. cherry-framework/modules/cherry-template-manager/cherry-template-manager.php +0 -129
  61. cherry-framework/modules/cherry-template-manager/inc/cherry-template-loader.php +0 -242
  62. cherry-framework/modules/cherry-template-manager/inc/cherry-template-parser.php +0 -230
  63. cherry-framework/modules/cherry-term-meta/cherry-term-meta.php +0 -303
  64. cherry-framework/modules/cherry-toolkit/cherry-toolkit.php +8 -19
  65. cherry-framework/modules/cherry-ui-elements/cherry-ui-elements.php +5 -7
  66. cherry-framework/modules/cherry-ui-elements/i-ui.php +1 -1
  67. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/min/ui-button.min.css +0 -1
  68. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/ui-button.scss +0 -52
  69. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/ui-kit/_mixins.scss +0 -182
  70. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/ui-kit/_variables.scss +0 -25
  71. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/ui-button.php +0 -87
  72. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/view/button-view.php +0 -31
  73. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/min/ui-checkbox.min.css +56 -1
  74. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/min/ui-checkbox.min.js +1 -1
  75. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/ui-checkbox.js +60 -44
  76. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/ui-checkbox.scss +8 -14
  77. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/ui-checkbox.php +7 -8
  78. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/min/ui-colorpicker.min.css +41 -1
  79. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/min/ui-colorpicker.min.js +1 -1
  80. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/ui-colorpicker.js +2 -3
  81. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/ui-colorpicker.scss +2 -2
  82. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/ui-colorpicker.php +6 -6
  83. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/min/ui-iconpicker.min.css +326 -1
  84. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/min/ui-iconpicker.min.js +1 -1
  85. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/ui-iconpicker.js +3 -5
  86. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/ui-iconpicker.scss +8 -6
  87. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/ui-iconpicker.php +3 -5
  88. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-media/assets/min/ui-media.min.js +1 -156
  89. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-media/assets/ui-media.js +101 -98
  90. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-media/ui-media.php +88 -99
  91. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/min/ui-radio.min.css +67 -1
  92. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/min/ui-radio.min.js +1 -1
  93. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/ui-radio.js +40 -35
  94. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/ui-radio.scss +13 -24
  95. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/ui-radio.php +14 -14
  96. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-repeater/assets/min/ui-repeater.min.js +1 -1
  97. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-repeater/assets/ui-repeater.js +2 -4
  98. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-repeater/ui-repeater.php +13 -12
  99. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/min/select2.min.css +7 -7
  100. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/min/ui-select.min.css +1 -1
  101. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/min/ui-select.min.js +1 -1
  102. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/ui-select.js +9 -41
  103. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/ui-select.scss +5 -18
  104. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/ui-select.php +15 -26
  105. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/min/ui-slider.min.css +1 -1
  106. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/min/ui-slider.min.js +1 -1
  107. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/ui-slider.js +3 -3
  108. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/ui-slider.scss +8 -11
  109. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/ui-slider.php +6 -6
  110. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-stepper/ui-stepper.php +6 -6
  111. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/min/ui-switcher.min.css +80 -1
  112. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/min/ui-switcher.min.js +1 -1
  113. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/ui-switcher.js +36 -46
  114. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/ui-switcher.scss +24 -30
  115. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/ui-switcher.php +10 -12
  116. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-text/ui-text.php +4 -6
  117. cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-textarea/ui-textarea.php +6 -6
  118. cherry-framework/modules/cherry-ui-elements/ui-element.php +2 -2
  119. cherry-framework/modules/cherry-utility/cherry-utility.php +0 -124
  120. cherry-framework/modules/cherry-utility/inc/cherry-attributes-utilit.php +0 -171
  121. cherry-framework/modules/cherry-utility/inc/cherry-media-utilit.php +0 -251
  122. cherry-framework/modules/cherry-utility/inc/cherry-meta-data-utilit.php +0 -236
  123. cherry-framework/modules/cherry-utility/inc/cherry-satellite-utilit.php +0 -163
  124. cherry-framework/modules/cherry-widget-factory/cherry-widget-factory.php +0 -118
  125. cherry-framework/modules/cherry-widget-factory/inc/class-cherry-abstract-widget.php +0 -639
  126. cherry-framework/setup.php +1 -1
  127. cherry-sidebars.php +24 -21
  128. readme.txt +3 -15
README.md ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ # Cherry Sidebars [![Build Status](https://travis-ci.org/CherryFramework/cherry-sidebars.svg?branch=master)](https://travis-ci.org/CherryFramework/cherry-sidebars)
2
+ Plugin for creating and managing sidebars in WordPress.
3
+
4
+ Сompatibility: __Cherry Framework v.4+__
admin/assets/css/cherry-admin-sidebars.css CHANGED
@@ -1 +1 @@
1
- .cherry-display-none{display:none}.description.cherry-default-description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#default-sidebars:after{content:".";display:block;height:0;clear:both;visibility:hidden}#cherry-sidebars-wrap{margin-top:10px}#cherry-sidebars-wrap .sidebar-manager-name h3{padding:10px 0;margin:0 10px 0 0}#cherry-default-sidebars-title h3{padding:10px 0;margin:12px 0 0 0}.sidebar-manager-name{cursor:pointer;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sidebar-manager-name .sidebar-name-arrow{display:none}.sidebar-manager-name .sidebar-name-arrow:before{right:12px;padding:4px 6px 4px 4px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none !important;content:'\f142'}.sidebar-manager-name .sidebar-name-arrow.closed-arrow{display:block;color:#777}.sidebar-manager-name .sidebar-name-arrow.closed-arrow:before{content:'\f140'}.sidebar-manager-name:hover .sidebar-name-arrow{display:block}.sidebars-holder.closed{display:none}#create-new-sidebar-manager form#cherry-sidebars-form{border-top:1px solid #d4d5d6}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section{padding:5px 10px;border:none;margin:0;box-shadow:none}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section.submit-wrapper{text-align:right}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-1{width:24%}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-1 label{margin:11px 0 0 0}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-2 input[type=text]{box-shadow:inset 0 0 0 0px #f1f1f1}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-2 input[type=text]:-webkit-autofill{box-shadow:inset 0 0 0 50px #fff}#create-new-sidebar-manager form#cherry-sidebars-form button{position:relative}#create-new-sidebar-manager form#cherry-sidebars-form button .text{-webkit-transition:opacity .7s ease;transition:opacity .7s ease}#create-new-sidebar-manager form#cherry-sidebars-form button .loader-wrapper{position:absolute;top:50%;left:50%;-webkit-transition:opacity .5s ease, -webkit-transform .5s ease;transition:opacity .5s ease, transform .5s ease;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;width:20px;height:20px;margin:-13px 0 0 -13px}#create-new-sidebar-manager form#cherry-sidebars-form button[disabled]{cursor:default;pointer-events:none}#create-new-sidebar-manager form#cherry-sidebars-form button[disabled] .text{opacity:0}#create-new-sidebar-manager form#cherry-sidebars-form button[disabled] .cherry-loader-wrapper{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.cherry-loader-wrapper{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;position:absolute;top:50%;left:50%;-webkit-transition:opacity .5s ease, -webkit-transform .5s ease;transition:opacity .5s ease, transform .5s ease;width:20px;height:20px;margin:-13px 0 0 -13px}.cherry-loader-wrapper.show{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.cherry-loader{display:block;width:20px;height:20px;-webkit-animation:spin .7s linear infinite;animation:spin .7s linear infinite;border:3px solid #e1e1e1;border-top:3px solid #3498DB;border-radius:50%}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cherry-ui-core input[type=text].error-invalid{box-shadow:inset 0px 0px 9px 0px #ff8181;-webkit-transition:box-shadow 0.2 s ease-in-out;transition:box-shadow 0.2 s ease-in-out}.cherry-widgets-holder-wrap{position:relative}.cherry-widgets-holder-wrap .cherry-delete-sidebar-manager{position:absolute;right:48px;top:0px;height:35px;border:1px solid #e5e5e5;border-top:none;padding:14px 14px 0;color:#a0a5aa;z-index:1;cursor:pointer}.cherry-widgets-holder-wrap .cherry-delete-sidebar-manager:hover{color:red}.cherry-widgets-holder-wrap .sidebar-name-arrow{border:1px solid #e5e5e5;padding:3px 5px 0px 3px;top:0px;right:-9px;border-left:none;height:46px;border-top:none}body.widgets_access .sidebar-manager-name{cursor:default}body.widgets_access .sidebar-name-arrow{display:none !important}body.widgets_access .cherry-widgets-holder-wrap .cherry-delete-sidebar-manager{right:-1px}@-webkit-keyframes cherry-innerCircle{0%{-webkit-transform:rotate(o);transform:rotate(o)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes sk-innerCircle{0%{-webkit-transform:rotate(o);transform:rotate(o)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sk-innerCircle{0%{-webkit-transform:rotate(o);transform:rotate(o)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.postbox .cherry-sidebar-select{border-top:none;padding:0px;position:relative}
1
+ .cherry-display-none{display:none}.description.cherry-default-description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#default-sidebars:after{content:".";display:block;height:0;clear:both;visibility:hidden}#cherry-sidebars-wrap{margin-top:10px}#cherry-sidebars-wrap .sidebar-manager-name h3{padding:10px 0;margin:0 10px 0 0}#cherry-default-sidebars-title h3{padding:10px 0;margin:12px 0 0 0}.sidebar-manager-name{cursor:pointer;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sidebar-manager-name .sidebar-name-arrow{display:none}.sidebar-manager-name .sidebar-name-arrow:before{right:12px;padding:4px 6px 4px 4px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none !important;content:'\f142'}.sidebar-manager-name .sidebar-name-arrow.closed-arrow{display:block;color:#777}.sidebar-manager-name .sidebar-name-arrow.closed-arrow:before{content:'\f140'}.sidebar-manager-name:hover .sidebar-name-arrow{display:block}.sidebars-holder.closed{display:none}#create-new-sidebar-manager form#cherry-sidebars-form{border-top:1px solid #d4d5d6}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section{padding:15px;border:none}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-1{width:24%}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-1 label{margin:11px 0 0 0}#create-new-sidebar-manager form#cherry-sidebars-form .cherry-section .cherry-col-2 input[type=text]:-webkit-autofill{-webkit-box-shadow:inset 0 0 0 50px #fff;box-shadow:inset 0 0 0 50px #fff}#create-new-sidebar-manager form#cherry-sidebars-form #cherry-error-message{display:none;color:red;position:absolute;right:170px;bottom:33px}.cherry-ui-core input[type=text].error-invalid{border:1px solid red}.cherry-widgets-holder-wrap{position:relative}.cherry-widgets-holder-wrap .cherry-delete-sidebar-manager{position:absolute;right:48px;top:0px;height:35px;border:1px solid #e5e5e5;border-top:none;padding:14px 14px 0;color:#a0a5aa;z-index:1;cursor:pointer}.cherry-widgets-holder-wrap .cherry-delete-sidebar-manager:hover{color:red}.cherry-widgets-holder-wrap .sidebar-name-arrow{border:1px solid #e5e5e5;padding:3px 5px 0px 3px;top:0px;right:-9px;border-left:none;height:46px;border-top:none}.cherry-widgets-holder-wrap .spinner-wordpress-type-1.cherry-spinner-wordpress{right:12px;bottom:12px}body.widgets_access .sidebar-manager-name{cursor:default}body.widgets_access .sidebar-name-arrow{display:none !important}body.widgets_access .cherry-widgets-holder-wrap .cherry-delete-sidebar-manager{right:-1px}.spinner-wordpress-type-1.cherry-spinner-wordpress{display:none;background-color:#f62e46;width:25px;height:25px;border-radius:30px;position:absolute}#cherry-sidebars-form .spinner-wordpress-type-1.cherry-spinner-wordpress{right:160px;bottom:28px}.cherry-spinner-wordpress.spinner-wordpress-type-1{-webkit-animation:cherry-innerCircle 1s linear infinite;animation:cherry-innerCircle 1s linear infinite}.cherry-spinner-wordpress.spinner-wordpress-type-1 .cherry-inner-circle{display:block;background-color:#fff;width:8px;height:8px;position:absolute;border-radius:8px;top:4px;left:4px}@-webkit-keyframes cherry-innerCircle{0%{-webkit-transform:rotate(o);transform:rotate(o)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes sk-innerCircle{0%{-webkit-transform:rotate(o);transform:rotate(o)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sk-innerCircle{0%{-webkit-transform:rotate(o);transform:rotate(o)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
admin/assets/css/cherry-sidebars-post-page.css ADDED
@@ -0,0 +1 @@
 
1
+ .postbox .cherry-sidebar-select{border-top:none;padding:0px;position:relative}
admin/assets/css/interface-builder.css ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .cherry-section {
2
+ border-top: 1px solid #d4d5d6;
3
+ padding: 18px;
4
+ position: relative;
5
+ /*Cherry column style*/
6
+ /*End Cherry column style*/
7
+ /*Text input, textarea, select size*/
8
+ /*End text input size*/
9
+ }
10
+ .cherry-section .cherry-title {
11
+ margin: 14px 0 14px 0;
12
+ }
13
+ .cherry-section .cherry-title:first-letter {
14
+ text-transform: uppercase;
15
+ }
16
+ .cherry-section .cherry-label {
17
+ margin: 0 0 5px 0;
18
+ display: block;
19
+ }
20
+ .cherry-section .cherry-label:first-letter {
21
+ text-transform: uppercase;
22
+ }
23
+ .cherry-section .cherry-description {
24
+ display: block;
25
+ font-size: 11px;
26
+ color: #999;
27
+ clear: left;
28
+ }
29
+ .cherry-section .cherry-description:first-letter {
30
+ text-transform: uppercase;
31
+ }
32
+ .cherry-section .cherry-col-1, .cherry-section .cherry-col-2 {
33
+ display: inline-block;
34
+ position: relative;
35
+ vertical-align: top;
36
+ }
37
+ .cherry-section .cherry-col-1 {
38
+ width: 25%;
39
+ }
40
+ .cherry-section .cherry-col-1 label {
41
+ margin-right: 60px;
42
+ }
43
+ .cherry-section .cherry-col-1 small {
44
+ margin-right: 60px;
45
+ }
46
+ @media screen and (max-width: 782px) {
47
+ .cherry-section .cherry-col-1 {
48
+ width: 100%;
49
+ margin: 0 0 10px 0;
50
+ }
51
+ }
52
+ .cherry-section .cherry-col-2 {
53
+ width: 75%;
54
+ }
55
+ @media screen and (max-width: 782px) {
56
+ .cherry-section .cherry-col-2 {
57
+ width: 100%;
58
+ margin: 0 0 10px 0;
59
+ }
60
+ }
61
+ .cherry-section .cherry-element-wrap {
62
+ position: relative;
63
+ overflow: hidden;
64
+ }
65
+ .cherry-section .cherry-element-wrap .cherry-stepper-input {
66
+ max-width: 100px;
67
+ }
68
+ .cherry-section .cherry-block {
69
+ display: block;
70
+ }
71
+ .cherry-section .width-small {
72
+ max-width: 250px;
73
+ width: 100%;
74
+ }
75
+ .cherry-section .width-medium {
76
+ max-width: 500px;
77
+ width: 100%;
78
+ }
79
+ .cherry-section .width-full {
80
+ width: 100%;
81
+ }
82
+ .cherry-section .hint-text {
83
+ position: absolute;
84
+ top: 0;
85
+ right: 10px;
86
+ }
87
+ .cherry-section.single-section {
88
+ padding: 0;
89
+ border: none;
90
+ }
admin/assets/js/cherry-admin-sidebars.js CHANGED
@@ -1,10 +1,11 @@
1
  ( function( $ ) {
2
- 'use strict';
3
 
4
  // Form Handling Module
5
  var formHandling = {
6
  submitButton: null,
7
  spinner: null,
 
8
  form: null,
9
  btnNewSidebar: null,
10
  btnRemoveSidebar: null,
@@ -31,6 +32,7 @@
31
  formHandling.form = $( '#cherry-sidebars-form' );
32
  formHandling.submitButton = $( '#sidebar-manager-submit', formHandling.form );
33
  formHandling.spinner = $( '.spinner-wordpress-type-1', formHandling.form );
 
34
  formHandling.customSidebarHolder1 = $( '#cherry-sidebars-holder .sidebars-column-1' );
35
  formHandling.customSidebarHolder2 = $( '#cherry-sidebars-holder .sidebars-column-2' );
36
  formHandling.btnNewSidebar = $( '.btn-create-sidebar.thickbox' );
@@ -50,7 +52,7 @@
50
  openThickBox: function() {
51
  $( 'input[type="text"]', formHandling.form ).removeClass( 'error-invalid' );
52
  },
53
- submitByttonHandler: function() {
54
 
55
  // Validated form
56
  var formData = formHandling.form.serializeArray(),
@@ -58,6 +60,8 @@
58
  object,
59
  input;
60
 
 
 
61
  for ( key in formData ) {
62
  object = formData[ key ];
63
  input = $( 'input[name="' + object.name + '"]', formHandling.form );
@@ -72,6 +76,8 @@
72
  if ( ! $( '.error-invalid', formHandling.form )[0] ) {
73
  formHandling.newSidebarData.formdata = formData;
74
  formHandling.aJaxRequestNewSitebar();
 
 
75
  }
76
 
77
  return ! 1;
@@ -96,7 +102,8 @@
96
  formHandling.ajaxRequest = $.ajax( {
97
  data: formHandling.newSidebarData,
98
  beforeSend: function() {
99
- formHandling.disableButton( formHandling.submitButton );
 
100
 
101
  if ( formHandling.ajaxRequest ) {
102
  formHandling.ajaxRequest.abort();
@@ -121,7 +128,11 @@
121
  formHandling.reInitWidgets();
122
  },
123
  complete: function() {
124
- formHandling.enableButton( formHandling.submitButton );
 
 
 
 
125
  }
126
  } );
127
  },
@@ -140,22 +151,13 @@
140
  formHandling.ajaxRequest = $.ajax( {
141
  data: formHandling.removeSidebarData,
142
  beforeSend: function() {
143
- $( '.cherry-loader-wrapper', sidebar ).addClass( 'show' );
144
  },
145
  success: function() {
146
  sidebar.remove();
147
  formHandling.reInitWidgets();
148
  }
149
  } );
150
- },
151
- disableButton: function( button ) {
152
- $( button )
153
- .attr( 'disabled', 'disabled' );
154
- },
155
-
156
- enableButton: function( button ) {
157
- $( button )
158
- .removeAttr( 'disabled' );
159
  }
160
  };
161
 
1
  ( function( $ ) {
2
+ 'use strict';
3
 
4
  // Form Handling Module
5
  var formHandling = {
6
  submitButton: null,
7
  spinner: null,
8
+ errorMessage: null,
9
  form: null,
10
  btnNewSidebar: null,
11
  btnRemoveSidebar: null,
32
  formHandling.form = $( '#cherry-sidebars-form' );
33
  formHandling.submitButton = $( '#sidebar-manager-submit', formHandling.form );
34
  formHandling.spinner = $( '.spinner-wordpress-type-1', formHandling.form );
35
+ formHandling.errorMessage = $( '#cherry-error-message', formHandling.form );
36
  formHandling.customSidebarHolder1 = $( '#cherry-sidebars-holder .sidebars-column-1' );
37
  formHandling.customSidebarHolder2 = $( '#cherry-sidebars-holder .sidebars-column-2' );
38
  formHandling.btnNewSidebar = $( '.btn-create-sidebar.thickbox' );
52
  openThickBox: function() {
53
  $( 'input[type="text"]', formHandling.form ).removeClass( 'error-invalid' );
54
  },
55
+ submitByttonHandler: function( $event ) {
56
 
57
  // Validated form
58
  var formData = formHandling.form.serializeArray(),
60
  object,
61
  input;
62
 
63
+ formHandling.errorMessage.css( { 'display':'none' } );
64
+
65
  for ( key in formData ) {
66
  object = formData[ key ];
67
  input = $( 'input[name="' + object.name + '"]', formHandling.form );
76
  if ( ! $( '.error-invalid', formHandling.form )[0] ) {
77
  formHandling.newSidebarData.formdata = formData;
78
  formHandling.aJaxRequestNewSitebar();
79
+ } else {
80
+ formHandling.errorMessage.css( { 'display':'block' } ).delay( 3000 ).fadeOut( 800, 0 );
81
  }
82
 
83
  return ! 1;
102
  formHandling.ajaxRequest = $.ajax( {
103
  data: formHandling.newSidebarData,
104
  beforeSend: function() {
105
+ formHandling.submitButton.attr( { 'disabled':true } );
106
+ formHandling.spinner.css( { 'display':'block' } );
107
 
108
  if ( formHandling.ajaxRequest ) {
109
  formHandling.ajaxRequest.abort();
128
  formHandling.reInitWidgets();
129
  },
130
  complete: function() {
131
+ formHandling.spinner.delay( 200 ).css( { 'display':'none' } );
132
+ formHandling.submitButton.attr( { 'disabled':false } );
133
+ },
134
+ error: function() {
135
+ formHandling.errorMessage.css( { 'display':'block' } ).delay( 3000 ).fadeOut( 800, 0 );
136
  }
137
  } );
138
  },
151
  formHandling.ajaxRequest = $.ajax( {
152
  data: formHandling.removeSidebarData,
153
  beforeSend: function() {
154
+ $( '.cherry-spinner-wordpress', sidebar ).css( { 'display':'block' } );
155
  },
156
  success: function() {
157
  sidebar.remove();
158
  formHandling.reInitWidgets();
159
  }
160
  } );
 
 
 
 
 
 
 
 
 
161
  }
162
  };
163
 
admin/assets/js/min/cherry-admin-sidebars.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){"use strict";var r={submitButton:null,spinner:null,form:null,btnNewSidebar:null,btnRemoveSidebar:null,customSidebarHolder1:null,customSidebarHolder2:null,ajaxRequest:null,newSidebarData:{action:"add_new_custom_sidebar",security:window.cherryFramework.ajax_nonce_new_sidebar,formdata:{}},removeSidebarData:{action:"remove_custom_sidebar",id:"",security:window.cherryFramework.ajax_nonce_remove_sidebar},init:function(){var r=this;r.form=e("#cherry-sidebars-form"),r.submitButton=e("#sidebar-manager-submit",r.form),r.spinner=e(".spinner-wordpress-type-1",r.form),r.customSidebarHolder1=e("#cherry-sidebars-holder .sidebars-column-1"),r.customSidebarHolder2=e("#cherry-sidebars-holder .sidebars-column-2"),r.btnNewSidebar=e(".btn-create-sidebar.thickbox"),r.btnRemoveSidebar=e(".cherry-delete-sidebar-manager"),r.submitButton.on("click",r.submitByttonHandler),r.btnNewSidebar.on("click",r.openThickBox),r.btnRemoveSidebar.on("click",r.removeCustomSidebar),e.ajaxSetup({type:"GET",url:window.ajaxurl,cache:!1})},openThickBox:function(){e('input[type="text"]',r.form).removeClass("error-invalid")},submitByttonHandler:function(){var t,a,i,o=r.form.serializeArray();for(t in o)a=o[t],i=e('input[name="'+a.name+'"]',r.form),a.value?i.removeClass("error-invalid"):i.addClass("error-invalid");return e(".error-invalid",r.form)[0]||(r.newSidebarData.formdata=o,r.aJaxRequestNewSitebar()),!1},reInitWidgets:function(){e("#widgets-right .sidebar-name").off("click"),e("#widgets-left .sidebar-name").off("click"),e("body").off("click.widgets-toggle"),e(".widgets-chooser").off("click.widgets-chooser").off("keyup.widgets-chooser"),e("#available-widgets .widget .widget-title").off("click.widgets-chooser"),e(".widgets-chooser-sidebars > li").remove(),window.wpWidgets&&(window.wpWidgets.hoveredSidebar=null,window.wpWidgets.init())},aJaxRequestNewSitebar:function(){r.ajaxRequest=e.ajax({data:r.newSidebarData,beforeSend:function(){r.disableButton(r.submitButton),r.ajaxRequest&&r.ajaxRequest.abort()},success:function(t){var a=e(".widgets-holder-wrap",r.customSidebarHolder1).length,i=e(".widgets-holder-wrap",r.customSidebarHolder2).length,o=e(t);i>=a?r.customSidebarHolder1.append(o):r.customSidebarHolder2.append(o),e(".cherry-delete-sidebar-manager",o).on("click",r.removeCustomSidebar),e('input[type="text"]',r.form).val(""),e(".tb-close-icon").trigger("click"),r.reInitWidgets()},complete:function(){r.enableButton(r.submitButton)}})},removeCustomSidebar:function(){var t=e(this).parents(".cherry-widgets-holder-wrap");r.removeSidebarData.id=e(".widgets-sortables",t).attr("id"),r.requestRemoveSidebar(t)},requestRemoveSidebar:function(t){r.ajaxRequest=e.ajax({data:r.removeSidebarData,beforeSend:function(){e(".cherry-loader-wrapper",t).addClass("show")},success:function(){t.remove(),r.reInitWidgets()}})},disableButton:function(r){e(r).attr("disabled","disabled")},enableButton:function(r){e(r).removeAttr("disabled")}};e(document).ready(function(){r.init(),e("body:not(.widgets_access) .sidebar-manager-name").on("click",function(){var r=e(this);e("~ .sidebars-holder",r).toggleClass("closed"),e(".sidebar-name-arrow",r).toggleClass("closed-arrow")})})}(jQuery);
1
+ !function(a){"use strict";var b={submitButton:null,spinner:null,errorMessage:null,form:null,btnNewSidebar:null,btnRemoveSidebar:null,customSidebarHolder1:null,customSidebarHolder2:null,ajaxRequest:null,newSidebarData:{action:"add_new_custom_sidebar",security:window.cherryFramework.ajax_nonce_new_sidebar,formdata:{}},removeSidebarData:{action:"remove_custom_sidebar",id:"",security:window.cherryFramework.ajax_nonce_remove_sidebar},init:function(){var b=this;b.form=a("#cherry-sidebars-form"),b.submitButton=a("#sidebar-manager-submit",b.form),b.spinner=a(".spinner-wordpress-type-1",b.form),b.errorMessage=a("#cherry-error-message",b.form),b.customSidebarHolder1=a("#cherry-sidebars-holder .sidebars-column-1"),b.customSidebarHolder2=a("#cherry-sidebars-holder .sidebars-column-2"),b.btnNewSidebar=a(".btn-create-sidebar.thickbox"),b.btnRemoveSidebar=a(".cherry-delete-sidebar-manager"),b.submitButton.on("click",b.submitByttonHandler),b.btnNewSidebar.on("click",b.openThickBox),b.btnRemoveSidebar.on("click",b.removeCustomSidebar),a.ajaxSetup({type:"GET",url:window.ajaxurl,cache:!1})},openThickBox:function(){a('input[type="text"]',b.form).removeClass("error-invalid")},submitByttonHandler:function(c){var e,f,g,d=b.form.serializeArray();b.errorMessage.css({display:"none"});for(e in d)f=d[e],g=a('input[name="'+f.name+'"]',b.form),f.value?g.removeClass("error-invalid"):g.addClass("error-invalid");return a(".error-invalid",b.form)[0]?b.errorMessage.css({display:"block"}).delay(3e3).fadeOut(800,0):(b.newSidebarData.formdata=d,b.aJaxRequestNewSitebar()),!1},reInitWidgets:function(){a("#widgets-right .sidebar-name").off("click"),a("#widgets-left .sidebar-name").off("click"),a("body").off("click.widgets-toggle"),a(".widgets-chooser").off("click.widgets-chooser").off("keyup.widgets-chooser"),a("#available-widgets .widget .widget-title").off("click.widgets-chooser"),a(".widgets-chooser-sidebars > li").remove(),window.wpWidgets&&(window.wpWidgets.hoveredSidebar=null,window.wpWidgets.init())},aJaxRequestNewSitebar:function(){b.ajaxRequest=a.ajax({data:b.newSidebarData,beforeSend:function(){b.submitButton.attr({disabled:!0}),b.spinner.css({display:"block"}),b.ajaxRequest&&b.ajaxRequest.abort()},success:function(c){var d=a(".widgets-holder-wrap",b.customSidebarHolder1).length,e=a(".widgets-holder-wrap",b.customSidebarHolder2).length,f=a(c);d<=e?b.customSidebarHolder1.append(f):b.customSidebarHolder2.append(f),a(".cherry-delete-sidebar-manager",f).on("click",b.removeCustomSidebar),a('input[type="text"]',b.form).val(""),a(".tb-close-icon").trigger("click"),b.reInitWidgets()},complete:function(){b.spinner.delay(200).css({display:"none"}),b.submitButton.attr({disabled:!1})},error:function(){b.errorMessage.css({display:"block"}).delay(3e3).fadeOut(800,0)}})},removeCustomSidebar:function(){var c=a(this).parents(".cherry-widgets-holder-wrap");b.removeSidebarData.id=a(".widgets-sortables",c).attr("id"),b.requestRemoveSidebar(c)},requestRemoveSidebar:function(c){b.ajaxRequest=a.ajax({data:b.removeSidebarData,beforeSend:function(){a(".cherry-spinner-wordpress",c).css({display:"block"})},success:function(){c.remove(),b.reInitWidgets()}})}};a(document).ready(function(){b.init(),a("body:not(.widgets_access) .sidebar-manager-name").on("click",function(){var b=a(this);a("~ .sidebars-holder",b).toggleClass("closed"),a(".sidebar-name-arrow",b).toggleClass("closed-arrow")})})}(jQuery);
admin/assets/scss/cherry-admin-sidebars.scss CHANGED
@@ -76,13 +76,8 @@
76
  form#cherry-sidebars-form{
77
  border-top: 1px solid #d4d5d6;
78
  .cherry-section{
79
- padding: 5px 10px;
80
  border: none;
81
- margin: 0;
82
- box-shadow: none;
83
- &.submit-wrapper{
84
- text-align: right;
85
- }
86
  .cherry-col-1{
87
  width:24%;
88
  label {
@@ -91,84 +86,23 @@
91
  }
92
  .cherry-col-2{
93
  input[type=text]{
94
- box-shadow: inset 0 0 0 0px #f1f1f1;
95
  &:-webkit-autofill{
96
  box-shadow: inset 0 0 0 50px #fff;
97
  }
98
  }
99
  }
100
  }
101
- button {
102
- position: relative;
103
- .text {
104
- transition: opacity .7s ease;
105
- }
106
- .loader-wrapper {
107
- position: absolute;
108
- top: 50%;
109
- left: 50%;
110
- transition: opacity .5s ease, transform .5s ease;
111
- transform: scale(0);
112
-
113
- opacity: 0;
114
-
115
- width: 20px;
116
- height: 20px;
117
- margin: -13px 0 0 -13px;
118
- }
119
- &[disabled] {
120
- cursor: default;
121
- pointer-events: none;
122
- .text {
123
- opacity: 0;
124
- }
125
- .cherry-loader-wrapper {
126
- transform: scale(1);
127
- opacity: 1;
128
- }
129
- }
130
-
131
  }
132
  }
133
  }
134
- .cherry-loader-wrapper {
135
- transform: scale(0);
136
- opacity: 0;
137
- position: absolute;
138
- top: 50%;
139
- left: 50%;
140
- transition: opacity .5s ease, transform .5s ease;
141
- width: 20px;
142
- height: 20px;
143
- margin: -13px 0 0 -13px;
144
- &.show{
145
- transform: scale(1);
146
- opacity: 1;
147
- }
148
- }
149
- .cherry-loader {
150
- display: block;
151
-
152
- width: 20px;
153
- height: 20px;
154
-
155
- animation: spin .7s linear infinite;
156
-
157
- border: 3px solid #e1e1e1;
158
- border-top: 3px solid #3498DB;
159
- border-radius: 50%;
160
- }
161
- @keyframes spin {
162
- 0% {
163
- transform: rotate(0deg);
164
- }
165
- 100% {
166
- transform: rotate(360deg);
167
- }
168
- }
169
  .cherry-ui-core input[type=text].error-invalid{
170
- box-shadow: inset 0px 0px 9px 0px #ff8181;
171
- transition: box-shadow 0.2 s ease-in-out;
172
  }
173
  .cherry-widgets-holder-wrap{
174
  position: relative;
@@ -196,6 +130,10 @@
196
  height: 46px;
197
  border-top: none;
198
  }
 
 
 
 
199
  }
200
  body.widgets_access{
201
  .sidebar-manager-name{
@@ -208,6 +146,35 @@ body.widgets_access{
208
  right: -1px;
209
  }
210
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  @-webkit-keyframes cherry-innerCircle {
212
  0% {
213
  -webkit-transform: rotate(o);
@@ -228,9 +195,3 @@ body.widgets_access{
228
  transform: rotate(360deg);
229
  }
230
  }
231
- /*Style on post pages*/
232
- .postbox .cherry-sidebar-select{
233
- border-top: none;
234
- padding: 0px;
235
- position: relative;
236
- }
76
  form#cherry-sidebars-form{
77
  border-top: 1px solid #d4d5d6;
78
  .cherry-section{
79
+ padding: 15px;
80
  border: none;
 
 
 
 
 
81
  .cherry-col-1{
82
  width:24%;
83
  label {
86
  }
87
  .cherry-col-2{
88
  input[type=text]{
 
89
  &:-webkit-autofill{
90
  box-shadow: inset 0 0 0 50px #fff;
91
  }
92
  }
93
  }
94
  }
95
+ #cherry-error-message{
96
+ display: none;
97
+ color:red;
98
+ position: absolute;
99
+ right: 170px;
100
+ bottom: 33px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
  }
103
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  .cherry-ui-core input[type=text].error-invalid{
105
+ border: 1px solid red;
 
106
  }
107
  .cherry-widgets-holder-wrap{
108
  position: relative;
130
  height: 46px;
131
  border-top: none;
132
  }
133
+ .spinner-wordpress-type-1.cherry-spinner-wordpress{
134
+ right: 12px;
135
+ bottom: 12px;
136
+ }
137
  }
138
  body.widgets_access{
139
  .sidebar-manager-name{
146
  right: -1px;
147
  }
148
  }
149
+ /*spinner*/
150
+ .spinner-wordpress-type-1.cherry-spinner-wordpress{
151
+ display: none;
152
+ background-color: #f62e46;
153
+ width: 25px;
154
+ height: 25px;
155
+ border-radius: 30px;
156
+ position: absolute;
157
+ }
158
+ #cherry-sidebars-form{
159
+ .spinner-wordpress-type-1.cherry-spinner-wordpress{
160
+ right: 160px;
161
+ bottom: 28px;
162
+ }
163
+ }
164
+ .cherry-spinner-wordpress.spinner-wordpress-type-1{
165
+ -webkit-animation: cherry-innerCircle 1s linear infinite;
166
+ animation: cherry-innerCircle 1s linear infinite;
167
+ .cherry-inner-circle {
168
+ display: block;
169
+ background-color: #fff;
170
+ width: 8px;
171
+ height: 8px;
172
+ position: absolute;
173
+ border-radius: 8px;
174
+ top: 4px;
175
+ left: 4px;
176
+ }
177
+ }
178
  @-webkit-keyframes cherry-innerCircle {
179
  0% {
180
  -webkit-transform: rotate(o);
195
  transform: rotate(360deg);
196
  }
197
  }
 
 
 
 
 
 
admin/assets/scss/cherry-sidebars-post-page.scss ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /*Style on post pages*/
2
+ .postbox .cherry-sidebar-select{
3
+ border-top: none;
4
+ padding: 0px;
5
+ position: relative;
6
+ }
admin/includes/class-cherry-custom-sidebar.php CHANGED
@@ -163,8 +163,8 @@ if ( ! class_exists( 'Cherry_Custom_Sidebar' ) ) {
163
  ?>
164
  <p class="howto">
165
  <?php printf(
166
- esc_html__( 'You can choose page sidebars or create a new sidebar on %1$s widgets page %2$s.', 'cherry-sidebars' ),
167
- '<a href="widgets.php" target="_blank" title="' . esc_html__( 'Widgets Page', 'cherry-sidebars' ) . '">',
168
  '</a>'
169
  ); ?>
170
  </p>
163
  ?>
164
  <p class="howto">
165
  <?php printf(
166
+ __( 'You can choose page sidebars or create a new sidebar on %swidgets page%s .', 'cherry-sidebars' ),
167
+ '<a href="widgets.php" target="_blank" title="' . __( 'Widgets Page', 'cherry-sidebars' ) . '">',
168
  '</a>'
169
  ); ?>
170
  </p>
admin/includes/class-cherry-sidebars-admin.php CHANGED
@@ -35,13 +35,14 @@ class Cherry_Sidebars_Admin {
35
  * @return void
36
  */
37
  public function __construct() {
 
38
  // Load admin javascript and stylesheet.
39
- add_action( 'admin_enqueue_scripts', array( $this, 'add_admin_assets' ) );
40
 
41
  add_action( 'after_setup_theme', array( $this, 'widgets_ajax_page' ), 10 );
42
  add_action( 'sidebar_admin_setup', array( $this, 'registrates_custom_sidebar' ), 10 );
43
  add_action( 'widgets_admin_page', array( $this, 'edit_wp_registered_sidebars' ), 10 );
44
- add_action( 'sidebar_admin_page', array( $this, 'widgets_page' ),10 );
45
  }
46
 
47
  /**
@@ -52,15 +53,23 @@ class Cherry_Sidebars_Admin {
52
  * @return void
53
  */
54
  public function add_admin_assets( $hook_suffix ) {
 
55
  if ( 'widgets.php' === $hook_suffix ) {
56
  wp_register_script( 'cherry_admin_sidebars_js', trailingslashit( CHERRY_SIDEBARS_URI ) . 'admin/assets/js/min/cherry-admin-sidebars.min.js', array( 'jquery' ), CHERRY_SIDEBARS_VERSION, true );
57
  wp_register_style( 'cherry_admin_sidebars_css', trailingslashit( CHERRY_SIDEBARS_URI ) . 'admin/assets/css/cherry-admin-sidebars.css', array(), CHERRY_SIDEBARS_VERSION, 'all' );
58
 
 
 
59
  $cherry_framework_object = array( 'ajax_nonce_new_sidebar' => wp_create_nonce( 'new_custom_sidebar' ) , 'ajax_nonce_remove_sidebar' => wp_create_nonce( 'remove_custom_sidebar' ) );
60
  wp_localize_script( 'cherry_admin_sidebars_js', 'cherryFramework', $cherry_framework_object );
61
 
62
  wp_enqueue_script( 'cherry_admin_sidebars_js' );
63
  wp_enqueue_style( 'cherry_admin_sidebars_css' );
 
 
 
 
 
64
  }
65
  }
66
 
35
  * @return void
36
  */
37
  public function __construct() {
38
+
39
  // Load admin javascript and stylesheet.
40
+ add_action( 'admin_enqueue_scripts', array( $this, 'add_admin_assets' ), 1 );
41
 
42
  add_action( 'after_setup_theme', array( $this, 'widgets_ajax_page' ), 10 );
43
  add_action( 'sidebar_admin_setup', array( $this, 'registrates_custom_sidebar' ), 10 );
44
  add_action( 'widgets_admin_page', array( $this, 'edit_wp_registered_sidebars' ), 10 );
45
+ add_action( 'sidebar_admin_page', array( $this, 'widgets_page' ), 10 );
46
  }
47
 
48
  /**
53
  * @return void
54
  */
55
  public function add_admin_assets( $hook_suffix ) {
56
+
57
  if ( 'widgets.php' === $hook_suffix ) {
58
  wp_register_script( 'cherry_admin_sidebars_js', trailingslashit( CHERRY_SIDEBARS_URI ) . 'admin/assets/js/min/cherry-admin-sidebars.min.js', array( 'jquery' ), CHERRY_SIDEBARS_VERSION, true );
59
  wp_register_style( 'cherry_admin_sidebars_css', trailingslashit( CHERRY_SIDEBARS_URI ) . 'admin/assets/css/cherry-admin-sidebars.css', array(), CHERRY_SIDEBARS_VERSION, 'all' );
60
 
61
+ wp_register_style( 'interface-builder', trailingslashit( CHERRY_SIDEBARS_URI ) . 'admin/assets/css/interface-builder.css', array(), CHERRY_SIDEBARS_VERSION, 'all' );
62
+
63
  $cherry_framework_object = array( 'ajax_nonce_new_sidebar' => wp_create_nonce( 'new_custom_sidebar' ) , 'ajax_nonce_remove_sidebar' => wp_create_nonce( 'remove_custom_sidebar' ) );
64
  wp_localize_script( 'cherry_admin_sidebars_js', 'cherryFramework', $cherry_framework_object );
65
 
66
  wp_enqueue_script( 'cherry_admin_sidebars_js' );
67
  wp_enqueue_style( 'cherry_admin_sidebars_css' );
68
+ wp_enqueue_style( 'interface-builder' );
69
+
70
+ } elseif ( false !== strpos( $hook_suffix, 'post' ) ) {
71
+ wp_register_style( 'cherry-sidebars-post-page', trailingslashit( CHERRY_SIDEBARS_URI ) . 'admin/assets/css/cherry-sidebars-post-page.css', array(), CHERRY_SIDEBARS_VERSION, 'all' );
72
+ wp_enqueue_style( 'cherry-sidebars-post-page' );
73
  }
74
  }
75
 
admin/views/cherry-new-sidebar.php CHANGED
@@ -112,7 +112,7 @@ if ( ! function_exists( 'cherry_sidebars_add_custom_sidebar' ) ) {
112
  ?>
113
  <div class="widgets-holder-wrap closed cherry-widgets-holder-wrap">
114
  <div class='cherry-delete-sidebar-manager'>
115
- <span class="cherry-loader-wrapper"><span class="cherry-loader"></span></span>
116
  <span class="dashicons dashicons-trash"></span>
117
  </div>
118
  <div id="<?php echo esc_attr( 'cherry-sidebars-' . $id ) ?>" class="widgets-sortables ui-sortable cherry-sidebars-manager">
112
  ?>
113
  <div class="widgets-holder-wrap closed cherry-widgets-holder-wrap">
114
  <div class='cherry-delete-sidebar-manager'>
115
+ <div class="cherry-spinner-wordpress spinner-wordpress-type-1"><span class="cherry-inner-circle"></span></div>
116
  <span class="dashicons dashicons-trash"></span>
117
  </div>
118
  <div id="<?php echo esc_attr( 'cherry-sidebars-' . $id ) ?>" class="widgets-sortables ui-sortable cherry-sidebars-manager">
admin/views/cherry-widgets-page.php CHANGED
@@ -30,7 +30,6 @@ if ( ! defined( 'WPINC' ) ) {
30
  'label' => __( 'Sidebar name:', 'cherry-sidebars' ),
31
  )
32
  );
33
- $ui_text->enqueue_assets();
34
  echo $ui_text->render();
35
  ?>
36
  </div>
@@ -47,22 +46,13 @@ if ( ! defined( 'WPINC' ) ) {
47
  echo $ui_text->render();
48
  ?>
49
  </div>
50
- <div class="cherry-section submit-wrapper">
51
  <?php
52
- $ui_button = new UI_Button(
53
- array(
54
- 'id' => 'sidebar-manager-submit',
55
- 'name' => 'sidebar-manager-submit',
56
- 'value' => 'button',
57
- 'form' => '',
58
- 'style' => 'normal',
59
- 'content' => '<span class="text">' . esc_html__( 'Create Sidebar', 'cherry-sidebars' ) . '</span><span class="cherry-loader-wrapper"><span class="cherry-loader"></span></span>',
60
- 'class' => '',
61
- )
62
- );
63
- echo $ui_button->render();
64
  ?>
65
  </div>
 
 
66
  </form>
67
  </div>
68
  </div>
@@ -83,7 +73,7 @@ if ( ! defined( 'WPINC' ) ) {
83
  </div>
84
  <div id="cherry-sidebars" class="sidebars-holder">
85
  <p class="description cherry-default-description"><?php echo esc_html__( 'You can create a custom sidebar and enable it for any page or post. This can be done on page editing stage.', 'cherry-sidebars' ); ?></p>
86
- <span class="cherry-ui-core"><a class="thickbox button button-default btn-create-sidebar" href="#TB_inline?width=600&height=345&inlineId=new-sidebar-manager-wrap"><?php echo esc_html__( 'Create a new sidebar', 'cherry-sidebars' ); ?></a></span>
87
 
88
  <div id="cherry-sidebars-holder">
89
  <div class="sidebars-column-1">
@@ -121,7 +111,7 @@ if ( ! defined( 'WPINC' ) ) {
121
  ?>
122
  <div class="<?php echo esc_attr( $wrap_class ); ?> cherry-widgets-holder-wrap">
123
  <div class='cherry-delete-sidebar-manager'>
124
- <span class="cherry-loader-wrapper"><span class="cherry-loader"></span></span>
125
  <span class="dashicons dashicons-trash"></span>
126
  </div>
127
  <?php wp_list_widget_controls( $sidebar, $custom_sidebar['name'] ); // Show the control forms for each of the widgets in this sidebar ?>
30
  'label' => __( 'Sidebar name:', 'cherry-sidebars' ),
31
  )
32
  );
 
33
  echo $ui_text->render();
34
  ?>
35
  </div>
46
  echo $ui_text->render();
47
  ?>
48
  </div>
49
+ <div class="cherry-section">
50
  <?php
51
+ echo get_submit_button( __( 'Create Sidebar', 'cherry-sidebars' ), 'button-primary', 'sidebar-manager-submit', false , 'style="float:right"' );
 
 
 
 
 
 
 
 
 
 
 
52
  ?>
53
  </div>
54
+ <div class="cherry-spinner-wordpress spinner-wordpress-type-1"><span class="cherry-inner-circle"></span></div>
55
+ <div id="cherry-error-message"><?php echo esc_html__( 'Cannot add new custom sidebar', 'cherry-sidebars' ); ?></div>
56
  </form>
57
  </div>
58
  </div>
73
  </div>
74
  <div id="cherry-sidebars" class="sidebars-holder">
75
  <p class="description cherry-default-description"><?php echo esc_html__( 'You can create a custom sidebar and enable it for any page or post. This can be done on page editing stage.', 'cherry-sidebars' ); ?></p>
76
+ <span class="cherry-ui-core"><a class="thickbox button button-default btn-create-sidebar" href="#TB_inline?width=600&height=380&inlineId=new-sidebar-manager-wrap"><?php echo esc_html__( 'Create a new sidebar', 'cherry-sidebars' ); ?></a></span>
77
 
78
  <div id="cherry-sidebars-holder">
79
  <div class="sidebars-column-1">
111
  ?>
112
  <div class="<?php echo esc_attr( $wrap_class ); ?> cherry-widgets-holder-wrap">
113
  <div class='cherry-delete-sidebar-manager'>
114
+ <div class="cherry-spinner-wordpress spinner-wordpress-type-1"><span class="cherry-inner-circle"></span></div>
115
  <span class="dashicons dashicons-trash"></span>
116
  </div>
117
  <?php wp_list_widget_controls( $sidebar, $custom_sidebar['name'] ); // Show the control forms for each of the widgets in this sidebar ?>
cherry-framework/.gitignore ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #########################
2
+ # Files
3
+ #########################
4
+ .sass-cache
5
+ package.json
6
+
7
+ # Windows
8
+ Thumbs.db
9
+ Desktop.ini
10
+
11
+ # OSX
12
+ .DS_Store
13
+ *.swp
14
+ *~.nib
15
+
16
+ #########################
17
+ # Expansion
18
+ #########################
19
+ *.map
20
+ *.log
21
+ *.dll
22
+
23
+ #########################
24
+ # Folder
25
+ #########################
26
+ node_modules
27
+
28
+ #########################
29
+ # Travis-si files
30
+ #########################
cherry-framework/README.md ADDED
@@ -0,0 +1,2 @@
 
 
1
+ # cherry-framework
2
+ Module system.
cherry-framework/cherry-core.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Class Cherry Core
4
- * Version: 1.3.1
5
  *
6
  * @package Cherry_Framework
7
  * @subpackage Class
@@ -59,10 +59,9 @@ if ( ! class_exists( 'Cherry_Core' ) ) {
59
  * Constructor.
60
  *
61
  * @since 1.0.0
62
- * @since 1.1.1 Using dirname( __FILE__ ) instead of __DIR__.
63
  */
64
  public function __construct( $settings = array() ) {
65
- $base_dir = trailingslashit( dirname( __FILE__ ) );
66
  $base_url = trailingslashit( $this->base_url( '', __FILE__ ) );
67
 
68
  $defaults = array(
@@ -286,7 +285,7 @@ if ( ! class_exists( 'Cherry_Core' ) ) {
286
  $class_name = self::get_class_name( $module );
287
 
288
  if ( ! class_exists( $class_name ) ) {
289
- echo '<p>Class <b>' . esc_html( $class_name ) . '</b> not exist!</p>';
290
  return false;
291
  }
292
 
@@ -406,8 +405,8 @@ if ( ! class_exists( 'Cherry_Core' ) ) {
406
  if ( 0 === strpos( $module_path, $plugin_dir ) ) {
407
  $url = plugin_dir_url( $module_path );
408
  } else if ( false !== strpos( $module_path, $theme_dir ) ) {
409
- $explode = explode( $theme_dir, $module_dir );
410
- $url = get_stylesheet_directory_uri() . end( $explode );
411
  } else {
412
  $site_url = site_url();
413
  $abs_path = wp_normalize_path( ABSPATH );
@@ -445,7 +444,7 @@ if ( ! class_exists( 'Cherry_Core' ) ) {
445
  * Get path to the core directory.
446
  *
447
  * @since 1.0.0
448
- * @deprecated 1.1.0 Use constant `dirname( __FILE__ )`
449
  * @return string
450
  */
451
  public function get_core_dir() {
1
  <?php
2
  /**
3
  * Class Cherry Core
4
+ * Version: 1.1.1
5
  *
6
  * @package Cherry_Framework
7
  * @subpackage Class
59
  * Constructor.
60
  *
61
  * @since 1.0.0
 
62
  */
63
  public function __construct( $settings = array() ) {
64
+ $base_dir = trailingslashit( __DIR__ );
65
  $base_url = trailingslashit( $this->base_url( '', __FILE__ ) );
66
 
67
  $defaults = array(
285
  $class_name = self::get_class_name( $module );
286
 
287
  if ( ! class_exists( $class_name ) ) {
288
+ echo '<p>Class <b>' . $class_name . '</b> not exist!</p>';
289
  return false;
290
  }
291
 
405
  if ( 0 === strpos( $module_path, $plugin_dir ) ) {
406
  $url = plugin_dir_url( $module_path );
407
  } else if ( false !== strpos( $module_path, $theme_dir ) ) {
408
+ $explode = explode( $theme_dir, $module_dir, 2 );
409
+ $url = get_stylesheet_directory_uri() . $explode[1];
410
  } else {
411
  $site_url = site_url();
412
  $abs_path = wp_normalize_path( ABSPATH );
444
  * Get path to the core directory.
445
  *
446
  * @since 1.0.0
447
+ * @deprecated 1.1.0 Use constant `__DIR__`
448
  * @return string
449
  */
450
  public function get_core_dir() {
cherry-framework/codesniffer.ruleset.xml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="WordPress Theme Coding Standards">
3
+ <!-- See https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
4
+ <!-- See https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/blob/develop/WordPress-Core/ruleset.xml -->
5
+
6
+ <!-- Set a description for this ruleset. -->
7
+ <description>A custom set of code standard rules to check for WordPress themes.</description>
8
+
9
+ <!-- Include the WordPress ruleset, with space for exclusions if necessary. -->
10
+ <rule ref="WordPress-Core">
11
+ <exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect" />
12
+ <exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact" />
13
+
14
+ <exclude name="PEAR.Functions.FunctionCallSignature.Indent" />
15
+
16
+ <exclude name="Squiz.Commenting.FileComment.SpacingAfterComment" />
17
+ <exclude name="Squiz.Commenting.FunctionComment.MissingParamTag" />
18
+ <exclude name="Squiz.Commenting.InlineComment.InvalidEndChar" />
19
+ <exclude name="Squiz.Commenting.InlineComment.NotCapital" />
20
+ </rule>
21
+ <rule ref="WordPress-Docs">
22
+
23
+ </rule>
24
+ </ruleset>
cherry-framework/config.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name" : "Cherry Framework",
3
- "version" : "1.3.1",
4
  "description" : "",
5
  "doc_link" : "",
6
  "git_link" : "https://github.com/CherryFramework/cherry-framework",
@@ -8,7 +8,6 @@
8
  "cherry-breadcrumbs" : {
9
  "name" : "Breadcrumb Trail",
10
  "description" : "A breadcrumb menu script for WordPress.",
11
- "version" : "1.1.1",
12
  "doc_link" : "",
13
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-breadcrumbs",
14
  "compatible" : ["theme", "plugin"],
@@ -16,10 +15,19 @@
16
  "required" : false,
17
  "dependencies" : []
18
  },
 
 
 
 
 
 
 
 
 
 
19
  "cherry-customizer" : {
20
- "name" : "Customizer API",
21
  "description" : "Customizer functionality.",
22
- "version" : "1.1.4",
23
  "doc_link" : "",
24
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-customizer",
25
  "compatible" : ["theme", "plugin"],
@@ -28,9 +36,8 @@
28
  "dependencies" : []
29
  },
30
  "cherry-dynamic-css" : {
31
- "name" : "Dynamic CSS",
32
- "description" : "Generate CSS.",
33
- "version" : "1.2.1",
34
  "doc_link" : "",
35
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-dynamic-css",
36
  "compatible" : ["theme", "plugin"],
@@ -40,8 +47,7 @@
40
  },
41
  "cherry-google-fonts-loader" : {
42
  "name" : "Google Fonts Loader",
43
- "description" : "Enqueue Google fonts.",
44
- "version" : "1.1.0",
45
  "doc_link" : "",
46
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-google-fonts-loader",
47
  "compatible" : ["theme", "plugin"],
@@ -49,43 +55,39 @@
49
  "required" : false,
50
  "dependencies" : []
51
  },
52
- "cherry-handler" : {
53
- "name" : "Cherry handler",
54
- "description" : "Initialize handlers.",
55
- "version" : "1.0.0",
56
  "doc_link" : "",
57
- "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-handler",
58
  "compatible" : ["theme", "plugin"],
59
  "wordpress_org" : true,
60
  "required" : false,
61
- "dependencies" : [ "cherry-js-core" ]
62
  },
63
- "cherry-interface-builder" : {
64
- "name" : "Interface Builder",
65
- "description" : "The module for the creation of interfaces in the WordPress admin panel.",
66
- "version" : "1.0.3",
67
  "doc_link" : "",
68
- "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-interface-builder",
69
- "compatible" : ["theme", "plugin"],
70
  "wordpress_org" : true,
71
  "required" : false,
72
- "dependencies" : [ "cherry-ui-elements" ]
73
  },
74
- "cherry-js-core" : {
75
- "name" : "JS Core",
76
- "description" : "Initialize global JS object which provides additional plugin functionality.",
77
- "version" : "1.1.2",
78
  "doc_link" : "",
79
- "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-js-core",
80
- "compatible" : ["theme", "plugin"],
81
- "wordpress_org" : true,
82
  "required" : false,
83
  "dependencies" : []
84
  },
85
  "cherry-post-formats-api" : {
86
  "name" : "Post Formats API",
87
  "description" : "API for post formats specific content.",
88
- "version" : "1.1.2",
89
  "doc_link" : "",
90
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-post-formats-api",
91
  "compatible" : ["theme", "plugin"],
@@ -96,21 +98,29 @@
96
  "cherry-post-meta" : {
97
  "name" : "Post Meta",
98
  "description" : "Manage post meta.",
99
- "version" : "1.2.1",
100
  "doc_link" : "",
101
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-post-meta",
102
  "compatible" : ["theme", "plugin"],
103
  "wordpress_org" : true,
104
  "required" : false,
105
- "dependencies" : [ "cherry-interface-builder" ]
106
  },
107
- "cherry-template-manager" : {
108
- "name" : "Template Manager",
109
- "description" : "Module for load and parse *.tmpl files.",
110
- "version" : "1.0.0",
111
  "doc_link" : "",
112
- "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-template-manager",
113
- "compatible" : ["theme", "plugin"],
 
 
 
 
 
 
 
 
 
 
114
  "wordpress_org" : true,
115
  "required" : false,
116
  "dependencies" : []
@@ -118,7 +128,6 @@
118
  "cherry-term-meta" : {
119
  "name" : "Term Meta",
120
  "description" : "Manage term metadata.",
121
- "version" : "1.1.4",
122
  "doc_link" : "",
123
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-term-meta",
124
  "compatible" : ["theme", "plugin"],
@@ -126,21 +135,19 @@
126
  "required" : false,
127
  "dependencies" : [ "cherry-ui-elements" ]
128
  },
129
- "cherry-toolkit": {
130
- "name": "Framework Toolkit",
131
- "description": "Framework Toolkit contains various PHP utilities",
132
- "version" : "1.2.0",
133
- "doc_link": "",
134
- "git_link": "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-toolkit",
135
- "compatible": ["theme", "plugin"],
136
- "wordpress_org": true,
137
- "required": true,
138
- "dependencies": []
139
  },
140
  "cherry-ui-elements" : {
141
  "name" : "UI Elements",
142
  "description" : "UI Elements",
143
- "version" : "1.3.0",
144
  "doc_link" : "",
145
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-ui-elements",
146
  "compatible" : ["theme", "plugin"],
@@ -151,7 +158,6 @@
151
  "cherry-utility" : {
152
  "name" : "Utility",
153
  "description" : "Multiple utility functions.",
154
- "version" : "1.1.4",
155
  "doc_link" : "",
156
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-utility",
157
  "compatible" : ["theme", "plugin"],
@@ -160,15 +166,24 @@
160
  "dependencies" : []
161
  },
162
  "cherry-widget-factory" : {
163
- "name" : "Widget Factory",
164
  "description" : "Base widget class that simplifies creating of your own widgets.",
165
- "version" : "1.2.0",
166
  "doc_link" : "",
167
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-widget-factory",
168
  "compatible" : ["theme", "plugin"],
169
  "wordpress_org" : true,
170
  "required" : false,
171
  "dependencies" : [ "cherry-ui-elements" ]
 
 
 
 
 
 
 
 
 
 
172
  }
173
  }
174
  }
1
  {
2
  "name" : "Cherry Framework",
3
+ "version" : "1.1.1",
4
  "description" : "",
5
  "doc_link" : "",
6
  "git_link" : "https://github.com/CherryFramework/cherry-framework",
8
  "cherry-breadcrumbs" : {
9
  "name" : "Breadcrumb Trail",
10
  "description" : "A breadcrumb menu script for WordPress.",
 
11
  "doc_link" : "",
12
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-breadcrumbs",
13
  "compatible" : ["theme", "plugin"],
15
  "required" : false,
16
  "dependencies" : []
17
  },
18
+ "cherry-creator" : {
19
+ "name" : "Creator.",
20
+ "description" : "Creator.",
21
+ "doc_link" : "",
22
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-creator",
23
+ "compatible" : ["theme", "plugin"],
24
+ "wordpress_org" : true,
25
+ "required" : false,
26
+ "dependencies" : []
27
+ },
28
  "cherry-customizer" : {
29
+ "name" : "Customizer",
30
  "description" : "Customizer functionality.",
 
31
  "doc_link" : "",
32
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-customizer",
33
  "compatible" : ["theme", "plugin"],
36
  "dependencies" : []
37
  },
38
  "cherry-dynamic-css" : {
39
+ "name" : "Dynamic Css",
40
+ "description" : "Generate Css.",
 
41
  "doc_link" : "",
42
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-dynamic-css",
43
  "compatible" : ["theme", "plugin"],
47
  },
48
  "cherry-google-fonts-loader" : {
49
  "name" : "Google Fonts Loader",
50
+ "description" : "Enqueue Google font.",
 
51
  "doc_link" : "",
52
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-google-fonts-loader",
53
  "compatible" : ["theme", "plugin"],
55
  "required" : false,
56
  "dependencies" : []
57
  },
58
+ "cherry-js-core" : {
59
+ "name" : "JS Core",
60
+ "description" : "Initializes global JS object which provides additional plugin functionality.",
 
61
  "doc_link" : "",
62
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-js-core",
63
  "compatible" : ["theme", "plugin"],
64
  "wordpress_org" : true,
65
  "required" : false,
66
+ "dependencies" : []
67
  },
68
+ "cherry-page-builder" : {
69
+ "name" : "Page Builder",
70
+ "description" : "Provides functionality for building custom options pages.",
 
71
  "doc_link" : "",
72
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-page-builder",
73
+ "compatible" : ["plugin"],
74
  "wordpress_org" : true,
75
  "required" : false,
76
+ "dependencies" : []
77
  },
78
+ "cherry-plugin-updater" : {
79
+ "name" : "Plugin Updater",
80
+ "description" : "Provides functionality for updating plugins.",
 
81
  "doc_link" : "",
82
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-plugin-updater",
83
+ "compatible" : ["plugin"],
84
+ "wordpress_org" : false,
85
  "required" : false,
86
  "dependencies" : []
87
  },
88
  "cherry-post-formats-api" : {
89
  "name" : "Post Formats API",
90
  "description" : "API for post formats specific content.",
 
91
  "doc_link" : "",
92
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-post-formats-api",
93
  "compatible" : ["theme", "plugin"],
98
  "cherry-post-meta" : {
99
  "name" : "Post Meta",
100
  "description" : "Manage post meta.",
 
101
  "doc_link" : "",
102
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-post-meta",
103
  "compatible" : ["theme", "plugin"],
104
  "wordpress_org" : true,
105
  "required" : false,
106
+ "dependencies" : [ "cherry-ui-elements" ]
107
  },
108
+ "cherry-post-types" : {
109
+ "name" : "Post Types",
110
+ "description" : "Provides functionality for creating custom post types.",
 
111
  "doc_link" : "",
112
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-post-types",
113
+ "compatible" : ["plugin"],
114
+ "wordpress_org" : true,
115
+ "required" : false,
116
+ "dependencies" : [ "cherry-ui-elements" ]
117
+ },
118
+ "cherry-taxonomies" : {
119
+ "name" : "Taxanomies",
120
+ "description" : "Provides functionality for creating custom taxanomies.",
121
+ "doc_link" : "",
122
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-taxonomies",
123
+ "compatible" : ["plugin"],
124
  "wordpress_org" : true,
125
  "required" : false,
126
  "dependencies" : []
128
  "cherry-term-meta" : {
129
  "name" : "Term Meta",
130
  "description" : "Manage term metadata.",
 
131
  "doc_link" : "",
132
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-term-meta",
133
  "compatible" : ["theme", "plugin"],
135
  "required" : false,
136
  "dependencies" : [ "cherry-ui-elements" ]
137
  },
138
+ "cherry-theme-updater" : {
139
+ "name" : "Theme Updater",
140
+ "description" : "Provides functionality for updating themes.",
141
+ "doc_link" : "",
142
+ "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-theme-updater",
143
+ "compatible" : ["theme"],
144
+ "wordpress_org" : false,
145
+ "required" : false,
146
+ "dependencies" : []
 
147
  },
148
  "cherry-ui-elements" : {
149
  "name" : "UI Elements",
150
  "description" : "UI Elements",
 
151
  "doc_link" : "",
152
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-ui-elements",
153
  "compatible" : ["theme", "plugin"],
158
  "cherry-utility" : {
159
  "name" : "Utility",
160
  "description" : "Multiple utility functions.",
 
161
  "doc_link" : "",
162
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-utility",
163
  "compatible" : ["theme", "plugin"],
166
  "dependencies" : []
167
  },
168
  "cherry-widget-factory" : {
169
+ "name" : "Widget Factory.",
170
  "description" : "Base widget class that simplifies creating of your own widgets.",
 
171
  "doc_link" : "",
172
  "git_link" : "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-widget-factory",
173
  "compatible" : ["theme", "plugin"],
174
  "wordpress_org" : true,
175
  "required" : false,
176
  "dependencies" : [ "cherry-ui-elements" ]
177
+ },
178
+ "cherry-toolkit": {
179
+ "name": "Framework Toolkit",
180
+ "description": "Framework Toolkit contains various PHP utilities",
181
+ "doc_link": "",
182
+ "git_link": "https://github.com/CherryFramework/cherry-framework/tree/master/modules/cherry-toolkit",
183
+ "compatible": ["theme", "plugin"],
184
+ "wordpress_org": true,
185
+ "required": true,
186
+ "dependencies": []
187
  }
188
  }
189
  }
cherry-framework/modules/cherry-breadcrumbs/cherry-breadcrumbs.php DELETED
@@ -1,1560 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Breadcrumb Trail
4
- * Description: A breadcrumb menu script for WordPress
5
- * Version: 1.1.2
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * Breadcrumb Trail - A breadcrumb menu script for WordPress.
12
- *
13
- * Breadcrumb Trail is a script for showing a breadcrumb trail for any type of page. It tries to
14
- * anticipate any type of structure and display the best possible trail that matches your site's
15
- * permalink structure. While not perfect, it attempts to fill in the gaps left by many other
16
- * breadcrumb scripts.
17
- *
18
- * @package Cherry_Framework
19
- * @subpackage Modules
20
- * @author Cherry Team <support@cherryframework.com>, Justin Tadlock <justin@justintadlock.com>
21
- * @copyright Copyright (c) 2008 - 2014, Justin Tadlock
22
- * @link http://themehybrid.com/plugins/breadcrumb-trail
23
- * @link http://www.cherryframework.com
24
- * @license http://www.gnu.org/licenses/gpl-3.0.html
25
- */
26
-
27
- // If this file is called directly, abort.
28
- if ( ! defined( 'WPINC' ) ) {
29
- die;
30
- }
31
-
32
- if ( ! class_exists( 'Cherry_Breadcrumbs' ) ) {
33
-
34
- /**
35
- * Breadcrumbs builder class.
36
- * Class is based on Breadcrumb Trail plugin by Justin Tadlock.
37
- *
38
- * @since 1.0.0
39
- */
40
- class Cherry_Breadcrumbs {
41
-
42
- /**
43
- * A reference to an instance of this class.
44
- *
45
- * @since 1.0.0
46
- * @var object
47
- */
48
- private static $instance = null;
49
-
50
- /**
51
- * Core instance.
52
- *
53
- * @since 1.0.0
54
- * @var object
55
- */
56
- public $core = null;
57
-
58
- /**
59
- * Indexed array of breadcrumb trail items.
60
- *
61
- * @since 1.0.0
62
- * @var array
63
- */
64
- public $items = array();
65
-
66
- /**
67
- * Breadcrumb arguments.
68
- *
69
- * @since 1.0.0
70
- * @var array
71
- */
72
- public $args = array();
73
-
74
- /**
75
- * Page title.
76
- *
77
- * @since 1.0.0
78
- * @var array
79
- */
80
- public $page_title = null;
81
-
82
- /**
83
- * Breadcrumbs CSS.
84
- *
85
- * @since 1.0.0
86
- * @var array
87
- */
88
- public $css = array(
89
- 'module' => 'cherry-breadcrumbs',
90
- 'content' => 'cherry-breadcrumbs_content',
91
- 'wrap' => 'cherry-breadcrumbs_wrap',
92
- 'browse' => 'cherry-breadcrumbs_browse',
93
- 'item' => 'cherry-breadcrumbs_item',
94
- 'separator' => 'cherry-breadcrumbs_item_sep',
95
- 'link' => 'cherry-breadcrumbs_item_link',
96
- 'target' => 'cherry-breadcrumbs_item_target',
97
- );
98
-
99
- /**
100
- * Check if Breadcrumbs class was extended.
101
- *
102
- * @since 1.0.0
103
- * @var boolean
104
- */
105
- public $is_extend = false;
106
-
107
- /**
108
- * Constructor of class.
109
- */
110
- function __construct( $core, $args = array() ) {
111
-
112
- $this->core = $core;
113
-
114
- $defaults = array(
115
- 'separator' => '&#47;',
116
- 'before' => '',
117
- 'after' => '',
118
- 'show_mobile' => true,
119
- 'show_tablet' => true,
120
- 'wrapper_format' => '<div>%1$s</div><div>%2$s</div>',
121
- 'page_title_format' => '<h1 class="page-title">%s</h1>',
122
- 'item_format' => '<div class="%2$s">%1$s</div>',
123
- 'home_format' => '<a href="%4$s" class="%2$s is-home" rel="home" title="%3$s">%1$s</a>',
124
- 'link_format' => '<a href="%4$s" class="%2$s" rel="tag" title="%3$s">%1$s</a>',
125
- 'target_format' => '<span class="%2$s">%1$s</span>',
126
- 'show_on_front' => true,
127
- 'network' => false,
128
- 'show_title' => true,
129
- 'show_items' => true,
130
- 'show_browse' => true,
131
- 'echo' => true,
132
- 'labels' => array(),
133
- 'date_labels' => array(),
134
- // Cherry team editing start
135
- 'action' => 'cherry_breadcrumbs_render',
136
- 'css_namespace' => array(),
137
- 'path_type' => 'full',
138
- // Cherry team editing end
139
- 'post_taxonomy' => apply_filters(
140
- 'cherry_breadcrumbs_trail_taxonomies',
141
- array(
142
- 'post' => 'category',
143
- )
144
- ),
145
- );
146
-
147
- $this->args = apply_filters( 'cherry_breadcrumb_args', wp_parse_args( $args, $defaults ) );
148
-
149
- // Cherry team editing start
150
- if ( isset( $this->args['css_namespace'] ) && ! empty( $this->args['css_namespace'] ) ) {
151
- $this->css = wp_parse_args( $this->args['css_namespace'], $this->css );
152
- }
153
- // Cherry team editing end
154
- if ( ! empty( $args['labels'] ) ) {
155
- $this->args['labels'] = wp_parse_args( $args['labels'], $this->default_labels() );
156
- } else {
157
- $this->args['labels'] = $this->default_labels();
158
- }
159
-
160
- if ( ! empty( $args['date_labels'] ) ) {
161
- $this->args['date_labels'] = wp_parse_args( $args['date_labels'], $this->default_date_labels() );
162
- } else {
163
- $this->args['date_labels'] = $this->default_date_labels();
164
- }
165
-
166
- if ( is_front_page() && false === $this->args['show_on_front'] ) {
167
- return;
168
- }
169
-
170
- $this->build_trail();
171
-
172
- if ( ! $this->is_extend ) {
173
- add_action( $this->args['action'], array( $this, 'get_trail' ) );
174
- }
175
-
176
- }
177
-
178
- /**
179
- * Formats and outputs the breadcrumb trail.
180
- *
181
- * @since 1.0.0
182
- */
183
- public function get_trail() {
184
-
185
- if ( is_front_page() && false === $this->args['show_on_front'] ) {
186
- return;
187
- }
188
-
189
- $breadcrumb = $this->get_items();
190
- $title = $this->get_title();
191
-
192
- $wrapper_classes = array(
193
- esc_attr( $this->css['module'] )
194
- );
195
-
196
- if ( false === $this->args['show_mobile'] ) {
197
- $wrapper_classes[] = 'hidden-xs';
198
- }
199
-
200
- if ( false === $this->args['show_tablet'] ) {
201
- $wrapper_classes[] = 'hidden-sm';
202
- }
203
-
204
- $wrapper_classes = apply_filters( 'cherry_breadcrumbs_wrapper_classes', $wrapper_classes );
205
- $wrapper_classes = array_unique( $wrapper_classes );
206
- $wrapper_classes = array_map( 'sanitize_html_class', $wrapper_classes );
207
- $wrapper_css = implode( ' ', $wrapper_classes );
208
-
209
- /* Open the breadcrumb trail containers. */
210
- $result = "\n\t\t" . '<div class="' . esc_attr( $wrapper_css ) . '">';
211
-
212
- $result .= sprintf( $this->args['wrapper_format'], $title, $breadcrumb );
213
-
214
- /* Close the breadcrumb trail containers. */
215
- $result .= "\n\t\t" . '</div>';
216
-
217
- if ( true === $this->args['echo'] ) {
218
- echo $result;
219
- } else {
220
- return $result;
221
- }
222
-
223
- }
224
-
225
- /**
226
- * Get breacrumbs list items.
227
- *
228
- * @since 1.0.0
229
- */
230
- public function get_items() {
231
-
232
- if ( false == $this->args['show_items'] ) {
233
- return;
234
- }
235
-
236
- $breadcrumb = '';
237
-
238
- /* Connect the breadcrumb trail if there are items in the trail. */
239
- if ( empty( $this->items ) && ! is_array( $this->items ) ) {
240
- return;
241
- }
242
-
243
- if ( is_front_page() && false === $this->args['show_on_front'] ) {
244
- return;
245
- }
246
-
247
- /* Make sure we have a unique array of items. */
248
- $this->items = array_unique( $this->items );
249
-
250
- if ( $this->args['before'] ) {
251
- $breadcrumb .= $this->args['before'];
252
- }
253
-
254
- /* Open the breadcrumb trail containers. */
255
- $breadcrumb .= "\n\t\t" . '<div class="' . esc_attr( $this->css['content'] ) . '">';
256
-
257
- /* Add 'browse' label if it should be shown. */
258
- if ( true === $this->args['show_browse'] && ! empty( $this->args['labels']['browse'] ) ) {
259
- $browse = $this->prepare_label( $this->args['labels']['browse'] );
260
- $breadcrumb .= "\n\t\t\t" . '<div class="' . esc_attr( $this->css['browse'] ) . '">' . $browse . '</div> ';
261
- }
262
-
263
- $breadcrumb .= "\n\t\t" . '<div class="' . esc_attr( $this->css['wrap'] ) . '">';
264
-
265
- /* Format the separator. */
266
- $separator = ! empty( $this->args['separator'] )
267
- ? $this->args['separator']
268
- : '/';
269
-
270
- $separator = $this->prepare_label( $separator );
271
- $separator = '<div class="' . esc_attr( $this->css['separator'] ) . '">' . $separator . '</div>';
272
- $separator = sprintf( $this->args['item_format'], $separator, $this->css['item'] );
273
-
274
- /* Join the individual trail items into a single string. */
275
- $breadcrumb .= join( "\n\t\t\t {$separator} ", $this->items );
276
-
277
- $breadcrumb .= "\n\t\t" . '</div>';
278
-
279
- $breadcrumb .= "\n\t\t" . '</div>';
280
-
281
- if ( $this->args['after'] ) {
282
- $breadcrumb .= $this->args['after'];
283
- }
284
-
285
- /* Allow developers to filter the breadcrumb trail HTML and page title. */
286
- $breadcrumb = apply_filters( 'cherry_breadcrumbs_trail', $breadcrumb, $this->args );
287
-
288
- return $breadcrumb;
289
-
290
- }
291
-
292
- /**
293
- * Get page title.
294
- *
295
- * @since 1.0.0
296
- */
297
- public function get_title() {
298
-
299
- if ( false == $this->args['show_title'] || ! $this->page_title ) {
300
- return;
301
- }
302
-
303
- $title = apply_filters(
304
- 'cherry_page_title',
305
- sprintf( $this->args['page_title_format'], $this->page_title ), $this->args
306
- );
307
-
308
- return $title;
309
-
310
- }
311
-
312
- /**
313
- * Returns an array of the default labels.
314
- *
315
- * @since 1.0.0
316
- */
317
- public function default_date_labels() {
318
- $labels = array(
319
- 'archive_minute_hour' => 'g:i a', // minute and hour archives time format
320
- 'archive_minute' => 'i', // minute archives time format
321
- 'archive_hour' => 'g a', // hour archives time format
322
- 'archive_year' => 'Y', // yearly archives date format
323
- 'archive_month' => 'F', // monthly archives date format
324
- 'archive_day' => 'j', // daily archives date format
325
- 'archive_week' => 'W', // weekly archives date format
326
- );
327
-
328
- return $labels;
329
- }
330
-
331
- /**
332
- * Returns an array of the default labels.
333
- *
334
- * @since 1.0.0
335
- */
336
- public function default_labels() {
337
- $page_on_front_id = get_option( 'page_on_front' );
338
- $use_custom_front_title = 'true';
339
- $use_custom_front_title = ( 'true' == $use_custom_front_title ) ? true : false;
340
-
341
- if ( $page_on_front_id ) {
342
- $page_on_front_title = get_the_title( $page_on_front_id );
343
- }
344
-
345
- if ( $use_custom_front_title ) {
346
- $default = 'Home';
347
- $page_on_front_title = $default;
348
- $page_on_front_title = $this->prepare_label( $page_on_front_title, $default );
349
- }
350
-
351
- $labels = array(
352
- 'browse' => 'Browse:',
353
- 'home' => $page_on_front_title,
354
- 'error_404' => '404 Not Found',
355
- 'archives' => 'Archives',
356
- 'search' => 'Search results for &#8220;%s&#8221;',
357
- 'paged' => 'Page %s',
358
- 'archive_minute' => 'Minute %s',
359
- 'archive_week' => 'Week %s',
360
-
361
- /* "%s" is replaced with the translated date/time format. */
362
- 'archive_minute_hour' => '%s',
363
- 'archive_hour' => '%s',
364
- 'archive_day' => '%s',
365
- 'archive_month' => '%s',
366
- 'archive_year' => '%s',
367
- );
368
-
369
- return $labels;
370
- }
371
-
372
- /**
373
- * Build breadcrumbs trail items array.
374
- *
375
- * @since 1.0.0
376
- */
377
- public function build_trail() {
378
-
379
- // Break trail building, if use custom trailing for this page
380
- $custom_trail = apply_filters( 'cherry_breadcrumbs_custom_trail', false, $this->args );
381
- if ( is_array( $custom_trail ) && ! empty( $custom_trail ) ) {
382
- $this->items = $custom_trail['items'];
383
- $this->page_title = $custom_trail['page_title'];
384
- return;
385
- }
386
-
387
- if ( is_front_page() ) {
388
-
389
- // if we on front page
390
- $this->add_front_page();
391
-
392
- } else {
393
-
394
- // do this for all other pages
395
- $this->add_network_home_link();
396
- $this->add_site_home_link();
397
-
398
- // add blog page related items
399
- if ( is_home() ) {
400
-
401
- $this->add_blog_page();
402
-
403
- } elseif ( is_singular() ) {
404
-
405
- // add single page/post items
406
- $this->add_singular_items();
407
-
408
- } elseif ( is_archive() ) {
409
-
410
- // is is archive page
411
- if ( is_post_type_archive() ) {
412
- $this->add_post_type_archive_items();
413
-
414
- } elseif ( is_category() || is_tag() || is_tax() ) {
415
- $this->add_term_archive_items();
416
-
417
- } elseif ( is_author() ) {
418
- $this->add_user_archive_items();
419
-
420
- } elseif ( get_query_var( 'minute' ) && get_query_var( 'hour' ) ) {
421
- $this->add_minute_hour_archive_items();
422
-
423
- } elseif ( get_query_var( 'minute' ) ) {
424
- $this->add_minute_archive_items();
425
-
426
- } elseif ( get_query_var( 'hour' ) ) {
427
- $this->add_hour_archive_items();
428
-
429
- } elseif ( is_day() ) {
430
- $this->add_day_archive_items();
431
-
432
- } elseif ( get_query_var( 'w' ) ) {
433
- $this->add_week_archive_items();
434
-
435
- } elseif ( is_month() ) {
436
- $this->add_month_archive_items();
437
-
438
- } elseif ( is_year() ) {
439
- $this->add_year_archive_items();
440
-
441
- } else {
442
- $this->add_default_archive_items();
443
-
444
- }
445
- } elseif ( is_search() ) {
446
- /* If viewing a search results page. */
447
- $this->add_search_items();
448
- } elseif ( is_404() ) {
449
- /* If viewing the 404 page. */
450
- $this->add_404_items();
451
- }
452
- }
453
-
454
- /* Add paged items if they exist. */
455
- $this->add_paged_items();
456
-
457
- /**
458
- * Filter final item array
459
- *
460
- * @since 1.0.0
461
- * @var array
462
- */
463
- $this->items = apply_filters( 'cherry_breadcrumbs_items', $this->items, $this->args );
464
-
465
- }
466
-
467
- /**
468
- * Add trail item int array.
469
- *
470
- * @since 1.0.0
471
- *
472
- * @param string $format Item format to add.
473
- * @param string $label Item label.
474
- * @param string $url Item URL.
475
- * @param string $class Item CSS class.
476
- */
477
- public function _add_item( $format = 'link_format', $label, $url = '', $class = '' ) {
478
-
479
- $title = esc_attr( wp_strip_all_tags( $label ) );
480
- $css = ( 'target_format' == $format ) ? 'target' : 'link';
481
-
482
- if ( $class ) {
483
- $class .= ' ' . $this->css[ $css ];
484
- } else {
485
- $class = $this->css[ $css ];
486
- }
487
-
488
- $item = sprintf( $this->args[ $format ], $label, $class, $title, $url );
489
-
490
- $this->items[] = sprintf( $this->args['item_format'], $item, esc_attr( $this->css['item'] ) );
491
-
492
- if ( 'target_format' == $format ) {
493
- $this->page_title = $label;
494
- }
495
-
496
- }
497
-
498
- /**
499
- * Add front items based on $wp_rewrite->front.
500
- *
501
- * @since 1.0.0
502
- */
503
- public function add_rewrite_front_items() {
504
-
505
- global $wp_rewrite;
506
-
507
- if ( $wp_rewrite->front ) {
508
- $this->add_path_parents( $wp_rewrite->front );
509
- }
510
- }
511
-
512
- /**
513
- * Adds the page/paged number to the items array.
514
- *
515
- * @since 1.0.0
516
- * @return void
517
- */
518
- public function add_paged_items() {
519
-
520
- /* If viewing a paged singular post. */
521
- if ( is_singular() && 1 < get_query_var( 'page' ) ) {
522
- $label = sprintf(
523
- $this->args['labels']['paged'],
524
- number_format_i18n( absint( get_query_var( 'page' ) ) )
525
- );
526
- $this->_add_item( 'target_format', $label );
527
- } elseif ( is_paged() ) {
528
- /* If viewing a paged archive-type page. */
529
- $label = sprintf(
530
- $this->args['labels']['paged'],
531
- number_format_i18n( absint( get_query_var( 'paged' ) ) )
532
- );
533
- $this->_add_item( 'target_format', $label );
534
- }
535
-
536
- }
537
-
538
- /**
539
- * Get parent posts by path. Currently, this method only supports getting parents of the 'page'
540
- * post type. The goal of this function is to create a clear path back to home given what would
541
- * normally be a "ghost" directory. If any page matches the given path, it'll be added.
542
- *
543
- * @since 1.0.0
544
- *
545
- * @param string $path The path (slug) to search for posts by.
546
- */
547
- function add_path_parents( $path ) {
548
-
549
- /* Trim '/' off $path in case we just got a simple '/' instead of a real path. */
550
- $path = trim( $path, '/' );
551
-
552
- /* If there's no path, return. */
553
- if ( empty( $path ) ) {
554
- return;
555
- }
556
-
557
- // process default Cherry permalinks by own way
558
- if ( in_array( $path, array( 'tag', 'category' ) ) ) {
559
- return;
560
- }
561
-
562
- /* Get parent post by the path. */
563
- $post = get_page_by_path( $path );
564
-
565
- if ( ! empty( $post ) ) {
566
- $this->add_post_parents( $post->ID );
567
- } elseif ( is_null( $post ) ) {
568
-
569
- /* Separate post names into separate paths by '/'. */
570
- $path = trim( $path, '/' );
571
- preg_match_all( '/\/.*?\z/', $path, $matches );
572
-
573
- /* If matches are found for the path. */
574
- if ( isset( $matches ) ) {
575
-
576
- /* Reverse the array of matches to search for posts in the proper order. */
577
- $matches = array_reverse( $matches );
578
-
579
- /* Loop through each of the path matches. */
580
- foreach ( $matches as $match ) {
581
-
582
- /* If a match is found. */
583
- if ( isset( $match[0] ) ) {
584
-
585
- /* Get the parent post by the given path. */
586
- $path = str_replace( $match[0], '', $path );
587
- $post = get_page_by_path( trim( $path, '/' ) );
588
-
589
- /* If a parent post is found, set the $post_id and break out of the loop. */
590
- if ( ! empty( $post ) && 0 < $post->ID ) {
591
- $this->add_post_parents( $post->ID );
592
- break;
593
- }
594
- }
595
- }
596
- }
597
- }
598
- }
599
-
600
- /**
601
- * Build front page breadcrumb items.
602
- *
603
- * @since 1.0.0
604
- */
605
- public function add_front_page() {
606
-
607
- // do nothing if 'show_on_front' arg not true
608
- if ( true !== $this->args['show_on_front'] ) {
609
- return;
610
- }
611
-
612
- // always add network home link (if is multisite)
613
- $this->add_network_home_link();
614
-
615
- // if is paged front page - add home link
616
- if ( is_paged() || ( is_singular() && 1 < get_query_var( 'page' ) ) ) {
617
-
618
- $this->add_site_home_link();
619
-
620
- } else {
621
-
622
- $label = ( is_multisite() && true === $this->args['network'] )
623
- ? get_bloginfo( 'name' )
624
- : $this->args['labels']['home'];
625
-
626
- $this->_add_item( 'target_format', $label );
627
- }
628
-
629
- }
630
-
631
- /**
632
- * Add network home link for multisite.
633
- * Check if is multisite and add link to parent site to breadcrumb items.
634
- *
635
- * @since 1.0.0
636
- */
637
- public function add_network_home_link() {
638
-
639
- // do nothing if network support diasabled in args
640
- if ( true !== $this->args['network'] ) {
641
- return;
642
- }
643
-
644
- if ( ! is_multisite() ) {
645
- return;
646
- }
647
-
648
- if ( ! is_main_site() ) {
649
- return;
650
- }
651
-
652
- $url = esc_url( network_home_url() );
653
- $label = $this->args['labels']['home'];
654
-
655
- $this->_add_item( 'home_format', $label, $url );
656
-
657
- }
658
-
659
- /**
660
- * Add site home link.
661
- * Add site home link if is paged front page.
662
- *
663
- * @since 1.0.0
664
- */
665
- public function add_site_home_link() {
666
-
667
- $format = ( is_multisite() && ! is_main_site() && true === $this->args['network'] )
668
- ? 'link_format'
669
- : 'home_format';
670
-
671
- $url = esc_url( home_url( '/' ) );
672
- $label = ( is_multisite() && ! is_main_site() && true === $this->args['network'] )
673
- ? get_bloginfo( 'name' )
674
- : $this->args['labels']['home'];
675
-
676
- $this->_add_item( $format, $label, $url );
677
- }
678
-
679
- /**
680
- * Add blog page breadcrumbs item.
681
- *
682
- * @since 1.0.0
683
- */
684
- public function add_blog_page() {
685
-
686
- // Get the post ID and post.
687
- $post_id = get_queried_object_id();
688
- $post = get_page( $post_id );
689
-
690
- // If the post has parents, add them to the trail.
691
- if ( 0 < $post->post_parent ) {
692
- $this->add_post_parents( $post->post_parent );
693
- }
694
-
695
- $url = get_permalink( $post_id );
696
- $label = get_the_title( $post_id );
697
-
698
- if ( is_paged() ) {
699
- $this->_add_item( 'link_format', $label, $url );
700
- } elseif ( $label ) {
701
- $this->_add_item( 'target_format', $label );
702
- }
703
-
704
- }
705
-
706
- /**
707
- * Adds singular post items to the items array.
708
- *
709
- * @since 1.0.0
710
- */
711
- public function add_singular_items() {
712
-
713
- /* Get the queried post. */
714
- $post = get_queried_object();
715
- $post_id = get_queried_object_id();
716
-
717
- /* If the post has a parent, follow the parent trail. */
718
- if ( 0 < $post->post_parent ) {
719
- $this->add_post_parents( $post->post_parent );
720
- } else {
721
- /* If the post doesn't have a parent, get its hierarchy based off the post type. */
722
- $this->add_post_hierarchy( $post_id );
723
- }
724
-
725
- /* Display terms for specific post type taxonomy if requested. */
726
- $this->add_post_terms( $post_id );
727
-
728
- /* End with the post title. */
729
- if ( $post_title = single_post_title( '', false ) ) {
730
-
731
- if ( 1 < get_query_var( 'page' ) ) {
732
-
733
- $url = get_permalink( $post_id );
734
- $label = $post_title;
735
-
736
- $this->_add_item( 'link_format', $label, $url );
737
-
738
- }
739
-
740
- $label = $post_title;
741
- $this->_add_item( 'target_format', $label );
742
-
743
- }
744
- }
745
-
746
- /**
747
- * Adds a post's terms from a specific taxonomy to the items array.
748
- *
749
- * @since 1.0.0
750
- *
751
- * @param int $post_id The ID of the post to get the terms for.
752
- */
753
- public function add_post_terms( $post_id ) {
754
-
755
- if ( 'minified' == $this->args['path_type'] ) {
756
- return;
757
- }
758
-
759
- /* Get the post type. */
760
- $post_type = get_post_type( $post_id );
761
-
762
- /* Add the terms of the taxonomy for this post. */
763
- if ( ! empty( $this->args['post_taxonomy'][ $post_type ] ) ) {
764
-
765
- $post_terms = wp_get_post_terms( $post_id, $this->args['post_taxonomy'][ $post_type ] );
766
-
767
- if ( is_array( $post_terms ) && isset( $post_terms[0] ) && is_object( $post_terms[0] ) ) {
768
- $term_id = $post_terms[0]->term_id;
769
- $this->add_term_parents( $term_id, $this->args['post_taxonomy'][ $post_type ] );
770
- }
771
- }
772
- }
773
-
774
- /**
775
- * Gets post types by slug. This is needed because the get_post_types() function doesn't exactly
776
- * match the 'has_archive' argument when it's set as a string instead of a boolean.
777
- *
778
- * @since 1.0.0
779
- *
780
- * @param int $slug The post type archive slug to search for.
781
- */
782
- public function get_post_types_by_slug( $slug ) {
783
-
784
- $return = array();
785
-
786
- $post_types = get_post_types( array(), 'objects' );
787
-
788
- foreach ( $post_types as $type ) {
789
-
790
- if ( $slug === $type->has_archive || ( true === $type->has_archive && $slug === $type->rewrite['slug'] ) ) {
791
- $return[] = $type;
792
- }
793
- }
794
-
795
- return $return;
796
- }
797
-
798
- /**
799
- * Adds the items to the trail items array for taxonomy term archives.
800
- *
801
- * @since 1.0.0
802
- */
803
- public function add_term_archive_items() {
804
-
805
- global $wp_rewrite;
806
-
807
- /* Get some taxonomy and term variables. */
808
- $term = get_queried_object();
809
- $taxonomy = get_taxonomy( $term->taxonomy );
810
-
811
- /* If there are rewrite rules for the taxonomy. */
812
- if ( false !== $taxonomy->rewrite ) {
813
-
814
- $post_type_catched = false;
815
-
816
- /* If 'with_front' is true, dd $wp_rewrite->front to the trail. */
817
- if ( $taxonomy->rewrite['with_front'] && $wp_rewrite->front ) {
818
- $this->add_rewrite_front_items();
819
- }
820
-
821
- /* Get parent pages by path if they exist. */
822
- $this->add_path_parents( $taxonomy->rewrite['slug'] );
823
-
824
- /* Add post type archive if its 'has_archive' matches the taxonomy rewrite 'slug'. */
825
- if ( $taxonomy->rewrite['slug'] ) {
826
-
827
- $slug = trim( $taxonomy->rewrite['slug'], '/' );
828
-
829
- /**
830
- * Deals with the situation if the slug has a '/' between multiple strings. For
831
- * example, "movies/genres" where "movies" is the post type archive.
832
- */
833
- $matches = explode( '/', $slug );
834
-
835
- /* If matches are found for the path. */
836
- if ( isset( $matches ) ) {
837
-
838
- /* Reverse the array of matches to search for posts in the proper order. */
839
- $matches = array_reverse( $matches );
840
-
841
- /* Loop through each of the path matches. */
842
- foreach ( $matches as $match ) {
843
-
844
- /* If a match is found. */
845
- $slug = $match;
846
-
847
- /* Get public post types that match the rewrite slug. */
848
- $post_types = $this->get_post_types_by_slug( $match );
849
-
850
- if ( ! empty( $post_types ) ) {
851
-
852
- $post_type_object = $post_types[0];
853
-
854
- $url = get_post_type_archive_link( $post_type_object->name );
855
- /* Add support for a non-standard label of 'archive_title' (special use case). */
856
- $label = ! empty( $post_type_object->labels->archive_title )
857
- ? $post_type_object->labels->archive_title
858
- : $post_type_object->labels->name;
859
-
860
- /* Add the post type archive link to the trail. */
861
- $this->_add_item( 'link_format', $label, $url );
862
-
863
- $post_type_catched = true;
864
- /* Break out of the loop. */
865
- break;
866
- }
867
- }
868
- }
869
- }
870
-
871
- /* Add the post type archive link to the trail for custom post types */
872
- if ( ! $post_type_catched ) {
873
- $post_type = isset( $taxonomy->object_type[0] ) ? $taxonomy->object_type[0] : false;
874
-
875
- if ( $post_type && 'post' != $post_type ) {
876
- $post_type_object = get_post_type_object( $post_type );
877
-
878
- $url = get_post_type_archive_link( $post_type_object->name );
879
- /* Add support for a non-standard label of 'archive_title' (special use case). */
880
- $label = ! empty( $post_type_object->labels->archive_title )
881
- ? $post_type_object->labels->archive_title
882
- : $post_type_object->labels->name;
883
-
884
- $this->_add_item( 'link_format', $label, $url );
885
-
886
- }
887
- }
888
- }
889
-
890
- /* If the taxonomy is hierarchical, list its parent terms. */
891
- if ( is_taxonomy_hierarchical( $term->taxonomy ) && $term->parent ) {
892
- $this->add_term_parents( $term->parent, $term->taxonomy );
893
- }
894
-
895
- $label = single_term_title( '', false );
896
-
897
- /* Add the term name to the trail end. */
898
- if ( is_paged() ) {
899
-
900
- $url = esc_url( get_term_link( $term, $term->taxonomy ) );
901
- $this->_add_item( 'link_format', $label, $url );
902
-
903
- }
904
-
905
- $this->_add_item( 'target_format', $label );
906
-
907
- }
908
-
909
- /**
910
- * Adds the items to the trail items array for post type archives.
911
- *
912
- * @since 1.0.0
913
- */
914
- public function add_post_type_archive_items() {
915
-
916
- /* Get the post type object. */
917
- $post_type_object = get_post_type_object( get_query_var( 'post_type' ) );
918
-
919
- if ( false !== $post_type_object->rewrite ) {
920
-
921
- /* If 'with_front' is true, add $wp_rewrite->front to the trail. */
922
- if ( $post_type_object->rewrite['with_front'] ) {
923
- $this->add_rewrite_front_items();
924
- }
925
- }
926
-
927
- /* Add the post type [plural] name to the trail end. */
928
- if ( is_paged() ) {
929
-
930
- $url = esc_url( get_post_type_archive_link( $post_type_object->name ) );
931
- $label = post_type_archive_title( '', false );
932
-
933
- $this->_add_item( 'link_format', $label, $url );
934
-
935
- }
936
-
937
- $label = post_type_archive_title( '', false );
938
- $this->_add_item( 'target_format', $label );
939
-
940
- }
941
-
942
- /**
943
- * Adds the items to the trail items array for user (author) archives.
944
- *
945
- * @since 1.0.0
946
- */
947
- public function add_user_archive_items() {
948
- global $wp_rewrite;
949
-
950
- /* Add $wp_rewrite->front to the trail. */
951
- $this->add_rewrite_front_items();
952
-
953
- /* Get the user ID. */
954
- $user_id = get_query_var( 'author' );
955
-
956
- /* If $author_base exists, check for parent pages. */
957
- if ( ! empty( $wp_rewrite->author_base ) ) {
958
- $this->add_path_parents( $wp_rewrite->author_base );
959
- }
960
-
961
- $label = get_the_author_meta( 'display_name', $user_id );
962
-
963
- /* Add the author's display name to the trail end. */
964
- if ( is_paged() ) {
965
-
966
- $url = esc_url( get_author_posts_url( $user_id ) );
967
- $this->_add_item( 'link_format', $label, $url );
968
-
969
- }
970
-
971
- $this->_add_item( 'target_format', $label );
972
-
973
- }
974
-
975
- /**
976
- * Adds the items to the trail items array for minute + hour archives.
977
- *
978
- * @since 1.0.0
979
- */
980
- public function add_minute_hour_archive_items() {
981
-
982
- /* Add $wp_rewrite->front to the trail. */
983
- $this->add_rewrite_front_items();
984
-
985
- /* Add the minute + hour item. */
986
- $label = sprintf(
987
- $this->args['labels']['archive_minute_hour'],
988
- get_the_time( $this->args['date_labels']['archive_minute_hour'] )
989
- );
990
- $this->_add_item( 'target_format', $label );
991
-
992
- }
993
-
994
- /**
995
- * Adds the items to the trail items array for minute archives.
996
- *
997
- * @since 1.0.0
998
- */
999
- public function add_minute_archive_items() {
1000
-
1001
- /* Add $wp_rewrite->front to the trail. */
1002
- $this->add_rewrite_front_items();
1003
-
1004
- /* Add the minute item. */
1005
- $label = sprintf(
1006
- $this->args['labels']['archive_minute'],
1007
- get_the_time( $this->args['date_labels']['archive_minute'] )
1008
- );
1009
-
1010
- $this->_add_item( 'target_format', $label );
1011
-
1012
- }
1013
-
1014
- /**
1015
- * Adds the items to the trail items array for hour archives.
1016
- *
1017
- * @since 1.0.0
1018
- */
1019
- public function add_hour_archive_items() {
1020
-
1021
- /* Add $wp_rewrite->front to the trail. */
1022
- $this->add_rewrite_front_items();
1023
-
1024
- /* Add the hour item. */
1025
- $label = sprintf(
1026
- $this->args['labels']['archive_hour'],
1027
- get_the_time( $this->args['date_labels']['archive_hour'] )
1028
- );
1029
- $this->_add_item( 'target_format', $label );
1030
-
1031
- }
1032
-
1033
- /**
1034
- * Adds the items to the trail items array for day archives.
1035
- *
1036
- * @since 1.0.0
1037
- */
1038
- public function add_day_archive_items() {
1039
-
1040
- /* Add $wp_rewrite->front to the trail. */
1041
- $this->add_rewrite_front_items();
1042
-
1043
- /* Get year, month, and day. */
1044
- $year = sprintf(
1045
- $this->args['labels']['archive_year'],
1046
- get_the_time( $this->args['date_labels']['archive_year'] )
1047
- );
1048
-
1049
- $month = sprintf(
1050
- $this->args['labels']['archive_month'],
1051
- get_the_time( $this->args['date_labels']['archive_month'] )
1052
- );
1053
-
1054
- $day = sprintf(
1055
- $this->args['labels']['archive_day'],
1056
- get_the_time( $this->args['date_labels']['archive_day'] )
1057
- );
1058
-
1059
- /* Add the year and month items. */
1060
- $this->_add_item(
1061
- 'link_format',
1062
- $year,
1063
- get_year_link( get_the_time( 'Y' ) )
1064
- );
1065
-
1066
- $this->_add_item(
1067
- 'link_format',
1068
- $month,
1069
- get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) )
1070
- );
1071
-
1072
- /* Add the day item. */
1073
- if ( is_paged() ) {
1074
-
1075
- $this->_add_item(
1076
- 'link_format',
1077
- $day,
1078
- get_day_link( get_the_time( 'Y' ), get_the_time( 'm' ), get_the_time( 'd' ) )
1079
- );
1080
-
1081
- }
1082
-
1083
- $this->_add_item( 'target_format', $day );
1084
-
1085
- }
1086
-
1087
- /**
1088
- * Adds the items to the trail items array for week archives.
1089
- *
1090
- * @since 1.0.0
1091
- */
1092
- public function add_week_archive_items() {
1093
-
1094
- /* Add $wp_rewrite->front to the trail. */
1095
- $this->add_rewrite_front_items();
1096
-
1097
- /* Get the year and week. */
1098
- $year = sprintf(
1099
- $this->args['labels']['archive_year'],
1100
- get_the_time( $this->args['date_labels']['archive_year'] )
1101
- );
1102
- $week = sprintf(
1103
- $this->args['labels']['archive_week'],
1104
- get_the_time( $this->args['date_labels']['archive_week'] )
1105
- );
1106
-
1107
- /* Add the year item. */
1108
- $this->_add_item(
1109
- 'link_format',
1110
- $year,
1111
- get_year_link( get_the_time( 'Y' ) )
1112
- );
1113
-
1114
- /* Add the week item. */
1115
- if ( is_paged() ) {
1116
-
1117
- $this->_add_item(
1118
- 'link_format',
1119
- $week,
1120
- add_query_arg(
1121
- array( 'm' => get_the_time( 'Y' ), 'w' => get_the_time( 'W' ) ),
1122
- esc_url( home_url( '/' ) )
1123
- )
1124
- );
1125
-
1126
- }
1127
-
1128
- $this->_add_item( 'target_format', $week );
1129
-
1130
- }
1131
-
1132
- /**
1133
- * Adds the items to the trail items array for month archives.
1134
- *
1135
- * @since 1.0.0
1136
- */
1137
- public function add_month_archive_items() {
1138
-
1139
- /* Add $wp_rewrite->front to the trail. */
1140
- $this->add_rewrite_front_items();
1141
-
1142
- /* Get the year and month. */
1143
- $year = sprintf(
1144
- $this->args['labels']['archive_year'],
1145
- get_the_time( $this->args['date_labels']['archive_year'] )
1146
- );
1147
- $month = sprintf(
1148
- $this->args['labels']['archive_month'],
1149
- get_the_time( $this->args['date_labels']['archive_month'] )
1150
- );
1151
-
1152
- /* Add the year item. */
1153
- $this->_add_item(
1154
- 'link_format',
1155
- $year,
1156
- get_year_link( get_the_time( 'Y' ) )
1157
- );
1158
-
1159
- /* Add the month item. */
1160
- if ( is_paged() ) {
1161
- $this->_add_item(
1162
- 'link_format',
1163
- $month,
1164
- get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) )
1165
- );
1166
-
1167
- }
1168
-
1169
- $this->_add_item( 'target_format', $month );
1170
- }
1171
-
1172
- /**
1173
- * Adds the items to the trail items array for year archives.
1174
- *
1175
- * @since 1.0.0
1176
- */
1177
- public function add_year_archive_items() {
1178
-
1179
- /* Add $wp_rewrite->front to the trail. */
1180
- $this->add_rewrite_front_items();
1181
-
1182
- /* Get the year. */
1183
- $year = sprintf(
1184
- $this->args['labels']['archive_year'],
1185
- get_the_time( $this->args['date_labels']['archive_year'] )
1186
- );
1187
-
1188
- /* Add the year item. */
1189
- if ( is_paged() ) {
1190
- $this->_add_item(
1191
- 'link_format',
1192
- $year,
1193
- get_year_link( get_the_time( 'Y' ) )
1194
- );
1195
- }
1196
-
1197
- $this->_add_item( 'target_format', $year );
1198
-
1199
- }
1200
-
1201
- /**
1202
- * Adds the items to the trail items array for archives that don't have a more specific method
1203
- * defined in this class.
1204
- *
1205
- * @since 1.0.0
1206
- */
1207
- public function add_default_archive_items() {
1208
-
1209
- /* If this is a date-/time-based archive, add $wp_rewrite->front to the trail. */
1210
- if ( is_date() || is_time() ) {
1211
- $this->add_rewrite_front_items();
1212
- }
1213
-
1214
- $this->_add_item( 'target_format', $this->args['labels']['archives'] );
1215
-
1216
- }
1217
-
1218
- /**
1219
- * Adds the items to the trail items array for search results.
1220
- *
1221
- * @since 1.0.0
1222
- */
1223
- public function add_search_items() {
1224
-
1225
- $label = sprintf( $this->args['labels']['search'], get_search_query() );
1226
-
1227
- if ( is_paged() ) {
1228
- $url = get_search_link();
1229
- $this->_add_item( 'link_format', $label, $url );
1230
-
1231
- }
1232
-
1233
- $this->_add_item( 'target_format', $label );
1234
- }
1235
-
1236
- /**
1237
- * Adds the items to the trail items array for 404 pages.
1238
- *
1239
- * @since 1.0.0
1240
- * @return void
1241
- */
1242
- public function add_404_items() {
1243
-
1244
- $this->_add_item( 'target_format', $this->args['labels']['error_404'] );
1245
-
1246
- }
1247
-
1248
- /**
1249
- * Add post parents link to breadcrumbs items
1250
- *
1251
- * @since 1.0.0
1252
- *
1253
- * @param int $post_id first parent post ID.
1254
- */
1255
- public function add_post_parents( $post_id ) {
1256
-
1257
- $parents = array();
1258
-
1259
- while ( $post_id ) {
1260
-
1261
- $url = get_permalink( $post_id );
1262
- $label = get_the_title( $post_id );
1263
- $title = esc_attr( $label );
1264
-
1265
- $item = sprintf(
1266
- $this->args['link_format'],
1267
- $label, $this->css['link'], $title, $url
1268
- );
1269
-
1270
- $parents[] = sprintf( $this->args['item_format'], $item, esc_attr( $this->css['item'] ) );
1271
-
1272
- $post = get_post( $post_id );
1273
- // If there's no longer a post parent, break out of the loop.
1274
- if ( 0 >= $post->post_parent ) {
1275
- break;
1276
- }
1277
-
1278
- // Change the post ID to the parent post to continue looping.
1279
- $post_id = $post->post_parent;
1280
- }
1281
-
1282
- // Get the post hierarchy based off the final parent post.
1283
- $this->add_post_hierarchy( $post_id );
1284
- $this->add_post_terms( $post_id );
1285
-
1286
- // Merge the parent items into the items array.
1287
- $this->items = array_merge( $this->items, array_reverse( $parents ) );
1288
- }
1289
-
1290
- /**
1291
- * Adds a specific post's hierarchy to the items array.
1292
- * The hierarchy is determined by post type's
1293
- * rewrite arguments and whether it has an archive page.
1294
- *
1295
- * @since 1.0.0
1296
- *
1297
- * @param int $post_id The ID of the post to get the hierarchy for.
1298
- * @return void
1299
- */
1300
- public function add_post_hierarchy( $post_id ) {
1301
-
1302
- if ( 'minified' == $this->args['path_type'] ) {
1303
- return;
1304
- }
1305
-
1306
- // Get the post type.
1307
- $post_type = get_post_type( $post_id );
1308
- $post_type_object = get_post_type_object( $post_type );
1309
-
1310
- // If this is the 'post' post type, get the rewrite front items and map the rewrite tags.
1311
- if ( 'post' === $post_type ) {
1312
- // Get permalink specific breadcrumb items
1313
- $this->add_rewrite_front_items();
1314
- $this->map_rewrite_tags( $post_id, get_option( 'permalink_structure' ) );
1315
- } elseif ( false !== $post_type_object->rewrite ) {
1316
- // Add post type specific items
1317
- if ( isset( $post_type_object->rewrite['with_front'] ) && $post_type_object->rewrite['with_front'] ) {
1318
- $this->add_rewrite_front_items();
1319
- }
1320
- }
1321
-
1322
- /* If there's an archive page, add it to the trail. */
1323
- if ( ! empty( $post_type_object->has_archive ) ) {
1324
-
1325
- $url = get_post_type_archive_link( $post_type );
1326
- /* Add support for a non-standard label of 'archive_title' (special use case). */
1327
- $label = ! empty( $post_type_object->labels->archive_title )
1328
- ? $post_type_object->labels->archive_title
1329
- : $post_type_object->labels->name;
1330
-
1331
- $this->_add_item( 'link_format', $label, $url );
1332
- }
1333
- }
1334
-
1335
- /**
1336
- * Searches for term parents of hierarchical taxonomies.
1337
- * This function is similar to the WordPress function get_category_parents() but handles any type of taxonomy.
1338
- *
1339
- * @since 1.0.0
1340
- *
1341
- * @param int $term_id ID of the term to get the parents of.
1342
- * @param string $taxonomy Name of the taxonomy for the given term.
1343
- */
1344
- function add_term_parents( $term_id, $taxonomy ) {
1345
-
1346
- if ( 'minified' == $this->args['path_type'] ) {
1347
- return;
1348
- }
1349
-
1350
- /* Set up some default arrays. */
1351
- $parents = array();
1352
-
1353
- /* While there is a parent ID, add the parent term link to the $parents array. */
1354
- while ( $term_id ) {
1355
-
1356
- /* Get the parent term. */
1357
- $term = get_term( $term_id, $taxonomy );
1358
-
1359
- $url = get_term_link( $term_id, $taxonomy );
1360
- $label = $term->name;
1361
- $title = esc_attr( $label );
1362
-
1363
- $item = sprintf(
1364
- $this->args['link_format'],
1365
- $label, $this->css['link'], $title, $url
1366
- );
1367
-
1368
- $parents[] = sprintf( $this->args['item_format'], $item, esc_attr( $this->css['item'] ) );
1369
-
1370
- /* Set the parent term's parent as the parent ID. */
1371
- $term_id = $term->parent;
1372
- }
1373
-
1374
- /* If we have parent terms, reverse the array to put them in the proper order for the trail. */
1375
- if ( ! empty( $parents ) ) {
1376
- $this->items = array_merge( $this->items, array_reverse( $parents ) );
1377
- }
1378
- }
1379
-
1380
- /**
1381
- * Service function to process single tag item.
1382
- *
1383
- * @param string $tag Single tag.
1384
- * @param int $post_id Processed post ID.
1385
- */
1386
- function _process_single_tag( $tag, $post_id ) {
1387
-
1388
- global $post;
1389
-
1390
- /* Trim any '/' from the $tag. */
1391
- $tag = trim( $tag, '/' );
1392
-
1393
- /* If using the %year% tag, add a link to the yearly archive. */
1394
- if ( '%year%' == $tag ) {
1395
-
1396
- $url = get_year_link( get_the_time( 'Y', $post_id ) );
1397
- $label = sprintf(
1398
- $this->args['labels']['archive_year'],
1399
- get_the_time( $this->args['date_labels']['archive_year'] )
1400
- );
1401
-
1402
- $this->_add_item( 'link_format', $label, $url );
1403
-
1404
- /* If using the %monthnum% tag, add a link to the monthly archive. */
1405
- } elseif ( '%monthnum%' == $tag ) {
1406
-
1407
- $url = get_month_link( get_the_time( 'Y', $post_id ), get_the_time( 'm', $post_id ) );
1408
- $label = sprintf(
1409
- $this->args['labels']['archive_month'],
1410
- get_the_time( $this->args['date_labels']['archive_month'] )
1411
- );
1412
-
1413
- $this->_add_item( 'link_format', $label, $url );
1414
-
1415
- /* If using the %day% tag, add a link to the daily archive. */
1416
- } elseif ( '%day%' == $tag ) {
1417
-
1418
- $url = get_day_link(
1419
- get_the_time( 'Y', $post_id ), get_the_time( 'm', $post_id ), get_the_time( 'd', $post_id )
1420
- );
1421
- $label = sprintf(
1422
- $this->args['labels']['archive_day'],
1423
- get_the_time( $this->args['date_labels']['archive_day'] )
1424
- );
1425
-
1426
- $this->_add_item( 'link_format', $label, $url );
1427
-
1428
- /* If using the %author% tag, add a link to the post author archive. */
1429
- } elseif ( '%author%' == $tag ) {
1430
-
1431
- $url = get_author_posts_url( $post->post_author );
1432
- $label = get_the_author_meta( 'display_name', $post->post_author );
1433
-
1434
- $this->_add_item( 'link_format', $label, $url );
1435
-
1436
- /* If using the %category% tag, add a link to the first category archive to match permalinks. */
1437
- } elseif ( '%category%' == $tag ) {
1438
-
1439
- /* Force override terms in this post type. */
1440
- $this->args['post_taxonomy'][ $post->post_type ] = false;
1441
-
1442
- /* Get the post categories. */
1443
- $terms = get_the_category( $post_id );
1444
-
1445
- /* Check that categories were returned. */
1446
- if ( $terms ) {
1447
-
1448
- /* Sort the terms by ID and get the first category. */
1449
- usort( $terms, '_usort_terms_by_ID' );
1450
- $term = get_term( $terms[0], 'category' );
1451
-
1452
- /* If the category has a parent, add the hierarchy to the trail. */
1453
- if ( 0 < $term->parent ) {
1454
- $this->add_term_parents( $term->parent, 'category' );
1455
- }
1456
-
1457
- $url = get_term_link( $term, 'category' );
1458
- $label = $term->name;
1459
-
1460
- $this->_add_item( 'link_format', $label, $url );
1461
- }
1462
- }
1463
- }
1464
-
1465
-
1466
- /**
1467
- * Turns %tag% from permalink structures into usable links for the breadcrumb trail.
1468
- * This feels kind of hackish for now because we're checking for specific %tag% examples and only doing
1469
- * it for the 'post' post type. In the future, maybe it'll handle a wider variety of possibilities,
1470
- * especially for custom post types.
1471
- *
1472
- * @since 1.0.0
1473
- *
1474
- * @param int $post_id ID of the post whose parents we want.
1475
- * @param string $path Path of a potential parent page.
1476
- */
1477
- public function map_rewrite_tags( $post_id, $path ) {
1478
-
1479
- /* Get the post based on the post ID. */
1480
- $post = get_post( $post_id );
1481
-
1482
- /* If no post is returned, an error is returned, or the post does not have a 'post' post type, return. */
1483
- if ( empty( $post ) || is_wp_error( $post ) || 'post' !== $post->post_type ) {
1484
- return;
1485
- }
1486
-
1487
- /* Trim '/' from both sides of the $path. */
1488
- $path = trim( $path, '/' );
1489
-
1490
- /* Split the $path into an array of strings. */
1491
- $matches = explode( '/', $path );
1492
-
1493
- /* If matches are found for the path. */
1494
- if ( ! is_array( $matches ) ) {
1495
- return;
1496
- }
1497
-
1498
- /* Loop through each of the matches, adding each to the $trail array. */
1499
- foreach ( $matches as $match ) {
1500
- $this->_process_single_tag( $match, $post_id );
1501
- }
1502
- }
1503
-
1504
- /**
1505
- * Try to escape font icon from passed label and return it if found, or return label
1506
- *
1507
- * @since 1.0.0
1508
- * @param string $label Passed label.
1509
- * @param bool|string $fallback Optional fallback text to add inside icon tag.
1510
- * @return string
1511
- */
1512
- public function prepare_label( $label, $fallback = false ) {
1513
-
1514
- $prefix = 'icon:';
1515
-
1516
- // Return simple text label if icon not found
1517
- if ( false === strpos( $label, $prefix ) ) {
1518
- return $label;
1519
- }
1520
-
1521
- $label = str_replace( $prefix, '', $label );
1522
- $label = str_replace( '.', '', $label );
1523
-
1524
- if ( false !== $fallback ) {
1525
- $fallback = sprintf(
1526
- apply_filters( 'cherry_breadcrumbs_icon_fallback', '<span class="hidden">%s</span>', $fallback ),
1527
- esc_attr( $fallback )
1528
- );
1529
- }
1530
-
1531
- // Check if is Font Awesome icon
1532
- if ( 0 === strpos( $label, 'fa-' ) ) {
1533
- return sprintf( '<i class="fa %1$s">%2$s</i>', esc_attr( $label ), $fallback );
1534
- }
1535
-
1536
- // Return default icon
1537
- return sprintf(
1538
- apply_filters( 'cherry_breadcrumbs_default_icon_format', '<span class="%1$s">%2$s</span>', $label, $fallback ),
1539
- esc_attr( $label ), $fallback
1540
- );
1541
-
1542
- }
1543
-
1544
- /**
1545
- * Returns the instance.
1546
- *
1547
- * @since 1.0.0
1548
- * @return object
1549
- */
1550
- public static function get_instance( $core, $args ) {
1551
-
1552
- // If the single instance hasn't been set, set it now.
1553
- if ( null == self::$instance ) {
1554
- self::$instance = new self( $core, $args );
1555
- }
1556
-
1557
- return self::$instance;
1558
- }
1559
- }
1560
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-customizer/assets/fonts/google.json DELETED
@@ -1,15622 +0,0 @@
1
- {
2
- "kind": "webfonts#webfontList",
3
- "items": [
4
- {
5
- "kind": "webfonts#webfont",
6
- "family": "ABeeZee",
7
- "category": "sans-serif",
8
- "variants": [
9
- "regular",
10
- "italic"
11
- ],
12
- "subsets": [
13
- "latin"
14
- ],
15
- "version": "v9",
16
- "lastModified": "2016-09-29",
17
- "files": {
18
- "regular": "http://fonts.gstatic.com/s/abeezee/v9/mE5BOuZKGln_Ex0uYKpIaw.ttf",
19
- "italic": "http://fonts.gstatic.com/s/abeezee/v9/kpplLynmYgP0YtlJA3atRw.ttf"
20
- }
21
- },
22
- {
23
- "kind": "webfonts#webfont",
24
- "family": "Abel",
25
- "category": "sans-serif",
26
- "variants": [
27
- "regular"
28
- ],
29
- "subsets": [
30
- "latin"
31
- ],
32
- "version": "v6",
33
- "lastModified": "2016-09-29",
34
- "files": {
35
- "regular": "http://fonts.gstatic.com/s/abel/v6/RpUKfqNxoyNe_ka23bzQ2A.ttf"
36
- }
37
- },
38
- {
39
- "kind": "webfonts#webfont",
40
- "family": "Abhaya Libre",
41
- "category": "serif",
42
- "variants": [
43
- "regular",
44
- "500",
45
- "600",
46
- "700",
47
- "800"
48
- ],
49
- "subsets": [
50
- "sinhala",
51
- "latin-ext",
52
- "latin"
53
- ],
54
- "version": "v1",
55
- "lastModified": "2016-10-06",
56
- "files": {
57
- "regular": "http://fonts.gstatic.com/s/abhayalibre/v1/zTLc5Jxv6yvb1nHyqBasVy3USBnSvpkopQaUR-2r7iU.ttf",
58
- "500": "http://fonts.gstatic.com/s/abhayalibre/v1/wBjdF6T34NCo7wQYXgzrc5MQuUSAwdHsY8ov_6tk1oA.ttf",
59
- "600": "http://fonts.gstatic.com/s/abhayalibre/v1/wBjdF6T34NCo7wQYXgzrc2v8CylhIUtwUiYO7Z2wXbE.ttf",
60
- "700": "http://fonts.gstatic.com/s/abhayalibre/v1/wBjdF6T34NCo7wQYXgzrc0D2ttfZwueP-QU272T9-k4.ttf",
61
- "800": "http://fonts.gstatic.com/s/abhayalibre/v1/wBjdF6T34NCo7wQYXgzrc_qsay_1ZmRGmC8pVRdIfAg.ttf"
62
- }
63
- },
64
- {
65
- "kind": "webfonts#webfont",
66
- "family": "Abril Fatface",
67
- "category": "display",
68
- "variants": [
69
- "regular"
70
- ],
71
- "subsets": [
72
- "latin-ext",
73
- "latin"
74
- ],
75
- "version": "v8",
76
- "lastModified": "2016-05-31",
77
- "files": {
78
- "regular": "http://fonts.gstatic.com/s/abrilfatface/v8/X1g_KwGeBV3ajZIXQ9VnDojjx0o0jr6fNXxPgYh_a8Q.ttf"
79
- }
80
- },
81
- {
82
- "kind": "webfonts#webfont",
83
- "family": "Aclonica",
84
- "category": "sans-serif",
85
- "variants": [
86
- "regular"
87
- ],
88
- "subsets": [
89
- "latin"
90
- ],
91
- "version": "v6",
92
- "lastModified": "2016-10-05",
93
- "files": {
94
- "regular": "http://fonts.gstatic.com/s/aclonica/v6/M6pHZMPwK3DiBSlo3jwAKQ.ttf"
95
- }
96
- },
97
- {
98
- "kind": "webfonts#webfont",
99
- "family": "Acme",
100
- "category": "sans-serif",
101
- "variants": [
102
- "regular"
103
- ],
104
- "subsets": [
105
- "latin"
106
- ],
107
- "version": "v5",
108
- "lastModified": "2016-05-31",
109
- "files": {
110
- "regular": "http://fonts.gstatic.com/s/acme/v5/-J6XNtAHPZBEbsifCdBt-g.ttf"
111
- }
112
- },
113
- {
114
- "kind": "webfonts#webfont",
115
- "family": "Actor",
116
- "category": "sans-serif",
117
- "variants": [
118
- "regular"
119
- ],
120
- "subsets": [
121
- "latin"
122
- ],
123
- "version": "v6",
124
- "lastModified": "2016-06-07",
125
- "files": {
126
- "regular": "http://fonts.gstatic.com/s/actor/v6/ugMf40CrRK6Jf6Yz_xNSmQ.ttf"
127
- }
128
- },
129
- {
130
- "kind": "webfonts#webfont",
131
- "family": "Adamina",
132
- "category": "serif",
133
- "variants": [
134
- "regular"
135
- ],
136
- "subsets": [
137
- "latin"
138
- ],
139
- "version": "v8",
140
- "lastModified": "2016-05-31",
141
- "files": {
142
- "regular": "http://fonts.gstatic.com/s/adamina/v8/RUQfOodOMiVVYqFZcSlT9w.ttf"
143
- }
144
- },
145
- {
146
- "kind": "webfonts#webfont",
147
- "family": "Advent Pro",
148
- "category": "sans-serif",
149
- "variants": [
150
- "100",
151
- "200",
152
- "300",
153
- "regular",
154
- "500",
155
- "600",
156
- "700"
157
- ],
158
- "subsets": [
159
- "latin-ext",
160
- "greek",
161
- "latin"
162
- ],
163
- "version": "v4",
164
- "lastModified": "2016-06-07",
165
- "files": {
166
- "100": "http://fonts.gstatic.com/s/adventpro/v4/87-JOpSUecTG50PBYK4ysi3USBnSvpkopQaUR-2r7iU.ttf",
167
- "200": "http://fonts.gstatic.com/s/adventpro/v4/URTSSjIp0Wr-GrjxFdFWnGeudeTO44zf-ht3k-KNzwg.ttf",
168
- "300": "http://fonts.gstatic.com/s/adventpro/v4/sJaBfJYSFgoB80OL1_66m0eOrDcLawS7-ssYqLr2Xp4.ttf",
169
- "regular": "http://fonts.gstatic.com/s/adventpro/v4/1NxMBeKVcNNH2H46AUR3wfesZW2xOQ-xsNqO47m55DA.ttf",
170
- "500": "http://fonts.gstatic.com/s/adventpro/v4/7kBth2-rT8tP40RmMMXMLJp-63r6doWhTEbsfBIRJ7A.ttf",
171
- "600": "http://fonts.gstatic.com/s/adventpro/v4/3Jo-2maCzv2QLzQBzaKHV_pTEJqju4Hz1txDWij77d4.ttf",
172
- "700": "http://fonts.gstatic.com/s/adventpro/v4/M4I6QiICt-ey_wZTpR2gKwJKKGfqHaYFsRG-T3ceEVo.ttf"
173
- }
174
- },
175
- {
176
- "kind": "webfonts#webfont",
177
- "family": "Aguafina Script",
178
- "category": "handwriting",
179
- "variants": [
180
- "regular"
181
- ],
182
- "subsets": [
183
- "latin-ext",
184
- "latin"
185
- ],
186
- "version": "v5",
187
- "lastModified": "2016-05-31",
188
- "files": {
189
- "regular": "http://fonts.gstatic.com/s/aguafinascript/v5/65g7cgMtMGnNlNyq_Z6CvMxLhO8OSNnfAp53LK1_iRs.ttf"
190
- }
191
- },
192
- {
193
- "kind": "webfonts#webfont",
194
- "family": "Akronim",
195
- "category": "display",
196
- "variants": [
197
- "regular"
198
- ],
199
- "subsets": [
200
- "latin-ext",
201
- "latin"
202
- ],
203
- "version": "v5",
204
- "lastModified": "2016-05-31",
205
- "files": {
206
- "regular": "http://fonts.gstatic.com/s/akronim/v5/qA0L2CSArk3tuOWE1AR1DA.ttf"
207
- }
208
- },
209
- {
210
- "kind": "webfonts#webfont",
211
- "family": "Aladin",
212
- "category": "handwriting",
213
- "variants": [
214
- "regular"
215
- ],
216
- "subsets": [
217
- "latin-ext",
218
- "latin"
219
- ],
220
- "version": "v5",
221
- "lastModified": "2016-05-31",
222
- "files": {
223
- "regular": "http://fonts.gstatic.com/s/aladin/v5/PyuJ5cVHkduO0j5fAMKvAA.ttf"
224
- }
225
- },
226
- {
227
- "kind": "webfonts#webfont",
228
- "family": "Aldrich",
229
- "category": "sans-serif",
230
- "variants": [
231
- "regular"
232
- ],
233
- "subsets": [
234
- "latin"
235
- ],
236
- "version": "v6",
237
- "lastModified": "2016-05-31",
238
- "files": {
239
- "regular": "http://fonts.gstatic.com/s/aldrich/v6/kMMW1S56gFx7RP_mW1g-Eg.ttf"
240
- }
241
- },
242
- {
243
- "kind": "webfonts#webfont",
244
- "family": "Alef",
245
- "category": "sans-serif",
246
- "variants": [
247
- "regular",
248
- "700"
249
- ],
250
- "subsets": [
251
- "hebrew",
252
- "latin"
253
- ],
254
- "version": "v6",
255
- "lastModified": "2016-06-07",
256
- "files": {
257
- "regular": "http://fonts.gstatic.com/s/alef/v6/ENvZ_P0HBDQxNZYCQO0lUA.ttf",
258
- "700": "http://fonts.gstatic.com/s/alef/v6/VDgZJhEwudtOzOFQpZ8MEA.ttf"
259
- }
260
- },
261
- {
262
- "kind": "webfonts#webfont",
263
- "family": "Alegreya",
264
- "category": "serif",
265
- "variants": [
266
- "regular",
267
- "italic",
268
- "700",
269
- "700italic",
270
- "900",
271
- "900italic"
272
- ],
273
- "subsets": [
274
- "latin-ext",
275
- "latin"
276
- ],
277
- "version": "v7",
278
- "lastModified": "2016-05-31",
279
- "files": {
280
- "regular": "http://fonts.gstatic.com/s/alegreya/v7/62J3atXd6bvMU4qO_ca-eA.ttf",
281
- "italic": "http://fonts.gstatic.com/s/alegreya/v7/cbshnQGxwmlHBjUil7DaIfesZW2xOQ-xsNqO47m55DA.ttf",
282
- "700": "http://fonts.gstatic.com/s/alegreya/v7/5oZtdI5-wQwgAFrd9erCsaCWcynf_cDxXwCLxiixG1c.ttf",
283
- "700italic": "http://fonts.gstatic.com/s/alegreya/v7/IWi8e5bpnqhMRsZKTcTUWgJKKGfqHaYFsRG-T3ceEVo.ttf",
284
- "900": "http://fonts.gstatic.com/s/alegreya/v7/oQeMxX-vxGImzDgX6nxA7KCWcynf_cDxXwCLxiixG1c.ttf",
285
- "900italic": "http://fonts.gstatic.com/s/alegreya/v7/-L71QLH_XqgYWaI1GbOVhp0EAVxt0G0biEntp43Qt6E.ttf"
286
- }
287
- },
288
- {
289
- "kind": "webfonts#webfont",
290
- "family": "Alegreya SC",
291
- "category": "serif",
292
- "variants": [
293
- "regular",
294
- "italic",
295
- "700",
296
- "700italic",
297
- "900",
298
- "900italic"
299
- ],
300
- "subsets": [
301
- "latin-ext",
302
- "latin"
303
- ],
304
- "version": "v6",
305
- "lastModified": "2016-05-31",
306
- "files": {
307
- "regular": "http://fonts.gstatic.com/s/alegreyasc/v6/3ozeFnTbygMK6PfHh8B-iqCWcynf_cDxXwCLxiixG1c.ttf",
308
- "italic": "http://fonts.gstatic.com/s/alegreyasc/v6/GOqmv3FLsJ2r6ZALMZVBmkeOrDcLawS7-ssYqLr2Xp4.ttf",
309
- "700": "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUq3e1Pd76Vl7zRpE7NLJQ7XU.ttf",
310
- "700italic": "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6c_zJjSACmk0BRPxQqhnNLU.ttf",
311
- "900": "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUqyenaqEuufTBk9XMKnKmgDA.ttf",
312
- "900italic": "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6U_yTOUGsoC54csJe1b-IRw.ttf"
313
- }
314
- },
315
- {
316
- "kind": "webfonts#webfont",
317
- "family": "Alegreya Sans",
318
- "category": "sans-serif",
319
- "variants": [
320
- "100",
321
- "100italic",
322
- "300",
323
- "300italic",
324
- "regular",
325
- "italic",
326
- "500",
327
- "500italic",
328
- "700",
329
- "700italic",
330
- "800",
331
- "800italic",
332
- "900",
333
- "900italic"
334
- ],
335
- "subsets": [
336
- "latin-ext",
337
- "latin",
338
- "vietnamese"
339
- ],
340
- "version": "v3",
341
- "lastModified": "2016-06-07",
342
- "files": {
343
- "100": "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PJFGFO4uyVFMfB6LZsii7kI.ttf",
344
- "100italic": "http://fonts.gstatic.com/s/alegreyasans/v3/gRkSP2lBpqoMTVxg7DmVn2cDnjsrnI9_xJ-5gnBaHsE.ttf",
345
- "300": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acB1LjARzAvdqa1uQC32v70.ttf",
346
- "300italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CnfqlVoxTUFFx1C8tBqmbcg.ttf",
347
- "regular": "http://fonts.gstatic.com/s/alegreyasans/v3/KYNzioYhDai7mTMnx_gDgn8f0n03UdmQgF_CLvNR2vg.ttf",
348
- "italic": "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PD4G9C9ttb0Oz5Cvf0qOitE.ttf",
349
- "500": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aQqQmZ7VjhwksfpNVG0pqGc.ttf",
350
- "500italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9Cs7DCVO6wo6i5LKIyZDzK40.ttf",
351
- "700": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aVCbmAUID8LN-q3pJpOk3Ys.ttf",
352
- "700italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CpF66r9C4AnxxlBlGd7xY4g.ttf",
353
- "800": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acxnD5BewVtRRHHljCwR2bM.ttf",
354
- "800italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CicOAJ_9MkLPbDmrtXDPbIU.ttf",
355
- "900": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aW42xlVP-j5dagE7-AU2zwg.ttf",
356
- "900italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9ChRaDUI9aE8-k7PrIG2iiuo.ttf"
357
- }
358
- },
359
- {
360
- "kind": "webfonts#webfont",
361
- "family": "Alegreya Sans SC",
362
- "category": "sans-serif",
363
- "variants": [
364
- "100",
365
- "100italic",
366
- "300",
367
- "300italic",
368
- "regular",
369
- "italic",
370
- "500",
371
- "500italic",
372
- "700",
373
- "700italic",
374
- "800",
375
- "800italic",
376
- "900",
377
- "900italic"
378
- ],
379
- "subsets": [
380
- "latin-ext",
381
- "latin",
382
- "vietnamese"
383
- ],
384
- "version": "v3",
385
- "lastModified": "2016-06-07",
386
- "files": {
387
- "100": "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kVnzStfdnFU-MXbO84aBs_M.ttf",
388
- "100italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/qG3gA9iy5RpXMH4crZboqqakMVR0XlJhO7VdJ8yYvA4.ttf",
389
- "300": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46-1IqtfxJspFjzJp0SaQRcI.ttf",
390
- "300italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0CnTKaH808trtzttbEg4yVA.ttf",
391
- "regular": "http://fonts.gstatic.com/s/alegreyasanssc/v3/6kgb6ZvOagoVIRZyl8XV-EklWX-XdLVn1WTiuGuvKIU.ttf",
392
- "italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kTfqo69HNOlCNZvbwAmUtiA.ttf",
393
- "500": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46_hHTluI57wqxl55RvSYo3s.ttf",
394
- "500italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0NqVvxKdFVwqwzilqfVd39U.ttf",
395
- "700": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR4600aId5t1FC-xZ8nmpa_XLk.ttf",
396
- "700italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IBYn3VD6xMEnodOh8pnFw4.ttf",
397
- "800": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46wQgSHD3Lo1Mif2Wkk5swWA.ttf",
398
- "800italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0HStmCm6Rs90XeztCALm0H8.ttf",
399
- "900": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR461Rf9EWUSEX_PR1d_gLKfpM.ttf",
400
- "900italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IvtwEfTCJoOJugANj-jWDI.ttf"
401
- }
402
- },
403
- {
404
- "kind": "webfonts#webfont",
405
- "family": "Alex Brush",
406
- "category": "handwriting",
407
- "variants": [
408
- "regular"
409
- ],
410
- "subsets": [
411
- "latin-ext",
412
- "latin"
413
- ],
414
- "version": "v6",
415
- "lastModified": "2016-05-31",
416
- "files": {
417
- "regular": "http://fonts.gstatic.com/s/alexbrush/v6/ooh3KJFbKJSUoIRWfiu8o_esZW2xOQ-xsNqO47m55DA.ttf"
418
- }
419
- },
420
- {
421
- "kind": "webfonts#webfont",
422
- "family": "Alfa Slab One",
423
- "category": "display",
424
- "variants": [
425
- "regular"
426
- ],
427
- "subsets": [
428
- "latin"
429
- ],
430
- "version": "v5",
431
- "lastModified": "2016-05-31",
432
- "files": {
433
- "regular": "http://fonts.gstatic.com/s/alfaslabone/v5/Qx6FPcitRwTC_k88tLPc-Yjjx0o0jr6fNXxPgYh_a8Q.ttf"
434
- }
435
- },
436
- {
437
- "kind": "webfonts#webfont",
438
- "family": "Alice",
439
- "category": "serif",
440
- "variants": [
441
- "regular"
442
- ],
443
- "subsets": [
444
- "latin"
445
- ],
446
- "version": "v7",
447
- "lastModified": "2016-06-07",
448
- "files": {
449
- "regular": "http://fonts.gstatic.com/s/alice/v7/wZTAfivekBqIg-rk63nFvQ.ttf"
450
- }
451
- },
452
- {
453
- "kind": "webfonts#webfont",
454
- "family": "Alike",
455
- "category": "serif",
456
- "variants": [
457
- "regular"
458
- ],
459
- "subsets": [
460
- "latin"
461
- ],
462
- "version": "v8",
463
- "lastModified": "2016-05-31",
464
- "files": {
465
- "regular": "http://fonts.gstatic.com/s/alike/v8/Ho8YpRKNk_202fwDiGNIyw.ttf"
466
- }
467
- },
468
- {
469
- "kind": "webfonts#webfont",
470
- "family": "Alike Angular",
471
- "category": "serif",
472
- "variants": [
473
- "regular"
474
- ],
475
- "subsets": [
476
- "latin"
477
- ],
478
- "version": "v6",
479
- "lastModified": "2016-05-31",
480
- "files": {
481
- "regular": "http://fonts.gstatic.com/s/alikeangular/v6/OpeCu4xxI3qO1C7CZcJtPT3XH2uEnVI__ynTBvNyki8.ttf"
482
- }
483
- },
484
- {
485
- "kind": "webfonts#webfont",
486
- "family": "Allan",
487
- "category": "display",
488
- "variants": [
489
- "regular",
490
- "700"
491
- ],
492
- "subsets": [
493
- "latin-ext",
494
- "latin"
495
- ],
496
- "version": "v7",
497
- "lastModified": "2016-05-31",
498
- "files": {
499
- "regular": "http://fonts.gstatic.com/s/allan/v7/T3lemhgZmLQkQI2Qc2bQHA.ttf",
500
- "700": "http://fonts.gstatic.com/s/allan/v7/zSxQiwo7wgnr7KkMXhSiag.ttf"
501
- }
502
- },
503
- {
504
- "kind": "webfonts#webfont",
505
- "family": "Allerta",
506
- "category": "sans-serif",
507
- "variants": [
508
- "regular"
509
- ],
510
- "subsets": [
511
- "latin"
512
- ],
513
- "version": "v7",
514
- "lastModified": "2016-06-07",
515
- "files": {
516
- "regular": "http://fonts.gstatic.com/s/allerta/v7/s9FOEuiJFTNbMe06ifzV8g.ttf"
517
- }
518
- },
519
- {
520
- "kind": "webfonts#webfont",
521
- "family": "Allerta Stencil",
522
- "category": "sans-serif",
523
- "variants": [
524
- "regular"
525
- ],
526
- "subsets": [
527
- "latin"
528
- ],
529
- "version": "v7",
530
- "lastModified": "2016-06-07",
531
- "files": {
532
- "regular": "http://fonts.gstatic.com/s/allertastencil/v7/CdSZfRtHbQrBohqmzSdDYFf2eT4jUldwg_9fgfY_tHc.ttf"
533
- }
534
- },
535
- {
536
- "kind": "webfonts#webfont",
537
- "family": "Allura",
538
- "category": "handwriting",
539
- "variants": [
540
- "regular"
541
- ],
542
- "subsets": [
543
- "latin-ext",
544
- "latin"
545
- ],
546
- "version": "v4",
547
- "lastModified": "2016-05-31",
548
- "files": {
549
- "regular": "http://fonts.gstatic.com/s/allura/v4/4hcqgZanyuJ2gMYWffIR6A.ttf"
550
- }
551
- },
552
- {
553
- "kind": "webfonts#webfont",
554
- "family": "Almendra",
555
- "category": "serif",
556
- "variants": [
557
- "regular",
558
- "italic",
559
- "700",
560
- "700italic"
561
- ],
562
- "subsets": [
563
- "latin-ext",
564
- "latin"
565
- ],
566
- "version": "v8",
567
- "lastModified": "2016-05-31",
568
- "files": {
569
- "regular": "http://fonts.gstatic.com/s/almendra/v8/PDpbB-ZF7deXAAEYPkQOeg.ttf",
570
- "italic": "http://fonts.gstatic.com/s/almendra/v8/CNWLyiDucqVKVgr4EMidi_esZW2xOQ-xsNqO47m55DA.ttf",
571
- "700": "http://fonts.gstatic.com/s/almendra/v8/ZpLdQMj7Q2AFio4nNO6A76CWcynf_cDxXwCLxiixG1c.ttf",
572
- "700italic": "http://fonts.gstatic.com/s/almendra/v8/-tXHKMcnn6FqrhJV3l1e3QJKKGfqHaYFsRG-T3ceEVo.ttf"
573
- }
574
- },
575
- {
576
- "kind": "webfonts#webfont",
577
- "family": "Almendra Display",
578
- "category": "display",
579
- "variants": [
580
- "regular"
581
- ],
582
- "subsets": [
583
- "latin-ext",
584
- "latin"
585
- ],
586
- "version": "v6",
587
- "lastModified": "2016-05-31",
588
- "files": {
589
- "regular": "http://fonts.gstatic.com/s/almendradisplay/v6/2Zuu97WJ_ez-87yz5Ai8fF6uyC_qD11hrFQ6EGgTJWI.ttf"
590
- }
591
- },
592
- {
593
- "kind": "webfonts#webfont",
594
- "family": "Almendra SC",
595
- "category": "serif",
596
- "variants": [
597
- "regular"
598
- ],
599
- "subsets": [
600
- "latin"
601
- ],
602
- "version": "v6",
603
- "lastModified": "2016-05-31",
604
- "files": {
605
- "regular": "http://fonts.gstatic.com/s/almendrasc/v6/IuiLd8Fm9I6raSalxMoWeaCWcynf_cDxXwCLxiixG1c.ttf"
606
- }
607
- },
608
- {
609
- "kind": "webfonts#webfont",
610
- "family": "Amarante",
611
- "category": "display",
612
- "variants": [
613
- "regular"
614
- ],
615
- "subsets": [
616
- "latin-ext",
617
- "latin"
618
- ],
619
- "version": "v4",
620
- "lastModified": "2016-06-07",
621
- "files": {
622
- "regular": "http://fonts.gstatic.com/s/amarante/v4/2dQHjIBWSpydit5zkJZnOw.ttf"
623
- }
624
- },
625
- {
626
- "kind": "webfonts#webfont",
627
- "family": "Amaranth",
628
- "category": "sans-serif",
629
- "variants": [
630
- "regular",
631
- "italic",
632
- "700",
633
- "700italic"
634
- ],
635
- "subsets": [
636
- "latin"
637
- ],
638
- "version": "v6",
639
- "lastModified": "2016-06-07",
640
- "files": {
641
- "regular": "http://fonts.gstatic.com/s/amaranth/v6/7VcBog22JBHsHXHdnnycTA.ttf",
642
- "italic": "http://fonts.gstatic.com/s/amaranth/v6/UrJlRY9LcVERJSvggsdBqPesZW2xOQ-xsNqO47m55DA.ttf",
643
- "700": "http://fonts.gstatic.com/s/amaranth/v6/j5OFHqadfxyLnQRxFeox6qCWcynf_cDxXwCLxiixG1c.ttf",
644
- "700italic": "http://fonts.gstatic.com/s/amaranth/v6/BHyuYFj9nqLFNvOvGh0xTwJKKGfqHaYFsRG-T3ceEVo.ttf"
645
- }
646
- },
647
- {
648
- "kind": "webfonts#webfont",
649
- "family": "Amatic SC",
650
- "category": "handwriting",
651
- "variants": [
652
- "regular",
653
- "700"
654
- ],
655
- "subsets": [
656
- "latin-ext",
657
- "latin"
658
- ],
659
- "version": "v8",
660
- "lastModified": "2016-05-31",
661
- "files": {
662
- "regular": "http://fonts.gstatic.com/s/amaticsc/v8/MldbRWLFytvqxU1y81xSVg.ttf",
663
- "700": "http://fonts.gstatic.com/s/amaticsc/v8/IDnkRTPGcrSVo50UyYNK7y3USBnSvpkopQaUR-2r7iU.ttf"
664
- }
665
- },
666
- {
667
- "kind": "webfonts#webfont",
668
- "family": "Amatica SC",
669
- "category": "display",
670
- "variants": [
671
- "regular",
672
- "700"
673
- ],
674
- "subsets": [
675
- "latin-ext",
676
- "hebrew",
677
- "latin"
678
- ],
679
- "version": "v1",
680
- "lastModified": "2016-06-20",
681
- "files": {
682
- "regular": "http://fonts.gstatic.com/s/amaticasc/v1/f9SWSy9DLsJV2etvm5rwGPesZW2xOQ-xsNqO47m55DA.ttf",
683
- "700": "http://fonts.gstatic.com/s/amaticasc/v1/nFmSxyAMfCP_5xGDJ4j5TgJKKGfqHaYFsRG-T3ceEVo.ttf"
684
- }
685
- },
686
- {
687
- "kind": "webfonts#webfont",
688
- "family": "Amethysta",
689
- "category": "serif",
690
- "variants": [
691
- "regular"
692
- ],
693
- "subsets": [
694
- "latin"
695
- ],
696
- "version": "v4",
697
- "lastModified": "2016-05-31",
698
- "files": {
699
- "regular": "http://fonts.gstatic.com/s/amethysta/v4/1jEo9tOFIJDolAUpBnWbnA.ttf"
700
- }
701
- },
702
- {
703
- "kind": "webfonts#webfont",
704
- "family": "Amiko",
705
- "category": "sans-serif",
706
- "variants": [
707
- "regular",
708
- "600",
709
- "700"
710
- ],
711
- "subsets": [
712
- "latin-ext",
713
- "devanagari",
714
- "latin"
715
- ],
716
- "version": "v1",
717
- "lastModified": "2016-06-20",
718
- "files": {
719
- "regular": "http://fonts.gstatic.com/s/amiko/v1/A7bjc3cOLJtGgpPGnxyHsw.ttf",
720
- "600": "http://fonts.gstatic.com/s/amiko/v1/BaZst4RZ4sDyD3mH-BfVaA.ttf",
721
- "700": "http://fonts.gstatic.com/s/amiko/v1/6syx43mQ07VvOmpFc0G9Lg.ttf"
722
- }
723
- },
724
- {
725
- "kind": "webfonts#webfont",
726
- "family": "Amiri",
727
- "category": "serif",
728
- "variants": [
729
- "regular",
730
- "italic",
731
- "700",
732
- "700italic"
733
- ],
734
- "subsets": [
735
- "arabic",
736
- "latin"
737
- ],
738
- "version": "v7",
739
- "lastModified": "2016-05-31",
740
- "files": {
741
- "regular": "http://fonts.gstatic.com/s/amiri/v7/ATARrPmSew75SlpOw2YABQ.ttf",
742
- "italic": "http://fonts.gstatic.com/s/amiri/v7/3t1yTQlLUXBw8htrqlXBrw.ttf",
743
- "700": "http://fonts.gstatic.com/s/amiri/v7/WQsR_moz-FNqVwGYgptqiA.ttf",
744
- "700italic": "http://fonts.gstatic.com/s/amiri/v7/uF8aNEyD0bxMeTBg9bFDSPesZW2xOQ-xsNqO47m55DA.ttf"
745
- }
746
- },
747
- {
748
- "kind": "webfonts#webfont",
749
- "family": "Amita",
750
- "category": "handwriting",
751
- "variants": [
752
- "regular",
753
- "700"
754
- ],
755
- "subsets": [
756
- "latin-ext",
757
- "devanagari",
758
- "latin"
759
- ],
760
- "version": "v1",
761
- "lastModified": "2016-05-31",
762
- "files": {
763
- "regular": "http://fonts.gstatic.com/s/amita/v1/RhdhGBXSJqkHo6g7miTEcQ.ttf",
764
- "700": "http://fonts.gstatic.com/s/amita/v1/cIYA2Lzp7l2pcGsqpUidBg.ttf"
765
- }
766
- },
767
- {
768
- "kind": "webfonts#webfont",
769
- "family": "Anaheim",
770
- "category": "sans-serif",
771
- "variants": [
772
- "regular"
773
- ],
774
- "subsets": [
775
- "latin-ext",
776
- "latin"
777
- ],
778
- "version": "v4",
779
- "lastModified": "2016-06-07",
780
- "files": {
781
- "regular": "http://fonts.gstatic.com/s/anaheim/v4/t-z8aXHMpgI2gjN_rIflKA.ttf"
782
- }
783
- },
784
- {
785
- "kind": "webfonts#webfont",
786
- "family": "Andada",
787
- "category": "serif",
788
- "variants": [
789
- "regular"
790
- ],
791
- "subsets": [
792
- "latin-ext",
793
- "latin"
794
- ],
795
- "version": "v7",
796
- "lastModified": "2016-05-31",
797
- "files": {
798
- "regular": "http://fonts.gstatic.com/s/andada/v7/rSFaDqNNQBRw3y19MB5Y4w.ttf"
799
- }
800
- },
801
- {
802
- "kind": "webfonts#webfont",
803
- "family": "Andika",
804
- "category": "sans-serif",
805
- "variants": [
806
- "regular"
807
- ],
808
- "subsets": [
809
- "cyrillic-ext",
810
- "latin-ext",
811
- "cyrillic",
812
- "latin",
813
- "vietnamese"
814
- ],
815
- "version": "v7",
816
- "lastModified": "2016-05-31",
817
- "files": {
818
- "regular": "http://fonts.gstatic.com/s/andika/v7/oe-ag1G0lcqZ3IXfeEgaGg.ttf"
819
- }
820
- },
821
- {
822
- "kind": "webfonts#webfont",
823
- "family": "Angkor",
824
- "category": "display",
825
- "variants": [
826
- "regular"
827
- ],
828
- "subsets": [
829
- "khmer"
830
- ],
831
- "version": "v8",
832
- "lastModified": "2016-05-31",
833
- "files": {
834
- "regular": "http://fonts.gstatic.com/s/angkor/v8/DLpLgIS-8F10ecwKqCm95Q.ttf"
835
- }
836
- },
837
- {
838
- "kind": "webfonts#webfont",
839
- "family": "Annie Use Your Telescope",
840
- "category": "handwriting",
841
- "variants": [
842
- "regular"
843
- ],
844
- "subsets": [
845
- "latin"
846
- ],
847
- "version": "v6",
848
- "lastModified": "2016-05-31",
849
- "files": {
850
- "regular": "http://fonts.gstatic.com/s/annieuseyourtelescope/v6/2cuiO5VmaR09C8SLGEQjGqbp7mtG8sPlcZvOaO8HBak.ttf"
851
- }
852
- },
853
- {
854
- "kind": "webfonts#webfont",
855
- "family": "Anonymous Pro",
856
- "category": "monospace",
857
- "variants": [
858
- "regular",
859
- "italic",
860
- "700",
861
- "700italic"
862
- ],
863
- "subsets": [
864
- "latin-ext",
865
- "cyrillic",
866
- "greek",
867
- "latin"
868
- ],
869
- "version": "v9",
870
- "lastModified": "2016-06-07",
871
- "files": {
872
- "regular": "http://fonts.gstatic.com/s/anonymouspro/v9/Zhfjj_gat3waL4JSju74E-V_5zh5b-_HiooIRUBwn1A.ttf",
873
- "italic": "http://fonts.gstatic.com/s/anonymouspro/v9/q0u6LFHwttnT_69euiDbWKwIsuKDCXG0NQm7BvAgx-c.ttf",
874
- "700": "http://fonts.gstatic.com/s/anonymouspro/v9/WDf5lZYgdmmKhO8E1AQud--Cz_5MeePnXDAcLNWyBME.ttf",
875
- "700italic": "http://fonts.gstatic.com/s/anonymouspro/v9/_fVr_XGln-cetWSUc-JpfA1LL9bfs7wyIp6F8OC9RxA.ttf"
876
- }
877
- },
878
- {
879
- "kind": "webfonts#webfont",
880
- "family": "Antic",
881
- "category": "sans-serif",
882
- "variants": [
883
- "regular"
884
- ],
885
- "subsets": [
886
- "latin"
887
- ],
888
- "version": "v7",
889
- "lastModified": "2016-05-31",
890
- "files": {
891
- "regular": "http://fonts.gstatic.com/s/antic/v7/hEa8XCNM7tXGzD0Uk0AipA.ttf"
892
- }
893
- },
894
- {
895
- "kind": "webfonts#webfont",
896
- "family": "Antic Didone",
897
- "category": "serif",
898
- "variants": [
899
- "regular"
900
- ],
901
- "subsets": [
902
- "latin"
903
- ],
904
- "version": "v4",
905
- "lastModified": "2016-05-31",
906
- "files": {
907
- "regular": "http://fonts.gstatic.com/s/anticdidone/v4/r3nJcTDuOluOL6LGDV1vRy3USBnSvpkopQaUR-2r7iU.ttf"
908
- }
909
- },
910
- {
911
- "kind": "webfonts#webfont",
912
- "family": "Antic Slab",
913
- "category": "serif",
914
- "variants": [
915
- "regular"
916
- ],
917
- "subsets": [
918
- "latin"
919
- ],
920
- "version": "v4",
921
- "lastModified": "2016-05-31",
922
- "files": {
923
- "regular": "http://fonts.gstatic.com/s/anticslab/v4/PSbJCTKkAS7skPdkd7AKEvesZW2xOQ-xsNqO47m55DA.ttf"
924
- }
925
- },
926
- {
927
- "kind": "webfonts#webfont",
928
- "family": "Anton",
929
- "category": "sans-serif",
930
- "variants": [
931
- "regular"
932
- ],
933
- "subsets": [
934
- "latin-ext",
935
- "latin"
936
- ],
937
- "version": "v7",
938
- "lastModified": "2016-06-07",
939
- "files": {
940
- "regular": "http://fonts.gstatic.com/s/anton/v7/XIbCenm-W0IRHWYIh7CGUQ.ttf"
941
- }
942
- },
943
- {
944
- "kind": "webfonts#webfont",
945
- "family": "Arapey",
946
- "category": "serif",
947
- "variants": [
948
- "regular",
949
- "italic"
950
- ],
951
- "subsets": [
952
- "latin"
953
- ],
954
- "version": "v5",
955
- "lastModified": "2016-06-07",
956
- "files": {
957
- "regular": "http://fonts.gstatic.com/s/arapey/v5/dqu823lrSYn8T2gApTdslA.ttf",
958
- "italic": "http://fonts.gstatic.com/s/arapey/v5/pY-Xi5JNBpaWxy2tZhEm5A.ttf"
959
- }
960
- },
961
- {
962
- "kind": "webfonts#webfont",
963
- "family": "Arbutus",
964
- "category": "display",
965
- "variants": [
966
- "regular"
967
- ],
968
- "subsets": [
969
- "latin-ext",
970
- "latin"
971
- ],
972
- "version": "v5",
973
- "lastModified": "2016-06-07",
974
- "files": {
975
- "regular": "http://fonts.gstatic.com/s/arbutus/v5/Go_hurxoUsn5MnqNVQgodQ.ttf"
976
- }
977
- },
978
- {
979
- "kind": "webfonts#webfont",
980
- "family": "Arbutus Slab",
981
- "category": "serif",
982
- "variants": [
983
- "regular"
984
- ],
985
- "subsets": [
986
- "latin-ext",
987
- "latin"
988
- ],
989
- "version": "v4",
990
- "lastModified": "2016-06-07",
991
- "files": {
992
- "regular": "http://fonts.gstatic.com/s/arbutusslab/v4/6k3Yp6iS9l4jRIpynA8qMy3USBnSvpkopQaUR-2r7iU.ttf"
993
- }
994
- },
995
- {
996
- "kind": "webfonts#webfont",
997
- "family": "Architects Daughter",
998
- "category": "handwriting",
999
- "variants": [
1000
- "regular"
1001
- ],
1002
- "subsets": [
1003
- "latin"
1004
- ],
1005
- "version": "v6",
1006
- "lastModified": "2016-05-31",
1007
- "files": {
1008
- "regular": "http://fonts.gstatic.com/s/architectsdaughter/v6/RXTgOOQ9AAtaVOHxx0IUBMCy0EhZjHzu-y0e6uLf4Fg.ttf"
1009
- }
1010
- },
1011
- {
1012
- "kind": "webfonts#webfont",
1013
- "family": "Archivo Black",
1014
- "category": "sans-serif",
1015
- "variants": [
1016
- "regular"
1017
- ],
1018
- "subsets": [
1019
- "latin-ext",
1020
- "latin"
1021
- ],
1022
- "version": "v4",
1023
- "lastModified": "2016-05-31",
1024
- "files": {
1025
- "regular": "http://fonts.gstatic.com/s/archivoblack/v4/WoAoVT7K3k7hHfxKbvB6B51XQG8isOYYJhPIYAyrESQ.ttf"
1026
- }
1027
- },
1028
- {
1029
- "kind": "webfonts#webfont",
1030
- "family": "Archivo Narrow",
1031
- "category": "sans-serif",
1032
- "variants": [
1033
- "regular",
1034
- "italic",
1035
- "700",
1036
- "700italic"
1037
- ],
1038
- "subsets": [
1039
- "latin-ext",
1040
- "latin"
1041
- ],
1042
- "version": "v5",
1043
- "lastModified": "2016-05-31",
1044
- "files": {
1045
- "regular": "http://fonts.gstatic.com/s/archivonarrow/v5/DsLzC9scoPnrGiwYYMQXppTvAuddT2xDMbdz0mdLyZY.ttf",
1046
- "italic": "http://fonts.gstatic.com/s/archivonarrow/v5/vqsrtPCpTU3tJlKfuXP5zUpmlyBQEFfdE6dERLXdQGQ.ttf",
1047
- "700": "http://fonts.gstatic.com/s/archivonarrow/v5/M__Wu4PAmHf4YZvQM8tWsMLtdzs3iyjn_YuT226ZsLU.ttf",
1048
- "700italic": "http://fonts.gstatic.com/s/archivonarrow/v5/wG6O733y5zHl4EKCOh8rSTg5KB8MNJ4uPAETq9naQO8.ttf"
1049
- }
1050
- },
1051
- {
1052
- "kind": "webfonts#webfont",
1053
- "family": "Aref Ruqaa",
1054
- "category": "serif",
1055
- "variants": [
1056
- "regular",
1057
- "700"
1058
- ],
1059
- "subsets": [
1060
- "arabic",
1061
- "latin"
1062
- ],
1063
- "version": "v1",
1064
- "lastModified": "2016-06-20",
1065
- "files": {
1066
- "regular": "http://fonts.gstatic.com/s/arefruqaa/v1/kbqI055uLQz2hkccTTrYPfesZW2xOQ-xsNqO47m55DA.ttf",
1067
- "700": "http://fonts.gstatic.com/s/arefruqaa/v1/RT-Q5DVI9arM6ZKux-UmTAJKKGfqHaYFsRG-T3ceEVo.ttf"
1068
- }
1069
- },
1070
- {
1071
- "kind": "webfonts#webfont",
1072
- "family": "Arima Madurai",
1073
- "category": "display",
1074
- "variants": [
1075
- "100",
1076
- "200",
1077
- "300",
1078
- "regular",
1079
- "500",
1080
- "700",
1081
- "800",
1082
- "900"
1083
- ],
1084
- "subsets": [
1085
- "latin-ext",
1086
- "tamil",
1087
- "latin",
1088
- "vietnamese"
1089
- ],
1090
- "version": "v2",
1091
- "lastModified": "2016-08-22",
1092
- "files": {
1093
- "100": "http://fonts.gstatic.com/s/arimamadurai/v2/Q0tjl46beRRcUe3RlWWNrdyXLlNBCUjoM1yKFfVCFUI.ttf",
1094
- "200": "http://fonts.gstatic.com/s/arimamadurai/v2/EsCGNPwBfkMk17-w_DTJ4rArwWuxcSSKq67BdR6k5Rg.ttf",
1095
- "300": "http://fonts.gstatic.com/s/arimamadurai/v2/EsCGNPwBfkMk17-w_DTJ4joJ52uD-1fmXmi8u0n_zsc.ttf",
1096
- "regular": "http://fonts.gstatic.com/s/arimamadurai/v2/8fNfThKRw_pr7MwgNdcHiW_MnNA9OgK8I1F23mNWOpE.ttf",
1097
- "500": "http://fonts.gstatic.com/s/arimamadurai/v2/EsCGNPwBfkMk17-w_DTJ4v_2zpxNHQ3utWt_82o9dAo.ttf",
1098
- "700": "http://fonts.gstatic.com/s/arimamadurai/v2/EsCGNPwBfkMk17-w_DTJ4qiiXuG_rGcOxkuidirlnJE.ttf",
1099
- "800": "http://fonts.gstatic.com/s/arimamadurai/v2/EsCGNPwBfkMk17-w_DTJ4khKLu0CevfTHM1eXjGnvQo.ttf",
1100
- "900": "http://fonts.gstatic.com/s/arimamadurai/v2/EsCGNPwBfkMk17-w_DTJ4kZ0oshA7r_PlGegwiHddT8.ttf"
1101
- }
1102
- },
1103
- {
1104
- "kind": "webfonts#webfont",
1105
- "family": "Arimo",
1106
- "category": "sans-serif",
1107
- "variants": [
1108
- "regular",
1109
- "italic",
1110
- "700",
1111
- "700italic"
1112
- ],
1113
- "subsets": [
1114
- "cyrillic-ext",
1115
- "latin-ext",
1116
- "hebrew",
1117
- "cyrillic",
1118
- "greek",
1119
- "latin",
1120
- "greek-ext",
1121
- "vietnamese"
1122
- ],
1123
- "version": "v9",
1124
- "lastModified": "2016-10-05",
1125
- "files": {
1126
- "regular": "http://fonts.gstatic.com/s/arimo/v9/Gpeo80g-5ji2CcyXWnzh7g.ttf",
1127
- "italic": "http://fonts.gstatic.com/s/arimo/v9/_OdGbnX2-qQ96C4OjhyuPw.ttf",
1128
- "700": "http://fonts.gstatic.com/s/arimo/v9/ZItXugREyvV9LnbY_gxAmw.ttf",
1129
- "700italic": "http://fonts.gstatic.com/s/arimo/v9/__nOLWqmeXdhfr0g7GaFePesZW2xOQ-xsNqO47m55DA.ttf"
1130
- }
1131
- },
1132
- {
1133
- "kind": "webfonts#webfont",
1134
- "family": "Arizonia",
1135
- "category": "handwriting",
1136
- "variants": [
1137
- "regular"
1138
- ],
1139
- "subsets": [
1140
- "latin-ext",
1141
- "latin"
1142
- ],
1143
- "version": "v6",
1144
- "lastModified": "2016-05-31",
1145
- "files": {
1146
- "regular": "http://fonts.gstatic.com/s/arizonia/v6/yzJqkHZqryZBTM7RKYV9Wg.ttf"
1147
- }
1148
- },
1149
- {
1150
- "kind": "webfonts#webfont",
1151
- "family": "Armata",
1152
- "category": "sans-serif",
1153
- "variants": [
1154
- "regular"
1155
- ],
1156
- "subsets": [
1157
- "latin-ext",
1158
- "latin"
1159
- ],
1160
- "version": "v6",
1161
- "lastModified": "2016-06-07",
1162
- "files": {
1163
- "regular": "http://fonts.gstatic.com/s/armata/v6/1H8FwGgIRrbYtxSfXhOHlQ.ttf"
1164
- }
1165
- },
1166
- {
1167
- "kind": "webfonts#webfont",
1168
- "family": "Artifika",
1169
- "category": "serif",
1170
- "variants": [
1171
- "regular"
1172
- ],
1173
- "subsets": [
1174
- "latin"
1175
- ],
1176
- "version": "v6",
1177
- "lastModified": "2016-05-31",
1178
- "files": {
1179
- "regular": "http://fonts.gstatic.com/s/artifika/v6/Ekfp4H4QG7D-WsABDOyj8g.ttf"
1180
- }
1181
- },
1182
- {
1183
- "kind": "webfonts#webfont",
1184
- "family": "Arvo",
1185
- "category": "serif",
1186
- "variants": [
1187
- "regular",
1188
- "italic",
1189
- "700",
1190
- "700italic"
1191
- ],
1192
- "subsets": [
1193
- "latin"
1194
- ],
1195
- "version": "v9",
1196
- "lastModified": "2016-06-07",
1197
- "files": {
1198
- "regular": "http://fonts.gstatic.com/s/arvo/v9/vvWPwz-PlZEwjOOIKqoZzA.ttf",
1199
- "italic": "http://fonts.gstatic.com/s/arvo/v9/id5a4BCjbenl5Gkqonw_Rw.ttf",
1200
- "700": "http://fonts.gstatic.com/s/arvo/v9/OB3FDST7U38u3OjPK_vvRQ.ttf",
1201
- "700italic": "http://fonts.gstatic.com/s/arvo/v9/Hvl2MuWoXLaCy2v6MD4Yvw.ttf"
1202
- }
1203
- },
1204
- {
1205
- "kind": "webfonts#webfont",
1206
- "family": "Arya",
1207
- "category": "sans-serif",
1208
- "variants": [
1209
- "regular",
1210
- "700"
1211
- ],
1212
- "subsets": [
1213
- "latin-ext",
1214
- "devanagari",
1215
- "latin"
1216
- ],
1217
- "version": "v1",
1218
- "lastModified": "2016-05-31",
1219
- "files": {
1220
- "regular": "http://fonts.gstatic.com/s/arya/v1/xEVqtU3v8QLospHKpDaYEw.ttf",
1221
- "700": "http://fonts.gstatic.com/s/arya/v1/N13tgOvG7VTXawiI-fJiQA.ttf"
1222
- }
1223
- },
1224
- {
1225
- "kind": "webfonts#webfont",
1226
- "family": "Asap",
1227
- "category": "sans-serif",
1228
- "variants": [
1229
- "regular",
1230
- "italic",
1231
- "700",
1232
- "700italic"
1233
- ],
1234
- "subsets": [
1235
- "latin-ext",
1236
- "latin"
1237
- ],
1238
- "version": "v4",
1239
- "lastModified": "2016-06-07",
1240
- "files": {
1241
- "regular": "http://fonts.gstatic.com/s/asap/v4/2lf-1MDR8tsTpEtvJmr2hA.ttf",
1242
- "italic": "http://fonts.gstatic.com/s/asap/v4/mwxNHf8QS8gNWCAMwkJNIg.ttf",
1243
- "700": "http://fonts.gstatic.com/s/asap/v4/o5RUA7SsJ80M8oDFBnrDbg.ttf",
1244
- "700italic": "http://fonts.gstatic.com/s/asap/v4/_rZz9y2oXc09jT5T6BexLQ.ttf"
1245
- }
1246
- },
1247
- {
1248
- "kind": "webfonts#webfont",
1249
- "family": "Asar",
1250
- "category": "serif",
1251
- "variants": [
1252
- "regular"
1253
- ],
1254
- "subsets": [
1255
- "latin-ext",
1256
- "devanagari",
1257
- "latin"
1258
- ],
1259
- "version": "v2",
1260
- "lastModified": "2016-05-31",
1261
- "files": {
1262
- "regular": "http://fonts.gstatic.com/s/asar/v2/mSmn3H5CcMA84CZ586X7WQ.ttf"
1263
- }
1264
- },
1265
- {
1266
- "kind": "webfonts#webfont",
1267
- "family": "Asset",
1268
- "category": "display",
1269
- "variants": [
1270
- "regular"
1271
- ],
1272
- "subsets": [
1273
- "latin"
1274
- ],
1275
- "version": "v6",
1276
- "lastModified": "2016-06-07",
1277
- "files": {
1278
- "regular": "http://fonts.gstatic.com/s/asset/v6/hfPmqY-JzuR1lULlQf9iTg.ttf"
1279
- }
1280
- },
1281
- {
1282
- "kind": "webfonts#webfont",
1283
- "family": "Assistant",
1284
- "category": "sans-serif",
1285
- "variants": [
1286
- "200",
1287
- "300",
1288
- "regular",
1289
- "600",
1290
- "700",
1291
- "800"
1292
- ],
1293
- "subsets": [
1294
- "hebrew",
1295
- "latin"
1296
- ],
1297
- "version": "v1",
1298
- "lastModified": "2016-06-20",
1299
- "files": {
1300
- "200": "http://fonts.gstatic.com/s/assistant/v1/xXstfiHQzjB9j5ZxYTBoZy3USBnSvpkopQaUR-2r7iU.ttf",
1301
- "300": "http://fonts.gstatic.com/s/assistant/v1/vPC3tCw3LOzCSeGCtVp5Wi3USBnSvpkopQaUR-2r7iU.ttf",
1302
- "regular": "http://fonts.gstatic.com/s/assistant/v1/2iDwv6DBtyixlK5YHngp1w.ttf",
1303
- "600": "http://fonts.gstatic.com/s/assistant/v1/Y4UC5nQA69lWpfV0itoWLi3USBnSvpkopQaUR-2r7iU.ttf",
1304
- "700": "http://fonts.gstatic.com/s/assistant/v1/dZywGH4pMxP6OVyrppOJxy3USBnSvpkopQaUR-2r7iU.ttf",
1305
- "800": "http://fonts.gstatic.com/s/assistant/v1/-mTR0sX8a0RsadH4AMDT8C3USBnSvpkopQaUR-2r7iU.ttf"
1306
- }
1307
- },
1308
- {
1309
- "kind": "webfonts#webfont",
1310
- "family": "Astloch",
1311
- "category": "display",
1312
- "variants": [
1313
- "regular",
1314
- "700"
1315
- ],
1316
- "subsets": [
1317
- "latin"
1318
- ],
1319
- "version": "v6",
1320
- "lastModified": "2016-05-31",
1321
- "files": {
1322
- "regular": "http://fonts.gstatic.com/s/astloch/v6/fmbitVmHYLQP7MGPuFgpag.ttf",
1323
- "700": "http://fonts.gstatic.com/s/astloch/v6/aPkhM2tL-tz1jX6aX2rvo_esZW2xOQ-xsNqO47m55DA.ttf"
1324
- }
1325
- },
1326
- {
1327
- "kind": "webfonts#webfont",
1328
- "family": "Asul",
1329
- "category": "sans-serif",
1330
- "variants": [
1331
- "regular",
1332
- "700"
1333
- ],
1334
- "subsets": [
1335
- "latin"
1336
- ],
1337
- "version": "v5",
1338
- "lastModified": "2016-05-31",
1339
- "files": {
1340
- "regular": "http://fonts.gstatic.com/s/asul/v5/9qpsNR_OOwyOYyo2N0IbBw.ttf",
1341
- "700": "http://fonts.gstatic.com/s/asul/v5/uO8uNmxaq87-DdPmkEg5Gg.ttf"
1342
- }
1343
- },
1344
- {
1345
- "kind": "webfonts#webfont",
1346
- "family": "Athiti",
1347
- "category": "sans-serif",
1348
- "variants": [
1349
- "200",
1350
- "300",
1351
- "regular",
1352
- "500",
1353
- "600",
1354
- "700"
1355
- ],
1356
- "subsets": [
1357
- "latin-ext",
1358
- "thai",
1359
- "latin",
1360
- "vietnamese"
1361
- ],
1362
- "version": "v1",
1363
- "lastModified": "2016-06-20",
1364
- "files": {
1365
- "200": "http://fonts.gstatic.com/s/athiti/v1/Ge5skdKwzxRPajVLdOJuIg.ttf",
1366
- "300": "http://fonts.gstatic.com/s/athiti/v1/OoT7lj4AaSp1JpGJLKn3CA.ttf",
1367
- "regular": "http://fonts.gstatic.com/s/athiti/v1/e7eiIKP18Iz9Kg1xat6AYw.ttf",
1368
- "500": "http://fonts.gstatic.com/s/athiti/v1/W3pP-ANXfsMOVOG-cqqMFw.ttf",
1369
- "600": "http://fonts.gstatic.com/s/athiti/v1/kYx3dtUYNEuUlzWczYzsmQ.ttf",
1370
- "700": "http://fonts.gstatic.com/s/athiti/v1/tyXFOxQyZGXfqHhtqSikdw.ttf"
1371
- }
1372
- },
1373
- {
1374
- "kind": "webfonts#webfont",
1375
- "family": "Atma",
1376
- "category": "display",
1377
- "variants": [
1378
- "300",
1379
- "regular",
1380
- "500",
1381
- "600",
1382
- "700"
1383
- ],
1384
- "subsets": [
1385
- "latin-ext",
1386
- "bengali",
1387
- "latin"
1388
- ],
1389
- "version": "v1",
1390
- "lastModified": "2016-06-20",
1391
- "files": {
1392
- "300": "http://fonts.gstatic.com/s/atma/v1/noxn2r6cT3JgmEDt6Ip5pQ.ttf",
1393
- "regular": "http://fonts.gstatic.com/s/atma/v1/dkXPrLoE_uqcgUFj4JdfRQ.ttf",
1394
- "500": "http://fonts.gstatic.com/s/atma/v1/Htksg3ZXeAEbSvUdTQX-uw.ttf",
1395
- "600": "http://fonts.gstatic.com/s/atma/v1/EGUwD65ZZn9IIHp5Y36b4A.ttf",
1396
- "700": "http://fonts.gstatic.com/s/atma/v1/-fkXl3wADUHjobbwO9d-Wg.ttf"
1397
- }
1398
- },
1399
- {
1400
- "kind": "webfonts#webfont",
1401
- "family": "Atomic Age",
1402
- "category": "display",
1403
- "variants": [
1404
- "regular"
1405
- ],
1406
- "subsets": [
1407
- "latin"
1408
- ],
1409
- "version": "v7",
1410
- "lastModified": "2016-05-31",
1411
- "files": {
1412
- "regular": "http://fonts.gstatic.com/s/atomicage/v7/WvBMe4FxANIKpo6Oi0mVJ_esZW2xOQ-xsNqO47m55DA.ttf"
1413
- }
1414
- },
1415
- {
1416
- "kind": "webfonts#webfont",
1417
- "family": "Aubrey",
1418
- "category": "display",
1419
- "variants": [
1420
- "regular"
1421
- ],
1422
- "subsets": [
1423
- "latin"
1424
- ],
1425
- "version": "v8",
1426
- "lastModified": "2016-05-31",
1427
- "files": {
1428
- "regular": "http://fonts.gstatic.com/s/aubrey/v8/zo9w8klO8bmOQIMajQ2aTA.ttf"
1429
- }
1430
- },
1431
- {
1432
- "kind": "webfonts#webfont",
1433
- "family": "Audiowide",
1434
- "category": "display",
1435
- "variants": [
1436
- "regular"
1437
- ],
1438
- "subsets": [
1439
- "latin-ext",
1440
- "latin"
1441
- ],
1442
- "version": "v4",
1443
- "lastModified": "2016-05-31",
1444
- "files": {
1445
- "regular": "http://fonts.gstatic.com/s/audiowide/v4/yGcwRZB6VmoYhPUYT-mEow.ttf"
1446
- }
1447
- },
1448
- {
1449
- "kind": "webfonts#webfont",
1450
- "family": "Autour One",
1451
- "category": "display",
1452
- "variants": [
1453
- "regular"
1454
- ],
1455
- "subsets": [
1456
- "latin-ext",
1457
- "latin"
1458
- ],
1459
- "version": "v5",
1460
- "lastModified": "2016-06-07",
1461
- "files": {
1462
- "regular": "http://fonts.gstatic.com/s/autourone/v5/2xmQBcg7FN72jaQRFZPIDvesZW2xOQ-xsNqO47m55DA.ttf"
1463
- }
1464
- },
1465
- {
1466
- "kind": "webfonts#webfont",
1467
- "family": "Average",
1468
- "category": "serif",
1469
- "variants": [
1470
- "regular"
1471
- ],
1472
- "subsets": [
1473
- "latin-ext",
1474
- "latin"
1475
- ],
1476
- "version": "v4",
1477
- "lastModified": "2016-05-31",
1478
- "files": {
1479
- "regular": "http://fonts.gstatic.com/s/average/v4/aHUibBqdDbVYl5FM48pxyQ.ttf"
1480
- }
1481
- },
1482
- {
1483
- "kind": "webfonts#webfont",
1484
- "family": "Average Sans",
1485
- "category": "sans-serif",
1486
- "variants": [
1487
- "regular"
1488
- ],
1489
- "subsets": [
1490
- "latin-ext",
1491
- "latin"
1492
- ],
1493
- "version": "v4",
1494
- "lastModified": "2016-05-31",
1495
- "files": {
1496
- "regular": "http://fonts.gstatic.com/s/averagesans/v4/dnU3R-5A_43y5bIyLztPsS3USBnSvpkopQaUR-2r7iU.ttf"
1497
- }
1498
- },
1499
- {
1500
- "kind": "webfonts#webfont",
1501
- "family": "Averia Gruesa Libre",
1502
- "category": "display",
1503
- "variants": [
1504
- "regular"
1505
- ],
1506
- "subsets": [
1507
- "latin-ext",
1508
- "latin"
1509
- ],
1510
- "version": "v4",
1511
- "lastModified": "2016-06-07",
1512
- "files": {
1513
- "regular": "http://fonts.gstatic.com/s/averiagruesalibre/v4/10vbZTOoN6T8D-nvDzwRFyXcKHuZXlCN8VkWHpkUzKM.ttf"
1514
- }
1515
- },
1516
- {
1517
- "kind": "webfonts#webfont",
1518
- "family": "Averia Libre",
1519
- "category": "display",
1520
- "variants": [
1521
- "300",
1522
- "300italic",
1523
- "regular",
1524
- "italic",
1525
- "700",
1526
- "700italic"
1527
- ],
1528
- "subsets": [
1529
- "latin"
1530
- ],
1531
- "version": "v4",
1532
- "lastModified": "2016-06-07",
1533
- "files": {
1534
- "300": "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XacQoVhARpoaILP7amxE_8g.ttf",
1535
- "300italic": "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkina0FLWfcB-J_SAYmcAXaI.ttf",
1536
- "regular": "http://fonts.gstatic.com/s/averialibre/v4/rYVgHZZQICWnhjguGsBspC3USBnSvpkopQaUR-2r7iU.ttf",
1537
- "italic": "http://fonts.gstatic.com/s/averialibre/v4/1etzuoNxVHR8F533EkD1WfMZXuCXbOrAvx5R0IT5Oyo.ttf",
1538
- "700": "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XUD2ttfZwueP-QU272T9-k4.ttf",
1539
- "700italic": "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkvAs9-1nE9qOqhChW0m4nDE.ttf"
1540
- }
1541
- },
1542
- {
1543
- "kind": "webfonts#webfont",
1544
- "family": "Averia Sans Libre",
1545
- "category": "display",
1546
- "variants": [
1547
- "300",
1548
- "300italic",
1549
- "regular",
1550
- "italic",
1551
- "700",
1552
- "700italic"
1553
- ],
1554
- "subsets": [
1555
- "latin"
1556
- ],
1557
- "version": "v4",
1558
- "lastModified": "2016-05-31",
1559
- "files": {
1560
- "300": "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V4CP_KG_g80s1KXiBtJHoNc.ttf",
1561
- "300italic": "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88YuyGu4JqttndUh4gRKxic0.ttf",
1562
- "regular": "http://fonts.gstatic.com/s/averiasanslibre/v4/yRJpjT39KxACO9F31mj_LqV8_KRn4epKAjTFK1s1fsg.ttf",
1563
- "italic": "http://fonts.gstatic.com/s/averiasanslibre/v4/COEzR_NPBSUOl3pFwPbPoCZU2HnUZT1xVKaIrHDioao.ttf",
1564
- "700": "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V8QwVOrz1y5GihpZmtKLhlI.ttf",
1565
- "700italic": "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88bXy1DXgmJcVtKjM5UWamMs.ttf"
1566
- }
1567
- },
1568
- {
1569
- "kind": "webfonts#webfont",
1570
- "family": "Averia Serif Libre",
1571
- "category": "display",
1572
- "variants": [
1573
- "300",
1574
- "300italic",
1575
- "regular",
1576
- "italic",
1577
- "700",
1578
- "700italic"
1579
- ],
1580
- "subsets": [
1581
- "latin"
1582
- ],
1583
- "version": "v5",
1584
- "lastModified": "2016-05-31",
1585
- "files": {
1586
- "300": "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8SmC4gFJ2PHmfdVKEd_5S9M.ttf",
1587
- "300italic": "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCG2okl0bU63CauowU4iApig.ttf",
1588
- "regular": "http://fonts.gstatic.com/s/averiaseriflibre/v5/fdtF30xa_Erw0zAzOoG4BZqY66i8AUyI16fGqw0iAew.ttf",
1589
- "italic": "http://fonts.gstatic.com/s/averiaseriflibre/v5/o9qhvK9iT5iDWfyhQUe-6Ru_b0bTq5iipbJ9hhgHJ6U.ttf",
1590
- "700": "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8Q50KV5TaOVolur4zV2iZsg.ttf",
1591
- "700italic": "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCNxohRXP4tNDqG3X4Hqn21k.ttf"
1592
- }
1593
- },
1594
- {
1595
- "kind": "webfonts#webfont",
1596
- "family": "Bad Script",
1597
- "category": "handwriting",
1598
- "variants": [
1599
- "regular"
1600
- ],
1601
- "subsets": [
1602
- "cyrillic",
1603
- "latin"
1604
- ],
1605
- "version": "v5",
1606
- "lastModified": "2016-05-31",
1607
- "files": {
1608
- "regular": "http://fonts.gstatic.com/s/badscript/v5/cRyUs0nJ2eMQFHwBsZNRXfesZW2xOQ-xsNqO47m55DA.ttf"
1609
- }
1610
- },
1611
- {
1612
- "kind": "webfonts#webfont",
1613
- "family": "Baloo",
1614
- "category": "display",
1615
- "variants": [
1616
- "regular"
1617
- ],
1618
- "subsets": [
1619
- "latin-ext",
1620
- "devanagari",
1621
- "latin",
1622
- "vietnamese"
1623
- ],
1624
- "version": "v1",
1625
- "lastModified": "2016-06-20",
1626
- "files": {
1627
- "regular": "http://fonts.gstatic.com/s/baloo/v1/uFkbq9GEAWUcT0XNeptJ1Q.ttf"
1628
- }
1629
- },
1630
- {
1631
- "kind": "webfonts#webfont",
1632
- "family": "Baloo Bhai",
1633
- "category": "display",
1634
- "variants": [
1635
- "regular"
1636
- ],
1637
- "subsets": [
1638
- "gujarati",
1639
- "latin-ext",
1640
- "latin",
1641
- "vietnamese"
1642
- ],
1643
- "version": "v1",
1644
- "lastModified": "2016-06-20",
1645
- "files": {
1646
- "regular": "http://fonts.gstatic.com/s/baloobhai/v1/FQvpC-04bh2QINuWAdnNW_esZW2xOQ-xsNqO47m55DA.ttf"
1647
- }
1648
- },
1649
- {
1650
- "kind": "webfonts#webfont",
1651
- "family": "Baloo Bhaina",
1652
- "category": "display",
1653
- "variants": [
1654
- "regular"
1655
- ],
1656
- "subsets": [
1657
- "latin-ext",
1658
- "oriya",
1659
- "latin",
1660
- "vietnamese"
1661
- ],
1662
- "version": "v1",
1663
- "lastModified": "2016-08-19",
1664
- "files": {
1665
- "regular": "http://fonts.gstatic.com/s/baloobhaina/v1/HxxbxOVf9WQem_hKo1MXSi3USBnSvpkopQaUR-2r7iU.ttf"
1666
- }
1667
- },
1668
- {
1669
- "kind": "webfonts#webfont",
1670
- "family": "Baloo Chettan",
1671
- "category": "display",
1672
- "variants": [
1673
- "regular"
1674
- ],
1675
- "subsets": [
1676
- "latin-ext",
1677
- "malayalam",
1678
- "latin",
1679
- "vietnamese"
1680
- ],
1681
- "version": "v1",
1682
- "lastModified": "2016-08-19",
1683
- "files": {
1684
- "regular": "http://fonts.gstatic.com/s/baloochettan/v1/ODsFofLybGVOJ90e_EwdFbyYXtM25qb63HASTPtoTFA.ttf"
1685
- }
1686
- },
1687
- {
1688
- "kind": "webfonts#webfont",
1689
- "family": "Baloo Da",
1690
- "category": "display",
1691
- "variants": [
1692
- "regular"
1693
- ],
1694
- "subsets": [
1695
- "latin-ext",
1696
- "bengali",
1697
- "latin",
1698
- "vietnamese"
1699
- ],
1700
- "version": "v1",
1701
- "lastModified": "2016-06-20",
1702
- "files": {
1703
- "regular": "http://fonts.gstatic.com/s/balooda/v1/RAJ0l2eJl_HDURCVxRE1iQ.ttf"
1704
- }
1705
- },
1706
- {
1707
- "kind": "webfonts#webfont",
1708
- "family": "Baloo Paaji",
1709
- "category": "display",
1710
- "variants": [
1711
- "regular"
1712
- ],
1713
- "subsets": [
1714
- "latin-ext",
1715
- "latin",
1716
- "vietnamese",
1717
- "gurmukhi"
1718
- ],
1719
- "version": "v1",
1720
- "lastModified": "2016-08-19",
1721
- "files": {
1722
- "regular": "http://fonts.gstatic.com/s/baloopaaji/v1/KeqAjVRzso6QUEfpMLQ-7KCWcynf_cDxXwCLxiixG1c.ttf"
1723
- }
1724
- },
1725
- {
1726
- "kind": "webfonts#webfont",
1727
- "family": "Baloo Tamma",
1728
- "category": "display",
1729
- "variants": [
1730
- "regular"
1731
- ],
1732
- "subsets": [
1733
- "latin-ext",
1734
- "latin",
1735
- "vietnamese",
1736
- "kannada"
1737
- ],
1738
- "version": "v1",
1739
- "lastModified": "2016-08-19",
1740
- "files": {
1741
- "regular": "http://fonts.gstatic.com/s/balootamma/v1/-FKAYy14SAfG8Gc6YAAaMaCWcynf_cDxXwCLxiixG1c.ttf"
1742
- }
1743
- },
1744
- {
1745
- "kind": "webfonts#webfont",
1746
- "family": "Baloo Thambi",
1747
- "category": "display",
1748
- "variants": [
1749
- "regular"
1750
- ],
1751
- "subsets": [
1752
- "latin-ext",
1753
- "tamil",
1754
- "latin",
1755
- "vietnamese"
1756
- ],
1757
- "version": "v1",
1758
- "lastModified": "2016-06-20",
1759
- "files": {
1760
- "regular": "http://fonts.gstatic.com/s/baloothambi/v1/qXK3dZIeU-O-HruaN5cK0y3USBnSvpkopQaUR-2r7iU.ttf"
1761
- }
1762
- },
1763
- {
1764
- "kind": "webfonts#webfont",
1765
- "family": "Balthazar",
1766
- "category": "serif",
1767
- "variants": [
1768
- "regular"
1769
- ],
1770
- "subsets": [
1771
- "latin"
1772
- ],
1773
- "version": "v5",
1774
- "lastModified": "2016-05-31",
1775
- "files": {
1776
- "regular": "http://fonts.gstatic.com/s/balthazar/v5/WgbaSIs6dJAGXJ0qbz2xlw.ttf"
1777
- }
1778
- },
1779
- {
1780
- "kind": "webfonts#webfont",
1781
- "family": "Bangers",
1782
- "category": "display",
1783
- "variants": [
1784
- "regular"
1785
- ],
1786
- "subsets": [
1787
- "latin"
1788
- ],
1789
- "version": "v8",
1790
- "lastModified": "2016-05-31",
1791
- "files": {
1792
- "regular": "http://fonts.gstatic.com/s/bangers/v8/WAffdge5w99Xif-DLeqmcA.ttf"
1793
- }
1794
- },
1795
- {
1796
- "kind": "webfonts#webfont",
1797
- "family": "Basic",
1798
- "category": "sans-serif",
1799
- "variants": [
1800
- "regular"
1801
- ],
1802
- "subsets": [
1803
- "latin-ext",
1804
- "latin"
1805
- ],
1806
- "version": "v6",
1807
- "lastModified": "2016-06-07",
1808
- "files": {
1809
- "regular": "http://fonts.gstatic.com/s/basic/v6/hNII2mS5Dxw5C0u_m3mXgA.ttf"
1810
- }
1811
- },
1812
- {
1813
- "kind": "webfonts#webfont",
1814
- "family": "Battambang",
1815
- "category": "display",
1816
- "variants": [
1817
- "regular",
1818
- "700"
1819
- ],
1820
- "subsets": [
1821
- "khmer"
1822
- ],
1823
- "version": "v9",
1824
- "lastModified": "2016-05-31",
1825
- "files": {
1826
- "regular": "http://fonts.gstatic.com/s/battambang/v9/MzrUfQLefYum5vVGM3EZVPesZW2xOQ-xsNqO47m55DA.ttf",
1827
- "700": "http://fonts.gstatic.com/s/battambang/v9/dezbRtMzfzAA99DmrCYRMgJKKGfqHaYFsRG-T3ceEVo.ttf"
1828
- }
1829
- },
1830
- {
1831
- "kind": "webfonts#webfont",
1832
- "family": "Baumans",
1833
- "category": "display",
1834
- "variants": [
1835
- "regular"
1836
- ],
1837
- "subsets": [
1838
- "latin"
1839
- ],
1840
- "version": "v5",
1841
- "lastModified": "2016-05-31",
1842
- "files": {
1843
- "regular": "http://fonts.gstatic.com/s/baumans/v5/o0bFdPW1H5kd5saqqOcoVg.ttf"
1844
- }
1845
- },
1846
- {
1847
- "kind": "webfonts#webfont",
1848
- "family": "Bayon",
1849
- "category": "display",
1850
- "variants": [
1851
- "regular"
1852
- ],
1853
- "subsets": [
1854
- "khmer"
1855
- ],
1856
- "version": "v8",
1857
- "lastModified": "2016-05-31",
1858
- "files": {
1859
- "regular": "http://fonts.gstatic.com/s/bayon/v8/yTubusjTnpNRZwA4_50iVw.ttf"
1860
- }
1861
- },
1862
- {
1863
- "kind": "webfonts#webfont",
1864
- "family": "Belgrano",
1865
- "category": "serif",
1866
- "variants": [
1867
- "regular"
1868
- ],
1869
- "subsets": [
1870
- "latin"
1871
- ],
1872
- "version": "v6",
1873
- "lastModified": "2016-05-31",
1874
- "files": {
1875
- "regular": "http://fonts.gstatic.com/s/belgrano/v6/iq8DUa2s7g6WRCeMiFrmtQ.ttf"
1876
- }
1877
- },
1878
- {
1879
- "kind": "webfonts#webfont",
1880
- "family": "Belleza",
1881
- "category": "sans-serif",
1882
- "variants": [
1883
- "regular"
1884
- ],
1885
- "subsets": [
1886
- "latin-ext",
1887
- "latin"
1888
- ],
1889
- "version": "v4",
1890
- "lastModified": "2016-05-31",
1891
- "files": {
1892
- "regular": "http://fonts.gstatic.com/s/belleza/v4/wchA3BWJlVqvIcSeNZyXew.ttf"
1893
- }
1894
- },
1895
- {
1896
- "kind": "webfonts#webfont",
1897
- "family": "BenchNine",
1898
- "category": "sans-serif",
1899
- "variants": [
1900
- "300",
1901
- "regular",
1902
- "700"
1903
- ],
1904
- "subsets": [
1905
- "latin-ext",
1906
- "latin"
1907
- ],
1908
- "version": "v4",
1909
- "lastModified": "2016-05-31",
1910
- "files": {
1911
- "300": "http://fonts.gstatic.com/s/benchnine/v4/ah9xtUy9wLQ3qnWa2p-piS3USBnSvpkopQaUR-2r7iU.ttf",
1912
- "regular": "http://fonts.gstatic.com/s/benchnine/v4/h3OAlYqU3aOeNkuXgH2Q2w.ttf",
1913
- "700": "http://fonts.gstatic.com/s/benchnine/v4/qZpi6ZVZg3L2RL_xoBLxWS3USBnSvpkopQaUR-2r7iU.ttf"
1914
- }
1915
- },
1916
- {
1917
- "kind": "webfonts#webfont",
1918
- "family": "Bentham",
1919
- "category": "serif",
1920
- "variants": [
1921
- "regular"
1922
- ],
1923
- "subsets": [
1924
- "latin"
1925
- ],
1926
- "version": "v6",
1927
- "lastModified": "2016-06-07",
1928
- "files": {
1929
- "regular": "http://fonts.gstatic.com/s/bentham/v6/5-Mo8Fe7yg5tzV0GlQIuzQ.ttf"
1930
- }
1931
- },
1932
- {
1933
- "kind": "webfonts#webfont",
1934
- "family": "Berkshire Swash",
1935
- "category": "handwriting",
1936
- "variants": [
1937
- "regular"
1938
- ],
1939
- "subsets": [
1940
- "latin-ext",
1941
- "latin"
1942
- ],
1943
- "version": "v4",
1944
- "lastModified": "2016-05-31",
1945
- "files": {
1946
- "regular": "http://fonts.gstatic.com/s/berkshireswash/v4/4RZJjVRPjYnC2939hKCAimKfbtsIjCZP_edQljX9gR0.ttf"
1947
- }
1948
- },
1949
- {
1950
- "kind": "webfonts#webfont",
1951
- "family": "Bevan",
1952
- "category": "display",
1953
- "variants": [
1954
- "regular"
1955
- ],
1956
- "subsets": [
1957
- "latin"
1958
- ],
1959
- "version": "v7",
1960
- "lastModified": "2016-06-07",
1961
- "files": {
1962
- "regular": "http://fonts.gstatic.com/s/bevan/v7/Rtg3zDsCeQiaJ_Qno22OJA.ttf"
1963
- }
1964
- },
1965
- {
1966
- "kind": "webfonts#webfont",
1967
- "family": "Bigelow Rules",
1968
- "category": "display",
1969
- "variants": [
1970
- "regular"
1971
- ],
1972
- "subsets": [
1973
- "latin-ext",
1974
- "latin"
1975
- ],
1976
- "version": "v4",
1977
- "lastModified": "2016-05-31",
1978
- "files": {
1979
- "regular": "http://fonts.gstatic.com/s/bigelowrules/v4/FEJCPLwo07FS-6SK6Al50X8f0n03UdmQgF_CLvNR2vg.ttf"
1980
- }
1981
- },
1982
- {
1983
- "kind": "webfonts#webfont",
1984
- "family": "Bigshot One",
1985
- "category": "display",
1986
- "variants": [
1987
- "regular"
1988
- ],
1989
- "subsets": [
1990
- "latin"
1991
- ],
1992
- "version": "v6",
1993
- "lastModified": "2016-05-31",
1994
- "files": {
1995
- "regular": "http://fonts.gstatic.com/s/bigshotone/v6/wSyZjBNTWDQHnvWE2jt6j6CWcynf_cDxXwCLxiixG1c.ttf"
1996
- }
1997
- },
1998
- {
1999
- "kind": "webfonts#webfont",
2000
- "family": "Bilbo",
2001
- "category": "handwriting",
2002
- "variants": [
2003
- "regular"
2004
- ],
2005
- "subsets": [
2006
- "latin-ext",
2007
- "latin"
2008
- ],
2009
- "version": "v6",
2010
- "lastModified": "2016-05-31",
2011
- "files": {
2012
- "regular": "http://fonts.gstatic.com/s/bilbo/v6/-ty-lPs5H7OIucWbnpFrkA.ttf"
2013
- }
2014
- },
2015
- {
2016
- "kind": "webfonts#webfont",
2017
- "family": "Bilbo Swash Caps",
2018
- "category": "handwriting",
2019
- "variants": [
2020
- "regular"
2021
- ],
2022
- "subsets": [
2023
- "latin-ext",
2024
- "latin"
2025
- ],
2026
- "version": "v7",
2027
- "lastModified": "2016-05-31",
2028
- "files": {
2029
- "regular": "http://fonts.gstatic.com/s/bilboswashcaps/v7/UB_-crLvhx-PwGKW1oosDmYeFSdnSpRYv5h9gpdlD1g.ttf"
2030
- }
2031
- },
2032
- {
2033
- "kind": "webfonts#webfont",
2034
- "family": "BioRhyme",
2035
- "category": "serif",
2036
- "variants": [
2037
- "200",
2038
- "300",
2039
- "regular",
2040
- "700",
2041
- "800"
2042
- ],
2043
- "subsets": [
2044
- "latin-ext",
2045
- "latin"
2046
- ],
2047
- "version": "v1",
2048
- "lastModified": "2016-06-20",
2049
- "files": {
2050
- "200": "http://fonts.gstatic.com/s/biorhyme/v1/bj-6g_1gJHCc9xQZtLWL36CWcynf_cDxXwCLxiixG1c.ttf",
2051
- "300": "http://fonts.gstatic.com/s/biorhyme/v1/jWqHmLFlu30n7xp12uZd8qCWcynf_cDxXwCLxiixG1c.ttf",
2052
- "regular": "http://fonts.gstatic.com/s/biorhyme/v1/n6v5UkVPy_CjbP3fvsu1CA.ttf",
2053
- "700": "http://fonts.gstatic.com/s/biorhyme/v1/36KN76U1iKt5TFDm2lBz0KCWcynf_cDxXwCLxiixG1c.ttf",
2054
- "800": "http://fonts.gstatic.com/s/biorhyme/v1/k6bYbUnESjLYnworWvSTL6CWcynf_cDxXwCLxiixG1c.ttf"
2055
- }
2056
- },
2057
- {
2058
- "kind": "webfonts#webfont",
2059
- "family": "BioRhyme Expanded",
2060
- "category": "serif",
2061
- "variants": [
2062
- "200",
2063
- "300",
2064
- "regular",
2065
- "700",
2066
- "800"
2067
- ],
2068
- "subsets": [
2069
- "latin-ext",
2070
- "latin"
2071
- ],
2072
- "version": "v2",
2073
- "lastModified": "2016-06-20",
2074
- "files": {
2075
- "200": "http://fonts.gstatic.com/s/biorhymeexpanded/v2/FKL4Vyxmq2vsiDrSOzz2sC7oxZzNh3ej55UHm-HviBI.ttf",
2076
- "300": "http://fonts.gstatic.com/s/biorhymeexpanded/v2/FKL4Vyxmq2vsiDrSOzz2sFu4cYPPksG4MRjB5UiYPPw.ttf",
2077
- "regular": "http://fonts.gstatic.com/s/biorhymeexpanded/v2/hgBNpgjTRZzGmZxqN5OuVjndr_hij4ilAk2n1d1AhsE.ttf",
2078
- "700": "http://fonts.gstatic.com/s/biorhymeexpanded/v2/FKL4Vyxmq2vsiDrSOzz2sMVisRVfPEfQ0jijOMQbr0Q.ttf",
2079
- "800": "http://fonts.gstatic.com/s/biorhymeexpanded/v2/FKL4Vyxmq2vsiDrSOzz2sIv1v1eCT6RPbcYZYQ1T1CE.ttf"
2080
- }
2081
- },
2082
- {
2083
- "kind": "webfonts#webfont",
2084
- "family": "Biryani",
2085
- "category": "sans-serif",
2086
- "variants": [
2087
- "200",
2088
- "300",
2089
- "regular",
2090
- "600",
2091
- "700",
2092
- "800",
2093
- "900"
2094
- ],
2095
- "subsets": [
2096
- "latin-ext",
2097
- "devanagari",
2098
- "latin"
2099
- ],
2100
- "version": "v1",
2101
- "lastModified": "2016-05-31",
2102
- "files": {
2103
- "200": "http://fonts.gstatic.com/s/biryani/v1/Xx38YzyTFF8n6mRS1Yd88vesZW2xOQ-xsNqO47m55DA.ttf",
2104
- "300": "http://fonts.gstatic.com/s/biryani/v1/u-bneRbizmFMd0VQp5Ze6vesZW2xOQ-xsNqO47m55DA.ttf",
2105
- "regular": "http://fonts.gstatic.com/s/biryani/v1/W7bfR8-IY76Xz0QoB8L2xw.ttf",
2106
- "600": "http://fonts.gstatic.com/s/biryani/v1/1EdcPCVxBR2txgjrza6_YPesZW2xOQ-xsNqO47m55DA.ttf",
2107
- "700": "http://fonts.gstatic.com/s/biryani/v1/qN2MTZ0j1sKSCtfXLB2dR_esZW2xOQ-xsNqO47m55DA.ttf",
2108
- "800": "http://fonts.gstatic.com/s/biryani/v1/DJyziS7FEy441v22InYdevesZW2xOQ-xsNqO47m55DA.ttf",
2109
- "900": "http://fonts.gstatic.com/s/biryani/v1/trcLkrIut0lM_PPSyQfAMPesZW2xOQ-xsNqO47m55DA.ttf"
2110
- }
2111
- },
2112
- {
2113
- "kind": "webfonts#webfont",
2114
- "family": "Bitter",
2115
- "category": "serif",
2116
- "variants": [
2117
- "regular",
2118
- "italic",
2119
- "700"
2120
- ],
2121
- "subsets": [
2122
- "latin-ext",
2123
- "latin"
2124
- ],
2125
- "version": "v10",
2126
- "lastModified": "2016-10-20",
2127
- "files": {
2128
- "regular": "http://fonts.gstatic.com/s/bitter/v10/w_BNdJvVZDRmqy5aSfB2kQ.ttf",
2129
- "italic": "http://fonts.gstatic.com/s/bitter/v10/TC0FZEVzXQIGgzmRfKPZbA.ttf",
2130
- "700": "http://fonts.gstatic.com/s/bitter/v10/4dUtr_4BvHuoRU35suyOAg.ttf"
2131
- }
2132
- },
2133
- {
2134
- "kind": "webfonts#webfont",
2135
- "family": "Black Ops One",
2136
- "category": "display",
2137
- "variants": [
2138
- "regular"
2139
- ],
2140
- "subsets": [
2141
- "latin-ext",
2142
- "latin"
2143
- ],
2144
- "version": "v7",
2145
- "lastModified": "2016-06-07",
2146
- "files": {
2147
- "regular": "http://fonts.gstatic.com/s/blackopsone/v7/2XW-DmDsGbDLE372KrMW1Yjjx0o0jr6fNXxPgYh_a8Q.ttf"
2148
- }
2149
- },
2150
- {
2151
- "kind": "webfonts#webfont",
2152
- "family": "Bokor",
2153
- "category": "display",
2154
- "variants": [
2155
- "regular"
2156
- ],
2157
- "subsets": [
2158
- "khmer"
2159
- ],
2160
- "version": "v8",
2161
- "lastModified": "2016-05-31",
2162
- "files": {
2163
- "regular": "http://fonts.gstatic.com/s/bokor/v8/uAKdo0A85WW23Gs6mcbw7A.ttf"
2164
- }
2165
- },
2166
- {
2167
- "kind": "webfonts#webfont",
2168
- "family": "Bonbon",
2169
- "category": "handwriting",
2170
- "variants": [
2171
- "regular"
2172
- ],
2173
- "subsets": [
2174
- "latin"
2175
- ],
2176
- "version": "v7",
2177
- "lastModified": "2016-05-31",
2178
- "files": {
2179
- "regular": "http://fonts.gstatic.com/s/bonbon/v7/IW3u1yzG1knyW5oz0s9_6Q.ttf"
2180
- }
2181
- },
2182
- {
2183
- "kind": "webfonts#webfont",
2184
- "family": "Boogaloo",
2185
- "category": "display",
2186
- "variants": [
2187
- "regular"
2188
- ],
2189
- "subsets": [
2190
- "latin"
2191
- ],
2192
- "version": "v6",
2193
- "lastModified": "2016-05-31",
2194
- "files": {
2195
- "regular": "http://fonts.gstatic.com/s/boogaloo/v6/4Wu1tvFMoB80fSu8qLgQfQ.ttf"
2196
- }
2197
- },
2198
- {
2199
- "kind": "webfonts#webfont",
2200
- "family": "Bowlby One",
2201
- "category": "display",
2202
- "variants": [
2203
- "regular"
2204
- ],
2205
- "subsets": [
2206
- "latin"
2207
- ],
2208
- "version": "v7",
2209
- "lastModified": "2016-05-31",
2210
- "files": {
2211
- "regular": "http://fonts.gstatic.com/s/bowlbyone/v7/eKpHjHfjoxM2bX36YNucefesZW2xOQ-xsNqO47m55DA.ttf"
2212
- }
2213
- },
2214
- {
2215
- "kind": "webfonts#webfont",
2216
- "family": "Bowlby One SC",
2217
- "category": "display",
2218
- "variants": [
2219
- "regular"
2220
- ],
2221
- "subsets": [
2222
- "latin-ext",
2223
- "latin"
2224
- ],
2225
- "version": "v8",
2226
- "lastModified": "2016-05-31",
2227
- "files": {
2228
- "regular": "http://fonts.gstatic.com/s/bowlbyonesc/v8/8ZkeXftTuzKBtmxOYXoRedDkZCMxWJecxjvKm2f8MJw.ttf"
2229
- }
2230
- },
2231
- {
2232
- "kind": "webfonts#webfont",
2233
- "family": "Brawler",
2234
- "category": "serif",
2235
- "variants": [
2236
- "regular"
2237
- ],
2238
- "subsets": [
2239
- "latin"
2240
- ],
2241
- "version": "v6",
2242
- "lastModified": "2016-05-31",
2243
- "files": {
2244
- "regular": "http://fonts.gstatic.com/s/brawler/v6/3gfSw6imxQnQxweVITqUrg.ttf"
2245
- }
2246
- },
2247
- {
2248
- "kind": "webfonts#webfont",
2249
- "family": "Bree Serif",
2250
- "category": "serif",
2251
- "variants": [
2252
- "regular"
2253
- ],
2254
- "subsets": [
2255
- "latin-ext",
2256
- "latin"
2257
- ],
2258
- "version": "v5",
2259
- "lastModified": "2016-06-07",
2260
- "files": {
2261
- "regular": "http://fonts.gstatic.com/s/breeserif/v5/5h9crBVIrvZqgf34FHcnEfesZW2xOQ-xsNqO47m55DA.ttf"
2262
- }
2263
- },
2264
- {
2265
- "kind": "webfonts#webfont",
2266
- "family": "Bubblegum Sans",
2267
- "category": "display",
2268
- "variants": [
2269
- "regular"
2270
- ],
2271
- "subsets": [
2272
- "latin-ext",
2273
- "latin"
2274
- ],
2275
- "version": "v5",
2276
- "lastModified": "2016-05-31",
2277
- "files": {
2278
- "regular": "http://fonts.gstatic.com/s/bubblegumsans/v5/Y9iTUUNz6lbl6TrvV4iwsytnKWgpfO2iSkLzTz-AABg.ttf"
2279
- }
2280
- },
2281
- {
2282
- "kind": "webfonts#webfont",
2283
- "family": "Bubbler One",
2284
- "category": "sans-serif",
2285
- "variants": [
2286
- "regular"
2287
- ],
2288
- "subsets": [
2289
- "latin-ext",
2290
- "latin"
2291
- ],
2292
- "version": "v4",
2293
- "lastModified": "2016-05-31",
2294
- "files": {
2295
- "regular": "http://fonts.gstatic.com/s/bubblerone/v4/e8S0qevkZAFaBybtt_SU4qCWcynf_cDxXwCLxiixG1c.ttf"
2296
- }
2297
- },
2298
- {
2299
- "kind": "webfonts#webfont",
2300
- "family": "Buda",
2301
- "category": "display",
2302
- "variants": [
2303
- "300"
2304
- ],
2305
- "subsets": [
2306
- "latin"
2307
- ],
2308
- "version": "v6",
2309
- "lastModified": "2016-05-31",
2310
- "files": {
2311
- "300": "http://fonts.gstatic.com/s/buda/v6/hLtAmNUmEMJH2yx7NGUjnA.ttf"
2312
- }
2313
- },
2314
- {
2315
- "kind": "webfonts#webfont",
2316
- "family": "Buenard",
2317
- "category": "serif",
2318
- "variants": [
2319
- "regular",
2320
- "700"
2321
- ],
2322
- "subsets": [
2323
- "latin-ext",
2324
- "latin"
2325
- ],
2326
- "version": "v7",
2327
- "lastModified": "2016-05-31",
2328
- "files": {
2329
- "regular": "http://fonts.gstatic.com/s/buenard/v7/NSpMPGKAUgrLrlstYVvIXQ.ttf",
2330
- "700": "http://fonts.gstatic.com/s/buenard/v7/yUlGE115dGr7O9w9FlP3UvesZW2xOQ-xsNqO47m55DA.ttf"
2331
- }
2332
- },
2333
- {
2334
- "kind": "webfonts#webfont",
2335
- "family": "Bungee",
2336
- "category": "display",
2337
- "variants": [
2338
- "regular"
2339
- ],
2340
- "subsets": [
2341
- "latin-ext",
2342
- "latin",
2343
- "vietnamese"
2344
- ],
2345
- "version": "v2",
2346
- "lastModified": "2016-06-20",
2347
- "files": {
2348
- "regular": "http://fonts.gstatic.com/s/bungee/v2/0jM4G9s968t1_tpwzM9UDg.ttf"
2349
- }
2350
- },
2351
- {
2352
- "kind": "webfonts#webfont",
2353
- "family": "Bungee Hairline",
2354
- "category": "display",
2355
- "variants": [
2356
- "regular"
2357
- ],
2358
- "subsets": [
2359
- "latin-ext",
2360
- "latin",
2361
- "vietnamese"
2362
- ],
2363
- "version": "v2",
2364
- "lastModified": "2016-06-20",
2365
- "files": {
2366
- "regular": "http://fonts.gstatic.com/s/bungeehairline/v2/8Li3dr3whdkxuk7pmLaZaSom6rTIagUDR1YFcrrRZjQ.ttf"
2367
- }
2368
- },
2369
- {
2370
- "kind": "webfonts#webfont",
2371
- "family": "Bungee Inline",
2372
- "category": "display",
2373
- "variants": [
2374
- "regular"
2375
- ],
2376
- "subsets": [
2377
- "latin-ext",
2378
- "latin",
2379
- "vietnamese"
2380
- ],
2381
- "version": "v2",
2382
- "lastModified": "2016-06-20",
2383
- "files": {
2384
- "regular": "http://fonts.gstatic.com/s/bungeeinline/v2/Tb-1914q4rFpjT-F66PLCYjjx0o0jr6fNXxPgYh_a8Q.ttf"
2385
- }
2386
- },
2387
- {
2388
- "kind": "webfonts#webfont",
2389
- "family": "Bungee Outline",
2390
- "category": "display",
2391
- "variants": [
2392
- "regular"
2393
- ],
2394
- "subsets": [
2395
- "latin-ext",
2396
- "latin",
2397
- "vietnamese"
2398
- ],
2399
- "version": "v2",
2400
- "lastModified": "2016-06-20",
2401
- "files": {
2402
- "regular": "http://fonts.gstatic.com/s/bungeeoutline/v2/PcidvzXIcqS2Qwxm_iG6bLAREgn5xbW23GEXXnhMQ5Y.ttf"
2403
- }
2404
- },
2405
- {
2406
- "kind": "webfonts#webfont",
2407
- "family": "Bungee Shade",
2408
- "category": "display",
2409
- "variants": [
2410
- "regular"
2411
- ],
2412
- "subsets": [
2413
- "latin-ext",
2414
- "latin",
2415
- "vietnamese"
2416
- ],
2417
- "version": "v2",
2418
- "lastModified": "2016-06-20",
2419
- "files": {
2420
- "regular": "http://fonts.gstatic.com/s/bungeeshade/v2/HSW7pxPYXBWkq7OSnuXoeC3USBnSvpkopQaUR-2r7iU.ttf"
2421
- }
2422
- },
2423
- {
2424
- "kind": "webfonts#webfont",
2425
- "family": "Butcherman",
2426
- "category": "display",
2427
- "variants": [
2428
- "regular"
2429
- ],
2430
- "subsets": [
2431
- "latin-ext",
2432
- "latin"
2433
- ],
2434
- "version": "v7",
2435
- "lastModified": "2016-05-31",
2436
- "files": {
2437
- "regular": "http://fonts.gstatic.com/s/butcherman/v7/bxiJmD567sPBVpJsT0XR0vesZW2xOQ-xsNqO47m55DA.ttf"
2438
- }
2439
- },
2440
- {
2441
- "kind": "webfonts#webfont",
2442
- "family": "Butterfly Kids",
2443
- "category": "handwriting",
2444
- "variants": [
2445
- "regular"
2446
- ],
2447
- "subsets": [
2448
- "latin-ext",
2449
- "latin"
2450
- ],
2451
- "version": "v4",
2452
- "lastModified": "2016-05-31",
2453
- "files": {
2454
- "regular": "http://fonts.gstatic.com/s/butterflykids/v4/J4NTF5M25htqeTffYImtlUZaDk62iwTBnbnvwSjZciA.ttf"
2455
- }
2456
- },
2457
- {
2458
- "kind": "webfonts#webfont",
2459
- "family": "Cabin",
2460
- "category": "sans-serif",
2461
- "variants": [
2462
- "regular",
2463
- "italic",
2464
- "500",
2465
- "500italic",
2466
- "600",
2467
- "600italic",
2468
- "700",
2469
- "700italic"
2470
- ],
2471
- "subsets": [
2472
- "latin"
2473
- ],
2474
- "version": "v9",
2475
- "lastModified": "2016-05-31",
2476
- "files": {
2477
- "regular": "http://fonts.gstatic.com/s/cabin/v9/XeuAFYo2xAPHxZGBbQtHhA.ttf",
2478
- "italic": "http://fonts.gstatic.com/s/cabin/v9/0tJ9k3DI5xC4GBgs1E_Jxw.ttf",
2479
- "500": "http://fonts.gstatic.com/s/cabin/v9/HgsCQ-k3_Z_uQ86aFolNBg.ttf",
2480
- "500italic": "http://fonts.gstatic.com/s/cabin/v9/50sjhrGE0njyO-7mGDhGP_esZW2xOQ-xsNqO47m55DA.ttf",
2481
- "600": "http://fonts.gstatic.com/s/cabin/v9/eUDAvKhBtmTCkeVBsFk34A.ttf",
2482
- "600italic": "http://fonts.gstatic.com/s/cabin/v9/sFQpQDBd3G2om0Nl5dD2CvesZW2xOQ-xsNqO47m55DA.ttf",
2483
- "700": "http://fonts.gstatic.com/s/cabin/v9/4EKhProuY1hq_WCAomq9Dg.ttf",
2484
- "700italic": "http://fonts.gstatic.com/s/cabin/v9/K83QKi8MOKLEqj6bgZ7LrfesZW2xOQ-xsNqO47m55DA.ttf"
2485
- }
2486
- },
2487
- {
2488
- "kind": "webfonts#webfont",
2489
- "family": "Cabin Condensed",
2490
- "category": "sans-serif",
2491
- "variants": [
2492
- "regular",
2493
- "500",
2494
- "600",
2495
- "700"
2496
- ],
2497
- "subsets": [
2498
- "latin"
2499
- ],
2500
- "version": "v8",
2501
- "lastModified": "2016-05-31",
2502
- "files": {
2503
- "regular": "http://fonts.gstatic.com/s/cabincondensed/v8/B0txb0blf2N29WdYPJjMSiQPsWWoiv__AzYJ9Zzn9II.ttf",
2504
- "500": "http://fonts.gstatic.com/s/cabincondensed/v8/Ez4zJbsGr2BgXcNUWBVgEARL_-ABKXdjsJSPT0lc2Bk.ttf",
2505
- "600": "http://fonts.gstatic.com/s/cabincondensed/v8/Ez4zJbsGr2BgXcNUWBVgELS5sSASxc8z4EQTQj7DCAI.ttf",
2506
- "700": "http://fonts.gstatic.com/s/cabincondensed/v8/Ez4zJbsGr2BgXcNUWBVgEMAWgzcA047xWLixhLCofl8.ttf"
2507
- }
2508
- },
2509
- {
2510
- "kind": "webfonts#webfont",
2511
- "family": "Cabin Sketch",
2512
- "category": "display",
2513
- "variants": [
2514
- "regular",
2515
- "700"
2516
- ],
2517
- "subsets": [
2518
- "latin"
2519
- ],
2520
- "version": "v9",
2521
- "lastModified": "2016-05-31",
2522
- "files": {
2523
- "regular": "http://fonts.gstatic.com/s/cabinsketch/v9/d9fijO34zQajqQvl3YHRCS3USBnSvpkopQaUR-2r7iU.ttf",
2524
- "700": "http://fonts.gstatic.com/s/cabinsketch/v9/ki3SSN5HMOO0-IOLOj069ED2ttfZwueP-QU272T9-k4.ttf"
2525
- }
2526
- },
2527
- {
2528
- "kind": "webfonts#webfont",
2529
- "family": "Caesar Dressing",
2530
- "category": "display",
2531
- "variants": [
2532
- "regular"
2533
- ],
2534
- "subsets": [
2535
- "latin"
2536
- ],
2537
- "version": "v5",
2538
- "lastModified": "2016-05-31",
2539
- "files": {
2540
- "regular": "http://fonts.gstatic.com/s/caesardressing/v5/2T_WzBgE2Xz3FsyJMq34T9gR43u4FvCuJwIfF5Zxl6Y.ttf"
2541
- }
2542
- },
2543
- {
2544
- "kind": "webfonts#webfont",
2545
- "family": "Cagliostro",
2546
- "category": "sans-serif",
2547
- "variants": [
2548
- "regular"
2549
- ],
2550
- "subsets": [
2551
- "latin"
2552
- ],
2553
- "version": "v5",
2554
- "lastModified": "2016-05-31",
2555
- "files": {
2556
- "regular": "http://fonts.gstatic.com/s/cagliostro/v5/i85oXbtdSatNEzss99bpj_esZW2xOQ-xsNqO47m55DA.ttf"
2557
- }
2558
- },
2559
- {
2560
- "kind": "webfonts#webfont",
2561
- "family": "Cairo",
2562
- "category": "sans-serif",
2563
- "variants": [
2564
- "200",
2565
- "300",
2566
- "regular",
2567
- "600",
2568
- "700",
2569
- "900"
2570
- ],
2571
- "subsets": [
2572
- "latin-ext",
2573
- "arabic",
2574
- "latin"
2575
- ],
2576
- "version": "v1",
2577
- "lastModified": "2016-06-20",
2578
- "files": {
2579
- "200": "http://fonts.gstatic.com/s/cairo/v1/9BU6Hrio9syG9zwo_CNPXg.ttf",
2580
- "300": "http://fonts.gstatic.com/s/cairo/v1/mpy3SIEJVOIfFnVLujcRDg.ttf",
2581
- "regular": "http://fonts.gstatic.com/s/cairo/v1/-tPnHq7mmAjcjJRSjsuZGA.ttf",
2582
- "600": "http://fonts.gstatic.com/s/cairo/v1/Ct_3a0tcTEyNNSnuZKDd7g.ttf",
2583
- "700": "http://fonts.gstatic.com/s/cairo/v1/ONxTSBYfmg-V5CkIwS_5gQ.ttf",
2584
- "900": "http://fonts.gstatic.com/s/cairo/v1/Fm-hIVCp5OI5mO4Ec71jcw.ttf"
2585
- }
2586
- },
2587
- {
2588
- "kind": "webfonts#webfont",
2589
- "family": "Calligraffitti",
2590
- "category": "handwriting",
2591
- "variants": [
2592
- "regular"
2593
- ],
2594
- "subsets": [
2595
- "latin"
2596
- ],
2597
- "version": "v7",
2598
- "lastModified": "2016-10-05",
2599
- "files": {
2600
- "regular": "http://fonts.gstatic.com/s/calligraffitti/v7/vLVN2Y-z65rVu1R7lWdvyDXz_orj3gX0_NzfmYulrko.ttf"
2601
- }
2602
- },
2603
- {
2604
- "kind": "webfonts#webfont",
2605
- "family": "Cambay",
2606
- "category": "sans-serif",
2607
- "variants": [
2608
- "regular",
2609
- "italic",
2610
- "700",
2611
- "700italic"
2612
- ],
2613
- "subsets": [
2614
- "latin-ext",
2615
- "devanagari",
2616
- "latin"
2617
- ],
2618
- "version": "v1",
2619
- "lastModified": "2016-05-31",
2620
- "files": {
2621
- "regular": "http://fonts.gstatic.com/s/cambay/v1/etU9Bab4VuhzS-OKsb1VXg.ttf",
2622
- "italic": "http://fonts.gstatic.com/s/cambay/v1/ZEz9yNqpEOgejaw1rBhugQ.ttf",
2623
- "700": "http://fonts.gstatic.com/s/cambay/v1/jw9niBxa04eEhnSwTWCEgw.ttf",
2624
- "700italic": "http://fonts.gstatic.com/s/cambay/v1/j-5v_uUr0NXTumWN0siOiaCWcynf_cDxXwCLxiixG1c.ttf"
2625
- }
2626
- },
2627
- {
2628
- "kind": "webfonts#webfont",
2629
- "family": "Cambo",
2630
- "category": "serif",
2631
- "variants": [
2632
- "regular"
2633
- ],
2634
- "subsets": [
2635
- "latin"
2636
- ],
2637
- "version": "v5",
2638
- "lastModified": "2016-05-31",
2639
- "files": {
2640
- "regular": "http://fonts.gstatic.com/s/cambo/v5/PnwpRuTdkYCf8qk4ajmNRA.ttf"
2641
- }
2642
- },
2643
- {
2644
- "kind": "webfonts#webfont",
2645
- "family": "Candal",
2646
- "category": "sans-serif",
2647
- "variants": [
2648
- "regular"
2649
- ],
2650
- "subsets": [
2651
- "latin"
2652
- ],
2653
- "version": "v6",
2654
- "lastModified": "2016-05-31",
2655
- "files": {
2656
- "regular": "http://fonts.gstatic.com/s/candal/v6/x44dDW28zK7GR1gGDBmj9g.ttf"
2657
- }
2658
- },
2659
- {
2660
- "kind": "webfonts#webfont",
2661
- "family": "Cantarell",
2662
- "category": "sans-serif",
2663
- "variants": [
2664
- "regular",
2665
- "italic",
2666
- "700",
2667
- "700italic"
2668
- ],
2669
- "subsets": [
2670
- "latin"
2671
- ],
2672
- "version": "v6",
2673
- "lastModified": "2016-06-07",
2674
- "files": {
2675
- "regular": "http://fonts.gstatic.com/s/cantarell/v6/p5ydP_uWQ5lsFzcP_XVMEw.ttf",
2676
- "italic": "http://fonts.gstatic.com/s/cantarell/v6/DTCLtOSqP-7dgM-V_xKUjqCWcynf_cDxXwCLxiixG1c.ttf",
2677
- "700": "http://fonts.gstatic.com/s/cantarell/v6/Yir4ZDsCn4g1kWopdg-ehC3USBnSvpkopQaUR-2r7iU.ttf",
2678
- "700italic": "http://fonts.gstatic.com/s/cantarell/v6/weehrwMeZBXb0QyrWnRwFXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
2679
- }
2680
- },
2681
- {
2682
- "kind": "webfonts#webfont",
2683
- "family": "Cantata One",
2684
- "category": "serif",
2685
- "variants": [
2686
- "regular"
2687
- ],
2688
- "subsets": [
2689
- "latin-ext",
2690
- "latin"
2691
- ],
2692
- "version": "v6",
2693
- "lastModified": "2016-06-07",
2694
- "files": {
2695
- "regular": "http://fonts.gstatic.com/s/cantataone/v6/-a5FDvnBqaBMDaGgZYnEfqCWcynf_cDxXwCLxiixG1c.ttf"
2696
- }
2697
- },
2698
- {
2699
- "kind": "webfonts#webfont",
2700
- "family": "Cantora One",
2701
- "category": "sans-serif",
2702
- "variants": [
2703
- "regular"
2704
- ],
2705
- "subsets": [
2706
- "latin-ext",
2707
- "latin"
2708
- ],
2709
- "version": "v5",
2710
- "lastModified": "2016-05-31",
2711
- "files": {
2712
- "regular": "http://fonts.gstatic.com/s/cantoraone/v5/oI-DS62RbHI8ZREjp73ehqCWcynf_cDxXwCLxiixG1c.ttf"
2713
- }
2714
- },
2715
- {
2716
- "kind": "webfonts#webfont",
2717
- "family": "Capriola",
2718
- "category": "sans-serif",
2719
- "variants": [
2720
- "regular"
2721
- ],
2722
- "subsets": [
2723
- "latin-ext",
2724
- "latin"
2725
- ],
2726
- "version": "v4",
2727
- "lastModified": "2016-06-07",
2728
- "files": {
2729
- "regular": "http://fonts.gstatic.com/s/capriola/v4/JxXPlkdzWwF9Cwelbvi9jA.ttf"
2730
- }
2731
- },
2732
- {
2733
- "kind": "webfonts#webfont",
2734
- "family": "Cardo",
2735
- "category": "serif",
2736
- "variants": [
2737
- "regular",
2738
- "italic",
2739
- "700"
2740
- ],
2741
- "subsets": [
2742
- "latin-ext",
2743
- "greek",
2744
- "latin",
2745
- "greek-ext"
2746
- ],
2747
- "version": "v8",
2748
- "lastModified": "2016-05-31",
2749
- "files": {
2750
- "regular": "http://fonts.gstatic.com/s/cardo/v8/jbkF2_R0FKUEZTq5dwSknQ.ttf",
2751
- "italic": "http://fonts.gstatic.com/s/cardo/v8/pcv4Np9tUkq0YREYUcEEJQ.ttf",
2752
- "700": "http://fonts.gstatic.com/s/cardo/v8/lQN30weILimrKvp8rZhF1w.ttf"
2753
- }
2754
- },
2755
- {
2756
- "kind": "webfonts#webfont",
2757
- "family": "Carme",
2758
- "category": "sans-serif",
2759
- "variants": [
2760
- "regular"
2761
- ],
2762
- "subsets": [
2763
- "latin"
2764
- ],
2765
- "version": "v7",
2766
- "lastModified": "2016-05-31",
2767
- "files": {
2768
- "regular": "http://fonts.gstatic.com/s/carme/v7/08E0NP1eRBEyFRUadmMfgA.ttf"
2769
- }
2770
- },
2771
- {
2772
- "kind": "webfonts#webfont",
2773
- "family": "Carrois Gothic",
2774
- "category": "sans-serif",
2775
- "variants": [
2776
- "regular"
2777
- ],
2778
- "subsets": [
2779
- "latin"
2780
- ],
2781
- "version": "v5",
2782
- "lastModified": "2016-05-31",
2783
- "files": {
2784
- "regular": "http://fonts.gstatic.com/s/carroisgothic/v5/GCgb7bssGpwp7V5ynxmWy2x3d0cwUleGuRTmCYfCUaM.ttf"
2785
- }
2786
- },
2787
- {
2788
- "kind": "webfonts#webfont",
2789
- "family": "Carrois Gothic SC",
2790
- "category": "sans-serif",
2791
- "variants": [
2792
- "regular"
2793
- ],
2794
- "subsets": [
2795
- "latin"
2796
- ],
2797
- "version": "v5",
2798
- "lastModified": "2016-05-31",
2799
- "files": {
2800
- "regular": "http://fonts.gstatic.com/s/carroisgothicsc/v5/bVp4nhwFIXU-r3LqUR8DSJTdPW1ioadGi2uRiKgJVCY.ttf"
2801
- }
2802
- },
2803
- {
2804
- "kind": "webfonts#webfont",
2805
- "family": "Carter One",
2806
- "category": "display",
2807
- "variants": [
2808
- "regular"
2809
- ],
2810
- "subsets": [
2811
- "latin"
2812
- ],
2813
- "version": "v8",
2814
- "lastModified": "2016-06-07",
2815
- "files": {
2816
- "regular": "http://fonts.gstatic.com/s/carterone/v8/5X_LFvdbcB7OBG7hBgZ7fPesZW2xOQ-xsNqO47m55DA.ttf"
2817
- }
2818
- },
2819
- {
2820
- "kind": "webfonts#webfont",
2821
- "family": "Catamaran",
2822
- "category": "sans-serif",
2823
- "variants": [
2824
- "100",
2825
- "200",
2826
- "300",
2827
- "regular",
2828
- "500",
2829
- "600",
2830
- "700",
2831
- "800",
2832
- "900"
2833
- ],
2834
- "subsets": [
2835
- "latin-ext",
2836
- "tamil",
2837
- "latin"
2838
- ],
2839
- "version": "v1",
2840
- "lastModified": "2016-05-31",
2841
- "files": {
2842
- "100": "http://fonts.gstatic.com/s/catamaran/v1/ilWHBiy0krUPdlmYxDuqC6CWcynf_cDxXwCLxiixG1c.ttf",
2843
- "200": "http://fonts.gstatic.com/s/catamaran/v1/hFc-HKSsGk6M-psujei1MC3USBnSvpkopQaUR-2r7iU.ttf",
2844
- "300": "http://fonts.gstatic.com/s/catamaran/v1/Aaag4ccR7Oh_4eai-jbrYC3USBnSvpkopQaUR-2r7iU.ttf",
2845
- "regular": "http://fonts.gstatic.com/s/catamaran/v1/MdNkM-DU8f6R-25Nxpr_XA.ttf",
2846
- "500": "http://fonts.gstatic.com/s/catamaran/v1/83WSX3F86qsvj1Z4EI0tQi3USBnSvpkopQaUR-2r7iU.ttf",
2847
- "600": "http://fonts.gstatic.com/s/catamaran/v1/a9PlHHnuBWiGGk0TwuFKTi3USBnSvpkopQaUR-2r7iU.ttf",
2848
- "700": "http://fonts.gstatic.com/s/catamaran/v1/PpgVtUHUdnBZYNpnzGbScy3USBnSvpkopQaUR-2r7iU.ttf",
2849
- "800": "http://fonts.gstatic.com/s/catamaran/v1/6VjB_uSfn3DZ93IQv58CmC3USBnSvpkopQaUR-2r7iU.ttf",
2850
- "900": "http://fonts.gstatic.com/s/catamaran/v1/5ys9TqpQc9Q6gHqbSox6py3USBnSvpkopQaUR-2r7iU.ttf"
2851
- }
2852
- },
2853
- {
2854
- "kind": "webfonts#webfont",
2855
- "family": "Caudex",
2856
- "category": "serif",
2857
- "variants": [
2858
- "regular",
2859
- "italic",
2860
- "700",
2861
- "700italic"
2862
- ],
2863
- "subsets": [
2864
- "latin-ext",
2865
- "greek",
2866
- "latin",
2867
- "greek-ext"
2868
- ],
2869
- "version": "v6",
2870
- "lastModified": "2016-06-07",
2871
- "files": {
2872
- "regular": "http://fonts.gstatic.com/s/caudex/v6/PWEexiHLDmQbn2b1OPZWfg.ttf",
2873
- "italic": "http://fonts.gstatic.com/s/caudex/v6/XjMZF6XCisvV3qapD4oJdw.ttf",
2874
- "700": "http://fonts.gstatic.com/s/caudex/v6/PetCI4GyQ5Q3LiOzUu_mMg.ttf",
2875
- "700italic": "http://fonts.gstatic.com/s/caudex/v6/yT8YeHLjaJvQXlUEYOA8gqCWcynf_cDxXwCLxiixG1c.ttf"
2876
- }
2877
- },
2878
- {
2879
- "kind": "webfonts#webfont",
2880
- "family": "Caveat",
2881
- "category": "handwriting",
2882
- "variants": [
2883
- "regular",
2884
- "700"
2885
- ],
2886
- "subsets": [
2887
- "latin-ext",
2888
- "latin"
2889
- ],
2890
- "version": "v2",
2891
- "lastModified": "2016-05-31",
2892
- "files": {
2893
- "regular": "http://fonts.gstatic.com/s/caveat/v2/8I23b6N-6rRVbh-C_Vx3yA.ttf",
2894
- "700": "http://fonts.gstatic.com/s/caveat/v2/LkaFtQENGJry2eUMwGRTeA.ttf"
2895
- }
2896
- },
2897
- {
2898
- "kind": "webfonts#webfont",
2899
- "family": "Caveat Brush",
2900
- "category": "handwriting",
2901
- "variants": [
2902
- "regular"
2903
- ],
2904
- "subsets": [
2905
- "latin-ext",
2906
- "latin"
2907
- ],
2908
- "version": "v2",
2909
- "lastModified": "2016-05-31",
2910
- "files": {
2911
- "regular": "http://fonts.gstatic.com/s/caveatbrush/v2/_d7bgsk3hfC4DXnUEeYKsy3USBnSvpkopQaUR-2r7iU.ttf"
2912
- }
2913
- },
2914
- {
2915
- "kind": "webfonts#webfont",
2916
- "family": "Cedarville Cursive",
2917
- "category": "handwriting",
2918
- "variants": [
2919
- "regular"
2920
- ],
2921
- "subsets": [
2922
- "latin"
2923
- ],
2924
- "version": "v7",
2925
- "lastModified": "2016-06-07",
2926
- "files": {
2927
- "regular": "http://fonts.gstatic.com/s/cedarvillecursive/v7/cuCe6HrkcqrWTWTUE7dw-41zwq9-z_Lf44CzRAA0d0Y.ttf"
2928
- }
2929
- },
2930
- {
2931
- "kind": "webfonts#webfont",
2932
- "family": "Ceviche One",
2933
- "category": "display",
2934
- "variants": [
2935
- "regular"
2936
- ],
2937
- "subsets": [
2938
- "latin-ext",
2939
- "latin"
2940
- ],
2941
- "version": "v7",
2942
- "lastModified": "2016-05-31",
2943
- "files": {
2944
- "regular": "http://fonts.gstatic.com/s/cevicheone/v7/WOaXIMBD4VYMy39MsobJhKCWcynf_cDxXwCLxiixG1c.ttf"
2945
- }
2946
- },
2947
- {
2948
- "kind": "webfonts#webfont",
2949
- "family": "Changa",
2950
- "category": "sans-serif",
2951
- "variants": [
2952
- "200",
2953
- "300",
2954
- "regular",
2955
- "500",
2956
- "600",
2957
- "700",
2958
- "800"
2959
- ],
2960
- "subsets": [
2961
- "latin-ext",
2962
- "arabic",
2963
- "latin"
2964
- ],
2965
- "version": "v2",
2966
- "lastModified": "2016-06-20",
2967
- "files": {
2968
- "200": "http://fonts.gstatic.com/s/changa/v2/QNWVD9FzsnhVmHzE7HryDQ.ttf",
2969
- "300": "http://fonts.gstatic.com/s/changa/v2/OKZ0H1bMg3M9EZMVzgQ9fg.ttf",
2970
- "regular": "http://fonts.gstatic.com/s/changa/v2/7_e8qktkj6uKM0DamZJY9Q.ttf",
2971
- "500": "http://fonts.gstatic.com/s/changa/v2/KrXcHYf9ILB8aFWCj0Vfxg.ttf",
2972
- "600": "http://fonts.gstatic.com/s/changa/v2/6uCpqxwcsYkfV0M8Ls6WPA.ttf",
2973
- "700": "http://fonts.gstatic.com/s/changa/v2/vAXzeaPkdpxlejFN7h0ibw.ttf",
2974
- "800": "http://fonts.gstatic.com/s/changa/v2/H3IsiH2Fx0Pc4_OU4HSpng.ttf"
2975
- }
2976
- },
2977
- {
2978
- "kind": "webfonts#webfont",
2979
- "family": "Changa One",
2980
- "category": "display",
2981
- "variants": [
2982
- "regular",
2983
- "italic"
2984
- ],
2985
- "subsets": [
2986
- "latin"
2987
- ],
2988
- "version": "v9",
2989
- "lastModified": "2016-05-31",
2990
- "files": {
2991
- "regular": "http://fonts.gstatic.com/s/changaone/v9/dr4qjce4W3kxFrZRkVD87fesZW2xOQ-xsNqO47m55DA.ttf",
2992
- "italic": "http://fonts.gstatic.com/s/changaone/v9/wJVQlUs1lAZel-WdTo2U9y3USBnSvpkopQaUR-2r7iU.ttf"
2993
- }
2994
- },
2995
- {
2996
- "kind": "webfonts#webfont",
2997
- "family": "Chango",
2998
- "category": "display",
2999
- "variants": [
3000
- "regular"
3001
- ],
3002
- "subsets": [
3003
- "latin-ext",
3004
- "latin"
3005
- ],
3006
- "version": "v5",
3007
- "lastModified": "2016-05-31",
3008
- "files": {
3009
- "regular": "http://fonts.gstatic.com/s/chango/v5/3W3AeMMtRTH08t5qLOjBmg.ttf"
3010
- }
3011
- },
3012
- {
3013
- "kind": "webfonts#webfont",
3014
- "family": "Chathura",
3015
- "category": "sans-serif",
3016
- "variants": [
3017
- "100",
3018
- "300",
3019
- "regular",
3020
- "700",
3021
- "800"
3022
- ],
3023
- "subsets": [
3024
- "latin",
3025
- "telugu"
3026
- ],
3027
- "version": "v1",
3028
- "lastModified": "2016-06-20",
3029
- "files": {
3030
- "100": "http://fonts.gstatic.com/s/chathura/v1/7tUse0wFXIOSPewsdeNXPvesZW2xOQ-xsNqO47m55DA.ttf",
3031
- "300": "http://fonts.gstatic.com/s/chathura/v1/Gmhr6ULHnPDt9spOZrHOfKCWcynf_cDxXwCLxiixG1c.ttf",
3032
- "regular": "http://fonts.gstatic.com/s/chathura/v1/7hRNO-_zjRopkcP2n1rr8g.ttf",
3033
- "700": "http://fonts.gstatic.com/s/chathura/v1/BO9LvNAseMQ3n1tKWH-uTKCWcynf_cDxXwCLxiixG1c.ttf",
3034
- "800": "http://fonts.gstatic.com/s/chathura/v1/prh_X_5NSsBQefIdGi5B6KCWcynf_cDxXwCLxiixG1c.ttf"
3035
- }
3036
- },
3037
- {
3038
- "kind": "webfonts#webfont",
3039
- "family": "Chau Philomene One",
3040
- "category": "sans-serif",
3041
- "variants": [
3042
- "regular",
3043
- "italic"
3044
- ],
3045
- "subsets": [
3046
- "latin-ext",
3047
- "latin"
3048
- ],
3049
- "version": "v5",
3050
- "lastModified": "2016-06-07",
3051
- "files": {
3052
- "regular": "http://fonts.gstatic.com/s/chauphilomeneone/v5/KKc5egCL-a2fFVoOA2x6tBFi5dxgSTdxqnMJgWkBJcg.ttf",
3053
- "italic": "http://fonts.gstatic.com/s/chauphilomeneone/v5/eJj1PY_iN4KiIuyOvtMHJP6uyLkxyiC4WcYA74sfquE.ttf"
3054
- }
3055
- },
3056
- {
3057
- "kind": "webfonts#webfont",
3058
- "family": "Chela One",
3059
- "category": "display",
3060
- "variants": [
3061
- "regular"
3062
- ],
3063
- "subsets": [
3064
- "latin-ext",
3065
- "latin"
3066
- ],
3067
- "version": "v5",
3068
- "lastModified": "2016-05-31",
3069
- "files": {
3070
- "regular": "http://fonts.gstatic.com/s/chelaone/v5/h5O0dEnpnIq6jQnWxZybrA.ttf"
3071
- }
3072
- },
3073
- {
3074
- "kind": "webfonts#webfont",
3075
- "family": "Chelsea Market",
3076
- "category": "display",
3077
- "variants": [
3078
- "regular"
3079
- ],
3080
- "subsets": [
3081
- "latin-ext",
3082
- "latin"
3083
- ],
3084
- "version": "v4",
3085
- "lastModified": "2016-06-07",
3086
- "files": {
3087
- "regular": "http://fonts.gstatic.com/s/chelseamarket/v4/qSdzwh2A4BbNemy78sJLfAAI1i8fIftCBXsBF2v9UMI.ttf"
3088
- }
3089
- },
3090
- {
3091
- "kind": "webfonts#webfont",
3092
- "family": "Chenla",
3093
- "category": "display",
3094
- "variants": [
3095
- "regular"
3096
- ],
3097
- "subsets": [
3098
- "khmer"
3099
- ],
3100
- "version": "v9",
3101
- "lastModified": "2016-05-31",
3102
- "files": {
3103
- "regular": "http://fonts.gstatic.com/s/chenla/v9/aLNpdAUDq2MZbWz2U1a16g.ttf"
3104
- }
3105
- },
3106
- {
3107
- "kind": "webfonts#webfont",
3108
- "family": "Cherry Cream Soda",
3109
- "category": "display",
3110
- "variants": [
3111
- "regular"
3112
- ],
3113
- "subsets": [
3114
- "latin"
3115
- ],
3116
- "version": "v6",
3117
- "lastModified": "2016-10-05",
3118
- "files": {
3119
- "regular": "http://fonts.gstatic.com/s/cherrycreamsoda/v6/OrD-AUnFcZeeKa6F_c0_WxOiHiuAPYA9ry3O1RG2XIU.ttf"
3120
- }
3121
- },
3122
- {
3123
- "kind": "webfonts#webfont",
3124
- "family": "Cherry Swash",
3125
- "category": "display",
3126
- "variants": [
3127
- "regular",
3128
- "700"
3129
- ],
3130
- "subsets": [
3131
- "latin-ext",
3132
- "latin"
3133
- ],
3134
- "version": "v4",
3135
- "lastModified": "2016-06-07",
3136
- "files": {
3137
- "regular": "http://fonts.gstatic.com/s/cherryswash/v4/HqOk7C7J1TZ5i3L-ejF0vi3USBnSvpkopQaUR-2r7iU.ttf",
3138
- "700": "http://fonts.gstatic.com/s/cherryswash/v4/-CfyMyQqfucZPQNB0nvYyED2ttfZwueP-QU272T9-k4.ttf"
3139
- }
3140
- },
3141
- {
3142
- "kind": "webfonts#webfont",
3143
- "family": "Chewy",
3144
- "category": "display",
3145
- "variants": [
3146
- "regular"
3147
- ],
3148
- "subsets": [
3149
- "latin"
3150
- ],
3151
- "version": "v7",
3152
- "lastModified": "2016-10-05",
3153
- "files": {
3154
- "regular": "http://fonts.gstatic.com/s/chewy/v7/hcDN5cvQdIu6Bx4mg_TSyw.ttf"
3155
- }
3156
- },
3157
- {
3158
- "kind": "webfonts#webfont",
3159
- "family": "Chicle",
3160
- "category": "display",
3161
- "variants": [
3162
- "regular"
3163
- ],
3164
- "subsets": [
3165
- "latin-ext",
3166
- "latin"
3167
- ],
3168
- "version": "v5",
3169
- "lastModified": "2016-05-31",
3170
- "files": {
3171
- "regular": "http://fonts.gstatic.com/s/chicle/v5/xg4q57Ut9ZmyFwLp51JLgg.ttf"
3172
- }
3173
- },
3174
- {
3175
- "kind": "webfonts#webfont",
3176
- "family": "Chivo",
3177
- "category": "sans-serif",
3178
- "variants": [
3179
- "regular",
3180
- "italic",
3181
- "900",
3182
- "900italic"
3183
- ],
3184
- "subsets": [
3185
- "latin"
3186
- ],
3187
- "version": "v7",
3188
- "lastModified": "2016-05-31",
3189
- "files": {
3190
- "regular": "http://fonts.gstatic.com/s/chivo/v7/L88PEuzS9eRfHRZhAPhZyw.ttf",
3191
- "italic": "http://fonts.gstatic.com/s/chivo/v7/Oe3-Q-a2kBzPnhHck_baMg.ttf",
3192
- "900": "http://fonts.gstatic.com/s/chivo/v7/JAdkiWd46QCW4vOsj3dzTA.ttf",
3193
- "900italic": "http://fonts.gstatic.com/s/chivo/v7/LoszYnE86q2wJEOjCigBQ_esZW2xOQ-xsNqO47m55DA.ttf"
3194
- }
3195
- },
3196
- {
3197
- "kind": "webfonts#webfont",
3198
- "family": "Chonburi",
3199
- "category": "display",
3200
- "variants": [
3201
- "regular"
3202
- ],
3203
- "subsets": [
3204
- "latin-ext",
3205
- "thai",
3206
- "latin",
3207
- "vietnamese"
3208
- ],
3209
- "version": "v1",
3210
- "lastModified": "2016-05-31",
3211
- "files": {
3212
- "regular": "http://fonts.gstatic.com/s/chonburi/v1/jd9PfbW0x_8Myt_XeUxvSQ.ttf"
3213
- }
3214
- },
3215
- {
3216
- "kind": "webfonts#webfont",
3217
- "family": "Cinzel",
3218
- "category": "serif",
3219
- "variants": [
3220
- "regular",
3221
- "700",
3222
- "900"
3223
- ],
3224
- "subsets": [
3225
- "latin"
3226
- ],
3227
- "version": "v4",
3228
- "lastModified": "2016-05-31",
3229
- "files": {
3230
- "regular": "http://fonts.gstatic.com/s/cinzel/v4/GF7dy_Nc-a6EaHYSyGd-EA.ttf",
3231
- "700": "http://fonts.gstatic.com/s/cinzel/v4/nYcFQ6_3pf_6YDrOFjBR8Q.ttf",
3232
- "900": "http://fonts.gstatic.com/s/cinzel/v4/FTBj72ozM2cEOSxiVsRb3A.ttf"
3233
- }
3234
- },
3235
- {
3236
- "kind": "webfonts#webfont",
3237
- "family": "Cinzel Decorative",
3238
- "category": "display",
3239
- "variants": [
3240
- "regular",
3241
- "700",
3242
- "900"
3243
- ],
3244
- "subsets": [
3245
- "latin"
3246
- ],
3247
- "version": "v4",
3248
- "lastModified": "2016-05-31",
3249
- "files": {
3250
- "regular": "http://fonts.gstatic.com/s/cinzeldecorative/v4/fmgK7oaJJIXAkhd9798yQgT5USbJx2F82lQbogPy2bY.ttf",
3251
- "700": "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F95-YYVDmZkJErg0zgx9XuZI.ttf",
3252
- "900": "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F97Khqbv0zQZa0g-9HOXAalU.ttf"
3253
- }
3254
- },
3255
- {
3256
- "kind": "webfonts#webfont",
3257
- "family": "Clicker Script",
3258
- "category": "handwriting",
3259
- "variants": [
3260
- "regular"
3261
- ],
3262
- "subsets": [
3263
- "latin-ext",
3264
- "latin"
3265
- ],
3266
- "version": "v4",
3267
- "lastModified": "2016-05-31",
3268
- "files": {
3269
- "regular": "http://fonts.gstatic.com/s/clickerscript/v4/Zupmk8XwADjufGxWB9KThBnpV0hQCek3EmWnCPrvGRM.ttf"
3270
- }
3271
- },
3272
- {
3273
- "kind": "webfonts#webfont",
3274
- "family": "Coda",
3275
- "category": "display",
3276
- "variants": [
3277
- "regular",
3278
- "800"
3279
- ],
3280
- "subsets": [
3281
- "latin-ext",
3282
- "latin"
3283
- ],
3284
- "version": "v11",
3285
- "lastModified": "2016-05-31",
3286
- "files": {
3287
- "regular": "http://fonts.gstatic.com/s/coda/v11/yHDvulhg-P-p2KRgRrnUYw.ttf",
3288
- "800": "http://fonts.gstatic.com/s/coda/v11/6ZIw0sbALY0KTMWllZB3hQ.ttf"
3289
- }
3290
- },
3291
- {
3292
- "kind": "webfonts#webfont",
3293
- "family": "Coda Caption",
3294
- "category": "sans-serif",
3295
- "variants": [
3296
- "800"
3297
- ],
3298
- "subsets": [
3299
- "latin-ext",
3300
- "latin"
3301
- ],
3302
- "version": "v9",
3303
- "lastModified": "2016-05-31",
3304
- "files": {
3305
- "800": "http://fonts.gstatic.com/s/codacaption/v9/YDl6urZh-DUFhiMBTgAnz_qsay_1ZmRGmC8pVRdIfAg.ttf"
3306
- }
3307
- },
3308
- {
3309
- "kind": "webfonts#webfont",
3310
- "family": "Codystar",
3311
- "category": "display",
3312
- "variants": [
3313
- "300",
3314
- "regular"
3315
- ],
3316
- "subsets": [
3317
- "latin-ext",
3318
- "latin"
3319
- ],
3320
- "version": "v4",
3321
- "lastModified": "2016-05-31",
3322
- "files": {
3323
- "300": "http://fonts.gstatic.com/s/codystar/v4/EVaUzfJkcb8Zqx9kzQLXqqCWcynf_cDxXwCLxiixG1c.ttf",
3324
- "regular": "http://fonts.gstatic.com/s/codystar/v4/EN-CPFKYowSI7SuR7-0cZA.ttf"
3325
- }
3326
- },
3327
- {
3328
- "kind": "webfonts#webfont",
3329
- "family": "Coiny",
3330
- "category": "display",
3331
- "variants": [
3332
- "regular"
3333
- ],
3334
- "subsets": [
3335
- "latin-ext",
3336
- "tamil",
3337
- "latin",
3338
- "vietnamese"
3339
- ],
3340
- "version": "v1",
3341
- "lastModified": "2016-06-20",
3342
- "files": {
3343
- "regular": "http://fonts.gstatic.com/s/coiny/v1/B-pC9lRxssd2RDK37Rdekw.ttf"
3344
- }
3345
- },
3346
- {
3347
- "kind": "webfonts#webfont",
3348
- "family": "Combo",
3349
- "category": "display",
3350
- "variants": [
3351
- "regular"
3352
- ],
3353
- "subsets": [
3354
- "latin-ext",
3355
- "latin"
3356
- ],
3357
- "version": "v5",
3358
- "lastModified": "2016-05-31",
3359
- "files": {
3360
- "regular": "http://fonts.gstatic.com/s/combo/v5/Nab98KjR3JZSSPGtzLyXNw.ttf"
3361
- }
3362
- },
3363
- {
3364
- "kind": "webfonts#webfont",
3365
- "family": "Comfortaa",
3366
- "category": "display",
3367
- "variants": [
3368
- "300",
3369
- "regular",
3370
- "700"
3371
- ],
3372
- "subsets": [
3373
- "cyrillic-ext",
3374
- "latin-ext",
3375
- "cyrillic",
3376
- "greek",
3377
- "latin"
3378
- ],
3379
- "version": "v7",
3380
- "lastModified": "2016-06-07",
3381
- "files": {
3382
- "300": "http://fonts.gstatic.com/s/comfortaa/v7/r_tUZNl0G8xCoOmp_JkSCi3USBnSvpkopQaUR-2r7iU.ttf",
3383
- "regular": "http://fonts.gstatic.com/s/comfortaa/v7/lZx6C1VViPgSOhCBUP7hXA.ttf",
3384
- "700": "http://fonts.gstatic.com/s/comfortaa/v7/fND5XPYKrF2tQDwwfWZJIy3USBnSvpkopQaUR-2r7iU.ttf"
3385
- }
3386
- },
3387
- {
3388
- "kind": "webfonts#webfont",
3389
- "family": "Coming Soon",
3390
- "category": "handwriting",
3391
- "variants": [
3392
- "regular"
3393
- ],
3394
- "subsets": [
3395
- "latin"
3396
- ],
3397
- "version": "v6",
3398
- "lastModified": "2016-10-05",
3399
- "files": {
3400
- "regular": "http://fonts.gstatic.com/s/comingsoon/v6/Yz2z3IAe2HSQAOWsSG8COKCWcynf_cDxXwCLxiixG1c.ttf"
3401
- }
3402
- },
3403
- {
3404
- "kind": "webfonts#webfont",
3405
- "family": "Concert One",
3406
- "category": "display",
3407
- "variants": [
3408
- "regular"
3409
- ],
3410
- "subsets": [
3411
- "latin-ext",
3412
- "latin"
3413
- ],
3414
- "version": "v7",
3415
- "lastModified": "2016-05-31",
3416
- "files": {
3417
- "regular": "http://fonts.gstatic.com/s/concertone/v7/N5IWCIGhUNdPZn_efTxKN6CWcynf_cDxXwCLxiixG1c.ttf"
3418
- }
3419
- },
3420
- {
3421
- "kind": "webfonts#webfont",
3422
- "family": "Condiment",
3423
- "category": "handwriting",
3424
- "variants": [
3425
- "regular"
3426
- ],
3427
- "subsets": [
3428
- "latin-ext",
3429
- "latin"
3430
- ],
3431
- "version": "v4",
3432
- "lastModified": "2016-06-07",
3433
- "files": {
3434
- "regular": "http://fonts.gstatic.com/s/condiment/v4/CstmdiPpgFSV0FUNL5LrJA.ttf"
3435
- }
3436
- },
3437
- {
3438
- "kind": "webfonts#webfont",
3439
- "family": "Content",
3440
- "category": "display",
3441
- "variants": [
3442
- "regular",
3443
- "700"
3444
- ],
3445
- "subsets": [
3446
- "khmer"
3447
- ],
3448
- "version": "v8",
3449
- "lastModified": "2016-05-31",
3450
- "files": {
3451
- "regular": "http://fonts.gstatic.com/s/content/v8/l8qaLjygvOkDEU2G6-cjfQ.ttf",
3452
- "700": "http://fonts.gstatic.com/s/content/v8/7PivP8Zvs2qn6F6aNbSQe_esZW2xOQ-xsNqO47m55DA.ttf"
3453
- }
3454
- },
3455
- {
3456
- "kind": "webfonts#webfont",
3457
- "family": "Contrail One",
3458
- "category": "display",
3459
- "variants": [
3460
- "regular"
3461
- ],
3462
- "subsets": [
3463
- "latin"
3464
- ],
3465
- "version": "v6",
3466
- "lastModified": "2016-06-07",
3467
- "files": {
3468
- "regular": "http://fonts.gstatic.com/s/contrailone/v6/b41KxjgiyqX-hkggANDU6C3USBnSvpkopQaUR-2r7iU.ttf"
3469
- }
3470
- },
3471
- {
3472
- "kind": "webfonts#webfont",
3473
- "family": "Convergence",
3474
- "category": "sans-serif",
3475
- "variants": [
3476
- "regular"
3477
- ],
3478
- "subsets": [
3479
- "latin"
3480
- ],
3481
- "version": "v5",
3482
- "lastModified": "2016-05-31",
3483
- "files": {
3484
- "regular": "http://fonts.gstatic.com/s/convergence/v5/eykrGz1NN_YpQmkAZjW-qKCWcynf_cDxXwCLxiixG1c.ttf"
3485
- }
3486
- },
3487
- {
3488
- "kind": "webfonts#webfont",
3489
- "family": "Cookie",
3490
- "category": "handwriting",
3491
- "variants": [
3492
- "regular"
3493
- ],
3494
- "subsets": [
3495
- "latin"
3496
- ],
3497
- "version": "v7",
3498
- "lastModified": "2016-05-31",
3499
- "files": {
3500
- "regular": "http://fonts.gstatic.com/s/cookie/v7/HxeUC62y_YdDbiFlze357A.ttf"
3501
- }
3502
- },
3503
- {
3504
- "kind": "webfonts#webfont",
3505
- "family": "Copse",
3506
- "category": "serif",
3507
- "variants": [
3508
- "regular"
3509
- ],
3510
- "subsets": [
3511
- "latin"
3512
- ],
3513
- "version": "v6",
3514
- "lastModified": "2016-05-31",
3515
- "files": {
3516
- "regular": "http://fonts.gstatic.com/s/copse/v6/wikLrtPGjZDvZ5w2i5HLWg.ttf"
3517
- }
3518
- },
3519
- {
3520
- "kind": "webfonts#webfont",
3521
- "family": "Corben",
3522
- "category": "display",
3523
- "variants": [
3524
- "regular",
3525
- "700"
3526
- ],
3527
- "subsets": [
3528
- "latin-ext",
3529
- "latin"
3530
- ],
3531
- "version": "v9",
3532
- "lastModified": "2016-05-31",
3533
- "files": {
3534
- "regular": "http://fonts.gstatic.com/s/corben/v9/tTysMZkt-j8Y5yhkgsoajQ.ttf",
3535
- "700": "http://fonts.gstatic.com/s/corben/v9/lirJaFSQWdGQuV--fksg5g.ttf"
3536
- }
3537
- },
3538
- {
3539
- "kind": "webfonts#webfont",
3540
- "family": "Cormorant",
3541
- "category": "serif",
3542
- "variants": [
3543
- "300",
3544
- "300italic",
3545
- "regular",
3546
- "italic",
3547
- "500",
3548
- "500italic",
3549
- "600",
3550
- "600italic",
3551
- "700",
3552
- "700italic"
3553
- ],
3554
- "subsets": [
3555
- "latin-ext",
3556
- "cyrillic",
3557
- "latin",
3558
- "vietnamese"
3559
- ],
3560
- "version": "v1",
3561
- "lastModified": "2016-06-20",
3562
- "files": {
3563
- "300": "http://fonts.gstatic.com/s/cormorant/v1/diggKPcUerIA8GQWRVxsVS3USBnSvpkopQaUR-2r7iU.ttf",
3564
- "300italic": "http://fonts.gstatic.com/s/cormorant/v1/UydD9tmk-DfLnEFRr_bBZy9-WlPSxbfiI49GsXo3q0g.ttf",
3565
- "regular": "http://fonts.gstatic.com/s/cormorant/v1/9vWr5LgrNEgvhv1P3z9uuQ.ttf",
3566
- "italic": "http://fonts.gstatic.com/s/cormorant/v1/zzcH3j00ejnIc8jicdcz6KCWcynf_cDxXwCLxiixG1c.ttf",
3567
- "500": "http://fonts.gstatic.com/s/cormorant/v1/lwoiMb1lzDf49h802vpRUy3USBnSvpkopQaUR-2r7iU.ttf",
3568
- "500italic": "http://fonts.gstatic.com/s/cormorant/v1/UydD9tmk-DfLnEFRr_bBZ8CNfqCYlB_eIx7H1TVXe60.ttf",
3569
- "600": "http://fonts.gstatic.com/s/cormorant/v1/LKEtp8XimHLN0gSYqnV9qy3USBnSvpkopQaUR-2r7iU.ttf",
3570
- "600italic": "http://fonts.gstatic.com/s/cormorant/v1/UydD9tmk-DfLnEFRr_bBZ5Z7xm-Bj30Bj2KNdXDzSZg.ttf",
3571
- "700": "http://fonts.gstatic.com/s/cormorant/v1/vOi7JV5F3JmPzXDgUqUwgS3USBnSvpkopQaUR-2r7iU.ttf",
3572
- "700italic": "http://fonts.gstatic.com/s/cormorant/v1/UydD9tmk-DfLnEFRr_bBZ3e1Pd76Vl7zRpE7NLJQ7XU.ttf"
3573
- }
3574
- },
3575
- {
3576
- "kind": "webfonts#webfont",
3577
- "family": "Cormorant Garamond",
3578
- "category": "serif",
3579
- "variants": [
3580
- "300",
3581
- "300italic",
3582
- "regular",
3583
- "italic",
3584
- "500",
3585
- "500italic",
3586
- "600",
3587
- "600italic",
3588
- "700",
3589
- "700italic"
3590
- ],
3591
- "subsets": [
3592
- "latin-ext",
3593
- "cyrillic",
3594
- "latin",
3595
- "vietnamese"
3596
- ],
3597
- "version": "v1",
3598
- "lastModified": "2016-06-20",
3599
- "files": {
3600
- "300": "http://fonts.gstatic.com/s/cormorantgaramond/v1/iEjm9hVxcattz37Y8gZwVXDeRRUpi2fYbqcTC9PsYaU.ttf",
3601
- "300italic": "http://fonts.gstatic.com/s/cormorantgaramond/v1/zuqx3k1yUEl3Eavo-ZPEAjZXe39LdglsIzDOvKnCCso.ttf",
3602
- "regular": "http://fonts.gstatic.com/s/cormorantgaramond/v1/EI2hhCO6kSfLAy-Dpd8fd7_BES7rBA-D9Lo3vCx9yHc.ttf",
3603
- "italic": "http://fonts.gstatic.com/s/cormorantgaramond/v1/eGTlzchVxDKKvK6d7drzlkVlEttMzBRhK_wsRQ4MqEE.ttf",
3604
- "500": "http://fonts.gstatic.com/s/cormorantgaramond/v1/iEjm9hVxcattz37Y8gZwVSkwnhSVYGQY4MSUB3uw374.ttf",
3605
- "500italic": "http://fonts.gstatic.com/s/cormorantgaramond/v1/zuqx3k1yUEl3Eavo-ZPEAq8qrY1CcUgPLrA3ytfr3SY.ttf",
3606
- "600": "http://fonts.gstatic.com/s/cormorantgaramond/v1/iEjm9hVxcattz37Y8gZwVVc2xdGA7R8efE0K6NwSoyI.ttf",
3607
- "600italic": "http://fonts.gstatic.com/s/cormorantgaramond/v1/zuqx3k1yUEl3Eavo-ZPEAqms9Rm_p2hhD4xhClOGPEw.ttf",
3608
- "700": "http://fonts.gstatic.com/s/cormorantgaramond/v1/iEjm9hVxcattz37Y8gZwVdNg01MkafbqNYmDx8wt95c.ttf",
3609
- "700italic": "http://fonts.gstatic.com/s/cormorantgaramond/v1/zuqx3k1yUEl3Eavo-ZPEAvEntfLz8TC-DlAIEJQEwCA.ttf"
3610
- }
3611
- },
3612
- {
3613
- "kind": "webfonts#webfont",
3614
- "family": "Cormorant Infant",
3615
- "category": "serif",
3616
- "variants": [
3617
- "300",
3618
- "300italic",
3619
- "regular",
3620
- "italic",
3621
- "500",
3622
- "500italic",
3623
- "600",
3624
- "600italic",
3625
- "700",
3626
- "700italic"
3627
- ],
3628
- "subsets": [
3629
- "latin-ext",
3630
- "cyrillic",
3631
- "latin",
3632
- "vietnamese"
3633
- ],
3634
- "version": "v1",
3635
- "lastModified": "2016-06-20",
3636
- "files": {
3637
- "300": "http://fonts.gstatic.com/s/cormorantinfant/v1/MYRpw6pQIf0XStsiZXQWA_alucuYFvoGqpCMGloCN2Y.ttf",
3638
- "300italic": "http://fonts.gstatic.com/s/cormorantinfant/v1/PK34LKusK6SSQFR2m5-LZgNCjGMFnYSoo4kW2wZNowE.ttf",
3639
- "regular": "http://fonts.gstatic.com/s/cormorantinfant/v1/q5F0I_a42y_qtMoOtqdjagGlf-pqPDOheSBqZOVpkRo.ttf",
3640
- "italic": "http://fonts.gstatic.com/s/cormorantinfant/v1/U6OamtMgLoVs0zd53Z1pNpbq6_N3pcDBvA-VsecMIAA.ttf",
3641
- "500": "http://fonts.gstatic.com/s/cormorantinfant/v1/MYRpw6pQIf0XStsiZXQWA4PJQ8Vh-2Qw35Pq7cVYzdo.ttf",
3642
- "500italic": "http://fonts.gstatic.com/s/cormorantinfant/v1/PK34LKusK6SSQFR2m5-LZq9x-au7fLBTFpfuT52_G64.ttf",
3643
- "600": "http://fonts.gstatic.com/s/cormorantinfant/v1/MYRpw6pQIf0XStsiZXQWA9G0tNuOpbNMRdNl4S5e-n0.ttf",
3644
- "600italic": "http://fonts.gstatic.com/s/cormorantinfant/v1/PK34LKusK6SSQFR2m5-LZkZbdnTqrL_1WMEFjxg0OwY.ttf",
3645
- "700": "http://fonts.gstatic.com/s/cormorantinfant/v1/MYRpw6pQIf0XStsiZXQWAx-3ZynwDtU_450Ho62jf_I.ttf",
3646
- "700italic": "http://fonts.gstatic.com/s/cormorantinfant/v1/PK34LKusK6SSQFR2m5-LZmKEEmz9BBHY1o7RrRAiUXQ.ttf"
3647
- }
3648
- },
3649
- {
3650
- "kind": "webfonts#webfont",
3651
- "family": "Cormorant SC",
3652
- "category": "serif",
3653
- "variants": [
3654
- "300",
3655
- "regular",
3656
- "500",
3657
- "600",
3658
- "700"
3659
- ],
3660
- "subsets": [
3661
- "latin-ext",
3662
- "cyrillic",
3663
- "latin",
3664
- "vietnamese"
3665
- ],
3666
- "version": "v1",
3667
- "lastModified": "2016-06-20",
3668
- "files": {
3669
- "300": "http://fonts.gstatic.com/s/cormorantsc/v1/CCo4fI9EYzhUJcvojQ9Em6cQoVhARpoaILP7amxE_8g.ttf",
3670
- "regular": "http://fonts.gstatic.com/s/cormorantsc/v1/o2HxNCgvhmwJdltu-68tzC3USBnSvpkopQaUR-2r7iU.ttf",
3671
- "500": "http://fonts.gstatic.com/s/cormorantsc/v1/CCo4fI9EYzhUJcvojQ9Em5MQuUSAwdHsY8ov_6tk1oA.ttf",
3672
- "600": "http://fonts.gstatic.com/s/cormorantsc/v1/CCo4fI9EYzhUJcvojQ9Em2v8CylhIUtwUiYO7Z2wXbE.ttf",
3673
- "700": "http://fonts.gstatic.com/s/cormorantsc/v1/CCo4fI9EYzhUJcvojQ9Em0D2ttfZwueP-QU272T9-k4.ttf"
3674
- }
3675
- },
3676
- {
3677
- "kind": "webfonts#webfont",
3678
- "family": "Cormorant Unicase",
3679
- "category": "serif",
3680
- "variants": [
3681
- "300",
3682
- "regular",
3683
- "500",
3684
- "600",
3685
- "700"
3686
- ],
3687
- "subsets": [
3688
- "latin-ext",
3689
- "cyrillic",
3690
- "latin",
3691
- "vietnamese"
3692
- ],
3693
- "version": "v1",
3694
- "lastModified": "2016-06-20",
3695
- "files": {
3696
- "300": "http://fonts.gstatic.com/s/cormorantunicase/v1/-0mwRHhjEGfrz-UDHJ_78TyAYAK5JX1-zBpfFXu9t3Y.ttf",
3697
- "regular": "http://fonts.gstatic.com/s/cormorantunicase/v1/THO7JMNV6qRoZlg7dU5RUz01TLsHlMvD1uPU3gXOh9s.ttf",
3698
- "500": "http://fonts.gstatic.com/s/cormorantunicase/v1/-0mwRHhjEGfrz-UDHJ_78WActzpz5sLElWWJpZBcHK4.ttf",
3699
- "600": "http://fonts.gstatic.com/s/cormorantunicase/v1/-0mwRHhjEGfrz-UDHJ_78U0bQT13XmwBbvkXy6Yb64Y.ttf",
3700
- "700": "http://fonts.gstatic.com/s/cormorantunicase/v1/-0mwRHhjEGfrz-UDHJ_78Z5CFeQBXku3ADXbkP2V7W8.ttf"
3701
- }
3702
- },
3703
- {
3704
- "kind": "webfonts#webfont",
3705
- "family": "Cormorant Upright",
3706
- "category": "serif",
3707
- "variants": [
3708
- "300",
3709
- "regular",
3710
- "500",
3711
- "600",
3712
- "700"
3713
- ],
3714
- "subsets": [
3715
- "latin-ext",
3716
- "latin",
3717
- "vietnamese"
3718
- ],
3719
- "version": "v1",
3720
- "lastModified": "2016-06-20",
3721
- "files": {
3722
- "300": "http://fonts.gstatic.com/s/cormorantupright/v1/PwJT_lCdbLUyVq-tARIPhjCfCvaSiUMfec2BKBTMAaw.ttf",
3723
- "regular": "http://fonts.gstatic.com/s/cormorantupright/v1/0n68kajKjTOJn9EPQkf1a-ojtTJJf2MtgkoRSid3NcM.ttf",
3724
- "500": "http://fonts.gstatic.com/s/cormorantupright/v1/PwJT_lCdbLUyVq-tARIPhiWhx5Kr-bzfZXhgF-AnSvk.ttf",
3725
- "600": "http://fonts.gstatic.com/s/cormorantupright/v1/PwJT_lCdbLUyVq-tARIPhuDigFx2V_wQ4SOTZdg5a2s.ttf",
3726
- "700": "http://fonts.gstatic.com/s/cormorantupright/v1/PwJT_lCdbLUyVq-tARIPhuO6SP7lRr11seyd3AkK37Q.ttf"
3727
- }
3728
- },
3729
- {
3730
- "kind": "webfonts#webfont",
3731
- "family": "Courgette",
3732
- "category": "handwriting",
3733
- "variants": [
3734
- "regular"
3735
- ],
3736
- "subsets": [
3737
- "latin-ext",
3738
- "latin"
3739
- ],
3740
- "version": "v4",
3741
- "lastModified": "2016-06-07",
3742
- "files": {
3743
- "regular": "http://fonts.gstatic.com/s/courgette/v4/2YO0EYtyE9HUPLZprahpZA.ttf"
3744
- }
3745
- },
3746
- {
3747
- "kind": "webfonts#webfont",
3748
- "family": "Cousine",
3749
- "category": "monospace",
3750
- "variants": [
3751
- "regular",
3752
- "italic",
3753
- "700",
3754
- "700italic"
3755
- ],
3756
- "subsets": [
3757
- "cyrillic-ext",
3758
- "latin-ext",
3759
- "hebrew",
3760
- "cyrillic",
3761
- "greek",
3762
- "latin",
3763
- "greek-ext",
3764
- "vietnamese"
3765
- ],
3766
- "version": "v10",
3767
- "lastModified": "2016-10-05",
3768
- "files": {
3769
- "regular": "http://fonts.gstatic.com/s/cousine/v10/GYX4bPXObJNJo63QJEUnLg.ttf",
3770
- "italic": "http://fonts.gstatic.com/s/cousine/v10/1WtIuajLoo8vjVwsrZ3eOg.ttf",
3771
- "700": "http://fonts.gstatic.com/s/cousine/v10/FXEOnNUcCzhdtoBxiq-lovesZW2xOQ-xsNqO47m55DA.ttf",
3772
- "700italic": "http://fonts.gstatic.com/s/cousine/v10/y_AZ5Sz-FwL1lux2xLSTZS3USBnSvpkopQaUR-2r7iU.ttf"
3773
- }
3774
- },
3775
- {
3776
- "kind": "webfonts#webfont",
3777
- "family": "Coustard",
3778
- "category": "serif",
3779
- "variants": [
3780
- "regular",
3781
- "900"
3782
- ],
3783
- "subsets": [
3784
- "latin"
3785
- ],
3786
- "version": "v6",
3787
- "lastModified": "2016-05-31",
3788
- "files": {
3789
- "regular": "http://fonts.gstatic.com/s/coustard/v6/iO2Rs5PmqAEAXoU3SkMVBg.ttf",
3790
- "900": "http://fonts.gstatic.com/s/coustard/v6/W02OCWO6OfMUHz6aVyegQ6CWcynf_cDxXwCLxiixG1c.ttf"
3791
- }
3792
- },
3793
- {
3794
- "kind": "webfonts#webfont",
3795
- "family": "Covered By Your Grace",
3796
- "category": "handwriting",
3797
- "variants": [
3798
- "regular"
3799
- ],
3800
- "subsets": [
3801
- "latin"
3802
- ],
3803
- "version": "v6",
3804
- "lastModified": "2016-06-07",
3805
- "files": {
3806
- "regular": "http://fonts.gstatic.com/s/coveredbyyourgrace/v6/6ozZp4BPlrbDRWPe3EBGA6CVUMdvnk-GcAiZQrX9Gek.ttf"
3807
- }
3808
- },
3809
- {
3810
- "kind": "webfonts#webfont",
3811
- "family": "Crafty Girls",
3812
- "category": "handwriting",
3813
- "variants": [
3814
- "regular"
3815
- ],
3816
- "subsets": [
3817
- "latin"
3818
- ],
3819
- "version": "v5",
3820
- "lastModified": "2016-10-05",
3821
- "files": {
3822
- "regular": "http://fonts.gstatic.com/s/craftygirls/v5/0Sv8UWFFdhQmesHL32H8oy3USBnSvpkopQaUR-2r7iU.ttf"
3823
- }
3824
- },
3825
- {
3826
- "kind": "webfonts#webfont",
3827
- "family": "Creepster",
3828
- "category": "display",
3829
- "variants": [
3830
- "regular"
3831
- ],
3832
- "subsets": [
3833
- "latin"
3834
- ],
3835
- "version": "v5",
3836
- "lastModified": "2016-06-07",
3837
- "files": {
3838
- "regular": "http://fonts.gstatic.com/s/creepster/v5/0vdr5kWJ6aJlOg5JvxnXzQ.ttf"
3839
- }
3840
- },
3841
- {
3842
- "kind": "webfonts#webfont",
3843
- "family": "Crete Round",
3844
- "category": "serif",
3845
- "variants": [
3846
- "regular",
3847
- "italic"
3848
- ],
3849
- "subsets": [
3850
- "latin-ext",
3851
- "latin"
3852
- ],
3853
- "version": "v5",
3854
- "lastModified": "2016-05-31",
3855
- "files": {
3856
- "regular": "http://fonts.gstatic.com/s/creteround/v5/B8EwN421qqOCCT8vOH4wJ6CWcynf_cDxXwCLxiixG1c.ttf",
3857
- "italic": "http://fonts.gstatic.com/s/creteround/v5/5xAt7XK2vkUdjhGtt98unUeOrDcLawS7-ssYqLr2Xp4.ttf"
3858
- }
3859
- },
3860
- {
3861
- "kind": "webfonts#webfont",
3862
- "family": "Crimson Text",
3863
- "category": "serif",
3864
- "variants": [
3865
- "regular",
3866
- "italic",
3867
- "600",
3868
- "600italic",
3869
- "700",
3870
- "700italic"
3871
- ],
3872
- "subsets": [
3873
- "latin"
3874
- ],
3875
- "version": "v6",
3876
- "lastModified": "2016-05-31",
3877
- "files": {
3878
- "regular": "http://fonts.gstatic.com/s/crimsontext/v6/3IFMwfRa07i-auYR-B-zNS3USBnSvpkopQaUR-2r7iU.ttf",
3879
- "italic": "http://fonts.gstatic.com/s/crimsontext/v6/a5QZnvmn5amyNI-t2BMkWPMZXuCXbOrAvx5R0IT5Oyo.ttf",
3880
- "600": "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I2v8CylhIUtwUiYO7Z2wXbE.ttf",
3881
- "600italic": "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDIR-5-urNOGAobhAyctHvW8.ttf",
3882
- "700": "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I0D2ttfZwueP-QU272T9-k4.ttf",
3883
- "700italic": "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDPAs9-1nE9qOqhChW0m4nDE.ttf"
3884
- }
3885
- },
3886
- {
3887
- "kind": "webfonts#webfont",
3888
- "family": "Croissant One",
3889
- "category": "display",
3890
- "variants": [
3891
- "regular"
3892
- ],
3893
- "subsets": [
3894
- "latin-ext",
3895
- "latin"
3896
- ],
3897
- "version": "v4",
3898
- "lastModified": "2016-05-31",
3899
- "files": {
3900
- "regular": "http://fonts.gstatic.com/s/croissantone/v4/mPjsOObnC77fp1cvZlOfIYjjx0o0jr6fNXxPgYh_a8Q.ttf"
3901
- }
3902
- },
3903
- {
3904
- "kind": "webfonts#webfont",
3905
- "family": "Crushed",
3906
- "category": "display",
3907
- "variants": [
3908
- "regular"
3909
- ],
3910
- "subsets": [
3911
- "latin"
3912
- ],
3913
- "version": "v6",
3914
- "lastModified": "2016-10-05",
3915
- "files": {
3916
- "regular": "http://fonts.gstatic.com/s/crushed/v6/aHwSejs3Kt0Lg95u7j32jA.ttf"
3917
- }
3918
- },
3919
- {
3920
- "kind": "webfonts#webfont",
3921
- "family": "Cuprum",
3922
- "category": "sans-serif",
3923
- "variants": [
3924
- "regular",
3925
- "italic",
3926
- "700",
3927
- "700italic"
3928
- ],
3929
- "subsets": [
3930
- "latin-ext",
3931
- "cyrillic",
3932
- "latin"
3933
- ],
3934
- "version": "v7",
3935
- "lastModified": "2016-05-31",
3936
- "files": {
3937
- "regular": "http://fonts.gstatic.com/s/cuprum/v7/JgXs0F_UiaEdAS74msmFNg.ttf",
3938
- "italic": "http://fonts.gstatic.com/s/cuprum/v7/cLEz0KV6OxInnktSzpk58g.ttf",
3939
- "700": "http://fonts.gstatic.com/s/cuprum/v7/6tl3_FkDeXSD72oEHuJh4w.ttf",
3940
- "700italic": "http://fonts.gstatic.com/s/cuprum/v7/bnkXaBfoYvaJ75axRPSwVKCWcynf_cDxXwCLxiixG1c.ttf"
3941
- }
3942
- },
3943
- {
3944
- "kind": "webfonts#webfont",
3945
- "family": "Cutive",
3946
- "category": "serif",
3947
- "variants": [
3948
- "regular"
3949
- ],
3950
- "subsets": [
3951
- "latin-ext",
3952
- "latin"
3953
- ],
3954
- "version": "v8",
3955
- "lastModified": "2016-05-31",
3956
- "files": {
3957
- "regular": "http://fonts.gstatic.com/s/cutive/v8/G2bW-ImyOCwKxBkLyz39YQ.ttf"
3958
- }
3959
- },
3960
- {
3961
- "kind": "webfonts#webfont",
3962
- "family": "Cutive Mono",
3963
- "category": "monospace",
3964
- "variants": [
3965
- "regular"
3966
- ],
3967
- "subsets": [
3968
- "latin-ext",
3969
- "latin"
3970
- ],
3971
- "version": "v4",
3972
- "lastModified": "2016-05-31",
3973
- "files": {
3974
- "regular": "http://fonts.gstatic.com/s/cutivemono/v4/ncWQtFVKcSs8OW798v30k6CWcynf_cDxXwCLxiixG1c.ttf"
3975
- }
3976
- },
3977
- {
3978
- "kind": "webfonts#webfont",
3979
- "family": "Damion",
3980
- "category": "handwriting",
3981
- "variants": [
3982
- "regular"
3983
- ],
3984
- "subsets": [
3985
- "latin"
3986
- ],
3987
- "version": "v6",
3988
- "lastModified": "2016-05-31",
3989
- "files": {
3990
- "regular": "http://fonts.gstatic.com/s/damion/v6/13XtECwKxhD_VrOqXL4SiA.ttf"
3991
- }
3992
- },
3993
- {
3994
- "kind": "webfonts#webfont",
3995
- "family": "Dancing Script",
3996
- "category": "handwriting",
3997
- "variants": [
3998
- "regular",
3999
- "700"
4000
- ],
4001
- "subsets": [
4002
- "latin"
4003
- ],
4004
- "version": "v7",
4005
- "lastModified": "2016-05-31",
4006
- "files": {
4007
- "regular": "http://fonts.gstatic.com/s/dancingscript/v7/DK0eTGXiZjN6yA8zAEyM2RnpV0hQCek3EmWnCPrvGRM.ttf",
4008
- "700": "http://fonts.gstatic.com/s/dancingscript/v7/KGBfwabt0ZRLA5W1ywjowb_dAmXiKjTPGCuO6G2MbfA.ttf"
4009
- }
4010
- },
4011
- {
4012
- "kind": "webfonts#webfont",
4013
- "family": "Dangrek",
4014
- "category": "display",
4015
- "variants": [
4016
- "regular"
4017
- ],
4018
- "subsets": [
4019
- "khmer"
4020
- ],
4021
- "version": "v8",
4022
- "lastModified": "2016-05-31",
4023
- "files": {
4024
- "regular": "http://fonts.gstatic.com/s/dangrek/v8/LOaFhBT-EHNxZjV8DAW_ew.ttf"
4025
- }
4026
- },
4027
- {
4028
- "kind": "webfonts#webfont",
4029
- "family": "David Libre",
4030
- "category": "serif",
4031
- "variants": [
4032
- "regular",
4033
- "500",
4034
- "700"
4035
- ],
4036
- "subsets": [
4037
- "latin-ext",
4038
- "hebrew",
4039
- "latin",
4040
- "vietnamese"
4041
- ],
4042
- "version": "v1",
4043
- "lastModified": "2016-06-20",
4044
- "files": {
4045
- "regular": "http://fonts.gstatic.com/s/davidlibre/v1/Fp_YuX4CP0pzlSUtACdOo6CWcynf_cDxXwCLxiixG1c.ttf",
4046
- "500": "http://fonts.gstatic.com/s/davidlibre/v1/ea-623K8OFNeGhfSzdpmysCNfqCYlB_eIx7H1TVXe60.ttf",
4047
- "700": "http://fonts.gstatic.com/s/davidlibre/v1/ea-623K8OFNeGhfSzdpmyne1Pd76Vl7zRpE7NLJQ7XU.ttf"
4048
- }
4049
- },
4050
- {
4051
- "kind": "webfonts#webfont",
4052
- "family": "Dawning of a New Day",
4053
- "category": "handwriting",
4054
- "variants": [
4055
- "regular"
4056
- ],
4057
- "subsets": [
4058
- "latin"
4059
- ],
4060
- "version": "v7",
4061
- "lastModified": "2016-05-31",
4062
- "files": {
4063
- "regular": "http://fonts.gstatic.com/s/dawningofanewday/v7/JiDsRhiKZt8uz3NJ5xA06gXLnohmOYWQZqo_sW8GLTk.ttf"
4064
- }
4065
- },
4066
- {
4067
- "kind": "webfonts#webfont",
4068
- "family": "Days One",
4069
- "category": "sans-serif",
4070
- "variants": [
4071
- "regular"
4072
- ],
4073
- "subsets": [
4074
- "latin"
4075
- ],
4076
- "version": "v6",
4077
- "lastModified": "2016-05-31",
4078
- "files": {
4079
- "regular": "http://fonts.gstatic.com/s/daysone/v6/kzwZjNhc1iabMsrc_hKBIA.ttf"
4080
- }
4081
- },
4082
- {
4083
- "kind": "webfonts#webfont",
4084
- "family": "Dekko",
4085
- "category": "handwriting",
4086
- "variants": [
4087
- "regular"
4088
- ],
4089
- "subsets": [
4090
- "latin-ext",
4091
- "devanagari",
4092
- "latin"
4093
- ],
4094
- "version": "v3",
4095
- "lastModified": "2016-05-31",
4096
- "files": {
4097
- "regular": "http://fonts.gstatic.com/s/dekko/v3/AKtgABKC1rUxgIgS-bpojw.ttf"
4098
- }
4099
- },
4100
- {
4101
- "kind": "webfonts#webfont",
4102
- "family": "Delius",
4103
- "category": "handwriting",
4104
- "variants": [
4105
- "regular"
4106
- ],
4107
- "subsets": [
4108
- "latin"
4109
- ],
4110
- "version": "v6",
4111
- "lastModified": "2016-05-31",
4112
- "files": {
4113
- "regular": "http://fonts.gstatic.com/s/delius/v6/TQA163qafki2-gV-B6F_ag.ttf"
4114
- }
4115
- },
4116
- {
4117
- "kind": "webfonts#webfont",
4118
- "family": "Delius Swash Caps",
4119
- "category": "handwriting",
4120
- "variants": [
4121
- "regular"
4122
- ],
4123
- "subsets": [
4124
- "latin"
4125
- ],
4126
- "version": "v8",
4127
- "lastModified": "2016-05-31",
4128
- "files": {
4129
- "regular": "http://fonts.gstatic.com/s/deliusswashcaps/v8/uXyrEUnoWApxIOICunRq7yIrxb5zDVgU2N3VzXm7zq4.ttf"
4130
- }
4131
- },
4132
- {
4133
- "kind": "webfonts#webfont",
4134
- "family": "Delius Unicase",
4135
- "category": "handwriting",
4136
- "variants": [
4137
- "regular",
4138
- "700"
4139
- ],
4140
- "subsets": [
4141
- "latin"
4142
- ],
4143
- "version": "v9",
4144
- "lastModified": "2016-05-31",
4145
- "files": {
4146
- "regular": "http://fonts.gstatic.com/s/deliusunicase/v9/b2sKujV3Q48RV2PQ0k1vqu6rPKfVZo7L2bERcf0BDns.ttf",
4147
- "700": "http://fonts.gstatic.com/s/deliusunicase/v9/7FTMTITcb4dxUp99FAdTqNy5weKXdcrx-wE0cgECMq8.ttf"
4148
- }
4149
- },
4150
- {
4151
- "kind": "webfonts#webfont",
4152
- "family": "Della Respira",
4153
- "category": "serif",
4154
- "variants": [
4155
- "regular"
4156
- ],
4157
- "subsets": [
4158
- "latin"
4159
- ],
4160
- "version": "v4",
4161
- "lastModified": "2016-06-07",
4162
- "files": {
4163
- "regular": "http://fonts.gstatic.com/s/dellarespira/v4/F4E6Lo_IZ6L9AJCcbqtDVeDcg5akpSnIcsPhLOFv7l8.ttf"
4164
- }
4165
- },
4166
- {
4167
- "kind": "webfonts#webfont",
4168
- "family": "Denk One",
4169
- "category": "sans-serif",
4170
- "variants": [
4171
- "regular"
4172
- ],
4173
- "subsets": [
4174
- "latin-ext",
4175
- "latin"
4176
- ],
4177
- "version": "v4",
4178
- "lastModified": "2016-06-07",
4179
- "files": {
4180
- "regular": "http://fonts.gstatic.com/s/denkone/v4/TdXOeA4eA_hEx4W8Sh9wPw.ttf"
4181
- }
4182
- },
4183
- {
4184
- "kind": "webfonts#webfont",
4185
- "family": "Devonshire",
4186
- "category": "handwriting",
4187
- "variants": [
4188
- "regular"
4189
- ],
4190
- "subsets": [
4191
- "latin-ext",
4192
- "latin"
4193
- ],
4194
- "version": "v5",
4195
- "lastModified": "2016-05-31",
4196
- "files": {
4197
- "regular": "http://fonts.gstatic.com/s/devonshire/v5/I3ct_2t12SYizP8ZC-KFi_esZW2xOQ-xsNqO47m55DA.ttf"
4198
- }
4199
- },
4200
- {
4201
- "kind": "webfonts#webfont",
4202
- "family": "Dhurjati",
4203
- "category": "sans-serif",
4204
- "variants": [
4205
- "regular"
4206
- ],
4207
- "subsets": [
4208
- "latin",
4209
- "telugu"
4210
- ],
4211
- "version": "v4",
4212
- "lastModified": "2016-05-31",
4213
- "files": {
4214
- "regular": "http://fonts.gstatic.com/s/dhurjati/v4/uV6jO5e2iFMbGB0z79Cy5g.ttf"
4215
- }
4216
- },
4217
- {
4218
- "kind": "webfonts#webfont",
4219
- "family": "Didact Gothic",
4220
- "category": "sans-serif",
4221
- "variants": [
4222
- "regular"
4223
- ],
4224
- "subsets": [
4225
- "cyrillic-ext",
4226
- "latin-ext",
4227
- "cyrillic",
4228
- "greek",
4229
- "latin",
4230
- "greek-ext"
4231
- ],
4232
- "version": "v7",
4233
- "lastModified": "2016-05-31",
4234
- "files": {
4235
- "regular": "http://fonts.gstatic.com/s/didactgothic/v7/v8_72sD3DYMKyM0dn3LtWotBLojGU5Qdl8-5NL4v70w.ttf"
4236
- }
4237
- },
4238
- {
4239
- "kind": "webfonts#webfont",
4240
- "family": "Diplomata",
4241
- "category": "display",
4242
- "variants": [
4243
- "regular"
4244
- ],
4245
- "subsets": [
4246
- "latin-ext",
4247
- "latin"
4248
- ],
4249
- "version": "v8",
4250
- "lastModified": "2016-05-31",
4251
- "files": {
4252
- "regular": "http://fonts.gstatic.com/s/diplomata/v8/u-ByBiKgN6rTMA36H3kcKg.ttf"
4253
- }
4254
- },
4255
- {
4256
- "kind": "webfonts#webfont",
4257
- "family": "Diplomata SC",
4258
- "category": "display",
4259
- "variants": [
4260
- "regular"
4261
- ],
4262
- "subsets": [
4263
- "latin-ext",
4264
- "latin"
4265
- ],
4266
- "version": "v5",
4267
- "lastModified": "2016-05-31",
4268
- "files": {
4269
- "regular": "http://fonts.gstatic.com/s/diplomatasc/v5/JdVwAwfE1a_pahXjk5qpNi3USBnSvpkopQaUR-2r7iU.ttf"
4270
- }
4271
- },
4272
- {
4273
- "kind": "webfonts#webfont",
4274
- "family": "Domine",
4275
- "category": "serif",
4276
- "variants": [
4277
- "regular",
4278
- "700"
4279
- ],
4280
- "subsets": [
4281
- "latin-ext",
4282
- "latin"
4283
- ],
4284
- "version": "v4",
4285
- "lastModified": "2016-05-31",
4286
- "files": {
4287
- "regular": "http://fonts.gstatic.com/s/domine/v4/wfVIgamVFjMNQAEWurCiHA.ttf",
4288
- "700": "http://fonts.gstatic.com/s/domine/v4/phBcG1ZbQFxUIt18hPVxnw.ttf"
4289
- }
4290
- },
4291
- {
4292
- "kind": "webfonts#webfont",
4293
- "family": "Donegal One",
4294
- "category": "serif",
4295
- "variants": [
4296
- "regular"
4297
- ],
4298
- "subsets": [
4299
- "latin-ext",
4300
- "latin"
4301
- ],
4302
- "version": "v4",
4303
- "lastModified": "2016-06-07",
4304
- "files": {
4305
- "regular": "http://fonts.gstatic.com/s/donegalone/v4/6kN4-fDxz7T9s5U61HwfF6CWcynf_cDxXwCLxiixG1c.ttf"
4306
- }
4307
- },
4308
- {
4309
- "kind": "webfonts#webfont",
4310
- "family": "Doppio One",
4311
- "category": "sans-serif",
4312
- "variants": [
4313
- "regular"
4314
- ],
4315
- "subsets": [
4316
- "latin-ext",
4317
- "latin"
4318
- ],
4319
- "version": "v4",
4320
- "lastModified": "2016-06-07",
4321
- "files": {
4322
- "regular": "http://fonts.gstatic.com/s/doppioone/v4/WHZ3HJQotpk_4aSMNBo_t_esZW2xOQ-xsNqO47m55DA.ttf"
4323
- }
4324
- },
4325
- {
4326
- "kind": "webfonts#webfont",
4327
- "family": "Dorsa",
4328
- "category": "sans-serif",
4329
- "variants": [
4330
- "regular"
4331
- ],
4332
- "subsets": [
4333
- "latin"
4334
- ],
4335
- "version": "v7",
4336
- "lastModified": "2016-05-31",
4337
- "files": {
4338
- "regular": "http://fonts.gstatic.com/s/dorsa/v7/wCc3cUe6XrmG2LQE6GlIrw.ttf"
4339
- }
4340
- },
4341
- {
4342
- "kind": "webfonts#webfont",
4343
- "family": "Dosis",
4344
- "category": "sans-serif",
4345
- "variants": [
4346
- "200",
4347
- "300",
4348
- "regular",
4349
- "500",
4350
- "600",
4351
- "700",
4352
- "800"
4353
- ],
4354
- "subsets": [
4355
- "latin-ext",
4356
- "latin"
4357
- ],
4358
- "version": "v6",
4359
- "lastModified": "2016-05-31",
4360
- "files": {
4361
- "200": "http://fonts.gstatic.com/s/dosis/v6/ztftab0r6hcd7AeurUGrSQ.ttf",
4362
- "300": "http://fonts.gstatic.com/s/dosis/v6/awIB6L0h5mb0plIKorXmuA.ttf",
4363
- "regular": "http://fonts.gstatic.com/s/dosis/v6/rJRlixu-w0JZ1MyhJpao_Q.ttf",
4364
- "500": "http://fonts.gstatic.com/s/dosis/v6/ruEXDOFMxDPGnjCBKRqdAQ.ttf",
4365
- "600": "http://fonts.gstatic.com/s/dosis/v6/KNAswRNwm3tfONddYyidxg.ttf",
4366
- "700": "http://fonts.gstatic.com/s/dosis/v6/AEEAj0ONidK8NQQMBBlSig.ttf",
4367
- "800": "http://fonts.gstatic.com/s/dosis/v6/nlrKd8E69vvUU39XGsvR7Q.ttf"
4368
- }
4369
- },
4370
- {
4371
- "kind": "webfonts#webfont",
4372
- "family": "Dr Sugiyama",
4373
- "category": "handwriting",
4374
- "variants": [
4375
- "regular"
4376
- ],
4377
- "subsets": [
4378
- "latin-ext",
4379
- "latin"
4380
- ],
4381
- "version": "v5",
4382
- "lastModified": "2016-05-31",
4383
- "files": {
4384
- "regular": "http://fonts.gstatic.com/s/drsugiyama/v5/S5Yx3MIckgoyHhhS4C9Tv6CWcynf_cDxXwCLxiixG1c.ttf"
4385
- }
4386
- },
4387
- {
4388
- "kind": "webfonts#webfont",
4389
- "family": "Droid Sans",
4390
- "category": "sans-serif",
4391
- "variants": [
4392
- "regular",
4393
- "700"
4394
- ],
4395
- "subsets": [
4396
- "latin"
4397
- ],
4398
- "version": "v6",
4399
- "lastModified": "2016-10-05",
4400
- "files": {
4401
- "regular": "http://fonts.gstatic.com/s/droidsans/v6/rS9BT6-asrfjpkcV3DXf__esZW2xOQ-xsNqO47m55DA.ttf",
4402
- "700": "http://fonts.gstatic.com/s/droidsans/v6/EFpQQyG9GqCrobXxL-KRMQJKKGfqHaYFsRG-T3ceEVo.ttf"
4403
- }
4404
- },
4405
- {
4406
- "kind": "webfonts#webfont",
4407
- "family": "Droid Sans Mono",
4408
- "category": "monospace",
4409
- "variants": [
4410
- "regular"
4411
- ],
4412
- "subsets": [
4413
- "latin"
4414
- ],
4415
- "version": "v7",
4416
- "lastModified": "2016-10-05",
4417
- "files": {
4418
- "regular": "http://fonts.gstatic.com/s/droidsansmono/v7/ns-m2xQYezAtqh7ai59hJcwD6PD0c3_abh9zHKQtbGU.ttf"
4419
- }
4420
- },
4421
- {
4422
- "kind": "webfonts#webfont",
4423
- "family": "Droid Serif",
4424
- "category": "serif",
4425
- "variants": [
4426
- "regular",
4427
- "italic",
4428
- "700",
4429
- "700italic"
4430
- ],
4431
- "subsets": [
4432
- "latin"
4433
- ],
4434
- "version": "v6",
4435
- "lastModified": "2016-10-05",
4436
- "files": {
4437
- "regular": "http://fonts.gstatic.com/s/droidserif/v6/DgAtPy6rIVa2Zx3Xh9KaNaCWcynf_cDxXwCLxiixG1c.ttf",
4438
- "italic": "http://fonts.gstatic.com/s/droidserif/v6/cj2hUnSRBhwmSPr9kS5890eOrDcLawS7-ssYqLr2Xp4.ttf",
4439
- "700": "http://fonts.gstatic.com/s/droidserif/v6/QQt14e8dY39u-eYBZmppwXe1Pd76Vl7zRpE7NLJQ7XU.ttf",
4440
- "700italic": "http://fonts.gstatic.com/s/droidserif/v6/c92rD_x0V1LslSFt3-QEps_zJjSACmk0BRPxQqhnNLU.ttf"
4441
- }
4442
- },
4443
- {
4444
- "kind": "webfonts#webfont",
4445
- "family": "Duru Sans",
4446
- "category": "sans-serif",
4447
- "variants": [
4448
- "regular"
4449
- ],
4450
- "subsets": [
4451
- "latin-ext",
4452
- "latin"
4453
- ],
4454
- "version": "v9",
4455
- "lastModified": "2016-06-07",
4456
- "files": {
4457
- "regular": "http://fonts.gstatic.com/s/durusans/v9/xn7iYH8xwmSyTvEV_HOxTw.ttf"
4458
- }
4459
- },
4460
- {
4461
- "kind": "webfonts#webfont",
4462
- "family": "Dynalight",
4463
- "category": "display",
4464
- "variants": [
4465
- "regular"
4466
- ],
4467
- "subsets": [
4468
- "latin-ext",
4469
- "latin"
4470
- ],
4471
- "version": "v5",
4472
- "lastModified": "2016-05-31",
4473
- "files": {
4474
- "regular": "http://fonts.gstatic.com/s/dynalight/v5/-CWsIe8OUDWTIHjSAh41kA.ttf"
4475
- }
4476
- },
4477
- {
4478
- "kind": "webfonts#webfont",
4479
- "family": "EB Garamond",
4480
- "category": "serif",
4481
- "variants": [
4482
- "regular"
4483
- ],
4484
- "subsets": [
4485
- "cyrillic-ext",
4486
- "latin-ext",
4487
- "cyrillic",
4488
- "latin",
4489
- "vietnamese"
4490
- ],
4491
- "version": "v7",
4492
- "lastModified": "2016-06-07",
4493
- "files": {
4494
- "regular": "http://fonts.gstatic.com/s/ebgaramond/v7/CDR0kuiFK7I1OZ2hSdR7G6CWcynf_cDxXwCLxiixG1c.ttf"
4495
- }
4496
- },
4497
- {
4498
- "kind": "webfonts#webfont",
4499
- "family": "Eagle Lake",
4500
- "category": "handwriting",
4501
- "variants": [
4502
- "regular"
4503
- ],
4504
- "subsets": [
4505
- "latin-ext",
4506
- "latin"
4507
- ],
4508
- "version": "v4",
4509
- "lastModified": "2016-05-31",
4510
- "files": {
4511
- "regular": "http://fonts.gstatic.com/s/eaglelake/v4/ZKlYin7caemhx9eSg6RvPfesZW2xOQ-xsNqO47m55DA.ttf"
4512
- }
4513
- },
4514
- {
4515
- "kind": "webfonts#webfont",
4516
- "family": "Eater",
4517
- "category": "display",
4518
- "variants": [
4519
- "regular"
4520
- ],
4521
- "subsets": [
4522
- "latin-ext",
4523
- "latin"
4524
- ],
4525
- "version": "v5",
4526
- "lastModified": "2016-05-31",
4527
- "files": {
4528
- "regular": "http://fonts.gstatic.com/s/eater/v5/gm6f3OmYEdbs3lPQtUfBkA.ttf"
4529
- }
4530
- },
4531
- {
4532
- "kind": "webfonts#webfont",
4533
- "family": "Economica",
4534
- "category": "sans-serif",
4535
- "variants": [
4536
- "regular",
4537
- "italic",
4538
- "700",
4539
- "700italic"
4540
- ],
4541
- "subsets": [
4542
- "latin-ext",
4543
- "latin"
4544
- ],
4545
- "version": "v4",
4546
- "lastModified": "2016-05-31",
4547
- "files": {
4548
- "regular": "http://fonts.gstatic.com/s/economica/v4/G4rJRujzZbq9Nxngu9l3hg.ttf",
4549
- "italic": "http://fonts.gstatic.com/s/economica/v4/p5O9AVeUqx_n35xQRinNYaCWcynf_cDxXwCLxiixG1c.ttf",
4550
- "700": "http://fonts.gstatic.com/s/economica/v4/UK4l2VEpwjv3gdcwbwXE9C3USBnSvpkopQaUR-2r7iU.ttf",
4551
- "700italic": "http://fonts.gstatic.com/s/economica/v4/ac5dlUsedQ03RqGOeay-3Xe1Pd76Vl7zRpE7NLJQ7XU.ttf"
4552
- }
4553
- },
4554
- {
4555
- "kind": "webfonts#webfont",
4556
- "family": "Eczar",
4557
- "category": "serif",
4558
- "variants": [
4559
- "regular",
4560
- "500",
4561
- "600",
4562
- "700",
4563
- "800"
4564
- ],
4565
- "subsets": [
4566
- "latin-ext",
4567
- "devanagari",
4568
- "latin"
4569
- ],
4570
- "version": "v4",
4571
- "lastModified": "2016-06-07",
4572
- "files": {
4573
- "regular": "http://fonts.gstatic.com/s/eczar/v4/uKZcAQ5JBBs1UbeXFRbBRg.ttf",
4574
- "500": "http://fonts.gstatic.com/s/eczar/v4/Ooe4KaPp2594tF8TbMfdlQ.ttf",
4575
- "600": "http://fonts.gstatic.com/s/eczar/v4/IjQsWW0bmgkZ6lnN72cnTQ.ttf",
4576
- "700": "http://fonts.gstatic.com/s/eczar/v4/ELC8RVXfBMb3VuuHtMwBOA.ttf",
4577
- "800": "http://fonts.gstatic.com/s/eczar/v4/9Uyt6nTZLx_Qj5_WRah-iQ.ttf"
4578
- }
4579
- },
4580
- {
4581
- "kind": "webfonts#webfont",
4582
- "family": "Ek Mukta",
4583
- "category": "sans-serif",
4584
- "variants": [
4585
- "200",
4586
- "300",
4587
- "regular",
4588
- "500",
4589
- "600",
4590
- "700",
4591
- "800"
4592
- ],
4593
- "subsets": [
4594
- "latin-ext",
4595
- "devanagari",
4596
- "latin"
4597
- ],
4598
- "version": "v7",
4599
- "lastModified": "2016-05-31",
4600
- "files": {
4601
- "200": "http://fonts.gstatic.com/s/ekmukta/v7/crtkNHh5JcM3VJKG0E-B36CWcynf_cDxXwCLxiixG1c.ttf",
4602
- "300": "http://fonts.gstatic.com/s/ekmukta/v7/mpaAv7CIyk0VnZlqSneVxKCWcynf_cDxXwCLxiixG1c.ttf",
4603
- "regular": "http://fonts.gstatic.com/s/ekmukta/v7/aFcjXdC5jyJ1p8w54wIIrg.ttf",
4604
- "500": "http://fonts.gstatic.com/s/ekmukta/v7/PZ1y2MstFczWvBlFSgzMyaCWcynf_cDxXwCLxiixG1c.ttf",
4605
- "600": "http://fonts.gstatic.com/s/ekmukta/v7/Z5Mfzeu6M3emakcJO2QeTqCWcynf_cDxXwCLxiixG1c.ttf",
4606
- "700": "http://fonts.gstatic.com/s/ekmukta/v7/4ugcOGR28Jn-oBIn0-qLYaCWcynf_cDxXwCLxiixG1c.ttf",
4607
- "800": "http://fonts.gstatic.com/s/ekmukta/v7/O68TH5OjEhVmn9_gIrcfS6CWcynf_cDxXwCLxiixG1c.ttf"
4608
- }
4609
- },
4610
- {
4611
- "kind": "webfonts#webfont",
4612
- "family": "El Messiri",
4613
- "category": "sans-serif",
4614
- "variants": [
4615
- "regular",
4616
- "500",
4617
- "600",
4618
- "700"
4619
- ],
4620
- "subsets": [
4621
- "arabic",
4622
- "cyrillic",
4623
- "latin"
4624
- ],
4625
- "version": "v1",
4626
- "lastModified": "2016-06-20",
4627
- "files": {
4628
- "regular": "http://fonts.gstatic.com/s/elmessiri/v1/dik94vfrFvHFnvdvxaX8N_esZW2xOQ-xsNqO47m55DA.ttf",
4629
- "500": "http://fonts.gstatic.com/s/elmessiri/v1/kQW9PA2krAOzditagrX75pp-63r6doWhTEbsfBIRJ7A.ttf",
4630
- "600": "http://fonts.gstatic.com/s/elmessiri/v1/HYl7TNqFfA1utGLZRWwzLPpTEJqju4Hz1txDWij77d4.ttf",
4631
- "700": "http://fonts.gstatic.com/s/elmessiri/v1/ji73glXFIetaSqMU3cz7rAJKKGfqHaYFsRG-T3ceEVo.ttf"
4632
- }
4633
- },
4634
- {
4635
- "kind": "webfonts#webfont",
4636
- "family": "Electrolize",
4637
- "category": "sans-serif",
4638
- "variants": [
4639
- "regular"
4640
- ],
4641
- "subsets": [
4642
- "latin"
4643
- ],
4644
- "version": "v5",
4645
- "lastModified": "2016-05-31",
4646
- "files": {
4647
- "regular": "http://fonts.gstatic.com/s/electrolize/v5/yFVu5iokC-nt4B1Cyfxb9aCWcynf_cDxXwCLxiixG1c.ttf"
4648
- }
4649
- },
4650
- {
4651
- "kind": "webfonts#webfont",
4652
- "family": "Elsie",
4653
- "category": "display",
4654
- "variants": [
4655
- "regular",
4656
- "900"
4657
- ],
4658
- "subsets": [
4659
- "latin-ext",
4660
- "latin"
4661
- ],
4662
- "version": "v5",
4663
- "lastModified": "2016-05-31",
4664
- "files": {
4665
- "regular": "http://fonts.gstatic.com/s/elsie/v5/gwspePauE45BJu6Ok1QrfQ.ttf",
4666
- "900": "http://fonts.gstatic.com/s/elsie/v5/1t-9f0N2NFYwAgN7oaISqg.ttf"
4667
- }
4668
- },
4669
- {
4670
- "kind": "webfonts#webfont",
4671
- "family": "Elsie Swash Caps",
4672
- "category": "display",
4673
- "variants": [
4674
- "regular",
4675
- "900"
4676
- ],
4677
- "subsets": [
4678
- "latin-ext",
4679
- "latin"
4680
- ],
4681
- "version": "v4",
4682
- "lastModified": "2016-05-31",
4683
- "files": {
4684
- "regular": "http://fonts.gstatic.com/s/elsieswashcaps/v4/9L3hIJMPCf6sxCltnxd6X2YeFSdnSpRYv5h9gpdlD1g.ttf",
4685
- "900": "http://fonts.gstatic.com/s/elsieswashcaps/v4/iZnus9qif0tR5pGaDv5zdKoKBWBozTtxi30NfZDOXXU.ttf"
4686
- }
4687
- },
4688
- {
4689
- "kind": "webfonts#webfont",
4690
- "family": "Emblema One",
4691
- "category": "display",
4692
- "variants": [
4693
- "regular"
4694
- ],
4695
- "subsets": [
4696
- "latin-ext",
4697
- "latin"
4698
- ],
4699
- "version": "v5",
4700
- "lastModified": "2016-06-07",
4701
- "files": {
4702
- "regular": "http://fonts.gstatic.com/s/emblemaone/v5/7IlBUjBWPIiw7cr_O2IfSaCWcynf_cDxXwCLxiixG1c.ttf"
4703
- }
4704
- },
4705
- {
4706
- "kind": "webfonts#webfont",
4707
- "family": "Emilys Candy",
4708
- "category": "display",
4709
- "variants": [
4710
- "regular"
4711
- ],
4712
- "subsets": [
4713
- "latin-ext",
4714
- "latin"
4715
- ],
4716
- "version": "v4",
4717
- "lastModified": "2016-05-31",
4718
- "files": {
4719
- "regular": "http://fonts.gstatic.com/s/emilyscandy/v4/PofLVm6v1SwZGOzC8s-I3S3USBnSvpkopQaUR-2r7iU.ttf"
4720
- }
4721
- },
4722
- {
4723
- "kind": "webfonts#webfont",
4724
- "family": "Engagement",
4725
- "category": "handwriting",
4726
- "variants": [
4727
- "regular"
4728
- ],
4729
- "subsets": [
4730
- "latin"
4731
- ],
4732
- "version": "v5",
4733
- "lastModified": "2016-06-07",
4734
- "files": {
4735
- "regular": "http://fonts.gstatic.com/s/engagement/v5/4Uz0Jii7oVPcaFRYmbpU6vesZW2xOQ-xsNqO47m55DA.ttf"
4736
- }
4737
- },
4738
- {
4739
- "kind": "webfonts#webfont",
4740
- "family": "Englebert",
4741
- "category": "sans-serif",
4742
- "variants": [
4743
- "regular"
4744
- ],
4745
- "subsets": [
4746
- "latin-ext",
4747
- "latin"
4748
- ],
4749
- "version": "v4",
4750
- "lastModified": "2016-05-31",
4751
- "files": {
4752
- "regular": "http://fonts.gstatic.com/s/englebert/v4/sll38iOvOuarDTYBchlP3Q.ttf"
4753
- }
4754
- },
4755
- {
4756
- "kind": "webfonts#webfont",
4757
- "family": "Enriqueta",
4758
- "category": "serif",
4759
- "variants": [
4760
- "regular",
4761
- "700"
4762
- ],
4763
- "subsets": [
4764
- "latin-ext",
4765
- "latin"
4766
- ],
4767
- "version": "v5",
4768
- "lastModified": "2016-05-31",
4769
- "files": {
4770
- "regular": "http://fonts.gstatic.com/s/enriqueta/v5/_p90TrIwR1SC-vDKtmrv6A.ttf",
4771
- "700": "http://fonts.gstatic.com/s/enriqueta/v5/I27Pb-wEGH2ajLYP0QrtSC3USBnSvpkopQaUR-2r7iU.ttf"
4772
- }
4773
- },
4774
- {
4775
- "kind": "webfonts#webfont",
4776
- "family": "Erica One",
4777
- "category": "display",
4778
- "variants": [
4779
- "regular"
4780
- ],
4781
- "subsets": [
4782
- "latin-ext",
4783
- "latin"
4784
- ],
4785
- "version": "v7",
4786
- "lastModified": "2016-05-31",
4787
- "files": {
4788
- "regular": "http://fonts.gstatic.com/s/ericaone/v7/cIBnH2VAqQMIGYAcE4ufvQ.ttf"
4789
- }
4790
- },
4791
- {
4792
- "kind": "webfonts#webfont",
4793
- "family": "Esteban",
4794
- "category": "serif",
4795
- "variants": [
4796
- "regular"
4797
- ],
4798
- "subsets": [
4799
- "latin-ext",
4800
- "latin"
4801
- ],
4802
- "version": "v4",
4803
- "lastModified": "2016-05-31",
4804
- "files": {
4805
- "regular": "http://fonts.gstatic.com/s/esteban/v4/ESyhLgqDDyK5JcFPp2svDw.ttf"
4806
- }
4807
- },
4808
- {
4809
- "kind": "webfonts#webfont",
4810
- "family": "Euphoria Script",
4811
- "category": "handwriting",
4812
- "variants": [
4813
- "regular"
4814
- ],
4815
- "subsets": [
4816
- "latin-ext",
4817
- "latin"
4818
- ],
4819
- "version": "v4",
4820
- "lastModified": "2016-05-31",
4821
- "files": {
4822
- "regular": "http://fonts.gstatic.com/s/euphoriascript/v4/c4XB4Iijj_NvSsCF4I0O2MxLhO8OSNnfAp53LK1_iRs.ttf"
4823
- }
4824
- },
4825
- {
4826
- "kind": "webfonts#webfont",
4827
- "family": "Ewert",
4828
- "category": "display",
4829
- "variants": [
4830
- "regular"
4831
- ],
4832
- "subsets": [
4833
- "latin-ext",
4834
- "latin"
4835
- ],
4836
- "version": "v4",
4837
- "lastModified": "2016-05-31",
4838
- "files": {
4839
- "regular": "http://fonts.gstatic.com/s/ewert/v4/Em8hrzuzSbfHcTVqMjbAQg.ttf"
4840
- }
4841
- },
4842
- {
4843
- "kind": "webfonts#webfont",
4844
- "family": "Exo",
4845
- "category": "sans-serif",
4846
- "variants": [
4847
- "100",
4848
- "100italic",
4849
- "200",
4850
- "200italic",
4851
- "300",
4852
- "300italic",
4853
- "regular",
4854
- "italic",
4855
- "500",
4856
- "500italic",
4857
- "600",
4858
- "600italic",
4859
- "700",
4860
- "700italic",
4861
- "800",
4862
- "800italic",
4863
- "900",
4864
- "900italic"
4865
- ],
4866
- "subsets": [
4867
- "latin-ext",
4868
- "latin"
4869
- ],
4870
- "version": "v4",
4871
- "lastModified": "2016-05-31",
4872
- "files": {
4873
- "100": "http://fonts.gstatic.com/s/exo/v4/RI7A9uwjRmPbVp0n8e-Jvg.ttf",
4874
- "100italic": "http://fonts.gstatic.com/s/exo/v4/qtGyZZlWb2EEvby3ZPosxw.ttf",
4875
- "200": "http://fonts.gstatic.com/s/exo/v4/F8OfC_swrRRxpFt-tlXZQg.ttf",
4876
- "200italic": "http://fonts.gstatic.com/s/exo/v4/fr4HBfXHYiIngW2_bhlgRw.ttf",
4877
- "300": "http://fonts.gstatic.com/s/exo/v4/SBrN7TKUqgGUvfxqHqsnNw.ttf",
4878
- "300italic": "http://fonts.gstatic.com/s/exo/v4/3gmiLjBegIfcDLISjTGA1g.ttf",
4879
- "regular": "http://fonts.gstatic.com/s/exo/v4/eUEzTFueNXRVhbt4PEB8kQ.ttf",
4880
- "italic": "http://fonts.gstatic.com/s/exo/v4/cfgolWisMSURhpQeVHl_NA.ttf",
4881
- "500": "http://fonts.gstatic.com/s/exo/v4/jCg6DmGGXt_OVyp5ofQHPw.ttf",
4882
- "500italic": "http://fonts.gstatic.com/s/exo/v4/lo5eTdCNJZQVN08p8RnzAQ.ttf",
4883
- "600": "http://fonts.gstatic.com/s/exo/v4/q_SG5kXUmOcIvFpgtdZnlw.ttf",
4884
- "600italic": "http://fonts.gstatic.com/s/exo/v4/0cExa8K_pxS2lTuMr68XUA.ttf",
4885
- "700": "http://fonts.gstatic.com/s/exo/v4/3_jwsL4v9uHjl5Q37G57mw.ttf",
4886
- "700italic": "http://fonts.gstatic.com/s/exo/v4/0me55yJIxd5vyQ9bF7SsiA.ttf",
4887
- "800": "http://fonts.gstatic.com/s/exo/v4/yLPuxBuV0lzqibRJyooOJg.ttf",
4888
- "800italic": "http://fonts.gstatic.com/s/exo/v4/n3LejeKVj_8gtZq5fIgNYw.ttf",
4889
- "900": "http://fonts.gstatic.com/s/exo/v4/97d0nd6Yv4-SA_X92xAuZA.ttf",
4890
- "900italic": "http://fonts.gstatic.com/s/exo/v4/JHTkQVhzyLtkY13Ye95TJQ.ttf"
4891
- }
4892
- },
4893
- {
4894
- "kind": "webfonts#webfont",
4895
- "family": "Exo 2",
4896
- "category": "sans-serif",
4897
- "variants": [
4898
- "100",
4899
- "100italic",
4900
- "200",
4901
- "200italic",
4902
- "300",
4903
- "300italic",
4904
- "regular",
4905
- "italic",
4906
- "500",
4907
- "500italic",
4908
- "600",
4909
- "600italic",
4910
- "700",
4911
- "700italic",
4912
- "800",
4913
- "800italic",
4914
- "900",
4915
- "900italic"
4916
- ],
4917
- "subsets": [
4918
- "latin-ext",
4919
- "cyrillic",
4920
- "latin"
4921
- ],
4922
- "version": "v3",
4923
- "lastModified": "2016-05-31",
4924
- "files": {
4925
- "100": "http://fonts.gstatic.com/s/exo2/v3/oVOtQy53isv97g4UhBUDqg.ttf",
4926
- "100italic": "http://fonts.gstatic.com/s/exo2/v3/LNYVgsJcaCxoKFHmd4AZcg.ttf",
4927
- "200": "http://fonts.gstatic.com/s/exo2/v3/qa-Ci2pBwJdCxciE1ErifQ.ttf",
4928
- "200italic": "http://fonts.gstatic.com/s/exo2/v3/DCrVxDVvS69n50O-5erZVvesZW2xOQ-xsNqO47m55DA.ttf",
4929
- "300": "http://fonts.gstatic.com/s/exo2/v3/nLUBdz_lHHoVIPor05Byhw.ttf",
4930
- "300italic": "http://fonts.gstatic.com/s/exo2/v3/iSy9VTeUTiqiurQg2ywtu_esZW2xOQ-xsNqO47m55DA.ttf",
4931
- "regular": "http://fonts.gstatic.com/s/exo2/v3/Pf_kZuIH5c5WKVkQUaeSWQ.ttf",
4932
- "italic": "http://fonts.gstatic.com/s/exo2/v3/xxA5ZscX9sTU6U0lZJUlYA.ttf",
4933
- "500": "http://fonts.gstatic.com/s/exo2/v3/oM0rzUuPqVJpW-VEIpuW5w.ttf",
4934
- "500italic": "http://fonts.gstatic.com/s/exo2/v3/amzRVCB-gipwdihZZ2LtT_esZW2xOQ-xsNqO47m55DA.ttf",
4935
- "600": "http://fonts.gstatic.com/s/exo2/v3/YnSn3HsyvyI1feGSdRMYqA.ttf",
4936
- "600italic": "http://fonts.gstatic.com/s/exo2/v3/Vmo58BiptGwfVFb0teU5gPesZW2xOQ-xsNqO47m55DA.ttf",
4937
- "700": "http://fonts.gstatic.com/s/exo2/v3/2DiK4XkdTckfTk6we73-bQ.ttf",
4938
- "700italic": "http://fonts.gstatic.com/s/exo2/v3/Sdo-zW-4_--pDkTg6bYrY_esZW2xOQ-xsNqO47m55DA.ttf",
4939
- "800": "http://fonts.gstatic.com/s/exo2/v3/IVYl_7dJruOg8zKRpC8Hrw.ttf",
4940
- "800italic": "http://fonts.gstatic.com/s/exo2/v3/p0TA6KeOz1o4rySEbvUxI_esZW2xOQ-xsNqO47m55DA.ttf",
4941
- "900": "http://fonts.gstatic.com/s/exo2/v3/e8csG8Wnu87AF6uCndkFRQ.ttf",
4942
- "900italic": "http://fonts.gstatic.com/s/exo2/v3/KPhsGCoT2-7Uj6pMlRscH_esZW2xOQ-xsNqO47m55DA.ttf"
4943
- }
4944
- },
4945
- {
4946
- "kind": "webfonts#webfont",
4947
- "family": "Expletus Sans",
4948
- "category": "display",
4949
- "variants": [
4950
- "regular",
4951
- "italic",
4952
- "500",
4953
- "500italic",
4954
- "600",
4955
- "600italic",
4956
- "700",
4957
- "700italic"
4958
- ],
4959
- "subsets": [
4960
- "latin"
4961
- ],
4962
- "version": "v9",
4963
- "lastModified": "2016-06-07",
4964
- "files": {
4965
- "regular": "http://fonts.gstatic.com/s/expletussans/v9/gegTSDBDs5le3g6uxU1ZsX8f0n03UdmQgF_CLvNR2vg.ttf",
4966
- "italic": "http://fonts.gstatic.com/s/expletussans/v9/Y-erXmY0b6DU_i2Qu0hTJj4G9C9ttb0Oz5Cvf0qOitE.ttf",
4967
- "500": "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwAqQmZ7VjhwksfpNVG0pqGc.ttf",
4968
- "500italic": "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW87DCVO6wo6i5LKIyZDzK40.ttf",
4969
- "600": "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwCvj1tU7IJMS3CS9kCx2B3U.ttf",
4970
- "600italic": "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW8yKH23ZS6zCKOFHG0e_4JE.ttf",
4971
- "700": "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwFCbmAUID8LN-q3pJpOk3Ys.ttf",
4972
- "700italic": "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW5F66r9C4AnxxlBlGd7xY4g.ttf"
4973
- }
4974
- },
4975
- {
4976
- "kind": "webfonts#webfont",
4977
- "family": "Fanwood Text",
4978
- "category": "serif",
4979
- "variants": [
4980
- "regular",
4981
- "italic"
4982
- ],
4983
- "subsets": [
4984
- "latin"
4985
- ],
4986
- "version": "v6",
4987
- "lastModified": "2016-05-31",
4988
- "files": {
4989
- "regular": "http://fonts.gstatic.com/s/fanwoodtext/v6/hDNDHUlsSb8bgnEmDp4T_i3USBnSvpkopQaUR-2r7iU.ttf",
4990
- "italic": "http://fonts.gstatic.com/s/fanwoodtext/v6/0J3SBbkMZqBV-3iGxs5E9_MZXuCXbOrAvx5R0IT5Oyo.ttf"
4991
- }
4992
- },
4993
- {
4994
- "kind": "webfonts#webfont",
4995
- "family": "Farsan",
4996
- "category": "display",
4997
- "variants": [
4998
- "regular"
4999
- ],
5000
- "subsets": [
5001
- "gujarati",
5002
- "latin-ext",
5003
- "latin",
5004
- "vietnamese"
5005
- ],
5006
- "version": "v1",
5007
- "lastModified": "2016-06-20",
5008
- "files": {
5009
- "regular": "http://fonts.gstatic.com/s/farsan/v1/Hdf9Y76SQ6e1X0Nqk3rHtw.ttf"
5010
- }
5011
- },
5012
- {
5013
- "kind": "webfonts#webfont",
5014
- "family": "Fascinate",
5015
- "category": "display",
5016
- "variants": [
5017
- "regular"
5018
- ],
5019
- "subsets": [
5020
- "latin"
5021
- ],
5022
- "version": "v5",
5023
- "lastModified": "2016-05-31",
5024
- "files": {
5025
- "regular": "http://fonts.gstatic.com/s/fascinate/v5/ZE0637WWkBPKt1AmFaqD3Q.ttf"
5026
- }
5027
- },
5028
- {
5029
- "kind": "webfonts#webfont",
5030
- "family": "Fascinate Inline",
5031
- "category": "display",
5032
- "variants": [
5033
- "regular"
5034
- ],
5035
- "subsets": [
5036
- "latin"
5037
- ],
5038
- "version": "v6",
5039
- "lastModified": "2016-05-31",
5040
- "files": {
5041
- "regular": "http://fonts.gstatic.com/s/fascinateinline/v6/lRguYfMfWArflkm5aOQ5QJmp8DTZ6iHear7UV05iykg.ttf"
5042
- }
5043
- },
5044
- {
5045
- "kind": "webfonts#webfont",
5046
- "family": "Faster One",
5047
- "category": "display",
5048
- "variants": [
5049
- "regular"
5050
- ],
5051
- "subsets": [
5052
- "latin"
5053
- ],
5054
- "version": "v6",
5055
- "lastModified": "2016-05-31",
5056
- "files": {
5057
- "regular": "http://fonts.gstatic.com/s/fasterone/v6/YxTOW2sf56uxD1T7byP5K_esZW2xOQ-xsNqO47m55DA.ttf"
5058
- }
5059
- },
5060
- {
5061
- "kind": "webfonts#webfont",
5062
- "family": "Fasthand",
5063
- "category": "serif",
5064
- "variants": [
5065
- "regular"
5066
- ],
5067
- "subsets": [
5068
- "khmer"
5069
- ],
5070
- "version": "v7",
5071
- "lastModified": "2016-05-31",
5072
- "files": {
5073
- "regular": "http://fonts.gstatic.com/s/fasthand/v7/6XAagHH_KmpZL67wTvsETQ.ttf"
5074
- }
5075
- },
5076
- {
5077
- "kind": "webfonts#webfont",
5078
- "family": "Fauna One",
5079
- "category": "serif",
5080
- "variants": [
5081
- "regular"
5082
- ],
5083
- "subsets": [
5084
- "latin-ext",
5085
- "latin"
5086
- ],
5087
- "version": "v4",
5088
- "lastModified": "2016-05-31",
5089
- "files": {
5090
- "regular": "http://fonts.gstatic.com/s/faunaone/v4/8kL-wpAPofcAMELI_5NRnQ.ttf"
5091
- }
5092
- },
5093
- {
5094
- "kind": "webfonts#webfont",
5095
- "family": "Federant",
5096
- "category": "display",
5097
- "variants": [
5098
- "regular"
5099
- ],
5100
- "subsets": [
5101
- "latin"
5102
- ],
5103
- "version": "v8",
5104
- "lastModified": "2016-06-07",
5105
- "files": {
5106
- "regular": "http://fonts.gstatic.com/s/federant/v8/tddZFSiGvxICNOGra0i5aA.ttf"
5107
- }
5108
- },
5109
- {
5110
- "kind": "webfonts#webfont",
5111
- "family": "Federo",
5112
- "category": "sans-serif",
5113
- "variants": [
5114
- "regular"
5115
- ],
5116
- "subsets": [
5117
- "latin"
5118
- ],
5119
- "version": "v8",
5120
- "lastModified": "2016-05-31",
5121
- "files": {
5122
- "regular": "http://fonts.gstatic.com/s/federo/v8/JPhe1S2tujeyaR79gXBLeQ.ttf"
5123
- }
5124
- },
5125
- {
5126
- "kind": "webfonts#webfont",
5127
- "family": "Felipa",
5128
- "category": "handwriting",
5129
- "variants": [
5130
- "regular"
5131
- ],
5132
- "subsets": [
5133
- "latin-ext",
5134
- "latin"
5135
- ],
5136
- "version": "v4",
5137
- "lastModified": "2016-05-31",
5138
- "files": {
5139
- "regular": "http://fonts.gstatic.com/s/felipa/v4/SeyfyFZY7abAQXGrOIYnYg.ttf"
5140
- }
5141
- },
5142
- {
5143
- "kind": "webfonts#webfont",
5144
- "family": "Fenix",
5145
- "category": "serif",
5146
- "variants": [
5147
- "regular"
5148
- ],
5149
- "subsets": [
5150
- "latin-ext",
5151
- "latin"
5152
- ],
5153
- "version": "v4",
5154
- "lastModified": "2016-05-31",
5155
- "files": {
5156
- "regular": "http://fonts.gstatic.com/s/fenix/v4/Ak8wR3VSlAN7VN_eMeJj7Q.ttf"
5157
- }
5158
- },
5159
- {
5160
- "kind": "webfonts#webfont",
5161
- "family": "Finger Paint",
5162
- "category": "display",
5163
- "variants": [
5164
- "regular"
5165
- ],
5166
- "subsets": [
5167
- "latin"
5168
- ],
5169
- "version": "v5",
5170
- "lastModified": "2016-06-07",
5171
- "files": {
5172
- "regular": "http://fonts.gstatic.com/s/fingerpaint/v5/m_ZRbiY-aPb13R3DWPBGXy3USBnSvpkopQaUR-2r7iU.ttf"
5173
- }
5174
- },
5175
- {
5176
- "kind": "webfonts#webfont",
5177
- "family": "Fira Mono",
5178
- "category": "monospace",
5179
- "variants": [
5180
- "regular",
5181
- "700"
5182
- ],
5183
- "subsets": [
5184
- "cyrillic-ext",
5185
- "latin-ext",
5186
- "cyrillic",
5187
- "greek",
5188
- "latin"
5189
- ],
5190
- "version": "v4",
5191
- "lastModified": "2016-05-31",
5192
- "files": {
5193
- "regular": "http://fonts.gstatic.com/s/firamono/v4/WQOm1D4RO-yvA9q9trJc8g.ttf",
5194
- "700": "http://fonts.gstatic.com/s/firamono/v4/l24Wph3FsyKAbJ8dfExTZy3USBnSvpkopQaUR-2r7iU.ttf"
5195
- }
5196
- },
5197
- {
5198
- "kind": "webfonts#webfont",
5199
- "family": "Fira Sans",
5200
- "category": "sans-serif",
5201
- "variants": [
5202
- "300",
5203
- "300italic",
5204
- "regular",
5205
- "italic",
5206
- "500",
5207
- "500italic",
5208
- "700",
5209
- "700italic"
5210
- ],
5211
- "subsets": [
5212
- "cyrillic-ext",
5213
- "latin-ext",
5214
- "cyrillic",
5215
- "greek",
5216
- "latin"
5217
- ],
5218
- "version": "v6",
5219
- "lastModified": "2016-05-31",
5220
- "files": {
5221
- "300": "http://fonts.gstatic.com/s/firasans/v6/VTBnrK42EiOBncVyQXZ7jy3USBnSvpkopQaUR-2r7iU.ttf",
5222
- "300italic": "http://fonts.gstatic.com/s/firasans/v6/6s0YCA9oCTF6hM60YM-qTS9-WlPSxbfiI49GsXo3q0g.ttf",
5223
- "regular": "http://fonts.gstatic.com/s/firasans/v6/nsT0isDy56OkSX99sFQbXw.ttf",
5224
- "italic": "http://fonts.gstatic.com/s/firasans/v6/cPT_2ddmoxsUuMtQqa8zGqCWcynf_cDxXwCLxiixG1c.ttf",
5225
- "500": "http://fonts.gstatic.com/s/firasans/v6/zM2u8V3CuPVwAAXFQcDi4C3USBnSvpkopQaUR-2r7iU.ttf",
5226
- "500italic": "http://fonts.gstatic.com/s/firasans/v6/6s0YCA9oCTF6hM60YM-qTcCNfqCYlB_eIx7H1TVXe60.ttf",
5227
- "700": "http://fonts.gstatic.com/s/firasans/v6/DugPdSljmOTocZOR2CItOi3USBnSvpkopQaUR-2r7iU.ttf",
5228
- "700italic": "http://fonts.gstatic.com/s/firasans/v6/6s0YCA9oCTF6hM60YM-qTXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
5229
- }
5230
- },
5231
- {
5232
- "kind": "webfonts#webfont",
5233
- "family": "Fjalla One",
5234
- "category": "sans-serif",
5235
- "variants": [
5236
- "regular"
5237
- ],
5238
- "subsets": [
5239
- "latin-ext",
5240
- "latin"
5241
- ],
5242
- "version": "v4",
5243
- "lastModified": "2016-06-07",
5244
- "files": {
5245
- "regular": "http://fonts.gstatic.com/s/fjallaone/v4/3b7vWCfOZsU53vMa8LWsf_esZW2xOQ-xsNqO47m55DA.ttf"
5246
- }
5247
- },
5248
- {
5249
- "kind": "webfonts#webfont",
5250
- "family": "Fjord One",
5251
- "category": "serif",
5252
- "variants": [
5253
- "regular"
5254
- ],
5255
- "subsets": [
5256
- "latin"
5257
- ],
5258
- "version": "v5",
5259
- "lastModified": "2016-06-07",
5260
- "files": {
5261
- "regular": "http://fonts.gstatic.com/s/fjordone/v5/R_YHK8au2uFPw5tNu5N7zw.ttf"
5262
- }
5263
- },
5264
- {
5265
- "kind": "webfonts#webfont",
5266
- "family": "Flamenco",
5267
- "category": "display",
5268
- "variants": [
5269
- "300",
5270
- "regular"
5271
- ],
5272
- "subsets": [
5273
- "latin"
5274
- ],
5275
- "version": "v6",
5276
- "lastModified": "2016-05-31",
5277
- "files": {
5278
- "300": "http://fonts.gstatic.com/s/flamenco/v6/x9iI5CogvuZVCGoRHwXuo6CWcynf_cDxXwCLxiixG1c.ttf",
5279
- "regular": "http://fonts.gstatic.com/s/flamenco/v6/HC0ugfLLgt26I5_BWD1PZA.ttf"
5280
- }
5281
- },
5282
- {
5283
- "kind": "webfonts#webfont",
5284
- "family": "Flavors",
5285
- "category": "display",
5286
- "variants": [
5287
- "regular"
5288
- ],
5289
- "subsets": [
5290
- "latin"
5291
- ],
5292
- "version": "v5",
5293
- "lastModified": "2016-06-07",
5294
- "files": {
5295
- "regular": "http://fonts.gstatic.com/s/flavors/v5/SPJi5QclATvon8ExcKGRvQ.ttf"
5296
- }
5297
- },
5298
- {
5299
- "kind": "webfonts#webfont",
5300
- "family": "Fondamento",
5301
- "category": "handwriting",
5302
- "variants": [
5303
- "regular",
5304
- "italic"
5305
- ],
5306
- "subsets": [
5307
- "latin-ext",
5308
- "latin"
5309
- ],
5310
- "version": "v6",
5311
- "lastModified": "2016-10-27",
5312
- "files": {
5313
- "regular": "http://fonts.gstatic.com/s/fondamento/v6/6LWXcjT1B7bnWluAOSNfMPesZW2xOQ-xsNqO47m55DA.ttf",
5314
- "italic": "http://fonts.gstatic.com/s/fondamento/v6/y6TmwhSbZ8rYq7OTFyo7OS3USBnSvpkopQaUR-2r7iU.ttf"
5315
- }
5316
- },
5317
- {
5318
- "kind": "webfonts#webfont",
5319
- "family": "Fontdiner Swanky",
5320
- "category": "display",
5321
- "variants": [
5322
- "regular"
5323
- ],
5324
- "subsets": [
5325
- "latin"
5326
- ],
5327
- "version": "v6",
5328
- "lastModified": "2016-10-05",
5329
- "files": {
5330
- "regular": "http://fonts.gstatic.com/s/fontdinerswanky/v6/8_GxIO5ixMtn5P6COsF3TlBjMPLzPAFJwRBn-s1U7kA.ttf"
5331
- }
5332
- },
5333
- {
5334
- "kind": "webfonts#webfont",
5335
- "family": "Forum",
5336
- "category": "display",
5337
- "variants": [
5338
- "regular"
5339
- ],
5340
- "subsets": [
5341
- "cyrillic-ext",
5342
- "latin-ext",
5343
- "cyrillic",
5344
- "latin"
5345
- ],
5346
- "version": "v7",
5347
- "lastModified": "2016-05-31",
5348
- "files": {
5349
- "regular": "http://fonts.gstatic.com/s/forum/v7/MZUpsq1VfLrqv8eSDcbrrQ.ttf"
5350
- }
5351
- },
5352
- {
5353
- "kind": "webfonts#webfont",
5354
- "family": "Francois One",
5355
- "category": "sans-serif",
5356
- "variants": [
5357
- "regular"
5358
- ],
5359
- "subsets": [
5360
- "latin-ext",
5361
- "latin"
5362
- ],
5363
- "version": "v9",
5364
- "lastModified": "2016-06-07",
5365
- "files": {
5366
- "regular": "http://fonts.gstatic.com/s/francoisone/v9/bYbkq2nU2TSx4SwFbz5sCC3USBnSvpkopQaUR-2r7iU.ttf"
5367
- }
5368
- },
5369
- {
5370
- "kind": "webfonts#webfont",
5371
- "family": "Frank Ruhl Libre",
5372
- "category": "sans-serif",
5373
- "variants": [
5374
- "300",
5375
- "regular",
5376
- "500",
5377
- "700",
5378
- "900"
5379
- ],
5380
- "subsets": [
5381
- "latin-ext",
5382
- "hebrew",
5383
- "latin"
5384
- ],
5385
- "version": "v1",
5386
- "lastModified": "2016-06-20",
5387
- "files": {
5388
- "300": "http://fonts.gstatic.com/s/frankruhllibre/v1/y8NWif61iD8Hg8bGAmxFPOo9jvbqtCEVUIntIHarXsc.ttf",
5389
- "regular": "http://fonts.gstatic.com/s/frankruhllibre/v1/yDLloNqBpFmakCImLv4OJkfFI6QBbouvcOFcz81E3Ek.ttf",
5390
- "500": "http://fonts.gstatic.com/s/frankruhllibre/v1/y8NWif61iD8Hg8bGAmxFPC-WNtISbX_UO2d0wZPgXtk.ttf",
5391
- "700": "http://fonts.gstatic.com/s/frankruhllibre/v1/y8NWif61iD8Hg8bGAmxFPDPYiZEMiRRbPdIFMoTwDbo.ttf",
5392
- "900": "http://fonts.gstatic.com/s/frankruhllibre/v1/y8NWif61iD8Hg8bGAmxFPNRZIVFRjDx-6MOpcoWbVhA.ttf"
5393
- }
5394
- },
5395
- {
5396
- "kind": "webfonts#webfont",
5397
- "family": "Freckle Face",
5398
- "category": "display",
5399
- "variants": [
5400
- "regular"
5401
- ],
5402
- "subsets": [
5403
- "latin-ext",
5404
- "latin"
5405
- ],
5406
- "version": "v4",
5407
- "lastModified": "2016-05-31",
5408
- "files": {
5409
- "regular": "http://fonts.gstatic.com/s/freckleface/v4/7-B8j9BPJgazdHIGqPNv8y3USBnSvpkopQaUR-2r7iU.ttf"
5410
- }
5411
- },
5412
- {
5413
- "kind": "webfonts#webfont",
5414
- "family": "Fredericka the Great",
5415
- "category": "display",
5416
- "variants": [
5417
- "regular"
5418
- ],
5419
- "subsets": [
5420
- "latin"
5421
- ],
5422
- "version": "v5",
5423
- "lastModified": "2016-05-31",
5424
- "files": {
5425
- "regular": "http://fonts.gstatic.com/s/frederickathegreat/v5/7Es8Lxoku-e5eOZWpxw18nrnet6gXN1McwdQxS1dVrI.ttf"
5426
- }
5427
- },
5428
- {
5429
- "kind": "webfonts#webfont",
5430
- "family": "Fredoka One",
5431
- "category": "display",
5432
- "variants": [
5433
- "regular"
5434
- ],
5435
- "subsets": [
5436
- "latin"
5437
- ],
5438
- "version": "v4",
5439
- "lastModified": "2016-05-31",
5440
- "files": {
5441
- "regular": "http://fonts.gstatic.com/s/fredokaone/v4/QKfwXi-z-KtJAlnO2ethYqCWcynf_cDxXwCLxiixG1c.ttf"
5442
- }
5443
- },
5444
- {
5445
- "kind": "webfonts#webfont",
5446
- "family": "Freehand",
5447
- "category": "display",
5448
- "variants": [
5449
- "regular"
5450
- ],
5451
- "subsets": [
5452
- "khmer"
5453
- ],
5454
- "version": "v8",
5455
- "lastModified": "2016-05-31",
5456
- "files": {
5457
- "regular": "http://fonts.gstatic.com/s/freehand/v8/uEBQxvA0lnn_BrD6krlxMw.ttf"
5458
- }
5459
- },
5460
- {
5461
- "kind": "webfonts#webfont",
5462
- "family": "Fresca",
5463
- "category": "sans-serif",
5464
- "variants": [
5465
- "regular"
5466
- ],
5467
- "subsets": [
5468
- "latin-ext",
5469
- "latin"
5470
- ],
5471
- "version": "v5",
5472
- "lastModified": "2016-05-31",
5473
- "files": {
5474
- "regular": "http://fonts.gstatic.com/s/fresca/v5/2q7Qm9sCo1tWvVgSDVWNIw.ttf"
5475
- }
5476
- },
5477
- {
5478
- "kind": "webfonts#webfont",
5479
- "family": "Frijole",
5480
- "category": "display",
5481
- "variants": [
5482
- "regular"
5483
- ],
5484
- "subsets": [
5485
- "latin"
5486
- ],
5487
- "version": "v5",
5488
- "lastModified": "2016-06-07",
5489
- "files": {
5490
- "regular": "http://fonts.gstatic.com/s/frijole/v5/L2MfZse-2gCascuD-nLhWg.ttf"
5491
- }
5492
- },
5493
- {
5494
- "kind": "webfonts#webfont",
5495
- "family": "Fruktur",
5496
- "category": "display",
5497
- "variants": [
5498
- "regular"
5499
- ],
5500
- "subsets": [
5501
- "latin-ext",
5502
- "latin"
5503
- ],
5504
- "version": "v8",
5505
- "lastModified": "2016-05-31",
5506
- "files": {
5507
- "regular": "http://fonts.gstatic.com/s/fruktur/v8/PnQvfEi1LssAvhJsCwH__w.ttf"
5508
- }
5509
- },
5510
- {
5511
- "kind": "webfonts#webfont",
5512
- "family": "Fugaz One",
5513
- "category": "display",
5514
- "variants": [
5515
- "regular"
5516
- ],
5517
- "subsets": [
5518
- "latin"
5519
- ],
5520
- "version": "v6",
5521
- "lastModified": "2016-05-31",
5522
- "files": {
5523
- "regular": "http://fonts.gstatic.com/s/fugazone/v6/5tteVDCwxsr8-5RuSiRWOw.ttf"
5524
- }
5525
- },
5526
- {
5527
- "kind": "webfonts#webfont",
5528
- "family": "GFS Didot",
5529
- "category": "serif",
5530
- "variants": [
5531
- "regular"
5532
- ],
5533
- "subsets": [
5534
- "greek"
5535
- ],
5536
- "version": "v6",
5537
- "lastModified": "2016-06-07",
5538
- "files": {
5539
- "regular": "http://fonts.gstatic.com/s/gfsdidot/v6/jQKxZy2RU-h9tkPZcRVluA.ttf"
5540
- }
5541
- },
5542
- {
5543
- "kind": "webfonts#webfont",
5544
- "family": "GFS Neohellenic",
5545
- "category": "sans-serif",
5546
- "variants": [
5547
- "regular",
5548
- "italic",
5549
- "700",
5550
- "700italic"
5551
- ],
5552
- "subsets": [
5553
- "greek"
5554
- ],
5555
- "version": "v7",
5556
- "lastModified": "2016-05-31",
5557
- "files": {
5558
- "regular": "http://fonts.gstatic.com/s/gfsneohellenic/v7/B4xRqbn-tANVqVgamMsSDiayCZa0z7CpFzlkqoCHztc.ttf",
5559
- "italic": "http://fonts.gstatic.com/s/gfsneohellenic/v7/KnaWrO4awITAqigQIIYXKkCTdomiyJpIzPbEbIES3rU.ttf",
5560
- "700": "http://fonts.gstatic.com/s/gfsneohellenic/v7/7HwjPQa7qNiOsnUce2h4448_BwCLZY3eDSV6kppAwI8.ttf",
5561
- "700italic": "http://fonts.gstatic.com/s/gfsneohellenic/v7/FwWjoX6XqT-szJFyqsu_GYFF0fM4h-krcpQk7emtCpE.ttf"
5562
- }
5563
- },
5564
- {
5565
- "kind": "webfonts#webfont",
5566
- "family": "Gabriela",
5567
- "category": "serif",
5568
- "variants": [
5569
- "regular"
5570
- ],
5571
- "subsets": [
5572
- "latin-ext",
5573
- "latin"
5574
- ],
5575
- "version": "v4",
5576
- "lastModified": "2016-05-31",
5577
- "files": {
5578
- "regular": "http://fonts.gstatic.com/s/gabriela/v4/B-2ZfbAO3HDrxqV6lR5tdA.ttf"
5579
- }
5580
- },
5581
- {
5582
- "kind": "webfonts#webfont",
5583
- "family": "Gafata",
5584
- "category": "sans-serif",
5585
- "variants": [
5586
- "regular"
5587
- ],
5588
- "subsets": [
5589
- "latin-ext",
5590
- "latin"
5591
- ],
5592
- "version": "v5",
5593
- "lastModified": "2016-06-07",
5594
- "files": {
5595
- "regular": "http://fonts.gstatic.com/s/gafata/v5/aTFqlki_3Dc3geo-FxHTvQ.ttf"
5596
- }
5597
- },
5598
- {
5599
- "kind": "webfonts#webfont",
5600
- "family": "Galada",
5601
- "category": "display",
5602
- "variants": [
5603
- "regular"
5604
- ],
5605
- "subsets": [
5606
- "bengali",
5607
- "latin"
5608
- ],
5609
- "version": "v1",
5610
- "lastModified": "2016-06-20",
5611
- "files": {
5612
- "regular": "http://fonts.gstatic.com/s/galada/v1/xGkllHQb8OOCv9VJ6IObSA.ttf"
5613
- }
5614
- },
5615
- {
5616
- "kind": "webfonts#webfont",
5617
- "family": "Galdeano",
5618
- "category": "sans-serif",
5619
- "variants": [
5620
- "regular"
5621
- ],
5622
- "subsets": [
5623
- "latin"
5624
- ],
5625
- "version": "v6",
5626
- "lastModified": "2016-05-31",
5627
- "files": {
5628
- "regular": "http://fonts.gstatic.com/s/galdeano/v6/ZKFMQI6HxEG1jOT0UGSZUg.ttf"
5629
- }
5630
- },
5631
- {
5632
- "kind": "webfonts#webfont",
5633
- "family": "Galindo",
5634
- "category": "display",
5635
- "variants": [
5636
- "regular"
5637
- ],
5638
- "subsets": [
5639
- "latin-ext",
5640
- "latin"
5641
- ],
5642
- "version": "v4",
5643
- "lastModified": "2016-05-31",
5644
- "files": {
5645
- "regular": "http://fonts.gstatic.com/s/galindo/v4/2lafAS_ZEfB33OJryhXDUg.ttf"
5646
- }
5647
- },
5648
- {
5649
- "kind": "webfonts#webfont",
5650
- "family": "Gentium Basic",
5651
- "category": "serif",
5652
- "variants": [
5653
- "regular",
5654
- "italic",
5655
- "700",
5656
- "700italic"
5657
- ],
5658
- "subsets": [
5659
- "latin-ext",
5660
- "latin"
5661
- ],
5662
- "version": "v8",
5663
- "lastModified": "2016-05-31",
5664
- "files": {
5665
- "regular": "http://fonts.gstatic.com/s/gentiumbasic/v8/KCktj43blvLkhOTolFn-MYtBLojGU5Qdl8-5NL4v70w.ttf",
5666
- "italic": "http://fonts.gstatic.com/s/gentiumbasic/v8/qoFz4NSMaYC2UmsMAG3lyTj3mvXnCeAk09uTtmkJGRc.ttf",
5667
- "700": "http://fonts.gstatic.com/s/gentiumbasic/v8/2qL6yulgGf0wwgOp-UqGyLNuTeOOLg3nUymsEEGmdO0.ttf",
5668
- "700italic": "http://fonts.gstatic.com/s/gentiumbasic/v8/8N9-c_aQDJ8LbI1NGVMrwtswO1vWwP9exiF8s0wqW10.ttf"
5669
- }
5670
- },
5671
- {
5672
- "kind": "webfonts#webfont",
5673
- "family": "Gentium Book Basic",
5674
- "category": "serif",
5675
- "variants": [
5676
- "regular",
5677
- "italic",
5678
- "700",
5679
- "700italic"
5680
- ],
5681
- "subsets": [
5682
- "latin-ext",
5683
- "latin"
5684
- ],
5685
- "version": "v7",
5686
- "lastModified": "2016-05-31",
5687
- "files": {
5688
- "regular": "http://fonts.gstatic.com/s/gentiumbookbasic/v7/IRFxB2matTxrjZt6a3FUnrWDjKAyldGEr6eEi2MBNeY.ttf",
5689
- "italic": "http://fonts.gstatic.com/s/gentiumbookbasic/v7/qHqW2lwKO8-uTfIkh8FsUfXfjMwrYnmPVsQth2IcAPY.ttf",
5690
- "700": "http://fonts.gstatic.com/s/gentiumbookbasic/v7/T2vUYmWzlqUtgLYdlemGnaWESMHIjnSjm9UUxYtEOko.ttf",
5691
- "700italic": "http://fonts.gstatic.com/s/gentiumbookbasic/v7/632u7TMIoFDWQYUaHFUp5PA2A9KyRZEkn4TZVuhsWRM.ttf"
5692
- }
5693
- },
5694
- {
5695
- "kind": "webfonts#webfont",
5696
- "family": "Geo",
5697
- "category": "sans-serif",
5698
- "variants": [
5699
- "regular",
5700
- "italic"
5701
- ],
5702
- "subsets": [
5703
- "latin"
5704
- ],
5705
- "version": "v8",
5706
- "lastModified": "2016-06-07",
5707
- "files": {
5708
- "regular": "http://fonts.gstatic.com/s/geo/v8/mJuJYk5Pww84B4uHAQ1XaA.ttf",
5709
- "italic": "http://fonts.gstatic.com/s/geo/v8/8_r1wToF7nPdDuX1qxel6Q.ttf"
5710
- }
5711
- },
5712
- {
5713
- "kind": "webfonts#webfont",
5714
- "family": "Geostar",
5715
- "category": "display",
5716
- "variants": [
5717
- "regular"
5718
- ],
5719
- "subsets": [
5720
- "latin"
5721
- ],
5722
- "version": "v6",
5723
- "lastModified": "2016-05-31",
5724
- "files": {
5725
- "regular": "http://fonts.gstatic.com/s/geostar/v6/A8WQbhQbpYx3GWWaShJ9GA.ttf"
5726
- }
5727
- },
5728
- {
5729
- "kind": "webfonts#webfont",
5730
- "family": "Geostar Fill",
5731
- "category": "display",
5732
- "variants": [
5733
- "regular"
5734
- ],
5735
- "subsets": [
5736
- "latin"
5737
- ],
5738
- "version": "v6",
5739
- "lastModified": "2016-05-31",
5740
- "files": {
5741
- "regular": "http://fonts.gstatic.com/s/geostarfill/v6/Y5ovXPPOHYTfQzK2aM-hui3USBnSvpkopQaUR-2r7iU.ttf"
5742
- }
5743
- },
5744
- {
5745
- "kind": "webfonts#webfont",
5746
- "family": "Germania One",
5747
- "category": "display",
5748
- "variants": [
5749
- "regular"
5750
- ],
5751
- "subsets": [
5752
- "latin"
5753
- ],
5754
- "version": "v4",
5755
- "lastModified": "2016-05-31",
5756
- "files": {
5757
- "regular": "http://fonts.gstatic.com/s/germaniaone/v4/3_6AyUql_-FbDi1e68jHdC3USBnSvpkopQaUR-2r7iU.ttf"
5758
- }
5759
- },
5760
- {
5761
- "kind": "webfonts#webfont",
5762
- "family": "Gidugu",
5763
- "category": "sans-serif",
5764
- "variants": [
5765
- "regular"
5766
- ],
5767
- "subsets": [
5768
- "latin",
5769
- "telugu"
5770
- ],
5771
- "version": "v3",
5772
- "lastModified": "2016-05-31",
5773
- "files": {
5774
- "regular": "http://fonts.gstatic.com/s/gidugu/v3/Ey6Eq3hrT6MM58iFItFcgw.ttf"
5775
- }
5776
- },
5777
- {
5778
- "kind": "webfonts#webfont",
5779
- "family": "Gilda Display",
5780
- "category": "serif",
5781
- "variants": [
5782
- "regular"
5783
- ],
5784
- "subsets": [
5785
- "latin-ext",
5786
- "latin"
5787
- ],
5788
- "version": "v4",
5789
- "lastModified": "2016-05-31",
5790
- "files": {
5791
- "regular": "http://fonts.gstatic.com/s/gildadisplay/v4/8yAVUZLLZ3wb7dSsjix0CADHmap7fRWINAsw8-RaxNg.ttf"
5792
- }
5793
- },
5794
- {
5795
- "kind": "webfonts#webfont",
5796
- "family": "Give You Glory",
5797
- "category": "handwriting",
5798
- "variants": [
5799
- "regular"
5800
- ],
5801
- "subsets": [
5802
- "latin"
5803
- ],
5804
- "version": "v6",
5805
- "lastModified": "2016-05-31",
5806
- "files": {
5807
- "regular": "http://fonts.gstatic.com/s/giveyouglory/v6/DFEWZFgGmfseyIdGRJAxuBwwkpSPZdvjnMtysdqprfI.ttf"
5808
- }
5809
- },
5810
- {
5811
- "kind": "webfonts#webfont",
5812
- "family": "Glass Antiqua",
5813
- "category": "display",
5814
- "variants": [
5815
- "regular"
5816
- ],
5817
- "subsets": [
5818
- "latin-ext",
5819
- "latin"
5820
- ],
5821
- "version": "v4",
5822
- "lastModified": "2016-05-31",
5823
- "files": {
5824
- "regular": "http://fonts.gstatic.com/s/glassantiqua/v4/0yLrXKplgdUDIMz5TnCHNODcg5akpSnIcsPhLOFv7l8.ttf"
5825
- }
5826
- },
5827
- {
5828
- "kind": "webfonts#webfont",
5829
- "family": "Glegoo",
5830
- "category": "serif",
5831
- "variants": [
5832
- "regular",
5833
- "700"
5834
- ],
5835
- "subsets": [
5836
- "latin-ext",
5837
- "devanagari",
5838
- "latin"
5839
- ],
5840
- "version": "v5",
5841
- "lastModified": "2016-05-31",
5842
- "files": {
5843
- "regular": "http://fonts.gstatic.com/s/glegoo/v5/2tf-h3n2A_SNYXEO0C8bKw.ttf",
5844
- "700": "http://fonts.gstatic.com/s/glegoo/v5/TlLolbauH0-0Aiz1LUH5og.ttf"
5845
- }
5846
- },
5847
- {
5848
- "kind": "webfonts#webfont",
5849
- "family": "Gloria Hallelujah",
5850
- "category": "handwriting",
5851
- "variants": [
5852
- "regular"
5853
- ],
5854
- "subsets": [
5855
- "latin"
5856
- ],
5857
- "version": "v8",
5858
- "lastModified": "2016-05-31",
5859
- "files": {
5860
- "regular": "http://fonts.gstatic.com/s/gloriahallelujah/v8/CA1k7SlXcY5kvI81M_R28Q3RdPdyebSUyJECJouPsvA.ttf"
5861
- }
5862
- },
5863
- {
5864
- "kind": "webfonts#webfont",
5865
- "family": "Goblin One",
5866
- "category": "display",
5867
- "variants": [
5868
- "regular"
5869
- ],
5870
- "subsets": [
5871
- "latin"
5872
- ],
5873
- "version": "v6",
5874
- "lastModified": "2016-06-07",
5875
- "files": {
5876
- "regular": "http://fonts.gstatic.com/s/goblinone/v6/331XtzoXgpVEvNTVcBJ_C_esZW2xOQ-xsNqO47m55DA.ttf"
5877
- }
5878
- },
5879
- {
5880
- "kind": "webfonts#webfont",
5881
- "family": "Gochi Hand",
5882
- "category": "handwriting",
5883
- "variants": [
5884
- "regular"
5885
- ],
5886
- "subsets": [
5887
- "latin"
5888
- ],
5889
- "version": "v7",
5890
- "lastModified": "2016-05-31",
5891
- "files": {
5892
- "regular": "http://fonts.gstatic.com/s/gochihand/v7/KT1-WxgHsittJ34_20IfAPesZW2xOQ-xsNqO47m55DA.ttf"
5893
- }
5894
- },
5895
- {
5896
- "kind": "webfonts#webfont",
5897
- "family": "Gorditas",
5898
- "category": "display",
5899
- "variants": [
5900
- "regular",
5901
- "700"
5902
- ],
5903
- "subsets": [
5904
- "latin"
5905
- ],
5906
- "version": "v4",
5907
- "lastModified": "2016-05-31",
5908
- "files": {
5909
- "regular": "http://fonts.gstatic.com/s/gorditas/v4/uMgZhXUyH6qNGF3QsjQT5Q.ttf",
5910
- "700": "http://fonts.gstatic.com/s/gorditas/v4/6-XCeknmxaon8AUqVkMnHaCWcynf_cDxXwCLxiixG1c.ttf"
5911
- }
5912
- },
5913
- {
5914
- "kind": "webfonts#webfont",
5915
- "family": "Goudy Bookletter 1911",
5916
- "category": "serif",
5917
- "variants": [
5918
- "regular"
5919
- ],
5920
- "subsets": [
5921
- "latin"
5922
- ],
5923
- "version": "v6",
5924
- "lastModified": "2016-05-31",
5925
- "files": {
5926
- "regular": "http://fonts.gstatic.com/s/goudybookletter1911/v6/l5lwlGTN3pEY5Bf-rQEuIIjNDsyURsIKu4GSfvSE4mA.ttf"
5927
- }
5928
- },
5929
- {
5930
- "kind": "webfonts#webfont",
5931
- "family": "Graduate",
5932
- "category": "display",
5933
- "variants": [
5934
- "regular"
5935
- ],
5936
- "subsets": [
5937
- "latin"
5938
- ],
5939
- "version": "v4",
5940
- "lastModified": "2016-05-31",
5941
- "files": {
5942
- "regular": "http://fonts.gstatic.com/s/graduate/v4/JpAmYLHqcIh9_Ff35HHwiA.ttf"
5943
- }
5944
- },
5945
- {
5946
- "kind": "webfonts#webfont",
5947
- "family": "Grand Hotel",
5948
- "category": "handwriting",
5949
- "variants": [
5950
- "regular"
5951
- ],
5952
- "subsets": [
5953
- "latin-ext",
5954
- "latin"
5955
- ],
5956
- "version": "v4",
5957
- "lastModified": "2016-05-31",
5958
- "files": {
5959
- "regular": "http://fonts.gstatic.com/s/grandhotel/v4/C_A8HiFZjXPpnMt38XnK7qCWcynf_cDxXwCLxiixG1c.ttf"
5960
- }
5961
- },
5962
- {
5963
- "kind": "webfonts#webfont",
5964
- "family": "Gravitas One",
5965
- "category": "display",
5966
- "variants": [
5967
- "regular"
5968
- ],
5969
- "subsets": [
5970
- "latin"
5971
- ],
5972
- "version": "v6",
5973
- "lastModified": "2016-06-07",
5974
- "files": {
5975
- "regular": "http://fonts.gstatic.com/s/gravitasone/v6/nBHdBv6zVNU8MtP6w9FwTS3USBnSvpkopQaUR-2r7iU.ttf"
5976
- }
5977
- },
5978
- {
5979
- "kind": "webfonts#webfont",
5980
- "family": "Great Vibes",
5981
- "category": "handwriting",
5982
- "variants": [
5983
- "regular"
5984
- ],
5985
- "subsets": [
5986
- "latin-ext",
5987
- "latin"
5988
- ],
5989
- "version": "v4",
5990
- "lastModified": "2016-05-31",
5991
- "files": {
5992
- "regular": "http://fonts.gstatic.com/s/greatvibes/v4/4Mi5RG_9LjQYrTU55GN_L6CWcynf_cDxXwCLxiixG1c.ttf"
5993
- }
5994
- },
5995
- {
5996
- "kind": "webfonts#webfont",
5997
- "family": "Griffy",
5998
- "category": "display",
5999
- "variants": [
6000
- "regular"
6001
- ],
6002
- "subsets": [
6003
- "latin-ext",
6004
- "latin"
6005
- ],
6006
- "version": "v4",
6007
- "lastModified": "2016-05-31",
6008
- "files": {
6009
- "regular": "http://fonts.gstatic.com/s/griffy/v4/vWkyYGBSyE5xjnShNtJtzw.ttf"
6010
- }
6011
- },
6012
- {
6013
- "kind": "webfonts#webfont",
6014
- "family": "Gruppo",
6015
- "category": "display",
6016
- "variants": [
6017
- "regular"
6018
- ],
6019
- "subsets": [
6020
- "latin-ext",
6021
- "latin"
6022
- ],
6023
- "version": "v7",
6024
- "lastModified": "2016-05-31",
6025
- "files": {
6026
- "regular": "http://fonts.gstatic.com/s/gruppo/v7/pS_JM0cK_piBZve-lfUq9w.ttf"
6027
- }
6028
- },
6029
- {
6030
- "kind": "webfonts#webfont",
6031
- "family": "Gudea",
6032
- "category": "sans-serif",
6033
- "variants": [
6034
- "regular",
6035
- "italic",
6036
- "700"
6037
- ],
6038
- "subsets": [
6039
- "latin-ext",
6040
- "latin"
6041
- ],
6042
- "version": "v4",
6043
- "lastModified": "2016-05-31",
6044
- "files": {
6045
- "regular": "http://fonts.gstatic.com/s/gudea/v4/S-4QqBlkMPiiA3jNeCR5yw.ttf",
6046
- "italic": "http://fonts.gstatic.com/s/gudea/v4/7mNgsGw_vfS-uUgRVXNDSw.ttf",
6047
- "700": "http://fonts.gstatic.com/s/gudea/v4/lsip4aiWhJ9bx172Y9FN_w.ttf"
6048
- }
6049
- },
6050
- {
6051
- "kind": "webfonts#webfont",
6052
- "family": "Gurajada",
6053
- "category": "serif",
6054
- "variants": [
6055
- "regular"
6056
- ],
6057
- "subsets": [
6058
- "latin",
6059
- "telugu"
6060
- ],
6061
- "version": "v4",
6062
- "lastModified": "2016-05-31",
6063
- "files": {
6064
- "regular": "http://fonts.gstatic.com/s/gurajada/v4/6Adfkl4PCRyq6XTENACEyA.ttf"
6065
- }
6066
- },
6067
- {
6068
- "kind": "webfonts#webfont",
6069
- "family": "Habibi",
6070
- "category": "serif",
6071
- "variants": [
6072
- "regular"
6073
- ],
6074
- "subsets": [
6075
- "latin-ext",
6076
- "latin"
6077
- ],
6078
- "version": "v5",
6079
- "lastModified": "2016-06-07",
6080
- "files": {
6081
- "regular": "http://fonts.gstatic.com/s/habibi/v5/YYyqXF6pWpL7kmKgS_2iUA.ttf"
6082
- }
6083
- },
6084
- {
6085
- "kind": "webfonts#webfont",
6086
- "family": "Halant",
6087
- "category": "serif",
6088
- "variants": [
6089
- "300",
6090
- "regular",
6091
- "500",
6092
- "600",
6093
- "700"
6094
- ],
6095
- "subsets": [
6096
- "latin-ext",
6097
- "devanagari",
6098
- "latin"
6099
- ],
6100
- "version": "v2",
6101
- "lastModified": "2016-05-31",
6102
- "files": {
6103
- "300": "http://fonts.gstatic.com/s/halant/v2/dM3ItAOWNNod_Cf3MnLlEg.ttf",
6104
- "regular": "http://fonts.gstatic.com/s/halant/v2/rEs7Jk3SVyt3cTx6DoTu1w.ttf",
6105
- "500": "http://fonts.gstatic.com/s/halant/v2/tlsNj3K-hJKtiirTDtUbkQ.ttf",
6106
- "600": "http://fonts.gstatic.com/s/halant/v2/zNR2WvI_V8o652vIZp3X4Q.ttf",
6107
- "700": "http://fonts.gstatic.com/s/halant/v2/D9FN7OH89AuCmZDLHbPQfA.ttf"
6108
- }
6109
- },
6110
- {
6111
- "kind": "webfonts#webfont",
6112
- "family": "Hammersmith One",
6113
- "category": "sans-serif",
6114
- "variants": [
6115
- "regular"
6116
- ],
6117
- "subsets": [
6118
- "latin-ext",
6119
- "latin"
6120
- ],
6121
- "version": "v7",
6122
- "lastModified": "2016-06-07",
6123
- "files": {
6124
- "regular": "http://fonts.gstatic.com/s/hammersmithone/v7/FWNn6ITYqL6or7ZTmBxRhjjVlsJB_M_Q_LtZxsoxvlw.ttf"
6125
- }
6126
- },
6127
- {
6128
- "kind": "webfonts#webfont",
6129
- "family": "Hanalei",
6130
- "category": "display",
6131
- "variants": [
6132
- "regular"
6133
- ],
6134
- "subsets": [
6135
- "latin-ext",
6136
- "latin"
6137
- ],
6138
- "version": "v6",
6139
- "lastModified": "2016-05-31",
6140
- "files": {
6141
- "regular": "http://fonts.gstatic.com/s/hanalei/v6/Sx8vVMBnXSQyK6Cn0CBJ3A.ttf"
6142
- }
6143
- },
6144
- {
6145
- "kind": "webfonts#webfont",
6146
- "family": "Hanalei Fill",
6147
- "category": "display",
6148
- "variants": [
6149
- "regular"
6150
- ],
6151
- "subsets": [
6152
- "latin-ext",
6153
- "latin"
6154
- ],
6155
- "version": "v5",
6156
- "lastModified": "2016-05-31",
6157
- "files": {
6158
- "regular": "http://fonts.gstatic.com/s/hanaleifill/v5/5uPeWLnaDdtm4UBG26Ds6C3USBnSvpkopQaUR-2r7iU.ttf"
6159
- }
6160
- },
6161
- {
6162
- "kind": "webfonts#webfont",
6163
- "family": "Handlee",
6164
- "category": "handwriting",
6165
- "variants": [
6166
- "regular"
6167
- ],
6168
- "subsets": [
6169
- "latin"
6170
- ],
6171
- "version": "v5",
6172
- "lastModified": "2016-05-31",
6173
- "files": {
6174
- "regular": "http://fonts.gstatic.com/s/handlee/v5/6OfkXkyC0E5NZN80ED8u3A.ttf"
6175
- }
6176
- },
6177
- {
6178
- "kind": "webfonts#webfont",
6179
- "family": "Hanuman",
6180
- "category": "serif",
6181
- "variants": [
6182
- "regular",
6183
- "700"
6184
- ],
6185
- "subsets": [
6186
- "khmer"
6187
- ],
6188
- "version": "v9",
6189
- "lastModified": "2016-05-31",
6190
- "files": {
6191
- "regular": "http://fonts.gstatic.com/s/hanuman/v9/hRhwOGGmElJSl6KSPvEnOQ.ttf",
6192
- "700": "http://fonts.gstatic.com/s/hanuman/v9/lzzXZ2l84x88giDrbfq76vesZW2xOQ-xsNqO47m55DA.ttf"
6193
- }
6194
- },
6195
- {
6196
- "kind": "webfonts#webfont",
6197
- "family": "Happy Monkey",
6198
- "category": "display",
6199
- "variants": [
6200
- "regular"
6201
- ],
6202
- "subsets": [
6203
- "latin-ext",
6204
- "latin"
6205
- ],
6206
- "version": "v5",
6207
- "lastModified": "2016-05-31",
6208
- "files": {
6209
- "regular": "http://fonts.gstatic.com/s/happymonkey/v5/c2o0ps8nkBmaOYctqBq1rS3USBnSvpkopQaUR-2r7iU.ttf"
6210
- }
6211
- },
6212
- {
6213
- "kind": "webfonts#webfont",
6214
- "family": "Harmattan",
6215
- "category": "sans-serif",
6216
- "variants": [
6217
- "regular"
6218
- ],
6219
- "subsets": [
6220
- "arabic",
6221
- "latin"
6222
- ],
6223
- "version": "v1",
6224
- "lastModified": "2016-06-20",
6225
- "files": {
6226
- "regular": "http://fonts.gstatic.com/s/harmattan/v1/xNM1nDKzsLfoCLQtMRztGA.ttf"
6227
- }
6228
- },
6229
- {
6230
- "kind": "webfonts#webfont",
6231
- "family": "Headland One",
6232
- "category": "serif",
6233
- "variants": [
6234
- "regular"
6235
- ],
6236
- "subsets": [
6237
- "latin-ext",
6238
- "latin"
6239
- ],
6240
- "version": "v4",
6241
- "lastModified": "2016-05-31",
6242
- "files": {
6243
- "regular": "http://fonts.gstatic.com/s/headlandone/v4/iGmBeOvQGfq9DSbjJ8jDVy3USBnSvpkopQaUR-2r7iU.ttf"
6244
- }
6245
- },
6246
- {
6247
- "kind": "webfonts#webfont",
6248
- "family": "Heebo",
6249
- "category": "sans-serif",
6250
- "variants": [
6251
- "100",
6252
- "300",
6253
- "regular",
6254
- "500",
6255
- "700",
6256
- "800",
6257
- "900"
6258
- ],
6259
- "subsets": [
6260
- "hebrew",
6261
- "latin"
6262
- ],
6263
- "version": "v2",
6264
- "lastModified": "2016-06-20",
6265
- "files": {
6266
- "100": "http://fonts.gstatic.com/s/heebo/v2/SoQODIucfpkiveZloUR6ag.ttf",
6267
- "300": "http://fonts.gstatic.com/s/heebo/v2/dg5T18yyjkKiU_9mmcbDSQ.ttf",
6268
- "regular": "http://fonts.gstatic.com/s/heebo/v2/nyHCGMPliplPNqpssbDSIA.ttf",
6269
- "500": "http://fonts.gstatic.com/s/heebo/v2/jDb70ZCwdD6JnmQU62ZQZA.ttf",
6270
- "700": "http://fonts.gstatic.com/s/heebo/v2/NsBYEn6oWei8pPqytA07yA.ttf",
6271
- "800": "http://fonts.gstatic.com/s/heebo/v2/h4CV2Qq56LKIinGGOStvsw.ttf",
6272
- "900": "http://fonts.gstatic.com/s/heebo/v2/uDfzHw3R0Bfa6HyIIcj-ow.ttf"
6273
- }
6274
- },
6275
- {
6276
- "kind": "webfonts#webfont",
6277
- "family": "Henny Penny",
6278
- "category": "display",
6279
- "variants": [
6280
- "regular"
6281
- ],
6282
- "subsets": [
6283
- "latin"
6284
- ],
6285
- "version": "v4",
6286
- "lastModified": "2016-05-31",
6287
- "files": {
6288
- "regular": "http://fonts.gstatic.com/s/hennypenny/v4/XRgo3ogXyi3tpsFfjImRF6CWcynf_cDxXwCLxiixG1c.ttf"
6289
- }
6290
- },
6291
- {
6292
- "kind": "webfonts#webfont",
6293
- "family": "Herr Von Muellerhoff",
6294
- "category": "handwriting",
6295
- "variants": [
6296
- "regular"
6297
- ],
6298
- "subsets": [
6299
- "latin-ext",
6300
- "latin"
6301
- ],
6302
- "version": "v6",
6303
- "lastModified": "2016-05-31",
6304
- "files": {
6305
- "regular": "http://fonts.gstatic.com/s/herrvonmuellerhoff/v6/mmy24EUmk4tjm4gAEjUd7NLGIYrUsBdh-JWHYgiDiMU.ttf"
6306
- }
6307
- },
6308
- {
6309
- "kind": "webfonts#webfont",
6310
- "family": "Hind",
6311
- "category": "sans-serif",
6312
- "variants": [
6313
- "300",
6314
- "regular",
6315
- "500",
6316
- "600",
6317
- "700"
6318
- ],
6319
- "subsets": [
6320
- "latin-ext",
6321
- "devanagari",
6322
- "latin"
6323
- ],
6324
- "version": "v6",
6325
- "lastModified": "2016-06-02",
6326
- "files": {
6327
- "300": "http://fonts.gstatic.com/s/hind/v6/qa346Adgv9kPDXoD1my4kA.ttf",
6328
- "regular": "http://fonts.gstatic.com/s/hind/v6/mktFHh5Z5P9YjGKSslSUtA.ttf",
6329
- "500": "http://fonts.gstatic.com/s/hind/v6/2cs8RCVcYtiv4iNDH1UsQQ.ttf",
6330
- "600": "http://fonts.gstatic.com/s/hind/v6/TUKUmFMXSoxloBP1ni08oA.ttf",
6331
- "700": "http://fonts.gstatic.com/s/hind/v6/cXJJavLdUbCfjxlsA6DqTw.ttf"
6332
- }
6333
- },
6334
- {
6335
- "kind": "webfonts#webfont",
6336
- "family": "Hind Guntur",
6337
- "category": "sans-serif",
6338
- "variants": [
6339
- "300",
6340
- "regular",
6341
- "500",
6342
- "600",
6343
- "700"
6344
- ],
6345
- "subsets": [
6346
- "latin-ext",
6347
- "latin",
6348
- "telugu"
6349
- ],
6350
- "version": "v1",
6351
- "lastModified": "2016-06-20",
6352
- "files": {
6353
- "300": "http://fonts.gstatic.com/s/hindguntur/v1/Szg33M7ab5MTWe-PWAcNAi9-WlPSxbfiI49GsXo3q0g.ttf",
6354
- "regular": "http://fonts.gstatic.com/s/hindguntur/v1/MXz-KyAeVZstlFz6v-5SC6CWcynf_cDxXwCLxiixG1c.ttf",
6355
- "500": "http://fonts.gstatic.com/s/hindguntur/v1/Szg33M7ab5MTWe-PWAcNAsCNfqCYlB_eIx7H1TVXe60.ttf",
6356
- "600": "http://fonts.gstatic.com/s/hindguntur/v1/Szg33M7ab5MTWe-PWAcNApZ7xm-Bj30Bj2KNdXDzSZg.ttf",
6357
- "700": "http://fonts.gstatic.com/s/hindguntur/v1/Szg33M7ab5MTWe-PWAcNAne1Pd76Vl7zRpE7NLJQ7XU.ttf"
6358
- }
6359
- },
6360
- {
6361
- "kind": "webfonts#webfont",
6362
- "family": "Hind Madurai",
6363
- "category": "sans-serif",
6364
- "variants": [
6365
- "300",
6366
- "regular",
6367
- "500",
6368
- "600",
6369
- "700"
6370
- ],
6371
- "subsets": [
6372
- "latin-ext",
6373
- "tamil",
6374
- "latin"
6375
- ],
6376
- "version": "v1",
6377
- "lastModified": "2016-06-20",
6378
- "files": {
6379
- "300": "http://fonts.gstatic.com/s/hindmadurai/v1/sdSJTZLdRXJhVTP92m2S66cQoVhARpoaILP7amxE_8g.ttf",
6380
- "regular": "http://fonts.gstatic.com/s/hindmadurai/v1/pJpl47LatORZNWf8rgdiyS3USBnSvpkopQaUR-2r7iU.ttf",
6381
- "500": "http://fonts.gstatic.com/s/hindmadurai/v1/sdSJTZLdRXJhVTP92m2S65MQuUSAwdHsY8ov_6tk1oA.ttf",
6382
- "600": "http://fonts.gstatic.com/s/hindmadurai/v1/sdSJTZLdRXJhVTP92m2S62v8CylhIUtwUiYO7Z2wXbE.ttf",
6383
- "700": "http://fonts.gstatic.com/s/hindmadurai/v1/sdSJTZLdRXJhVTP92m2S60D2ttfZwueP-QU272T9-k4.ttf"
6384
- }
6385
- },
6386
- {
6387
- "kind": "webfonts#webfont",
6388
- "family": "Hind Siliguri",
6389
- "category": "sans-serif",
6390
- "variants": [
6391
- "300",
6392
- "regular",
6393
- "500",
6394
- "600",
6395
- "700"
6396
- ],
6397
- "subsets": [
6398
- "latin-ext",
6399
- "bengali",
6400
- "latin"
6401
- ],
6402
- "version": "v2",
6403
- "lastModified": "2016-06-02",
6404
- "files": {
6405
- "300": "http://fonts.gstatic.com/s/hindsiliguri/v2/fBpmjMpv5Rh6S25yVfWJnzoJ52uD-1fmXmi8u0n_zsc.ttf",
6406
- "regular": "http://fonts.gstatic.com/s/hindsiliguri/v2/f2eEi2pbIa8eBfNwpUl0Am_MnNA9OgK8I1F23mNWOpE.ttf",
6407
- "500": "http://fonts.gstatic.com/s/hindsiliguri/v2/fBpmjMpv5Rh6S25yVfWJn__2zpxNHQ3utWt_82o9dAo.ttf",
6408
- "600": "http://fonts.gstatic.com/s/hindsiliguri/v2/fBpmjMpv5Rh6S25yVfWJn-x91FDzFvnud68bXrNkpDA.ttf",
6409
- "700": "http://fonts.gstatic.com/s/hindsiliguri/v2/fBpmjMpv5Rh6S25yVfWJn6iiXuG_rGcOxkuidirlnJE.ttf"
6410
- }
6411
- },
6412
- {
6413
- "kind": "webfonts#webfont",
6414
- "family": "Hind Vadodara",
6415
- "category": "sans-serif",
6416
- "variants": [
6417
- "300",
6418
- "regular",
6419
- "500",
6420
- "600",
6421
- "700"
6422
- ],
6423
- "subsets": [
6424
- "gujarati",
6425
- "latin-ext",
6426
- "latin"
6427
- ],
6428
- "version": "v2",
6429
- "lastModified": "2016-06-02",
6430
- "files": {
6431
- "300": "http://fonts.gstatic.com/s/hindvadodara/v2/KrZ6f_YevRawHvh0qDBkTbDwfZ__Dotj_J8NiWv76DQ.ttf",
6432
- "regular": "http://fonts.gstatic.com/s/hindvadodara/v2/9c6KKeibr6NtFqknnNxZB-Dcg5akpSnIcsPhLOFv7l8.ttf",
6433
- "500": "http://fonts.gstatic.com/s/hindvadodara/v2/KrZ6f_YevRawHvh0qDBkTZzEKvFIU9WyojfbAkhDb6c.ttf",
6434
- "600": "http://fonts.gstatic.com/s/hindvadodara/v2/KrZ6f_YevRawHvh0qDBkTfgXs2VXrZsRiQ1c96pXZKI.ttf",
6435
- "700": "http://fonts.gstatic.com/s/hindvadodara/v2/KrZ6f_YevRawHvh0qDBkTYGjoH95IEFGA7BjhXnx_eg.ttf"
6436
- }
6437
- },
6438
- {
6439
- "kind": "webfonts#webfont",
6440
- "family": "Holtwood One SC",
6441
- "category": "serif",
6442
- "variants": [
6443
- "regular"
6444
- ],
6445
- "subsets": [
6446
- "latin"
6447
- ],
6448
- "version": "v7",
6449
- "lastModified": "2016-05-31",
6450
- "files": {
6451
- "regular": "http://fonts.gstatic.com/s/holtwoodonesc/v7/sToOq3cIxbfnhbEkgYNuBbAgSRh1LpJXlLfl8IbsmHg.ttf"
6452
- }
6453
- },
6454
- {
6455
- "kind": "webfonts#webfont",
6456
- "family": "Homemade Apple",
6457
- "category": "handwriting",
6458
- "variants": [
6459
- "regular"
6460
- ],
6461
- "subsets": [
6462
- "latin"
6463
- ],
6464
- "version": "v6",
6465
- "lastModified": "2016-10-05",
6466
- "files": {
6467
- "regular": "http://fonts.gstatic.com/s/homemadeapple/v6/yg3UMEsefgZ8IHz_ryz86BiPOmFWYV1WlrJkRafc4c0.ttf"
6468
- }
6469
- },
6470
- {
6471
- "kind": "webfonts#webfont",
6472
- "family": "Homenaje",
6473
- "category": "sans-serif",
6474
- "variants": [
6475
- "regular"
6476
- ],
6477
- "subsets": [
6478
- "latin-ext",
6479
- "latin"
6480
- ],
6481
- "version": "v5",
6482
- "lastModified": "2016-05-31",
6483
- "files": {
6484
- "regular": "http://fonts.gstatic.com/s/homenaje/v5/v0YBU0iBRrGdVjDNQILxtA.ttf"
6485
- }
6486
- },
6487
- {
6488
- "kind": "webfonts#webfont",
6489
- "family": "IM Fell DW Pica",
6490
- "category": "serif",
6491
- "variants": [
6492
- "regular",
6493
- "italic"
6494
- ],
6495
- "subsets": [
6496
- "latin"
6497
- ],
6498
- "version": "v6",
6499
- "lastModified": "2016-05-31",
6500
- "files": {
6501
- "regular": "http://fonts.gstatic.com/s/imfelldwpica/v6/W81bfaWiUicLSPbJhW-ATsA5qm663gJGVdtpamafG5A.ttf",
6502
- "italic": "http://fonts.gstatic.com/s/imfelldwpica/v6/alQJ8SK5aSOZVaelYoyT4PL2asmh5DlYQYCosKo6yQs.ttf"
6503
- }
6504
- },
6505
- {
6506
- "kind": "webfonts#webfont",
6507
- "family": "IM Fell DW Pica SC",
6508
- "category": "serif",
6509
- "variants": [
6510
- "regular"
6511
- ],
6512
- "subsets": [
6513
- "latin"
6514
- ],
6515
- "version": "v6",
6516
- "lastModified": "2016-05-31",
6517
- "files": {
6518
- "regular": "http://fonts.gstatic.com/s/imfelldwpicasc/v6/xBKKJV4z2KsrtQnmjGO17JZ9RBdEL0H9o5qzT1Rtof4.ttf"
6519
- }
6520
- },
6521
- {
6522
- "kind": "webfonts#webfont",
6523
- "family": "IM Fell Double Pica",
6524
- "category": "serif",
6525
- "variants": [
6526
- "regular",
6527
- "italic"
6528
- ],
6529
- "subsets": [
6530
- "latin"
6531
- ],
6532
- "version": "v6",
6533
- "lastModified": "2016-05-31",
6534
- "files": {
6535
- "regular": "http://fonts.gstatic.com/s/imfelldoublepica/v6/yN1wY_01BkQnO0LYAhXdUol14jEdVOhEmvtCMCVwYak.ttf",
6536
- "italic": "http://fonts.gstatic.com/s/imfelldoublepica/v6/64odUh2hAw8D9dkFKTlWYq0AWwkgdQfsRHec8TYi4mI.ttf"
6537
- }
6538
- },
6539
- {
6540
- "kind": "webfonts#webfont",
6541
- "family": "IM Fell Double Pica SC",
6542
- "category": "serif",
6543
- "variants": [
6544
- "regular"
6545
- ],
6546
- "subsets": [
6547
- "latin"
6548
- ],
6549
- "version": "v6",
6550
- "lastModified": "2016-05-31",
6551
- "files": {
6552
- "regular": "http://fonts.gstatic.com/s/imfelldoublepicasc/v6/jkrUtrLFpMw4ZazhfkKsGwc4LoC4OJUqLw9omnT3VOU.ttf"
6553
- }
6554
- },
6555
- {
6556
- "kind": "webfonts#webfont",
6557
- "family": "IM Fell English",
6558
- "category": "serif",
6559
- "variants": [
6560
- "regular",
6561
- "italic"
6562
- ],
6563
- "subsets": [
6564
- "latin"
6565
- ],
6566
- "version": "v6",
6567
- "lastModified": "2016-05-31",
6568
- "files": {
6569
- "regular": "http://fonts.gstatic.com/s/imfellenglish/v6/xwIisCqGFi8pff-oa9uSVHGNmx1fDm-u2eBJHQkdrmk.ttf",
6570
- "italic": "http://fonts.gstatic.com/s/imfellenglish/v6/Z3cnIAI_L3XTRfz4JuZKbuewladMPCWTthtMv9cPS-c.ttf"
6571
- }
6572
- },
6573
- {
6574
- "kind": "webfonts#webfont",
6575
- "family": "IM Fell English SC",
6576
- "category": "serif",
6577
- "variants": [
6578
- "regular"
6579
- ],
6580
- "subsets": [
6581
- "latin"
6582
- ],
6583
- "version": "v6",
6584
- "lastModified": "2016-05-31",
6585
- "files": {
6586
- "regular": "http://fonts.gstatic.com/s/imfellenglishsc/v6/h3Tn6yWfw4b5qaLD1RWvz5ATixNthKRRR1XVH3rJNiw.ttf"
6587
- }
6588
- },
6589
- {
6590
- "kind": "webfonts#webfont",
6591
- "family": "IM Fell French Canon",
6592
- "category": "serif",
6593
- "variants": [
6594
- "regular",
6595
- "italic"
6596
- ],
6597
- "subsets": [
6598
- "latin"
6599
- ],
6600
- "version": "v6",
6601
- "lastModified": "2016-05-31",
6602
- "files": {
6603
- "regular": "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/iKB0WL1BagSpNPz3NLMdsJ3V2FNpBrlLSvqUnERhBP8.ttf",
6604
- "italic": "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/owCuNQkLLFW7TBBPJbMnhRa-QL94KdW80H29tcyld2A.ttf"
6605
- }
6606
- },
6607
- {
6608
- "kind": "webfonts#webfont",
6609
- "family": "IM Fell French Canon SC",
6610
- "category": "serif",
6611
- "variants": [
6612
- "regular"
6613
- ],
6614
- "subsets": [
6615
- "latin"
6616
- ],
6617
- "version": "v6",
6618
- "lastModified": "2016-05-31",
6619
- "files": {
6620
- "regular": "http://fonts.gstatic.com/s/imfellfrenchcanonsc/v6/kA3bS19-tQbeT_iG32EZmaiyyzHwYrAbmNulTz423iM.ttf"
6621
- }
6622
- },
6623
- {
6624
- "kind": "webfonts#webfont",
6625
- "family": "IM Fell Great Primer",
6626
- "category": "serif",
6627
- "variants": [
6628
- "regular",
6629
- "italic"
6630
- ],
6631
- "subsets": [
6632
- "latin"
6633
- ],
6634
- "version": "v6",
6635
- "lastModified": "2016-05-31",
6636
- "files": {
6637
- "regular": "http://fonts.gstatic.com/s/imfellgreatprimer/v6/AL8ALGNthei20f9Cu3e93rgeX3ROgtTz44CitKAxzKI.ttf",
6638
- "italic": "http://fonts.gstatic.com/s/imfellgreatprimer/v6/1a-artkXMVg682r7TTxVY1_YG2SFv8Ma7CxRl1S3o7g.ttf"
6639
- }
6640
- },
6641
- {
6642
- "kind": "webfonts#webfont",
6643
- "family": "IM Fell Great Primer SC",
6644
- "category": "serif",
6645
- "variants": [
6646
- "regular"
6647
- ],
6648
- "subsets": [
6649
- "latin"
6650
- ],
6651
- "version": "v6",
6652
- "lastModified": "2016-05-31",
6653
- "files": {
6654
- "regular": "http://fonts.gstatic.com/s/imfellgreatprimersc/v6/A313vRj97hMMGFjt6rgSJtRg-ciw1Y27JeXb2Zv4lZQ.ttf"
6655
- }
6656
- },
6657
- {
6658
- "kind": "webfonts#webfont",
6659
- "family": "Iceberg",
6660
- "category": "display",
6661
- "variants": [
6662
- "regular"
6663
- ],
6664
- "subsets": [
6665
- "latin"
6666
- ],
6667
- "version": "v4",
6668
- "lastModified": "2016-05-31",
6669
- "files": {
6670
- "regular": "http://fonts.gstatic.com/s/iceberg/v4/p2XVm4M-N0AOEEOymFKC5w.ttf"
6671
- }
6672
- },
6673
- {
6674
- "kind": "webfonts#webfont",
6675
- "family": "Iceland",
6676
- "category": "display",
6677
- "variants": [
6678
- "regular"
6679
- ],
6680
- "subsets": [
6681
- "latin"
6682
- ],
6683
- "version": "v5",
6684
- "lastModified": "2016-05-31",
6685
- "files": {
6686
- "regular": "http://fonts.gstatic.com/s/iceland/v5/kq3uTMGgvzWGNi39B_WxGA.ttf"
6687
- }
6688
- },
6689
- {
6690
- "kind": "webfonts#webfont",
6691
- "family": "Imprima",
6692
- "category": "sans-serif",
6693
- "variants": [
6694
- "regular"
6695
- ],
6696
- "subsets": [
6697
- "latin-ext",
6698
- "latin"
6699
- ],
6700
- "version": "v4",
6701
- "lastModified": "2016-05-31",
6702
- "files": {
6703
- "regular": "http://fonts.gstatic.com/s/imprima/v4/eRjquWLjwLGnTEhLH7u3kA.ttf"
6704
- }
6705
- },
6706
- {
6707
- "kind": "webfonts#webfont",
6708
- "family": "Inconsolata",
6709
- "category": "monospace",
6710
- "variants": [
6711
- "regular",
6712
- "700"
6713
- ],
6714
- "subsets": [
6715
- "latin-ext",
6716
- "latin"
6717
- ],
6718
- "version": "v14",
6719
- "lastModified": "2016-11-01",
6720
- "files": {
6721
- "regular": "http://fonts.gstatic.com/s/inconsolata/v14/7bMKuoy6Nh0ft0SHnIGMuaCWcynf_cDxXwCLxiixG1c.ttf",
6722
- "700": "http://fonts.gstatic.com/s/inconsolata/v14/AIed271kqQlcIRSOnQH0yXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
6723
- }
6724
- },
6725
- {
6726
- "kind": "webfonts#webfont",
6727
- "family": "Inder",
6728
- "category": "sans-serif",
6729
- "variants": [
6730
- "regular"
6731
- ],
6732
- "subsets": [
6733
- "latin-ext",
6734
- "latin"
6735
- ],
6736
- "version": "v5",
6737
- "lastModified": "2016-06-07",
6738
- "files": {
6739
- "regular": "http://fonts.gstatic.com/s/inder/v5/C38TwecLTfKxIHDc_Adcrw.ttf"
6740
- }
6741
- },
6742
- {
6743
- "kind": "webfonts#webfont",
6744
- "family": "Indie Flower",
6745
- "category": "handwriting",
6746
- "variants": [
6747
- "regular"
6748
- ],
6749
- "subsets": [
6750
- "latin"
6751
- ],
6752
- "version": "v8",
6753
- "lastModified": "2016-05-31",
6754
- "files": {
6755
- "regular": "http://fonts.gstatic.com/s/indieflower/v8/10JVD_humAd5zP2yrFqw6i3USBnSvpkopQaUR-2r7iU.ttf"
6756
- }
6757
- },
6758
- {
6759
- "kind": "webfonts#webfont",
6760
- "family": "Inika",
6761
- "category": "serif",
6762
- "variants": [
6763
- "regular",
6764
- "700"
6765
- ],
6766
- "subsets": [
6767
- "latin-ext",
6768
- "latin"
6769
- ],
6770
- "version": "v4",
6771
- "lastModified": "2016-05-31",
6772
- "files": {
6773
- "regular": "http://fonts.gstatic.com/s/inika/v4/eZCrULQGaIxkrRoGz_DjhQ.ttf",
6774
- "700": "http://fonts.gstatic.com/s/inika/v4/bl3ZoTyrWsFun2zYbsgJrA.ttf"
6775
- }
6776
- },
6777
- {
6778
- "kind": "webfonts#webfont",
6779
- "family": "Inknut Antiqua",
6780
- "category": "serif",
6781
- "variants": [
6782
- "300",
6783
- "regular",
6784
- "500",
6785
- "600",
6786
- "700",
6787
- "800",
6788
- "900"
6789
- ],
6790
- "subsets": [
6791
- "latin-ext",
6792
- "devanagari",
6793
- "latin"
6794
- ],
6795
- "version": "v1",
6796
- "lastModified": "2016-05-31",
6797
- "files": {
6798
- "300": "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIg6hmPNSXwHGnJQCeQHKUMo.ttf",
6799
- "regular": "http://fonts.gstatic.com/s/inknutantiqua/v1/VlmmTfOrxr3HfcnhMueX9arFJ4O13IHVxZbM6yoslpo.ttf",
6800
- "500": "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIiYCDvi1XFzRnTV7qUFsNgk.ttf",
6801
- "600": "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIjLEgY6PI0GrY6L00mykcEQ.ttf",
6802
- "700": "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIlRhfXn9P4_QueZ7VkUHUNc.ttf",
6803
- "800": "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVInARjXVu2t2krcNTHiCb1qY.ttf",
6804
- "900": "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIrTsNy1JrFNT1qKy8j7W3CU.ttf"
6805
- }
6806
- },
6807
- {
6808
- "kind": "webfonts#webfont",
6809
- "family": "Irish Grover",
6810
- "category": "display",
6811
- "variants": [
6812
- "regular"
6813
- ],
6814
- "subsets": [
6815
- "latin"
6816
- ],
6817
- "version": "v6",
6818
- "lastModified": "2016-10-05",
6819
- "files": {
6820
- "regular": "http://fonts.gstatic.com/s/irishgrover/v6/kUp7uUPooL-KsLGzeVJbBC3USBnSvpkopQaUR-2r7iU.ttf"
6821
- }
6822
- },
6823
- {
6824
- "kind": "webfonts#webfont",
6825
- "family": "Istok Web",
6826
- "category": "sans-serif",
6827
- "variants": [
6828
- "regular",
6829
- "italic",
6830
- "700",
6831
- "700italic"
6832
- ],
6833
- "subsets": [
6834
- "cyrillic-ext",
6835
- "latin-ext",
6836
- "cyrillic",
6837
- "latin"
6838
- ],
6839
- "version": "v10",
6840
- "lastModified": "2016-05-31",
6841
- "files": {
6842
- "regular": "http://fonts.gstatic.com/s/istokweb/v10/RYLSjEXQ0nNtLLc4n7--dQ.ttf",
6843
- "italic": "http://fonts.gstatic.com/s/istokweb/v10/kvcT2SlTjmGbC3YlZxmrl6CWcynf_cDxXwCLxiixG1c.ttf",
6844
- "700": "http://fonts.gstatic.com/s/istokweb/v10/2koEo4AKFSvK4B52O_Mwai3USBnSvpkopQaUR-2r7iU.ttf",
6845
- "700italic": "http://fonts.gstatic.com/s/istokweb/v10/ycQ3g52ELrh3o_HYCNNUw3e1Pd76Vl7zRpE7NLJQ7XU.ttf"
6846
- }
6847
- },
6848
- {
6849
- "kind": "webfonts#webfont",
6850
- "family": "Italiana",
6851
- "category": "serif",
6852
- "variants": [
6853
- "regular"
6854
- ],
6855
- "subsets": [
6856
- "latin"
6857
- ],
6858
- "version": "v5",
6859
- "lastModified": "2016-10-27",
6860
- "files": {
6861
- "regular": "http://fonts.gstatic.com/s/italiana/v5/dt95fkCSTOF-c6QNjwSycA.ttf"
6862
- }
6863
- },
6864
- {
6865
- "kind": "webfonts#webfont",
6866
- "family": "Italianno",
6867
- "category": "handwriting",
6868
- "variants": [
6869
- "regular"
6870
- ],
6871
- "subsets": [
6872
- "latin-ext",
6873
- "latin"
6874
- ],
6875
- "version": "v6",
6876
- "lastModified": "2016-05-31",
6877
- "files": {
6878
- "regular": "http://fonts.gstatic.com/s/italianno/v6/HsyHnLpKf8uP7aMpDQHZmg.ttf"
6879
- }
6880
- },
6881
- {
6882
- "kind": "webfonts#webfont",
6883
- "family": "Itim",
6884
- "category": "handwriting",
6885
- "variants": [
6886
- "regular"
6887
- ],
6888
- "subsets": [
6889
- "latin-ext",
6890
- "thai",
6891
- "latin",
6892
- "vietnamese"
6893
- ],
6894
- "version": "v1",
6895
- "lastModified": "2016-05-31",
6896
- "files": {
6897
- "regular": "http://fonts.gstatic.com/s/itim/v1/HHV9WK2x5lUkc5bxMXG8Tw.ttf"
6898
- }
6899
- },
6900
- {
6901
- "kind": "webfonts#webfont",
6902
- "family": "Jacques Francois",
6903
- "category": "serif",
6904
- "variants": [
6905
- "regular"
6906
- ],
6907
- "subsets": [
6908
- "latin"
6909
- ],
6910
- "version": "v4",
6911
- "lastModified": "2016-06-07",
6912
- "files": {
6913
- "regular": "http://fonts.gstatic.com/s/jacquesfrancois/v4/_-0XWPQIW6tOzTHg4KaJ_M13D_4KM32Q4UmTSjpuNGQ.ttf"
6914
- }
6915
- },
6916
- {
6917
- "kind": "webfonts#webfont",
6918
- "family": "Jacques Francois Shadow",
6919
- "category": "display",
6920
- "variants": [
6921
- "regular"
6922
- ],
6923
- "subsets": [
6924
- "latin"
6925
- ],
6926
- "version": "v4",
6927
- "lastModified": "2016-06-07",
6928
- "files": {
6929
- "regular": "http://fonts.gstatic.com/s/jacquesfrancoisshadow/v4/V14y0H3vq56fY9SV4OL_FASt0D_oLVawA8L8b9iKjbs.ttf"
6930
- }
6931
- },
6932
- {
6933
- "kind": "webfonts#webfont",
6934
- "family": "Jaldi",
6935
- "category": "sans-serif",
6936
- "variants": [
6937
- "regular",
6938
- "700"
6939
- ],
6940
- "subsets": [
6941
- "latin-ext",
6942
- "devanagari",
6943
- "latin"
6944
- ],
6945
- "version": "v2",
6946
- "lastModified": "2016-06-07",
6947
- "files": {
6948
- "regular": "http://fonts.gstatic.com/s/jaldi/v2/x1vR-bPW9a1EB-BUVqttCw.ttf",
6949
- "700": "http://fonts.gstatic.com/s/jaldi/v2/OIbtgjjEp3aVWtjF6WY8mA.ttf"
6950
- }
6951
- },
6952
- {
6953
- "kind": "webfonts#webfont",
6954
- "family": "Jim Nightshade",
6955
- "category": "handwriting",
6956
- "variants": [
6957
- "regular"
6958
- ],
6959
- "subsets": [
6960
- "latin-ext",
6961
- "latin"
6962
- ],
6963
- "version": "v4",
6964
- "lastModified": "2016-05-31",
6965
- "files": {
6966
- "regular": "http://fonts.gstatic.com/s/jimnightshade/v4/_n43lYHXVWNgXegdYRIK9CF1W_bo0EdycfH0kHciIic.ttf"
6967
- }
6968
- },
6969
- {
6970
- "kind": "webfonts#webfont",
6971
- "family": "Jockey One",
6972
- "category": "sans-serif",
6973
- "variants": [
6974
- "regular"
6975
- ],
6976
- "subsets": [
6977
- "latin-ext",
6978
- "latin"
6979
- ],
6980
- "version": "v6",
6981
- "lastModified": "2016-05-31",
6982
- "files": {
6983
- "regular": "http://fonts.gstatic.com/s/jockeyone/v6/cAucnOZLvFo07w2AbufBCfesZW2xOQ-xsNqO47m55DA.ttf"
6984
- }
6985
- },
6986
- {
6987
- "kind": "webfonts#webfont",
6988
- "family": "Jolly Lodger",
6989
- "category": "display",
6990
- "variants": [
6991
- "regular"
6992
- ],
6993
- "subsets": [
6994
- "latin-ext",
6995
- "latin"
6996
- ],
6997
- "version": "v4",
6998
- "lastModified": "2016-05-31",
6999
- "files": {
7000
- "regular": "http://fonts.gstatic.com/s/jollylodger/v4/RX8HnkBgaEKQSHQyP9itiS3USBnSvpkopQaUR-2r7iU.ttf"
7001
- }
7002
- },
7003
- {
7004
- "kind": "webfonts#webfont",
7005
- "family": "Jomhuria",
7006
- "category": "display",
7007
- "variants": [
7008
- "regular"
7009
- ],
7010
- "subsets": [
7011
- "latin-ext",
7012
- "arabic",
7013
- "latin"
7014
- ],
7015
- "version": "v2",
7016
- "lastModified": "2016-06-20",
7017
- "files": {
7018
- "regular": "http://fonts.gstatic.com/s/jomhuria/v2/hrvsccQpBliIgor15WxE6g.ttf"
7019
- }
7020
- },
7021
- {
7022
- "kind": "webfonts#webfont",
7023
- "family": "Josefin Sans",
7024
- "category": "sans-serif",
7025
- "variants": [
7026
- "100",
7027
- "100italic",
7028
- "300",
7029
- "300italic",
7030
- "regular",
7031
- "italic",
7032
- "600",
7033
- "600italic",
7034
- "700",
7035
- "700italic"
7036
- ],
7037
- "subsets": [
7038
- "latin-ext",
7039
- "latin"
7040
- ],
7041
- "version": "v9",
7042
- "lastModified": "2016-05-31",
7043
- "files": {
7044
- "100": "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d8SVQ0giZ-l_NELu3lgGyYw.ttf",
7045
- "100italic": "http://fonts.gstatic.com/s/josefinsans/v9/s7-P1gqRNRNn-YWdOYnAOXXcj1rQwlNLIS625o-SrL0.ttf",
7046
- "300": "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z6cQoVhARpoaILP7amxE_8g.ttf",
7047
- "300italic": "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33Gyna0FLWfcB-J_SAYmcAXaI.ttf",
7048
- "regular": "http://fonts.gstatic.com/s/josefinsans/v9/xgzbb53t8j-Mo-vYa23n5i3USBnSvpkopQaUR-2r7iU.ttf",
7049
- "italic": "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d_MZXuCXbOrAvx5R0IT5Oyo.ttf",
7050
- "600": "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z2v8CylhIUtwUiYO7Z2wXbE.ttf",
7051
- "600italic": "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G4R-5-urNOGAobhAyctHvW8.ttf",
7052
- "700": "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z0D2ttfZwueP-QU272T9-k4.ttf",
7053
- "700italic": "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G_As9-1nE9qOqhChW0m4nDE.ttf"
7054
- }
7055
- },
7056
- {
7057
- "kind": "webfonts#webfont",
7058
- "family": "Josefin Slab",
7059
- "category": "serif",
7060
- "variants": [
7061
- "100",
7062
- "100italic",
7063
- "300",
7064
- "300italic",
7065
- "regular",
7066
- "italic",
7067
- "600",
7068
- "600italic",
7069
- "700",
7070
- "700italic"
7071
- ],
7072
- "subsets": [
7073
- "latin"
7074
- ],
7075
- "version": "v6",
7076
- "lastModified": "2016-05-31",
7077
- "files": {
7078
- "100": "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUsSVQ0giZ-l_NELu3lgGyYw.ttf",
7079
- "100italic": "http://fonts.gstatic.com/s/josefinslab/v6/8BjDChqLgBF3RJKfwHIYh3Xcj1rQwlNLIS625o-SrL0.ttf",
7080
- "300": "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2KcQoVhARpoaILP7amxE_8g.ttf",
7081
- "300italic": "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJulyyna0FLWfcB-J_SAYmcAXaI.ttf",
7082
- "regular": "http://fonts.gstatic.com/s/josefinslab/v6/46aYWdgz-1oFX11flmyEfS3USBnSvpkopQaUR-2r7iU.ttf",
7083
- "italic": "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUvMZXuCXbOrAvx5R0IT5Oyo.ttf",
7084
- "600": "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2Gv8CylhIUtwUiYO7Z2wXbE.ttf",
7085
- "600italic": "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly4R-5-urNOGAobhAyctHvW8.ttf",
7086
- "700": "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2ED2ttfZwueP-QU272T9-k4.ttf",
7087
- "700italic": "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly_As9-1nE9qOqhChW0m4nDE.ttf"
7088
- }
7089
- },
7090
- {
7091
- "kind": "webfonts#webfont",
7092
- "family": "Joti One",
7093
- "category": "display",
7094
- "variants": [
7095
- "regular"
7096
- ],
7097
- "subsets": [
7098
- "latin-ext",
7099
- "latin"
7100
- ],
7101
- "version": "v4",
7102
- "lastModified": "2016-05-31",
7103
- "files": {
7104
- "regular": "http://fonts.gstatic.com/s/jotione/v4/P3r_Th0ESHJdzunsvWgUfQ.ttf"
7105
- }
7106
- },
7107
- {
7108
- "kind": "webfonts#webfont",
7109
- "family": "Judson",
7110
- "category": "serif",
7111
- "variants": [
7112
- "regular",
7113
- "italic",
7114
- "700"
7115
- ],
7116
- "subsets": [
7117
- "latin-ext",
7118
- "latin",
7119
- "vietnamese"
7120
- ],
7121
- "version": "v9",
7122
- "lastModified": "2016-05-31",
7123
- "files": {
7124
- "regular": "http://fonts.gstatic.com/s/judson/v9/znM1AAs0eytUaJzf1CrYZQ.ttf",
7125
- "italic": "http://fonts.gstatic.com/s/judson/v9/GVqQW9P52ygW-ySq-CLwAA.ttf",
7126
- "700": "http://fonts.gstatic.com/s/judson/v9/he4a2LwiPJc7r8x0oKCKiA.ttf"
7127
- }
7128
- },
7129
- {
7130
- "kind": "webfonts#webfont",
7131
- "family": "Julee",
7132
- "category": "handwriting",
7133
- "variants": [
7134
- "regular"
7135
- ],
7136
- "subsets": [
7137
- "latin"
7138
- ],
7139
- "version": "v6",
7140
- "lastModified": "2016-05-31",
7141
- "files": {
7142
- "regular": "http://fonts.gstatic.com/s/julee/v6/CAib-jsUsSO8SvVRnE9fHA.ttf"
7143
- }
7144
- },
7145
- {
7146
- "kind": "webfonts#webfont",
7147
- "family": "Julius Sans One",
7148
- "category": "sans-serif",
7149
- "variants": [
7150
- "regular"
7151
- ],
7152
- "subsets": [
7153
- "latin-ext",
7154
- "latin"
7155
- ],
7156
- "version": "v5",
7157
- "lastModified": "2016-05-31",
7158
- "files": {
7159
- "regular": "http://fonts.gstatic.com/s/juliussansone/v5/iU65JP9acQHPDLkdalCF7jjVlsJB_M_Q_LtZxsoxvlw.ttf"
7160
- }
7161
- },
7162
- {
7163
- "kind": "webfonts#webfont",
7164
- "family": "Junge",
7165
- "category": "serif",
7166
- "variants": [
7167
- "regular"
7168
- ],
7169
- "subsets": [
7170
- "latin"
7171
- ],
7172
- "version": "v4",
7173
- "lastModified": "2016-05-31",
7174
- "files": {
7175
- "regular": "http://fonts.gstatic.com/s/junge/v4/j4IXCXtxrw9qIBheercp3A.ttf"
7176
- }
7177
- },
7178
- {
7179
- "kind": "webfonts#webfont",
7180
- "family": "Jura",
7181
- "category": "sans-serif",
7182
- "variants": [
7183
- "300",
7184
- "regular",
7185
- "500",
7186
- "600"
7187
- ],
7188
- "subsets": [
7189
- "cyrillic-ext",
7190
- "latin-ext",
7191
- "cyrillic",
7192
- "greek",
7193
- "latin"
7194
- ],
7195
- "version": "v7",
7196
- "lastModified": "2016-05-31",
7197
- "files": {
7198
- "300": "http://fonts.gstatic.com/s/jura/v7/Rqx_xy1UnN0C7wD3FUSyPQ.ttf",
7199
- "regular": "http://fonts.gstatic.com/s/jura/v7/YAWMwF3sN0KCbynMq-Yr_Q.ttf",
7200
- "500": "http://fonts.gstatic.com/s/jura/v7/16xhfjHCiaLj3tsqqgmtGg.ttf",
7201
- "600": "http://fonts.gstatic.com/s/jura/v7/iwseduOwJSdY8wQ1Y6CJdA.ttf"
7202
- }
7203
- },
7204
- {
7205
- "kind": "webfonts#webfont",
7206
- "family": "Just Another Hand",
7207
- "category": "handwriting",
7208
- "variants": [
7209
- "regular"
7210
- ],
7211
- "subsets": [
7212
- "latin"
7213
- ],
7214
- "version": "v7",
7215
- "lastModified": "2016-10-05",
7216
- "files": {
7217
- "regular": "http://fonts.gstatic.com/s/justanotherhand/v7/fKV8XYuRNNagXr38eqbRf99BnJIEGrvoojniP57E51c.ttf"
7218
- }
7219
- },
7220
- {
7221
- "kind": "webfonts#webfont",
7222
- "family": "Just Me Again Down Here",
7223
- "category": "handwriting",
7224
- "variants": [
7225
- "regular"
7226
- ],
7227
- "subsets": [
7228
- "latin-ext",
7229
- "latin"
7230
- ],
7231
- "version": "v8",
7232
- "lastModified": "2016-05-31",
7233
- "files": {
7234
- "regular": "http://fonts.gstatic.com/s/justmeagaindownhere/v8/sN06iTc9ITubLTgXoG-kc3M9eVLpVTSK6TqZTIgBrWQ.ttf"
7235
- }
7236
- },
7237
- {
7238
- "kind": "webfonts#webfont",
7239
- "family": "Kadwa",
7240
- "category": "serif",
7241
- "variants": [
7242
- "regular",
7243
- "700"
7244
- ],
7245
- "subsets": [
7246
- "devanagari",
7247
- "latin"
7248
- ],
7249
- "version": "v1",
7250
- "lastModified": "2016-05-31",
7251
- "files": {
7252
- "regular": "http://fonts.gstatic.com/s/kadwa/v1/VwEN8oKGqaa0ug9kRpvSSg.ttf",
7253
- "700": "http://fonts.gstatic.com/s/kadwa/v1/NFPZaBfekj_Io-7vUMz4Ww.ttf"
7254
- }
7255
- },
7256
- {
7257
- "kind": "webfonts#webfont",
7258
- "family": "Kalam",
7259
- "category": "handwriting",
7260
- "variants": [
7261
- "300",
7262
- "regular",
7263
- "700"
7264
- ],
7265
- "subsets": [
7266
- "latin-ext",
7267
- "devanagari",
7268
- "latin"
7269
- ],
7270
- "version": "v7",
7271
- "lastModified": "2016-06-07",
7272
- "files": {
7273
- "300": "http://fonts.gstatic.com/s/kalam/v7/MgQQlk1SgPEHdlkWMNh7Jg.ttf",
7274
- "regular": "http://fonts.gstatic.com/s/kalam/v7/hNEJkp2K-aql7e5WQish4Q.ttf",
7275
- "700": "http://fonts.gstatic.com/s/kalam/v7/95nLItUGyWtNLZjSckluLQ.ttf"
7276
- }
7277
- },
7278
- {
7279
- "kind": "webfonts#webfont",
7280
- "family": "Kameron",
7281
- "category": "serif",
7282
- "variants": [
7283
- "regular",
7284
- "700"
7285
- ],
7286
- "subsets": [
7287
- "latin"
7288
- ],
7289
- "version": "v7",
7290
- "lastModified": "2016-05-31",
7291
- "files": {
7292
- "regular": "http://fonts.gstatic.com/s/kameron/v7/9r8HYhqDSwcq9WMjupL82A.ttf",
7293
- "700": "http://fonts.gstatic.com/s/kameron/v7/rabVVbzlflqvmXJUFlKnu_esZW2xOQ-xsNqO47m55DA.ttf"
7294
- }
7295
- },
7296
- {
7297
- "kind": "webfonts#webfont",
7298
- "family": "Kanit",
7299
- "category": "sans-serif",
7300
- "variants": [
7301
- "100",
7302
- "100italic",
7303
- "200",
7304
- "200italic",
7305
- "300",
7306
- "300italic",
7307
- "regular",
7308
- "italic",
7309
- "500",
7310
- "500italic",
7311
- "600",
7312
- "600italic",
7313
- "700",
7314
- "700italic",
7315
- "800",
7316
- "800italic",
7317
- "900",
7318
- "900italic"
7319
- ],
7320
- "subsets": [
7321
- "latin-ext",
7322
- "thai",
7323
- "latin",
7324
- "vietnamese"
7325
- ],
7326
- "version": "v1",
7327
- "lastModified": "2016-05-31",
7328
- "files": {
7329
- "100": "http://fonts.gstatic.com/s/kanit/v1/CYl4qOK-NWwZp3iTKW1eIA.ttf",
7330
- "100italic": "http://fonts.gstatic.com/s/kanit/v1/NLNtc56MpXmHl1yOrop8oQ.ttf",
7331
- "200": "http://fonts.gstatic.com/s/kanit/v1/wfLWkj1C4tYl7MoiFWS3bA.ttf",
7332
- "200italic": "http://fonts.gstatic.com/s/kanit/v1/D8gkrAAM2bvNJ-1i4ot-1_esZW2xOQ-xsNqO47m55DA.ttf",
7333
- "300": "http://fonts.gstatic.com/s/kanit/v1/SM5qHynYGdOmMKEwGUFIPA.ttf",
7334
- "300italic": "http://fonts.gstatic.com/s/kanit/v1/IePislKOKy3Bqfpb9V5VM_esZW2xOQ-xsNqO47m55DA.ttf",
7335
- "regular": "http://fonts.gstatic.com/s/kanit/v1/L6VKvM17ZmevDynOiw7H9w.ttf",
7336
- "italic": "http://fonts.gstatic.com/s/kanit/v1/sHLq5U0-T0oSMTnwTKgv-A.ttf",
7337
- "500": "http://fonts.gstatic.com/s/kanit/v1/GxoU_USIJyIy8WIcYSUO2g.ttf",
7338
- "500italic": "http://fonts.gstatic.com/s/kanit/v1/hrCiWCaNv9AaF0mDY1F2zPesZW2xOQ-xsNqO47m55DA.ttf",
7339
- "600": "http://fonts.gstatic.com/s/kanit/v1/n_qoIVxojeQY0D1pvoNDhA.ttf",
7340
- "600italic": "http://fonts.gstatic.com/s/kanit/v1/9BkP85yRDoVayTWQwdGLqPesZW2xOQ-xsNqO47m55DA.ttf",
7341
- "700": "http://fonts.gstatic.com/s/kanit/v1/kEGmYvO8My36j5ILmbUPRg.ttf",
7342
- "700italic": "http://fonts.gstatic.com/s/kanit/v1/WNo3ZZ9xtOZJknNlvHAFWfesZW2xOQ-xsNqO47m55DA.ttf",
7343
- "800": "http://fonts.gstatic.com/s/kanit/v1/YTp-zAuKXxwnA1YnJIF1rg.ttf",
7344
- "800italic": "http://fonts.gstatic.com/s/kanit/v1/qiTGrW5sCa9UQp841fWjc_esZW2xOQ-xsNqO47m55DA.ttf",
7345
- "900": "http://fonts.gstatic.com/s/kanit/v1/1NIEkusi3bG3GgO9Hor3fQ.ttf",
7346
- "900italic": "http://fonts.gstatic.com/s/kanit/v1/ogN5dFD1r4BfxNV4Nb-TXfesZW2xOQ-xsNqO47m55DA.ttf"
7347
- }
7348
- },
7349
- {
7350
- "kind": "webfonts#webfont",
7351
- "family": "Kantumruy",
7352
- "category": "sans-serif",
7353
- "variants": [
7354
- "300",
7355
- "regular",
7356
- "700"
7357
- ],
7358
- "subsets": [
7359
- "khmer"
7360
- ],
7361
- "version": "v3",
7362
- "lastModified": "2016-05-31",
7363
- "files": {
7364
- "300": "http://fonts.gstatic.com/s/kantumruy/v3/ERRwQE0WG5uanaZWmOFXNi3USBnSvpkopQaUR-2r7iU.ttf",
7365
- "regular": "http://fonts.gstatic.com/s/kantumruy/v3/kQfXNYElQxr5dS8FyjD39Q.ttf",
7366
- "700": "http://fonts.gstatic.com/s/kantumruy/v3/gie_zErpGf_rNzs920C2Ji3USBnSvpkopQaUR-2r7iU.ttf"
7367
- }
7368
- },
7369
- {
7370
- "kind": "webfonts#webfont",
7371
- "family": "Karla",
7372
- "category": "sans-serif",
7373
- "variants": [
7374
- "regular",
7375
- "italic",
7376
- "700",
7377
- "700italic"
7378
- ],
7379
- "subsets": [
7380
- "latin-ext",
7381
- "latin"
7382
- ],
7383
- "version": "v5",
7384
- "lastModified": "2016-05-31",
7385
- "files": {
7386
- "regular": "http://fonts.gstatic.com/s/karla/v5/78UgGRwJFkhqaoFimqoKpQ.ttf",
7387
- "italic": "http://fonts.gstatic.com/s/karla/v5/51UBKly9RQOnOkj95ZwEFw.ttf",
7388
- "700": "http://fonts.gstatic.com/s/karla/v5/JS501sZLxZ4zraLQdncOUA.ttf",
7389
- "700italic": "http://fonts.gstatic.com/s/karla/v5/3YDyi09gQjCRh-5-SVhTTvesZW2xOQ-xsNqO47m55DA.ttf"
7390
- }
7391
- },
7392
- {
7393
- "kind": "webfonts#webfont",
7394
- "family": "Karma",
7395
- "category": "serif",
7396
- "variants": [
7397
- "300",
7398
- "regular",
7399
- "500",
7400
- "600",
7401
- "700"
7402
- ],
7403
- "subsets": [
7404
- "latin-ext",
7405
- "devanagari",
7406
- "latin"
7407
- ],
7408
- "version": "v5",
7409
- "lastModified": "2016-05-31",
7410
- "files": {
7411
- "300": "http://fonts.gstatic.com/s/karma/v5/lH6ijJnguWR2Sz7tEl6MQQ.ttf",
7412
- "regular": "http://fonts.gstatic.com/s/karma/v5/wvqTxAGBUrTqU0urTEoPIw.ttf",
7413
- "500": "http://fonts.gstatic.com/s/karma/v5/9YGjxi6Hcvz2Kh-rzO_cAw.ttf",
7414
- "600": "http://fonts.gstatic.com/s/karma/v5/h_CVzXXtqSxjfS2sIwaejA.ttf",
7415
- "700": "http://fonts.gstatic.com/s/karma/v5/smuSM08oApsQPPVYbHd1CA.ttf"
7416
- }
7417
- },
7418
- {
7419
- "kind": "webfonts#webfont",
7420
- "family": "Katibeh",
7421
- "category": "display",
7422
- "variants": [
7423
- "regular"
7424
- ],
7425
- "subsets": [
7426
- "latin-ext",
7427
- "arabic",
7428
- "latin"
7429
- ],
7430
- "version": "v2",
7431
- "lastModified": "2016-06-20",
7432
- "files": {
7433
- "regular": "http://fonts.gstatic.com/s/katibeh/v2/Q-SA43uWR2uu3wBIvedotA.ttf"
7434
- }
7435
- },
7436
- {
7437
- "kind": "webfonts#webfont",
7438
- "family": "Kaushan Script",
7439
- "category": "handwriting",
7440
- "variants": [
7441
- "regular"
7442
- ],
7443
- "subsets": [
7444
- "latin-ext",
7445
- "latin"
7446
- ],
7447
- "version": "v5",
7448
- "lastModified": "2016-05-31",
7449
- "files": {
7450
- "regular": "http://fonts.gstatic.com/s/kaushanscript/v5/qx1LSqts-NtiKcLw4N03IBnpV0hQCek3EmWnCPrvGRM.ttf"
7451
- }
7452
- },
7453
- {
7454
- "kind": "webfonts#webfont",
7455
- "family": "Kavivanar",
7456
- "category": "handwriting",
7457
- "variants": [
7458
- "regular"
7459
- ],
7460
- "subsets": [
7461
- "latin-ext",
7462
- "tamil",
7463
- "latin"
7464
- ],
7465
- "version": "v1",
7466
- "lastModified": "2016-06-20",
7467
- "files": {
7468
- "regular": "http://fonts.gstatic.com/s/kavivanar/v1/VLDrdUtF1irKFc8rFWgDaw.ttf"
7469
- }
7470
- },
7471
- {
7472
- "kind": "webfonts#webfont",
7473
- "family": "Kavoon",
7474
- "category": "display",
7475
- "variants": [
7476
- "regular"
7477
- ],
7478
- "subsets": [
7479
- "latin-ext",
7480
- "latin"
7481
- ],
7482
- "version": "v5",
7483
- "lastModified": "2016-05-31",
7484
- "files": {
7485
- "regular": "http://fonts.gstatic.com/s/kavoon/v5/382m-6baKXqJFQjEgobt6Q.ttf"
7486
- }
7487
- },
7488
- {
7489
- "kind": "webfonts#webfont",
7490
- "family": "Kdam Thmor",
7491
- "category": "display",
7492
- "variants": [
7493
- "regular"
7494
- ],
7495
- "subsets": [
7496
- "khmer"
7497
- ],
7498
- "version": "v3",
7499
- "lastModified": "2016-05-31",
7500
- "files": {
7501
- "regular": "http://fonts.gstatic.com/s/kdamthmor/v3/otCdP6UU-VBIrBfVDWBQJ_esZW2xOQ-xsNqO47m55DA.ttf"
7502
- }
7503
- },
7504
- {
7505
- "kind": "webfonts#webfont",
7506
- "family": "Keania One",
7507
- "category": "display",
7508
- "variants": [
7509
- "regular"
7510
- ],
7511
- "subsets": [
7512
- "latin-ext",
7513
- "latin"
7514
- ],
7515
- "version": "v4",
7516
- "lastModified": "2016-05-31",
7517
- "files": {
7518
- "regular": "http://fonts.gstatic.com/s/keaniaone/v4/PACrDKZWngXzgo-ucl6buvesZW2xOQ-xsNqO47m55DA.ttf"
7519
- }
7520
- },
7521
- {
7522
- "kind": "webfonts#webfont",
7523
- "family": "Kelly Slab",
7524
- "category": "display",
7525
- "variants": [
7526
- "regular"
7527
- ],
7528
- "subsets": [
7529
- "latin-ext",
7530
- "cyrillic",
7531
- "latin"
7532
- ],
7533
- "version": "v6",
7534
- "lastModified": "2016-05-31",
7535
- "files": {
7536
- "regular": "http://fonts.gstatic.com/s/kellyslab/v6/F_2oS1e9XdYx1MAi8XEVefesZW2xOQ-xsNqO47m55DA.ttf"
7537
- }
7538
- },
7539
- {
7540
- "kind": "webfonts#webfont",
7541
- "family": "Kenia",
7542
- "category": "display",
7543
- "variants": [
7544
- "regular"
7545
- ],
7546
- "subsets": [
7547
- "latin"
7548
- ],
7549
- "version": "v8",
7550
- "lastModified": "2016-05-31",
7551
- "files": {
7552
- "regular": "http://fonts.gstatic.com/s/kenia/v8/OLM9-XfITK9PsTLKbGBrwg.ttf"
7553
- }
7554
- },
7555
- {
7556
- "kind": "webfonts#webfont",
7557
- "family": "Khand",
7558
- "category": "sans-serif",
7559
- "variants": [
7560
- "300",
7561
- "regular",
7562
- "500",
7563
- "600",
7564
- "700"
7565
- ],
7566
- "subsets": [
7567
- "latin-ext",
7568
- "devanagari",
7569
- "latin"
7570
- ],
7571
- "version": "v4",
7572
- "lastModified": "2016-06-07",
7573
- "files": {
7574
- "300": "http://fonts.gstatic.com/s/khand/v4/072zRl4OU9Pinjjkg174LA.ttf",
7575
- "regular": "http://fonts.gstatic.com/s/khand/v4/HdLdTNFqNIDGJZl1ZEj84w.ttf",
7576
- "500": "http://fonts.gstatic.com/s/khand/v4/46_p-SqtuMe56nxQdteWxg.ttf",
7577
- "600": "http://fonts.gstatic.com/s/khand/v4/zggGWYIiPJyMTgkfxP_kaA.ttf",
7578
- "700": "http://fonts.gstatic.com/s/khand/v4/0I0UWaN-X5QBmfexpXKhqg.ttf"
7579
- }
7580
- },
7581
- {
7582
- "kind": "webfonts#webfont",
7583
- "family": "Khmer",
7584
- "category": "display",
7585
- "variants": [
7586
- "regular"
7587
- ],
7588
- "subsets": [
7589
- "khmer"
7590
- ],
7591
- "version": "v9",
7592
- "lastModified": "2016-05-31",
7593
- "files": {
7594
- "regular": "http://fonts.gstatic.com/s/khmer/v9/vWaBJIbaQuBNz02ALIKJ3A.ttf"
7595
- }
7596
- },
7597
- {
7598
- "kind": "webfonts#webfont",
7599
- "family": "Khula",
7600
- "category": "sans-serif",
7601
- "variants": [
7602
- "300",
7603
- "regular",
7604
- "600",
7605
- "700",
7606
- "800"
7607
- ],
7608
- "subsets": [
7609
- "latin-ext",
7610
- "devanagari",
7611
- "latin"
7612
- ],
7613
- "version": "v1",
7614
- "lastModified": "2016-05-31",
7615
- "files": {
7616
- "300": "http://fonts.gstatic.com/s/khula/v1/_1LySU5Upq-sc4OZ1b_GIw.ttf",
7617
- "regular": "http://fonts.gstatic.com/s/khula/v1/izcPIFyCSd16XI1Ak_Wk7Q.ttf",
7618
- "600": "http://fonts.gstatic.com/s/khula/v1/4ZH86Hce-aeFDaedTnbkbg.ttf",
7619
- "700": "http://fonts.gstatic.com/s/khula/v1/UGVExGl-Jjs-YPpGv-MZ6w.ttf",
7620
- "800": "http://fonts.gstatic.com/s/khula/v1/Sccp_oOo8FWgbx5smie7xQ.ttf"
7621
- }
7622
- },
7623
- {
7624
- "kind": "webfonts#webfont",
7625
- "family": "Kite One",
7626
- "category": "sans-serif",
7627
- "variants": [
7628
- "regular"
7629
- ],
7630
- "subsets": [
7631
- "latin"
7632
- ],
7633
- "version": "v4",
7634
- "lastModified": "2016-05-31",
7635
- "files": {
7636
- "regular": "http://fonts.gstatic.com/s/kiteone/v4/8ojWmgUc97m0f_i6sTqLoQ.ttf"
7637
- }
7638
- },
7639
- {
7640
- "kind": "webfonts#webfont",
7641
- "family": "Knewave",
7642
- "category": "display",
7643
- "variants": [
7644
- "regular"
7645
- ],
7646
- "subsets": [
7647
- "latin-ext",
7648
- "latin"
7649
- ],
7650
- "version": "v5",
7651
- "lastModified": "2016-05-31",
7652
- "files": {
7653
- "regular": "http://fonts.gstatic.com/s/knewave/v5/KGHM4XWr4iKnBMqzZLkPBg.ttf"
7654
- }
7655
- },
7656
- {
7657
- "kind": "webfonts#webfont",
7658
- "family": "Kotta One",
7659
- "category": "serif",
7660
- "variants": [
7661
- "regular"
7662
- ],
7663
- "subsets": [
7664
- "latin-ext",
7665
- "latin"
7666
- ],
7667
- "version": "v4",
7668
- "lastModified": "2016-05-31",
7669
- "files": {
7670
- "regular": "http://fonts.gstatic.com/s/kottaone/v4/AB2Q7hVw6niJYDgLvFXu5w.ttf"
7671
- }
7672
- },
7673
- {
7674
- "kind": "webfonts#webfont",
7675
- "family": "Koulen",
7676
- "category": "display",
7677
- "variants": [
7678
- "regular"
7679
- ],
7680
- "subsets": [
7681
- "khmer"
7682
- ],
7683
- "version": "v10",
7684
- "lastModified": "2016-05-31",
7685
- "files": {
7686
- "regular": "http://fonts.gstatic.com/s/koulen/v10/AAYOK8RSRO7FTskTzFuzNw.ttf"
7687
- }
7688
- },
7689
- {
7690
- "kind": "webfonts#webfont",
7691
- "family": "Kranky",
7692
- "category": "display",
7693
- "variants": [
7694
- "regular"
7695
- ],
7696
- "subsets": [
7697
- "latin"
7698
- ],
7699
- "version": "v6",
7700
- "lastModified": "2016-10-05",
7701
- "files": {
7702
- "regular": "http://fonts.gstatic.com/s/kranky/v6/C8dxxTS99-fZ84vWk8SDrg.ttf"
7703
- }
7704
- },
7705
- {
7706
- "kind": "webfonts#webfont",
7707
- "family": "Kreon",
7708
- "category": "serif",
7709
- "variants": [
7710
- "300",
7711
- "regular",
7712
- "700"
7713
- ],
7714
- "subsets": [
7715
- "latin"
7716
- ],
7717
- "version": "v9",
7718
- "lastModified": "2016-05-31",
7719
- "files": {
7720
- "300": "http://fonts.gstatic.com/s/kreon/v9/HKtJRiq5C2zbq5N1IX32sA.ttf",
7721
- "regular": "http://fonts.gstatic.com/s/kreon/v9/zA_IZt0u0S3cvHJu-n1oEg.ttf",
7722
- "700": "http://fonts.gstatic.com/s/kreon/v9/jh0dSmaPodjxISiblIUTkw.ttf"
7723
- }
7724
- },
7725
- {
7726
- "kind": "webfonts#webfont",
7727
- "family": "Kristi",
7728
- "category": "handwriting",
7729
- "variants": [
7730
- "regular"
7731
- ],
7732
- "subsets": [
7733
- "latin"
7734
- ],
7735
- "version": "v7",
7736
- "lastModified": "2016-06-07",
7737
- "files": {
7738
- "regular": "http://fonts.gstatic.com/s/kristi/v7/aRsgBQrkQkMlu4UPSnJyOQ.ttf"
7739
- }
7740
- },
7741
- {
7742
- "kind": "webfonts#webfont",
7743
- "family": "Krona One",
7744
- "category": "sans-serif",
7745
- "variants": [
7746
- "regular"
7747
- ],
7748
- "subsets": [
7749
- "latin-ext",
7750
- "latin"
7751
- ],
7752
- "version": "v4",
7753
- "lastModified": "2016-06-07",
7754
- "files": {
7755
- "regular": "http://fonts.gstatic.com/s/kronaone/v4/zcQj4ljqTo166AdourlF9w.ttf"
7756
- }
7757
- },
7758
- {
7759
- "kind": "webfonts#webfont",
7760
- "family": "Kumar One",
7761
- "category": "display",
7762
- "variants": [
7763
- "regular"
7764
- ],
7765
- "subsets": [
7766
- "gujarati",
7767
- "latin-ext",
7768
- "latin"
7769
- ],
7770
- "version": "v1",
7771
- "lastModified": "2016-06-20",
7772
- "files": {
7773
- "regular": "http://fonts.gstatic.com/s/kumarone/v1/YmcJD6Wky1clGYY5OD-BkQ.ttf"
7774
- }
7775
- },
7776
- {
7777
- "kind": "webfonts#webfont",
7778
- "family": "Kumar One Outline",
7779
- "category": "display",
7780
- "variants": [
7781
- "regular"
7782
- ],
7783
- "subsets": [
7784
- "gujarati",
7785
- "latin-ext",
7786
- "latin"
7787
- ],
7788
- "version": "v1",
7789
- "lastModified": "2016-06-20",
7790
- "files": {
7791
- "regular": "http://fonts.gstatic.com/s/kumaroneoutline/v1/hnQF47H-55qiLAGgq7C3QyxhoCTLJoiJ-y-zew8F8j0.ttf"
7792
- }
7793
- },
7794
- {
7795
- "kind": "webfonts#webfont",
7796
- "family": "Kurale",
7797
- "category": "serif",
7798
- "variants": [
7799
- "regular"
7800
- ],
7801
- "subsets": [
7802
- "latin-ext",
7803
- "devanagari",
7804
- "cyrillic",
7805
- "latin"
7806
- ],
7807
- "version": "v1",
7808
- "lastModified": "2016-05-31",
7809
- "files": {
7810
- "regular": "http://fonts.gstatic.com/s/kurale/v1/rxeyIcvQlT4XAWwNbXFCfw.ttf"
7811
- }
7812
- },
7813
- {
7814
- "kind": "webfonts#webfont",
7815
- "family": "La Belle Aurore",
7816
- "category": "handwriting",
7817
- "variants": [
7818
- "regular"
7819
- ],
7820
- "subsets": [
7821
- "latin"
7822
- ],
7823
- "version": "v7",
7824
- "lastModified": "2016-05-31",
7825
- "files": {
7826
- "regular": "http://fonts.gstatic.com/s/labelleaurore/v7/Irdbc4ASuUoWDjd_Wc3md123K2iuuhwZgaKapkyRTY8.ttf"
7827
- }
7828
- },
7829
- {
7830
- "kind": "webfonts#webfont",
7831
- "family": "Laila",
7832
- "category": "serif",
7833
- "variants": [
7834
- "300",
7835
- "regular",
7836
- "500",
7837
- "600",
7838
- "700"
7839
- ],
7840
- "subsets": [
7841
- "latin-ext",
7842
- "devanagari",
7843
- "latin"
7844
- ],
7845
- "version": "v2",
7846
- "lastModified": "2016-06-07",
7847
- "files": {
7848
- "300": "http://fonts.gstatic.com/s/laila/v2/bLbIVEZF3IWSZ-in72GJvA.ttf",
7849
- "regular": "http://fonts.gstatic.com/s/laila/v2/6iYor3edprH7360qtBGoag.ttf",
7850
- "500": "http://fonts.gstatic.com/s/laila/v2/tkf8VtFvW9g3VsxQCA6WOQ.ttf",
7851
- "600": "http://fonts.gstatic.com/s/laila/v2/3EMP2L6JRQ4GaHIxCldCeA.ttf",
7852
- "700": "http://fonts.gstatic.com/s/laila/v2/R7P4z1xjcjecmjZ9GyhqHQ.ttf"
7853
- }
7854
- },
7855
- {
7856
- "kind": "webfonts#webfont",
7857
- "family": "Lakki Reddy",
7858
- "category": "handwriting",
7859
- "variants": [
7860
- "regular"
7861
- ],
7862
- "subsets": [
7863
- "latin",
7864
- "telugu"
7865
- ],
7866
- "version": "v3",
7867
- "lastModified": "2016-05-31",
7868
- "files": {
7869
- "regular": "http://fonts.gstatic.com/s/lakkireddy/v3/Q5EpFa91FjW37t0FCnedaKCWcynf_cDxXwCLxiixG1c.ttf"
7870
- }
7871
- },
7872
- {
7873
- "kind": "webfonts#webfont",
7874
- "family": "Lalezar",
7875
- "category": "display",
7876
- "variants": [
7877
- "regular"
7878
- ],
7879
- "subsets": [
7880
- "latin-ext",
7881
- "arabic",
7882
- "latin",
7883
- "vietnamese"
7884
- ],
7885
- "version": "v1",
7886
- "lastModified": "2016-06-20",
7887
- "files": {
7888
- "regular": "http://fonts.gstatic.com/s/lalezar/v1/k4_MPf09PGmL7oyGdPKwcg.ttf"
7889
- }
7890
- },
7891
- {
7892
- "kind": "webfonts#webfont",
7893
- "family": "Lancelot",
7894
- "category": "display",
7895
- "variants": [
7896
- "regular"
7897
- ],
7898
- "subsets": [
7899
- "latin-ext",
7900
- "latin"
7901
- ],
7902
- "version": "v6",
7903
- "lastModified": "2016-05-31",
7904
- "files": {
7905
- "regular": "http://fonts.gstatic.com/s/lancelot/v6/XMT7T_oo_MQUGAnU2v-sdA.ttf"
7906
- }
7907
- },
7908
- {
7909
- "kind": "webfonts#webfont",
7910
- "family": "Lateef",
7911
- "category": "handwriting",
7912
- "variants": [
7913
- "regular"
7914
- ],
7915
- "subsets": [
7916
- "arabic",
7917
- "latin"
7918
- ],
7919
- "version": "v10",
7920
- "lastModified": "2016-05-31",
7921
- "files": {
7922
- "regular": "http://fonts.gstatic.com/s/lateef/v10/PAsKCgi1qc7XPwvzo_I-DQ.ttf"
7923
- }
7924
- },
7925
- {
7926
- "kind": "webfonts#webfont",
7927
- "family": "Lato",
7928
- "category": "sans-serif",
7929
- "variants": [
7930
- "100",
7931
- "100italic",
7932
- "300",
7933
- "300italic",
7934
- "regular",
7935
- "italic",
7936
- "700",
7937
- "700italic",
7938
- "900",
7939
- "900italic"
7940
- ],
7941
- "subsets": [
7942
- "latin-ext",
7943
- "latin"
7944
- ],
7945
- "version": "v11",
7946
- "lastModified": "2016-11-01",
7947
- "files": {
7948
- "100": "http://fonts.gstatic.com/s/lato/v11/Upp-ka9rLQmHYCsFgwL-eg.ttf",
7949
- "100italic": "http://fonts.gstatic.com/s/lato/v11/zLegi10uS_9-fnUDISl0KA.ttf",
7950
- "300": "http://fonts.gstatic.com/s/lato/v11/Ja02qOppOVq9jeRjWekbHg.ttf",
7951
- "300italic": "http://fonts.gstatic.com/s/lato/v11/dVebFcn7EV7wAKwgYestUg.ttf",
7952
- "regular": "http://fonts.gstatic.com/s/lato/v11/h7rISIcQapZBpei-sXwIwg.ttf",
7953
- "italic": "http://fonts.gstatic.com/s/lato/v11/P_dJOFJylV3A870UIOtr0w.ttf",
7954
- "700": "http://fonts.gstatic.com/s/lato/v11/iX_QxBBZLhNj5JHlTzHQzg.ttf",
7955
- "700italic": "http://fonts.gstatic.com/s/lato/v11/WFcZakHrrCKeUJxHA4T_gw.ttf",
7956
- "900": "http://fonts.gstatic.com/s/lato/v11/8TPEV6NbYWZlNsXjbYVv7w.ttf",
7957
- "900italic": "http://fonts.gstatic.com/s/lato/v11/draWperrI7n2xi35Cl08fA.ttf"
7958
- }
7959
- },
7960
- {
7961
- "kind": "webfonts#webfont",
7962
- "family": "League Script",
7963
- "category": "handwriting",
7964
- "variants": [
7965
- "regular"
7966
- ],
7967
- "subsets": [
7968
- "latin"
7969
- ],
7970
- "version": "v7",
7971
- "lastModified": "2016-05-31",
7972
- "files": {
7973
- "regular": "http://fonts.gstatic.com/s/leaguescript/v7/wnRFLvfabWK_DauqppD6vSeUSrabuTpOsMEiRLtKwk0.ttf"
7974
- }
7975
- },
7976
- {
7977
- "kind": "webfonts#webfont",
7978
- "family": "Leckerli One",
7979
- "category": "handwriting",
7980
- "variants": [
7981
- "regular"
7982
- ],
7983
- "subsets": [
7984
- "latin"
7985
- ],
7986
- "version": "v7",
7987
- "lastModified": "2016-05-31",
7988
- "files": {
7989
- "regular": "http://fonts.gstatic.com/s/leckerlione/v7/S2Y_iLrItTu8kIJTkS7DrC3USBnSvpkopQaUR-2r7iU.ttf"
7990
- }
7991
- },
7992
- {
7993
- "kind": "webfonts#webfont",
7994
- "family": "Ledger",
7995
- "category": "serif",
7996
- "variants": [
7997
- "regular"
7998
- ],
7999
- "subsets": [
8000
- "latin-ext",
8001
- "cyrillic",
8002
- "latin"
8003
- ],
8004
- "version": "v4",
8005
- "lastModified": "2016-05-31",
8006
- "files": {
8007
- "regular": "http://fonts.gstatic.com/s/ledger/v4/G432jp-tahOfWHbCYkI0jw.ttf"
8008
- }
8009
- },
8010
- {
8011
- "kind": "webfonts#webfont",
8012
- "family": "Lekton",
8013
- "category": "sans-serif",
8014
- "variants": [
8015
- "regular",
8016
- "italic",
8017
- "700"
8018
- ],
8019
- "subsets": [
8020
- "latin-ext",
8021
- "latin"
8022
- ],
8023
- "version": "v7",
8024
- "lastModified": "2016-05-31",
8025
- "files": {
8026
- "regular": "http://fonts.gstatic.com/s/lekton/v7/r483JYmxf5PjIm4jVAm8Yg.ttf",
8027
- "italic": "http://fonts.gstatic.com/s/lekton/v7/_UbDIPBA1wDqSbhp-OED7A.ttf",
8028
- "700": "http://fonts.gstatic.com/s/lekton/v7/WZw-uL8WTkx3SBVfTlevXQ.ttf"
8029
- }
8030
- },
8031
- {
8032
- "kind": "webfonts#webfont",
8033
- "family": "Lemon",
8034
- "category": "display",
8035
- "variants": [
8036
- "regular"
8037
- ],
8038
- "subsets": [
8039
- "latin"
8040
- ],
8041
- "version": "v5",
8042
- "lastModified": "2016-05-31",
8043
- "files": {
8044
- "regular": "http://fonts.gstatic.com/s/lemon/v5/wed1nNu4LNSu-3RoRVUhUw.ttf"
8045
- }
8046
- },
8047
- {
8048
- "kind": "webfonts#webfont",
8049
- "family": "Lemonada",
8050
- "category": "display",
8051
- "variants": [
8052
- "300",
8053
- "regular",
8054
- "600",
8055
- "700"
8056
- ],
8057
- "subsets": [
8058
- "latin-ext",
8059
- "arabic",
8060
- "latin",
8061
- "vietnamese"
8062
- ],
8063
- "version": "v2",
8064
- "lastModified": "2016-06-20",
8065
- "files": {
8066
- "300": "http://fonts.gstatic.com/s/lemonada/v2/uM3MufQOcwGHuruj4TsXiqCWcynf_cDxXwCLxiixG1c.ttf",
8067
- "regular": "http://fonts.gstatic.com/s/lemonada/v2/pkzws3AUXmaaAzOi7aydSQ.ttf",
8068
- "600": "http://fonts.gstatic.com/s/lemonada/v2/9Vd4MNKsOxNyLzlfTXdKLqCWcynf_cDxXwCLxiixG1c.ttf",
8069
- "700": "http://fonts.gstatic.com/s/lemonada/v2/9jKcm4hRI511-Dy7FFfQ3aCWcynf_cDxXwCLxiixG1c.ttf"
8070
- }
8071
- },
8072
- {
8073
- "kind": "webfonts#webfont",
8074
- "family": "Libre Baskerville",
8075
- "category": "serif",
8076
- "variants": [
8077
- "regular",
8078
- "italic",
8079
- "700"
8080
- ],
8081
- "subsets": [
8082
- "latin-ext",
8083
- "latin"
8084
- ],
8085
- "version": "v4",
8086
- "lastModified": "2016-05-31",
8087
- "files": {
8088
- "regular": "http://fonts.gstatic.com/s/librebaskerville/v4/pR0sBQVcY0JZc_ciXjFsKyyZRYCSvpCzQKuMWnP5NDY.ttf",
8089
- "italic": "http://fonts.gstatic.com/s/librebaskerville/v4/QHIOz1iKF3bIEzRdDFaf5QnhapNS5Oi8FPrBRDLbsW4.ttf",
8090
- "700": "http://fonts.gstatic.com/s/librebaskerville/v4/kH7K4InNTm7mmOXXjrA5v-xuswJKUVpBRfYFpz0W3Iw.ttf"
8091
- }
8092
- },
8093
- {
8094
- "kind": "webfonts#webfont",
8095
- "family": "Libre Franklin",
8096
- "category": "sans-serif",
8097
- "variants": [
8098
- "100",
8099
- "100italic",
8100
- "200",
8101
- "200italic",
8102
- "300",
8103
- "300italic",
8104
- "regular",
8105
- "italic",
8106
- "500",
8107
- "500italic",
8108
- "600",
8109
- "600italic",
8110
- "700",
8111
- "700italic",
8112
- "800",
8113
- "800italic",
8114
- "900",
8115
- "900italic"
8116
- ],
8117
- "subsets": [
8118
- "latin-ext",
8119
- "latin"
8120
- ],
8121
- "version": "v1",
8122
- "lastModified": "2016-06-20",
8123
- "files": {
8124
- "100": "http://fonts.gstatic.com/s/librefranklin/v1/zrsyK9EytLQ07oRM9IZIsX6Zf0VB_l-7q6pFtcZSRCs.ttf",
8125
- "100italic": "http://fonts.gstatic.com/s/librefranklin/v1/LHzsuUmxr4UY-IoiG8pRK4gsWNE1DYiT_eIOcNe2Au4.ttf",
8126
- "200": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yCwKTB4uIbnDXE2hyxZaFPY.ttf",
8127
- "200italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqho0lu1sSkaQaYEjN61aJ3i1I.ttf",
8128
- "300": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yMhKJW3W9-339CFS_Lie1us.ttf",
8129
- "300italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqho14je5cfhxzx5bEvSaoyQQI.ttf",
8130
- "regular": "http://fonts.gstatic.com/s/librefranklin/v1/PFwjf3aDdAQPvNKUrT3U7_fSnedoLXQQjURyDxluu8g.ttf",
8131
- "italic": "http://fonts.gstatic.com/s/librefranklin/v1/zrsyK9EytLQ07oRM9IZIsX5kKxjpQfTpnFf2SrDLxlg.ttf",
8132
- "500": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yMBjwrbmxH6gp8HgxjPD8qo.ttf",
8133
- "500italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqho5VcuOW5XbZIr02vW37iuvg.ttf",
8134
- "600": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yORt4MKdIUjA60qLK3wI2m8.ttf",
8135
- "600italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqhowNPRgU5g4Xymf9hgRWrbNs.ttf",
8136
- "700": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yEnStGWSv3WdwjmyyI8xc7Q.ttf",
8137
- "700italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqhow7kn3RFjf4gfwsdsBE-Rf4.ttf",
8138
- "800": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yKltwG0cydF-uC1kFVv1hts.ttf",
8139
- "800italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqho80d7u0uHUbaRkK-cNyim1w.ttf",
8140
- "900": "http://fonts.gstatic.com/s/librefranklin/v1/1_DGDtljMiPWFs5rl_p0yF7duMYIKwoQ5QsTL00fobw.ttf",
8141
- "900italic": "http://fonts.gstatic.com/s/librefranklin/v1/7_V210XP3LBEtEwiCTqho0THpHUXJVnEwH4tSjkF0wg.ttf"
8142
- }
8143
- },
8144
- {
8145
- "kind": "webfonts#webfont",
8146
- "family": "Life Savers",
8147
- "category": "display",
8148
- "variants": [
8149
- "regular",
8150
- "700"
8151
- ],
8152
- "subsets": [
8153
- "latin-ext",
8154
- "latin"
8155
- ],
8156
- "version": "v6",
8157
- "lastModified": "2016-05-31",
8158
- "files": {
8159
- "regular": "http://fonts.gstatic.com/s/lifesavers/v6/g49cUDk4Y1P0G5NMkMAm7qCWcynf_cDxXwCLxiixG1c.ttf",
8160
- "700": "http://fonts.gstatic.com/s/lifesavers/v6/THQKqChyYUm97rNPVFdGGXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
8161
- }
8162
- },
8163
- {
8164
- "kind": "webfonts#webfont",
8165
- "family": "Lilita One",
8166
- "category": "display",
8167
- "variants": [
8168
- "regular"
8169
- ],
8170
- "subsets": [
8171
- "latin-ext",
8172
- "latin"
8173
- ],
8174
- "version": "v4",
8175
- "lastModified": "2016-05-31",
8176
- "files": {
8177
- "regular": "http://fonts.gstatic.com/s/lilitaone/v4/vTxJQjbNV6BCBHx8sGDCVvesZW2xOQ-xsNqO47m55DA.ttf"
8178
- }
8179
- },
8180
- {
8181
- "kind": "webfonts#webfont",
8182
- "family": "Lily Script One",
8183
- "category": "display",
8184
- "variants": [
8185
- "regular"
8186
- ],
8187
- "subsets": [
8188
- "latin-ext",
8189
- "latin"
8190
- ],
8191
- "version": "v4",
8192
- "lastModified": "2016-05-31",
8193
- "files": {
8194
- "regular": "http://fonts.gstatic.com/s/lilyscriptone/v4/uPWsLVW8uiXqIBnE8ZwGPDjVlsJB_M_Q_LtZxsoxvlw.ttf"
8195
- }
8196
- },
8197
- {
8198
- "kind": "webfonts#webfont",
8199
- "family": "Limelight",
8200
- "category": "display",
8201
- "variants": [
8202
- "regular"
8203
- ],
8204
- "subsets": [
8205
- "latin-ext",
8206
- "latin"
8207
- ],
8208
- "version": "v7",
8209
- "lastModified": "2016-05-31",
8210
- "files": {
8211
- "regular": "http://fonts.gstatic.com/s/limelight/v7/5dTfN6igsXjLjOy8QQShcg.ttf"
8212
- }
8213
- },
8214
- {
8215
- "kind": "webfonts#webfont",
8216
- "family": "Linden Hill",
8217
- "category": "serif",
8218
- "variants": [
8219
- "regular",
8220
- "italic"
8221
- ],
8222
- "subsets": [
8223
- "latin"
8224
- ],
8225
- "version": "v6",
8226
- "lastModified": "2016-05-31",
8227
- "files": {
8228
- "regular": "http://fonts.gstatic.com/s/lindenhill/v6/UgsC0txqd-E1yjvjutwm_KCWcynf_cDxXwCLxiixG1c.ttf",
8229
- "italic": "http://fonts.gstatic.com/s/lindenhill/v6/OcS3bZcu8vJvIDH8Zic83keOrDcLawS7-ssYqLr2Xp4.ttf"
8230
- }
8231
- },
8232
- {
8233
- "kind": "webfonts#webfont",
8234
- "family": "Lobster",
8235
- "category": "display",
8236
- "variants": [
8237
- "regular"
8238
- ],
8239
- "subsets": [
8240
- "latin-ext",
8241
- "cyrillic",
8242
- "latin",
8243
- "vietnamese"
8244
- ],
8245
- "version": "v18",
8246
- "lastModified": "2016-05-31",
8247
- "files": {
8248
- "regular": "http://fonts.gstatic.com/s/lobster/v18/9LpJGtNuM1D8FAZ2BkJH2Q.ttf"
8249
- }
8250
- },
8251
- {
8252
- "kind": "webfonts#webfont",
8253
- "family": "Lobster Two",
8254
- "category": "display",
8255
- "variants": [
8256
- "regular",
8257
- "italic",
8258
- "700",
8259
- "700italic"
8260
- ],
8261
- "subsets": [
8262
- "latin"
8263
- ],
8264
- "version": "v9",
8265
- "lastModified": "2016-05-31",
8266
- "files": {
8267
- "regular": "http://fonts.gstatic.com/s/lobstertwo/v9/xb9aY4w9ceh8JRzobID1naCWcynf_cDxXwCLxiixG1c.ttf",
8268
- "italic": "http://fonts.gstatic.com/s/lobstertwo/v9/Ul_16MSbfayQv1I4QhLEoEeOrDcLawS7-ssYqLr2Xp4.ttf",
8269
- "700": "http://fonts.gstatic.com/s/lobstertwo/v9/bmdxOflBqMqjEC0-kGsIiHe1Pd76Vl7zRpE7NLJQ7XU.ttf",
8270
- "700italic": "http://fonts.gstatic.com/s/lobstertwo/v9/LEkN2_no_6kFvRfiBZ8xpM_zJjSACmk0BRPxQqhnNLU.ttf"
8271
- }
8272
- },
8273
- {
8274
- "kind": "webfonts#webfont",
8275
- "family": "Londrina Outline",
8276
- "category": "display",
8277
- "variants": [
8278
- "regular"
8279
- ],
8280
- "subsets": [
8281
- "latin"
8282
- ],
8283
- "version": "v5",
8284
- "lastModified": "2016-05-31",
8285
- "files": {
8286
- "regular": "http://fonts.gstatic.com/s/londrinaoutline/v5/lls08GOa1eT74p072l1AWJmp8DTZ6iHear7UV05iykg.ttf"
8287
- }
8288
- },
8289
- {
8290
- "kind": "webfonts#webfont",
8291
- "family": "Londrina Shadow",
8292
- "category": "display",
8293
- "variants": [
8294
- "regular"
8295
- ],
8296
- "subsets": [
8297
- "latin"
8298
- ],
8299
- "version": "v4",
8300
- "lastModified": "2016-05-31",
8301
- "files": {
8302
- "regular": "http://fonts.gstatic.com/s/londrinashadow/v4/dNYuzPS_7eYgXFJBzMoKdbw6Z3rVA5KDSi7aQxS92Nk.ttf"
8303
- }
8304
- },
8305
- {
8306
- "kind": "webfonts#webfont",
8307
- "family": "Londrina Sketch",
8308
- "category": "display",
8309
- "variants": [
8310
- "regular"
8311
- ],
8312
- "subsets": [
8313
- "latin"
8314
- ],
8315
- "version": "v4",
8316
- "lastModified": "2016-05-31",
8317
- "files": {
8318
- "regular": "http://fonts.gstatic.com/s/londrinasketch/v4/p7Ai06aT1Ycp_D2fyE3z69d6z_uhFGnpCOifUY1fJQo.ttf"
8319
- }
8320
- },
8321
- {
8322
- "kind": "webfonts#webfont",
8323
- "family": "Londrina Solid",
8324
- "category": "display",
8325
- "variants": [
8326
- "regular"
8327
- ],
8328
- "subsets": [
8329
- "latin"
8330
- ],
8331
- "version": "v4",
8332
- "lastModified": "2016-05-31",
8333
- "files": {
8334
- "regular": "http://fonts.gstatic.com/s/londrinasolid/v4/yysorIEiYSBb0ylZjg791MR125CwGqh8XBqkBzea0LA.ttf"
8335
- }
8336
- },
8337
- {
8338
- "kind": "webfonts#webfont",
8339
- "family": "Lora",
8340
- "category": "serif",
8341
- "variants": [
8342
- "regular",
8343
- "italic",
8344
- "700",
8345
- "700italic"
8346
- ],
8347
- "subsets": [
8348
- "latin-ext",
8349
- "cyrillic",
8350
- "latin"
8351
- ],
8352
- "version": "v9",
8353
- "lastModified": "2016-06-07",
8354
- "files": {
8355
- "regular": "http://fonts.gstatic.com/s/lora/v9/aXJ7KVIGcejEy1abawZazg.ttf",
8356
- "italic": "http://fonts.gstatic.com/s/lora/v9/AN2EZaj2tFRpyveuNn9BOg.ttf",
8357
- "700": "http://fonts.gstatic.com/s/lora/v9/enKND5SfzQKkggBA_VnT1A.ttf",
8358
- "700italic": "http://fonts.gstatic.com/s/lora/v9/ivs9j3kYU65pR9QD9YFdzQ.ttf"
8359
- }
8360
- },
8361
- {
8362
- "kind": "webfonts#webfont",
8363
- "family": "Love Ya Like A Sister",
8364
- "category": "display",
8365
- "variants": [
8366
- "regular"
8367
- ],
8368
- "subsets": [
8369
- "latin"
8370
- ],
8371
- "version": "v7",
8372
- "lastModified": "2016-05-31",
8373
- "files": {
8374
- "regular": "http://fonts.gstatic.com/s/loveyalikeasister/v7/LzkxWS-af0Br2Sk_YgSJY-ad1xEP8DQfgfY8MH9aBUg.ttf"
8375
- }
8376
- },
8377
- {
8378
- "kind": "webfonts#webfont",
8379
- "family": "Loved by the King",
8380
- "category": "handwriting",
8381
- "variants": [
8382
- "regular"
8383
- ],
8384
- "subsets": [
8385
- "latin"
8386
- ],
8387
- "version": "v6",
8388
- "lastModified": "2016-05-31",
8389
- "files": {
8390
- "regular": "http://fonts.gstatic.com/s/lovedbytheking/v6/wg03xD4cWigj4YDufLBSr8io2AFEwwMpu7y5KyiyAJc.ttf"
8391
- }
8392
- },
8393
- {
8394
- "kind": "webfonts#webfont",
8395
- "family": "Lovers Quarrel",
8396
- "category": "handwriting",
8397
- "variants": [
8398
- "regular"
8399
- ],
8400
- "subsets": [
8401
- "latin-ext",
8402
- "latin"
8403
- ],
8404
- "version": "v4",
8405
- "lastModified": "2016-05-31",
8406
- "files": {
8407
- "regular": "http://fonts.gstatic.com/s/loversquarrel/v4/gipdZ8b7pKb89MzQLAtJHLHLxci2ElvNEmOB303HLk0.ttf"
8408
- }
8409
- },
8410
- {
8411
- "kind": "webfonts#webfont",
8412
- "family": "Luckiest Guy",
8413
- "category": "display",
8414
- "variants": [
8415
- "regular"
8416
- ],
8417
- "subsets": [
8418
- "latin"
8419
- ],
8420
- "version": "v6",
8421
- "lastModified": "2016-10-05",
8422
- "files": {
8423
- "regular": "http://fonts.gstatic.com/s/luckiestguy/v6/5718gH8nDy3hFVihOpkY5C3USBnSvpkopQaUR-2r7iU.ttf"
8424
- }
8425
- },
8426
- {
8427
- "kind": "webfonts#webfont",
8428
- "family": "Lusitana",
8429
- "category": "serif",
8430
- "variants": [
8431
- "regular",
8432
- "700"
8433
- ],
8434
- "subsets": [
8435
- "latin"
8436
- ],
8437
- "version": "v4",
8438
- "lastModified": "2016-05-31",
8439
- "files": {
8440
- "regular": "http://fonts.gstatic.com/s/lusitana/v4/l1h9VDomkwbdzbPdmLcUIw.ttf",
8441
- "700": "http://fonts.gstatic.com/s/lusitana/v4/GWtZyUsONxgkdl3Mc1P7FKCWcynf_cDxXwCLxiixG1c.ttf"
8442
- }
8443
- },
8444
- {
8445
- "kind": "webfonts#webfont",
8446
- "family": "Lustria",
8447
- "category": "serif",
8448
- "variants": [
8449
- "regular"
8450
- ],
8451
- "subsets": [
8452
- "latin"
8453
- ],
8454
- "version": "v4",
8455
- "lastModified": "2016-05-31",
8456
- "files": {
8457
- "regular": "http://fonts.gstatic.com/s/lustria/v4/gXAk0s4ai0X-TAOhYzZd1w.ttf"
8458
- }
8459
- },
8460
- {
8461
- "kind": "webfonts#webfont",
8462
- "family": "Macondo",
8463
- "category": "display",
8464
- "variants": [
8465
- "regular"
8466
- ],
8467
- "subsets": [
8468
- "latin"
8469
- ],
8470
- "version": "v5",
8471
- "lastModified": "2016-05-31",
8472
- "files": {
8473
- "regular": "http://fonts.gstatic.com/s/macondo/v5/G6yPNUscRPQ8ufBXs_8yRQ.ttf"
8474
- }
8475
- },
8476
- {
8477
- "kind": "webfonts#webfont",
8478
- "family": "Macondo Swash Caps",
8479
- "category": "display",
8480
- "variants": [
8481
- "regular"
8482
- ],
8483
- "subsets": [
8484
- "latin"
8485
- ],
8486
- "version": "v4",
8487
- "lastModified": "2016-05-31",
8488
- "files": {
8489
- "regular": "http://fonts.gstatic.com/s/macondoswashcaps/v4/SsSR706z-MlvEH7_LS6JAPkkgYRHs6GSG949m-K6x2k.ttf"
8490
- }
8491
- },
8492
- {
8493
- "kind": "webfonts#webfont",
8494
- "family": "Mada",
8495
- "category": "sans-serif",
8496
- "variants": [
8497
- "300",
8498
- "regular",
8499
- "500",
8500
- "900"
8501
- ],
8502
- "subsets": [
8503
- "arabic",
8504
- "latin"
8505
- ],
8506
- "version": "v1",
8507
- "lastModified": "2016-06-20",
8508
- "files": {
8509
- "300": "http://fonts.gstatic.com/s/mada/v1/P46fye2TPh4fVwALgHSXCA.ttf",
8510
- "regular": "http://fonts.gstatic.com/s/mada/v1/io_zUrt5o943T_q45OHLWQ.ttf",
8511
- "500": "http://fonts.gstatic.com/s/mada/v1/PhhDsBi34sP0LptbpS9m6w.ttf",
8512
- "900": "http://fonts.gstatic.com/s/mada/v1/aCyc9Kc3rOJLL6fV9VfptA.ttf"
8513
- }
8514
- },
8515
- {
8516
- "kind": "webfonts#webfont",
8517
- "family": "Magra",
8518
- "category": "sans-serif",
8519
- "variants": [
8520
- "regular",
8521
- "700"
8522
- ],
8523
- "subsets": [
8524
- "latin-ext",
8525
- "latin"
8526
- ],
8527
- "version": "v4",
8528
- "lastModified": "2016-05-31",
8529
- "files": {
8530
- "regular": "http://fonts.gstatic.com/s/magra/v4/hoZ13bwCXBxuGZqAudgc5A.ttf",
8531
- "700": "http://fonts.gstatic.com/s/magra/v4/6fOM5sq5cIn8D0RjX8Lztw.ttf"
8532
- }
8533
- },
8534
- {
8535
- "kind": "webfonts#webfont",
8536
- "family": "Maiden Orange",
8537
- "category": "display",
8538
- "variants": [
8539
- "regular"
8540
- ],
8541
- "subsets": [
8542
- "latin"
8543
- ],
8544
- "version": "v6",
8545
- "lastModified": "2016-10-05",
8546
- "files": {
8547
- "regular": "http://fonts.gstatic.com/s/maidenorange/v6/ZhKIA2SPisEwdhW7g0RUWojjx0o0jr6fNXxPgYh_a8Q.ttf"
8548
- }
8549
- },
8550
- {
8551
- "kind": "webfonts#webfont",
8552
- "family": "Maitree",
8553
- "category": "serif",
8554
- "variants": [
8555
- "200",
8556
- "300",
8557
- "regular",
8558
- "500",
8559
- "600",
8560
- "700"
8561
- ],
8562
- "subsets": [
8563
- "latin-ext",
8564
- "thai",
8565
- "latin",
8566
- "vietnamese"
8567
- ],
8568
- "version": "v1",
8569
- "lastModified": "2016-06-20",
8570
- "files": {
8571
- "200": "http://fonts.gstatic.com/s/maitree/v1/JTlrRs3bVPV4i05cUIx_z_esZW2xOQ-xsNqO47m55DA.ttf",
8572
- "300": "http://fonts.gstatic.com/s/maitree/v1/rEGdABAOaqCHggl37mkWjfesZW2xOQ-xsNqO47m55DA.ttf",
8573
- "regular": "http://fonts.gstatic.com/s/maitree/v1/SpKVJkAjDAYOr1VkdSRspA.ttf",
8574
- "500": "http://fonts.gstatic.com/s/maitree/v1/2VHD7TXjRhN4Xu74SEPGdvesZW2xOQ-xsNqO47m55DA.ttf",
8575
- "600": "http://fonts.gstatic.com/s/maitree/v1/uuazDnPwt30gW3cKsG-e0_esZW2xOQ-xsNqO47m55DA.ttf",
8576
- "700": "http://fonts.gstatic.com/s/maitree/v1/cnHhc9fphsL3q-pistN3IPesZW2xOQ-xsNqO47m55DA.ttf"
8577
- }
8578
- },
8579
- {
8580
- "kind": "webfonts#webfont",
8581
- "family": "Mako",
8582
- "category": "sans-serif",
8583
- "variants": [
8584
- "regular"
8585
- ],
8586
- "subsets": [
8587
- "latin"
8588
- ],
8589
- "version": "v7",
8590
- "lastModified": "2016-05-31",
8591
- "files": {
8592
- "regular": "http://fonts.gstatic.com/s/mako/v7/z5zSLmfPlv1uTVAdmJBLXg.ttf"
8593
- }
8594
- },
8595
- {
8596
- "kind": "webfonts#webfont",
8597
- "family": "Mallanna",
8598
- "category": "sans-serif",
8599
- "variants": [
8600
- "regular"
8601
- ],
8602
- "subsets": [
8603
- "latin",
8604
- "telugu"
8605
- ],
8606
- "version": "v4",
8607
- "lastModified": "2016-05-31",
8608
- "files": {
8609
- "regular": "http://fonts.gstatic.com/s/mallanna/v4/krCTa-CfMbtxqF0689CbuQ.ttf"
8610
- }
8611
- },
8612
- {
8613
- "kind": "webfonts#webfont",
8614
- "family": "Mandali",
8615
- "category": "sans-serif",
8616
- "variants": [
8617
- "regular"
8618
- ],
8619
- "subsets": [
8620
- "latin",
8621
- "telugu"
8622
- ],
8623
- "version": "v4",
8624
- "lastModified": "2016-05-31",
8625
- "files": {
8626
- "regular": "http://fonts.gstatic.com/s/mandali/v4/0lF8yJ7fkyjXuqtSi5bWbQ.ttf"
8627
- }
8628
- },
8629
- {
8630
- "kind": "webfonts#webfont",
8631
- "family": "Marcellus",
8632
- "category": "serif",
8633
- "variants": [
8634
- "regular"
8635
- ],
8636
- "subsets": [
8637
- "latin-ext",
8638
- "latin"
8639
- ],
8640
- "version": "v4",
8641
- "lastModified": "2016-05-31",
8642
- "files": {
8643
- "regular": "http://fonts.gstatic.com/s/marcellus/v4/UjiLZzumxWC9whJ86UtaYw.ttf"
8644
- }
8645
- },
8646
- {
8647
- "kind": "webfonts#webfont",
8648
- "family": "Marcellus SC",
8649
- "category": "serif",
8650
- "variants": [
8651
- "regular"
8652
- ],
8653
- "subsets": [
8654
- "latin-ext",
8655
- "latin"
8656
- ],
8657
- "version": "v4",
8658
- "lastModified": "2016-05-31",
8659
- "files": {
8660
- "regular": "http://fonts.gstatic.com/s/marcellussc/v4/_jugwxhkkynrvsfrxVx8gS3USBnSvpkopQaUR-2r7iU.ttf"
8661
- }
8662
- },
8663
- {
8664
- "kind": "webfonts#webfont",
8665
- "family": "Marck Script",
8666
- "category": "handwriting",
8667
- "variants": [
8668
- "regular"
8669
- ],
8670
- "subsets": [
8671
- "latin-ext",
8672
- "cyrillic",
8673
- "latin"
8674
- ],
8675
- "version": "v7",
8676
- "lastModified": "2016-05-31",
8677
- "files": {
8678
- "regular": "http://fonts.gstatic.com/s/marckscript/v7/O_D1NAZVOFOobLbVtW3bci3USBnSvpkopQaUR-2r7iU.ttf"
8679
- }
8680
- },
8681
- {
8682
- "kind": "webfonts#webfont",
8683
- "family": "Margarine",
8684
- "category": "display",
8685
- "variants": [
8686
- "regular"
8687
- ],
8688
- "subsets": [
8689
- "latin-ext",
8690
- "latin"
8691
- ],
8692
- "version": "v5",
8693
- "lastModified": "2016-05-31",
8694
- "files": {
8695
- "regular": "http://fonts.gstatic.com/s/margarine/v5/DJnJwIrcO_cGkjSzY3MERw.ttf"
8696
- }
8697
- },
8698
- {
8699
- "kind": "webfonts#webfont",
8700
- "family": "Marko One",
8701
- "category": "serif",
8702
- "variants": [
8703
- "regular"
8704
- ],
8705
- "subsets": [
8706
- "latin"
8707
- ],
8708
- "version": "v6",
8709
- "lastModified": "2016-05-31",
8710
- "files": {
8711
- "regular": "http://fonts.gstatic.com/s/markoone/v6/hpP7j861sOAco43iDc4n4w.ttf"
8712
- }
8713
- },
8714
- {
8715
- "kind": "webfonts#webfont",
8716
- "family": "Marmelad",
8717
- "category": "sans-serif",
8718
- "variants": [
8719
- "regular"
8720
- ],
8721
- "subsets": [
8722
- "latin-ext",
8723
- "cyrillic",
8724
- "latin"
8725
- ],
8726
- "version": "v6",
8727
- "lastModified": "2016-05-31",
8728
- "files": {
8729
- "regular": "http://fonts.gstatic.com/s/marmelad/v6/jI0_FBlSOIRLL0ePWOhOwQ.ttf"
8730
- }
8731
- },
8732
- {
8733
- "kind": "webfonts#webfont",
8734
- "family": "Martel",
8735
- "category": "serif",
8736
- "variants": [
8737
- "200",
8738
- "300",
8739
- "regular",
8740
- "600",
8741
- "700",
8742
- "800",
8743
- "900"
8744
- ],
8745
- "subsets": [
8746
- "latin-ext",
8747
- "devanagari",
8748
- "latin"
8749
- ],
8750
- "version": "v1",
8751
- "lastModified": "2016-05-31",
8752
- "files": {
8753
- "200": "http://fonts.gstatic.com/s/martel/v1/_wfGdswZbat7P4tupHLA1w.ttf",
8754
- "300": "http://fonts.gstatic.com/s/martel/v1/SghoV2F2VPdVU3P0a4fa9w.ttf",
8755
- "regular": "http://fonts.gstatic.com/s/martel/v1/9ALu5czkaaf5zsYk6GJEnQ.ttf",
8756
- "600": "http://fonts.gstatic.com/s/martel/v1/Kt9uPhH1PvUwuZ5Y6zuAMQ.ttf",
8757
- "700": "http://fonts.gstatic.com/s/martel/v1/4OzIiKB5wE36xXL2U0vzWQ.ttf",
8758
- "800": "http://fonts.gstatic.com/s/martel/v1/RVF8drcQoRkRL7l_ZkpTlQ.ttf",
8759
- "900": "http://fonts.gstatic.com/s/martel/v1/iS0YUpFJoiLRlnyl40rpEA.ttf"
8760
- }
8761
- },
8762
- {
8763
- "kind": "webfonts#webfont",
8764
- "family": "Martel Sans",
8765
- "category": "sans-serif",
8766
- "variants": [
8767
- "200",
8768
- "300",
8769
- "regular",
8770
- "600",
8771
- "700",
8772
- "800",
8773
- "900"
8774
- ],
8775
- "subsets": [
8776
- "latin-ext",
8777
- "devanagari",
8778
- "latin"
8779
- ],
8780
- "version": "v2",
8781
- "lastModified": "2016-05-31",
8782
- "files": {
8783
- "200": "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQEnzyIngrzGjGh22wPb6cGM.ttf",
8784
- "300": "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQC9-WlPSxbfiI49GsXo3q0g.ttf",
8785
- "regular": "http://fonts.gstatic.com/s/martelsans/v2/91c8DPDZncMc0RFfhmc2RqCWcynf_cDxXwCLxiixG1c.ttf",
8786
- "600": "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQJZ7xm-Bj30Bj2KNdXDzSZg.ttf",
8787
- "700": "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQHe1Pd76Vl7zRpE7NLJQ7XU.ttf",
8788
- "800": "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQA89PwPrYLaRFJ-HNCU9NbA.ttf",
8789
- "900": "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQCenaqEuufTBk9XMKnKmgDA.ttf"
8790
- }
8791
- },
8792
- {
8793
- "kind": "webfonts#webfont",
8794
- "family": "Marvel",
8795
- "category": "sans-serif",
8796
- "variants": [
8797
- "regular",
8798
- "italic",
8799
- "700",
8800
- "700italic"
8801
- ],
8802
- "subsets": [
8803
- "latin"
8804
- ],
8805
- "version": "v6",
8806
- "lastModified": "2016-05-31",
8807
- "files": {
8808
- "regular": "http://fonts.gstatic.com/s/marvel/v6/Fg1dO8tWVb-MlyqhsbXEkg.ttf",
8809
- "italic": "http://fonts.gstatic.com/s/marvel/v6/HzyjFB-oR5usrc7Lxz9g8w.ttf",
8810
- "700": "http://fonts.gstatic.com/s/marvel/v6/WrHDBL1RupWGo2UcdgxB3Q.ttf",
8811
- "700italic": "http://fonts.gstatic.com/s/marvel/v6/Gzf5NT09Y6xskdQRj2kz1qCWcynf_cDxXwCLxiixG1c.ttf"
8812
- }
8813
- },
8814
- {
8815
- "kind": "webfonts#webfont",
8816
- "family": "Mate",
8817
- "category": "serif",
8818
- "variants": [
8819
- "regular",
8820
- "italic"
8821
- ],
8822
- "subsets": [
8823
- "latin"
8824
- ],
8825
- "version": "v5",
8826
- "lastModified": "2016-05-31",
8827
- "files": {
8828
- "regular": "http://fonts.gstatic.com/s/mate/v5/ooFviPcJ6hZP5bAE71Cawg.ttf",
8829
- "italic": "http://fonts.gstatic.com/s/mate/v5/5XwW6_cbisGvCX5qmNiqfA.ttf"
8830
- }
8831
- },
8832
- {
8833
- "kind": "webfonts#webfont",
8834
- "family": "Mate SC",
8835
- "category": "serif",
8836
- "variants": [
8837
- "regular"
8838
- ],
8839
- "subsets": [
8840
- "latin"
8841
- ],
8842
- "version": "v5",
8843
- "lastModified": "2016-05-31",
8844
- "files": {
8845
- "regular": "http://fonts.gstatic.com/s/matesc/v5/-YkIT2TZoPZF6pawKzDpWw.ttf"
8846
- }
8847
- },
8848
- {
8849
- "kind": "webfonts#webfont",
8850
- "family": "Maven Pro",
8851
- "category": "sans-serif",
8852
- "variants": [
8853
- "regular",
8854
- "500",
8855
- "700",
8856
- "900"
8857
- ],
8858
- "subsets": [
8859
- "latin"
8860
- ],
8861
- "version": "v7",
8862
- "lastModified": "2016-05-31",
8863
- "files": {
8864
- "regular": "http://fonts.gstatic.com/s/mavenpro/v7/sqPJIFG4gqsjl-0q_46Gbw.ttf",
8865
- "500": "http://fonts.gstatic.com/s/mavenpro/v7/SQVfzoJBbj9t3aVcmbspRi3USBnSvpkopQaUR-2r7iU.ttf",
8866
- "700": "http://fonts.gstatic.com/s/mavenpro/v7/uDssvmXgp7Nj3i336k_dSi3USBnSvpkopQaUR-2r7iU.ttf",
8867
- "900": "http://fonts.gstatic.com/s/mavenpro/v7/-91TwiFzqeL1F7Kh91APwS3USBnSvpkopQaUR-2r7iU.ttf"
8868
- }
8869
- },
8870
- {
8871
- "kind": "webfonts#webfont",
8872
- "family": "McLaren",
8873
- "category": "display",
8874
- "variants": [
8875
- "regular"
8876
- ],
8877
- "subsets": [
8878
- "latin-ext",
8879
- "latin"
8880
- ],
8881
- "version": "v4",
8882
- "lastModified": "2016-05-31",
8883
- "files": {
8884
- "regular": "http://fonts.gstatic.com/s/mclaren/v4/OprvTGxaiINBKW_1_U0eoQ.ttf"
8885
- }
8886
- },
8887
- {
8888
- "kind": "webfonts#webfont",
8889
- "family": "Meddon",
8890
- "category": "handwriting",
8891
- "variants": [
8892
- "regular"
8893
- ],
8894
- "subsets": [
8895
- "latin"
8896
- ],
8897
- "version": "v9",
8898
- "lastModified": "2016-05-31",
8899
- "files": {
8900
- "regular": "http://fonts.gstatic.com/s/meddon/v9/f8zJO98uu2EtSj9p7ci9RA.ttf"
8901
- }
8902
- },
8903
- {
8904
- "kind": "webfonts#webfont",
8905
- "family": "MedievalSharp",
8906
- "category": "display",
8907
- "variants": [
8908
- "regular"
8909
- ],
8910
- "subsets": [
8911
- "latin-ext",
8912
- "latin"
8913
- ],
8914
- "version": "v8",
8915
- "lastModified": "2016-05-31",
8916
- "files": {
8917
- "regular": "http://fonts.gstatic.com/s/medievalsharp/v8/85X_PjV6tftJ0-rX7KYQkOe45sJkivqprK7VkUlzfg0.ttf"
8918
- }
8919
- },
8920
- {
8921
- "kind": "webfonts#webfont",
8922
- "family": "Medula One",
8923
- "category": "display",
8924
- "variants": [
8925
- "regular"
8926
- ],
8927
- "subsets": [
8928
- "latin"
8929
- ],
8930
- "version": "v6",
8931
- "lastModified": "2016-05-31",
8932
- "files": {
8933
- "regular": "http://fonts.gstatic.com/s/medulaone/v6/AasPgDQak81dsTGQHc5zUPesZW2xOQ-xsNqO47m55DA.ttf"
8934
- }
8935
- },
8936
- {
8937
- "kind": "webfonts#webfont",
8938
- "family": "Meera Inimai",
8939
- "category": "sans-serif",
8940
- "variants": [
8941
- "regular"
8942
- ],
8943
- "subsets": [
8944
- "tamil",
8945
- "latin"
8946
- ],
8947
- "version": "v1",
8948
- "lastModified": "2016-06-20",
8949
- "files": {
8950
- "regular": "http://fonts.gstatic.com/s/meerainimai/v1/fWbdJc2ZVZnWCi06NRCxDy3USBnSvpkopQaUR-2r7iU.ttf"
8951
- }
8952
- },
8953
- {
8954
- "kind": "webfonts#webfont",
8955
- "family": "Megrim",
8956
- "category": "display",
8957
- "variants": [
8958
- "regular"
8959
- ],
8960
- "subsets": [
8961
- "latin"
8962
- ],
8963
- "version": "v7",
8964
- "lastModified": "2016-05-31",
8965
- "files": {
8966
- "regular": "http://fonts.gstatic.com/s/megrim/v7/e-9jVUC9lv1zxaFQARuftw.ttf"
8967
- }
8968
- },
8969
- {
8970
- "kind": "webfonts#webfont",
8971
- "family": "Meie Script",
8972
- "category": "handwriting",
8973
- "variants": [
8974
- "regular"
8975
- ],
8976
- "subsets": [
8977
- "latin-ext",
8978
- "latin"
8979
- ],
8980
- "version": "v4",
8981
- "lastModified": "2016-05-31",
8982
- "files": {
8983
- "regular": "http://fonts.gstatic.com/s/meiescript/v4/oTIWE5MmPye-rCyVp_6KEqCWcynf_cDxXwCLxiixG1c.ttf"
8984
- }
8985
- },
8986
- {
8987
- "kind": "webfonts#webfont",
8988
- "family": "Merienda",
8989
- "category": "handwriting",
8990
- "variants": [
8991
- "regular",
8992
- "700"
8993
- ],
8994
- "subsets": [
8995
- "latin-ext",
8996
- "latin"
8997
- ],
8998
- "version": "v4",
8999
- "lastModified": "2016-05-31",
9000
- "files": {
9001
- "regular": "http://fonts.gstatic.com/s/merienda/v4/MYY6Og1qZlOQtPW2G95Y3A.ttf",
9002
- "700": "http://fonts.gstatic.com/s/merienda/v4/GlwcvRLlgiVE2MBFQ4r0sKCWcynf_cDxXwCLxiixG1c.ttf"
9003
- }
9004
- },
9005
- {
9006
- "kind": "webfonts#webfont",
9007
- "family": "Merienda One",
9008
- "category": "handwriting",
9009
- "variants": [
9010
- "regular"
9011
- ],
9012
- "subsets": [
9013
- "latin"
9014
- ],
9015
- "version": "v7",
9016
- "lastModified": "2016-05-31",
9017
- "files": {
9018
- "regular": "http://fonts.gstatic.com/s/meriendaone/v7/bCA-uDdUx6nTO8SjzCLXvS3USBnSvpkopQaUR-2r7iU.ttf"
9019
- }
9020
- },
9021
- {
9022
- "kind": "webfonts#webfont",
9023
- "family": "Merriweather",
9024
- "category": "serif",
9025
- "variants": [
9026
- "300",
9027
- "300italic",
9028
- "regular",
9029
- "italic",
9030
- "700",
9031
- "700italic",
9032
- "900",
9033
- "900italic"
9034
- ],
9035
- "subsets": [
9036
- "cyrillic-ext",
9037
- "latin-ext",
9038
- "cyrillic",
9039
- "latin"
9040
- ],
9041
- "version": "v13",
9042
- "lastModified": "2016-06-07",
9043
- "files": {
9044
- "300": "http://fonts.gstatic.com/s/merriweather/v13/ZvcMqxEwPfh2qDWBPxn6nqcQoVhARpoaILP7amxE_8g.ttf",
9045
- "300italic": "http://fonts.gstatic.com/s/merriweather/v13/EYh7Vl4ywhowqULgRdYwICna0FLWfcB-J_SAYmcAXaI.ttf",
9046
- "regular": "http://fonts.gstatic.com/s/merriweather/v13/RFda8w1V0eDZheqfcyQ4EC3USBnSvpkopQaUR-2r7iU.ttf",
9047
- "italic": "http://fonts.gstatic.com/s/merriweather/v13/So5lHxHT37p2SS4-t60SlPMZXuCXbOrAvx5R0IT5Oyo.ttf",
9048
- "700": "http://fonts.gstatic.com/s/merriweather/v13/ZvcMqxEwPfh2qDWBPxn6nkD2ttfZwueP-QU272T9-k4.ttf",
9049
- "700italic": "http://fonts.gstatic.com/s/merriweather/v13/EYh7Vl4ywhowqULgRdYwIPAs9-1nE9qOqhChW0m4nDE.ttf",
9050
- "900": "http://fonts.gstatic.com/s/merriweather/v13/ZvcMqxEwPfh2qDWBPxn6nqObDOjC3UL77puoeHsE3fw.ttf",
9051
- "900italic": "http://fonts.gstatic.com/s/merriweather/v13/EYh7Vl4ywhowqULgRdYwIBd0_s6jQr9r5s5OZYvtzBY.ttf"
9052
- }
9053
- },
9054
- {
9055
- "kind": "webfonts#webfont",
9056
- "family": "Merriweather Sans",
9057
- "category": "sans-serif",
9058
- "variants": [
9059
- "300",
9060
- "300italic",
9061
- "regular",
9062
- "italic",
9063
- "700",
9064
- "700italic",
9065
- "800",
9066
- "800italic"
9067
- ],
9068
- "subsets": [
9069
- "latin-ext",
9070
- "latin"
9071
- ],
9072
- "version": "v8",
9073
- "lastModified": "2016-05-31",
9074
- "files": {
9075
- "300": "http://fonts.gstatic.com/s/merriweathersans/v8/6LmGj5dOJopQKEkt88Gowan5N8K-_DP0e9e_v51obXQ.ttf",
9076
- "300italic": "http://fonts.gstatic.com/s/merriweathersans/v8/nAqt4hiqwq3tzCecpgPmVdytE4nGXk2hYD5nJ740tBw.ttf",
9077
- "regular": "http://fonts.gstatic.com/s/merriweathersans/v8/AKu1CjQ4qnV8MUltkAX3sOAj_ty82iuwwDTNEYXGiyQ.ttf",
9078
- "italic": "http://fonts.gstatic.com/s/merriweathersans/v8/3Mz4hOHzs2npRMG3B1ascZ32VBCoA_HLsn85tSWZmdo.ttf",
9079
- "700": "http://fonts.gstatic.com/s/merriweathersans/v8/6LmGj5dOJopQKEkt88GowbqxG25nQNOioCZSK4sU-CA.ttf",
9080
- "700italic": "http://fonts.gstatic.com/s/merriweathersans/v8/nAqt4hiqwq3tzCecpgPmVbuqAJxizi8Dk_SK5et7kMg.ttf",
9081
- "800": "http://fonts.gstatic.com/s/merriweathersans/v8/6LmGj5dOJopQKEkt88GowYufzO2zUYSj5LqoJ3UGkco.ttf",
9082
- "800italic": "http://fonts.gstatic.com/s/merriweathersans/v8/nAqt4hiqwq3tzCecpgPmVdDmPrYMy3aZO4LmnZsxTQw.ttf"
9083
- }
9084
- },
9085
- {
9086
- "kind": "webfonts#webfont",
9087
- "family": "Metal",
9088
- "category": "display",
9089
- "variants": [
9090
- "regular"
9091
- ],
9092
- "subsets": [
9093
- "khmer"
9094
- ],
9095
- "version": "v9",
9096
- "lastModified": "2016-05-31",
9097
- "files": {
9098
- "regular": "http://fonts.gstatic.com/s/metal/v9/zA3UOP13ooQcxjv04BZX5g.ttf"
9099
- }
9100
- },
9101
- {
9102
- "kind": "webfonts#webfont",
9103
- "family": "Metal Mania",
9104
- "category": "display",
9105
- "variants": [
9106
- "regular"
9107
- ],
9108
- "subsets": [
9109
- "latin-ext",
9110
- "latin"
9111
- ],
9112
- "version": "v6",
9113
- "lastModified": "2016-05-31",
9114
- "files": {
9115
- "regular": "http://fonts.gstatic.com/s/metalmania/v6/isriV_rAUgj6bPWPN6l9QKCWcynf_cDxXwCLxiixG1c.ttf"
9116
- }
9117
- },
9118
- {
9119
- "kind": "webfonts#webfont",
9120
- "family": "Metamorphous",
9121
- "category": "display",
9122
- "variants": [
9123
- "regular"
9124
- ],
9125
- "subsets": [
9126
- "latin-ext",
9127
- "latin"
9128
- ],
9129
- "version": "v6",
9130
- "lastModified": "2016-06-07",
9131
- "files": {
9132
- "regular": "http://fonts.gstatic.com/s/metamorphous/v6/wGqUKXRinIYggz-BTRU9ei3USBnSvpkopQaUR-2r7iU.ttf"
9133
- }
9134
- },
9135
- {
9136
- "kind": "webfonts#webfont",
9137
- "family": "Metrophobic",
9138
- "category": "sans-serif",
9139
- "variants": [
9140
- "regular"
9141
- ],
9142
- "subsets": [
9143
- "latin"
9144
- ],
9145
- "version": "v8",
9146
- "lastModified": "2016-10-17",
9147
- "files": {
9148
- "regular": "http://fonts.gstatic.com/s/metrophobic/v8/SaglWZWCrrv_D17u1i4v_aCWcynf_cDxXwCLxiixG1c.ttf"
9149
- }
9150
- },
9151
- {
9152
- "kind": "webfonts#webfont",
9153
- "family": "Michroma",
9154
- "category": "sans-serif",
9155
- "variants": [
9156
- "regular"
9157
- ],
9158
- "subsets": [
9159
- "latin"
9160
- ],
9161
- "version": "v7",
9162
- "lastModified": "2016-05-31",
9163
- "files": {
9164
- "regular": "http://fonts.gstatic.com/s/michroma/v7/0c2XrW81_QsiKV8T9thumA.ttf"
9165
- }
9166
- },
9167
- {
9168
- "kind": "webfonts#webfont",
9169
- "family": "Milonga",
9170
- "category": "display",
9171
- "variants": [
9172
- "regular"
9173
- ],
9174
- "subsets": [
9175
- "latin-ext",
9176
- "latin"
9177
- ],
9178
- "version": "v4",
9179
- "lastModified": "2016-05-31",
9180
- "files": {
9181
- "regular": "http://fonts.gstatic.com/s/milonga/v4/dzNdIUSTGFmy2ahovDRcWg.ttf"
9182
- }
9183
- },
9184
- {
9185
- "kind": "webfonts#webfont",
9186
- "family": "Miltonian",
9187
- "category": "display",
9188
- "variants": [
9189
- "regular"
9190
- ],
9191
- "subsets": [
9192
- "latin"
9193
- ],
9194
- "version": "v10",
9195
- "lastModified": "2016-05-31",
9196
- "files": {
9197
- "regular": "http://fonts.gstatic.com/s/miltonian/v10/Z4HrYZyqm0BnNNzcCUfzoQ.ttf"
9198
- }
9199
- },
9200
- {
9201
- "kind": "webfonts#webfont",
9202
- "family": "Miltonian Tattoo",
9203
- "category": "display",
9204
- "variants": [
9205
- "regular"
9206
- ],
9207
- "subsets": [
9208
- "latin"
9209
- ],
9210
- "version": "v11",
9211
- "lastModified": "2016-05-31",
9212
- "files": {
9213
- "regular": "http://fonts.gstatic.com/s/miltoniantattoo/v11/1oU_8OGYwW46eh02YHydn2uk0YtI6thZkz1Hmh-odwg.ttf"
9214
- }
9215
- },
9216
- {
9217
- "kind": "webfonts#webfont",
9218
- "family": "Miniver",
9219
- "category": "display",
9220
- "variants": [
9221
- "regular"
9222
- ],
9223
- "subsets": [
9224
- "latin"
9225
- ],
9226
- "version": "v5",
9227
- "lastModified": "2016-05-31",
9228
- "files": {
9229
- "regular": "http://fonts.gstatic.com/s/miniver/v5/4yTQohOH_cWKRS5laRFhYg.ttf"
9230
- }
9231
- },
9232
- {
9233
- "kind": "webfonts#webfont",
9234
- "family": "Miriam Libre",
9235
- "category": "sans-serif",
9236
- "variants": [
9237
- "regular",
9238
- "700"
9239
- ],
9240
- "subsets": [
9241
- "latin-ext",
9242
- "hebrew",
9243
- "latin"
9244
- ],
9245
- "version": "v1",
9246
- "lastModified": "2016-06-20",
9247
- "files": {
9248
- "regular": "http://fonts.gstatic.com/s/miriamlibre/v1/Ljtpu8zR5iJWmlN3Faba5S3USBnSvpkopQaUR-2r7iU.ttf",
9249
- "700": "http://fonts.gstatic.com/s/miriamlibre/v1/FLc0J-Gdn8ynDWUkeeesAED2ttfZwueP-QU272T9-k4.ttf"
9250
- }
9251
- },
9252
- {
9253
- "kind": "webfonts#webfont",
9254
- "family": "Mirza",
9255
- "category": "display",
9256
- "variants": [
9257
- "regular",
9258
- "500",
9259
- "600",
9260
- "700"
9261
- ],
9262
- "subsets": [
9263
- "latin-ext",
9264
- "arabic",
9265
- "latin"
9266
- ],
9267
- "version": "v1",
9268
- "lastModified": "2016-06-20",
9269
- "files": {
9270
- "regular": "http://fonts.gstatic.com/s/mirza/v1/8oe36Xbgj9BMSLJBaZ8VAQ.ttf",
9271
- "500": "http://fonts.gstatic.com/s/mirza/v1/dT3HbZoBCx1xbU7PnFEFyQ.ttf",
9272
- "600": "http://fonts.gstatic.com/s/mirza/v1/6T4uh2Zti9P6Eq_gbAYvVQ.ttf",
9273
- "700": "http://fonts.gstatic.com/s/mirza/v1/b47CZDHoZdhnplmDpZymFw.ttf"
9274
- }
9275
- },
9276
- {
9277
- "kind": "webfonts#webfont",
9278
- "family": "Miss Fajardose",
9279
- "category": "handwriting",
9280
- "variants": [
9281
- "regular"
9282
- ],
9283
- "subsets": [
9284
- "latin-ext",
9285
- "latin"
9286
- ],
9287
- "version": "v6",
9288
- "lastModified": "2016-05-31",
9289
- "files": {
9290
- "regular": "http://fonts.gstatic.com/s/missfajardose/v6/WcXjlQPKn6nBfr8LY3ktNu6rPKfVZo7L2bERcf0BDns.ttf"
9291
- }
9292
- },
9293
- {
9294
- "kind": "webfonts#webfont",
9295
- "family": "Mitr",
9296
- "category": "sans-serif",
9297
- "variants": [
9298
- "200",
9299
- "300",
9300
- "regular",
9301
- "500",
9302
- "600",
9303
- "700"
9304
- ],
9305
- "subsets": [
9306
- "latin-ext",
9307
- "thai",
9308
- "latin",
9309
- "vietnamese"
9310
- ],
9311
- "version": "v1",
9312
- "lastModified": "2016-06-20",
9313
- "files": {
9314
- "200": "http://fonts.gstatic.com/s/mitr/v1/GCzZRAhweqJhxrmM0bPztg.ttf",
9315
- "300": "http://fonts.gstatic.com/s/mitr/v1/A61rQ_y9i8Ja__oFN7KxiQ.ttf",
9316
- "regular": "http://fonts.gstatic.com/s/mitr/v1/vKMd72X2iT4iBo5GvdCa_A.ttf",
9317
- "500": "http://fonts.gstatic.com/s/mitr/v1/r_Z6yrJJ0zmkGAqxqjlLRg.ttf",
9318
- "600": "http://fonts.gstatic.com/s/mitr/v1/42l66tb_XMxM97GKatU9Ng.ttf",
9319
- "700": "http://fonts.gstatic.com/s/mitr/v1/V-V7Rul5HOZ651R4Tml2Lw.ttf"
9320
- }
9321
- },
9322
- {
9323
- "kind": "webfonts#webfont",
9324
- "family": "Modak",
9325
- "category": "display",
9326
- "variants": [
9327
- "regular"
9328
- ],
9329
- "subsets": [
9330
- "latin-ext",
9331
- "devanagari",
9332
- "latin"
9333
- ],
9334
- "version": "v2",
9335
- "lastModified": "2016-05-11",
9336
- "files": {
9337
- "regular": "http://fonts.gstatic.com/s/modak/v2/lMsN0QIKid-pCPvL0hH4nw.ttf"
9338
- }
9339
- },
9340
- {
9341
- "kind": "webfonts#webfont",
9342
- "family": "Modern Antiqua",
9343
- "category": "display",
9344
- "variants": [
9345
- "regular"
9346
- ],
9347
- "subsets": [
9348
- "latin-ext",
9349
- "latin"
9350
- ],
9351
- "version": "v6",
9352
- "lastModified": "2016-05-31",
9353
- "files": {
9354
- "regular": "http://fonts.gstatic.com/s/modernantiqua/v6/8qX_tr6Xzy4t9fvZDXPkh6rFJ4O13IHVxZbM6yoslpo.ttf"
9355
- }
9356
- },
9357
- {
9358
- "kind": "webfonts#webfont",
9359
- "family": "Mogra",
9360
- "category": "display",
9361
- "variants": [
9362
- "regular"
9363
- ],
9364
- "subsets": [
9365
- "gujarati",
9366
- "latin-ext",
9367
- "latin"
9368
- ],
9369
- "version": "v1",
9370
- "lastModified": "2016-06-20",
9371
- "files": {
9372
- "regular": "http://fonts.gstatic.com/s/mogra/v1/gIxQBn9PseDaI0D4FnOiBQ.ttf"
9373
- }
9374
- },
9375
- {
9376
- "kind": "webfonts#webfont",
9377
- "family": "Molengo",
9378
- "category": "sans-serif",
9379
- "variants": [
9380
- "regular"
9381
- ],
9382
- "subsets": [
9383
- "latin-ext",
9384
- "latin"
9385
- ],
9386
- "version": "v7",
9387
- "lastModified": "2016-05-31",
9388
- "files": {
9389
- "regular": "http://fonts.gstatic.com/s/molengo/v7/jcjgeGuzv83I55AzOTpXNQ.ttf"
9390
- }
9391
- },
9392
- {
9393
- "kind": "webfonts#webfont",
9394
- "family": "Molle",
9395
- "category": "handwriting",
9396
- "variants": [
9397
- "italic"
9398
- ],
9399
- "subsets": [
9400
- "latin-ext",
9401
- "latin"
9402
- ],
9403
- "version": "v4",
9404
- "lastModified": "2016-05-31",
9405
- "files": {
9406
- "italic": "http://fonts.gstatic.com/s/molle/v4/9XTdCsjPXifLqo5et-YoGA.ttf"
9407
- }
9408
- },
9409
- {
9410
- "kind": "webfonts#webfont",
9411
- "family": "Monda",
9412
- "category": "sans-serif",
9413
- "variants": [
9414
- "regular",
9415
- "700"
9416
- ],
9417
- "subsets": [
9418
- "latin-ext",
9419
- "latin"
9420
- ],
9421
- "version": "v6",
9422
- "lastModified": "2016-10-17",
9423
- "files": {
9424
- "regular": "http://fonts.gstatic.com/s/monda/v6/qFMHZ9zvR6B_gnoIgosPrw.ttf",
9425
- "700": "http://fonts.gstatic.com/s/monda/v6/EVOzZUyc_j1w2GuTgTAW1g.ttf"
9426
- }
9427
- },
9428
- {
9429
- "kind": "webfonts#webfont",
9430
- "family": "Monofett",
9431
- "category": "display",
9432
- "variants": [
9433
- "regular"
9434
- ],
9435
- "subsets": [
9436
- "latin"
9437
- ],
9438
- "version": "v6",
9439
- "lastModified": "2016-05-31",
9440
- "files": {
9441
- "regular": "http://fonts.gstatic.com/s/monofett/v6/C6K5L799Rgxzg2brgOaqAw.ttf"
9442
- }
9443
- },
9444
- {
9445
- "kind": "webfonts#webfont",
9446
- "family": "Monoton",
9447
- "category": "display",
9448
- "variants": [
9449
- "regular"
9450
- ],
9451
- "subsets": [
9452
- "latin"
9453
- ],
9454
- "version": "v6",
9455
- "lastModified": "2016-05-31",
9456
- "files": {
9457
- "regular": "http://fonts.gstatic.com/s/monoton/v6/aCz8ja_bE4dg-7agSvExdw.ttf"
9458
- }
9459
- },
9460
- {
9461
- "kind": "webfonts#webfont",
9462
- "family": "Monsieur La Doulaise",
9463
- "category": "handwriting",
9464
- "variants": [
9465
- "regular"
9466
- ],
9467
- "subsets": [
9468
- "latin-ext",
9469
- "latin"
9470
- ],
9471
- "version": "v5",
9472
- "lastModified": "2016-05-31",
9473
- "files": {
9474
- "regular": "http://fonts.gstatic.com/s/monsieurladoulaise/v5/IMAdMj6Eq9jZ46CPctFtMKP61oAqTJXlx5ZVOBmcPdM.ttf"
9475
- }
9476
- },
9477
- {
9478
- "kind": "webfonts#webfont",
9479
- "family": "Montaga",
9480
- "category": "serif",
9481
- "variants": [
9482
- "regular"
9483
- ],
9484
- "subsets": [
9485
- "latin"
9486
- ],
9487
- "version": "v4",
9488
- "lastModified": "2016-05-31",
9489
- "files": {
9490
- "regular": "http://fonts.gstatic.com/s/montaga/v4/PwTwUboiD-M4-mFjZfJs2A.ttf"
9491
- }
9492
- },
9493
- {
9494
- "kind": "webfonts#webfont",
9495
- "family": "Montez",
9496
- "category": "handwriting",
9497
- "variants": [
9498
- "regular"
9499
- ],
9500
- "subsets": [
9501
- "latin"
9502
- ],
9503
- "version": "v6",
9504
- "lastModified": "2016-10-05",
9505
- "files": {
9506
- "regular": "http://fonts.gstatic.com/s/montez/v6/kx58rLOWQQLGFM4pDHv5Ng.ttf"
9507
- }
9508
- },
9509
- {
9510
- "kind": "webfonts#webfont",
9511
- "family": "Montserrat",
9512
- "category": "sans-serif",
9513
- "variants": [
9514
- "regular",
9515
- "700"
9516
- ],
9517
- "subsets": [
9518
- "latin"
9519
- ],
9520
- "version": "v7",
9521
- "lastModified": "2016-05-31",
9522
- "files": {
9523
- "regular": "http://fonts.gstatic.com/s/montserrat/v7/Kqy6-utIpx_30Xzecmeo8_esZW2xOQ-xsNqO47m55DA.ttf",
9524
- "700": "http://fonts.gstatic.com/s/montserrat/v7/IQHow_FEYlDC4Gzy_m8fcgJKKGfqHaYFsRG-T3ceEVo.ttf"
9525
- }
9526
- },
9527
- {
9528
- "kind": "webfonts#webfont",
9529
- "family": "Montserrat Alternates",
9530
- "category": "sans-serif",
9531
- "variants": [
9532
- "regular",
9533
- "700"
9534
- ],
9535
- "subsets": [
9536
- "latin"
9537
- ],
9538
- "version": "v4",
9539
- "lastModified": "2016-05-31",
9540
- "files": {
9541
- "regular": "http://fonts.gstatic.com/s/montserratalternates/v4/z2n1Sjxk9souK3HCtdHuklPuEVRGaG9GCQnmM16YWq0.ttf",
9542
- "700": "http://fonts.gstatic.com/s/montserratalternates/v4/YENqOGAVzwIHjYNjmKuAZpeqBKvsAhm-s2I4RVSXFfc.ttf"
9543
- }
9544
- },
9545
- {
9546
- "kind": "webfonts#webfont",
9547
- "family": "Montserrat Subrayada",
9548
- "category": "sans-serif",
9549
- "variants": [
9550
- "regular",
9551
- "700"
9552
- ],
9553
- "subsets": [
9554
- "latin"
9555
- ],
9556
- "version": "v4",
9557
- "lastModified": "2016-05-31",
9558
- "files": {
9559
- "regular": "http://fonts.gstatic.com/s/montserratsubrayada/v4/nzoCWCz0e9c7Mr2Gl8bbgrJymm6ilkk9f0nDA_sC_qk.ttf",
9560
- "700": "http://fonts.gstatic.com/s/montserratsubrayada/v4/wf-IKpsHcfm0C9uaz9IeGJvEcF1LWArDbGWgKZSH9go.ttf"
9561
- }
9562
- },
9563
- {
9564
- "kind": "webfonts#webfont",
9565
- "family": "Moul",
9566
- "category": "display",
9567
- "variants": [
9568
- "regular"
9569
- ],
9570
- "subsets": [
9571
- "khmer"
9572
- ],
9573
- "version": "v8",
9574
- "lastModified": "2016-05-31",
9575
- "files": {
9576
- "regular": "http://fonts.gstatic.com/s/moul/v8/Kb0ALQnfyXawP1a_P_gpTQ.ttf"
9577
- }
9578
- },
9579
- {
9580
- "kind": "webfonts#webfont",
9581
- "family": "Moulpali",
9582
- "category": "display",
9583
- "variants": [
9584
- "regular"
9585
- ],
9586
- "subsets": [
9587
- "khmer"
9588
- ],
9589
- "version": "v9",
9590
- "lastModified": "2016-05-31",
9591
- "files": {
9592
- "regular": "http://fonts.gstatic.com/s/moulpali/v9/diD74BprGhmVkJoerKmrKA.ttf"
9593
- }
9594
- },
9595
- {
9596
- "kind": "webfonts#webfont",
9597
- "family": "Mountains of Christmas",
9598
- "category": "display",
9599
- "variants": [
9600
- "regular",
9601
- "700"
9602
- ],
9603
- "subsets": [
9604
- "latin"
9605
- ],
9606
- "version": "v8",
9607
- "lastModified": "2016-10-05",
9608
- "files": {
9609
- "regular": "http://fonts.gstatic.com/s/mountainsofchristmas/v8/dVGBFPwd6G44IWDbQtPew2Auds3jz1Fxb61CgfaGDr4.ttf",
9610
- "700": "http://fonts.gstatic.com/s/mountainsofchristmas/v8/PymufKtHszoLrY0uiAYKNM9cPTbSBTrQyTa5TWAe3vE.ttf"
9611
- }
9612
- },
9613
- {
9614
- "kind": "webfonts#webfont",
9615
- "family": "Mouse Memoirs",
9616
- "category": "sans-serif",
9617
- "variants": [
9618
- "regular"
9619
- ],
9620
- "subsets": [
9621
- "latin-ext",
9622
- "latin"
9623
- ],
9624
- "version": "v4",
9625
- "lastModified": "2016-05-31",
9626
- "files": {
9627
- "regular": "http://fonts.gstatic.com/s/mousememoirs/v4/NBFaaJFux_j0AQbAsW3QeH8f0n03UdmQgF_CLvNR2vg.ttf"
9628
- }
9629
- },
9630
- {
9631
- "kind": "webfonts#webfont",
9632
- "family": "Mr Bedfort",
9633
- "category": "handwriting",
9634
- "variants": [
9635
- "regular"
9636
- ],
9637
- "subsets": [
9638
- "latin-ext",
9639
- "latin"
9640
- ],
9641
- "version": "v5",
9642
- "lastModified": "2016-05-31",
9643
- "files": {
9644
- "regular": "http://fonts.gstatic.com/s/mrbedfort/v5/81bGgHTRikLs_puEGshl7_esZW2xOQ-xsNqO47m55DA.ttf"
9645
- }
9646
- },
9647
- {
9648
- "kind": "webfonts#webfont",
9649
- "family": "Mr Dafoe",
9650
- "category": "handwriting",
9651
- "variants": [
9652
- "regular"
9653
- ],
9654
- "subsets": [
9655
- "latin-ext",
9656
- "latin"
9657
- ],
9658
- "version": "v5",
9659
- "lastModified": "2016-05-31",
9660
- "files": {
9661
- "regular": "http://fonts.gstatic.com/s/mrdafoe/v5/s32Q1S6ZkT7EaX53mUirvQ.ttf"
9662
- }
9663
- },
9664
- {
9665
- "kind": "webfonts#webfont",
9666
- "family": "Mr De Haviland",
9667
- "category": "handwriting",
9668
- "variants": [
9669
- "regular"
9670
- ],
9671
- "subsets": [
9672
- "latin-ext",
9673
- "latin"
9674
- ],
9675
- "version": "v5",
9676
- "lastModified": "2016-05-31",
9677
- "files": {
9678
- "regular": "http://fonts.gstatic.com/s/mrdehaviland/v5/fD8y4L6PJ4vqDk7z8Y8e27v4lrhng1lzu7-weKO6cw8.ttf"
9679
- }
9680
- },
9681
- {
9682
- "kind": "webfonts#webfont",
9683
- "family": "Mrs Saint Delafield",
9684
- "category": "handwriting",
9685
- "variants": [
9686
- "regular"
9687
- ],
9688
- "subsets": [
9689
- "latin-ext",
9690
- "latin"
9691
- ],
9692
- "version": "v4",
9693
- "lastModified": "2016-05-31",
9694
- "files": {
9695
- "regular": "http://fonts.gstatic.com/s/mrssaintdelafield/v4/vuWagfFT7bj9lFtZOFBwmjHMBelqWf3tJeGyts2SmKU.ttf"
9696
- }
9697
- },
9698
- {
9699
- "kind": "webfonts#webfont",
9700
- "family": "Mrs Sheppards",
9701
- "category": "handwriting",
9702
- "variants": [
9703
- "regular"
9704
- ],
9705
- "subsets": [
9706
- "latin-ext",
9707
- "latin"
9708
- ],
9709
- "version": "v5",
9710
- "lastModified": "2016-05-31",
9711
- "files": {
9712
- "regular": "http://fonts.gstatic.com/s/mrssheppards/v5/2WFsWMV3VUeCz6UVH7UjCn8f0n03UdmQgF_CLvNR2vg.ttf"
9713
- }
9714
- },
9715
- {
9716
- "kind": "webfonts#webfont",
9717
- "family": "Mukta Vaani",
9718
- "category": "sans-serif",
9719
- "variants": [
9720
- "200",
9721
- "300",
9722
- "regular",
9723
- "500",
9724
- "600",
9725
- "700",
9726
- "800"
9727
- ],
9728
- "subsets": [
9729
- "gujarati",
9730
- "latin-ext",
9731
- "latin"
9732
- ],
9733
- "version": "v1",
9734
- "lastModified": "2016-06-20",
9735
- "files": {
9736
- "200": "http://fonts.gstatic.com/s/muktavaani/v1/X9qyC4rK_D9w1AvSv0mw_0nzyIngrzGjGh22wPb6cGM.ttf",
9737
- "300": "http://fonts.gstatic.com/s/muktavaani/v1/X9qyC4rK_D9w1AvSv0mw_y9-WlPSxbfiI49GsXo3q0g.ttf",
9738
- "regular": "http://fonts.gstatic.com/s/muktavaani/v1/knS0wTOFNOwOD4CZrdHIxKCWcynf_cDxXwCLxiixG1c.ttf",
9739
- "500": "http://fonts.gstatic.com/s/muktavaani/v1/X9qyC4rK_D9w1AvSv0mw_8CNfqCYlB_eIx7H1TVXe60.ttf",
9740
- "600": "http://fonts.gstatic.com/s/muktavaani/v1/X9qyC4rK_D9w1AvSv0mw_5Z7xm-Bj30Bj2KNdXDzSZg.ttf",
9741
- "700": "http://fonts.gstatic.com/s/muktavaani/v1/X9qyC4rK_D9w1AvSv0mw_3e1Pd76Vl7zRpE7NLJQ7XU.ttf",
9742
- "800": "http://fonts.gstatic.com/s/muktavaani/v1/X9qyC4rK_D9w1AvSv0mw_w89PwPrYLaRFJ-HNCU9NbA.ttf"
9743
- }
9744
- },
9745
- {
9746
- "kind": "webfonts#webfont",
9747
- "family": "Muli",
9748
- "category": "sans-serif",
9749
- "variants": [
9750
- "300",
9751
- "300italic",
9752
- "regular",
9753
- "italic"
9754
- ],
9755
- "subsets": [
9756
- "latin"
9757
- ],
9758
- "version": "v9",
9759
- "lastModified": "2016-10-20",
9760
- "files": {
9761
- "300": "http://fonts.gstatic.com/s/muli/v9/VJw4F3ZHRAZ7Hmg3nQu5YQ.ttf",
9762
- "300italic": "http://fonts.gstatic.com/s/muli/v9/s-NKMCru8HiyjEt0ZDoBoA.ttf",
9763
- "regular": "http://fonts.gstatic.com/s/muli/v9/KJiP6KznxbALQgfJcDdPAw.ttf",
9764
- "italic": "http://fonts.gstatic.com/s/muli/v9/Cg0K_IWANs9xkNoxV7H1_w.ttf"
9765
- }
9766
- },
9767
- {
9768
- "kind": "webfonts#webfont",
9769
- "family": "Mystery Quest",
9770
- "category": "display",
9771
- "variants": [
9772
- "regular"
9773
- ],
9774
- "subsets": [
9775
- "latin-ext",
9776
- "latin"
9777
- ],
9778
- "version": "v4",
9779
- "lastModified": "2016-05-31",
9780
- "files": {
9781
- "regular": "http://fonts.gstatic.com/s/mysteryquest/v4/467jJvg0c7HgucvBB9PLDyeUSrabuTpOsMEiRLtKwk0.ttf"
9782
- }
9783
- },
9784
- {
9785
- "kind": "webfonts#webfont",
9786
- "family": "NTR",
9787
- "category": "sans-serif",
9788
- "variants": [
9789
- "regular"
9790
- ],
9791
- "subsets": [
9792
- "latin",
9793
- "telugu"
9794
- ],
9795
- "version": "v4",
9796
- "lastModified": "2016-05-31",
9797
- "files": {
9798
- "regular": "http://fonts.gstatic.com/s/ntr/v4/e7H4ZLtGfVOYyOupo6T12g.ttf"
9799
- }
9800
- },
9801
- {
9802
- "kind": "webfonts#webfont",
9803
- "family": "Neucha",
9804
- "category": "handwriting",
9805
- "variants": [
9806
- "regular"
9807
- ],
9808
- "subsets": [
9809
- "cyrillic",
9810
- "latin"
9811
- ],
9812
- "version": "v8",
9813
- "lastModified": "2016-05-31",
9814
- "files": {
9815
- "regular": "http://fonts.gstatic.com/s/neucha/v8/bijdhB-TzQdtpl0ykhGh4Q.ttf"
9816
- }
9817
- },
9818
- {
9819
- "kind": "webfonts#webfont",
9820
- "family": "Neuton",
9821
- "category": "serif",
9822
- "variants": [
9823
- "200",
9824
- "300",
9825
- "regular",
9826
- "italic",
9827
- "700",
9828
- "800"
9829
- ],
9830
- "subsets": [
9831
- "latin-ext",
9832
- "latin"
9833
- ],
9834
- "version": "v8",
9835
- "lastModified": "2016-05-31",
9836
- "files": {
9837
- "200": "http://fonts.gstatic.com/s/neuton/v8/DA3Mkew3XqSkPpi1f4tJow.ttf",
9838
- "300": "http://fonts.gstatic.com/s/neuton/v8/xrc_aZ2hx-gdeV0mlY8Vww.ttf",
9839
- "regular": "http://fonts.gstatic.com/s/neuton/v8/9R-MGIOQUdjAVeB6nE6PcQ.ttf",
9840
- "italic": "http://fonts.gstatic.com/s/neuton/v8/uVMT3JOB5BNFi3lgPp6kEg.ttf",
9841
- "700": "http://fonts.gstatic.com/s/neuton/v8/gnWpkWY7DirkKiovncYrfg.ttf",
9842
- "800": "http://fonts.gstatic.com/s/neuton/v8/XPzBQV4lY6enLxQG9cF1jw.ttf"
9843
- }
9844
- },
9845
- {
9846
- "kind": "webfonts#webfont",
9847
- "family": "New Rocker",
9848
- "category": "display",
9849
- "variants": [
9850
- "regular"
9851
- ],
9852
- "subsets": [
9853
- "latin-ext",
9854
- "latin"
9855
- ],
9856
- "version": "v5",
9857
- "lastModified": "2016-05-31",
9858
- "files": {
9859
- "regular": "http://fonts.gstatic.com/s/newrocker/v5/EFUWzHJedEkpW399zYOHofesZW2xOQ-xsNqO47m55DA.ttf"
9860
- }
9861
- },
9862
- {
9863
- "kind": "webfonts#webfont",
9864
- "family": "News Cycle",
9865
- "category": "sans-serif",
9866
- "variants": [
9867
- "regular",
9868
- "700"
9869
- ],
9870
- "subsets": [
9871
- "latin-ext",
9872
- "latin"
9873
- ],
9874
- "version": "v13",
9875
- "lastModified": "2016-05-31",
9876
- "files": {
9877
- "regular": "http://fonts.gstatic.com/s/newscycle/v13/xyMAr8VfiUzIOvS1abHJO_esZW2xOQ-xsNqO47m55DA.ttf",
9878
- "700": "http://fonts.gstatic.com/s/newscycle/v13/G28Ny31cr5orMqEQy6ljtwJKKGfqHaYFsRG-T3ceEVo.ttf"
9879
- }
9880
- },
9881
- {
9882
- "kind": "webfonts#webfont",
9883
- "family": "Niconne",
9884
- "category": "handwriting",
9885
- "variants": [
9886
- "regular"
9887
- ],
9888
- "subsets": [
9889
- "latin-ext",
9890
- "latin"
9891
- ],
9892
- "version": "v6",
9893
- "lastModified": "2016-05-31",
9894
- "files": {
9895
- "regular": "http://fonts.gstatic.com/s/niconne/v6/ZA-mFw2QNXodx5y7kfELBg.ttf"
9896
- }
9897
- },
9898
- {
9899
- "kind": "webfonts#webfont",
9900
- "family": "Nixie One",
9901
- "category": "display",
9902
- "variants": [
9903
- "regular"
9904
- ],
9905
- "subsets": [
9906
- "latin"
9907
- ],
9908
- "version": "v7",
9909
- "lastModified": "2016-05-31",
9910
- "files": {
9911
- "regular": "http://fonts.gstatic.com/s/nixieone/v7/h6kQfmzm0Shdnp3eswRaqQ.ttf"
9912
- }
9913
- },
9914
- {
9915
- "kind": "webfonts#webfont",
9916
- "family": "Nobile",
9917
- "category": "sans-serif",
9918
- "variants": [
9919
- "regular",
9920
- "italic",
9921
- "700",
9922
- "700italic"
9923
- ],
9924
- "subsets": [
9925
- "latin"
9926
- ],
9927
- "version": "v7",
9928
- "lastModified": "2016-05-31",
9929
- "files": {
9930
- "regular": "http://fonts.gstatic.com/s/nobile/v7/lC_lPi1ddtN38iXTCRh6ow.ttf",
9931
- "italic": "http://fonts.gstatic.com/s/nobile/v7/vGmrpKzWQQSrb-PR6FWBIA.ttf",
9932
- "700": "http://fonts.gstatic.com/s/nobile/v7/9p6M-Yrg_r_QPmSD1skrOg.ttf",
9933
- "700italic": "http://fonts.gstatic.com/s/nobile/v7/oQ1eYPaXV638N03KvsNvyKCWcynf_cDxXwCLxiixG1c.ttf"
9934
- }
9935
- },
9936
- {
9937
- "kind": "webfonts#webfont",
9938
- "family": "Nokora",
9939
- "category": "serif",
9940
- "variants": [
9941
- "regular",
9942
- "700"
9943
- ],
9944
- "subsets": [
9945
- "khmer"
9946
- ],
9947
- "version": "v9",
9948
- "lastModified": "2016-10-05",
9949
- "files": {
9950
- "regular": "http://fonts.gstatic.com/s/nokora/v9/dRyz1JfnyKPNaRcBNX9F9A.ttf",
9951
- "700": "http://fonts.gstatic.com/s/nokora/v9/QMqqa4QEOhQpiig3cAPmbQ.ttf"
9952
- }
9953
- },
9954
- {
9955
- "kind": "webfonts#webfont",
9956
- "family": "Norican",
9957
- "category": "handwriting",
9958
- "variants": [
9959
- "regular"
9960
- ],
9961
- "subsets": [
9962
- "latin-ext",
9963
- "latin"
9964
- ],
9965
- "version": "v4",
9966
- "lastModified": "2016-05-31",
9967
- "files": {
9968
- "regular": "http://fonts.gstatic.com/s/norican/v4/SHnSqhYAWG5sZTWcPzEHig.ttf"
9969
- }
9970
- },
9971
- {
9972
- "kind": "webfonts#webfont",
9973
- "family": "Nosifer",
9974
- "category": "display",
9975
- "variants": [
9976
- "regular"
9977
- ],
9978
- "subsets": [
9979
- "latin-ext",
9980
- "latin"
9981
- ],
9982
- "version": "v5",
9983
- "lastModified": "2016-05-31",
9984
- "files": {
9985
- "regular": "http://fonts.gstatic.com/s/nosifer/v5/7eJGoIuHRrtcG00j6CptSA.ttf"
9986
- }
9987
- },
9988
- {
9989
- "kind": "webfonts#webfont",
9990
- "family": "Nothing You Could Do",
9991
- "category": "handwriting",
9992
- "variants": [
9993
- "regular"
9994
- ],
9995
- "subsets": [
9996
- "latin"
9997
- ],
9998
- "version": "v6",
9999
- "lastModified": "2016-05-31",
10000
- "files": {
10001
- "regular": "http://fonts.gstatic.com/s/nothingyoucoulddo/v6/jpk1K3jbJoyoK0XKaSyQAf-TpkXjXYGWiJZAEtBRjPU.ttf"
10002
- }
10003
- },
10004
- {
10005
- "kind": "webfonts#webfont",
10006
- "family": "Noticia Text",
10007
- "category": "serif",
10008
- "variants": [
10009
- "regular",
10010
- "italic",
10011
- "700",
10012
- "700italic"
10013
- ],
10014
- "subsets": [
10015
- "latin-ext",
10016
- "latin",
10017
- "vietnamese"
10018
- ],
10019
- "version": "v6",
10020
- "lastModified": "2016-05-31",
10021
- "files": {
10022
- "regular": "http://fonts.gstatic.com/s/noticiatext/v6/wdyV6x3eKpdeUPQ7BJ5uUC3USBnSvpkopQaUR-2r7iU.ttf",
10023
- "italic": "http://fonts.gstatic.com/s/noticiatext/v6/dAuxVpkYE_Q_IwIm6elsKPMZXuCXbOrAvx5R0IT5Oyo.ttf",
10024
- "700": "http://fonts.gstatic.com/s/noticiatext/v6/pEko-RqEtp45bE2P80AAKUD2ttfZwueP-QU272T9-k4.ttf",
10025
- "700italic": "http://fonts.gstatic.com/s/noticiatext/v6/-rQ7V8ARjf28_b7kRa0JuvAs9-1nE9qOqhChW0m4nDE.ttf"
10026
- }
10027
- },
10028
- {
10029
- "kind": "webfonts#webfont",
10030
- "family": "Noto Sans",
10031
- "category": "sans-serif",
10032
- "variants": [
10033
- "regular",
10034
- "italic",
10035
- "700",
10036
- "700italic"
10037
- ],
10038
- "subsets": [
10039
- "cyrillic-ext",
10040
- "latin-ext",
10041
- "devanagari",
10042
- "cyrillic",
10043
- "greek",
10044
- "latin",
10045
- "greek-ext",
10046
- "vietnamese"
10047
- ],
10048
- "version": "v6",
10049
- "lastModified": "2016-10-05",
10050
- "files": {
10051
- "regular": "http://fonts.gstatic.com/s/notosans/v6/0Ue9FiUJwVhi4NGfHJS5uA.ttf",
10052
- "italic": "http://fonts.gstatic.com/s/notosans/v6/dLcNKMgJ1H5RVoZFraDz0qCWcynf_cDxXwCLxiixG1c.ttf",
10053
- "700": "http://fonts.gstatic.com/s/notosans/v6/PIbvSEyHEdL91QLOQRnZ1y3USBnSvpkopQaUR-2r7iU.ttf",
10054
- "700italic": "http://fonts.gstatic.com/s/notosans/v6/9Z3uUWMRR7crzm1TjRicDne1Pd76Vl7zRpE7NLJQ7XU.ttf"
10055
- }
10056
- },
10057
- {
10058
- "kind": "webfonts#webfont",
10059
- "family": "Noto Serif",
10060
- "category": "serif",
10061
- "variants": [
10062
- "regular",
10063
- "italic",
10064
- "700",
10065
- "700italic"
10066
- ],
10067
- "subsets": [
10068
- "cyrillic-ext",
10069
- "latin-ext",
10070
- "cyrillic",
10071
- "greek",
10072
- "latin",
10073
- "greek-ext",
10074
- "vietnamese"
10075
- ],
10076
- "version": "v4",
10077
- "lastModified": "2016-10-05",
10078
- "files": {
10079
- "regular": "http://fonts.gstatic.com/s/notoserif/v4/zW6mc7bC1CWw8dH0yxY8JfesZW2xOQ-xsNqO47m55DA.ttf",
10080
- "italic": "http://fonts.gstatic.com/s/notoserif/v4/HQXBIwLHsOJCNEQeX9kNzy3USBnSvpkopQaUR-2r7iU.ttf",
10081
- "700": "http://fonts.gstatic.com/s/notoserif/v4/lJAvZoKA5NttpPc9yc6lPQJKKGfqHaYFsRG-T3ceEVo.ttf",
10082
- "700italic": "http://fonts.gstatic.com/s/notoserif/v4/Wreg0Be4tcFGM2t6VWytvED2ttfZwueP-QU272T9-k4.ttf"
10083
- }
10084
- },
10085
- {
10086
- "kind": "webfonts#webfont",
10087
- "family": "Nova Cut",
10088
- "category": "display",
10089
- "variants": [
10090
- "regular"
10091
- ],
10092
- "subsets": [
10093
- "latin"
10094
- ],
10095
- "version": "v8",
10096
- "lastModified": "2016-05-31",
10097
- "files": {
10098
- "regular": "http://fonts.gstatic.com/s/novacut/v8/6q12jWcBvj0KO2cMRP97tA.ttf"
10099
- }
10100
- },
10101
- {
10102
- "kind": "webfonts#webfont",
10103
- "family": "Nova Flat",
10104
- "category": "display",
10105
- "variants": [
10106
- "regular"
10107
- ],
10108
- "subsets": [
10109
- "latin"
10110
- ],
10111
- "version": "v8",
10112
- "lastModified": "2016-05-31",
10113
- "files": {
10114
- "regular": "http://fonts.gstatic.com/s/novaflat/v8/pK7a0CoGzI684qe_XSHBqQ.ttf"
10115
- }
10116
- },
10117
- {
10118
- "kind": "webfonts#webfont",
10119
- "family": "Nova Mono",
10120
- "category": "monospace",
10121
- "variants": [
10122
- "regular"
10123
- ],
10124
- "subsets": [
10125
- "greek",
10126
- "latin"
10127
- ],
10128
- "version": "v7",
10129
- "lastModified": "2016-05-31",
10130
- "files": {
10131
- "regular": "http://fonts.gstatic.com/s/novamono/v7/6-SChr5ZIaaasJFBkgrLNw.ttf"
10132
- }
10133
- },
10134
- {
10135
- "kind": "webfonts#webfont",
10136
- "family": "Nova Oval",
10137
- "category": "display",
10138
- "variants": [
10139
- "regular"
10140
- ],
10141
- "subsets": [
10142
- "latin"
10143
- ],
10144
- "version": "v8",
10145
- "lastModified": "2016-05-31",
10146
- "files": {
10147
- "regular": "http://fonts.gstatic.com/s/novaoval/v8/VuukVpKP8BwUf8o9W5LYQQ.ttf"
10148
- }
10149
- },
10150
- {
10151
- "kind": "webfonts#webfont",
10152
- "family": "Nova Round",
10153
- "category": "display",
10154
- "variants": [
10155
- "regular"
10156
- ],
10157
- "subsets": [
10158
- "latin"
10159
- ],
10160
- "version": "v8",
10161
- "lastModified": "2016-05-31",
10162
- "files": {
10163
- "regular": "http://fonts.gstatic.com/s/novaround/v8/7-cK3Ari_8XYYFgVMxVhDvesZW2xOQ-xsNqO47m55DA.ttf"
10164
- }
10165
- },
10166
- {
10167
- "kind": "webfonts#webfont",
10168
- "family": "Nova Script",
10169
- "category": "display",
10170
- "variants": [
10171
- "regular"
10172
- ],
10173
- "subsets": [
10174
- "latin"
10175
- ],
10176
- "version": "v8",
10177
- "lastModified": "2016-05-31",
10178
- "files": {
10179
- "regular": "http://fonts.gstatic.com/s/novascript/v8/dEvxQDLgx1M1TKY-NmBWYaCWcynf_cDxXwCLxiixG1c.ttf"
10180
- }
10181
- },
10182
- {
10183
- "kind": "webfonts#webfont",
10184
- "family": "Nova Slim",
10185
- "category": "display",
10186
- "variants": [
10187
- "regular"
10188
- ],
10189
- "subsets": [
10190
- "latin"
10191
- ],
10192
- "version": "v8",
10193
- "lastModified": "2016-05-31",
10194
- "files": {
10195
- "regular": "http://fonts.gstatic.com/s/novaslim/v8/rPYXC81_VL2EW-4CzBX65g.ttf"
10196
- }
10197
- },
10198
- {
10199
- "kind": "webfonts#webfont",
10200
- "family": "Nova Square",
10201
- "category": "display",
10202
- "variants": [
10203
- "regular"
10204
- ],
10205
- "subsets": [
10206
- "latin"
10207
- ],
10208
- "version": "v8",
10209
- "lastModified": "2016-05-31",
10210
- "files": {
10211
- "regular": "http://fonts.gstatic.com/s/novasquare/v8/BcBzXoaDzYX78rquGXVuSqCWcynf_cDxXwCLxiixG1c.ttf"
10212
- }
10213
- },
10214
- {
10215
- "kind": "webfonts#webfont",
10216
- "family": "Numans",
10217
- "category": "sans-serif",
10218
- "variants": [
10219
- "regular"
10220
- ],
10221
- "subsets": [
10222
- "latin"
10223
- ],
10224
- "version": "v6",
10225
- "lastModified": "2016-05-31",
10226
- "files": {
10227
- "regular": "http://fonts.gstatic.com/s/numans/v6/g5snI2p6OEjjTNmTHyBdiQ.ttf"
10228
- }
10229
- },
10230
- {
10231
- "kind": "webfonts#webfont",
10232
- "family": "Nunito",
10233
- "category": "sans-serif",
10234
- "variants": [
10235
- "300",
10236
- "regular",
10237
- "700"
10238
- ],
10239
- "subsets": [
10240
- "latin"
10241
- ],
10242
- "version": "v7",
10243
- "lastModified": "2016-05-31",
10244
- "files": {
10245
- "300": "http://fonts.gstatic.com/s/nunito/v7/zXQvrWBJqUooM7Xv98MrQw.ttf",
10246
- "regular": "http://fonts.gstatic.com/s/nunito/v7/ySZTeT3IuzJj0GK6uGpbBg.ttf",
10247
- "700": "http://fonts.gstatic.com/s/nunito/v7/aEdlqgMuYbpe4U3TnqOQMA.ttf"
10248
- }
10249
- },
10250
- {
10251
- "kind": "webfonts#webfont",
10252
- "family": "Odor Mean Chey",
10253
- "category": "display",
10254
- "variants": [
10255
- "regular"
10256
- ],
10257
- "subsets": [
10258
- "khmer"
10259
- ],
10260
- "version": "v8",
10261
- "lastModified": "2016-05-31",
10262
- "files": {
10263
- "regular": "http://fonts.gstatic.com/s/odormeanchey/v8/GK3E7EjPoBkeZhYshGFo0eVKG8sq4NyGgdteJLvqLDs.ttf"
10264
- }
10265
- },
10266
- {
10267
- "kind": "webfonts#webfont",
10268
- "family": "Offside",
10269
- "category": "display",
10270
- "variants": [
10271
- "regular"
10272
- ],
10273
- "subsets": [
10274
- "latin"
10275
- ],
10276
- "version": "v4",
10277
- "lastModified": "2016-05-31",
10278
- "files": {
10279
- "regular": "http://fonts.gstatic.com/s/offside/v4/v0C913SB8wqQUvcu1faUqw.ttf"
10280
- }
10281
- },
10282
- {
10283
- "kind": "webfonts#webfont",
10284
- "family": "Old Standard TT",
10285
- "category": "serif",
10286
- "variants": [
10287
- "regular",
10288
- "italic",
10289
- "700"
10290
- ],
10291
- "subsets": [
10292
- "latin"
10293
- ],
10294
- "version": "v7",
10295
- "lastModified": "2016-05-31",
10296
- "files": {
10297
- "regular": "http://fonts.gstatic.com/s/oldstandardtt/v7/n6RTCDcIPWSE8UNBa4k-DLcB5jyhm1VsHs65c3QNDr0.ttf",
10298
- "italic": "http://fonts.gstatic.com/s/oldstandardtt/v7/QQT_AUSp4AV4dpJfIN7U5PWrQzeMtsHf8QsWQ2cZg3c.ttf",
10299
- "700": "http://fonts.gstatic.com/s/oldstandardtt/v7/5Ywdce7XEbTSbxs__4X1_HJqbZqK7TdZ58X80Q_Lw8Y.ttf"
10300
- }
10301
- },
10302
- {
10303
- "kind": "webfonts#webfont",
10304
- "family": "Oldenburg",
10305
- "category": "display",
10306
- "variants": [
10307
- "regular"
10308
- ],
10309
- "subsets": [
10310
- "latin-ext",
10311
- "latin"
10312
- ],
10313
- "version": "v4",
10314
- "lastModified": "2016-06-07",
10315
- "files": {
10316
- "regular": "http://fonts.gstatic.com/s/oldenburg/v4/dqA_M_uoCVXZbCO-oKBTnQ.ttf"
10317
- }
10318
- },
10319
- {
10320
- "kind": "webfonts#webfont",
10321
- "family": "Oleo Script",
10322
- "category": "display",
10323
- "variants": [
10324
- "regular",
10325
- "700"
10326
- ],
10327
- "subsets": [
10328
- "latin-ext",
10329
- "latin"
10330
- ],
10331
- "version": "v5",
10332
- "lastModified": "2016-05-31",
10333
- "files": {
10334
- "regular": "http://fonts.gstatic.com/s/oleoscript/v5/21stZcmPyzbQVXtmGegyqKCWcynf_cDxXwCLxiixG1c.ttf",
10335
- "700": "http://fonts.gstatic.com/s/oleoscript/v5/hudNQFKFl98JdNnlo363fne1Pd76Vl7zRpE7NLJQ7XU.ttf"
10336
- }
10337
- },
10338
- {
10339
- "kind": "webfonts#webfont",
10340
- "family": "Oleo Script Swash Caps",
10341
- "category": "display",
10342
- "variants": [
10343
- "regular",
10344
- "700"
10345
- ],
10346
- "subsets": [
10347
- "latin-ext",
10348
- "latin"
10349
- ],
10350
- "version": "v4",
10351
- "lastModified": "2016-05-31",
10352
- "files": {
10353
- "regular": "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/vdWhGqsBUAP-FF3NOYTe4iMF4kXAPemmyaDpMXQ31P0.ttf",
10354
- "700": "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/HMO3ftxA9AU5floml9c755reFYaXZ4zuJXJ8fr8OO1g.ttf"
10355
- }
10356
- },
10357
- {
10358
- "kind": "webfonts#webfont",
10359
- "family": "Open Sans",
10360
- "category": "sans-serif",
10361
- "variants": [
10362
- "300",
10363
- "300italic",
10364
- "regular",
10365
- "italic",
10366
- "600",
10367
- "600italic",
10368
- "700",
10369
- "700italic",
10370
- "800",
10371
- "800italic"
10372
- ],
10373
- "subsets": [
10374
- "cyrillic-ext",
10375
- "latin-ext",
10376
- "cyrillic",
10377
- "greek",
10378
- "latin",
10379
- "greek-ext",
10380
- "vietnamese"
10381
- ],
10382
- "version": "v13",
10383
- "lastModified": "2016-10-05",
10384
- "files": {
10385
- "300": "http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTS3USBnSvpkopQaUR-2r7iU.ttf",
10386
- "300italic": "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxi9-WlPSxbfiI49GsXo3q0g.ttf",
10387
- "regular": "http://fonts.gstatic.com/s/opensans/v13/IgZJs4-7SA1XX_edsoXWog.ttf",
10388
- "italic": "http://fonts.gstatic.com/s/opensans/v13/O4NhV7_qs9r9seTo7fnsVKCWcynf_cDxXwCLxiixG1c.ttf",
10389
- "600": "http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSi3USBnSvpkopQaUR-2r7iU.ttf",
10390
- "600italic": "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxpZ7xm-Bj30Bj2KNdXDzSZg.ttf",
10391
- "700": "http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzC3USBnSvpkopQaUR-2r7iU.ttf",
10392
- "700italic": "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxne1Pd76Vl7zRpE7NLJQ7XU.ttf",
10393
- "800": "http://fonts.gstatic.com/s/opensans/v13/EInbV5DfGHOiMmvb1Xr-hi3USBnSvpkopQaUR-2r7iU.ttf",
10394
- "800italic": "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxg89PwPrYLaRFJ-HNCU9NbA.ttf"
10395
- }
10396
- },
10397
- {
10398
- "kind": "webfonts#webfont",
10399
- "family": "Open Sans Condensed",
10400
- "category": "sans-serif",
10401
- "variants": [
10402
- "300",
10403
- "300italic",
10404
- "700"
10405
- ],
10406
- "subsets": [
10407
- "cyrillic-ext",
10408
- "latin-ext",
10409
- "cyrillic",
10410
- "greek",
10411
- "latin",
10412
- "greek-ext",
10413
- "vietnamese"
10414
- ],
10415
- "version": "v10",
10416
- "lastModified": "2016-10-05",
10417
- "files": {
10418
- "300": "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xEMwSSh38KQVJx4ABtsZTnA.ttf",
10419
- "300italic": "http://fonts.gstatic.com/s/opensanscondensed/v10/jIXlqT1WKafUSwj6s9AzV4_LkTZ_uhAwfmGJ084hlvM.ttf",
10420
- "700": "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xBEM87DM3yorPOrvA-vB930.ttf"
10421
- }
10422
- },
10423
- {
10424
- "kind": "webfonts#webfont",
10425
- "family": "Oranienbaum",
10426
- "category": "serif",
10427
- "variants": [
10428
- "regular"
10429
- ],
10430
- "subsets": [
10431
- "cyrillic-ext",
10432
- "latin-ext",
10433
- "cyrillic",
10434
- "latin"
10435
- ],
10436
- "version": "v5",
10437
- "lastModified": "2016-05-31",
10438
- "files": {
10439
- "regular": "http://fonts.gstatic.com/s/oranienbaum/v5/M98jYwCSn0PaFhXXgviCoaCWcynf_cDxXwCLxiixG1c.ttf"
10440
- }
10441
- },
10442
- {
10443
- "kind": "webfonts#webfont",
10444
- "family": "Orbitron",
10445
- "category": "sans-serif",
10446
- "variants": [
10447
- "regular",
10448
- "500",
10449
- "700",
10450
- "900"
10451
- ],
10452
- "subsets": [
10453
- "latin"
10454
- ],
10455
- "version": "v7",
10456
- "lastModified": "2016-05-31",
10457
- "files": {
10458
- "regular": "http://fonts.gstatic.com/s/orbitron/v7/DY8swouAZjR3RaUPRf0HDQ.ttf",
10459
- "500": "http://fonts.gstatic.com/s/orbitron/v7/p-y_ffzMdo5JN_7ia0vYEqCWcynf_cDxXwCLxiixG1c.ttf",
10460
- "700": "http://fonts.gstatic.com/s/orbitron/v7/PS9_6SLkY1Y6OgPO3APr6qCWcynf_cDxXwCLxiixG1c.ttf",
10461
- "900": "http://fonts.gstatic.com/s/orbitron/v7/2I3-8i9hT294TE_pyjy9SaCWcynf_cDxXwCLxiixG1c.ttf"
10462
- }
10463
- },
10464
- {
10465
- "kind": "webfonts#webfont",
10466
- "family": "Oregano",
10467
- "category": "display",
10468
- "variants": [
10469
- "regular",
10470
- "italic"
10471
- ],
10472
- "subsets": [
10473
- "latin-ext",
10474
- "latin"
10475
- ],
10476
- "version": "v4",
10477
- "lastModified": "2016-05-31",
10478
- "files": {
10479
- "regular": "http://fonts.gstatic.com/s/oregano/v4/UiLhqNixVv2EpjRoBG6axA.ttf",
10480
- "italic": "http://fonts.gstatic.com/s/oregano/v4/_iwqGEht6XsAuEaCbYG64Q.ttf"
10481
- }
10482
- },
10483
- {
10484
- "kind": "webfonts#webfont",
10485
- "family": "Orienta",
10486
- "category": "sans-serif",
10487
- "variants": [
10488
- "regular"
10489
- ],
10490
- "subsets": [
10491
- "latin-ext",
10492
- "latin"
10493
- ],
10494
- "version": "v4",
10495
- "lastModified": "2016-05-31",
10496
- "files": {
10497
- "regular": "http://fonts.gstatic.com/s/orienta/v4/_NKSk93mMs0xsqtfjCsB3Q.ttf"
10498
- }
10499
- },
10500
- {
10501
- "kind": "webfonts#webfont",
10502
- "family": "Original Surfer",
10503
- "category": "display",
10504
- "variants": [
10505
- "regular"
10506
- ],
10507
- "subsets": [
10508
- "latin"
10509
- ],
10510
- "version": "v5",
10511
- "lastModified": "2016-05-31",
10512
- "files": {
10513
- "regular": "http://fonts.gstatic.com/s/originalsurfer/v5/gdHw6HpSIN4D6Xt7pi1-qIkEz33TDwAZczo_6fY7eg0.ttf"
10514
- }
10515
- },
10516
- {
10517
- "kind": "webfonts#webfont",
10518
- "family": "Oswald",
10519
- "category": "sans-serif",
10520
- "variants": [
10521
- "300",
10522
- "regular",
10523
- "700"
10524
- ],
10525
- "subsets": [
10526
- "latin-ext",
10527
- "latin"
10528
- ],
10529
- "version": "v11",
10530
- "lastModified": "2016-05-31",
10531
- "files": {
10532
- "300": "http://fonts.gstatic.com/s/oswald/v11/y3tZpCdiRD4oNRRYFcAR5Q.ttf",
10533
- "regular": "http://fonts.gstatic.com/s/oswald/v11/uLEd2g2vJglLPfsBF91DCg.ttf",
10534
- "700": "http://fonts.gstatic.com/s/oswald/v11/7wj8ldV_5Ti37rHa0m1DDw.ttf"
10535
- }
10536
- },
10537
- {
10538
- "kind": "webfonts#webfont",
10539
- "family": "Over the Rainbow",
10540
- "category": "handwriting",
10541
- "variants": [
10542
- "regular"
10543
- ],
10544
- "subsets": [
10545
- "latin"
10546
- ],
10547
- "version": "v7",
10548
- "lastModified": "2016-05-31",
10549
- "files": {
10550
- "regular": "http://fonts.gstatic.com/s/overtherainbow/v7/6gp-gkpI2kie2dHQQLM2jQBdxkZd83xOSx-PAQ2QmiI.ttf"
10551
- }
10552
- },
10553
- {
10554
- "kind": "webfonts#webfont",
10555
- "family": "Overlock",
10556
- "category": "display",
10557
- "variants": [
10558
- "regular",
10559
- "italic",
10560
- "700",
10561
- "700italic",
10562
- "900",
10563
- "900italic"
10564
- ],
10565
- "subsets": [
10566
- "latin-ext",
10567
- "latin"
10568
- ],
10569
- "version": "v5",
10570
- "lastModified": "2016-05-31",
10571
- "files": {
10572
- "regular": "http://fonts.gstatic.com/s/overlock/v5/Z8oYsGi88-E1cUB8YBFMAg.ttf",
10573
- "italic": "http://fonts.gstatic.com/s/overlock/v5/rq6EacukHROOBrFrK_zF6_esZW2xOQ-xsNqO47m55DA.ttf",
10574
- "700": "http://fonts.gstatic.com/s/overlock/v5/Fexr8SqXM8Bm_gEVUA7AKaCWcynf_cDxXwCLxiixG1c.ttf",
10575
- "700italic": "http://fonts.gstatic.com/s/overlock/v5/wFWnYgeXKYBks6gEUwYnfAJKKGfqHaYFsRG-T3ceEVo.ttf",
10576
- "900": "http://fonts.gstatic.com/s/overlock/v5/YPJCVTT8ZbG3899l_-KIGqCWcynf_cDxXwCLxiixG1c.ttf",
10577
- "900italic": "http://fonts.gstatic.com/s/overlock/v5/iOZhxT2zlg7W5ij_lb-oDp0EAVxt0G0biEntp43Qt6E.ttf"
10578
- }
10579
- },
10580
- {
10581
- "kind": "webfonts#webfont",
10582
- "family": "Overlock SC",
10583
- "category": "display",
10584
- "variants": [
10585
- "regular"
10586
- ],
10587
- "subsets": [
10588
- "latin-ext",
10589
- "latin"
10590
- ],
10591
- "version": "v5",
10592
- "lastModified": "2016-05-31",
10593
- "files": {
10594
- "regular": "http://fonts.gstatic.com/s/overlocksc/v5/8D7HYDsvS_g1GhBnlHzgzaCWcynf_cDxXwCLxiixG1c.ttf"
10595
- }
10596
- },
10597
- {
10598
- "kind": "webfonts#webfont",
10599
- "family": "Ovo",
10600
- "category": "serif",
10601
- "variants": [
10602
- "regular"
10603
- ],
10604
- "subsets": [
10605
- "latin"
10606
- ],
10607
- "version": "v7",
10608
- "lastModified": "2016-06-07",
10609
- "files": {
10610
- "regular": "http://fonts.gstatic.com/s/ovo/v7/mFg27dimu3s9t09qjCwB1g.ttf"
10611
- }
10612
- },
10613
- {
10614
- "kind": "webfonts#webfont",
10615
- "family": "Oxygen",
10616
- "category": "sans-serif",
10617
- "variants": [
10618
- "300",
10619
- "regular",
10620
- "700"
10621
- ],
10622
- "subsets": [
10623
- "latin-ext",
10624
- "latin"
10625
- ],
10626
- "version": "v5",
10627
- "lastModified": "2016-06-07",
10628
- "files": {
10629
- "300": "http://fonts.gstatic.com/s/oxygen/v5/lZ31r0bR1Bzt_DfGZu1S8A.ttf",
10630
- "regular": "http://fonts.gstatic.com/s/oxygen/v5/uhoyAE7XlQL22abzQieHjw.ttf",
10631
- "700": "http://fonts.gstatic.com/s/oxygen/v5/yLqkmDwuNtt5pSqsJmhyrg.ttf"
10632
- }
10633
- },
10634
- {
10635
- "kind": "webfonts#webfont",
10636
- "family": "Oxygen Mono",
10637
- "category": "monospace",
10638
- "variants": [
10639
- "regular"
10640
- ],
10641
- "subsets": [
10642
- "latin-ext",
10643
- "latin"
10644
- ],
10645
- "version": "v4",
10646
- "lastModified": "2016-05-31",
10647
- "files": {
10648
- "regular": "http://fonts.gstatic.com/s/oxygenmono/v4/DigTu7k4b7OmM8ubt1Qza6CWcynf_cDxXwCLxiixG1c.ttf"
10649
- }
10650
- },
10651
- {
10652
- "kind": "webfonts#webfont",
10653
- "family": "PT Mono",
10654
- "category": "monospace",
10655
- "variants": [
10656
- "regular"
10657
- ],
10658
- "subsets": [
10659
- "cyrillic-ext",
10660
- "latin-ext",
10661
- "cyrillic",
10662
- "latin"
10663
- ],
10664
- "version": "v4",
10665
- "lastModified": "2016-05-31",
10666
- "files": {
10667
- "regular": "http://fonts.gstatic.com/s/ptmono/v4/QUbM8H9yJK5NhpQ0REO6Wg.ttf"
10668
- }
10669
- },
10670
- {
10671
- "kind": "webfonts#webfont",
10672
- "family": "PT Sans",
10673
- "category": "sans-serif",
10674
- "variants": [
10675
- "regular",
10676
- "italic",
10677
- "700",
10678
- "700italic"
10679
- ],
10680
- "subsets": [
10681
- "cyrillic-ext",
10682
- "latin-ext",
10683
- "cyrillic",
10684
- "latin"
10685
- ],
10686
- "version": "v8",
10687
- "lastModified": "2016-05-31",
10688
- "files": {
10689
- "regular": "http://fonts.gstatic.com/s/ptsans/v8/UFoEz2uiuMypUGZL1NKoeg.ttf",
10690
- "italic": "http://fonts.gstatic.com/s/ptsans/v8/yls9EYWOd496wiu7qzfgNg.ttf",
10691
- "700": "http://fonts.gstatic.com/s/ptsans/v8/F51BEgHuR0tYHxF0bD4vwvesZW2xOQ-xsNqO47m55DA.ttf",
10692
- "700italic": "http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkC3USBnSvpkopQaUR-2r7iU.ttf"
10693
- }
10694
- },
10695
- {
10696
- "kind": "webfonts#webfont",
10697
- "family": "PT Sans Caption",
10698
- "category": "sans-serif",
10699
- "variants": [
10700
- "regular",
10701
- "700"
10702
- ],
10703
- "subsets": [
10704
- "cyrillic-ext",
10705
- "latin-ext",
10706
- "cyrillic",
10707
- "latin"
10708
- ],
10709
- "version": "v9",
10710
- "lastModified": "2016-05-31",
10711
- "files": {
10712
- "regular": "http://fonts.gstatic.com/s/ptsanscaption/v9/OXYTDOzBcXU8MTNBvBHeSW8by34Z3mUMtM-o4y-SHCY.ttf",
10713
- "700": "http://fonts.gstatic.com/s/ptsanscaption/v9/Q-gJrFokeE7JydPpxASt25tc0eyfI4QDEsobEEpk_hA.ttf"
10714
- }
10715
- },
10716
- {
10717
- "kind": "webfonts#webfont",
10718
- "family": "PT Sans Narrow",
10719
- "category": "sans-serif",
10720
- "variants": [
10721
- "regular",
10722
- "700"
10723
- ],
10724
- "subsets": [
10725
- "cyrillic-ext",
10726
- "latin-ext",
10727
- "cyrillic",
10728
- "latin"
10729
- ],
10730
- "version": "v7",
10731
- "lastModified": "2016-05-31",
10732
- "files": {
10733
- "regular": "http://fonts.gstatic.com/s/ptsansnarrow/v7/UyYrYy3ltEffJV9QueSi4ZTvAuddT2xDMbdz0mdLyZY.ttf",
10734
- "700": "http://fonts.gstatic.com/s/ptsansnarrow/v7/Q_pTky3Sc3ubRibGToTAYsLtdzs3iyjn_YuT226ZsLU.ttf"
10735
- }
10736
- },
10737
- {
10738
- "kind": "webfonts#webfont",
10739
- "family": "PT Serif",
10740
- "category": "serif",
10741
- "variants": [
10742
- "regular",
10743
- "italic",
10744
- "700",
10745
- "700italic"
10746
- ],
10747
- "subsets": [
10748
- "cyrillic-ext",
10749
- "latin-ext",
10750
- "cyrillic",
10751
- "latin"
10752
- ],
10753
- "version": "v8",
10754
- "lastModified": "2016-05-31",
10755
- "files": {
10756
- "regular": "http://fonts.gstatic.com/s/ptserif/v8/sAo427rn3-QL9sWCbMZXhA.ttf",
10757
- "italic": "http://fonts.gstatic.com/s/ptserif/v8/9khWhKzhpkH0OkNnBKS3n_esZW2xOQ-xsNqO47m55DA.ttf",
10758
- "700": "http://fonts.gstatic.com/s/ptserif/v8/kyZw18tqQ5if-_wpmxxOeKCWcynf_cDxXwCLxiixG1c.ttf",
10759
- "700italic": "http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9QJKKGfqHaYFsRG-T3ceEVo.ttf"
10760
- }
10761
- },
10762
- {
10763
- "kind": "webfonts#webfont",
10764
- "family": "PT Serif Caption",
10765
- "category": "serif",
10766
- "variants": [
10767
- "regular",
10768
- "italic"
10769
- ],
10770
- "subsets": [
10771
- "cyrillic-ext",
10772
- "latin-ext",
10773
- "cyrillic",
10774
- "latin"
10775
- ],
10776
- "version": "v8",
10777
- "lastModified": "2016-05-31",
10778
- "files": {
10779
- "regular": "http://fonts.gstatic.com/s/ptserifcaption/v8/7xkFOeTxxO1GMC1suOUYWVsRioCqs5fohhaYel24W3k.ttf",
10780
- "italic": "http://fonts.gstatic.com/s/ptserifcaption/v8/0kfPsmrmTSgiec7u_Wa0DB1mqvzPHelJwRcF_s_EUM0.ttf"
10781
- }
10782
- },
10783
- {
10784
- "kind": "webfonts#webfont",
10785
- "family": "Pacifico",
10786
- "category": "handwriting",
10787
- "variants": [
10788
- "regular"
10789
- ],
10790
- "subsets": [
10791
- "latin"
10792
- ],
10793
- "version": "v7",
10794
- "lastModified": "2016-05-31",
10795
- "files": {
10796
- "regular": "http://fonts.gstatic.com/s/pacifico/v7/GIrpeRY1r5CzbfL8r182lw.ttf"
10797
- }
10798
- },
10799
- {
10800
- "kind": "webfonts#webfont",
10801
- "family": "Palanquin",
10802
- "category": "sans-serif",
10803
- "variants": [
10804
- "100",
10805
- "200",
10806
- "300",
10807
- "regular",
10808
- "500",
10809
- "600",
10810
- "700"
10811
- ],
10812
- "subsets": [
10813
- "latin-ext",
10814
- "devanagari",
10815
- "latin"
10816
- ],
10817
- "version": "v1",
10818
- "lastModified": "2016-05-31",
10819
- "files": {
10820
- "100": "http://fonts.gstatic.com/s/palanquin/v1/Hu0eGDVGK_g4saUFu6AK3KCWcynf_cDxXwCLxiixG1c.ttf",
10821
- "200": "http://fonts.gstatic.com/s/palanquin/v1/pqXYXD7-VI5ezTjeqQOcyC3USBnSvpkopQaUR-2r7iU.ttf",
10822
- "300": "http://fonts.gstatic.com/s/palanquin/v1/c0-J5OCAagpFCKkKraz-Ey3USBnSvpkopQaUR-2r7iU.ttf",
10823
- "regular": "http://fonts.gstatic.com/s/palanquin/v1/xCwBUoAEV0kzCDwerAZ0Aw.ttf",
10824
- "500": "http://fonts.gstatic.com/s/palanquin/v1/wLvvkEcZMKy95afLWh2EfC3USBnSvpkopQaUR-2r7iU.ttf",
10825
- "600": "http://fonts.gstatic.com/s/palanquin/v1/405UIAv95_yZkCECrH6y-i3USBnSvpkopQaUR-2r7iU.ttf",
10826
- "700": "http://fonts.gstatic.com/s/palanquin/v1/-UtkePo3NFvxEN3rGCtTvi3USBnSvpkopQaUR-2r7iU.ttf"
10827
- }
10828
- },
10829
- {
10830
- "kind": "webfonts#webfont",
10831
- "family": "Palanquin Dark",
10832
- "category": "sans-serif",
10833
- "variants": [
10834
- "regular",
10835
- "500",
10836
- "600",
10837
- "700"
10838
- ],
10839
- "subsets": [
10840
- "latin-ext",
10841
- "devanagari",
10842
- "latin"
10843
- ],
10844
- "version": "v1",
10845
- "lastModified": "2016-05-31",
10846
- "files": {
10847
- "regular": "http://fonts.gstatic.com/s/palanquindark/v1/PamTqrrgbBh_M3702w39rOfChn3JSg5yz_Q_xmrKQN0.ttf",
10848
- "500": "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-maMZTo-EwKMRQt3RWHocLi0.ttf",
10849
- "600": "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-mVNxaunw8i4Gywrk2SigRnk.ttf",
10850
- "700": "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-mWToair6W0TEE44XrlfKbiM.ttf"
10851
- }
10852
- },
10853
- {
10854
- "kind": "webfonts#webfont",
10855
- "family": "Paprika",
10856
- "category": "display",
10857
- "variants": [
10858
- "regular"
10859
- ],
10860
- "subsets": [
10861
- "latin"
10862
- ],
10863
- "version": "v4",
10864
- "lastModified": "2016-05-31",
10865
- "files": {
10866
- "regular": "http://fonts.gstatic.com/s/paprika/v4/b-VpyoRSieBdB5BPJVF8HQ.ttf"
10867
- }
10868
- },
10869
- {
10870
- "kind": "webfonts#webfont",
10871
- "family": "Parisienne",
10872
- "category": "handwriting",
10873
- "variants": [
10874
- "regular"
10875
- ],
10876
- "subsets": [
10877
- "latin-ext",
10878
- "latin"
10879
- ],
10880
- "version": "v4",
10881
- "lastModified": "2016-05-31",
10882
- "files": {
10883
- "regular": "http://fonts.gstatic.com/s/parisienne/v4/TW74B5QISJNx9moxGlmJfvesZW2xOQ-xsNqO47m55DA.ttf"
10884
- }
10885
- },
10886
- {
10887
- "kind": "webfonts#webfont",
10888
- "family": "Passero One",
10889
- "category": "display",
10890
- "variants": [
10891
- "regular"
10892
- ],
10893
- "subsets": [
10894
- "latin-ext",
10895
- "latin"
10896
- ],
10897
- "version": "v8",
10898
- "lastModified": "2016-06-07",
10899
- "files": {
10900
- "regular": "http://fonts.gstatic.com/s/passeroone/v8/Yc-7nH5deCCv9Ed0MMnAQqCWcynf_cDxXwCLxiixG1c.ttf"
10901
- }
10902
- },
10903
- {
10904
- "kind": "webfonts#webfont",
10905
- "family": "Passion One",
10906
- "category": "display",
10907
- "variants": [
10908
- "regular",
10909
- "700",
10910
- "900"
10911
- ],
10912
- "subsets": [
10913
- "latin-ext",
10914
- "latin"
10915
- ],
10916
- "version": "v6",
10917
- "lastModified": "2016-05-31",
10918
- "files": {
10919
- "regular": "http://fonts.gstatic.com/s/passionone/v6/1UIK1tg3bKJ4J3o35M4heqCWcynf_cDxXwCLxiixG1c.ttf",
10920
- "700": "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ne1Pd76Vl7zRpE7NLJQ7XU.ttf",
10921
- "900": "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ienaqEuufTBk9XMKnKmgDA.ttf"
10922
- }
10923
- },
10924
- {
10925
- "kind": "webfonts#webfont",
10926
- "family": "Pathway Gothic One",
10927
- "category": "sans-serif",
10928
- "variants": [
10929
- "regular"
10930
- ],
10931
- "subsets": [
10932
- "latin-ext",
10933
- "latin"
10934
- ],
10935
- "version": "v4",
10936
- "lastModified": "2016-05-31",
10937
- "files": {
10938
- "regular": "http://fonts.gstatic.com/s/pathwaygothicone/v4/Lqv9ztoTUV8Q0FmQZzPqaA6A6xIYD7vYcYDop1i-K-c.ttf"
10939
- }
10940
- },
10941
- {
10942
- "kind": "webfonts#webfont",
10943
- "family": "Patrick Hand",
10944
- "category": "handwriting",
10945
- "variants": [
10946
- "regular"
10947
- ],
10948
- "subsets": [
10949
- "latin-ext",
10950
- "latin",
10951
- "vietnamese"
10952
- ],
10953
- "version": "v10",
10954
- "lastModified": "2016-05-31",
10955
- "files": {
10956
- "regular": "http://fonts.gstatic.com/s/patrickhand/v10/9BG3JJgt_HlF3NpEUehL0C3USBnSvpkopQaUR-2r7iU.ttf"
10957
- }
10958
- },
10959
- {
10960
- "kind": "webfonts#webfont",
10961
- "family": "Patrick Hand SC",
10962
- "category": "handwriting",
10963
- "variants": [
10964
- "regular"
10965
- ],
10966
- "subsets": [
10967
- "latin-ext",
10968
- "latin",
10969
- "vietnamese"
10970
- ],
10971
- "version": "v4",
10972
- "lastModified": "2016-05-31",
10973
- "files": {
10974
- "regular": "http://fonts.gstatic.com/s/patrickhandsc/v4/OYFWCgfCR-7uHIovjUZXsbAgSRh1LpJXlLfl8IbsmHg.ttf"
10975
- }
10976
- },
10977
- {
10978
- "kind": "webfonts#webfont",
10979
- "family": "Pattaya",
10980
- "category": "sans-serif",
10981
- "variants": [
10982
- "regular"
10983
- ],
10984
- "subsets": [
10985
- "latin-ext",
10986
- "thai",
10987
- "cyrillic",
10988
- "latin",
10989
- "vietnamese"
10990
- ],
10991
- "version": "v1",
10992
- "lastModified": "2016-06-20",
10993
- "files": {
10994
- "regular": "http://fonts.gstatic.com/s/pattaya/v1/sJEout1xdD7J8H-1H81pIQ.ttf"
10995
- }
10996
- },
10997
- {
10998
- "kind": "webfonts#webfont",
10999
- "family": "Patua One",
11000
- "category": "display",
11001
- "variants": [
11002
- "regular"
11003
- ],
11004
- "subsets": [
11005
- "latin"
11006
- ],
11007
- "version": "v6",
11008
- "lastModified": "2016-05-31",
11009
- "files": {
11010
- "regular": "http://fonts.gstatic.com/s/patuaone/v6/njZwotTYjswR4qdhsW-kJw.ttf"
11011
- }
11012
- },
11013
- {
11014
- "kind": "webfonts#webfont",
11015
- "family": "Pavanam",
11016
- "category": "sans-serif",
11017
- "variants": [
11018
- "regular"
11019
- ],
11020
- "subsets": [
11021
- "latin-ext",
11022
- "tamil",
11023
- "latin"
11024
- ],
11025
- "version": "v1",
11026
- "lastModified": "2016-06-20",
11027
- "files": {
11028
- "regular": "http://fonts.gstatic.com/s/pavanam/v1/C7yuEhNK5oftNLSL3I0bGw.ttf"
11029
- }
11030
- },
11031
- {
11032
- "kind": "webfonts#webfont",
11033
- "family": "Paytone One",
11034
- "category": "sans-serif",
11035
- "variants": [
11036
- "regular"
11037
- ],
11038
- "subsets": [
11039
- "latin"
11040
- ],
11041
- "version": "v8",
11042
- "lastModified": "2016-05-31",
11043
- "files": {
11044
- "regular": "http://fonts.gstatic.com/s/paytoneone/v8/3WCxC7JAJjQHQVoIE0ZwvqCWcynf_cDxXwCLxiixG1c.ttf"
11045
- }
11046
- },
11047
- {
11048
- "kind": "webfonts#webfont",
11049
- "family": "Peddana",
11050
- "category": "serif",
11051
- "variants": [
11052
- "regular"
11053
- ],
11054
- "subsets": [
11055
- "latin",
11056
- "telugu"
11057
- ],
11058
- "version": "v4",
11059
- "lastModified": "2016-05-31",
11060
- "files": {
11061
- "regular": "http://fonts.gstatic.com/s/peddana/v4/zaSZuj_GhmC8AOTugOROnA.ttf"
11062
- }
11063
- },
11064
- {
11065
- "kind": "webfonts#webfont",
11066
- "family": "Peralta",
11067
- "category": "display",
11068
- "variants": [
11069
- "regular"
11070
- ],
11071
- "subsets": [
11072
- "latin-ext",
11073
- "latin"
11074
- ],
11075
- "version": "v4",
11076
- "lastModified": "2016-05-31",
11077
- "files": {
11078
- "regular": "http://fonts.gstatic.com/s/peralta/v4/cTJX5KEuc0GKRU9NXSm-8Q.ttf"
11079
- }
11080
- },
11081
- {
11082
- "kind": "webfonts#webfont",
11083
- "family": "Permanent Marker",
11084
- "category": "handwriting",
11085
- "variants": [
11086
- "regular"
11087
- ],
11088
- "subsets": [
11089
- "latin"
11090
- ],
11091
- "version": "v5",
11092
- "lastModified": "2016-10-05",
11093
- "files": {
11094
- "regular": "http://fonts.gstatic.com/s/permanentmarker/v5/9vYsg5VgPHKK8SXYbf3sMol14xj5tdg9OHF8w4E7StQ.ttf"
11095
- }
11096
- },
11097
- {
11098
- "kind": "webfonts#webfont",
11099
- "family": "Petit Formal Script",
11100
- "category": "handwriting",
11101
- "variants": [
11102
- "regular"
11103
- ],
11104
- "subsets": [
11105
- "latin-ext",
11106
- "latin"
11107
- ],
11108
- "version": "v4",
11109
- "lastModified": "2016-05-31",
11110
- "files": {
11111
- "regular": "http://fonts.gstatic.com/s/petitformalscript/v4/OEZwr2-ovBsq2n3ACCKoEvVPl2Gjtxj0D6F7QLy1VQc.ttf"
11112
- }
11113
- },
11114
- {
11115
- "kind": "webfonts#webfont",
11116
- "family": "Petrona",
11117
- "category": "serif",
11118
- "variants": [
11119
- "regular"
11120
- ],
11121
- "subsets": [
11122
- "latin"
11123
- ],
11124
- "version": "v5",
11125
- "lastModified": "2016-05-31",
11126
- "files": {
11127
- "regular": "http://fonts.gstatic.com/s/petrona/v5/nnQwxlP6dhrGovYEFtemTg.ttf"
11128
- }
11129
- },
11130
- {
11131
- "kind": "webfonts#webfont",
11132
- "family": "Philosopher",
11133
- "category": "sans-serif",
11134
- "variants": [
11135
- "regular",
11136
- "italic",
11137
- "700",
11138
- "700italic"
11139
- ],
11140
- "subsets": [
11141
- "cyrillic",
11142
- "latin"
11143
- ],
11144
- "version": "v7",
11145
- "lastModified": "2016-05-31",
11146
- "files": {
11147
- "regular": "http://fonts.gstatic.com/s/philosopher/v7/oZLTrB9jmJsyV0u_T0TKEaCWcynf_cDxXwCLxiixG1c.ttf",
11148
- "italic": "http://fonts.gstatic.com/s/philosopher/v7/_9Hnc_gz9k7Qq6uKaeHKmUeOrDcLawS7-ssYqLr2Xp4.ttf",
11149
- "700": "http://fonts.gstatic.com/s/philosopher/v7/napvkewXG9Gqby5vwGHICHe1Pd76Vl7zRpE7NLJQ7XU.ttf",
11150
- "700italic": "http://fonts.gstatic.com/s/philosopher/v7/PuKlryTcvTj7-qZWfLCFIM_zJjSACmk0BRPxQqhnNLU.ttf"
11151
- }
11152
- },
11153
- {
11154
- "kind": "webfonts#webfont",
11155
- "family": "Piedra",
11156
- "category": "display",
11157
- "variants": [
11158
- "regular"
11159
- ],
11160
- "subsets": [
11161
- "latin-ext",
11162
- "latin"
11163
- ],
11164
- "version": "v5",
11165
- "lastModified": "2016-05-31",
11166
- "files": {
11167
- "regular": "http://fonts.gstatic.com/s/piedra/v5/owf-AvEEyAj9LJ2tVZ_3Mw.ttf"
11168
- }
11169
- },
11170
- {
11171
- "kind": "webfonts#webfont",
11172
- "family": "Pinyon Script",
11173
- "category": "handwriting",
11174
- "variants": [
11175
- "regular"
11176
- ],
11177
- "subsets": [
11178
- "latin"
11179
- ],
11180
- "version": "v6",
11181
- "lastModified": "2016-06-07",
11182
- "files": {
11183
- "regular": "http://fonts.gstatic.com/s/pinyonscript/v6/TzghnhfCn7TuE73f-CBQ0CeUSrabuTpOsMEiRLtKwk0.ttf"
11184
- }
11185
- },
11186
- {
11187
- "kind": "webfonts#webfont",
11188
- "family": "Pirata One",
11189
- "category": "display",
11190
- "variants": [
11191
- "regular"
11192
- ],
11193
- "subsets": [
11194
- "latin-ext",
11195
- "latin"
11196
- ],
11197
- "version": "v4",
11198
- "lastModified": "2016-05-31",
11199
- "files": {
11200
- "regular": "http://fonts.gstatic.com/s/pirataone/v4/WnbD86B4vB2ckYcL7oxuhvesZW2xOQ-xsNqO47m55DA.ttf"
11201
- }
11202
- },
11203
- {
11204
- "kind": "webfonts#webfont",
11205
- "family": "Plaster",
11206
- "category": "display",
11207
- "variants": [
11208
- "regular"
11209
- ],
11210
- "subsets": [
11211
- "latin-ext",
11212
- "latin"
11213
- ],
11214
- "version": "v8",
11215
- "lastModified": "2016-06-07",
11216
- "files": {
11217
- "regular": "http://fonts.gstatic.com/s/plaster/v8/O4QG9Z5116CXyfJdR9zxLw.ttf"
11218
- }
11219
- },
11220
- {
11221
- "kind": "webfonts#webfont",
11222
- "family": "Play",
11223
- "category": "sans-serif",
11224
- "variants": [
11225
- "regular",
11226
- "700"
11227
- ],
11228
- "subsets": [
11229
- "cyrillic-ext",
11230
- "latin-ext",
11231
- "cyrillic",
11232
- "greek",
11233
- "latin"
11234
- ],
11235
- "version": "v7",
11236
- "lastModified": "2016-05-31",
11237
- "files": {
11238
- "regular": "http://fonts.gstatic.com/s/play/v7/GWvfObW8LhtsOX333MCpBg.ttf",
11239
- "700": "http://fonts.gstatic.com/s/play/v7/crPhg6I0alLI-MpB3vW-zw.ttf"
11240
- }
11241
- },
11242
- {
11243
- "kind": "webfonts#webfont",
11244
- "family": "Playball",
11245
- "category": "display",
11246
- "variants": [
11247
- "regular"
11248
- ],
11249
- "subsets": [
11250
- "latin-ext",
11251
- "latin"
11252
- ],
11253
- "version": "v6",
11254
- "lastModified": "2016-05-31",
11255
- "files": {
11256
- "regular": "http://fonts.gstatic.com/s/playball/v6/3hOFiQm_EUzycTpcN9uz4w.ttf"
11257
- }
11258
- },
11259
- {
11260
- "kind": "webfonts#webfont",
11261
- "family": "Playfair Display",
11262
- "category": "serif",
11263
- "variants": [
11264
- "regular",
11265
- "italic",
11266
- "700",
11267
- "700italic",
11268
- "900",
11269
- "900italic"
11270
- ],
11271
- "subsets": [
11272
- "latin-ext",
11273
- "cyrillic",
11274
- "latin"
11275
- ],
11276
- "version": "v10",
11277
- "lastModified": "2016-06-07",
11278
- "files": {
11279
- "regular": "http://fonts.gstatic.com/s/playfairdisplay/v10/2NBgzUtEeyB-Xtpr9bm1CV6uyC_qD11hrFQ6EGgTJWI.ttf",
11280
- "italic": "http://fonts.gstatic.com/s/playfairdisplay/v10/9MkijrV-dEJ0-_NWV7E6NzMsbnvDNEBX25F5HWk9AhI.ttf",
11281
- "700": "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgICsv6SrURqJprbhH_C1Mw8w.ttf",
11282
- "700italic": "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDECsYW3XoOVcYyYdp9NzzS9E.ttf",
11283
- "900": "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgIKqwMe2wjvZrAR44M0BJZ48.ttf",
11284
- "900italic": "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDEC0JfJ4xmm7j1kL6D7mPxrA.ttf"
11285
- }
11286
- },
11287
- {
11288
- "kind": "webfonts#webfont",
11289
- "family": "Playfair Display SC",
11290
- "category": "serif",
11291
- "variants": [
11292
- "regular",
11293
- "italic",
11294
- "700",
11295
- "700italic",
11296
- "900",
11297
- "900italic"
11298
- ],
11299
- "subsets": [
11300
- "latin-ext",
11301
- "cyrillic",
11302
- "latin"
11303
- ],
11304
- "version": "v5",
11305
- "lastModified": "2016-06-07",
11306
- "files": {
11307
- "regular": "http://fonts.gstatic.com/s/playfairdisplaysc/v5/G0-tvBxd4eQRdwFKB8dRkcpjYTDWIvcAwAccqeW9uNM.ttf",
11308
- "italic": "http://fonts.gstatic.com/s/playfairdisplaysc/v5/myuYiFR-4NTrUT4w6TKls2klJsJYggW8rlNoTOTuau0.ttf",
11309
- "700": "http://fonts.gstatic.com/s/playfairdisplaysc/v5/5ggqGkvWJU_TtW2W8cEubA-Amcyomnuy4WsCiPxGHjw.ttf",
11310
- "700italic": "http://fonts.gstatic.com/s/playfairdisplaysc/v5/6X0OQrQhEEnPo56RalREX4krgPi80XvBcbTwmz-rgmU.ttf",
11311
- "900": "http://fonts.gstatic.com/s/playfairdisplaysc/v5/5ggqGkvWJU_TtW2W8cEubKXL3C32k275YmX_AcBPZ7w.ttf",
11312
- "900italic": "http://fonts.gstatic.com/s/playfairdisplaysc/v5/6X0OQrQhEEnPo56RalREX8Zag2q3ssKz8uH1RU4a9gs.ttf"
11313
- }
11314
- },
11315
- {
11316
- "kind": "webfonts#webfont",
11317
- "family": "Podkova",
11318
- "category": "serif",
11319
- "variants": [
11320
- "regular",
11321
- "700"
11322
- ],
11323
- "subsets": [
11324
- "latin"
11325
- ],
11326
- "version": "v8",
11327
- "lastModified": "2016-05-31",
11328
- "files": {
11329
- "regular": "http://fonts.gstatic.com/s/podkova/v8/eylljyGVfB8ZUQjYY3WZRQ.ttf",
11330
- "700": "http://fonts.gstatic.com/s/podkova/v8/SqW4aa8m_KVrOgYSydQ33vesZW2xOQ-xsNqO47m55DA.ttf"
11331
- }
11332
- },
11333
- {
11334
- "kind": "webfonts#webfont",
11335
- "family": "Poiret One",
11336
- "category": "display",
11337
- "variants": [
11338
- "regular"
11339
- ],
11340
- "subsets": [
11341
- "latin-ext",
11342
- "cyrillic",
11343
- "latin"
11344
- ],
11345
- "version": "v4",
11346
- "lastModified": "2016-05-31",
11347
- "files": {
11348
- "regular": "http://fonts.gstatic.com/s/poiretone/v4/dWcYed048E5gHGDIt8i1CPesZW2xOQ-xsNqO47m55DA.ttf"
11349
- }
11350
- },
11351
- {
11352
- "kind": "webfonts#webfont",
11353
- "family": "Poller One",
11354
- "category": "display",
11355
- "variants": [
11356
- "regular"
11357
- ],
11358
- "subsets": [
11359
- "latin"
11360
- ],
11361
- "version": "v6",
11362
- "lastModified": "2016-06-07",
11363
- "files": {
11364
- "regular": "http://fonts.gstatic.com/s/pollerone/v6/dkctmDlTPcZ6boC8662RA_esZW2xOQ-xsNqO47m55DA.ttf"
11365
- }
11366
- },
11367
- {
11368
- "kind": "webfonts#webfont",
11369
- "family": "Poly",
11370
- "category": "serif",
11371
- "variants": [
11372
- "regular",
11373
- "italic"
11374
- ],
11375
- "subsets": [
11376
- "latin"
11377
- ],
11378
- "version": "v7",
11379
- "lastModified": "2016-05-31",
11380
- "files": {
11381
- "regular": "http://fonts.gstatic.com/s/poly/v7/bcMAuiacS2qkd54BcwW6_Q.ttf",
11382
- "italic": "http://fonts.gstatic.com/s/poly/v7/Zkx-eIlZSjKUrPGYhV5PeA.ttf"
11383
- }
11384
- },
11385
- {
11386
- "kind": "webfonts#webfont",
11387
- "family": "Pompiere",
11388
- "category": "display",
11389
- "variants": [
11390
- "regular"
11391
- ],
11392
- "subsets": [
11393
- "latin"
11394
- ],
11395
- "version": "v6",
11396
- "lastModified": "2016-06-07",
11397
- "files": {
11398
- "regular": "http://fonts.gstatic.com/s/pompiere/v6/o_va2p9CD5JfmFohAkGZIA.ttf"
11399
- }
11400
- },
11401
- {
11402
- "kind": "webfonts#webfont",
11403
- "family": "Pontano Sans",
11404
- "category": "sans-serif",
11405
- "variants": [
11406
- "regular"
11407
- ],
11408
- "subsets": [
11409
- "latin-ext",
11410
- "latin"
11411
- ],
11412
- "version": "v4",
11413
- "lastModified": "2016-05-31",
11414
- "files": {
11415
- "regular": "http://fonts.gstatic.com/s/pontanosans/v4/gTHiwyxi6S7iiHpqAoiE3C3USBnSvpkopQaUR-2r7iU.ttf"
11416
- }
11417
- },
11418
- {
11419
- "kind": "webfonts#webfont",
11420
- "family": "Poppins",
11421
- "category": "sans-serif",
11422
- "variants": [
11423
- "300",
11424
- "regular",
11425
- "500",
11426
- "600",
11427
- "700"
11428
- ],
11429
- "subsets": [
11430
- "latin-ext",
11431
- "devanagari",
11432
- "latin"
11433
- ],
11434
- "version": "v1",
11435
- "lastModified": "2016-06-07",
11436
- "files": {
11437
- "300": "http://fonts.gstatic.com/s/poppins/v1/VIeViZ2fPtYBt3B2fQZplvesZW2xOQ-xsNqO47m55DA.ttf",
11438
- "regular": "http://fonts.gstatic.com/s/poppins/v1/hlvAxH6aIdOjWlLzgm0jqg.ttf",
11439
- "500": "http://fonts.gstatic.com/s/poppins/v1/4WGKlFyjcmCFVl8pRsgZ9vesZW2xOQ-xsNqO47m55DA.ttf",
11440
- "600": "http://fonts.gstatic.com/s/poppins/v1/-zOABrCWORC3lyDh-ajNnPesZW2xOQ-xsNqO47m55DA.ttf",
11441
- "700": "http://fonts.gstatic.com/s/poppins/v1/8JitanEsk5aDh7mDYs-fYfesZW2xOQ-xsNqO47m55DA.ttf"
11442
- }
11443
- },
11444
- {
11445
- "kind": "webfonts#webfont",
11446
- "family": "Port Lligat Sans",
11447
- "category": "sans-serif",
11448
- "variants": [
11449
- "regular"
11450
- ],
11451
- "subsets": [
11452
- "latin"
11453
- ],
11454
- "version": "v5",
11455
- "lastModified": "2016-05-31",
11456
- "files": {
11457
- "regular": "http://fonts.gstatic.com/s/portlligatsans/v5/CUEdhRk7oC7up0p6t0g4P6mASEpx5X0ZpsuJOuvfOGA.ttf"
11458
- }
11459
- },
11460
- {
11461
- "kind": "webfonts#webfont",
11462
- "family": "Port Lligat Slab",
11463
- "category": "serif",
11464
- "variants": [
11465
- "regular"
11466
- ],
11467
- "subsets": [
11468
- "latin"
11469
- ],
11470
- "version": "v5",
11471
- "lastModified": "2016-05-31",
11472
- "files": {
11473
- "regular": "http://fonts.gstatic.com/s/portlligatslab/v5/CUEdhRk7oC7up0p6t0g4PxLSPACXvawUYCBEnHsOe30.ttf"
11474
- }
11475
- },
11476
- {
11477
- "kind": "webfonts#webfont",
11478
- "family": "Pragati Narrow",
11479
- "category": "sans-serif",
11480
- "variants": [
11481
- "regular",
11482
- "700"
11483
- ],
11484
- "subsets": [
11485
- "latin-ext",
11486
- "devanagari",
11487
- "latin"
11488
- ],
11489
- "version": "v2",
11490
- "lastModified": "2016-05-31",
11491
- "files": {
11492
- "regular": "http://fonts.gstatic.com/s/pragatinarrow/v2/HzG2TfC862qPNsZsV_djPpTvAuddT2xDMbdz0mdLyZY.ttf",
11493
- "700": "http://fonts.gstatic.com/s/pragatinarrow/v2/DnSI1zRkc0CY-hI5SC3q3MLtdzs3iyjn_YuT226ZsLU.ttf"
11494
- }
11495
- },
11496
- {
11497
- "kind": "webfonts#webfont",
11498
- "family": "Prata",
11499
- "category": "serif",
11500
- "variants": [
11501
- "regular"
11502
- ],
11503
- "subsets": [
11504
- "latin"
11505
- ],
11506
- "version": "v6",
11507
- "lastModified": "2016-05-31",
11508
- "files": {
11509
- "regular": "http://fonts.gstatic.com/s/prata/v6/3gmx8r842loRRm9iQkCDGg.ttf"
11510
- }
11511
- },
11512
- {
11513
- "kind": "webfonts#webfont",
11514
- "family": "Preahvihear",
11515
- "category": "display",
11516
- "variants": [
11517
- "regular"
11518
- ],
11519
- "subsets": [
11520
- "khmer"
11521
- ],
11522
- "version": "v8",
11523
- "lastModified": "2016-05-31",
11524
- "files": {
11525
- "regular": "http://fonts.gstatic.com/s/preahvihear/v8/82tDI-xTc53CxxOzEG4hDaCWcynf_cDxXwCLxiixG1c.ttf"
11526
- }
11527
- },
11528
- {
11529
- "kind": "webfonts#webfont",
11530
- "family": "Press Start 2P",
11531
- "category": "display",
11532
- "variants": [
11533
- "regular"
11534
- ],
11535
- "subsets": [
11536
- "latin-ext",
11537
- "cyrillic",
11538
- "greek",
11539
- "latin"
11540
- ],
11541
- "version": "v4",
11542
- "lastModified": "2016-05-31",
11543
- "files": {
11544
- "regular": "http://fonts.gstatic.com/s/pressstart2p/v4/8Lg6LX8-ntOHUQnvQ0E7o1jfl3W46Sz5gOkEVhcFWF4.ttf"
11545
- }
11546
- },
11547
- {
11548
- "kind": "webfonts#webfont",
11549
- "family": "Pridi",
11550
- "category": "serif",
11551
- "variants": [
11552
- "200",
11553
- "300",
11554
- "regular",
11555
- "500",
11556
- "600",
11557
- "700"
11558
- ],
11559
- "subsets": [
11560
- "latin-ext",
11561
- "thai",
11562
- "latin",
11563
- "vietnamese"
11564
- ],
11565
- "version": "v1",
11566
- "lastModified": "2016-06-20",
11567
- "files": {
11568
- "200": "http://fonts.gstatic.com/s/pridi/v1/WvKJ-kflGuELyK4uQzpYIA.ttf",
11569
- "300": "http://fonts.gstatic.com/s/pridi/v1/Ihwk-OGVFS69PINILdqAjQ.ttf",
11570
- "regular": "http://fonts.gstatic.com/s/pridi/v1/Mau018Ghi7LJX7FkGYCZAQ.ttf",
11571
- "500": "http://fonts.gstatic.com/s/pridi/v1/dPNOrMxU-HjLo-fvkFydsQ.ttf",
11572
- "600": "http://fonts.gstatic.com/s/pridi/v1/J0i5OZxX07KC4mby5RjNbg.ttf",
11573
- "700": "http://fonts.gstatic.com/s/pridi/v1/UhCy4jDDJttTB8k8rtWadg.ttf"
11574
- }
11575
- },
11576
- {
11577
- "kind": "webfonts#webfont",
11578
- "family": "Princess Sofia",
11579
- "category": "handwriting",
11580
- "variants": [
11581
- "regular"
11582
- ],
11583
- "subsets": [
11584
- "latin-ext",
11585
- "latin"
11586
- ],
11587
- "version": "v4",
11588
- "lastModified": "2016-05-31",
11589
- "files": {
11590
- "regular": "http://fonts.gstatic.com/s/princesssofia/v4/8g5l8r9BM0t1QsXLTajDe-wjmA7ie-lFcByzHGRhCIg.ttf"
11591
- }
11592
- },
11593
- {
11594
- "kind": "webfonts#webfont",
11595
- "family": "Prociono",
11596
- "category": "serif",
11597
- "variants": [
11598
- "regular"
11599
- ],
11600
- "subsets": [
11601
- "latin"
11602
- ],
11603
- "version": "v6",
11604
- "lastModified": "2016-05-31",
11605
- "files": {
11606
- "regular": "http://fonts.gstatic.com/s/prociono/v6/43ZYDHWogdFeNBWTl6ksmw.ttf"
11607
- }
11608
- },
11609
- {
11610
- "kind": "webfonts#webfont",
11611
- "family": "Prompt",
11612
- "category": "sans-serif",
11613
- "variants": [
11614
- "100",
11615
- "100italic",
11616
- "200",
11617
- "200italic",
11618
- "300",
11619
- "300italic",
11620
- "regular",
11621
- "italic",
11622
- "500",
11623
- "500italic",
11624
- "600",
11625
- "600italic",
11626
- "700",
11627
- "700italic",
11628
- "800",
11629
- "800italic",
11630
- "900",
11631
- "900italic"
11632
- ],
11633
- "subsets": [
11634
- "latin-ext",
11635
- "thai",
11636
- "latin",
11637
- "vietnamese"
11638
- ],
11639
- "version": "v1",
11640
- "lastModified": "2016-06-20",
11641
- "files": {
11642
- "100": "http://fonts.gstatic.com/s/prompt/v1/ltjX-trOmfS-yKy_awt70g.ttf",
11643
- "100italic": "http://fonts.gstatic.com/s/prompt/v1/KvTeArBpVb-tA2mahV6Jk_esZW2xOQ-xsNqO47m55DA.ttf",
11644
- "200": "http://fonts.gstatic.com/s/prompt/v1/MNB_CVkbfYHFMWX_UbDC2Q.ttf",
11645
- "200italic": "http://fonts.gstatic.com/s/prompt/v1/NR0JuXzzCDKpLNVhfyEAiaCWcynf_cDxXwCLxiixG1c.ttf",
11646
- "300": "http://fonts.gstatic.com/s/prompt/v1/LzifakiWysr3N3OoAdbdpg.ttf",
11647
- "300italic": "http://fonts.gstatic.com/s/prompt/v1/ir8BhbeDHM-qnbo-tnpmt6CWcynf_cDxXwCLxiixG1c.ttf",
11648
- "regular": "http://fonts.gstatic.com/s/prompt/v1/nDo1rQFnTFNua4cp-OnD2A.ttf",
11649
- "italic": "http://fonts.gstatic.com/s/prompt/v1/ZD4khIP924SU2fRYOJkraQ.ttf",
11650
- "500": "http://fonts.gstatic.com/s/prompt/v1/w31OY1otplAgr5iZ21K7Fg.ttf",
11651
- "500italic": "http://fonts.gstatic.com/s/prompt/v1/dfaeaRx00u9arVHsaDjliaCWcynf_cDxXwCLxiixG1c.ttf",
11652
- "600": "http://fonts.gstatic.com/s/prompt/v1/uUrJjg1BGaIb6CAOlUIp9g.ttf",
11653
- "600italic": "http://fonts.gstatic.com/s/prompt/v1/CJUBMsoNNHMMdFRxm-n7p6CWcynf_cDxXwCLxiixG1c.ttf",
11654
- "700": "http://fonts.gstatic.com/s/prompt/v1/HdM_epiStzshOr-49ubVyg.ttf",
11655
- "700italic": "http://fonts.gstatic.com/s/prompt/v1/GtXRH7QWy3aLCHoJuR5WIKCWcynf_cDxXwCLxiixG1c.ttf",
11656
- "800": "http://fonts.gstatic.com/s/prompt/v1/GF9cOamDd7mYPHNW1nZLKg.ttf",
11657
- "800italic": "http://fonts.gstatic.com/s/prompt/v1/kBLgnnEB-VXkOLFCc0pzwqCWcynf_cDxXwCLxiixG1c.ttf",
11658
- "900": "http://fonts.gstatic.com/s/prompt/v1/KFgmbwHbRBQb28VFhH3c8Q.ttf",
11659
- "900italic": "http://fonts.gstatic.com/s/prompt/v1/qjrOe-lEPwDDeUu5g6q_DaCWcynf_cDxXwCLxiixG1c.ttf"
11660
- }
11661
- },
11662
- {
11663
- "kind": "webfonts#webfont",
11664
- "family": "Prosto One",
11665
- "category": "display",
11666
- "variants": [
11667
- "regular"
11668
- ],
11669
- "subsets": [
11670
- "latin-ext",
11671
- "cyrillic",
11672
- "latin"
11673
- ],
11674
- "version": "v5",
11675
- "lastModified": "2016-05-31",
11676
- "files": {
11677
- "regular": "http://fonts.gstatic.com/s/prostoone/v5/bsqnAElAqk9kX7eABTRFJPesZW2xOQ-xsNqO47m55DA.ttf"
11678
- }
11679
- },
11680
- {
11681
- "kind": "webfonts#webfont",
11682
- "family": "Proza Libre",
11683
- "category": "sans-serif",
11684
- "variants": [
11685
- "regular",
11686
- "italic",
11687
- "500",
11688
- "500italic",
11689
- "600",
11690
- "600italic",
11691
- "700",
11692
- "700italic",
11693
- "800",
11694
- "800italic"
11695
- ],
11696
- "subsets": [
11697
- "latin-ext",
11698
- "latin"
11699
- ],
11700
- "version": "v1",
11701
- "lastModified": "2016-06-20",
11702
- "files": {
11703
- "regular": "http://fonts.gstatic.com/s/prozalibre/v1/Hg11OrfE1P_U6mKmrZPknKCWcynf_cDxXwCLxiixG1c.ttf",
11704
- "italic": "http://fonts.gstatic.com/s/prozalibre/v1/ClQTew5IUT7yKo8vyspLxEeOrDcLawS7-ssYqLr2Xp4.ttf",
11705
- "500": "http://fonts.gstatic.com/s/prozalibre/v1/4gjxWDPA6RMWrIls_qgQBsCNfqCYlB_eIx7H1TVXe60.ttf",
11706
- "500italic": "http://fonts.gstatic.com/s/prozalibre/v1/rWq3Qp4ZlPGKduc1qkgLHGnWRcJAYo5PSCx8UfGMHCI.ttf",
11707
- "600": "http://fonts.gstatic.com/s/prozalibre/v1/4gjxWDPA6RMWrIls_qgQBpZ7xm-Bj30Bj2KNdXDzSZg.ttf",
11708
- "600italic": "http://fonts.gstatic.com/s/prozalibre/v1/rWq3Qp4ZlPGKduc1qkgLHJe6We3S5L6hKLscKpOkmlo.ttf",
11709
- "700": "http://fonts.gstatic.com/s/prozalibre/v1/4gjxWDPA6RMWrIls_qgQBne1Pd76Vl7zRpE7NLJQ7XU.ttf",
11710
- "700italic": "http://fonts.gstatic.com/s/prozalibre/v1/rWq3Qp4ZlPGKduc1qkgLHM_zJjSACmk0BRPxQqhnNLU.ttf",
11711
- "800": "http://fonts.gstatic.com/s/prozalibre/v1/4gjxWDPA6RMWrIls_qgQBg89PwPrYLaRFJ-HNCU9NbA.ttf",
11712
- "800italic": "http://fonts.gstatic.com/s/prozalibre/v1/rWq3Qp4ZlPGKduc1qkgLHCad_7rtf4IdDfsLVg-2OV4.ttf"
11713
- }
11714
- },
11715
- {
11716
- "kind": "webfonts#webfont",
11717
- "family": "Puritan",
11718
- "category": "sans-serif",
11719
- "variants": [
11720
- "regular",
11721
- "italic",
11722
- "700",
11723
- "700italic"
11724
- ],
11725
- "subsets": [
11726
- "latin"
11727
- ],
11728
- "version": "v8",
11729
- "lastModified": "2016-05-31",
11730
- "files": {
11731
- "regular": "http://fonts.gstatic.com/s/puritan/v8/wv_RtgVBSCn-or2MC0n4Kg.ttf",
11732
- "italic": "http://fonts.gstatic.com/s/puritan/v8/BqZX8Tp200LeMv1KlzXgLQ.ttf",
11733
- "700": "http://fonts.gstatic.com/s/puritan/v8/pJS2SdwI0SCiVnO0iQSFT_esZW2xOQ-xsNqO47m55DA.ttf",
11734
- "700italic": "http://fonts.gstatic.com/s/puritan/v8/rFG3XkMJL75nUNZwCEIJqC3USBnSvpkopQaUR-2r7iU.ttf"
11735
- }
11736
- },
11737
- {
11738
- "kind": "webfonts#webfont",
11739
- "family": "Purple Purse",
11740
- "category": "display",
11741
- "variants": [
11742
- "regular"
11743
- ],
11744
- "subsets": [
11745
- "latin-ext",
11746
- "latin"
11747
- ],
11748
- "version": "v5",
11749
- "lastModified": "2016-05-31",
11750
- "files": {
11751
- "regular": "http://fonts.gstatic.com/s/purplepurse/v5/Q5heFUrdmei9axbMITxxxS3USBnSvpkopQaUR-2r7iU.ttf"
11752
- }
11753
- },
11754
- {
11755
- "kind": "webfonts#webfont",
11756
- "family": "Quando",
11757
- "category": "serif",
11758
- "variants": [
11759
- "regular"
11760
- ],
11761
- "subsets": [
11762
- "latin-ext",
11763
- "latin"
11764
- ],
11765
- "version": "v5",
11766
- "lastModified": "2016-06-07",
11767
- "files": {
11768
- "regular": "http://fonts.gstatic.com/s/quando/v5/03nDiEZuO2-h3xvtG6UmHg.ttf"
11769
- }
11770
- },
11771
- {
11772
- "kind": "webfonts#webfont",
11773
- "family": "Quantico",
11774
- "category": "sans-serif",
11775
- "variants": [
11776
- "regular",
11777
- "italic",
11778
- "700",
11779
- "700italic"
11780
- ],
11781
- "subsets": [
11782
- "latin"
11783
- ],
11784
- "version": "v5",
11785
- "lastModified": "2016-05-31",
11786
- "files": {
11787
- "regular": "http://fonts.gstatic.com/s/quantico/v5/pwSnP8Xpaix2rIz99HrSlQ.ttf",
11788
- "italic": "http://fonts.gstatic.com/s/quantico/v5/KQhDd2OsZi6HiITUeFQ2U_esZW2xOQ-xsNqO47m55DA.ttf",
11789
- "700": "http://fonts.gstatic.com/s/quantico/v5/OVZZzjcZ3Hkq2ojVcUtDjaCWcynf_cDxXwCLxiixG1c.ttf",
11790
- "700italic": "http://fonts.gstatic.com/s/quantico/v5/HeCYRcZbdRso3ZUu01ELbQJKKGfqHaYFsRG-T3ceEVo.ttf"
11791
- }
11792
- },
11793
- {
11794
- "kind": "webfonts#webfont",
11795
- "family": "Quattrocento",
11796
- "category": "serif",
11797
- "variants": [
11798
- "regular",
11799
- "700"
11800
- ],
11801
- "subsets": [
11802
- "latin-ext",
11803
- "latin"
11804
- ],
11805
- "version": "v8",
11806
- "lastModified": "2016-05-31",
11807
- "files": {
11808
- "regular": "http://fonts.gstatic.com/s/quattrocento/v8/WZDISdyil4HsmirlOdBRFC3USBnSvpkopQaUR-2r7iU.ttf",
11809
- "700": "http://fonts.gstatic.com/s/quattrocento/v8/Uvi-cRwyvqFpl9j3oT2mqkD2ttfZwueP-QU272T9-k4.ttf"
11810
- }
11811
- },
11812
- {
11813
- "kind": "webfonts#webfont",
11814
- "family": "Quattrocento Sans",
11815
- "category": "sans-serif",
11816
- "variants": [
11817
- "regular",
11818
- "italic",
11819
- "700",
11820
- "700italic"
11821
- ],
11822
- "subsets": [
11823
- "latin-ext",
11824
- "latin"
11825
- ],
11826
- "version": "v9",
11827
- "lastModified": "2016-05-31",
11828
- "files": {
11829
- "regular": "http://fonts.gstatic.com/s/quattrocentosans/v9/efd6FGWWGX5Z3ztwLBrG9eAj_ty82iuwwDTNEYXGiyQ.ttf",
11830
- "italic": "http://fonts.gstatic.com/s/quattrocentosans/v9/8PXYbvM__bjl0rBnKiByg532VBCoA_HLsn85tSWZmdo.ttf",
11831
- "700": "http://fonts.gstatic.com/s/quattrocentosans/v9/tXSgPxDl7Lk8Zr_5qX8FIbqxG25nQNOioCZSK4sU-CA.ttf",
11832
- "700italic": "http://fonts.gstatic.com/s/quattrocentosans/v9/8N1PdXpbG6RtFvTjl-5E7buqAJxizi8Dk_SK5et7kMg.ttf"
11833
- }
11834
- },
11835
- {
11836
- "kind": "webfonts#webfont",
11837
- "family": "Questrial",
11838
- "category": "sans-serif",
11839
- "variants": [
11840
- "regular"
11841
- ],
11842
- "subsets": [
11843
- "latin"
11844
- ],
11845
- "version": "v6",
11846
- "lastModified": "2016-05-31",
11847
- "files": {
11848
- "regular": "http://fonts.gstatic.com/s/questrial/v6/MoHHaw_WwNs_hd9ob1zTVw.ttf"
11849
- }
11850
- },
11851
- {
11852
- "kind": "webfonts#webfont",
11853
- "family": "Quicksand",
11854
- "category": "sans-serif",
11855
- "variants": [
11856
- "300",
11857
- "regular",
11858
- "700"
11859
- ],
11860
- "subsets": [
11861
- "latin"
11862
- ],
11863
- "version": "v5",
11864
- "lastModified": "2016-05-31",
11865
- "files": {
11866
- "300": "http://fonts.gstatic.com/s/quicksand/v5/qhfoJiLu10kFjChCCTvGlC3USBnSvpkopQaUR-2r7iU.ttf",
11867
- "regular": "http://fonts.gstatic.com/s/quicksand/v5/Ngv3fIJjKB7sD-bTUGIFCA.ttf",
11868
- "700": "http://fonts.gstatic.com/s/quicksand/v5/32nyIRHyCu6iqEka_hbKsi3USBnSvpkopQaUR-2r7iU.ttf"
11869
- }
11870
- },
11871
- {
11872
- "kind": "webfonts#webfont",
11873
- "family": "Quintessential",
11874
- "category": "handwriting",
11875
- "variants": [
11876
- "regular"
11877
- ],
11878
- "subsets": [
11879
- "latin-ext",
11880
- "latin"
11881
- ],
11882
- "version": "v4",
11883
- "lastModified": "2016-05-31",
11884
- "files": {
11885
- "regular": "http://fonts.gstatic.com/s/quintessential/v4/mmk6ioesnTrEky_Zb92E5s02lXbtMOtZWfuxKeMZO8Q.ttf"
11886
- }
11887
- },
11888
- {
11889
- "kind": "webfonts#webfont",
11890
- "family": "Qwigley",
11891
- "category": "handwriting",
11892
- "variants": [
11893
- "regular"
11894
- ],
11895
- "subsets": [
11896
- "latin-ext",
11897
- "latin"
11898
- ],
11899
- "version": "v6",
11900
- "lastModified": "2016-05-31",
11901
- "files": {
11902
- "regular": "http://fonts.gstatic.com/s/qwigley/v6/aDqxws-KubFID85TZHFouw.ttf"
11903
- }
11904
- },
11905
- {
11906
- "kind": "webfonts#webfont",
11907
- "family": "Racing Sans One",
11908
- "category": "display",
11909
- "variants": [
11910
- "regular"
11911
- ],
11912
- "subsets": [
11913
- "latin-ext",
11914
- "latin"
11915
- ],
11916
- "version": "v4",
11917
- "lastModified": "2016-05-31",
11918
- "files": {
11919
- "regular": "http://fonts.gstatic.com/s/racingsansone/v4/1r3DpWaCiT7y3PD4KgkNyDjVlsJB_M_Q_LtZxsoxvlw.ttf"
11920
- }
11921
- },
11922
- {
11923
- "kind": "webfonts#webfont",
11924
- "family": "Radley",
11925
- "category": "serif",
11926
- "variants": [
11927
- "regular",
11928
- "italic"
11929
- ],
11930
- "subsets": [
11931
- "latin-ext",
11932
- "latin"
11933
- ],
11934
- "version": "v9",
11935
- "lastModified": "2016-06-07",
11936
- "files": {
11937
- "regular": "http://fonts.gstatic.com/s/radley/v9/FgE9di09a-mXGzAIyI6Q9Q.ttf",
11938
- "italic": "http://fonts.gstatic.com/s/radley/v9/Z_JcACuPAOO2f9kzQcGRug.ttf"
11939
- }
11940
- },
11941
- {
11942
- "kind": "webfonts#webfont",
11943
- "family": "Rajdhani",
11944
- "category": "sans-serif",
11945
- "variants": [
11946
- "300",
11947
- "regular",
11948
- "500",
11949
- "600",
11950
- "700"
11951
- ],
11952
- "subsets": [
11953
- "latin-ext",
11954
- "devanagari",
11955
- "latin"
11956
- ],
11957
- "version": "v5",
11958
- "lastModified": "2016-06-07",
11959
- "files": {
11960
- "300": "http://fonts.gstatic.com/s/rajdhani/v5/9pItuEhQZVGdq8spnHTku6CWcynf_cDxXwCLxiixG1c.ttf",
11961
- "regular": "http://fonts.gstatic.com/s/rajdhani/v5/Wfy5zp4PGFAFS7-Wetehzw.ttf",
11962
- "500": "http://fonts.gstatic.com/s/rajdhani/v5/nd_5ZpVwm710HcLual0fBqCWcynf_cDxXwCLxiixG1c.ttf",
11963
- "600": "http://fonts.gstatic.com/s/rajdhani/v5/5fnmZahByDeTtgxIiqbJSaCWcynf_cDxXwCLxiixG1c.ttf",
11964
- "700": "http://fonts.gstatic.com/s/rajdhani/v5/UBK6d2Hg7X7wYLlF92aXW6CWcynf_cDxXwCLxiixG1c.ttf"
11965
- }
11966
- },
11967
- {
11968
- "kind": "webfonts#webfont",
11969
- "family": "Rakkas",
11970
- "category": "display",
11971
- "variants": [
11972
- "regular"
11973
- ],
11974
- "subsets": [
11975
- "latin-ext",
11976
- "arabic",
11977
- "latin"
11978
- ],
11979
- "version": "v1",
11980
- "lastModified": "2016-06-20",
11981
- "files": {
11982
- "regular": "http://fonts.gstatic.com/s/rakkas/v1/XWSZpoSbAR4myQgKbSJM9A.ttf"
11983
- }
11984
- },
11985
- {
11986
- "kind": "webfonts#webfont",
11987
- "family": "Raleway",
11988
- "category": "sans-serif",
11989
- "variants": [
11990
- "100",
11991
- "100italic",
11992
- "200",
11993
- "200italic",
11994
- "300",
11995
- "300italic",
11996
- "regular",
11997
- "italic",
11998
- "500",
11999
- "500italic",
12000
- "600",
12001
- "600italic",
12002
- "700",
12003
- "700italic",
12004
- "800",
12005
- "800italic",
12006
- "900",
12007
- "900italic"
12008
- ],
12009
- "subsets": [
12010
- "latin-ext",
12011
- "latin"
12012
- ],
12013
- "version": "v11",
12014
- "lastModified": "2016-06-07",
12015
- "files": {
12016
- "100": "http://fonts.gstatic.com/s/raleway/v11/UDfD6oxBaBnmFJwQ7XAFNw.ttf",
12017
- "100italic": "http://fonts.gstatic.com/s/raleway/v11/hUpHtml6IPNuUR-FwVi2UKCWcynf_cDxXwCLxiixG1c.ttf",
12018
- "200": "http://fonts.gstatic.com/s/raleway/v11/LAQwev4hdCtYkOYX4Oc7nPesZW2xOQ-xsNqO47m55DA.ttf",
12019
- "200italic": "http://fonts.gstatic.com/s/raleway/v11/N2DIbZG4399cPGfifZUEQi3USBnSvpkopQaUR-2r7iU.ttf",
12020
- "300": "http://fonts.gstatic.com/s/raleway/v11/2VvSZU2kb4DZwFfRM4fLQPesZW2xOQ-xsNqO47m55DA.ttf",
12021
- "300italic": "http://fonts.gstatic.com/s/raleway/v11/TVSB8ogXDKMcnAAJ5CqrUi3USBnSvpkopQaUR-2r7iU.ttf",
12022
- "regular": "http://fonts.gstatic.com/s/raleway/v11/_dCzxpXzIS3sL-gdJWAP8A.ttf",
12023
- "italic": "http://fonts.gstatic.com/s/raleway/v11/utU2m1gdZSfuQpArSy5Dbw.ttf",
12024
- "500": "http://fonts.gstatic.com/s/raleway/v11/348gn6PEmbLDWlHbbV15d_esZW2xOQ-xsNqO47m55DA.ttf",
12025
- "500italic": "http://fonts.gstatic.com/s/raleway/v11/S7vGLZZ40c85SJgiptJGVy3USBnSvpkopQaUR-2r7iU.ttf",
12026
- "600": "http://fonts.gstatic.com/s/raleway/v11/M7no6oPkwKYJkedjB1wqEvesZW2xOQ-xsNqO47m55DA.ttf",
12027
- "600italic": "http://fonts.gstatic.com/s/raleway/v11/OY22yoG8EJ3IN_muVWm29C3USBnSvpkopQaUR-2r7iU.ttf",
12028
- "700": "http://fonts.gstatic.com/s/raleway/v11/VGEV9-DrblisWOWLbK-1XPesZW2xOQ-xsNqO47m55DA.ttf",
12029
- "700italic": "http://fonts.gstatic.com/s/raleway/v11/lFxvRPuGFG5ktd7P0WRwKi3USBnSvpkopQaUR-2r7iU.ttf",
12030
- "800": "http://fonts.gstatic.com/s/raleway/v11/mMh0JrsYMXcLO69jgJwpUvesZW2xOQ-xsNqO47m55DA.ttf",
12031
- "800italic": "http://fonts.gstatic.com/s/raleway/v11/us4LjTCmlYgh3W8CKujEJi3USBnSvpkopQaUR-2r7iU.ttf",
12032
- "900": "http://fonts.gstatic.com/s/raleway/v11/ajQQGcDBLcyLpaUfD76UuPesZW2xOQ-xsNqO47m55DA.ttf",
12033
- "900italic": "http://fonts.gstatic.com/s/raleway/v11/oY2RadnkHfshu5f0FLsgVS3USBnSvpkopQaUR-2r7iU.ttf"
12034
- }
12035
- },
12036
- {
12037
- "kind": "webfonts#webfont",
12038
- "family": "Raleway Dots",
12039
- "category": "display",
12040
- "variants": [
12041
- "regular"
12042
- ],
12043
- "subsets": [
12044
- "latin-ext",
12045
- "latin"
12046
- ],
12047
- "version": "v4",
12048
- "lastModified": "2016-05-31",
12049
- "files": {
12050
- "regular": "http://fonts.gstatic.com/s/ralewaydots/v4/lhLgmWCRcyz-QXo8LCzTfC3USBnSvpkopQaUR-2r7iU.ttf"
12051
- }
12052
- },
12053
- {
12054
- "kind": "webfonts#webfont",
12055
- "family": "Ramabhadra",
12056
- "category": "sans-serif",
12057
- "variants": [
12058
- "regular"
12059
- ],
12060
- "subsets": [
12061
- "latin",
12062
- "telugu"
12063
- ],
12064
- "version": "v5",
12065
- "lastModified": "2016-05-31",
12066
- "files": {
12067
- "regular": "http://fonts.gstatic.com/s/ramabhadra/v5/JyhxLXRVQChLDGADS_c5MPesZW2xOQ-xsNqO47m55DA.ttf"
12068
- }
12069
- },
12070
- {
12071
- "kind": "webfonts#webfont",
12072
- "family": "Ramaraja",
12073
- "category": "serif",
12074
- "variants": [
12075
- "regular"
12076
- ],
12077
- "subsets": [
12078
- "latin",
12079
- "telugu"
12080
- ],
12081
- "version": "v1",
12082
- "lastModified": "2016-05-31",
12083
- "files": {
12084
- "regular": "http://fonts.gstatic.com/s/ramaraja/v1/XIqzxFapVczstBedHdQTiw.ttf"
12085
- }
12086
- },
12087
- {
12088
- "kind": "webfonts#webfont",
12089
- "family": "Rambla",
12090
- "category": "sans-serif",
12091
- "variants": [
12092
- "regular",
12093
- "italic",
12094
- "700",
12095
- "700italic"
12096
- ],
12097
- "subsets": [
12098
- "latin-ext",
12099
- "latin"
12100
- ],
12101
- "version": "v4",
12102
- "lastModified": "2016-05-31",
12103
- "files": {
12104
- "regular": "http://fonts.gstatic.com/s/rambla/v4/YaTmpvm5gFg_ShJKTQmdzg.ttf",
12105
- "italic": "http://fonts.gstatic.com/s/rambla/v4/mhUgsKmp0qw3uATdDDAuwA.ttf",
12106
- "700": "http://fonts.gstatic.com/s/rambla/v4/C5VZH8BxQKmnBuoC00UPpw.ttf",
12107
- "700italic": "http://fonts.gstatic.com/s/rambla/v4/ziMzUZya6QahrKONSI1TzqCWcynf_cDxXwCLxiixG1c.ttf"
12108
- }
12109
- },
12110
- {
12111
- "kind": "webfonts#webfont",
12112
- "family": "Rammetto One",
12113
- "category": "display",
12114
- "variants": [
12115
- "regular"
12116
- ],
12117
- "subsets": [
12118
- "latin-ext",
12119
- "latin"
12120
- ],
12121
- "version": "v5",
12122
- "lastModified": "2016-05-31",
12123
- "files": {
12124
- "regular": "http://fonts.gstatic.com/s/rammettoone/v5/mh0uQ1tV8QgSx9v_KyEYPC3USBnSvpkopQaUR-2r7iU.ttf"
12125
- }
12126
- },
12127
- {
12128
- "kind": "webfonts#webfont",
12129
- "family": "Ranchers",
12130
- "category": "display",
12131
- "variants": [
12132
- "regular"
12133
- ],
12134
- "subsets": [
12135
- "latin-ext",
12136
- "latin"
12137
- ],
12138
- "version": "v4",
12139
- "lastModified": "2016-05-31",
12140
- "files": {
12141
- "regular": "http://fonts.gstatic.com/s/ranchers/v4/9ya8CZYhqT66VERfjQ7eLA.ttf"
12142
- }
12143
- },
12144
- {
12145
- "kind": "webfonts#webfont",
12146
- "family": "Rancho",
12147
- "category": "handwriting",
12148
- "variants": [
12149
- "regular"
12150
- ],
12151
- "subsets": [
12152
- "latin"
12153
- ],
12154
- "version": "v6",
12155
- "lastModified": "2016-10-05",
12156
- "files": {
12157
- "regular": "http://fonts.gstatic.com/s/rancho/v6/ekp3-4QykC4--6KaslRgHA.ttf"
12158
- }
12159
- },
12160
- {
12161
- "kind": "webfonts#webfont",
12162
- "family": "Ranga",
12163
- "category": "display",
12164
- "variants": [
12165
- "regular",
12166
- "700"
12167
- ],
12168
- "subsets": [
12169
- "latin-ext",
12170
- "devanagari",
12171
- "latin"
12172
- ],
12173
- "version": "v1",
12174
- "lastModified": "2016-05-31",
12175
- "files": {
12176
- "regular": "http://fonts.gstatic.com/s/ranga/v1/xpW6zFTNzY1JykoBIqE1Zg.ttf",
12177
- "700": "http://fonts.gstatic.com/s/ranga/v1/h8G_gEUH7vHKH-NkjAs34A.ttf"
12178
- }
12179
- },
12180
- {
12181
- "kind": "webfonts#webfont",
12182
- "family": "Rasa",
12183
- "category": "serif",
12184
- "variants": [
12185
- "300",
12186
- "regular",
12187
- "500",
12188
- "600",
12189
- "700"
12190
- ],
12191
- "subsets": [
12192
- "gujarati",
12193
- "latin-ext",
12194
- "latin"
12195
- ],
12196
- "version": "v1",
12197
- "lastModified": "2016-06-20",
12198
- "files": {
12199
- "300": "http://fonts.gstatic.com/s/rasa/v1/XQ1gDq2EqBtGcdadPyPbww.ttf",
12200
- "regular": "http://fonts.gstatic.com/s/rasa/v1/A5PoJUwX_PxTsywxlRB79g.ttf",
12201
- "500": "http://fonts.gstatic.com/s/rasa/v1/HfsDi_Ls3NARO_YEODINGg.ttf",
12202
- "600": "http://fonts.gstatic.com/s/rasa/v1/f-fvbq-hWIQCdmT3QHGk3Q.ttf",
12203
- "700": "http://fonts.gstatic.com/s/rasa/v1/TSF3CG-8Cn72jvaVdqtMMQ.ttf"
12204
- }
12205
- },
12206
- {
12207
- "kind": "webfonts#webfont",
12208
- "family": "Rationale",
12209
- "category": "sans-serif",
12210
- "variants": [
12211
- "regular"
12212
- ],
12213
- "subsets": [
12214
- "latin"
12215
- ],
12216
- "version": "v7",
12217
- "lastModified": "2016-05-31",
12218
- "files": {
12219
- "regular": "http://fonts.gstatic.com/s/rationale/v7/7M2eN-di0NGLQse7HzJRfg.ttf"
12220
- }
12221
- },
12222
- {
12223
- "kind": "webfonts#webfont",
12224
- "family": "Ravi Prakash",
12225
- "category": "display",
12226
- "variants": [
12227
- "regular"
12228
- ],
12229
- "subsets": [
12230
- "latin",
12231
- "telugu"
12232
- ],
12233
- "version": "v3",
12234
- "lastModified": "2016-05-31",
12235
- "files": {
12236
- "regular": "http://fonts.gstatic.com/s/raviprakash/v3/8EzbM7Rymjk25jWeHxbO6C3USBnSvpkopQaUR-2r7iU.ttf"
12237
- }
12238
- },
12239
- {
12240
- "kind": "webfonts#webfont",
12241
- "family": "Redressed",
12242
- "category": "handwriting",
12243
- "variants": [
12244
- "regular"
12245
- ],
12246
- "subsets": [
12247
- "latin"
12248
- ],
12249
- "version": "v6",
12250
- "lastModified": "2016-10-05",
12251
- "files": {
12252
- "regular": "http://fonts.gstatic.com/s/redressed/v6/3aZ5sTBppH3oSm5SabegtA.ttf"
12253
- }
12254
- },
12255
- {
12256
- "kind": "webfonts#webfont",
12257
- "family": "Reem Kufi",
12258
- "category": "sans-serif",
12259
- "variants": [
12260
- "regular"
12261
- ],
12262
- "subsets": [
12263
- "arabic",
12264
- "latin"
12265
- ],
12266
- "version": "v1",
12267
- "lastModified": "2016-08-22",
12268
- "files": {
12269
- "regular": "http://fonts.gstatic.com/s/reemkufi/v1/xLwMbK_T1g-h9p-rp60A1Q.ttf"
12270
- }
12271
- },
12272
- {
12273
- "kind": "webfonts#webfont",
12274
- "family": "Reenie Beanie",
12275
- "category": "handwriting",
12276
- "variants": [
12277
- "regular"
12278
- ],
12279
- "subsets": [
12280
- "latin"
12281
- ],
12282
- "version": "v7",
12283
- "lastModified": "2016-05-31",
12284
- "files": {
12285
- "regular": "http://fonts.gstatic.com/s/reeniebeanie/v7/ljpKc6CdXusL1cnGUSamX4jjx0o0jr6fNXxPgYh_a8Q.ttf"
12286
- }
12287
- },
12288
- {
12289
- "kind": "webfonts#webfont",
12290
- "family": "Revalia",
12291
- "category": "display",
12292
- "variants": [
12293
- "regular"
12294
- ],
12295
- "subsets": [
12296
- "latin-ext",
12297
- "latin"
12298
- ],
12299
- "version": "v4",
12300
- "lastModified": "2016-05-31",
12301
- "files": {
12302
- "regular": "http://fonts.gstatic.com/s/revalia/v4/1TKw66fF5_poiL0Ktgo4_A.ttf"
12303
- }
12304
- },
12305
- {
12306
- "kind": "webfonts#webfont",
12307
- "family": "Rhodium Libre",
12308
- "category": "serif",
12309
- "variants": [
12310
- "regular"
12311
- ],
12312
- "subsets": [
12313
- "latin-ext",
12314
- "devanagari",
12315
- "latin"
12316
- ],
12317
- "version": "v1",
12318
- "lastModified": "2016-05-31",
12319
- "files": {
12320
- "regular": "http://fonts.gstatic.com/s/rhodiumlibre/v1/Vxr7A4-xE2zsBDDI8BcseIjjx0o0jr6fNXxPgYh_a8Q.ttf"
12321
- }
12322
- },
12323
- {
12324
- "kind": "webfonts#webfont",
12325
- "family": "Ribeye",
12326
- "category": "display",
12327
- "variants": [
12328
- "regular"
12329
- ],
12330
- "subsets": [
12331
- "latin-ext",
12332
- "latin"
12333
- ],
12334
- "version": "v5",
12335
- "lastModified": "2016-05-31",
12336
- "files": {
12337
- "regular": "http://fonts.gstatic.com/s/ribeye/v5/e5w3VE8HnWBln4Ll6lUj3Q.ttf"
12338
- }
12339
- },
12340
- {
12341
- "kind": "webfonts#webfont",
12342
- "family": "Ribeye Marrow",
12343
- "category": "display",
12344
- "variants": [
12345
- "regular"
12346
- ],
12347
- "subsets": [
12348
- "latin-ext",
12349
- "latin"
12350
- ],
12351
- "version": "v6",
12352
- "lastModified": "2016-05-31",
12353
- "files": {
12354
- "regular": "http://fonts.gstatic.com/s/ribeyemarrow/v6/q7cBSA-4ErAXBCDFPrhlY0cTNmV93fYG7UKgsLQNQWs.ttf"
12355
- }
12356
- },
12357
- {
12358
- "kind": "webfonts#webfont",
12359
- "family": "Righteous",
12360
- "category": "display",
12361
- "variants": [
12362
- "regular"
12363
- ],
12364
- "subsets": [
12365
- "latin-ext",
12366
- "latin"
12367
- ],
12368
- "version": "v5",
12369
- "lastModified": "2016-05-31",
12370
- "files": {
12371
- "regular": "http://fonts.gstatic.com/s/righteous/v5/0nRRWM_gCGCt2S-BCfN8WQ.ttf"
12372
- }
12373
- },
12374
- {
12375
- "kind": "webfonts#webfont",
12376
- "family": "Risque",
12377
- "category": "display",
12378
- "variants": [
12379
- "regular"
12380
- ],
12381
- "subsets": [
12382
- "latin-ext",
12383
- "latin"
12384
- ],
12385
- "version": "v4",
12386
- "lastModified": "2016-05-31",
12387
- "files": {
12388
- "regular": "http://fonts.gstatic.com/s/risque/v4/92RnElGnl8yHP97-KV3Fyg.ttf"
12389
- }
12390
- },
12391
- {
12392
- "kind": "webfonts#webfont",
12393
- "family": "Roboto",
12394
- "category": "sans-serif",
12395
- "variants": [
12396
- "100",
12397
- "100italic",
12398
- "300",
12399
- "300italic",
12400
- "regular",
12401
- "italic",
12402
- "500",
12403
- "500italic",
12404
- "700",
12405
- "700italic",
12406
- "900",
12407
- "900italic"
12408
- ],
12409
- "subsets": [
12410
- "cyrillic-ext",
12411
- "latin-ext",
12412
- "cyrillic",
12413
- "greek",
12414
- "latin",
12415
- "greek-ext",
12416
- "vietnamese"
12417
- ],
12418
- "version": "v15",
12419
- "lastModified": "2016-10-05",
12420
- "files": {
12421
- "100": "http://fonts.gstatic.com/s/roboto/v15/7MygqTe2zs9YkP0adA9QQQ.ttf",
12422
- "100italic": "http://fonts.gstatic.com/s/roboto/v15/T1xnudodhcgwXCmZQ490TPesZW2xOQ-xsNqO47m55DA.ttf",
12423
- "300": "http://fonts.gstatic.com/s/roboto/v15/dtpHsbgPEm2lVWciJZ0P-A.ttf",
12424
- "300italic": "http://fonts.gstatic.com/s/roboto/v15/iE8HhaRzdhPxC93dOdA056CWcynf_cDxXwCLxiixG1c.ttf",
12425
- "regular": "http://fonts.gstatic.com/s/roboto/v15/W5F8_SL0XFawnjxHGsZjJA.ttf",
12426
- "italic": "http://fonts.gstatic.com/s/roboto/v15/hcKoSgxdnKlbH5dlTwKbow.ttf",
12427
- "500": "http://fonts.gstatic.com/s/roboto/v15/Uxzkqj-MIMWle-XP2pDNAA.ttf",
12428
- "500italic": "http://fonts.gstatic.com/s/roboto/v15/daIfzbEw-lbjMyv4rMUUTqCWcynf_cDxXwCLxiixG1c.ttf",
12429
- "700": "http://fonts.gstatic.com/s/roboto/v15/bdHGHleUa-ndQCOrdpfxfw.ttf",
12430
- "700italic": "http://fonts.gstatic.com/s/roboto/v15/owYYXKukxFDFjr0ZO8NXh6CWcynf_cDxXwCLxiixG1c.ttf",
12431
- "900": "http://fonts.gstatic.com/s/roboto/v15/H1vB34nOKWXqzKotq25pcg.ttf",
12432
- "900italic": "http://fonts.gstatic.com/s/roboto/v15/b9PWBSMHrT2zM5FgUdtu0aCWcynf_cDxXwCLxiixG1c.ttf"
12433
- }
12434
- },
12435
- {
12436
- "kind": "webfonts#webfont",
12437
- "family": "Roboto Condensed",
12438
- "category": "sans-serif",
12439
- "variants": [
12440
- "300",
12441
- "300italic",
12442
- "regular",
12443
- "italic",
12444
- "700",
12445
- "700italic"
12446
- ],
12447
- "subsets": [
12448
- "cyrillic-ext",
12449
- "latin-ext",
12450
- "cyrillic",
12451
- "greek",
12452
- "latin",
12453
- "greek-ext",
12454
- "vietnamese"
12455
- ],
12456
- "version": "v13",
12457
- "lastModified": "2016-10-05",
12458
- "files": {
12459
- "300": "http://fonts.gstatic.com/s/robotocondensed/v13/b9QBgL0iMZfDSpmcXcE8nJRhFVcex_hajThhFkHyhYk.ttf",
12460
- "300italic": "http://fonts.gstatic.com/s/robotocondensed/v13/mg0cGfGRUERshzBlvqxeAPYa9bgCHecWXGgisnodcS0.ttf",
12461
- "regular": "http://fonts.gstatic.com/s/robotocondensed/v13/Zd2E9abXLFGSr9G3YK2MsKDbm6fPDOZJsR8PmdG62gY.ttf",
12462
- "italic": "http://fonts.gstatic.com/s/robotocondensed/v13/BP5K8ZAJv9qEbmuFp8RpJY_eiqgTfYGaH0bJiUDZ5GA.ttf",
12463
- "700": "http://fonts.gstatic.com/s/robotocondensed/v13/b9QBgL0iMZfDSpmcXcE8nPOYkGiSOYDq_T7HbIOV1hA.ttf",
12464
- "700italic": "http://fonts.gstatic.com/s/robotocondensed/v13/mg0cGfGRUERshzBlvqxeAE2zk2RGRC3SlyyLLQfjS_8.ttf"
12465
- }
12466
- },
12467
- {
12468
- "kind": "webfonts#webfont",
12469
- "family": "Roboto Mono",
12470
- "category": "monospace",
12471
- "variants": [
12472
- "100",
12473
- "100italic",
12474
- "300",
12475
- "300italic",
12476
- "regular",
12477
- "italic",
12478
- "500",
12479
- "500italic",
12480
- "700",
12481
- "700italic"
12482
- ],
12483
- "subsets": [
12484
- "cyrillic-ext",
12485
- "latin-ext",
12486
- "cyrillic",
12487
- "greek",
12488
- "latin",
12489
- "greek-ext",
12490
- "vietnamese"
12491
- ],
12492
- "version": "v4",
12493
- "lastModified": "2016-10-05",
12494
- "files": {
12495
- "100": "http://fonts.gstatic.com/s/robotomono/v4/aOIeRp72J9_Hp_8KwQ9M-YAWxXGWZ3yJw6KhWS7MxOk.ttf",
12496
- "100italic": "http://fonts.gstatic.com/s/robotomono/v4/rqQ1zSE-ZGCKVZgew-A9dgyDtfpXZi-8rXUZYR4dumU.ttf",
12497
- "300": "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fzy9-WlPSxbfiI49GsXo3q0g.ttf",
12498
- "300italic": "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA2o9eWDfYYxG3A176Zl7aIg.ttf",
12499
- "regular": "http://fonts.gstatic.com/s/robotomono/v4/eJ4cxQe85Lo39t-LVoKa26CWcynf_cDxXwCLxiixG1c.ttf",
12500
- "italic": "http://fonts.gstatic.com/s/robotomono/v4/mE0EPT_93c7f86_WQexR3EeOrDcLawS7-ssYqLr2Xp4.ttf",
12501
- "500": "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fz8CNfqCYlB_eIx7H1TVXe60.ttf",
12502
- "500italic": "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA2nWRcJAYo5PSCx8UfGMHCI.ttf",
12503
- "700": "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fz3e1Pd76Vl7zRpE7NLJQ7XU.ttf",
12504
- "700italic": "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA8_zJjSACmk0BRPxQqhnNLU.ttf"
12505
- }
12506
- },
12507
- {
12508
- "kind": "webfonts#webfont",
12509
- "family": "Roboto Slab",
12510
- "category": "serif",
12511
- "variants": [
12512
- "100",
12513
- "300",
12514
- "regular",
12515
- "700"
12516
- ],
12517
- "subsets": [
12518
- "cyrillic-ext",
12519
- "latin-ext",
12520
- "cyrillic",
12521
- "greek",
12522
- "latin",
12523
- "greek-ext",
12524
- "vietnamese"
12525
- ],
12526
- "version": "v6",
12527
- "lastModified": "2016-10-05",
12528
- "files": {
12529
- "100": "http://fonts.gstatic.com/s/robotoslab/v6/MEz38VLIFL-t46JUtkIEgIAWxXGWZ3yJw6KhWS7MxOk.ttf",
12530
- "300": "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJS9-WlPSxbfiI49GsXo3q0g.ttf",
12531
- "regular": "http://fonts.gstatic.com/s/robotoslab/v6/3__ulTNA7unv0UtplybPiqCWcynf_cDxXwCLxiixG1c.ttf",
12532
- "700": "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
12533
- }
12534
- },
12535
- {
12536
- "kind": "webfonts#webfont",
12537
- "family": "Rochester",
12538
- "category": "handwriting",
12539
- "variants": [
12540
- "regular"
12541
- ],
12542
- "subsets": [
12543
- "latin"
12544
- ],
12545
- "version": "v6",
12546
- "lastModified": "2016-10-05",
12547
- "files": {
12548
- "regular": "http://fonts.gstatic.com/s/rochester/v6/bnj8tmQBiOkdji_G_yvypg.ttf"
12549
- }
12550
- },
12551
- {
12552
- "kind": "webfonts#webfont",
12553
- "family": "Rock Salt",
12554
- "category": "handwriting",
12555
- "variants": [
12556
- "regular"
12557
- ],
12558
- "subsets": [
12559
- "latin"
12560
- ],
12561
- "version": "v6",
12562
- "lastModified": "2016-10-05",
12563
- "files": {
12564
- "regular": "http://fonts.gstatic.com/s/rocksalt/v6/Zy7JF9h9WbhD9V3SFMQ1UQ.ttf"
12565
- }
12566
- },
12567
- {
12568
- "kind": "webfonts#webfont",
12569
- "family": "Rokkitt",
12570
- "category": "serif",
12571
- "variants": [
12572
- "regular",
12573
- "700"
12574
- ],
12575
- "subsets": [
12576
- "latin"
12577
- ],
12578
- "version": "v10",
12579
- "lastModified": "2016-05-31",
12580
- "files": {
12581
- "regular": "http://fonts.gstatic.com/s/rokkitt/v10/GMA7Z_ToF8uSvpZAgnp_VQ.ttf",
12582
- "700": "http://fonts.gstatic.com/s/rokkitt/v10/gxlo-sr3rPmvgSixYog_ofesZW2xOQ-xsNqO47m55DA.ttf"
12583
- }
12584
- },
12585
- {
12586
- "kind": "webfonts#webfont",
12587
- "family": "Romanesco",
12588
- "category": "handwriting",
12589
- "variants": [
12590
- "regular"
12591
- ],
12592
- "subsets": [
12593
- "latin-ext",
12594
- "latin"
12595
- ],
12596
- "version": "v5",
12597
- "lastModified": "2016-05-31",
12598
- "files": {
12599
- "regular": "http://fonts.gstatic.com/s/romanesco/v5/2udIjUrpK_CPzYSxRVzD4Q.ttf"
12600
- }
12601
- },
12602
- {
12603
- "kind": "webfonts#webfont",
12604
- "family": "Ropa Sans",
12605
- "category": "sans-serif",
12606
- "variants": [
12607
- "regular",
12608
- "italic"
12609
- ],
12610
- "subsets": [
12611
- "latin-ext",
12612
- "latin"
12613
- ],
12614
- "version": "v5",
12615
- "lastModified": "2016-05-31",
12616
- "files": {
12617
- "regular": "http://fonts.gstatic.com/s/ropasans/v5/Gba7ZzVBuhg6nX_AoSwlkQ.ttf",
12618
- "italic": "http://fonts.gstatic.com/s/ropasans/v5/V1zbhZQscNrh63dy5Jk2nqCWcynf_cDxXwCLxiixG1c.ttf"
12619
- }
12620
- },
12621
- {
12622
- "kind": "webfonts#webfont",
12623
- "family": "Rosario",
12624
- "category": "sans-serif",
12625
- "variants": [
12626
- "regular",
12627
- "italic",
12628
- "700",
12629
- "700italic"
12630
- ],
12631
- "subsets": [
12632
- "latin"
12633
- ],
12634
- "version": "v11",
12635
- "lastModified": "2016-05-31",
12636
- "files": {
12637
- "regular": "http://fonts.gstatic.com/s/rosario/v11/bL-cEh8dXtDupB2WccA2LA.ttf",
12638
- "italic": "http://fonts.gstatic.com/s/rosario/v11/pkflNy18HEuVVx4EOjeb_Q.ttf",
12639
- "700": "http://fonts.gstatic.com/s/rosario/v11/nrS6PJvDWN42RP4TFWccd_esZW2xOQ-xsNqO47m55DA.ttf",
12640
- "700italic": "http://fonts.gstatic.com/s/rosario/v11/EOgFX2Va5VGrkhn_eDpIRS3USBnSvpkopQaUR-2r7iU.ttf"
12641
- }
12642
- },
12643
- {
12644
- "kind": "webfonts#webfont",
12645
- "family": "Rosarivo",
12646
- "category": "serif",
12647
- "variants": [
12648
- "regular",
12649
- "italic"
12650
- ],
12651
- "subsets": [
12652
- "latin-ext",
12653
- "latin"
12654
- ],
12655
- "version": "v4",
12656
- "lastModified": "2016-05-31",
12657
- "files": {
12658
- "regular": "http://fonts.gstatic.com/s/rosarivo/v4/EmPiINK0qyqc7KSsNjJamA.ttf",
12659
- "italic": "http://fonts.gstatic.com/s/rosarivo/v4/u3VuWsWQlX1pDqsbz4paNPesZW2xOQ-xsNqO47m55DA.ttf"
12660
- }
12661
- },
12662
- {
12663
- "kind": "webfonts#webfont",
12664
- "family": "Rouge Script",
12665
- "category": "handwriting",
12666
- "variants": [
12667
- "regular"
12668
- ],
12669
- "subsets": [
12670
- "latin"
12671
- ],
12672
- "version": "v5",
12673
- "lastModified": "2016-05-31",
12674
- "files": {
12675
- "regular": "http://fonts.gstatic.com/s/rougescript/v5/AgXDSqZJmy12qS0ixjs6Vy3USBnSvpkopQaUR-2r7iU.ttf"
12676
- }
12677
- },
12678
- {
12679
- "kind": "webfonts#webfont",
12680
- "family": "Rozha One",
12681
- "category": "serif",
12682
- "variants": [
12683
- "regular"
12684
- ],
12685
- "subsets": [
12686
- "latin-ext",
12687
- "devanagari",
12688
- "latin"
12689
- ],
12690
- "version": "v2",
12691
- "lastModified": "2016-05-31",
12692
- "files": {
12693
- "regular": "http://fonts.gstatic.com/s/rozhaone/v2/PyrMHQ6lucEIxwKmhqsX8A.ttf"
12694
- }
12695
- },
12696
- {
12697
- "kind": "webfonts#webfont",
12698
- "family": "Rubik",
12699
- "category": "sans-serif",
12700
- "variants": [
12701
- "300",
12702
- "300italic",
12703
- "regular",
12704
- "italic",
12705
- "500",
12706
- "500italic",
12707
- "700",
12708
- "700italic",
12709
- "900",
12710
- "900italic"
12711
- ],
12712
- "subsets": [
12713
- "latin-ext",
12714
- "hebrew",
12715
- "cyrillic",
12716
- "latin"
12717
- ],
12718
- "version": "v2",
12719
- "lastModified": "2016-06-02",
12720
- "files": {
12721
- "300": "http://fonts.gstatic.com/s/rubik/v2/o1vXYO8YwDpErHEAPAxpOg.ttf",
12722
- "300italic": "http://fonts.gstatic.com/s/rubik/v2/NyXDvUhvZLSWiVfGa5KM-vesZW2xOQ-xsNqO47m55DA.ttf",
12723
- "regular": "http://fonts.gstatic.com/s/rubik/v2/4sMyW_teKWHB3K8Hm-Il6A.ttf",
12724
- "italic": "http://fonts.gstatic.com/s/rubik/v2/elD65ddI0qvNcCh42b1Iqg.ttf",
12725
- "500": "http://fonts.gstatic.com/s/rubik/v2/D4HihERG27s-BJrQ4dvkbw.ttf",
12726
- "500italic": "http://fonts.gstatic.com/s/rubik/v2/0hcxMdoMbXtHiEM1ebdN6PesZW2xOQ-xsNqO47m55DA.ttf",
12727
- "700": "http://fonts.gstatic.com/s/rubik/v2/m1GGHcpLe6Mb0_sAyjXE4g.ttf",
12728
- "700italic": "http://fonts.gstatic.com/s/rubik/v2/R4g_rs714cUXVZcdnRdHw_esZW2xOQ-xsNqO47m55DA.ttf",
12729
- "900": "http://fonts.gstatic.com/s/rubik/v2/mOHfPRl5uP4vw7-5-dbnng.ttf",
12730
- "900italic": "http://fonts.gstatic.com/s/rubik/v2/HH1b7kBbwInqlw8OQxRE5vesZW2xOQ-xsNqO47m55DA.ttf"
12731
- }
12732
- },
12733
- {
12734
- "kind": "webfonts#webfont",
12735
- "family": "Rubik Mono One",
12736
- "category": "sans-serif",
12737
- "variants": [
12738
- "regular"
12739
- ],
12740
- "subsets": [
12741
- "latin-ext",
12742
- "cyrillic",
12743
- "latin"
12744
- ],
12745
- "version": "v5",
12746
- "lastModified": "2016-05-31",
12747
- "files": {
12748
- "regular": "http://fonts.gstatic.com/s/rubikmonoone/v5/e_cupPtD4BrZzotubJD7UbAREgn5xbW23GEXXnhMQ5Y.ttf"
12749
- }
12750
- },
12751
- {
12752
- "kind": "webfonts#webfont",
12753
- "family": "Rubik One",
12754
- "category": "sans-serif",
12755
- "variants": [
12756
- "regular"
12757
- ],
12758
- "subsets": [
12759
- "latin-ext",
12760
- "cyrillic",
12761
- "latin"
12762
- ],
12763
- "version": "v4",
12764
- "lastModified": "2016-05-31",
12765
- "files": {
12766
- "regular": "http://fonts.gstatic.com/s/rubikone/v4/Zs6TtctNRSIR8T5PO018rQ.ttf"
12767
- }
12768
- },
12769
- {
12770
- "kind": "webfonts#webfont",
12771
- "family": "Ruda",
12772
- "category": "sans-serif",
12773
- "variants": [
12774
- "regular",
12775
- "700",
12776
- "900"
12777
- ],
12778
- "subsets": [
12779
- "latin-ext",
12780
- "latin"
12781
- ],
12782
- "version": "v7",
12783
- "lastModified": "2016-05-31",
12784
- "files": {
12785
- "regular": "http://fonts.gstatic.com/s/ruda/v7/jPEIPB7DM2DNK_uBGv2HGw.ttf",
12786
- "700": "http://fonts.gstatic.com/s/ruda/v7/JABOu1SYOHcGXVejUq4w6g.ttf",
12787
- "900": "http://fonts.gstatic.com/s/ruda/v7/Uzusv-enCjoIrznlJJaBRw.ttf"
12788
- }
12789
- },
12790
- {
12791
- "kind": "webfonts#webfont",
12792
- "family": "Rufina",
12793
- "category": "serif",
12794
- "variants": [
12795
- "regular",
12796
- "700"
12797
- ],
12798
- "subsets": [
12799
- "latin-ext",
12800
- "latin"
12801
- ],
12802
- "version": "v4",
12803
- "lastModified": "2016-05-31",
12804
- "files": {
12805
- "regular": "http://fonts.gstatic.com/s/rufina/v4/s9IFr_fIemiohfZS-ZRDbQ.ttf",
12806
- "700": "http://fonts.gstatic.com/s/rufina/v4/D0RUjXFr55y4MVZY2Ww_RA.ttf"
12807
- }
12808
- },
12809
- {
12810
- "kind": "webfonts#webfont",
12811
- "family": "Ruge Boogie",
12812
- "category": "handwriting",
12813
- "variants": [
12814
- "regular"
12815
- ],
12816
- "subsets": [
12817
- "latin-ext",
12818
- "latin"
12819
- ],
12820
- "version": "v7",
12821
- "lastModified": "2016-05-31",
12822
- "files": {
12823
- "regular": "http://fonts.gstatic.com/s/rugeboogie/v7/U-TTmltL8aENLVIqYbI5QaCWcynf_cDxXwCLxiixG1c.ttf"
12824
- }
12825
- },
12826
- {
12827
- "kind": "webfonts#webfont",
12828
- "family": "Ruluko",
12829
- "category": "sans-serif",
12830
- "variants": [
12831
- "regular"
12832
- ],
12833
- "subsets": [
12834
- "latin-ext",
12835
- "latin"
12836
- ],
12837
- "version": "v4",
12838
- "lastModified": "2016-05-31",
12839
- "files": {
12840
- "regular": "http://fonts.gstatic.com/s/ruluko/v4/lv4cMwJtrx_dzmlK5SDc1g.ttf"
12841
- }
12842
- },
12843
- {
12844
- "kind": "webfonts#webfont",
12845
- "family": "Rum Raisin",
12846
- "category": "sans-serif",
12847
- "variants": [
12848
- "regular"
12849
- ],
12850
- "subsets": [
12851
- "latin-ext",
12852
- "latin"
12853
- ],
12854
- "version": "v4",
12855
- "lastModified": "2016-05-31",
12856
- "files": {
12857
- "regular": "http://fonts.gstatic.com/s/rumraisin/v4/kDiL-ntDOEq26B7kYM7cx_esZW2xOQ-xsNqO47m55DA.ttf"
12858
- }
12859
- },
12860
- {
12861
- "kind": "webfonts#webfont",
12862
- "family": "Ruslan Display",
12863
- "category": "display",
12864
- "variants": [
12865
- "regular"
12866
- ],
12867
- "subsets": [
12868
- "latin-ext",
12869
- "cyrillic",
12870
- "latin"
12871
- ],
12872
- "version": "v7",
12873
- "lastModified": "2016-05-31",
12874
- "files": {
12875
- "regular": "http://fonts.gstatic.com/s/ruslandisplay/v7/SREdhlyLNUfU1VssRBfs3rgH88D3l9N4auRNHrNS708.ttf"
12876
- }
12877
- },
12878
- {
12879
- "kind": "webfonts#webfont",
12880
- "family": "Russo One",
12881
- "category": "sans-serif",
12882
- "variants": [
12883
- "regular"
12884
- ],
12885
- "subsets": [
12886
- "latin-ext",
12887
- "cyrillic",
12888
- "latin"
12889
- ],
12890
- "version": "v5",
12891
- "lastModified": "2016-05-31",
12892
- "files": {
12893
- "regular": "http://fonts.gstatic.com/s/russoone/v5/zfwxZ--UhUc7FVfgT21PRQ.ttf"
12894
- }
12895
- },
12896
- {
12897
- "kind": "webfonts#webfont",
12898
- "family": "Ruthie",
12899
- "category": "handwriting",
12900
- "variants": [
12901
- "regular"
12902
- ],
12903
- "subsets": [
12904
- "latin-ext",
12905
- "latin"
12906
- ],
12907
- "version": "v6",
12908
- "lastModified": "2016-05-31",
12909
- "files": {
12910
- "regular": "http://fonts.gstatic.com/s/ruthie/v6/vJ2LorukHSbWYoEs5juivg.ttf"
12911
- }
12912
- },
12913
- {
12914
- "kind": "webfonts#webfont",
12915
- "family": "Rye",
12916
- "category": "display",
12917
- "variants": [
12918
- "regular"
12919
- ],
12920
- "subsets": [
12921
- "latin-ext",
12922
- "latin"
12923
- ],
12924
- "version": "v4",
12925
- "lastModified": "2016-06-07",
12926
- "files": {
12927
- "regular": "http://fonts.gstatic.com/s/rye/v4/VUrJlpPpSZxspl3w_yNOrQ.ttf"
12928
- }
12929
- },
12930
- {
12931
- "kind": "webfonts#webfont",
12932
- "family": "Sacramento",
12933
- "category": "handwriting",
12934
- "variants": [
12935
- "regular"
12936
- ],
12937
- "subsets": [
12938
- "latin-ext",
12939
- "latin"
12940
- ],
12941
- "version": "v4",
12942
- "lastModified": "2016-05-31",
12943
- "files": {
12944
- "regular": "http://fonts.gstatic.com/s/sacramento/v4/_kv-qycSHMNdhjiv0Kj7BvesZW2xOQ-xsNqO47m55DA.ttf"
12945
- }
12946
- },
12947
- {
12948
- "kind": "webfonts#webfont",
12949
- "family": "Sahitya",
12950
- "category": "serif",
12951
- "variants": [
12952
- "regular",
12953
- "700"
12954
- ],
12955
- "subsets": [
12956
- "devanagari",
12957
- "latin"
12958
- ],
12959
- "version": "v1",
12960
- "lastModified": "2016-05-31",
12961
- "files": {
12962
- "regular": "http://fonts.gstatic.com/s/sahitya/v1/wQWULcDbZqljdTfjOUtDvw.ttf",
12963
- "700": "http://fonts.gstatic.com/s/sahitya/v1/Zm5hNvMwUyN3tC4GMkH1l_esZW2xOQ-xsNqO47m55DA.ttf"
12964
- }
12965
- },
12966
- {
12967
- "kind": "webfonts#webfont",
12968
- "family": "Sail",
12969
- "category": "display",
12970
- "variants": [
12971
- "regular"
12972
- ],
12973
- "subsets": [
12974
- "latin-ext",
12975
- "latin"
12976
- ],
12977
- "version": "v7",
12978
- "lastModified": "2016-05-31",
12979
- "files": {
12980
- "regular": "http://fonts.gstatic.com/s/sail/v7/iuEoG6kt-bePGvtdpL0GUQ.ttf"
12981
- }
12982
- },
12983
- {
12984
- "kind": "webfonts#webfont",
12985
- "family": "Salsa",
12986
- "category": "display",
12987
- "variants": [
12988
- "regular"
12989
- ],
12990
- "subsets": [
12991
- "latin"
12992
- ],
12993
- "version": "v6",
12994
- "lastModified": "2016-05-31",
12995
- "files": {
12996
- "regular": "http://fonts.gstatic.com/s/salsa/v6/BnpUCBmYdvggScEPs5JbpA.ttf"
12997
- }
12998
- },
12999
- {
13000
- "kind": "webfonts#webfont",
13001
- "family": "Sanchez",
13002
- "category": "serif",
13003
- "variants": [
13004
- "regular",
13005
- "italic"
13006
- ],
13007
- "subsets": [
13008
- "latin-ext",
13009
- "latin"
13010
- ],
13011
- "version": "v4",
13012
- "lastModified": "2016-05-31",
13013
- "files": {
13014
- "regular": "http://fonts.gstatic.com/s/sanchez/v4/BEL8ao-E2LJ5eHPLB2UAiw.ttf",
13015
- "italic": "http://fonts.gstatic.com/s/sanchez/v4/iSrhkWLexUZzDeNxNEHtzA.ttf"
13016
- }
13017
- },
13018
- {
13019
- "kind": "webfonts#webfont",
13020
- "family": "Sancreek",
13021
- "category": "display",
13022
- "variants": [
13023
- "regular"
13024
- ],
13025
- "subsets": [
13026
- "latin-ext",
13027
- "latin"
13028
- ],
13029
- "version": "v7",
13030
- "lastModified": "2016-05-31",
13031
- "files": {
13032
- "regular": "http://fonts.gstatic.com/s/sancreek/v7/8ZacBMraWMvHly4IJI3esw.ttf"
13033
- }
13034
- },
13035
- {
13036
- "kind": "webfonts#webfont",
13037
- "family": "Sansita One",
13038
- "category": "display",
13039
- "variants": [
13040
- "regular"
13041
- ],
13042
- "subsets": [
13043
- "latin"
13044
- ],
13045
- "version": "v6",
13046
- "lastModified": "2016-05-31",
13047
- "files": {
13048
- "regular": "http://fonts.gstatic.com/s/sansitaone/v6/xWqf68oB50JXqGIRR0h2hqCWcynf_cDxXwCLxiixG1c.ttf"
13049
- }
13050
- },
13051
- {
13052
- "kind": "webfonts#webfont",
13053
- "family": "Sarala",
13054
- "category": "sans-serif",
13055
- "variants": [
13056
- "regular",
13057
- "700"
13058
- ],
13059
- "subsets": [
13060
- "latin-ext",
13061
- "devanagari",
13062
- "latin"
13063
- ],
13064
- "version": "v1",
13065
- "lastModified": "2016-05-31",
13066
- "files": {
13067
- "regular": "http://fonts.gstatic.com/s/sarala/v1/ohip9lixCHoBab7hTtgLnw.ttf",
13068
- "700": "http://fonts.gstatic.com/s/sarala/v1/hpc9cz8KYsazwq2In_oJYw.ttf"
13069
- }
13070
- },
13071
- {
13072
- "kind": "webfonts#webfont",
13073
- "family": "Sarina",
13074
- "category": "display",
13075
- "variants": [
13076
- "regular"
13077
- ],
13078
- "subsets": [
13079
- "latin-ext",
13080
- "latin"
13081
- ],
13082
- "version": "v5",
13083
- "lastModified": "2016-05-31",
13084
- "files": {
13085
- "regular": "http://fonts.gstatic.com/s/sarina/v5/XYtRfaSknHIU3NHdfTdXoQ.ttf"
13086
- }
13087
- },
13088
- {
13089
- "kind": "webfonts#webfont",
13090
- "family": "Sarpanch",
13091
- "category": "sans-serif",
13092
- "variants": [
13093
- "regular",
13094
- "500",
13095
- "600",
13096
- "700",
13097
- "800",
13098
- "900"
13099
- ],
13100
- "subsets": [
13101
- "latin-ext",
13102
- "devanagari",
13103
- "latin"
13104
- ],
13105
- "version": "v1",
13106
- "lastModified": "2016-05-31",
13107
- "files": {
13108
- "regular": "http://fonts.gstatic.com/s/sarpanch/v1/YMBZdT27b6O5a1DADbAGSg.ttf",
13109
- "500": "http://fonts.gstatic.com/s/sarpanch/v1/Ov7BxSrFSZYrfuJxL1LzQaCWcynf_cDxXwCLxiixG1c.ttf",
13110
- "600": "http://fonts.gstatic.com/s/sarpanch/v1/WTnP2wnc0qSbUaaDG-2OQ6CWcynf_cDxXwCLxiixG1c.ttf",
13111
- "700": "http://fonts.gstatic.com/s/sarpanch/v1/57kYsSpovYmFaEt2hsZhv6CWcynf_cDxXwCLxiixG1c.ttf",
13112
- "800": "http://fonts.gstatic.com/s/sarpanch/v1/OKyqPLjdnuVghR-1TV6RzaCWcynf_cDxXwCLxiixG1c.ttf",
13113
- "900": "http://fonts.gstatic.com/s/sarpanch/v1/JhYc2cr6kqWTo_P0vfvJR6CWcynf_cDxXwCLxiixG1c.ttf"
13114
- }
13115
- },
13116
- {
13117
- "kind": "webfonts#webfont",
13118
- "family": "Satisfy",
13119
- "category": "handwriting",
13120
- "variants": [
13121
- "regular"
13122
- ],
13123
- "subsets": [
13124
- "latin"
13125
- ],
13126
- "version": "v6",
13127
- "lastModified": "2016-10-05",
13128
- "files": {
13129
- "regular": "http://fonts.gstatic.com/s/satisfy/v6/PRlyepkd-JCGHiN8e9WV2w.ttf"
13130
- }
13131
- },
13132
- {
13133
- "kind": "webfonts#webfont",
13134
- "family": "Scada",
13135
- "category": "sans-serif",
13136
- "variants": [
13137
- "regular",
13138
- "italic",
13139
- "700",
13140
- "700italic"
13141
- ],
13142
- "subsets": [
13143
- "latin-ext",
13144
- "cyrillic",
13145
- "latin"
13146
- ],
13147
- "version": "v4",
13148
- "lastModified": "2016-05-31",
13149
- "files": {
13150
- "regular": "http://fonts.gstatic.com/s/scada/v4/iZNC3ZEYwe3je6H-28d5Ug.ttf",
13151
- "italic": "http://fonts.gstatic.com/s/scada/v4/PCGyLT1qNawkOUQ3uHFhBw.ttf",
13152
- "700": "http://fonts.gstatic.com/s/scada/v4/t6XNWdMdVWUz93EuRVmifQ.ttf",
13153
- "700italic": "http://fonts.gstatic.com/s/scada/v4/kLrBIf7V4mDMwcd_Yw7-D_esZW2xOQ-xsNqO47m55DA.ttf"
13154
- }
13155
- },
13156
- {
13157
- "kind": "webfonts#webfont",
13158
- "family": "Scheherazade",
13159
- "category": "serif",
13160
- "variants": [
13161
- "regular",
13162
- "700"
13163
- ],
13164
- "subsets": [
13165
- "arabic",
13166
- "latin"
13167
- ],
13168
- "version": "v12",
13169
- "lastModified": "2016-05-31",
13170
- "files": {
13171
- "regular": "http://fonts.gstatic.com/s/scheherazade/v12/AuKlqGWzUC-8XqMOmsqXiy3USBnSvpkopQaUR-2r7iU.ttf",
13172
- "700": "http://fonts.gstatic.com/s/scheherazade/v12/C1wtT46acJkQxc6mPHwvHED2ttfZwueP-QU272T9-k4.ttf"
13173
- }
13174
- },
13175
- {
13176
- "kind": "webfonts#webfont",
13177
- "family": "Schoolbell",
13178
- "category": "handwriting",
13179
- "variants": [
13180
- "regular"
13181
- ],
13182
- "subsets": [
13183
- "latin"
13184
- ],
13185
- "version": "v6",
13186
- "lastModified": "2016-10-05",
13187
- "files": {
13188
- "regular": "http://fonts.gstatic.com/s/schoolbell/v6/95-3djEuubb3cJx-6E7j4vesZW2xOQ-xsNqO47m55DA.ttf"
13189
- }
13190
- },
13191
- {
13192
- "kind": "webfonts#webfont",
13193
- "family": "Scope One",
13194
- "category": "serif",
13195
- "variants": [
13196
- "regular"
13197
- ],
13198
- "subsets": [
13199
- "latin-ext",
13200
- "latin"
13201
- ],
13202
- "version": "v2",
13203
- "lastModified": "2016-06-20",
13204
- "files": {
13205
- "regular": "http://fonts.gstatic.com/s/scopeone/v2/ge7dY8Yht-n7_1cLHtoT3w.ttf"
13206
- }
13207
- },
13208
- {
13209
- "kind": "webfonts#webfont",
13210
- "family": "Seaweed Script",
13211
- "category": "display",
13212
- "variants": [
13213
- "regular"
13214
- ],
13215
- "subsets": [
13216
- "latin-ext",
13217
- "latin"
13218
- ],
13219
- "version": "v4",
13220
- "lastModified": "2016-05-31",
13221
- "files": {
13222
- "regular": "http://fonts.gstatic.com/s/seaweedscript/v4/eorWAPpOvvWrPw5IHwE60BnpV0hQCek3EmWnCPrvGRM.ttf"
13223
- }
13224
- },
13225
- {
13226
- "kind": "webfonts#webfont",
13227
- "family": "Secular One",
13228
- "category": "sans-serif",
13229
- "variants": [
13230
- "regular"
13231
- ],
13232
- "subsets": [
13233
- "latin-ext",
13234
- "hebrew",
13235
- "latin"
13236
- ],
13237
- "version": "v1",
13238
- "lastModified": "2016-06-20",
13239
- "files": {
13240
- "regular": "http://fonts.gstatic.com/s/secularone/v1/yW9qikjpt_X0fh5oQJcdo6CWcynf_cDxXwCLxiixG1c.ttf"
13241
- }
13242
- },
13243
- {
13244
- "kind": "webfonts#webfont",
13245
- "family": "Sevillana",
13246
- "category": "display",
13247
- "variants": [
13248
- "regular"
13249
- ],
13250
- "subsets": [
13251
- "latin-ext",
13252
- "latin"
13253
- ],
13254
- "version": "v4",
13255
- "lastModified": "2016-05-31",
13256
- "files": {
13257
- "regular": "http://fonts.gstatic.com/s/sevillana/v4/6m1Nh35oP7YEt00U80Smiw.ttf"
13258
- }
13259
- },
13260
- {
13261
- "kind": "webfonts#webfont",
13262
- "family": "Seymour One",
13263
- "category": "sans-serif",
13264
- "variants": [
13265
- "regular"
13266
- ],
13267
- "subsets": [
13268
- "latin-ext",
13269
- "cyrillic",
13270
- "latin"
13271
- ],
13272
- "version": "v4",
13273
- "lastModified": "2016-06-07",
13274
- "files": {
13275
- "regular": "http://fonts.gstatic.com/s/seymourone/v4/HrdG2AEG_870Xb7xBVv6C6CWcynf_cDxXwCLxiixG1c.ttf"
13276
- }
13277
- },
13278
- {
13279
- "kind": "webfonts#webfont",
13280
- "family": "Shadows Into Light",
13281
- "category": "handwriting",
13282
- "variants": [
13283
- "regular"
13284
- ],
13285
- "subsets": [
13286
- "latin"
13287
- ],
13288
- "version": "v6",
13289
- "lastModified": "2016-06-07",
13290
- "files": {
13291
- "regular": "http://fonts.gstatic.com/s/shadowsintolight/v6/clhLqOv7MXn459PTh0gXYAW_5bEze-iLRNvGrRpJsfM.ttf"
13292
- }
13293
- },
13294
- {
13295
- "kind": "webfonts#webfont",
13296
- "family": "Shadows Into Light Two",
13297
- "category": "handwriting",
13298
- "variants": [
13299
- "regular"
13300
- ],
13301
- "subsets": [
13302
- "latin-ext",
13303
- "latin"
13304
- ],
13305
- "version": "v4",
13306
- "lastModified": "2016-06-07",
13307
- "files": {
13308
- "regular": "http://fonts.gstatic.com/s/shadowsintolighttwo/v4/gDxHeefcXIo-lOuZFCn2xVQrZk-Pga5KeEE_oZjkQjQ.ttf"
13309
- }
13310
- },
13311
- {
13312
- "kind": "webfonts#webfont",
13313
- "family": "Shanti",
13314
- "category": "sans-serif",
13315
- "variants": [
13316
- "regular"
13317
- ],
13318
- "subsets": [
13319
- "latin"
13320
- ],
13321
- "version": "v8",
13322
- "lastModified": "2016-05-31",
13323
- "files": {
13324
- "regular": "http://fonts.gstatic.com/s/shanti/v8/lc4nG_JG6Q-2FQSOMMhb_w.ttf"
13325
- }
13326
- },
13327
- {
13328
- "kind": "webfonts#webfont",
13329
- "family": "Share",
13330
- "category": "display",
13331
- "variants": [
13332
- "regular",
13333
- "italic",
13334
- "700",
13335
- "700italic"
13336
- ],
13337
- "subsets": [
13338
- "latin-ext",
13339
- "latin"
13340
- ],
13341
- "version": "v6",
13342
- "lastModified": "2016-05-31",
13343
- "files": {
13344
- "regular": "http://fonts.gstatic.com/s/share/v6/1ytD7zSb_-g9I2GG67vmVw.ttf",
13345
- "italic": "http://fonts.gstatic.com/s/share/v6/a9YGdQWFRlNJ0zClJVaY3Q.ttf",
13346
- "700": "http://fonts.gstatic.com/s/share/v6/XrU8e7a1YKurguyY2azk1Q.ttf",
13347
- "700italic": "http://fonts.gstatic.com/s/share/v6/A992-bLVYwAflKu6iaznufesZW2xOQ-xsNqO47m55DA.ttf"
13348
- }
13349
- },
13350
- {
13351
- "kind": "webfonts#webfont",
13352
- "family": "Share Tech",
13353
- "category": "sans-serif",
13354
- "variants": [
13355
- "regular"
13356
- ],
13357
- "subsets": [
13358
- "latin"
13359
- ],
13360
- "version": "v5",
13361
- "lastModified": "2016-05-31",
13362
- "files": {
13363
- "regular": "http://fonts.gstatic.com/s/sharetech/v5/Dq3DuZ5_0SW3oEfAWFpen_esZW2xOQ-xsNqO47m55DA.ttf"
13364
- }
13365
- },
13366
- {
13367
- "kind": "webfonts#webfont",
13368
- "family": "Share Tech Mono",
13369
- "category": "monospace",
13370
- "variants": [
13371
- "regular"
13372
- ],
13373
- "subsets": [
13374
- "latin"
13375
- ],
13376
- "version": "v6",
13377
- "lastModified": "2016-05-31",
13378
- "files": {
13379
- "regular": "http://fonts.gstatic.com/s/sharetechmono/v6/RQxK-3RA0Lnf3gnnnNrAscwD6PD0c3_abh9zHKQtbGU.ttf"
13380
- }
13381
- },
13382
- {
13383
- "kind": "webfonts#webfont",
13384
- "family": "Shojumaru",
13385
- "category": "display",
13386
- "variants": [
13387
- "regular"
13388
- ],
13389
- "subsets": [
13390
- "latin-ext",
13391
- "latin"
13392
- ],
13393
- "version": "v4",
13394
- "lastModified": "2016-05-31",
13395
- "files": {
13396
- "regular": "http://fonts.gstatic.com/s/shojumaru/v4/WP8cxonzQQVAoI3RJQ2wug.ttf"
13397
- }
13398
- },
13399
- {
13400
- "kind": "webfonts#webfont",
13401
- "family": "Short Stack",
13402
- "category": "handwriting",
13403
- "variants": [
13404
- "regular"
13405
- ],
13406
- "subsets": [
13407
- "latin"
13408
- ],
13409
- "version": "v6",
13410
- "lastModified": "2016-06-07",
13411
- "files": {
13412
- "regular": "http://fonts.gstatic.com/s/shortstack/v6/v4dXPI0Rm8XN9gk4SDdqlqCWcynf_cDxXwCLxiixG1c.ttf"
13413
- }
13414
- },
13415
- {
13416
- "kind": "webfonts#webfont",
13417
- "family": "Shrikhand",
13418
- "category": "display",
13419
- "variants": [
13420
- "regular"
13421
- ],
13422
- "subsets": [
13423
- "gujarati",
13424
- "latin-ext",
13425
- "latin"
13426
- ],
13427
- "version": "v1",
13428
- "lastModified": "2016-06-20",
13429
- "files": {
13430
- "regular": "http://fonts.gstatic.com/s/shrikhand/v1/45jwHiwIDTWCy3Ir85vvKA.ttf"
13431
- }
13432
- },
13433
- {
13434
- "kind": "webfonts#webfont",
13435
- "family": "Siemreap",
13436
- "category": "display",
13437
- "variants": [
13438
- "regular"
13439
- ],
13440
- "subsets": [
13441
- "khmer"
13442
- ],
13443
- "version": "v9",
13444
- "lastModified": "2016-05-31",
13445
- "files": {
13446
- "regular": "http://fonts.gstatic.com/s/siemreap/v9/JSK-mOIsXwxo-zE9XDDl_g.ttf"
13447
- }
13448
- },
13449
- {
13450
- "kind": "webfonts#webfont",
13451
- "family": "Sigmar One",
13452
- "category": "display",
13453
- "variants": [
13454
- "regular"
13455
- ],
13456
- "subsets": [
13457
- "latin"
13458
- ],
13459
- "version": "v6",
13460
- "lastModified": "2016-05-31",
13461
- "files": {
13462
- "regular": "http://fonts.gstatic.com/s/sigmarone/v6/oh_5NxD5JBZksdo2EntKefesZW2xOQ-xsNqO47m55DA.ttf"
13463
- }
13464
- },
13465
- {
13466
- "kind": "webfonts#webfont",
13467
- "family": "Signika",
13468
- "category": "sans-serif",
13469
- "variants": [
13470
- "300",
13471
- "regular",
13472
- "600",
13473
- "700"
13474
- ],
13475
- "subsets": [
13476
- "latin-ext",
13477
- "latin"
13478
- ],
13479
- "version": "v6",
13480
- "lastModified": "2016-06-07",
13481
- "files": {
13482
- "300": "http://fonts.gstatic.com/s/signika/v6/0wDPonOzsYeEo-1KO78w4fesZW2xOQ-xsNqO47m55DA.ttf",
13483
- "regular": "http://fonts.gstatic.com/s/signika/v6/WvDswbww0oAtvBg2l1L-9w.ttf",
13484
- "600": "http://fonts.gstatic.com/s/signika/v6/lQMOF6NUN2ooR7WvB7tADvesZW2xOQ-xsNqO47m55DA.ttf",
13485
- "700": "http://fonts.gstatic.com/s/signika/v6/lEcnfPBICWJPv5BbVNnFJPesZW2xOQ-xsNqO47m55DA.ttf"
13486
- }
13487
- },
13488
- {
13489
- "kind": "webfonts#webfont",
13490
- "family": "Signika Negative",
13491
- "category": "sans-serif",
13492
- "variants": [
13493
- "300",
13494
- "regular",
13495
- "600",
13496
- "700"
13497
- ],
13498
- "subsets": [
13499
- "latin-ext",
13500
- "latin"
13501
- ],
13502
- "version": "v5",
13503
- "lastModified": "2016-06-07",
13504
- "files": {
13505
- "300": "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FjYFXpUPtCmIEFDvjUnLLaI.ttf",
13506
- "regular": "http://fonts.gstatic.com/s/signikanegative/v5/Z-Q1hzbY8uAo3TpTyPFMXVM1lnCWMnren5_v6047e5A.ttf",
13507
- "600": "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FrKLaDJM01OezSVA2R_O3qI.ttf",
13508
- "700": "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FpYzPxtVvobH1w3hEppR8WI.ttf"
13509
- }
13510
- },
13511
- {
13512
- "kind": "webfonts#webfont",
13513
- "family": "Simonetta",
13514
- "category": "display",
13515
- "variants": [
13516
- "regular",
13517
- "italic",
13518
- "900",
13519
- "900italic"
13520
- ],
13521
- "subsets": [
13522
- "latin-ext",
13523
- "latin"
13524
- ],
13525
- "version": "v5",
13526
- "lastModified": "2016-05-31",
13527
- "files": {
13528
- "regular": "http://fonts.gstatic.com/s/simonetta/v5/fN8puNuahBo4EYMQgp12Yg.ttf",
13529
- "italic": "http://fonts.gstatic.com/s/simonetta/v5/ynxQ3FqfF_Nziwy3T9ZwL6CWcynf_cDxXwCLxiixG1c.ttf",
13530
- "900": "http://fonts.gstatic.com/s/simonetta/v5/22EwvvJ2r1VwVCxit5LcVi3USBnSvpkopQaUR-2r7iU.ttf",
13531
- "900italic": "http://fonts.gstatic.com/s/simonetta/v5/WUXOpCgBZaRPrWtMCpeKoienaqEuufTBk9XMKnKmgDA.ttf"
13532
- }
13533
- },
13534
- {
13535
- "kind": "webfonts#webfont",
13536
- "family": "Sintony",
13537
- "category": "sans-serif",
13538
- "variants": [
13539
- "regular",
13540
- "700"
13541
- ],
13542
- "subsets": [
13543
- "latin-ext",
13544
- "latin"
13545
- ],
13546
- "version": "v4",
13547
- "lastModified": "2016-05-31",
13548
- "files": {
13549
- "regular": "http://fonts.gstatic.com/s/sintony/v4/IDhCijoIMev2L6Lg5QsduQ.ttf",
13550
- "700": "http://fonts.gstatic.com/s/sintony/v4/zVXQB1wqJn6PE4dWXoYpvPesZW2xOQ-xsNqO47m55DA.ttf"
13551
- }
13552
- },
13553
- {
13554
- "kind": "webfonts#webfont",
13555
- "family": "Sirin Stencil",
13556
- "category": "display",
13557
- "variants": [
13558
- "regular"
13559
- ],
13560
- "subsets": [
13561
- "latin"
13562
- ],
13563
- "version": "v5",
13564
- "lastModified": "2016-05-31",
13565
- "files": {
13566
- "regular": "http://fonts.gstatic.com/s/sirinstencil/v5/pRpLdo0SawzO7MoBpvowsImg74kgS1F7KeR8rWhYwkU.ttf"
13567
- }
13568
- },
13569
- {
13570
- "kind": "webfonts#webfont",
13571
- "family": "Six Caps",
13572
- "category": "sans-serif",
13573
- "variants": [
13574
- "regular"
13575
- ],
13576
- "subsets": [
13577
- "latin"
13578
- ],
13579
- "version": "v7",
13580
- "lastModified": "2016-06-07",
13581
- "files": {
13582
- "regular": "http://fonts.gstatic.com/s/sixcaps/v7/_XeDnO0HOV8Er9u97If1tQ.ttf"
13583
- }
13584
- },
13585
- {
13586
- "kind": "webfonts#webfont",
13587
- "family": "Skranji",
13588
- "category": "display",
13589
- "variants": [
13590
- "regular",
13591
- "700"
13592
- ],
13593
- "subsets": [
13594
- "latin-ext",
13595
- "latin"
13596
- ],
13597
- "version": "v4",
13598
- "lastModified": "2016-06-07",
13599
- "files": {
13600
- "regular": "http://fonts.gstatic.com/s/skranji/v4/jnOLPS0iZmDL7dfWnW3nIw.ttf",
13601
- "700": "http://fonts.gstatic.com/s/skranji/v4/Lcrhg-fviVkxiEgoadsI1vesZW2xOQ-xsNqO47m55DA.ttf"
13602
- }
13603
- },
13604
- {
13605
- "kind": "webfonts#webfont",
13606
- "family": "Slabo 13px",
13607
- "category": "serif",
13608
- "variants": [
13609
- "regular"
13610
- ],
13611
- "subsets": [
13612
- "latin-ext",
13613
- "latin"
13614
- ],
13615
- "version": "v3",
13616
- "lastModified": "2016-05-31",
13617
- "files": {
13618
- "regular": "http://fonts.gstatic.com/s/slabo13px/v3/jPGWFTjRXfCSzy0qd1nqdvesZW2xOQ-xsNqO47m55DA.ttf"
13619
- }
13620
- },
13621
- {
13622
- "kind": "webfonts#webfont",
13623
- "family": "Slabo 27px",
13624
- "category": "serif",
13625
- "variants": [
13626
- "regular"
13627
- ],
13628
- "subsets": [
13629
- "latin-ext",
13630
- "latin"
13631
- ],
13632
- "version": "v3",
13633
- "lastModified": "2016-10-27",
13634
- "files": {
13635
- "regular": "http://fonts.gstatic.com/s/slabo27px/v3/gC0o8B9eU21EafNkXlRAfPesZW2xOQ-xsNqO47m55DA.ttf"
13636
- }
13637
- },
13638
- {
13639
- "kind": "webfonts#webfont",
13640
- "family": "Slackey",
13641
- "category": "display",
13642
- "variants": [
13643
- "regular"
13644
- ],
13645
- "subsets": [
13646
- "latin"
13647
- ],
13648
- "version": "v6",
13649
- "lastModified": "2016-10-05",
13650
- "files": {
13651
- "regular": "http://fonts.gstatic.com/s/slackey/v6/evRIMNhGVCRJvCPv4kteeA.ttf"
13652
- }
13653
- },
13654
- {
13655
- "kind": "webfonts#webfont",
13656
- "family": "Smokum",
13657
- "category": "display",
13658
- "variants": [
13659
- "regular"
13660
- ],
13661
- "subsets": [
13662
- "latin"
13663
- ],
13664
- "version": "v6",
13665
- "lastModified": "2016-10-05",
13666
- "files": {
13667
- "regular": "http://fonts.gstatic.com/s/smokum/v6/8YP4BuAcy97X8WfdKfxVRw.ttf"
13668
- }
13669
- },
13670
- {
13671
- "kind": "webfonts#webfont",
13672
- "family": "Smythe",
13673
- "category": "display",
13674
- "variants": [
13675
- "regular"
13676
- ],
13677
- "subsets": [
13678
- "latin"
13679
- ],
13680
- "version": "v7",
13681
- "lastModified": "2016-05-31",
13682
- "files": {
13683
- "regular": "http://fonts.gstatic.com/s/smythe/v7/yACD1gy_MpbB9Ft42fUvYw.ttf"
13684
- }
13685
- },
13686
- {
13687
- "kind": "webfonts#webfont",
13688
- "family": "Sniglet",
13689
- "category": "display",
13690
- "variants": [
13691
- "regular",
13692
- "800"
13693
- ],
13694
- "subsets": [
13695
- "latin-ext",
13696
- "latin"
13697
- ],
13698
- "version": "v8",
13699
- "lastModified": "2016-05-31",
13700
- "files": {
13701
- "regular": "http://fonts.gstatic.com/s/sniglet/v8/XWhyQLHH4SpCVsHRPRgu9w.ttf",
13702
- "800": "http://fonts.gstatic.com/s/sniglet/v8/NLF91nBmcEfkBgcEWbHFa_esZW2xOQ-xsNqO47m55DA.ttf"
13703
- }
13704
- },
13705
- {
13706
- "kind": "webfonts#webfont",
13707
- "family": "Snippet",
13708
- "category": "sans-serif",
13709
- "variants": [
13710
- "regular"
13711
- ],
13712
- "subsets": [
13713
- "latin"
13714
- ],
13715
- "version": "v6",
13716
- "lastModified": "2016-05-31",
13717
- "files": {
13718
- "regular": "http://fonts.gstatic.com/s/snippet/v6/eUcYMLq2GtHZovLlQH_9kA.ttf"
13719
- }
13720
- },
13721
- {
13722
- "kind": "webfonts#webfont",
13723
- "family": "Snowburst One",
13724
- "category": "display",
13725
- "variants": [
13726
- "regular"
13727
- ],
13728
- "subsets": [
13729
- "latin-ext",
13730
- "latin"
13731
- ],
13732
- "version": "v4",
13733
- "lastModified": "2016-06-07",
13734
- "files": {
13735
- "regular": "http://fonts.gstatic.com/s/snowburstone/v4/zSQzKOPukXRux2oTqfYJjIjjx0o0jr6fNXxPgYh_a8Q.ttf"
13736
- }
13737
- },
13738
- {
13739
- "kind": "webfonts#webfont",
13740
- "family": "Sofadi One",
13741
- "category": "display",
13742
- "variants": [
13743
- "regular"
13744
- ],
13745
- "subsets": [
13746
- "latin"
13747
- ],
13748
- "version": "v4",
13749
- "lastModified": "2016-06-07",
13750
- "files": {
13751
- "regular": "http://fonts.gstatic.com/s/sofadione/v4/nirf4G12IcJ6KI8Eoj119fesZW2xOQ-xsNqO47m55DA.ttf"
13752
- }
13753
- },
13754
- {
13755
- "kind": "webfonts#webfont",
13756
- "family": "Sofia",
13757
- "category": "handwriting",
13758
- "variants": [
13759
- "regular"
13760
- ],
13761
- "subsets": [
13762
- "latin"
13763
- ],
13764
- "version": "v5",
13765
- "lastModified": "2016-05-31",
13766
- "files": {
13767
- "regular": "http://fonts.gstatic.com/s/sofia/v5/Imnvx0Ag9r6iDBFUY5_RaQ.ttf"
13768
- }
13769
- },
13770
- {
13771
- "kind": "webfonts#webfont",
13772
- "family": "Sonsie One",
13773
- "category": "display",
13774
- "variants": [
13775
- "regular"
13776
- ],
13777
- "subsets": [
13778
- "latin-ext",
13779
- "latin"
13780
- ],
13781
- "version": "v5",
13782
- "lastModified": "2016-06-07",
13783
- "files": {
13784
- "regular": "http://fonts.gstatic.com/s/sonsieone/v5/KSP7xT1OSy0q2ob6RQOTWPesZW2xOQ-xsNqO47m55DA.ttf"
13785
- }
13786
- },
13787
- {
13788
- "kind": "webfonts#webfont",
13789
- "family": "Sorts Mill Goudy",
13790
- "category": "serif",
13791
- "variants": [
13792
- "regular",
13793
- "italic"
13794
- ],
13795
- "subsets": [
13796
- "latin-ext",
13797
- "latin"
13798
- ],
13799
- "version": "v6",
13800
- "lastModified": "2016-05-31",
13801
- "files": {
13802
- "regular": "http://fonts.gstatic.com/s/sortsmillgoudy/v6/JzRrPKdwEnE8F1TDmDLMUlIL2Qjg-Xlsg_fhGbe2P5U.ttf",
13803
- "italic": "http://fonts.gstatic.com/s/sortsmillgoudy/v6/UUu1lKiy4hRmBWk599VL1TYNkCNSzLyoucKmbTguvr0.ttf"
13804
- }
13805
- },
13806
- {
13807
- "kind": "webfonts#webfont",
13808
- "family": "Source Code Pro",
13809
- "category": "monospace",
13810
- "variants": [
13811
- "200",
13812
- "300",
13813
- "regular",
13814
- "500",
13815
- "600",
13816
- "700",
13817
- "900"
13818
- ],
13819
- "subsets": [
13820
- "latin-ext",
13821
- "latin"
13822
- ],
13823
- "version": "v6",
13824
- "lastModified": "2016-05-31",
13825
- "files": {
13826
- "200": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqaXvKVW_haheDNrHjziJZVk.ttf",
13827
- "300": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqVP7R5lD_au4SZC6Ks_vyWs.ttf",
13828
- "regular": "http://fonts.gstatic.com/s/sourcecodepro/v6/mrl8jkM18OlOQN8JLgasD9Rl0pGnog23EMYRrBmUzJQ.ttf",
13829
- "500": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqX63uKwMO11Of4rJWV582wg.ttf",
13830
- "600": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqeiMeWyi5E_-XkTgB5psiDg.ttf",
13831
- "700": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqfgXsetDviZcdR5OzC1KPcw.ttf",
13832
- "900": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqRA_awHl7mXRjE_LQVochcU.ttf"
13833
- }
13834
- },
13835
- {
13836
- "kind": "webfonts#webfont",
13837
- "family": "Source Sans Pro",
13838
- "category": "sans-serif",
13839
- "variants": [
13840
- "200",
13841
- "200italic",
13842
- "300",
13843
- "300italic",
13844
- "regular",
13845
- "italic",
13846
- "600",
13847
- "600italic",
13848
- "700",
13849
- "700italic",
13850
- "900",
13851
- "900italic"
13852
- ],
13853
- "subsets": [
13854
- "latin-ext",
13855
- "latin",
13856
- "vietnamese"
13857
- ],
13858
- "version": "v9",
13859
- "lastModified": "2016-05-31",
13860
- "files": {
13861
- "200": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGKXvKVW_haheDNrHjziJZVk.ttf",
13862
- "200italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6OptKU7UIBg2hLM7eMTU8bI.ttf",
13863
- "300": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGFP7R5lD_au4SZC6Ks_vyWs.ttf",
13864
- "300italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6DUpNKoQAsDux-Todp8f29w.ttf",
13865
- "regular": "http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlNRl0pGnog23EMYRrBmUzJQ.ttf",
13866
- "italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/M2Jd71oPJhLKp0zdtTvoMwRX4TIfMQQEXLu74GftruE.ttf",
13867
- "600": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGOiMeWyi5E_-XkTgB5psiDg.ttf",
13868
- "600italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6Pp6lGoTTgjlW0sC4r900Co.ttf",
13869
- "700": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPgXsetDviZcdR5OzC1KPcw.ttf",
13870
- "700italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6LVT4locI09aamSzFGQlDMY.ttf",
13871
- "900": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGBA_awHl7mXRjE_LQVochcU.ttf",
13872
- "900italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6A0NcF6HPGWR298uWIdxWv0.ttf"
13873
- }
13874
- },
13875
- {
13876
- "kind": "webfonts#webfont",
13877
- "family": "Source Serif Pro",
13878
- "category": "serif",
13879
- "variants": [
13880
- "regular",
13881
- "600",
13882
- "700"
13883
- ],
13884
- "subsets": [
13885
- "latin-ext",
13886
- "latin"
13887
- ],
13888
- "version": "v4",
13889
- "lastModified": "2016-05-31",
13890
- "files": {
13891
- "regular": "http://fonts.gstatic.com/s/sourceserifpro/v4/CeUM4np2c42DV49nanp55YGL0S0YDpKs5GpLtZIQ0m4.ttf",
13892
- "600": "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarGi4cQnvCGV11m1KlXh97aQ.ttf",
13893
- "700": "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarEkpYHRvxGNSCrR82n_RDNk.ttf"
13894
- }
13895
- },
13896
- {
13897
- "kind": "webfonts#webfont",
13898
- "family": "Space Mono",
13899
- "category": "monospace",
13900
- "variants": [
13901
- "regular",
13902
- "italic",
13903
- "700",
13904
- "700italic"
13905
- ],
13906
- "subsets": [
13907
- "latin-ext",
13908
- "latin",
13909
- "vietnamese"
13910
- ],
13911
- "version": "v1",
13912
- "lastModified": "2016-06-20",
13913
- "files": {
13914
- "regular": "http://fonts.gstatic.com/s/spacemono/v1/B_LOPq3uMVBqC_kmqwURBfesZW2xOQ-xsNqO47m55DA.ttf",
13915
- "italic": "http://fonts.gstatic.com/s/spacemono/v1/7xgIgvUEl9Gvhtf7tXsRzC3USBnSvpkopQaUR-2r7iU.ttf",
13916
- "700": "http://fonts.gstatic.com/s/spacemono/v1/vdpMRWfyjfCvDYTz00NEPAJKKGfqHaYFsRG-T3ceEVo.ttf",
13917
- "700italic": "http://fonts.gstatic.com/s/spacemono/v1/y2NWQDXe2-qPj6a6rWkLc0D2ttfZwueP-QU272T9-k4.ttf"
13918
- }
13919
- },
13920
- {
13921
- "kind": "webfonts#webfont",
13922
- "family": "Special Elite",
13923
- "category": "display",
13924
- "variants": [
13925
- "regular"
13926
- ],
13927
- "subsets": [
13928
- "latin"
13929
- ],
13930
- "version": "v6",
13931
- "lastModified": "2016-10-05",
13932
- "files": {
13933
- "regular": "http://fonts.gstatic.com/s/specialelite/v6/9-wW4zu3WNoD5Fjka35Jm4jjx0o0jr6fNXxPgYh_a8Q.ttf"
13934
- }
13935
- },
13936
- {
13937
- "kind": "webfonts#webfont",
13938
- "family": "Spicy Rice",
13939
- "category": "display",
13940
- "variants": [
13941
- "regular"
13942
- ],
13943
- "subsets": [
13944
- "latin"
13945
- ],
13946
- "version": "v5",
13947
- "lastModified": "2016-05-31",
13948
- "files": {
13949
- "regular": "http://fonts.gstatic.com/s/spicyrice/v5/WGCtz7cLoggXARPi9OGD6_esZW2xOQ-xsNqO47m55DA.ttf"
13950
- }
13951
- },
13952
- {
13953
- "kind": "webfonts#webfont",
13954
- "family": "Spinnaker",
13955
- "category": "sans-serif",
13956
- "variants": [
13957
- "regular"
13958
- ],
13959
- "subsets": [
13960
- "latin-ext",
13961
- "latin"
13962
- ],
13963
- "version": "v8",
13964
- "lastModified": "2016-06-07",
13965
- "files": {
13966
- "regular": "http://fonts.gstatic.com/s/spinnaker/v8/MQdIXivKITpjROUdiN6Jgg.ttf"
13967
- }
13968
- },
13969
- {
13970
- "kind": "webfonts#webfont",
13971
- "family": "Spirax",
13972
- "category": "display",
13973
- "variants": [
13974
- "regular"
13975
- ],
13976
- "subsets": [
13977
- "latin"
13978
- ],
13979
- "version": "v5",
13980
- "lastModified": "2016-06-07",
13981
- "files": {
13982
- "regular": "http://fonts.gstatic.com/s/spirax/v5/IOKqhk-Ccl7y31yDsePPkw.ttf"
13983
- }
13984
- },
13985
- {
13986
- "kind": "webfonts#webfont",
13987
- "family": "Squada One",
13988
- "category": "display",
13989
- "variants": [
13990
- "regular"
13991
- ],
13992
- "subsets": [
13993
- "latin"
13994
- ],
13995
- "version": "v5",
13996
- "lastModified": "2016-05-31",
13997
- "files": {
13998
- "regular": "http://fonts.gstatic.com/s/squadaone/v5/3tzGuaJdD65cZVgfQzN8uvesZW2xOQ-xsNqO47m55DA.ttf"
13999
- }
14000
- },
14001
- {
14002
- "kind": "webfonts#webfont",
14003
- "family": "Sree Krushnadevaraya",
14004
- "category": "serif",
14005
- "variants": [
14006
- "regular"
14007
- ],
14008
- "subsets": [
14009
- "latin",
14010
- "telugu"
14011
- ],
14012
- "version": "v4",
14013
- "lastModified": "2016-05-31",
14014
- "files": {
14015
- "regular": "http://fonts.gstatic.com/s/sreekrushnadevaraya/v4/CdsXmnHyEqVl1ahzOh5qnzjDZVem5Eb4d0dXjXa0F_Q.ttf"
14016
- }
14017
- },
14018
- {
14019
- "kind": "webfonts#webfont",
14020
- "family": "Sriracha",
14021
- "category": "handwriting",
14022
- "variants": [
14023
- "regular"
14024
- ],
14025
- "subsets": [
14026
- "latin-ext",
14027
- "thai",
14028
- "latin",
14029
- "vietnamese"
14030
- ],
14031
- "version": "v1",
14032
- "lastModified": "2016-06-20",
14033
- "files": {
14034
- "regular": "http://fonts.gstatic.com/s/sriracha/v1/l-TXHmKwoHm6vtjy4oUz8Q.ttf"
14035
- }
14036
- },
14037
- {
14038
- "kind": "webfonts#webfont",
14039
- "family": "Stalemate",
14040
- "category": "handwriting",
14041
- "variants": [
14042
- "regular"
14043
- ],
14044
- "subsets": [
14045
- "latin-ext",
14046
- "latin"
14047
- ],
14048
- "version": "v4",
14049
- "lastModified": "2016-05-31",
14050
- "files": {
14051
- "regular": "http://fonts.gstatic.com/s/stalemate/v4/wQLCnG0qB6mOu2Wit2dt_w.ttf"
14052
- }
14053
- },
14054
- {
14055
- "kind": "webfonts#webfont",
14056
- "family": "Stalinist One",
14057
- "category": "display",
14058
- "variants": [
14059
- "regular"
14060
- ],
14061
- "subsets": [
14062
- "latin-ext",
14063
- "cyrillic",
14064
- "latin"
14065
- ],
14066
- "version": "v8",
14067
- "lastModified": "2016-10-10",
14068
- "files": {
14069
- "regular": "http://fonts.gstatic.com/s/stalinistone/v8/MQpS-WezM9W4Dd7D3B7I-UT7eZ8.ttf"
14070
- }
14071
- },
14072
- {
14073
- "kind": "webfonts#webfont",
14074
- "family": "Stardos Stencil",
14075
- "category": "display",
14076
- "variants": [
14077
- "regular",
14078
- "700"
14079
- ],
14080
- "subsets": [
14081
- "latin"
14082
- ],
14083
- "version": "v6",
14084
- "lastModified": "2016-05-31",
14085
- "files": {
14086
- "regular": "http://fonts.gstatic.com/s/stardosstencil/v6/ygEOyTW9a6u4fi4OXEZeTFf2eT4jUldwg_9fgfY_tHc.ttf",
14087
- "700": "http://fonts.gstatic.com/s/stardosstencil/v6/h4ExtgvoXhPtv9Ieqd-XC81wDCbBgmIo8UyjIhmkeSM.ttf"
14088
- }
14089
- },
14090
- {
14091
- "kind": "webfonts#webfont",
14092
- "family": "Stint Ultra Condensed",
14093
- "category": "display",
14094
- "variants": [
14095
- "regular"
14096
- ],
14097
- "subsets": [
14098
- "latin-ext",
14099
- "latin"
14100
- ],
14101
- "version": "v5",
14102
- "lastModified": "2016-05-31",
14103
- "files": {
14104
- "regular": "http://fonts.gstatic.com/s/stintultracondensed/v5/8DqLK6-YSClFZt3u3EgOUYelbRYnLTTQA1Z5cVLnsI4.ttf"
14105
- }
14106
- },
14107
- {
14108
- "kind": "webfonts#webfont",
14109
- "family": "Stint Ultra Expanded",
14110
- "category": "display",
14111
- "variants": [
14112
- "regular"
14113
- ],
14114
- "subsets": [
14115
- "latin-ext",
14116
- "latin"
14117
- ],
14118
- "version": "v4",
14119
- "lastModified": "2016-05-31",
14120
- "files": {
14121
- "regular": "http://fonts.gstatic.com/s/stintultraexpanded/v4/FeigX-wDDgHMCKuhekhedQ7dxr0N5HY0cZKknTIL6n4.ttf"
14122
- }
14123
- },
14124
- {
14125
- "kind": "webfonts#webfont",
14126
- "family": "Stoke",
14127
- "category": "serif",
14128
- "variants": [
14129
- "300",
14130
- "regular"
14131
- ],
14132
- "subsets": [
14133
- "latin-ext",
14134
- "latin"
14135
- ],
14136
- "version": "v6",
14137
- "lastModified": "2016-06-07",
14138
- "files": {
14139
- "300": "http://fonts.gstatic.com/s/stoke/v6/Sell9475FOS8jUqQsfFsUQ.ttf",
14140
- "regular": "http://fonts.gstatic.com/s/stoke/v6/A7qJNoqOm2d6o1E6e0yUFg.ttf"
14141
- }
14142
- },
14143
- {
14144
- "kind": "webfonts#webfont",
14145
- "family": "Strait",
14146
- "category": "sans-serif",
14147
- "variants": [
14148
- "regular"
14149
- ],
14150
- "subsets": [
14151
- "latin"
14152
- ],
14153
- "version": "v4",
14154
- "lastModified": "2016-05-31",
14155
- "files": {
14156
- "regular": "http://fonts.gstatic.com/s/strait/v4/m4W73ViNmProETY2ybc-Bg.ttf"
14157
- }
14158
- },
14159
- {
14160
- "kind": "webfonts#webfont",
14161
- "family": "Sue Ellen Francisco",
14162
- "category": "handwriting",
14163
- "variants": [
14164
- "regular"
14165
- ],
14166
- "subsets": [
14167
- "latin"
14168
- ],
14169
- "version": "v7",
14170
- "lastModified": "2016-05-31",
14171
- "files": {
14172
- "regular": "http://fonts.gstatic.com/s/sueellenfrancisco/v7/TwHX4vSxMUnJUdEz1JIgrhzazJzPVbGl8jnf1tisRz4.ttf"
14173
- }
14174
- },
14175
- {
14176
- "kind": "webfonts#webfont",
14177
- "family": "Suez One",
14178
- "category": "serif",
14179
- "variants": [
14180
- "regular"
14181
- ],
14182
- "subsets": [
14183
- "latin-ext",
14184
- "hebrew",
14185
- "latin"
14186
- ],
14187
- "version": "v1",
14188
- "lastModified": "2016-06-20",
14189
- "files": {
14190
- "regular": "http://fonts.gstatic.com/s/suezone/v1/xulpHtKbz3V8hoSLE2uKDw.ttf"
14191
- }
14192
- },
14193
- {
14194
- "kind": "webfonts#webfont",
14195
- "family": "Sumana",
14196
- "category": "serif",
14197
- "variants": [
14198
- "regular",
14199
- "700"
14200
- ],
14201
- "subsets": [
14202
- "latin-ext",
14203
- "devanagari",
14204
- "latin"
14205
- ],
14206
- "version": "v1",
14207
- "lastModified": "2016-06-07",
14208
- "files": {
14209
- "regular": "http://fonts.gstatic.com/s/sumana/v1/wgdl__wAK7pzliiWs0Nlog.ttf",
14210
- "700": "http://fonts.gstatic.com/s/sumana/v1/8AcM-KAproitONSBBHj3sQ.ttf"
14211
- }
14212
- },
14213
- {
14214
- "kind": "webfonts#webfont",
14215
- "family": "Sunshiney",
14216
- "category": "handwriting",
14217
- "variants": [
14218
- "regular"
14219
- ],
14220
- "subsets": [
14221
- "latin"
14222
- ],
14223
- "version": "v6",
14224
- "lastModified": "2016-10-05",
14225
- "files": {
14226
- "regular": "http://fonts.gstatic.com/s/sunshiney/v6/kaWOb4pGbwNijM7CkxK1sQ.ttf"
14227
- }
14228
- },
14229
- {
14230
- "kind": "webfonts#webfont",
14231
- "family": "Supermercado One",
14232
- "category": "display",
14233
- "variants": [
14234
- "regular"
14235
- ],
14236
- "subsets": [
14237
- "latin"
14238
- ],
14239
- "version": "v6",
14240
- "lastModified": "2016-06-07",
14241
- "files": {
14242
- "regular": "http://fonts.gstatic.com/s/supermercadoone/v6/kMGPVTNFiFEp1U274uBMb4mm5hmSKNFf3C5YoMa-lrM.ttf"
14243
- }
14244
- },
14245
- {
14246
- "kind": "webfonts#webfont",
14247
- "family": "Sura",
14248
- "category": "serif",
14249
- "variants": [
14250
- "regular",
14251
- "700"
14252
- ],
14253
- "subsets": [
14254
- "latin-ext",
14255
- "devanagari",
14256
- "latin"
14257
- ],
14258
- "version": "v1",
14259
- "lastModified": "2016-05-31",
14260
- "files": {
14261
- "regular": "http://fonts.gstatic.com/s/sura/v1/jznKrhTH5NezYxb0-Q5zzA.ttf",
14262
- "700": "http://fonts.gstatic.com/s/sura/v1/Z5bXQaFGmoWicN1WlcncxA.ttf"
14263
- }
14264
- },
14265
- {
14266
- "kind": "webfonts#webfont",
14267
- "family": "Suranna",
14268
- "category": "serif",
14269
- "variants": [
14270
- "regular"
14271
- ],
14272
- "subsets": [
14273
- "latin",
14274
- "telugu"
14275
- ],
14276
- "version": "v4",
14277
- "lastModified": "2016-05-31",
14278
- "files": {
14279
- "regular": "http://fonts.gstatic.com/s/suranna/v4/PYmfr6TQeTqZ-r8HnPM-kA.ttf"
14280
- }
14281
- },
14282
- {
14283
- "kind": "webfonts#webfont",
14284
- "family": "Suravaram",
14285
- "category": "serif",
14286
- "variants": [
14287
- "regular"
14288
- ],
14289
- "subsets": [
14290
- "latin",
14291
- "telugu"
14292
- ],
14293
- "version": "v3",
14294
- "lastModified": "2016-05-31",
14295
- "files": {
14296
- "regular": "http://fonts.gstatic.com/s/suravaram/v3/G4dPee4pel_w2HqzavW4MA.ttf"
14297
- }
14298
- },
14299
- {
14300
- "kind": "webfonts#webfont",
14301
- "family": "Suwannaphum",
14302
- "category": "display",
14303
- "variants": [
14304
- "regular"
14305
- ],
14306
- "subsets": [
14307
- "khmer"
14308
- ],
14309
- "version": "v9",
14310
- "lastModified": "2016-05-31",
14311
- "files": {
14312
- "regular": "http://fonts.gstatic.com/s/suwannaphum/v9/1jIPOyXied3T79GCnSlCN6CWcynf_cDxXwCLxiixG1c.ttf"
14313
- }
14314
- },
14315
- {
14316
- "kind": "webfonts#webfont",
14317
- "family": "Swanky and Moo Moo",
14318
- "category": "handwriting",
14319
- "variants": [
14320
- "regular"
14321
- ],
14322
- "subsets": [
14323
- "latin"
14324
- ],
14325
- "version": "v6",
14326
- "lastModified": "2016-05-31",
14327
- "files": {
14328
- "regular": "http://fonts.gstatic.com/s/swankyandmoomoo/v6/orVNZ9kDeE3lWp3U3YELu9DVLKqNC3_XMNHhr8S94FU.ttf"
14329
- }
14330
- },
14331
- {
14332
- "kind": "webfonts#webfont",
14333
- "family": "Syncopate",
14334
- "category": "sans-serif",
14335
- "variants": [
14336
- "regular",
14337
- "700"
14338
- ],
14339
- "subsets": [
14340
- "latin"
14341
- ],
14342
- "version": "v7",
14343
- "lastModified": "2016-10-05",
14344
- "files": {
14345
- "regular": "http://fonts.gstatic.com/s/syncopate/v7/RQVwO52fAH6MI764EcaYtw.ttf",
14346
- "700": "http://fonts.gstatic.com/s/syncopate/v7/S5z8ixiOoC4WJ1im6jAlYC3USBnSvpkopQaUR-2r7iU.ttf"
14347
- }
14348
- },
14349
- {
14350
- "kind": "webfonts#webfont",
14351
- "family": "Tangerine",
14352
- "category": "handwriting",
14353
- "variants": [
14354
- "regular",
14355
- "700"
14356
- ],
14357
- "subsets": [
14358
- "latin"
14359
- ],
14360
- "version": "v7",
14361
- "lastModified": "2016-06-07",
14362
- "files": {
14363
- "regular": "http://fonts.gstatic.com/s/tangerine/v7/DTPeM3IROhnkz7aYG2a9sA.ttf",
14364
- "700": "http://fonts.gstatic.com/s/tangerine/v7/UkFsr-RwJB_d2l9fIWsx3i3USBnSvpkopQaUR-2r7iU.ttf"
14365
- }
14366
- },
14367
- {
14368
- "kind": "webfonts#webfont",
14369
- "family": "Taprom",
14370
- "category": "display",
14371
- "variants": [
14372
- "regular"
14373
- ],
14374
- "subsets": [
14375
- "khmer"
14376
- ],
14377
- "version": "v8",
14378
- "lastModified": "2016-05-31",
14379
- "files": {
14380
- "regular": "http://fonts.gstatic.com/s/taprom/v8/-KByU3BaUsyIvQs79qFObg.ttf"
14381
- }
14382
- },
14383
- {
14384
- "kind": "webfonts#webfont",
14385
- "family": "Tauri",
14386
- "category": "sans-serif",
14387
- "variants": [
14388
- "regular"
14389
- ],
14390
- "subsets": [
14391
- "latin-ext",
14392
- "latin"
14393
- ],
14394
- "version": "v4",
14395
- "lastModified": "2016-06-07",
14396
- "files": {
14397
- "regular": "http://fonts.gstatic.com/s/tauri/v4/XIWeYJDXNqiVNej0zEqtGg.ttf"
14398
- }
14399
- },
14400
- {
14401
- "kind": "webfonts#webfont",
14402
- "family": "Taviraj",
14403
- "category": "serif",
14404
- "variants": [
14405
- "100",
14406
- "100italic",
14407
- "200",
14408
- "200italic",
14409
- "300",
14410
- "300italic",
14411
- "regular",
14412
- "italic",
14413
- "500",
14414
- "500italic",
14415
- "600",
14416
- "600italic",
14417
- "700",
14418
- "700italic",
14419
- "800",
14420
- "800italic",
14421
- "900",
14422
- "900italic"
14423
- ],
14424
- "subsets": [
14425
- "latin-ext",
14426
- "thai",
14427
- "latin",
14428
- "vietnamese"
14429
- ],
14430
- "version": "v1",
14431
- "lastModified": "2016-06-20",
14432
- "files": {
14433
- "100": "http://fonts.gstatic.com/s/taviraj/v1/7iDtujKEc7hwcT6D0zLx-A.ttf",
14434
- "100italic": "http://fonts.gstatic.com/s/taviraj/v1/ai0UdHXB1gi5etfpU0CZ6aCWcynf_cDxXwCLxiixG1c.ttf",
14435
- "200": "http://fonts.gstatic.com/s/taviraj/v1/fn3qCO_sC_zLuf2hqWE37fesZW2xOQ-xsNqO47m55DA.ttf",
14436
- "200italic": "http://fonts.gstatic.com/s/taviraj/v1/eDMMTK5GhTdvvz3R-ZWvay3USBnSvpkopQaUR-2r7iU.ttf",
14437
- "300": "http://fonts.gstatic.com/s/taviraj/v1/1EIpbtG_cs5haG6Ba9wX8vesZW2xOQ-xsNqO47m55DA.ttf",
14438
- "300italic": "http://fonts.gstatic.com/s/taviraj/v1/IEBfc1xGgsBbdCeXKNAtfS3USBnSvpkopQaUR-2r7iU.ttf",
14439
- "regular": "http://fonts.gstatic.com/s/taviraj/v1/AH1eoWagKJhbVx4Poc3M1A.ttf",
14440
- "italic": "http://fonts.gstatic.com/s/taviraj/v1/hAS5RxygdSnG4626KdkXuQ.ttf",
14441
- "500": "http://fonts.gstatic.com/s/taviraj/v1/s8BuqYm5ebG2N1R4JkTp_fesZW2xOQ-xsNqO47m55DA.ttf",
14442
- "500italic": "http://fonts.gstatic.com/s/taviraj/v1/319qfe3yzAi9RNFu-dI9zy3USBnSvpkopQaUR-2r7iU.ttf",
14443
- "600": "http://fonts.gstatic.com/s/taviraj/v1/KscmiA6HGz7nCcHhaddQH_esZW2xOQ-xsNqO47m55DA.ttf",
14444
- "600italic": "http://fonts.gstatic.com/s/taviraj/v1/ofRN6EMiboGiM2Ga3cG_yy3USBnSvpkopQaUR-2r7iU.ttf",
14445
- "700": "http://fonts.gstatic.com/s/taviraj/v1/TY91892tTFNYCeCXjQ1AEPesZW2xOQ-xsNqO47m55DA.ttf",
14446
- "700italic": "http://fonts.gstatic.com/s/taviraj/v1/4Yzb6i1xtMRZn9oAQ484nS3USBnSvpkopQaUR-2r7iU.ttf",
14447
- "800": "http://fonts.gstatic.com/s/taviraj/v1/oGWJbiDGcxlInLLnrLxTDvesZW2xOQ-xsNqO47m55DA.ttf",
14448
- "800italic": "http://fonts.gstatic.com/s/taviraj/v1/MPtY5Qs3hwV4f0LUH-vVmy3USBnSvpkopQaUR-2r7iU.ttf",
14449
- "900": "http://fonts.gstatic.com/s/taviraj/v1/RfIEodnN0NYWUdZHol5fdPesZW2xOQ-xsNqO47m55DA.ttf",
14450
- "900italic": "http://fonts.gstatic.com/s/taviraj/v1/aDM2JaXSd_qo0nqKiBAq5C3USBnSvpkopQaUR-2r7iU.ttf"
14451
- }
14452
- },
14453
- {
14454
- "kind": "webfonts#webfont",
14455
- "family": "Teko",
14456
- "category": "sans-serif",
14457
- "variants": [
14458
- "300",
14459
- "regular",
14460
- "500",
14461
- "600",
14462
- "700"
14463
- ],
14464
- "subsets": [
14465
- "latin-ext",
14466
- "devanagari",
14467
- "latin"
14468
- ],
14469
- "version": "v5",
14470
- "lastModified": "2016-05-31",
14471
- "files": {
14472
- "300": "http://fonts.gstatic.com/s/teko/v5/OobFGE9eo24rcBpN6zXDaQ.ttf",
14473
- "regular": "http://fonts.gstatic.com/s/teko/v5/UtekqODEqZXSN2L-njejpA.ttf",
14474
- "500": "http://fonts.gstatic.com/s/teko/v5/FQ0duU7gWM4cSaImOfAjBA.ttf",
14475
- "600": "http://fonts.gstatic.com/s/teko/v5/QDx_i8H-TZ1IK1JEVrqwEQ.ttf",
14476
- "700": "http://fonts.gstatic.com/s/teko/v5/xKfTxe_SWpH4xU75vmvylA.ttf"
14477
- }
14478
- },
14479
- {
14480
- "kind": "webfonts#webfont",
14481
- "family": "Telex",
14482
- "category": "sans-serif",
14483
- "variants": [
14484
- "regular"
14485
- ],
14486
- "subsets": [
14487
- "latin"
14488
- ],
14489
- "version": "v4",
14490
- "lastModified": "2016-05-31",
14491
- "files": {
14492
- "regular": "http://fonts.gstatic.com/s/telex/v4/24-3xP9ywYeHOcFU3iGk8A.ttf"
14493
- }
14494
- },
14495
- {
14496
- "kind": "webfonts#webfont",
14497
- "family": "Tenali Ramakrishna",
14498
- "category": "sans-serif",
14499
- "variants": [
14500
- "regular"
14501
- ],
14502
- "subsets": [
14503
- "latin",
14504
- "telugu"
14505
- ],
14506
- "version": "v3",
14507
- "lastModified": "2016-05-31",
14508
- "files": {
14509
- "regular": "http://fonts.gstatic.com/s/tenaliramakrishna/v3/M0nTmDqv2M7AGoGh-c946BZak5pSBHqWX6uyVMiMFoA.ttf"
14510
- }
14511
- },
14512
- {
14513
- "kind": "webfonts#webfont",
14514
- "family": "Tenor Sans",
14515
- "category": "sans-serif",
14516
- "variants": [
14517
- "regular"
14518
- ],
14519
- "subsets": [
14520
- "latin-ext",
14521
- "cyrillic",
14522
- "latin"
14523
- ],
14524
- "version": "v7",
14525
- "lastModified": "2016-05-31",
14526
- "files": {
14527
- "regular": "http://fonts.gstatic.com/s/tenorsans/v7/dUBulmjNJJInvK5vL7O9yfesZW2xOQ-xsNqO47m55DA.ttf"
14528
- }
14529
- },
14530
- {
14531
- "kind": "webfonts#webfont",
14532
- "family": "Text Me One",
14533
- "category": "sans-serif",
14534
- "variants": [
14535
- "regular"
14536
- ],
14537
- "subsets": [
14538
- "latin-ext",
14539
- "latin"
14540
- ],
14541
- "version": "v4",
14542
- "lastModified": "2016-05-31",
14543
- "files": {
14544
- "regular": "http://fonts.gstatic.com/s/textmeone/v4/9em_3ckd_P5PQkP4aDyDLqCWcynf_cDxXwCLxiixG1c.ttf"
14545
- }
14546
- },
14547
- {
14548
- "kind": "webfonts#webfont",
14549
- "family": "The Girl Next Door",
14550
- "category": "handwriting",
14551
- "variants": [
14552
- "regular"
14553
- ],
14554
- "subsets": [
14555
- "latin"
14556
- ],
14557
- "version": "v7",
14558
- "lastModified": "2016-05-31",
14559
- "files": {
14560
- "regular": "http://fonts.gstatic.com/s/thegirlnextdoor/v7/cWRA4JVGeEcHGcPl5hmX7kzo0nFFoM60ux_D9BUymX4.ttf"
14561
- }
14562
- },
14563
- {
14564
- "kind": "webfonts#webfont",
14565
- "family": "Tienne",
14566
- "category": "serif",
14567
- "variants": [
14568
- "regular",
14569
- "700",
14570
- "900"
14571
- ],
14572
- "subsets": [
14573
- "latin"
14574
- ],
14575
- "version": "v8",
14576
- "lastModified": "2016-05-31",
14577
- "files": {
14578
- "regular": "http://fonts.gstatic.com/s/tienne/v8/-IIfDl701C0z7-fy2kmGvA.ttf",
14579
- "700": "http://fonts.gstatic.com/s/tienne/v8/JvoCDOlyOSEyYGRwCyfs3g.ttf",
14580
- "900": "http://fonts.gstatic.com/s/tienne/v8/FBano5T521OWexj2iRYLMw.ttf"
14581
- }
14582
- },
14583
- {
14584
- "kind": "webfonts#webfont",
14585
- "family": "Tillana",
14586
- "category": "handwriting",
14587
- "variants": [
14588
- "regular",
14589
- "500",
14590
- "600",
14591
- "700",
14592
- "800"
14593
- ],
14594
- "subsets": [
14595
- "latin-ext",
14596
- "devanagari",
14597
- "latin"
14598
- ],
14599
- "version": "v1",
14600
- "lastModified": "2016-05-31",
14601
- "files": {
14602
- "regular": "http://fonts.gstatic.com/s/tillana/v1/zN0D-jDPsr1HzU3VRFLY5g.ttf",
14603
- "500": "http://fonts.gstatic.com/s/tillana/v1/gqdUngSIcY9tSla5eCZky_esZW2xOQ-xsNqO47m55DA.ttf",
14604
- "600": "http://fonts.gstatic.com/s/tillana/v1/fqon6-r15hy8M1cyiYfQBvesZW2xOQ-xsNqO47m55DA.ttf",
14605
- "700": "http://fonts.gstatic.com/s/tillana/v1/jGARMTxLrMerzTCpGBpMffesZW2xOQ-xsNqO47m55DA.ttf",
14606
- "800": "http://fonts.gstatic.com/s/tillana/v1/pmTtNH_Ibktj5Cyc1XrP6vesZW2xOQ-xsNqO47m55DA.ttf"
14607
- }
14608
- },
14609
- {
14610
- "kind": "webfonts#webfont",
14611
- "family": "Timmana",
14612
- "category": "sans-serif",
14613
- "variants": [
14614
- "regular"
14615
- ],
14616
- "subsets": [
14617
- "latin",
14618
- "telugu"
14619
- ],
14620
- "version": "v1",
14621
- "lastModified": "2016-05-31",
14622
- "files": {
14623
- "regular": "http://fonts.gstatic.com/s/timmana/v1/T25SicsJUJkc2s2sbBsDnA.ttf"
14624
- }
14625
- },
14626
- {
14627
- "kind": "webfonts#webfont",
14628
- "family": "Tinos",
14629
- "category": "serif",
14630
- "variants": [
14631
- "regular",
14632
- "italic",
14633
- "700",
14634
- "700italic"
14635
- ],
14636
- "subsets": [
14637
- "cyrillic-ext",
14638
- "latin-ext",
14639
- "hebrew",
14640
- "cyrillic",
14641
- "greek",
14642
- "latin",
14643
- "greek-ext",
14644
- "vietnamese"
14645
- ],
14646
- "version": "v9",
14647
- "lastModified": "2016-10-05",
14648
- "files": {
14649
- "regular": "http://fonts.gstatic.com/s/tinos/v9/EqpUbkVmutfwZ0PjpoGwCg.ttf",
14650
- "italic": "http://fonts.gstatic.com/s/tinos/v9/slfyzlasCr9vTsaP4lUh9A.ttf",
14651
- "700": "http://fonts.gstatic.com/s/tinos/v9/vHXfhX8jZuQruowfon93yQ.ttf",
14652
- "700italic": "http://fonts.gstatic.com/s/tinos/v9/M6kfzvDMM0CdxdraoFpG6vesZW2xOQ-xsNqO47m55DA.ttf"
14653
- }
14654
- },
14655
- {
14656
- "kind": "webfonts#webfont",
14657
- "family": "Titan One",
14658
- "category": "display",
14659
- "variants": [
14660
- "regular"
14661
- ],
14662
- "subsets": [
14663
- "latin-ext",
14664
- "latin"
14665
- ],
14666
- "version": "v4",
14667
- "lastModified": "2016-05-31",
14668
- "files": {
14669
- "regular": "http://fonts.gstatic.com/s/titanone/v4/FbvpRvzfV_oipS0De3iAZg.ttf"
14670
- }
14671
- },
14672
- {
14673
- "kind": "webfonts#webfont",
14674
- "family": "Titillium Web",
14675
- "category": "sans-serif",
14676
- "variants": [
14677
- "200",
14678
- "200italic",
14679
- "300",
14680
- "300italic",
14681
- "regular",
14682
- "italic",
14683
- "600",
14684
- "600italic",
14685
- "700",
14686
- "700italic",
14687
- "900"
14688
- ],
14689
- "subsets": [
14690
- "latin-ext",
14691
- "latin"
14692
- ],
14693
- "version": "v4",
14694
- "lastModified": "2016-05-31",
14695
- "files": {
14696
- "200": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wprzOdCrLccoxq42eaxM802O0.ttf",
14697
- "200italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPj4N98U-66ThNJvtgddRfBE.ttf",
14698
- "300": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr9ZAkYT8DuUZELiKLwMGWAo.ttf",
14699
- "300italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPrfzCkqg7ORZlRf2cc4mXu8.ttf",
14700
- "regular": "http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcTyagQBwYgYywpS70xNq8SQ.ttf",
14701
- "italic": "http://fonts.gstatic.com/s/titilliumweb/v4/r9OmwyQxrgzUAhaLET_KO-ixohbIP6lHkU-1Mgq95cY.ttf",
14702
- "600": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr28K9dEd5Ue-HTQrlA7E2xQ.ttf",
14703
- "600italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPgOhzTSndyK8UWja2yJjKLc.ttf",
14704
- "700": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr2-6tpSbB9YhmWtmd1_gi_U.ttf",
14705
- "700italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPio3LEw-4MM8Ao2j9wPOfpw.ttf",
14706
- "900": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr7L0GmZLri-m-nfoo0Vul4Y.ttf"
14707
- }
14708
- },
14709
- {
14710
- "kind": "webfonts#webfont",
14711
- "family": "Trade Winds",
14712
- "category": "display",
14713
- "variants": [
14714
- "regular"
14715
- ],
14716
- "subsets": [
14717
- "latin"
14718
- ],
14719
- "version": "v5",
14720
- "lastModified": "2016-05-31",
14721
- "files": {
14722
- "regular": "http://fonts.gstatic.com/s/tradewinds/v5/sDOCVgAxw6PEUi2xdMsoDaCWcynf_cDxXwCLxiixG1c.ttf"
14723
- }
14724
- },
14725
- {
14726
- "kind": "webfonts#webfont",
14727
- "family": "Trirong",
14728
- "category": "serif",
14729
- "variants": [
14730
- "100",
14731
- "100italic",
14732
- "200",
14733
- "200italic",
14734
- "300",
14735
- "300italic",
14736
- "regular",
14737
- "italic",
14738
- "500",
14739
- "500italic",
14740
- "600",
14741
- "600italic",
14742
- "700",
14743
- "700italic",
14744
- "800",
14745
- "800italic",
14746
- "900",
14747
- "900italic"
14748
- ],
14749
- "subsets": [
14750
- "latin-ext",
14751
- "thai",
14752
- "latin",
14753
- "vietnamese"
14754
- ],
14755
- "version": "v1",
14756
- "lastModified": "2016-06-20",
14757
- "files": {
14758
- "100": "http://fonts.gstatic.com/s/trirong/v1/A4AP1moxqvtadq5CW3L17A.ttf",
14759
- "100italic": "http://fonts.gstatic.com/s/trirong/v1/ke-m75CXBPHlqwRHmCTBi6CWcynf_cDxXwCLxiixG1c.ttf",
14760
- "200": "http://fonts.gstatic.com/s/trirong/v1/QD8N5qk-agpAEYCSSWullPesZW2xOQ-xsNqO47m55DA.ttf",
14761
- "200italic": "http://fonts.gstatic.com/s/trirong/v1/TLnptEEWKdIVHKJYBO592y3USBnSvpkopQaUR-2r7iU.ttf",
14762
- "300": "http://fonts.gstatic.com/s/trirong/v1/mfCfGz4GqprWJZ47PUMDGfesZW2xOQ-xsNqO47m55DA.ttf",
14763
- "300italic": "http://fonts.gstatic.com/s/trirong/v1/RnkK09k5OfEHFxd_smcYuC3USBnSvpkopQaUR-2r7iU.ttf",
14764
- "regular": "http://fonts.gstatic.com/s/trirong/v1/lYu4kez-Enlvh2X-itx6CA.ttf",
14765
- "italic": "http://fonts.gstatic.com/s/trirong/v1/kV0MzmWPKkglEtJf--dQhQ.ttf",
14766
- "500": "http://fonts.gstatic.com/s/trirong/v1/6CsQ6UR1e8rURaEPxqnGBvesZW2xOQ-xsNqO47m55DA.ttf",
14767
- "500italic": "http://fonts.gstatic.com/s/trirong/v1/I7H5Vf-5oH45BHkyxaUodS3USBnSvpkopQaUR-2r7iU.ttf",
14768
- "600": "http://fonts.gstatic.com/s/trirong/v1/1FjmLIhPhB6Yc7RWqO27mfesZW2xOQ-xsNqO47m55DA.ttf",
14769
- "600italic": "http://fonts.gstatic.com/s/trirong/v1/BXLhSV51vCWUiACSqyWe6i3USBnSvpkopQaUR-2r7iU.ttf",
14770
- "700": "http://fonts.gstatic.com/s/trirong/v1/ab8hG5CTSzMAobTnPgcDP_esZW2xOQ-xsNqO47m55DA.ttf",
14771
- "700italic": "http://fonts.gstatic.com/s/trirong/v1/CEBv6IoZawJuRHdATx4LQi3USBnSvpkopQaUR-2r7iU.ttf",
14772
- "800": "http://fonts.gstatic.com/s/trirong/v1/UBRQXGJvi5EHcyI5wwZew_esZW2xOQ-xsNqO47m55DA.ttf",
14773
- "800italic": "http://fonts.gstatic.com/s/trirong/v1/lGUgSzOvjUqrsrJfnROivC3USBnSvpkopQaUR-2r7iU.ttf",
14774
- "900": "http://fonts.gstatic.com/s/trirong/v1/Lam1ewMdiP3O-bVYT-W6t_esZW2xOQ-xsNqO47m55DA.ttf",
14775
- "900italic": "http://fonts.gstatic.com/s/trirong/v1/EtuLHyx5DS9oX5NoKhYlkC3USBnSvpkopQaUR-2r7iU.ttf"
14776
- }
14777
- },
14778
- {
14779
- "kind": "webfonts#webfont",
14780
- "family": "Trocchi",
14781
- "category": "serif",
14782
- "variants": [
14783
- "regular"
14784
- ],
14785
- "subsets": [
14786
- "latin-ext",
14787
- "latin"
14788
- ],
14789
- "version": "v4",
14790
- "lastModified": "2016-05-31",
14791
- "files": {
14792
- "regular": "http://fonts.gstatic.com/s/trocchi/v4/uldNPaKrUGVeGCVsmacLwA.ttf"
14793
- }
14794
- },
14795
- {
14796
- "kind": "webfonts#webfont",
14797
- "family": "Trochut",
14798
- "category": "display",
14799
- "variants": [
14800
- "regular",
14801
- "italic",
14802
- "700"
14803
- ],
14804
- "subsets": [
14805
- "latin"
14806
- ],
14807
- "version": "v4",
14808
- "lastModified": "2016-05-31",
14809
- "files": {
14810
- "regular": "http://fonts.gstatic.com/s/trochut/v4/6Y65B0x-2JsnYt16OH5omw.ttf",
14811
- "italic": "http://fonts.gstatic.com/s/trochut/v4/pczUwr4ZFvC79TgNO5cZng.ttf",
14812
- "700": "http://fonts.gstatic.com/s/trochut/v4/lWqNOv6ISR8ehNzGLFLnJ_esZW2xOQ-xsNqO47m55DA.ttf"
14813
- }
14814
- },
14815
- {
14816
- "kind": "webfonts#webfont",
14817
- "family": "Trykker",
14818
- "category": "serif",
14819
- "variants": [
14820
- "regular"
14821
- ],
14822
- "subsets": [
14823
- "latin-ext",
14824
- "latin"
14825
- ],
14826
- "version": "v5",
14827
- "lastModified": "2016-05-31",
14828
- "files": {
14829
- "regular": "http://fonts.gstatic.com/s/trykker/v5/YiVrVJpBFN7I1l_CWk6yYQ.ttf"
14830
- }
14831
- },
14832
- {
14833
- "kind": "webfonts#webfont",
14834
- "family": "Tulpen One",
14835
- "category": "display",
14836
- "variants": [
14837
- "regular"
14838
- ],
14839
- "subsets": [
14840
- "latin"
14841
- ],
14842
- "version": "v6",
14843
- "lastModified": "2016-05-31",
14844
- "files": {
14845
- "regular": "http://fonts.gstatic.com/s/tulpenone/v6/lwcTfVIEVxpZLZlWzR5baPesZW2xOQ-xsNqO47m55DA.ttf"
14846
- }
14847
- },
14848
- {
14849
- "kind": "webfonts#webfont",
14850
- "family": "Ubuntu",
14851
- "category": "sans-serif",
14852
- "variants": [
14853
- "300",
14854
- "300italic",
14855
- "regular",
14856
- "italic",
14857
- "500",
14858
- "500italic",
14859
- "700",
14860
- "700italic"
14861
- ],
14862
- "subsets": [
14863
- "cyrillic-ext",
14864
- "latin-ext",
14865
- "cyrillic",
14866
- "greek",
14867
- "latin",
14868
- "greek-ext"
14869
- ],
14870
- "version": "v9",
14871
- "lastModified": "2016-06-03",
14872
- "files": {
14873
- "300": "http://fonts.gstatic.com/s/ubuntu/v9/7-wH0j2QCTHKgp7vLh9-sQ.ttf",
14874
- "300italic": "http://fonts.gstatic.com/s/ubuntu/v9/j-TYDdXcC_eQzhhp386SjaCWcynf_cDxXwCLxiixG1c.ttf",
14875
- "regular": "http://fonts.gstatic.com/s/ubuntu/v9/lhhB5ZCwEkBRbHMSnYuKyA.ttf",
14876
- "italic": "http://fonts.gstatic.com/s/ubuntu/v9/b9hP8wd30SygxZjGGk4DCQ.ttf",
14877
- "500": "http://fonts.gstatic.com/s/ubuntu/v9/bMbHEMwSUmkzcK2x_74QbA.ttf",
14878
- "500italic": "http://fonts.gstatic.com/s/ubuntu/v9/NWdMogIO7U6AtEM4dDdf_aCWcynf_cDxXwCLxiixG1c.ttf",
14879
- "700": "http://fonts.gstatic.com/s/ubuntu/v9/B7BtHjNYwAp3HgLNagENOQ.ttf",
14880
- "700italic": "http://fonts.gstatic.com/s/ubuntu/v9/pqisLQoeO9YTDCNnlQ9bf6CWcynf_cDxXwCLxiixG1c.ttf"
14881
- }
14882
- },
14883
- {
14884
- "kind": "webfonts#webfont",
14885
- "family": "Ubuntu Condensed",
14886
- "category": "sans-serif",
14887
- "variants": [
14888
- "regular"
14889
- ],
14890
- "subsets": [
14891
- "cyrillic-ext",
14892
- "latin-ext",
14893
- "cyrillic",
14894
- "greek",
14895
- "latin",
14896
- "greek-ext"
14897
- ],
14898
- "version": "v7",
14899
- "lastModified": "2016-06-03",
14900
- "files": {
14901
- "regular": "http://fonts.gstatic.com/s/ubuntucondensed/v7/DBCt-NXN57MTAFjitYxdrKDbm6fPDOZJsR8PmdG62gY.ttf"
14902
- }
14903
- },
14904
- {
14905
- "kind": "webfonts#webfont",
14906
- "family": "Ubuntu Mono",
14907
- "category": "monospace",
14908
- "variants": [
14909
- "regular",
14910
- "italic",
14911
- "700",
14912
- "700italic"
14913
- ],
14914
- "subsets": [
14915
- "cyrillic-ext",
14916
- "latin-ext",
14917
- "cyrillic",
14918
- "greek",
14919
- "latin",
14920
- "greek-ext"
14921
- ],
14922
- "version": "v6",
14923
- "lastModified": "2016-06-03",
14924
- "files": {
14925
- "regular": "http://fonts.gstatic.com/s/ubuntumono/v6/EgeuS9OtEmA0y_JRo03MQaCWcynf_cDxXwCLxiixG1c.ttf",
14926
- "italic": "http://fonts.gstatic.com/s/ubuntumono/v6/KAKuHXAHZOeECOWAHsRKA0eOrDcLawS7-ssYqLr2Xp4.ttf",
14927
- "700": "http://fonts.gstatic.com/s/ubuntumono/v6/ceqTZGKHipo8pJj4molytne1Pd76Vl7zRpE7NLJQ7XU.ttf",
14928
- "700italic": "http://fonts.gstatic.com/s/ubuntumono/v6/n_d8tv_JOIiYyMXR4eaV9c_zJjSACmk0BRPxQqhnNLU.ttf"
14929
- }
14930
- },
14931
- {
14932
- "kind": "webfonts#webfont",
14933
- "family": "Ultra",
14934
- "category": "serif",
14935
- "variants": [
14936
- "regular"
14937
- ],
14938
- "subsets": [
14939
- "latin"
14940
- ],
14941
- "version": "v8",
14942
- "lastModified": "2016-10-05",
14943
- "files": {
14944
- "regular": "http://fonts.gstatic.com/s/ultra/v8/OW8uXkOstRADuhEmGOFQLA.ttf"
14945
- }
14946
- },
14947
- {
14948
- "kind": "webfonts#webfont",
14949
- "family": "Uncial Antiqua",
14950
- "category": "display",
14951
- "variants": [
14952
- "regular"
14953
- ],
14954
- "subsets": [
14955
- "latin"
14956
- ],
14957
- "version": "v4",
14958
- "lastModified": "2016-05-31",
14959
- "files": {
14960
- "regular": "http://fonts.gstatic.com/s/uncialantiqua/v4/F-leefDiFwQXsyd6eaSllqrFJ4O13IHVxZbM6yoslpo.ttf"
14961
- }
14962
- },
14963
- {
14964
- "kind": "webfonts#webfont",
14965
- "family": "Underdog",
14966
- "category": "display",
14967
- "variants": [
14968
- "regular"
14969
- ],
14970
- "subsets": [
14971
- "latin-ext",
14972
- "cyrillic",
14973
- "latin"
14974
- ],
14975
- "version": "v5",
14976
- "lastModified": "2016-06-07",
14977
- "files": {
14978
- "regular": "http://fonts.gstatic.com/s/underdog/v5/gBv9yjez_-5PnTprHWq0ig.ttf"
14979
- }
14980
- },
14981
- {
14982
- "kind": "webfonts#webfont",
14983
- "family": "Unica One",
14984
- "category": "display",
14985
- "variants": [
14986
- "regular"
14987
- ],
14988
- "subsets": [
14989
- "latin-ext",
14990
- "latin"
14991
- ],
14992
- "version": "v4",
14993
- "lastModified": "2016-05-31",
14994
- "files": {
14995
- "regular": "http://fonts.gstatic.com/s/unicaone/v4/KbYKlhWMDpatWViqDkNQgA.ttf"
14996
- }
14997
- },
14998
- {
14999
- "kind": "webfonts#webfont",
15000
- "family": "UnifrakturCook",
15001
- "category": "display",
15002
- "variants": [
15003
- "700"
15004
- ],
15005
- "subsets": [
15006
- "latin"
15007
- ],
15008
- "version": "v8",
15009
- "lastModified": "2016-05-31",
15010
- "files": {
15011
- "700": "http://fonts.gstatic.com/s/unifrakturcook/v8/ASwh69ykD8iaoYijVEU6RrWZkcsCTHKV51zmcUsafQ0.ttf"
15012
- }
15013
- },
15014
- {
15015
- "kind": "webfonts#webfont",
15016
- "family": "UnifrakturMaguntia",
15017
- "category": "display",
15018
- "variants": [
15019
- "regular"
15020
- ],
15021
- "subsets": [
15022
- "latin"
15023
- ],
15024
- "version": "v7",
15025
- "lastModified": "2016-05-31",
15026
- "files": {
15027
- "regular": "http://fonts.gstatic.com/s/unifrakturmaguntia/v7/7KWy3ymCVR_xfAvvcIXm3-kdNg30GQauG_DE-tMYtWk.ttf"
15028
- }
15029
- },
15030
- {
15031
- "kind": "webfonts#webfont",
15032
- "family": "Unkempt",
15033
- "category": "display",
15034
- "variants": [
15035
- "regular",
15036
- "700"
15037
- ],
15038
- "subsets": [
15039
- "latin"
15040
- ],
15041
- "version": "v7",
15042
- "lastModified": "2016-10-05",
15043
- "files": {
15044
- "regular": "http://fonts.gstatic.com/s/unkempt/v7/NLLBeNSspr0RGs71R5LHWA.ttf",
15045
- "700": "http://fonts.gstatic.com/s/unkempt/v7/V7H-GCl9bgwGwqFqTTgDHvesZW2xOQ-xsNqO47m55DA.ttf"
15046
- }
15047
- },
15048
- {
15049
- "kind": "webfonts#webfont",
15050
- "family": "Unlock",
15051
- "category": "display",
15052
- "variants": [
15053
- "regular"
15054
- ],
15055
- "subsets": [
15056
- "latin"
15057
- ],
15058
- "version": "v6",
15059
- "lastModified": "2016-05-31",
15060
- "files": {
15061
- "regular": "http://fonts.gstatic.com/s/unlock/v6/rXEQzK7uIAlhoyoAEiMy1w.ttf"
15062
- }
15063
- },
15064
- {
15065
- "kind": "webfonts#webfont",
15066
- "family": "Unna",
15067
- "category": "serif",
15068
- "variants": [
15069
- "regular"
15070
- ],
15071
- "subsets": [
15072
- "latin"
15073
- ],
15074
- "version": "v8",
15075
- "lastModified": "2016-05-31",
15076
- "files": {
15077
- "regular": "http://fonts.gstatic.com/s/unna/v8/UAS0AM7AmbdCNY_80xyAZQ.ttf"
15078
- }
15079
- },
15080
- {
15081
- "kind": "webfonts#webfont",
15082
- "family": "VT323",
15083
- "category": "monospace",
15084
- "variants": [
15085
- "regular"
15086
- ],
15087
- "subsets": [
15088
- "latin"
15089
- ],
15090
- "version": "v7",
15091
- "lastModified": "2016-05-31",
15092
- "files": {
15093
- "regular": "http://fonts.gstatic.com/s/vt323/v7/ITU2YQfM073o1iYK3nSOmQ.ttf"
15094
- }
15095
- },
15096
- {
15097
- "kind": "webfonts#webfont",
15098
- "family": "Vampiro One",
15099
- "category": "display",
15100
- "variants": [
15101
- "regular"
15102
- ],
15103
- "subsets": [
15104
- "latin-ext",
15105
- "latin"
15106
- ],
15107
- "version": "v7",
15108
- "lastModified": "2016-05-31",
15109
- "files": {
15110
- "regular": "http://fonts.gstatic.com/s/vampiroone/v7/OVDs4gY4WpS5u3Qd1gXRW6CWcynf_cDxXwCLxiixG1c.ttf"
15111
- }
15112
- },
15113
- {
15114
- "kind": "webfonts#webfont",
15115
- "family": "Varela",
15116
- "category": "sans-serif",
15117
- "variants": [
15118
- "regular"
15119
- ],
15120
- "subsets": [
15121
- "latin-ext",
15122
- "latin"
15123
- ],
15124
- "version": "v7",
15125
- "lastModified": "2016-05-31",
15126
- "files": {
15127
- "regular": "http://fonts.gstatic.com/s/varela/v7/ON7qs0cKUUixhhDFXlZUjw.ttf"
15128
- }
15129
- },
15130
- {
15131
- "kind": "webfonts#webfont",
15132
- "family": "Varela Round",
15133
- "category": "sans-serif",
15134
- "variants": [
15135
- "regular"
15136
- ],
15137
- "subsets": [
15138
- "hebrew",
15139
- "latin"
15140
- ],
15141
- "version": "v7",
15142
- "lastModified": "2016-06-02",
15143
- "files": {
15144
- "regular": "http://fonts.gstatic.com/s/varelaround/v7/APH4jr0uSos5wiut5cpjri3USBnSvpkopQaUR-2r7iU.ttf"
15145
- }
15146
- },
15147
- {
15148
- "kind": "webfonts#webfont",
15149
- "family": "Vast Shadow",
15150
- "category": "display",
15151
- "variants": [
15152
- "regular"
15153
- ],
15154
- "subsets": [
15155
- "latin"
15156
- ],
15157
- "version": "v6",
15158
- "lastModified": "2016-05-31",
15159
- "files": {
15160
- "regular": "http://fonts.gstatic.com/s/vastshadow/v6/io4hqKX3ibiqQQjYfW0-h6CWcynf_cDxXwCLxiixG1c.ttf"
15161
- }
15162
- },
15163
- {
15164
- "kind": "webfonts#webfont",
15165
- "family": "Vesper Libre",
15166
- "category": "serif",
15167
- "variants": [
15168
- "regular",
15169
- "500",
15170
- "700",
15171
- "900"
15172
- ],
15173
- "subsets": [
15174
- "latin-ext",
15175
- "devanagari",
15176
- "latin"
15177
- ],
15178
- "version": "v8",
15179
- "lastModified": "2016-05-31",
15180
- "files": {
15181
- "regular": "http://fonts.gstatic.com/s/vesperlibre/v8/Cg-TeZFsqV8BaOcoVwzu2C3USBnSvpkopQaUR-2r7iU.ttf",
15182
- "500": "http://fonts.gstatic.com/s/vesperlibre/v8/0liLgNkygqH6EOtsVjZDsZMQuUSAwdHsY8ov_6tk1oA.ttf",
15183
- "700": "http://fonts.gstatic.com/s/vesperlibre/v8/0liLgNkygqH6EOtsVjZDsUD2ttfZwueP-QU272T9-k4.ttf",
15184
- "900": "http://fonts.gstatic.com/s/vesperlibre/v8/0liLgNkygqH6EOtsVjZDsaObDOjC3UL77puoeHsE3fw.ttf"
15185
- }
15186
- },
15187
- {
15188
- "kind": "webfonts#webfont",
15189
- "family": "Vibur",
15190
- "category": "handwriting",
15191
- "variants": [
15192
- "regular"
15193
- ],
15194
- "subsets": [
15195
- "latin"
15196
- ],
15197
- "version": "v7",
15198
- "lastModified": "2016-05-31",
15199
- "files": {
15200
- "regular": "http://fonts.gstatic.com/s/vibur/v7/xB9aKsUbJo68XP0bAg2iLw.ttf"
15201
- }
15202
- },
15203
- {
15204
- "kind": "webfonts#webfont",
15205
- "family": "Vidaloka",
15206
- "category": "serif",
15207
- "variants": [
15208
- "regular"
15209
- ],
15210
- "subsets": [
15211
- "latin"
15212
- ],
15213
- "version": "v8",
15214
- "lastModified": "2016-05-31",
15215
- "files": {
15216
- "regular": "http://fonts.gstatic.com/s/vidaloka/v8/C6Nul0ogKUWkx356rrt9RA.ttf"
15217
- }
15218
- },
15219
- {
15220
- "kind": "webfonts#webfont",
15221
- "family": "Viga",
15222
- "category": "sans-serif",
15223
- "variants": [
15224
- "regular"
15225
- ],
15226
- "subsets": [
15227
- "latin-ext",
15228
- "latin"
15229
- ],
15230
- "version": "v5",
15231
- "lastModified": "2016-05-31",
15232
- "files": {
15233
- "regular": "http://fonts.gstatic.com/s/viga/v5/uD87gDbhS7frHLX4uL6agg.ttf"
15234
- }
15235
- },
15236
- {
15237
- "kind": "webfonts#webfont",
15238
- "family": "Voces",
15239
- "category": "display",
15240
- "variants": [
15241
- "regular"
15242
- ],
15243
- "subsets": [
15244
- "latin-ext",
15245
- "latin"
15246
- ],
15247
- "version": "v5",
15248
- "lastModified": "2016-05-31",
15249
- "files": {
15250
- "regular": "http://fonts.gstatic.com/s/voces/v5/QoBH6g6yKgNIgvL8A2aE2Q.ttf"
15251
- }
15252
- },
15253
- {
15254
- "kind": "webfonts#webfont",
15255
- "family": "Volkhov",
15256
- "category": "serif",
15257
- "variants": [
15258
- "regular",
15259
- "italic",
15260
- "700",
15261
- "700italic"
15262
- ],
15263
- "subsets": [
15264
- "latin"
15265
- ],
15266
- "version": "v8",
15267
- "lastModified": "2016-05-31",
15268
- "files": {
15269
- "regular": "http://fonts.gstatic.com/s/volkhov/v8/MDIZAofe1T_J3un5Kgo8zg.ttf",
15270
- "italic": "http://fonts.gstatic.com/s/volkhov/v8/1rTjmztKEpbkKH06JwF8Yw.ttf",
15271
- "700": "http://fonts.gstatic.com/s/volkhov/v8/L8PbKS-kEoLHm7nP--NCzPesZW2xOQ-xsNqO47m55DA.ttf",
15272
- "700italic": "http://fonts.gstatic.com/s/volkhov/v8/W6oG0QDDjCgj0gmsHE520C3USBnSvpkopQaUR-2r7iU.ttf"
15273
- }
15274
- },
15275
- {
15276
- "kind": "webfonts#webfont",
15277
- "family": "Vollkorn",
15278
- "category": "serif",
15279
- "variants": [
15280
- "regular",
15281
- "italic",
15282
- "700",
15283
- "700italic"
15284
- ],
15285
- "subsets": [
15286
- "latin"
15287
- ],
15288
- "version": "v6",
15289
- "lastModified": "2016-05-31",
15290
- "files": {
15291
- "regular": "http://fonts.gstatic.com/s/vollkorn/v6/IiexqYAeh8uII223thYx3w.ttf",
15292
- "italic": "http://fonts.gstatic.com/s/vollkorn/v6/UuIzosgR1ovBhJFdwVp3fvesZW2xOQ-xsNqO47m55DA.ttf",
15293
- "700": "http://fonts.gstatic.com/s/vollkorn/v6/gOwQjJVGXlDOONC12hVoBqCWcynf_cDxXwCLxiixG1c.ttf",
15294
- "700italic": "http://fonts.gstatic.com/s/vollkorn/v6/KNiAlx6phRqXCwnZZG51JAJKKGfqHaYFsRG-T3ceEVo.ttf"
15295
- }
15296
- },
15297
- {
15298
- "kind": "webfonts#webfont",
15299
- "family": "Voltaire",
15300
- "category": "sans-serif",
15301
- "variants": [
15302
- "regular"
15303
- ],
15304
- "subsets": [
15305
- "latin"
15306
- ],
15307
- "version": "v6",
15308
- "lastModified": "2016-05-31",
15309
- "files": {
15310
- "regular": "http://fonts.gstatic.com/s/voltaire/v6/WvqBzaGEBbRV-hrahwO2cA.ttf"
15311
- }
15312
- },
15313
- {
15314
- "kind": "webfonts#webfont",
15315
- "family": "Waiting for the Sunrise",
15316
- "category": "handwriting",
15317
- "variants": [
15318
- "regular"
15319
- ],
15320
- "subsets": [
15321
- "latin"
15322
- ],
15323
- "version": "v7",
15324
- "lastModified": "2016-05-31",
15325
- "files": {
15326
- "regular": "http://fonts.gstatic.com/s/waitingforthesunrise/v7/eNfH7kLpF1PZWpsetF-ha9TChrNgrDiT3Zy6yGf3FnM.ttf"
15327
- }
15328
- },
15329
- {
15330
- "kind": "webfonts#webfont",
15331
- "family": "Wallpoet",
15332
- "category": "display",
15333
- "variants": [
15334
- "regular"
15335
- ],
15336
- "subsets": [
15337
- "latin"
15338
- ],
15339
- "version": "v8",
15340
- "lastModified": "2016-05-31",
15341
- "files": {
15342
- "regular": "http://fonts.gstatic.com/s/wallpoet/v8/hmum4WuBN4A0Z_7367NDIg.ttf"
15343
- }
15344
- },
15345
- {
15346
- "kind": "webfonts#webfont",
15347
- "family": "Walter Turncoat",
15348
- "category": "handwriting",
15349
- "variants": [
15350
- "regular"
15351
- ],
15352
- "subsets": [
15353
- "latin"
15354
- ],
15355
- "version": "v6",
15356
- "lastModified": "2016-10-05",
15357
- "files": {
15358
- "regular": "http://fonts.gstatic.com/s/walterturncoat/v6/sG9su5g4GXy1KP73cU3hvQplL2YwNeota48DxFlGDUo.ttf"
15359
- }
15360
- },
15361
- {
15362
- "kind": "webfonts#webfont",
15363
- "family": "Warnes",
15364
- "category": "display",
15365
- "variants": [
15366
- "regular"
15367
- ],
15368
- "subsets": [
15369
- "latin-ext",
15370
- "latin"
15371
- ],
15372
- "version": "v6",
15373
- "lastModified": "2016-05-31",
15374
- "files": {
15375
- "regular": "http://fonts.gstatic.com/s/warnes/v6/MXG7_Phj4YpzAXxKGItuBw.ttf"
15376
- }
15377
- },
15378
- {
15379
- "kind": "webfonts#webfont",
15380
- "family": "Wellfleet",
15381
- "category": "display",
15382
- "variants": [
15383
- "regular"
15384
- ],
15385
- "subsets": [
15386
- "latin-ext",
15387
- "latin"
15388
- ],
15389
- "version": "v4",
15390
- "lastModified": "2016-05-31",
15391
- "files": {
15392
- "regular": "http://fonts.gstatic.com/s/wellfleet/v4/J5tOx72iFRPgHYpbK9J4XQ.ttf"
15393
- }
15394
- },
15395
- {
15396
- "kind": "webfonts#webfont",
15397
- "family": "Wendy One",
15398
- "category": "sans-serif",
15399
- "variants": [
15400
- "regular"
15401
- ],
15402
- "subsets": [
15403
- "latin-ext",
15404
- "latin"
15405
- ],
15406
- "version": "v4",
15407
- "lastModified": "2016-05-31",
15408
- "files": {
15409
- "regular": "http://fonts.gstatic.com/s/wendyone/v4/R8CJT2oDXdMk_ZtuHTxoxw.ttf"
15410
- }
15411
- },
15412
- {
15413
- "kind": "webfonts#webfont",
15414
- "family": "Wire One",
15415
- "category": "sans-serif",
15416
- "variants": [
15417
- "regular"
15418
- ],
15419
- "subsets": [
15420
- "latin"
15421
- ],
15422
- "version": "v7",
15423
- "lastModified": "2016-05-31",
15424
- "files": {
15425
- "regular": "http://fonts.gstatic.com/s/wireone/v7/sRLhaQOQpWnvXwIx0CycQw.ttf"
15426
- }
15427
- },
15428
- {
15429
- "kind": "webfonts#webfont",
15430
- "family": "Work Sans",
15431
- "category": "sans-serif",
15432
- "variants": [
15433
- "100",
15434
- "200",
15435
- "300",
15436
- "regular",
15437
- "500",
15438
- "600",
15439
- "700",
15440
- "800",
15441
- "900"
15442
- ],
15443
- "subsets": [
15444
- "latin-ext",
15445
- "latin"
15446
- ],
15447
- "version": "v2",
15448
- "lastModified": "2016-06-07",
15449
- "files": {
15450
- "100": "http://fonts.gstatic.com/s/worksans/v2/ZAhtNqLaAViKjGLajtuwWaCWcynf_cDxXwCLxiixG1c.ttf",
15451
- "200": "http://fonts.gstatic.com/s/worksans/v2/u_mYNr_qYP37m7vgvmIYZy3USBnSvpkopQaUR-2r7iU.ttf",
15452
- "300": "http://fonts.gstatic.com/s/worksans/v2/FD_Udbezj8EHXbdsqLUply3USBnSvpkopQaUR-2r7iU.ttf",
15453
- "regular": "http://fonts.gstatic.com/s/worksans/v2/zVvigUiMvx7JVEnrJgc-5Q.ttf",
15454
- "500": "http://fonts.gstatic.com/s/worksans/v2/Nbre-U_bp6Xktt8cpgwaJC3USBnSvpkopQaUR-2r7iU.ttf",
15455
- "600": "http://fonts.gstatic.com/s/worksans/v2/z9rX03Xuz9ZNHTMg1_ghGS3USBnSvpkopQaUR-2r7iU.ttf",
15456
- "700": "http://fonts.gstatic.com/s/worksans/v2/4udXuXg54JlPEP5iKO5AmS3USBnSvpkopQaUR-2r7iU.ttf",
15457
- "800": "http://fonts.gstatic.com/s/worksans/v2/IQh-ap2Uqs7kl1YINeeEGi3USBnSvpkopQaUR-2r7iU.ttf",
15458
- "900": "http://fonts.gstatic.com/s/worksans/v2/Hjn0acvjHfjY_vAK9Uc6gi3USBnSvpkopQaUR-2r7iU.ttf"
15459
- }
15460
- },
15461
- {
15462
- "kind": "webfonts#webfont",
15463
- "family": "Yanone Kaffeesatz",
15464
- "category": "sans-serif",
15465
- "variants": [
15466
- "200",
15467
- "300",
15468
- "regular",
15469
- "700"
15470
- ],
15471
- "subsets": [
15472
- "latin-ext",
15473
- "latin"
15474
- ],
15475
- "version": "v7",
15476
- "lastModified": "2016-05-31",
15477
- "files": {
15478
- "200": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRbq92v6XxU4pSv06GI0NsGc.ttf",
15479
- "300": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRZlIwXPiNoNT_wxzJ2t3mTE.ttf",
15480
- "regular": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/YDAoLskQQ5MOAgvHUQCcLdXn3cHbFGWU4T2HrSN6JF4.ttf",
15481
- "700": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRf2R4S6PlKaGXWPfWpHpcl0.ttf"
15482
- }
15483
- },
15484
- {
15485
- "kind": "webfonts#webfont",
15486
- "family": "Yantramanav",
15487
- "category": "sans-serif",
15488
- "variants": [
15489
- "100",
15490
- "300",
15491
- "regular",
15492
- "500",
15493
- "700",
15494
- "900"
15495
- ],
15496
- "subsets": [
15497
- "latin-ext",
15498
- "devanagari",
15499
- "latin"
15500
- ],
15501
- "version": "v1",
15502
- "lastModified": "2016-05-31",
15503
- "files": {
15504
- "100": "http://fonts.gstatic.com/s/yantramanav/v1/Rs1I2PF4Z8GAb6qjgvr8wIAWxXGWZ3yJw6KhWS7MxOk.ttf",
15505
- "300": "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bC9-WlPSxbfiI49GsXo3q0g.ttf",
15506
- "regular": "http://fonts.gstatic.com/s/yantramanav/v1/FwdziO-qWAO8pZg8e376kaCWcynf_cDxXwCLxiixG1c.ttf",
15507
- "500": "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bMCNfqCYlB_eIx7H1TVXe60.ttf",
15508
- "700": "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bHe1Pd76Vl7zRpE7NLJQ7XU.ttf",
15509
- "900": "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bCenaqEuufTBk9XMKnKmgDA.ttf"
15510
- }
15511
- },
15512
- {
15513
- "kind": "webfonts#webfont",
15514
- "family": "Yatra One",
15515
- "category": "display",
15516
- "variants": [
15517
- "regular"
15518
- ],
15519
- "subsets": [
15520
- "latin-ext",
15521
- "devanagari",
15522
- "latin"
15523
- ],
15524
- "version": "v1",
15525
- "lastModified": "2016-06-20",
15526
- "files": {
15527
- "regular": "http://fonts.gstatic.com/s/yatraone/v1/ApKQzWF7_vG0Lt5TDqgUvw.ttf"
15528
- }
15529
- },
15530
- {
15531
- "kind": "webfonts#webfont",
15532
- "family": "Yellowtail",
15533
- "category": "handwriting",
15534
- "variants": [
15535
- "regular"
15536
- ],
15537
- "subsets": [
15538
- "latin"
15539
- ],
15540
- "version": "v6",
15541
- "lastModified": "2016-10-05",
15542
- "files": {
15543
- "regular": "http://fonts.gstatic.com/s/yellowtail/v6/HLrU6lhCTjXfLZ7X60LcB_esZW2xOQ-xsNqO47m55DA.ttf"
15544
- }
15545
- },
15546
- {
15547
- "kind": "webfonts#webfont",
15548
- "family": "Yeseva One",
15549
- "category": "display",
15550
- "variants": [
15551
- "regular"
15552
- ],
15553
- "subsets": [
15554
- "latin-ext",
15555
- "cyrillic",
15556
- "latin"
15557
- ],
15558
- "version": "v10",
15559
- "lastModified": "2016-05-31",
15560
- "files": {
15561
- "regular": "http://fonts.gstatic.com/s/yesevaone/v10/eenQQxvpzSA80JmisGcgX_esZW2xOQ-xsNqO47m55DA.ttf"
15562
- }
15563
- },
15564
- {
15565
- "kind": "webfonts#webfont",
15566
- "family": "Yesteryear",
15567
- "category": "handwriting",
15568
- "variants": [
15569
- "regular"
15570
- ],
15571
- "subsets": [
15572
- "latin"
15573
- ],
15574
- "version": "v5",
15575
- "lastModified": "2016-05-31",
15576
- "files": {
15577
- "regular": "http://fonts.gstatic.com/s/yesteryear/v5/dv09hP_ZrdjVOfZQXKXuZvesZW2xOQ-xsNqO47m55DA.ttf"
15578
- }
15579
- },
15580
- {
15581
- "kind": "webfonts#webfont",
15582
- "family": "Yrsa",
15583
- "category": "serif",
15584
- "variants": [
15585
- "300",
15586
- "regular",
15587
- "500",
15588
- "600",
15589
- "700"
15590
- ],
15591
- "subsets": [
15592
- "latin-ext",
15593
- "latin"
15594
- ],
15595
- "version": "v1",
15596
- "lastModified": "2016-06-20",
15597
- "files": {
15598
- "300": "http://fonts.gstatic.com/s/yrsa/v1/YI0C1syzAYpkrPx27UnC2w.ttf",
15599
- "regular": "http://fonts.gstatic.com/s/yrsa/v1/JWX_dCK4_Jq-oqF7r9rFHg.ttf",
15600
- "500": "http://fonts.gstatic.com/s/yrsa/v1/rWuZmBLHIeKRbnfSvWCvYg.ttf",
15601
- "600": "http://fonts.gstatic.com/s/yrsa/v1/1413P-oEfrq-tBIdqnslDQ.ttf",
15602
- "700": "http://fonts.gstatic.com/s/yrsa/v1/iV49zaJV5wyo_4LgxE2yng.ttf"
15603
- }
15604
- },
15605
- {
15606
- "kind": "webfonts#webfont",
15607
- "family": "Zeyada",
15608
- "category": "handwriting",
15609
- "variants": [
15610
- "regular"
15611
- ],
15612
- "subsets": [
15613
- "latin"
15614
- ],
15615
- "version": "v6",
15616
- "lastModified": "2016-05-31",
15617
- "files": {
15618
- "regular": "http://fonts.gstatic.com/s/zeyada/v6/hmonmGYYFwqTZQfG2nRswQ.ttf"
15619
- }
15620
- }
15621
- ]
15622
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-customizer/assets/fonts/standard.json DELETED
@@ -1,209 +0,0 @@
1
- {
2
- "kind": "standartfonts#standartfonts",
3
- "items": [
4
- {
5
- "kind": "standartfonts#standartfonts",
6
- "family": "Arial, Helvetica",
7
- "category": "sans-serif",
8
- "variants": [
9
- "regular",
10
- "italic",
11
- "700",
12
- "700italic"
13
- ],
14
- "subsets": ["latin"]
15
- },
16
- {
17
- "kind": "standartfonts#standartfonts",
18
- "family": "Arial Black, Gadget",
19
- "category": "sans-serif",
20
- "variants": [
21
- "regular",
22
- "italic",
23
- "700",
24
- "700italic"
25
- ],
26
- "subsets": ["latin"]
27
- },
28
- {
29
- "kind": "standartfonts#standartfont",
30
- "family": "Bookman Old Style",
31
- "category": "serif",
32
- "variants": [
33
- "regular",
34
- "italic",
35
- "700",
36
- "700italic"
37
- ],
38
- "subsets": ["latin"]
39
- },
40
- {
41
- "kind": "standartfonts#standartfont",
42
- "family": "Comic Sans MS",
43
- "category": "cursive",
44
- "variants": [
45
- "regular",
46
- "italic",
47
- "700",
48
- "700italic"
49
- ],
50
- "subsets": ["latin"]
51
- },
52
- {
53
- "kind": "standartfonts#standartfont",
54
- "family": "Courier",
55
- "category": "monospace",
56
- "variants": [
57
- "regular",
58
- "italic",
59
- "700",
60
- "700italic"
61
- ],
62
- "subsets": ["latin"]
63
- },
64
- {
65
- "kind": "standartfonts#standartfont",
66
- "family": "Garamond",
67
- "category": "serif",
68
- "variants": [
69
- "regular",
70
- "italic",
71
- "700",
72
- "700italic"
73
- ],
74
- "subsets": ["latin"]
75
- },
76
- {
77
- "kind": "standartfonts#standartfont",
78
- "family": "Georgia",
79
- "category": "serif",
80
- "variants": [
81
- "regular",
82
- "italic",
83
- "700",
84
- "700italic"
85
- ],
86
- "subsets": ["latin"]
87
- },
88
- {
89
- "kind": "standartfonts#standartfont",
90
- "family": "Impact, Charcoal",
91
- "category": "sans-serif",
92
- "variants": [
93
- "regular",
94
- "italic",
95
- "700",
96
- "700italic"
97
- ],
98
- "subsets": ["latin"]
99
- },
100
- {
101
- "kind": "standartfonts#standartfont",
102
- "family": "Lucida Console, Monaco",
103
- "category": "monospace",
104
- "variants": [
105
- "regular",
106
- "italic",
107
- "700",
108
- "700italic"
109
- ],
110
- "subsets": ["latin"]
111
- },
112
- {
113
- "kind": "standartfonts#standartfont",
114
- "family": "Lucida Sans Unicode, Lucida Grande",
115
- "category": "sans-serif",
116
- "variants": [
117
- "regular",
118
- "italic",
119
- "700",
120
- "700italic"
121
- ],
122
- "subsets": ["latin"]
123
- },
124
- {
125
- "kind": "standartfonts#standartfont",
126
- "family": "MS Sans Serif, Geneva",
127
- "category": "sans-serif",
128
- "variants": [
129
- "regular",
130
- "italic",
131
- "700",
132
- "700italic"
133
- ],
134
- "subsets": ["latin"]
135
- },
136
- {
137
- "kind": "standartfonts#standartfont",
138
- "family": "MS Serif, New York",
139
- "category": "sans-serif",
140
- "variants": [
141
- "regular",
142
- "italic",
143
- "700",
144
- "700italic"
145
- ],
146
- "subsets": ["latin"]
147
- },
148
- {
149
- "kind": "standartfonts#standartfont",
150
- "family": "Palatino Linotype, Book Antiqua, Palatino",
151
- "category": "serif",
152
- "variants": [
153
- "regular",
154
- "italic",
155
- "700",
156
- "700italic"
157
- ],
158
- "subsets": ["latin"]
159
- },
160
- {
161
- "kind": "standartfonts#standartfont",
162
- "family": "Tahoma, Geneva",
163
- "category": "sans-serif",
164
- "variants": [
165
- "regular",
166
- "italic",
167
- "700",
168
- "700italic"
169
- ],
170
- "subsets": ["latin"]
171
- },
172
- {
173
- "kind": "standartfonts#standartfont",
174
- "family": "Times New Roman, Times",
175
- "category": "serif",
176
- "variants": [
177
- "regular",
178
- "italic",
179
- "700",
180
- "700italic"
181
- ],
182
- "subsets": ["latin"]
183
- },
184
- {
185
- "kind": "standartfonts#standartfont",
186
- "family": "Trebuchet MS, Helvetica",
187
- "category": "sans-serif",
188
- "variants": [
189
- "regular",
190
- "italic",
191
- "700",
192
- "700italic"
193
- ],
194
- "subsets": ["latin"]
195
- },
196
- {
197
- "kind": "standartfonts#standartfont",
198
- "family": "Verdana, Geneva",
199
- "category": "sans-serif",
200
- "variants": [
201
- "regular",
202
- "italic",
203
- "700",
204
- "700italic"
205
- ],
206
- "subsets": ["latin"]
207
- }
208
- ]
209
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-customizer/cherry-customizer.php DELETED
@@ -1,1163 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Customizer
4
- * Description: Customizer functionality.
5
- * Version: 1.1.5
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.1.5
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Customizer' ) ) {
26
-
27
- /**
28
- * Contains methods for customizing the theme customization screen.
29
- *
30
- * @since 1.0.0
31
- * @since 1.0.1 Removed `module_dir` and `module_uri` properties.
32
- */
33
- class Cherry_Customizer {
34
-
35
- /**
36
- * The version of this module.
37
- *
38
- * @since 1.0.0
39
- * @access protected
40
- * @var string
41
- */
42
- protected $version;
43
-
44
- /**
45
- * Unique prefix.
46
- * This is a theme or plugin slug.
47
- *
48
- * @since 1.0.0
49
- * @access protected
50
- * @var string
51
- */
52
- protected $prefix;
53
-
54
- /**
55
- * Capability.
56
- *
57
- * @since 1.0.0
58
- * @access protected
59
- * @var string
60
- */
61
- protected $capability;
62
-
63
- /**
64
- * Setting type.
65
- *
66
- * @since 1.0.0
67
- * @access protected
68
- * @var string
69
- */
70
- protected $type;
71
-
72
- /**
73
- * Options.
74
- *
75
- * @since 1.0.0
76
- * @access protected
77
- * @var array
78
- */
79
- protected $options;
80
-
81
- /**
82
- * Core instance.
83
- *
84
- * @since 1.0.0
85
- * @access protected
86
- * @var object
87
- */
88
- protected $core;
89
-
90
- /**
91
- * WP_Customize_Manager instance.
92
- *
93
- * @since 1.0.0
94
- * @access protected
95
- * @var object.
96
- */
97
- protected $customize;
98
-
99
- /**
100
- * Module directory URI.
101
- *
102
- * @since 1.0.0
103
- * @access protected
104
- * @var array.
105
- */
106
- protected $fonts;
107
-
108
- /**
109
- * Module initialization.
110
- *
111
- * @since 1.0.0
112
- * @param object $core Cherry_Core instance.
113
- * @param array $args Aguments.
114
- */
115
-
116
- /*
117
- * $args = array(
118
- * 'prefix' => 'unique_prefix', // theme or plugin slug (*).
119
- * 'capability' => 'edit_theme_options', // (default: `edit_theme_options`).
120
- * 'type' => 'theme_mod', // `theme_mod` - for themes; `option` - for plugins (default: `theme_mod`).
121
- * 'options' => array(
122
- * 'unique_panel_ID' => array(
123
- * 'title' => esc_html__( 'Panel Title', 'text-domain' ),
124
- * 'description' => esc_html__( 'Panel Description', 'text-domain' ),
125
- * 'priority' => 140,
126
- * 'capability' => '', (optional)
127
- * 'theme_supports' => '', (optional)
128
- * 'active_callback' => '', // (optional: is_front_page, is_single)
129
- * 'type' => 'panel', // panel, section or control (*).
130
- * ),
131
- * 'unique_section_ID' => array(
132
- * 'title' => esc_html__( 'Section Title', 'text-domain' ),
133
- * 'description' => esc_html__( 'Section Description', 'text-domain' ),
134
- * 'priority' => 10, (10, 20, 30, ...)
135
- * 'panel' => 'unique_panel_ID', (*)
136
- * 'type' => 'section', (*)
137
- * ),
138
- * 'unique_control_ID' => array(
139
- * 'title' => esc_html__( 'Control Title', 'text-domain' ),
140
- * 'description' => esc_html__( 'Control Description', 'text-domain' ),
141
- * 'section' => 'unique_section_ID', (*)
142
- * 'default' => '',
143
- * 'field' => 'text', // text, textarea, checkbox, radio, select,
144
- * // iconpicker, fonts, hex_color, image, file.
145
- * 'choices' => array(), // for `select` and `radio` field.
146
- * 'type' => 'control', (*)
147
- * 'active_callback' => '', (optional: is_front_page, is_single)
148
- * 'transport' => 'refresh', // refresh or postMessage (default: refresh)
149
- * 'sanitize_callback' => '', (optional) Maybe need to use a custom function or sanitization.
150
- * 'sanitize_js_callback' => '', (optional)
151
- * ),
152
- * )
153
- * );
154
- */
155
-
156
- /**
157
- * Cherry customizer class construct.
158
- */
159
- public function __construct( $core, $args ) {
160
-
161
- /**
162
- * Cherry Customizer only works in WordPress 4.0 or later.
163
- */
164
- if ( version_compare( $GLOBALS['wp_version'], '4.0', '<' ) ) {
165
- return;
166
- }
167
-
168
- $this->type = ! empty( $args['type'] ) && $this->sanitize_type( $args['type'] ) ? $args['type'] : 'theme_mod';
169
-
170
- if ( empty( $args['options'] ) || ( ( 'option' === $this->type ) && empty( $args['prefix'] ) ) ) {
171
- return;
172
- }
173
-
174
- $this->prefix = $this->prepare_prefix( $args['prefix'] );
175
- $this->capability = ! empty( $args['capability'] ) ? $args['capability'] : 'edit_theme_options';
176
- $this->type = ! empty( $args['type'] ) && $this->sanitize_type( $args['type'] )
177
- ? $args['type'] : 'theme_mod';
178
- $this->options = $args['options'];
179
- $this->core = $core;
180
- $this->fonts = array();
181
- $this->version = '1.1.5';
182
-
183
- add_action( 'customize_register', array( $this, 'register' ) );
184
-
185
- // Prepare fonts data.
186
- add_action( 'after_switch_theme', array( $this, 'init_fonts' ), 10 );
187
- add_action( 'after_switch_theme', array( $this, 'add_options' ), 11 );
188
-
189
- // Clear fonts data.
190
- add_action( 'switch_theme', array( $this, 'clear_fonts' ) );
191
- add_action( 'upgrader_process_complete', array( $this, 'fire_clear_fonts' ), 10, 2 );
192
-
193
- add_filter( 'cherry_customizer_get_core', array( $this, 'pass_core_into_control' ) );
194
-
195
- $this->include_custom_controls();
196
-
197
- }
198
-
199
- /**
200
- * Pass current core instance into custom controls
201
- *
202
- * @param mixed $core Default core instance (false) or core instance if its not first callback.
203
- * @return Cherry_Core
204
- */
205
- public function pass_core_into_control( $core = false ) {
206
- return $this->core;
207
- }
208
-
209
- /**
210
- * Include advanced customizer controls classes
211
- *
212
- * @since 1.1.0
213
- * @since 1.1.4 Using dirname( __FILE__ ) instead of __DIR__.
214
- */
215
- private function include_custom_controls() {
216
-
217
- if ( ! class_exists( 'Cherry_WP_Customize_Iconpicker' ) ) {
218
- require_once( trailingslashit( dirname( __FILE__ ) ) . '/inc/class-cherry-wp-customize-iconpicker.php' );
219
- }
220
-
221
- }
222
-
223
- /**
224
- * Registeration for a new panel, sections, settings and controls.
225
- *
226
- * @since 1.0.0
227
- * @param object $wp_customize WP_Customize_Manager instance.
228
- */
229
- public function register( $wp_customize ) {
230
-
231
- // Failsafe is safe.
232
- if ( ! isset( $wp_customize ) ) {
233
- return;
234
- }
235
-
236
- $this->set_customize( $wp_customize );
237
-
238
- foreach ( (array) $this->options as $id => $option ) {
239
-
240
- if ( empty( $option['type'] ) ) {
241
- continue;
242
- }
243
-
244
- if ( 'panel' === $option['type'] ) {
245
- $this->add_panel( $id, $option );
246
- }
247
-
248
- if ( 'section' === $option['type'] ) {
249
- $this->add_section( $id, $option );
250
- }
251
-
252
- if ( 'control' === $option['type'] ) {
253
- $this->add_control( $id, $option );
254
- }
255
- }
256
- }
257
-
258
- /**
259
- * Add a customize panel.
260
- *
261
- * @since 1.0.0
262
- * @param number $id Settings ID.
263
- * @param array $args Panel arguments.
264
- */
265
- public function add_panel( $id, $args ) {
266
- $prefix = $this->prefix . '_';
267
- $priority = isset( $args['priority'] ) ? $args['priority'] : 160;
268
- $theme_supports = isset( $args['theme_supports'] ) ? $args['theme_supports'] : '';
269
- $title = isset( $args['title'] ) ? esc_attr( $args['title'] ) : 'Untitled Panel';
270
- $description = isset( $args['description'] ) ? esc_attr( $args['description'] ) : '';
271
- $active_callback = isset( $args['active_callback'] ) ? $this->active_callback( $args['active_callback'] ) : '';
272
-
273
- $this->customize->add_panel( $prefix . esc_attr( $id ), array(
274
- 'priority' => $priority,
275
- 'capability' => $this->capability,
276
- 'theme_supports' => $theme_supports,
277
- 'title' => $title,
278
- 'description' => $description,
279
- 'active_callback' => $active_callback,
280
- ) );
281
- }
282
-
283
- /**
284
- * Add a customize section.
285
- *
286
- * @since 1.0.0
287
- * @param array $id Settings ID.
288
- * @param array $args Section arguments.
289
- */
290
-
291
- /**
292
- * The priorities of the core sections are below:
293
- *
294
- * Title ID Priority (Order)
295
- * Site Title & Tagline title_tagline 20
296
- * Colors colors 40
297
- * Header Image header_image 60
298
- * Background Image background_image 80
299
- * Navigation nav 100
300
- * Widgets (Panel) widgets 110
301
- * Static Front Page static_front_page 120
302
- */
303
- public function add_section( $id, $args ) {
304
- $prefix = $this->prefix . '_';
305
- $title = isset( $args['title'] ) ? esc_attr( $args['title'] ) : 'Untitled Section';
306
- $description = isset( $args['description'] ) ? esc_attr( $args['description'] ) : '';
307
- $panel = isset( $args['panel'] ) ? $prefix . esc_attr( $args['panel'] ) : '';
308
- $priority = isset( $args['priority'] ) ? $args['priority'] : 160;
309
- $theme_supports = isset( $args['theme_supports'] ) ? $args['theme_supports'] : '';
310
- $active_callback = isset( $args['active_callback'] ) ? $this->active_callback( $args['active_callback'] ) : '';
311
-
312
- $this->customize->add_section( $prefix . esc_attr( $id ), array(
313
- 'title' => $title,
314
- 'description' => $description,
315
- 'panel' => $panel,
316
- 'priority' => $priority,
317
- 'capability' => $this->capability,
318
- 'theme_supports' => $theme_supports,
319
- 'active_callback' => $active_callback,
320
- ) );
321
- }
322
-
323
- /**
324
- * Add a customize control.
325
- *
326
- * @since 1.0.0
327
- * @param numder $id Settings ID.
328
- * @param array $args Control arguments.
329
- */
330
- public function add_control( $id, $args ) {
331
- static $control_priority = 0;
332
-
333
- $prefix = $this->prefix . '_';
334
- $section = $this->get_control_section( $args );
335
- $id = ( 'option' === $this->type ) ? sprintf( '%1$s_options[%2$s]', $this->prefix, esc_attr( $id ) ) : esc_attr( $id );
336
- $priority = isset( $args['priority'] ) ? $args['priority'] : ++$control_priority;
337
- $default = isset( $args['default'] ) ? $args['default'] : '';
338
- $title = isset( $args['title'] ) ? esc_attr( $args['title'] ) : 'Untitled Control';
339
- $description = isset( $args['description'] ) ? esc_attr( $args['description'] ) : '';
340
- $transport = isset( $args['transport'] ) ? esc_attr( $args['transport'] ) : 'refresh';
341
- $field_type = isset( $args['field'] ) ? esc_attr( $args['field'] ) : 'text';
342
-
343
- $sanitize_callback = isset( $args['sanitize_callback'] ) ? esc_attr( $args['sanitize_callback'] ) : array( $this, 'sanitize_' . $field_type );
344
- $sanitize_callback = is_callable( $sanitize_callback ) ? $sanitize_callback : 'sanitize_text_field';
345
- $sanitize_js_callback = isset( $args['sanitize_js_callback'] ) ? esc_attr( $args['sanitize_js_callback'] ) : '';
346
- $active_callback = isset( $args['active_callback'] ) ? $this->active_callback( $args['active_callback'] ) : '';
347
-
348
- // Add a customize setting.
349
- $this->customize->add_setting( $id, array(
350
- 'type' => $this->type,
351
- 'capability' => $this->capability,
352
- 'default' => $default,
353
- 'transport' => $transport,
354
- 'sanitize_callback' => $sanitize_callback,
355
- 'sanitize_js_callback' => $sanitize_js_callback,
356
- ) );
357
-
358
- // Prepare arguments for a customize control.
359
- $control_args = array(
360
- 'priority' => $priority,
361
- 'section' => $section,
362
- 'label' => $title,
363
- 'description' => $description,
364
- 'active_callback' => $active_callback,
365
- 'choices' => '', // select, radio
366
- );
367
- $control_class = '';
368
-
369
- switch ( $field_type ) {
370
-
371
- case 'text':
372
- case 'textarea':
373
- case 'email':
374
- case 'url':
375
- case 'password':
376
- case 'checkbox':
377
- $control_args = wp_parse_args( array( 'type' => $field_type ), $control_args );
378
- break;
379
-
380
- case 'range':
381
- case 'number':
382
- $input_attrs = ( isset( $args['input_attrs'] ) ) ? $args['input_attrs'] : array();
383
- $control_args = wp_parse_args( array( 'type' => $field_type, 'input_attrs' => $input_attrs ), $control_args );
384
- break;
385
-
386
- case 'select':
387
- $choices = ( isset( $args['choices'] ) ) ? $args['choices'] : array();
388
- $control_args = wp_parse_args( array( 'type' => 'select', 'choices' => $choices ), $control_args );
389
- break;
390
-
391
- case 'fonts':
392
- $choices = ( isset( $args['choices'] ) ) ? $args['choices'] : $this->get_fonts();
393
- $control_args = wp_parse_args( array( 'type' => 'select', 'choices' => $choices ), $control_args );
394
- break;
395
-
396
- case 'radio':
397
- $choices = ( isset( $args['choices'] ) ) ? $args['choices'] : array();
398
- $control_args = wp_parse_args( array( 'type' => 'radio', 'choices' => $choices ), $control_args );
399
- break;
400
-
401
- case 'hex_color':
402
- $control_class = 'WP_Customize_Color_Control';
403
- break;
404
-
405
- case 'image':
406
- $control_class = 'WP_Customize_Image_Control';
407
- break;
408
-
409
- case 'file':
410
- $control_class = 'WP_Customize_Upload_Control';
411
- break;
412
-
413
- case 'iconpicker':
414
- $control_class = 'Cherry_WP_Customize_Iconpicker';
415
- $icon_data = ( isset( $args['icon_data'] ) ) ? $args['icon_data'] : array();
416
- $control_args = wp_parse_args( array( 'icon_data' => $icon_data ), $control_args );
417
- break;
418
-
419
- default:
420
- /**
421
- * Filter arguments for a `$field_type` customize control.
422
- *
423
- * @since 1.0.0
424
- * @param array $control_args Control's arguments.
425
- * @param string $id Control's ID.
426
- * @param object $this Cherry_Customizer instance.
427
- */
428
- $control_args = apply_filters( 'cherry_customizer_control_args_for_{$field_type}', $control_args, $id, $this );
429
- break;
430
- }
431
-
432
- /**
433
- * Filter arguments for a customize control.
434
- *
435
- * @since 1.0.0
436
- * @param array $control_args Control's arguments.
437
- * @param string $id Control's ID.
438
- * @param object $this Cherry_Customizer instance.
439
- */
440
- $control_args = apply_filters( 'cherry_customizer_control_args', $control_args, $id, $this );
441
-
442
- /**
443
- * Filter PHP-class name for a customize control (maybe custom).
444
- *
445
- * @since 1.0.0
446
- * @param array $control_args Control's PHP-class name.
447
- * @param string $id Control's ID.
448
- * @param object $this Cherry_Customizer instance.
449
- */
450
- $control_class = apply_filters( 'cherry_customizer_control_class', $control_class, $id, $this );
451
-
452
- if ( class_exists( $control_class ) ) {
453
- $this->customize->add_control( new $control_class( $this->customize, $id, $control_args ) );
454
- } else {
455
- $this->customize->add_control( $id, $control_args );
456
- }
457
- }
458
-
459
- /**
460
- * Get section name from arguments - prefixed, if is custom section, unprefixed - if is core section.
461
- *
462
- * @since 1.0.0
463
- * @param array $args Control arguments.
464
- * @return string
465
- */
466
- public function get_control_section( $args ) {
467
-
468
- if ( ! isset( $args['section'] ) ) {
469
- return '';
470
- }
471
-
472
- $default_sections = apply_filters( 'cherry_customizer_core_sections', array(
473
- 'title_tagline',
474
- 'colors',
475
- 'header_image',
476
- 'background_image',
477
- 'nav',
478
- 'widgets',
479
- 'static_front_page',
480
- ) );
481
-
482
- if ( in_array( esc_attr( $args['section'] ), $default_sections ) ) {
483
- return esc_attr( $args['section'] );
484
- }
485
-
486
- return $this->prefix . '_' . esc_attr( $args['section'] );
487
- }
488
-
489
- /**
490
- * Retrieve a prefix.
491
- *
492
- * @since 1.0.0
493
- * @return string
494
- */
495
- public function prepare_prefix( $prefix ) {
496
- $prefix = preg_replace( '/\W/', '-', strtolower( $prefix ) );
497
- $prefix = sanitize_key( $prefix );
498
-
499
- return $prefix;
500
- }
501
-
502
- /**
503
- * Save WP_Customize_Manager instance to prorerty.
504
- *
505
- * @since 1.0.0
506
- * @param object $customize WP_Customize_Manager instance.
507
- */
508
- public function set_customize( $customize ) {
509
- $this->customize = $customize;
510
- }
511
-
512
- /**
513
- * Retrieve the version number.
514
- *
515
- * @since 1.0.0
516
- * @return string The version number of the module.
517
- */
518
- public function get_version() {
519
- return $this->version;
520
- }
521
-
522
- /**
523
- * Retrieve a option value by ID.
524
- *
525
- * @since 1.0.0
526
- * @param mixed $id Settings ID.
527
- * @return bool|mixed
528
- */
529
- public function get_value( $id, $default = null ) {
530
-
531
- if ( null === $default ) {
532
- $default = $this->get_default( $id );
533
- }
534
-
535
- if ( 'theme_mod' === $this->type ) {
536
- return get_theme_mod( $id, $default );
537
- }
538
-
539
- if ( 'option' === $this->type ) {
540
- $options = get_option( $this->prefix . '_options', array() );
541
-
542
- return isset( $options[ $id ] ) ? $options[ $id ] : $default;
543
- }
544
-
545
- return $default;
546
- }
547
-
548
- /**
549
- * Retrieve a default option value.
550
- *
551
- * @since 1.0.0
552
- * @param [string] $id Settings ID.
553
- * @return mixed
554
- */
555
- public function get_default( $id ) {
556
- return isset( $this->options[ $id ]['default'] ) ? $this->options[ $id ]['default'] : null;
557
- }
558
-
559
- /**
560
- * Whitelist for setting type.
561
- *
562
- * @since 1.0.0
563
- * @param [string] $type Settings type.
564
- * @return bool
565
- */
566
- public function sanitize_type( $type ) {
567
- return in_array( $type, array( 'theme_mod', 'option' ) );
568
- }
569
-
570
- /**
571
- * Text sanitization callback.
572
- *
573
- * - Sanitization: html
574
- * - Control: text, textarea
575
- *
576
- * Sanitization callback for 'html' type text inputs. This callback sanitizes `$html`
577
- * for HTML allowable in posts.
578
- *
579
- * NOTE: wp_filter_post_kses() can be passed directly as `$wp_customize->add_setting()`
580
- * 'sanitize_callback'. It is wrapped in a callback here merely for example purposes.
581
- *
582
- * @author WPTRT <https://github.com/WPTRT>
583
- * @author Cherry Team <cherryframework@gmail.com>
584
- * @see wp_filter_post_kses() https://developer.wordpress.org/reference/functions/wp_filter_post_kses/
585
- * @since 1.0.0
586
- * @param [string] $html HTML to sanitize.
587
- * @return string Sanitized HTML.
588
- */
589
- public function sanitize_text( $html ) {
590
- return wp_filter_post_kses( $html );
591
- }
592
-
593
- /**
594
- * Email sanitization callback.
595
- *
596
- * - Sanitization: email
597
- * - Control: text
598
- *
599
- * Sanitization callback for 'email' type text controls. This callback sanitizes `$email`
600
- * as a valid email address.
601
- *
602
- * @author WPTRT <https://github.com/WPTRT>
603
- * @author Cherry Team <cherryframework@gmail.com>
604
- * @see sanitize_email() https://developer.wordpress.org/reference/functions/sanitize_key/
605
- * @link sanitize_email() https://codex.wordpress.org/Function_Reference/sanitize_email
606
- * @since 1.0.0
607
- * @param [string] $email Email address to sanitize.
608
- * @param WP_Customize_Setting $setting Setting instance.
609
- * @return string The sanitized email if not null; otherwise, the setting default.
610
- */
611
- public function sanitize_email( $email, $setting ) {
612
- // Sanitize $input as a hex value without the hash prefix.
613
- $email = sanitize_email( $email );
614
-
615
- // If $email is a valid email, return it; otherwise, return the default.
616
- return ( '' === $email ) ? $setting->default : $email;
617
- }
618
-
619
- /**
620
- * Textarea sanitization callback.
621
- *
622
- * @since 1.0.0
623
- * @param [string] $html HTML to sanitize.
624
- * @return string Sanitized HTML.
625
- */
626
- public function sanitize_textarea( $html ) {
627
- return $this->sanitize_text( $html );
628
- }
629
-
630
- /**
631
- * Select sanitization callback.
632
- *
633
- * - Sanitization: select
634
- * - Control: select, radio
635
- *
636
- * Sanitization callback for 'select' and 'radio' type controls. This callback sanitizes `$input`
637
- * as a slug, and then validates `$input` against the choices defined for the control.
638
- *
639
- * @author WPTRT <https://github.com/WPTRT>
640
- * @author Cherry Team <cherryframework@gmail.com>
641
- * @see sanitize_key() https://developer.wordpress.org/reference/functions/sanitize_key/
642
- * @see $wp_customize->get_control() https://developer.wordpress.org/reference/classes/wp_customize_manager/get_control/
643
- * @since 1.0.0
644
- * @param [string] $input Slug to sanitize.
645
- * @param WP_Customize_Setting $setting Setting instance.
646
- * @return string Sanitized slug if it is a valid choice; otherwise, the setting default.
647
- */
648
- public function sanitize_select( $input, $setting ) {
649
-
650
- // Ensure input is a slug.
651
- $input = sanitize_key( $input );
652
-
653
- // Get list of choices from the control associated with the setting.
654
- $choices = $setting->manager->get_control( $setting->id )->choices;
655
-
656
- // If the input is a valid key, return it; otherwise, return the default.
657
- return ( array_key_exists( $input, $choices ) ? $input : $setting->default );
658
- }
659
-
660
- /**
661
- * Function sanitize_radio
662
- */
663
- public function sanitize_radio( $input, $setting ) {
664
- return $this->sanitize_select( $input, $setting );
665
- }
666
-
667
- /**
668
- * Checkbox sanitization callback.
669
- *
670
- * Sanitization callback for 'checkbox' type controls. This callback sanitizes `$checked`
671
- * as a boolean value, either TRUE or FALSE.
672
- *
673
- * @author WPTRT <https://github.com/WPTRT>
674
- * @author Cherry Team <cherryframework@gmail.com>
675
- * @since 1.0.0
676
- * @param bool $checked Whether the checkbox is checked.
677
- * @return bool Whether the checkbox is checked.
678
- */
679
- public function sanitize_checkbox( $checked ) {
680
- return ( ( isset( $checked ) && true == $checked ) ? true : false );
681
- }
682
-
683
- /**
684
- * HEX Color sanitization callback example.
685
- *
686
- * - Sanitization: hex_color
687
- * - Control: text, WP_Customize_Color_Control
688
- *
689
- * Note: sanitize_hex_color_no_hash() can also be used here, depending on whether
690
- * or not the hash prefix should be stored/retrieved with the hex color value.
691
- *
692
- * @author WPTRT <https://github.com/WPTRT>
693
- * @author Cherry Team <cherryframework@gmail.com>
694
- * @see sanitize_hex_color() https://developer.wordpress.org/reference/functions/sanitize_hex_color/
695
- * @link sanitize_hex_color_no_hash() https://developer.wordpress.org/reference/functions/sanitize_hex_color_no_hash/
696
- * @since 1.0.0
697
- * @param [string] $hex_color HEX color to sanitize.
698
- * @param WP_Customize_Setting $setting Setting instance.
699
- * @return string The sanitized hex color if not null; otherwise, the setting default.
700
- */
701
- public function sanitize_hex_color( $hex_color, $setting ) {
702
- // Sanitize $input as a hex value without the hash prefix.
703
- $hex_color = sanitize_hex_color( $hex_color );
704
-
705
- // If $input is a valid hex value, return it; otherwise, return the default.
706
- return ( '' === $hex_color ) ? $setting->default : $hex_color;
707
- }
708
-
709
- /**
710
- * Image sanitization callback.
711
- *
712
- * Checks the image's file extension and mime type against a whitelist. If they're allowed,
713
- * send back the filename, otherwise, return the setting default.
714
- *
715
- * - Sanitization: image file extension
716
- * - Control: text, WP_Customize_Image_Control
717
- *
718
- * @author WPTRT <https://github.com/WPTRT>
719
- * @author Cherry Team <cherryframework@gmail.com>
720
- * @see wp_check_filetype() https://developer.wordpress.org/reference/functions/wp_check_filetype/
721
- * @since 1.0.0
722
- * @param [string] $image Image filename.
723
- * @param WP_Customize_Setting $setting Setting instance.
724
- * @return string The image filename if the extension is allowed; otherwise, the setting default.
725
- */
726
- public function sanitize_image( $image, $setting ) {
727
-
728
- // Allow to correctly remove selected image
729
- if ( empty( $image ) ) {
730
- return $image;
731
- }
732
-
733
- $mimes = $this->get_image_types();
734
-
735
- // Return an array with file extension and mime_type.
736
- $file = wp_check_filetype( $image, $mimes );
737
-
738
- // If $image has a valid mime_type, return it; otherwise, return the default.
739
- return ( $file['ext'] ? $image : $setting->default );
740
- }
741
-
742
- /**
743
- * URL sanitization callback.
744
- *
745
- * - Sanitization: url
746
- * - Control: text, url
747
- *
748
- * Sanitization callback for 'url' type text inputs. This callback sanitizes `$url` as a valid URL.
749
- *
750
- * NOTE: esc_url_raw() can be passed directly as `$wp_customize->add_setting()` 'sanitize_callback'.
751
- * It is wrapped in a callback here merely for example purposes.
752
- *
753
- * @author WPTRT <https://github.com/WPTRT>
754
- * @author Cherry Team <cherryframework@gmail.com>
755
- * @see esc_url_raw() https://developer.wordpress.org/reference/functions/esc_url_raw/
756
- * @since 1.0.0
757
- * @param [string] $url URL to sanitize.
758
- * @return string Sanitized URL.
759
- */
760
- public function sanitize_url( $url ) {
761
- return esc_url_raw( $url );
762
- }
763
-
764
- /**
765
- * File URL sanitization callback.
766
- *
767
- * @since 1.0.0
768
- * @param [string] $url File URL to sanitize.
769
- * @return string Sanitized URL.
770
- */
771
- public function sanitize_file( $url ) {
772
- return $this->sanitize_url( $url );
773
- }
774
-
775
- /**
776
- * Range sanitization callback.
777
- *
778
- * - Sanitization: number_range
779
- * - Control: number, tel
780
- *
781
- * Sanitization callback for 'number' or 'tel' type text inputs. This callback sanitizes
782
- * `$number` as an absolute integer within a defined min-max range.
783
- *
784
- * @author WPTRT <https://github.com/WPTRT>
785
- * @author Cherry Team <cherryframework@gmail.com>
786
- * @see absint() https://developer.wordpress.org/reference/functions/absint/
787
- * @since 1.0.0
788
- * @param int $number Number to check within the numeric range defined by the setting.
789
- * @param WP_Customize_Setting $setting Setting instance.
790
- * @return int|string The number, if it is zero or greater and falls within the defined range;
791
- * otherwise, the setting default.
792
- */
793
- public function sanitize_range( $number, $setting ) {
794
- // Get the input attributes associated with the setting.
795
- $atts = $setting->manager->get_control( $setting->id )->input_attrs;
796
-
797
- // Get step.
798
- $step = ( isset( $atts['step'] ) ? $atts['step'] : 1 );
799
-
800
- if ( is_float( $step ) ) {
801
-
802
- // Ensure input is a float value.
803
- $number = floatval( $number );
804
- $checker = is_float( $number / $step );
805
- } else {
806
-
807
- // Ensure input is an absolute integer.
808
- $number = absint( $number );
809
- $checker = is_int( $number / $step );
810
- }
811
-
812
- // Get minimum number in the range.
813
- $min = ( isset( $atts['min'] ) ? $atts['min'] : $number );
814
-
815
- // Get maximum number in the range.
816
- $max = ( isset( $atts['max'] ) ? $atts['max'] : $number );
817
-
818
- // If the number is within the valid range, return it; otherwise, return the default
819
- return ( $min <= $number && $number <= $max && $checker ? $number : $setting->default );
820
- }
821
-
822
- /**
823
- * Number sanitization callback.
824
- *
825
- * @since 1.0.0
826
- * @param int $number Number to check within the numeric range defined by the setting.
827
- * @param WP_Customize_Setting $setting Setting instance.
828
- * @return int|string The number, if it is zero or greater and falls within the defined range;
829
- * otherwise, the setting default.
830
- */
831
- public function sanitize_number( $number, $setting ) {
832
- return $this->sanitize_range( $number, $setting );
833
- }
834
-
835
- /**
836
- * Retrieve array of image file types.
837
- *
838
- * @author WPTRT <https://github.com/WPTRT>
839
- * @author Cherry Team <cherryframework@gmail.com>
840
- * @since 1.0.0
841
- * @return array
842
- */
843
- public function get_image_types() {
844
- /**
845
- * Filter array of valid image file types.
846
- *
847
- * The array includes image mime types that are included in wp_get_mime_types()
848
- *
849
- * @since 1.0.0
850
- * @param array $mimes Image mime types.
851
- * @param object $this Cherry_Customiser instance.
852
- */
853
- return apply_filters( 'cherry_customizer_get_image_types', array(
854
- 'jpg|jpeg|jpe' => 'image/jpeg',
855
- 'gif' => 'image/gif',
856
- 'png' => 'image/png',
857
- 'bmp' => 'image/bmp',
858
- 'tif|tiff' => 'image/tiff',
859
- 'ico' => 'image/x-icon',
860
- ), $this );
861
- }
862
-
863
- /**
864
- * Fonts initialization.
865
- * Once add records to the `wp_options` table.
866
- *
867
- * @since 1.0.0
868
- */
869
- public function init_fonts() {
870
- $fonts_data = $this->get_fonts_data();
871
- $fonts_data = (array) $fonts_data;
872
-
873
- foreach ( $fonts_data as $type => $file ) {
874
- $data = $this->read_font_file( $file );
875
- add_option( 'cherry_customiser_fonts_' . $type, $data );
876
- }
877
- }
878
-
879
- /**
880
- * Prepare fonts.
881
- *
882
- * @since 1.0.0
883
- */
884
- public function prepare_fonts() {
885
- $fonts_data = $this->get_fonts_data();
886
- $fonts_data = (array) $fonts_data;
887
-
888
- foreach ( $fonts_data as $type => $file ) {
889
-
890
- $fonts = get_option( 'cherry_customiser_fonts_' . $type, false );
891
-
892
- if ( false === $fonts ) {
893
- $fonts = $this->read_font_file( $file );
894
- update_option( 'cherry_customiser_fonts_' . $type, $fonts );
895
- }
896
-
897
- if ( is_array( $fonts ) ) {
898
- $this->fonts = array_merge( $this->fonts, $this->satizite_font_family( $fonts ) );
899
- }
900
- }
901
- }
902
-
903
- /**
904
- * Retrieve array with fonts file path.
905
- *
906
- * @since 1.0.0
907
- * @return array
908
- */
909
- public function get_fonts_data() {
910
- /**
911
- * Filter array of fonts data.
912
- *
913
- * @since 1.0.0
914
- * @param array $data Set of fonts data.
915
- * @param object $this Cherry_Customiser instance.
916
- */
917
- return apply_filters( 'cherry_customizer_get_fonts_data', array(
918
- 'standard' => dirname( __FILE__ ) . '/assets/fonts/standard.json',
919
- 'google' => dirname( __FILE__ ) . '/assets/fonts/google.json',
920
- ), $this );
921
- }
922
-
923
- /**
924
- * Retrieve array with font-family (for select element).
925
- *
926
- * @since 1.0.0
927
- * @param string $type Font type.
928
- * @return array
929
- */
930
- public function get_fonts( $type = '' ) {
931
-
932
- if ( ! empty( $this->fonts[ $type ] ) ) {
933
- return $this->fonts[ $type ];
934
- }
935
-
936
- if ( ! empty( $this->fonts ) ) {
937
- return $this->fonts;
938
- }
939
-
940
- $this->prepare_fonts( $type );
941
-
942
- return ! empty( $type ) && isset( $this->fonts[ $type ] ) ? $this->fonts[ $type ] : $this->fonts;
943
- }
944
-
945
- /**
946
- * Retrieve a data from font's file.
947
- *
948
- * @since 1.0.0
949
- * @param string $file File path.
950
- * @return array Fonts data.
951
- */
952
- public function read_font_file( $file ) {
953
-
954
- if ( ! $this->file_exists( $file ) ) {
955
- return false;
956
- }
957
-
958
- // Read the file.
959
- $json = $this->get_file( $file );
960
-
961
- if ( ! $json ) {
962
- return new WP_Error( 'reading_error', 'Error when reading file' );
963
- }
964
-
965
- $content = json_decode( $json, true );
966
-
967
- return $content['items'];
968
- }
969
-
970
- /**
971
- * Safely checks exists file or not.
972
- *
973
- * @since 1.1.4
974
- * @global object $wp_filesystem
975
- * @param string $file File path.
976
- * @return bool
977
- */
978
- public function file_exists( $file ) {
979
-
980
- if ( ! function_exists( 'WP_Filesystem' ) ) {
981
- include_once( ABSPATH . '/wp-admin/includes/file.php' );
982
- }
983
-
984
- WP_Filesystem();
985
- global $wp_filesystem;
986
-
987
- if ( $wp_filesystem->abspath() ) {
988
- return $wp_filesystem->exists( $file );
989
-
990
- } else {
991
- return file_exists( $file );
992
- }
993
- }
994
-
995
- /**
996
- * Safely get file content.
997
- *
998
- * @since 1.1.4
999
- * @global object $wp_filesystem
1000
- * @param string $file File path.
1001
- * @return bool
1002
- */
1003
- public function get_file( $file ) {
1004
-
1005
- if ( ! function_exists( 'WP_Filesystem' ) ) {
1006
- include_once( ABSPATH . '/wp-admin/includes/file.php' );
1007
- }
1008
-
1009
- WP_Filesystem();
1010
- global $wp_filesystem;
1011
-
1012
- $result = '';
1013
-
1014
- if ( $wp_filesystem->abspath() ) {
1015
- $result = $wp_filesystem->get_contents( $file );
1016
-
1017
- } else {
1018
- $result = Cherry_Toolkit::get_file( $file );
1019
- }
1020
-
1021
- return $result;
1022
- }
1023
-
1024
- /**
1025
- * Retrieve a set with `font-family` ( 'foo' => 'foo' ).
1026
- *
1027
- * @since 1.0.0
1028
- * @param array $data All fonts data.
1029
- * @return array
1030
- */
1031
- public function satizite_font_family( $data ) {
1032
- $keys = array_map( array( $this, '_build_keys' ), $data );
1033
- $values = array_map( array( $this, '_build_values' ), $data );
1034
-
1035
- array_filter( $keys );
1036
- array_filter( $values );
1037
-
1038
- return array_combine( $keys, $values );
1039
- }
1040
-
1041
- /**
1042
- * Function _build_keys.
1043
- *
1044
- * @since 1.0.0
1045
- */
1046
- public function _build_keys( $item ) {
1047
-
1048
- if ( empty( $item['family'] ) ) {
1049
- return false;
1050
- }
1051
-
1052
- return sprintf( '%1$s, %2$s', $item['family'], $item['category'] );
1053
- }
1054
-
1055
- /**
1056
- * Function _build_values.
1057
- *
1058
- * @since 1.0.0
1059
- */
1060
- public function _build_values( $item ) {
1061
-
1062
- if ( empty( $item['family'] ) ) {
1063
- return false;
1064
- }
1065
-
1066
- return $item['family'];
1067
- }
1068
-
1069
- /**
1070
- * Function add_options
1071
- *
1072
- * @since 1.0.0
1073
- */
1074
- public function add_options() {
1075
-
1076
- if ( empty( $this->options ) ) {
1077
- return;
1078
- }
1079
-
1080
- $mods = get_theme_mods();
1081
-
1082
- foreach ( $this->options as $id => $option ) {
1083
-
1084
- if ( 'control' != $option['type'] ) {
1085
- continue;
1086
- }
1087
-
1088
- if ( isset( $mods[ $id ] ) ) {
1089
- continue;
1090
- }
1091
-
1092
- $mods[ $id ] = $this->get_default( $id );
1093
- }
1094
-
1095
- $theme = get_option( 'stylesheet' );
1096
- update_option( "theme_mods_$theme", $mods );
1097
- }
1098
-
1099
- /**
1100
- * Callback-function for `upgrader_process_complete` hook (for clear fonts data).
1101
- *
1102
- * @since 1.0.0
1103
- * @param WP_Upgrader $updater Upgrader instance.
1104
- * @param array $data Array of bulk item update data.
1105
- */
1106
- public function fire_clear_fonts( $updater, $data ) {
1107
- $this->clear_fonts();
1108
- }
1109
-
1110
- /**
1111
- * Clear customizer fonts.
1112
- *
1113
- * @since 1.0.0
1114
- */
1115
- public function clear_fonts() {
1116
- $fonts_data = $this->get_fonts_data();
1117
- $fonts_data = (array) $fonts_data;
1118
-
1119
- foreach ( $fonts_data as $type => $file ) {
1120
- delete_option( 'cherry_customiser_fonts_' . $type );
1121
- }
1122
-
1123
- $this->fonts = array();
1124
- }
1125
-
1126
- /**
1127
- * Handler for custom `active_callback` feature.
1128
- *
1129
- * @since 1.0.0
1130
- * @param string $callback Callback-function.
1131
- * @return mixed
1132
- */
1133
- public function active_callback( $callback ) {
1134
- $callback = esc_attr( $callback );
1135
-
1136
- if ( is_callable( array( $this, $callback ) ) ) {
1137
- return array( $this, $callback );
1138
- }
1139
-
1140
- return $callback;
1141
- }
1142
-
1143
- /**
1144
- * Is the customizer preview a single post?
1145
- *
1146
- * @since 1.0.0
1147
- * @return bool
1148
- */
1149
- public function callback_single() {
1150
- return is_single();
1151
- }
1152
-
1153
- /**
1154
- * Returns the instance.
1155
- *
1156
- * @since 1.0.0
1157
- * @return object
1158
- */
1159
- public static function get_instance( $core, $args ) {
1160
- return new self( $core, $args );
1161
- }
1162
- }
1163
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-customizer/inc/class-cherry-wp-customize-iconpicker.php DELETED
@@ -1,90 +0,0 @@
1
- <?php
2
- /**
3
- * Iconpicker customizer control
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Modules/Customizer
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- if ( class_exists( 'WP_Customize_Control' ) ) {
14
-
15
- /**
16
- * Iconpicker control for customizer
17
- */
18
- class Cherry_WP_Customize_Iconpicker extends WP_Customize_Control {
19
-
20
- /**
21
- * Cherry Core instance
22
- *
23
- * @var array
24
- */
25
- public $icon_data = array();
26
-
27
- /**
28
- * UI instance
29
- *
30
- * @var object
31
- */
32
- private $iconpicker = null;
33
-
34
- /**
35
- * Render the control's content.
36
- */
37
- public function render_content() {
38
- ?>
39
- <label>
40
- <span class="customize-control-title">
41
- <?php echo esc_html( $this->label ); ?>
42
- </span>
43
-
44
- </label>
45
- <?php
46
- echo str_replace(
47
- 'id="' . $this->id . '"',
48
- 'id="' . $this->id . '" ' . $this->get_link(),
49
- $this->iconpicker->render()
50
- );
51
- }
52
-
53
- /**
54
- * Enqueue assets
55
- */
56
- public function enqueue() {
57
-
58
- $core = apply_filters( 'cherry_customizer_get_core', false );
59
- $ui_builder = $core->init_module(
60
- 'cherry-ui-elements',
61
- array( 'ui_elements' => array( 'iconpicker' ) )
62
- );
63
-
64
- $args = array(
65
- 'type' => 'iconpicker',
66
- 'id' => $this->id,
67
- 'name' => $this->id,
68
- 'value' => $this->value(),
69
- 'icon_data' => $this->icon_data,
70
- );
71
-
72
- add_action( 'customize_controls_print_styles', array( $this, 'print_sets' ) );
73
-
74
- $this->iconpicker = $ui_builder->get_ui_element_instance( 'iconpicker', $args );
75
- $this->iconpicker->enqueue_assets();
76
- }
77
-
78
- /**
79
- * Print JS var with sets data
80
- *
81
- * @return void
82
- */
83
- public function print_sets() {
84
- $this->iconpicker->prepare_icon_set();
85
- UI_Iconpicker::$printed = false;
86
- $this->iconpicker->print_icon_set();
87
- }
88
- }
89
-
90
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-dynamic-css/assets/cherry-css-collector.js DELETED
@@ -1,24 +0,0 @@
1
- /**
2
- * Handler for CSS Collector
3
- */
4
- function CherryCSSCollector() {
5
-
6
- 'use strict';
7
-
8
- var style,
9
- collectedCSS = window.CherryCollectedCSS;
10
-
11
- if ( undefined !== collectedCSS ) {
12
-
13
- style = document.createElement( 'style' );
14
-
15
- style.setAttribute( 'title', collectedCSS.title );
16
- style.setAttribute( 'type', collectedCSS.type );
17
-
18
- style.textContent = collectedCSS.css;
19
-
20
- document.head.appendChild( style );
21
- }
22
- }
23
-
24
- CherryCSSCollector();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-dynamic-css/assets/min/cherry-css-collector.min.js DELETED
@@ -1 +0,0 @@
1
- function CherryCSSCollector(){"use strict";var t,e=window.CherryCollectedCSS;void 0!==e&&(t=document.createElement("style"),t.setAttribute("title",e.title),t.setAttribute("type",e.type),t.textContent=e.css,document.head.appendChild(t))}CherryCSSCollector();
 
cherry-framework/modules/cherry-dynamic-css/cherry-dynamic-css.php DELETED
@@ -1,479 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Dynamic CSS
4
- * Description: CSS parser which uses variables & functions for CSS code optimization
5
- * Version: 1.2.2
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.2.2
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Dynamic_Css' ) ) {
26
-
27
- /**
28
- * Dynamic CSS parser
29
- */
30
- class Cherry_Dynamic_Css {
31
-
32
- /**
33
- * Module arguments
34
- *
35
- * @var array
36
- */
37
- public $args = array();
38
-
39
- /**
40
- * Core instance
41
- *
42
- * @var object
43
- */
44
- public $core = null;
45
-
46
- /**
47
- * Holder for processed variables array
48
- *
49
- * @var array
50
- */
51
- public $variables = null;
52
-
53
- /**
54
- * Variable pattern
55
- *
56
- * @var array
57
- */
58
- public $var_pattern = '/\$(([-_a-zA-Z0-9]+)(\[[\'\"]*([-_a-zA-Z0-9]+)[\'\"]*\])?({([a-z%]+)})?)/';
59
-
60
- /**
61
- * Function pattern
62
- *
63
- * @var array
64
- */
65
- public $func_pattern = '/@(([a-zA-Z_]+)\(([^@\)]*)?\))/';
66
-
67
- /**
68
- * Collector instance holder
69
- *
70
- * @since 1.2.0
71
- * @var object
72
- */
73
- public static $collector = null;
74
-
75
- /**
76
- * Constructor for the module
77
- */
78
- function __construct( $core, $args ) {
79
-
80
- $this->core = $core;
81
- $this->args = wp_parse_args( $args, array(
82
- 'prefix' => 'blank',
83
- 'type' => 'theme_mod',
84
- 'single' => true,
85
- 'css_files' => null,
86
- 'options' => array(),
87
- ) );
88
-
89
- add_action( 'wp_head', array( $this, 'print_inline_css' ), 99 );
90
-
91
- $this->init_collector();
92
- }
93
-
94
- /**
95
- * Initalize CSS collector class
96
- *
97
- * @since 1.2.0
98
- * @return bool
99
- */
100
- public function init_collector() {
101
-
102
- if ( null !== self::$collector ) {
103
- return true;
104
- }
105
-
106
- require_once 'inc/class-cherry-dynamic-css-collector.php';
107
-
108
- ob_start();
109
- include 'assets/min/cherry-css-collector.min.js';
110
- $handler = ob_get_clean();
111
-
112
- self::$collector = Cherry_Dynamic_Css_Collector::get_instance( $handler );
113
- add_action( 'wp_footer', array( self::$collector, 'print_style' ), 11 );
114
- add_action( 'wp_footer', array( self::$collector, 'add_js_handler' ), 11 );
115
-
116
- return true;
117
-
118
- }
119
-
120
- /**
121
- * Add new style to collector
122
- *
123
- * @since 1.2.0
124
- * @param string $selector CSS selector to add styles for.
125
- * @param array $style Styles array to add.
126
- * @param array $media Media breakpoints.
127
- * @return void
128
- */
129
- public function add_style( $selector, $style = array(), $media = array() ) {
130
- if ( ! $selector ) {
131
- return;
132
- }
133
- self::$collector->add_style( $selector, $style, $media );
134
- }
135
-
136
- /**
137
- * Get CSS variables into array
138
- *
139
- * @since 1.0.0
140
- * @return array dynamic CSS variables
141
- */
142
- public function get_css_varaibles() {
143
-
144
- if ( null !== $this->variables ) {
145
- return $this->variables;
146
- }
147
-
148
- $variables = $this->get_standard_vars();
149
- $var_list = ! empty( $this->args['options'] ) ? $this->args['options'] : array();
150
-
151
- /**
152
- * Filter options names list to use it as varaibles
153
- *
154
- * @since 1.0.0
155
- * @param array $var_list default variables list.
156
- * @param array $this->args module arguments.
157
- */
158
- $var_list = apply_filters( 'cherry_css_var_list', $var_list, $this->args );
159
-
160
- if ( empty( $var_list ) ) {
161
- return $variables;
162
- }
163
-
164
- $custom_vars = array();
165
-
166
- foreach ( $var_list as $var ) {
167
- $custom_vars[ $var ] = $this->get_setting( $var );
168
- }
169
-
170
- $variables = array_merge( $variables, $custom_vars );
171
-
172
- /**
173
- * Filter result variables list with values
174
- *
175
- * @since 1.0.0
176
- * @param array $variables default variables list.
177
- * @param array $this->args module arguments.
178
- */
179
- $this->variables = apply_filters( 'cherry_css_variables', $variables, $this->args );
180
-
181
- return $this->variables;
182
- }
183
-
184
- /**
185
- * Get current setting by name
186
- *
187
- * @since 1.0.0
188
- * @return mixed
189
- */
190
- public function get_setting( $name ) {
191
-
192
- $type = $this->args['type'];
193
-
194
- if ( 'theme_mod' == $type ) {
195
- $setting = get_theme_mod( $name );
196
- return $setting;
197
- }
198
-
199
- if ( true != $this->args['single'] ) {
200
- $setting = get_option( $name );
201
- return $setting;
202
- }
203
-
204
- $settings = get_option( $this->args['prefix'] );
205
-
206
- if ( ! empty( $settings ) && isset( $settings[ $name ] ) ) {
207
- return $settings[ $name ];
208
- }
209
-
210
- return false;
211
-
212
- }
213
-
214
- /**
215
- * Get standard WordPress variables from customizer - header image, background image etc.
216
- *
217
- * @since 1.0.0
218
- * @return array
219
- */
220
- public function get_standard_vars() {
221
-
222
- $standard_vars = array(
223
- 'header_image',
224
- 'background_image',
225
- 'background_repeat',
226
- 'background_position_x',
227
- 'background_attachment',
228
- );
229
-
230
- $result = array();
231
-
232
- foreach ( $standard_vars as $var ) {
233
- $result[ $var ] = get_theme_mod( $var );
234
- }
235
-
236
- return $result;
237
-
238
- }
239
-
240
- /**
241
- * Get avaliable functions into array
242
- *
243
- * @since 1.0.0
244
- * @return array dynamic CSS variables
245
- */
246
- public function get_css_functions() {
247
-
248
- require_once 'inc/class-cherry-dynamic-css-utilities.php';
249
- $utilities = Cherry_Dynamic_Css_Utilities::get_instance();
250
-
251
- $func_list = array(
252
- 'darken' => array( $utilities, 'color_darken' ),
253
- 'lighten' => array( $utilities, 'color_lighten' ),
254
- 'contrast' => array( $utilities, 'color_contrast' ),
255
- 'alpha' => array( $utilities, 'color_alpha' ),
256
- 'background' => array( $utilities, 'background_css' ),
257
- 'background_url' => array( $utilities, 'background_url' ),
258
- 'typography' => array( $utilities, 'get_typography_css' ),
259
- 'box' => array( $utilities, 'get_box_model_css' ),
260
- 'emph' => array( $utilities, 'element_emphasis' ),
261
- 'font_family' => array( $utilities, 'typography_font_family' ),
262
- 'font_size' => array( $utilities, 'typography_size' ),
263
- 'container_compare' => array( $utilities, 'container_width_compare' ),
264
- 'sum' => array( $utilities, 'simple_sum' ),
265
- 'diff' => array( $utilities, 'simple_diff' ),
266
- 'menu_toogle_endpoint' => array( $utilities, 'menu_toogle_endpoint' ),
267
- );
268
-
269
- /**
270
- * Filter available CSS functions list
271
- *
272
- * @since 1.0.0
273
- * @param array $func_list default functions list.
274
- * @param array $this->args module arguments.
275
- */
276
- return apply_filters( 'cherry_css_func_list', $func_list, $this->args );
277
-
278
- }
279
-
280
- /**
281
- * Parse CSS string and replasce varaibles and functions
282
- *
283
- * @since 1.0.0
284
- * @param [type] $css CSS to parse.
285
- * @return string
286
- */
287
- public function parse( $css ) {
288
-
289
- $replce_vars = preg_replace_callback( $this->var_pattern, array( $this, 'replace_vars' ), $css );
290
- $replace_func = preg_replace_callback( $this->func_pattern, array( $this, 'replace_func' ), $replce_vars );
291
-
292
- $result = preg_replace( '/\t|\r|\n|\s{2,}/', '', $replace_func );
293
-
294
- return $result;
295
-
296
- }
297
-
298
- /**
299
- * Print inline CSS after current theme stylesheet
300
- *
301
- * @since 1.0.0
302
- * @return void|bool false
303
- */
304
- public function print_inline_css() {
305
-
306
- if ( ! $this->args['css_files'] ) {
307
- return false;
308
- }
309
-
310
- if ( ! is_array( $this->args['css_files'] ) ) {
311
- $this->args['css_files'] = array( $this->args['css_files'] );
312
- }
313
-
314
- ob_start();
315
-
316
- foreach ( $this->args['css_files'] as $file ) {
317
-
318
- if ( ! file_exists( $file ) ) {
319
- continue;
320
- }
321
-
322
- include $file;
323
-
324
- }
325
-
326
- /**
327
- * Allow to include custom dynamic CSS files
328
- *
329
- * @since 1.0.0
330
- * @param array $this->args Current dynamic CSS arguments array.
331
- * @param array $this->core Current core instance.
332
- */
333
- do_action( 'cherry_dynamic_css_include_custom_files', $this->args, $this->core );
334
-
335
- $css = ob_get_clean();
336
- $parsed_css = $this->parse( $css );
337
-
338
- /**
339
- * Filter parsed dynamic CSS
340
- *
341
- * @since 1.0.0
342
- * @param string $parsed_css default functions list.
343
- * @param array $this->args module arguments.
344
- */
345
- $parsed_css = apply_filters( 'cherry_dynamic_css_parsed_styles', $parsed_css, $this->args );
346
-
347
- printf( '<style type="text/css">%s</style>', $parsed_css );
348
-
349
- }
350
-
351
- /**
352
- * Callback function to replace CSS vars
353
- *
354
- * @since 1.0.0
355
- * @param [string] $matches founded vars.
356
- */
357
- function replace_vars( $matches ) {
358
-
359
- $not_found = '/* Variable not found */';
360
-
361
- // check if variable name found
362
- if ( empty( $matches[2] ) ) {
363
- return $not_found;
364
- }
365
-
366
- $variables = $this->get_css_varaibles();
367
-
368
- // check if var exists
369
- if ( ! array_key_exists( $matches[2], $variables ) ) {
370
- return $not_found;
371
- }
372
-
373
- $val = $variables[ $matches[2] ];
374
-
375
- $maybe_units = '';
376
-
377
- // check if we need to add units after value
378
- if ( ! empty( $matches[6] ) ) {
379
- $maybe_units = $matches[6];
380
- }
381
-
382
- // check if we search for array val
383
- if ( ! empty( $matches[4] ) && is_array( $val ) && isset( $val[ $matches[4] ] ) ) {
384
- return $val[ $matches[4] ] . $maybe_units;
385
- }
386
-
387
- if ( ! is_array( $val ) ) {
388
- return $val . $maybe_units;
389
- } else {
390
- return $matches[0];
391
- }
392
-
393
- }
394
-
395
- /**
396
- * Callback function to replace CSS functions
397
- *
398
- * @since 1.0.0
399
- * @param [string] $matches founded dunction.
400
- */
401
- function replace_func( $matches ) {
402
-
403
- $not_found = '/* Function does not exist */';
404
-
405
- // check if functions name found
406
- if ( empty( $matches[2] ) ) {
407
- return $not_found;
408
- }
409
-
410
- $functions = $this->get_css_functions();
411
-
412
- // check if function exists and is not CSS @media query
413
- if ( ! array_key_exists( $matches[2], $functions ) && 'media' !== $matches[2] ) {
414
- return $not_found;
415
- } elseif ( 'media' == $matches[2] ) {
416
- return $matches[0];
417
- }
418
-
419
- $function = $functions[ $matches[2] ];
420
- $args = isset( $matches[3] ) ? $matches[3] : array();
421
-
422
- if ( empty( $args ) ) {
423
- $result = call_user_func( $function );
424
- return $result;
425
- }
426
-
427
- if ( 'font_family' == $matches[2] ) {
428
- $result = call_user_func( $function, $args );
429
- return $result;
430
- }
431
-
432
- $args = str_replace( ' ', '', $args );
433
- $args = explode( ',', $args );
434
-
435
- if ( ! is_callable( $function ) ) {
436
- return $not_found;
437
- }
438
-
439
- if ( ! empty( $args ) ) {
440
- $args = array_map( array( $this, 'prepare_args' ), $args );
441
- }
442
-
443
- $result = call_user_func_array( $function, $args );
444
-
445
- return $result;
446
-
447
- }
448
-
449
- /**
450
- * Filter user function arguments
451
- *
452
- * @since 4.0.0
453
- */
454
- function prepare_args( $item ) {
455
-
456
- $name = str_replace( '$', '', $item );
457
- $variables = $this->get_css_varaibles();
458
-
459
- if ( ! array_key_exists( $name, $variables ) ) {
460
-
461
- return $item;
462
- }
463
-
464
- return $variables[ $name ];
465
-
466
- }
467
-
468
- /**
469
- * Returns the instance.
470
- *
471
- * @since 1.0.0
472
- * @return object
473
- */
474
- public static function get_instance( $core, $args ) {
475
- return new self( $core, $args );
476
- }
477
- }
478
-
479
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-dynamic-css/inc/class-cherry-dynamic-css-collector.php DELETED
@@ -1,281 +0,0 @@
1
- <?php
2
- /**
3
- * Dynamic CSS collector class.
4
- *
5
- * @package Cherry_Framework
6
- * @author Cherry Team <cherryframework@gmail.com>
7
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
8
- * @link http://www.cherryframework.com/
9
- * @license http://www.gnu.org/licenses/gpl-3.0.html
10
- */
11
-
12
- // If this file is called directly, abort.
13
- if ( ! defined( 'WPINC' ) ) {
14
- die;
15
- }
16
-
17
- if ( ! class_exists( 'Cherry_Dynamic_Css_Collector' ) ) {
18
-
19
- /**
20
- * Define Cherry_Dynamic_Css_Collector class
21
- */
22
- class Cherry_Dynamic_Css_Collector {
23
-
24
- /**
25
- * A reference to an instance of this class.
26
- *
27
- * @since 1.2.0
28
- * @var object
29
- */
30
- private static $instance = null;
31
-
32
- /**
33
- * Array with sorted css
34
- *
35
- * @var array
36
- */
37
- public static $sorted_css = array();
38
-
39
- /**
40
- * Apropriate JS handle name
41
- *
42
- * @var string
43
- */
44
- public static $js_handle = 'cherry-js-core';
45
-
46
- /**
47
- * Passed handler file content
48
- *
49
- * @var string
50
- */
51
- public static $handler_file = null;
52
-
53
- /**
54
- * Set handler file on construct
55
- */
56
- function __construct( $handler_file = null ) {
57
- self::$handler_file = $handler_file;
58
- }
59
-
60
- /**
61
- * Add new style to collector
62
- *
63
- * @param string $selector CSS selector to add styles for.
64
- * @param array $style Styles array to add.
65
- * @param array $media Media breakpoints.
66
- * @return void
67
- */
68
- public function add_style( $selector, $style = array(), $media = array() ) {
69
-
70
- $this->prepare_rule(
71
- $selector,
72
- array(
73
- 'style' => $style,
74
- 'media' => $media,
75
- )
76
- );
77
-
78
- }
79
-
80
- /**
81
- * Return JS handle name
82
- *
83
- * @return string
84
- */
85
- public function get_handle() {
86
- return apply_filters( 'cherry_dynamic_css_collector_handle', self::$js_handle );
87
- }
88
-
89
- /**
90
- * Add inline JS handler
91
- *
92
- * @return void
93
- */
94
- public function add_js_handler() {
95
-
96
- if ( ! self::$handler_file ) {
97
- return;
98
- }
99
-
100
- wp_add_inline_script( $this->get_handle(), self::$handler_file );
101
- }
102
-
103
- /**
104
- * Print grabbed CSS
105
- *
106
- * @return void
107
- */
108
- public function print_style() {
109
-
110
- self::$sorted_css = apply_filters(
111
- 'cherry_dynamic_css_collected_styles',
112
- self::$sorted_css
113
- );
114
-
115
- if ( empty( self::$sorted_css ) || ! is_array( self::$sorted_css ) ) {
116
- return;
117
- }
118
-
119
- ob_start();
120
-
121
- do_action( 'cherry_dynamic_css_before_print_collected' );
122
-
123
- array_walk( self::$sorted_css, array( $this, 'print_breakpoint' ) );
124
-
125
- do_action( 'cherry_dynamic_css_after_print_collected' );
126
-
127
- $styles = ob_get_clean();
128
-
129
- $localize_var = apply_filters( 'cherry_dynamic_css_collector_localize_object', array(
130
- 'type' => 'text/css',
131
- 'title' => 'cherry-collected-dynamic-style',
132
- 'css' => $styles,
133
- ) );
134
-
135
- wp_localize_script( $this->get_handle(), 'CherryCollectedCSS', $localize_var );
136
-
137
- }
138
-
139
- /**
140
- * Print single breakpoint
141
- *
142
- * @param array $rules Rules array.
143
- * @param string $breakpoint Breakpoint name.
144
- * @return void
145
- */
146
- public function print_breakpoint( $rules, $breakpoint ) {
147
-
148
- if ( empty( $rules ) ) {
149
- return;
150
- }
151
-
152
- if ( 'all' !== $breakpoint ) {
153
- echo '@' . esc_attr( $breakpoint ) . ' {';
154
- }
155
-
156
- do_action( 'cherry_dynamic_css_breakpoint_start', $breakpoint );
157
-
158
- array_walk( $rules, array( $this, 'print_rules' ) );
159
-
160
- do_action( 'cherry_dynamic_css_breakpoint_end', $breakpoint );
161
-
162
- if ( 'all' !== $breakpoint ) {
163
- echo '}';
164
- }
165
-
166
- }
167
-
168
- /**
169
- * Print rules for selector.
170
- *
171
- * @param array $rule Single rule.
172
- * @param string $selector Selector name.
173
- * @return void
174
- */
175
- public function print_rules( $rule, $selector ) {
176
-
177
- echo esc_attr( $selector ) . ' {';
178
-
179
- do_action( 'cherry_dynamic_css_rule_start', $selector );
180
-
181
- array_walk( $rule, array( $this, 'print_property' ) );
182
-
183
- do_action( 'cherry_dynamic_css_rule_end', $selector );
184
-
185
- echo '}';
186
-
187
- }
188
-
189
- /**
190
- * Print single rule.
191
- *
192
- * @param string $value Property value.
193
- * @param string $name Property name.
194
- * @return void
195
- */
196
- public function print_property( $value, $name ) {
197
- printf( '%1$s:%2$s; ', $name, $value );
198
- }
199
-
200
- /**
201
- * Print passed rule.
202
- *
203
- * @param string $selector Selector name.
204
- * @param array $rule CSS rule data.
205
- * @return void|bool
206
- */
207
- public function prepare_rule( $selector, $rule ) {
208
-
209
- $rule = array_merge( array(
210
- 'style' => array(),
211
- 'media' => array(),
212
- ), $rule );
213
-
214
- if ( empty( $rule['style'] ) ) {
215
- return false;
216
- }
217
-
218
- $breakpoint = $this->breakpoint_name( $rule['media'] );
219
-
220
- if ( ! isset( self::$sorted_css[ $breakpoint ] ) ) {
221
- self::$sorted_css[ $breakpoint ] = array();
222
- }
223
-
224
- if ( isset( self::$sorted_css[ $breakpoint ][ $selector ] ) ) {
225
- self::$sorted_css[ $breakpoint ][ $selector ] = array_merge(
226
- self::$sorted_css[ $breakpoint ][ $selector ],
227
- $rule['style']
228
- );
229
- } else {
230
- self::$sorted_css[ $breakpoint ][ $selector ] = $rule['style'];
231
- }
232
-
233
- }
234
-
235
- /**
236
- * Generate media rule name
237
- *
238
- * @param array $media Media breakpoints.
239
- * @return string
240
- */
241
- public function breakpoint_name( $media ) {
242
-
243
- $has_media = false;
244
- $min = '';
245
- $max = '';
246
-
247
- if ( ! empty( $media['min'] ) ) {
248
- $has_media = true;
249
- $min = sprintf( '(min-width: %1$s)', esc_attr( $media['min'] ) );
250
- }
251
-
252
- if ( ! empty( $media['max'] ) ) {
253
- $sep = true === $has_media ? ' and ' : '';
254
- $has_media = true;
255
- $max = sprintf( '(max-width: %1$s)', esc_attr( $media['max'] ) );
256
- }
257
-
258
- if ( ! $has_media ) {
259
- return 'all';
260
- }
261
-
262
- return sprintf( 'media %1$s%3$s%2$s', $min, $max, $sep );
263
- }
264
-
265
- /**
266
- * Returns the instance.
267
- *
268
- * @since 1.2.0
269
- * @return object
270
- */
271
- public static function get_instance( $handler_file = null ) {
272
-
273
- // If the single instance hasn't been set, set it now.
274
- if ( null == self::$instance ) {
275
- self::$instance = new self( $handler_file );
276
- }
277
- return self::$instance;
278
- }
279
- }
280
-
281
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-dynamic-css/inc/class-cherry-dynamic-css-utilities.php DELETED
@@ -1,858 +0,0 @@
1
- <?php
2
- /**
3
- * Define CSS functions callbacks
4
- *
5
- * @package package_name
6
- * @author Cherry Team
7
- * @license GPL-3.0+
8
- */
9
-
10
- // If this file is called directly, abort.
11
- if ( ! defined( 'WPINC' ) ) {
12
- die;
13
- }
14
-
15
- if ( ! class_exists( 'Cherry_Dynamic_Css_Utilities' ) ) {
16
-
17
- /**
18
- * Define Cherry_Dynamic_Css_Utilities class
19
- */
20
- class Cherry_Dynamic_Css_Utilities {
21
-
22
- /**
23
- * A reference to an instance of this class.
24
- *
25
- * @since 1.0.0
26
- * @var object
27
- */
28
- private static $instance = null;
29
-
30
- /**
31
- * Make passed color darken.
32
- *
33
- * @since 1.0.0
34
- * @param [string] $color HEX or RGB(A) color value.
35
- * @param [float] $darken Darken percent (0-100).
36
- * @return string Processed color.
37
- */
38
- public function color_darken( $color, $darken = 0 ) {
39
-
40
- if ( ! $color ) {
41
- return false;
42
- }
43
-
44
- $prepared_data = $this->prepare_color_mod( $color, $darken );
45
-
46
- if ( ! $prepared_data || ! is_array( $prepared_data ) ) {
47
- return false;
48
- }
49
-
50
- $r = $prepared_data['r'];
51
- $g = $prepared_data['g'];
52
- $b = $prepared_data['b'];
53
- $a = $prepared_data['a'];
54
- $percent = $prepared_data['percent'];
55
-
56
- // Calc darken vals.
57
- $r = round( $r - 255 * $percent, 0 );
58
- $g = round( $g - 255 * $percent, 0 );
59
- $b = round( $b - 255 * $percent, 0 );
60
-
61
- $r = $r < 0 ? 0 : $r;
62
- $g = $g < 0 ? 0 : $g;
63
- $b = $b < 0 ? 0 : $b;
64
-
65
- if ( false !== $a ) {
66
- return sprintf( 'rgba(%s,%s,%s,%s)', $r, $g, $b, $a );
67
- } else {
68
- return sprintf( 'rgb(%s,%s,%s)', $r, $g, $b );
69
- }
70
- }
71
-
72
- /**
73
- * Make passed color lighten.
74
- *
75
- * @since 1.0.0
76
- * @param [string] $color HEX or RGB(A) color value.
77
- * @param [float] $lighten Lighten percent (0-100).
78
- * @return string Processed color.
79
- */
80
- public function color_lighten( $color, $lighten = 0 ) {
81
-
82
- if ( ! $color ) {
83
- return false;
84
- }
85
-
86
- $prepared_data = $this->prepare_color_mod( $color, $lighten );
87
-
88
- if ( ! $prepared_data || ! is_array( $prepared_data ) ) {
89
- return false;
90
- }
91
-
92
- $r = $prepared_data['r'];
93
- $g = $prepared_data['g'];
94
- $b = $prepared_data['b'];
95
- $a = $prepared_data['a'];
96
- $percent = $prepared_data['percent'];
97
-
98
- // Calc lighten vals
99
- $r = round( $r + 255 * $percent, 0 );
100
- $g = round( $g + 255 * $percent, 0 );
101
- $b = round( $b + 255 * $percent, 0 );
102
-
103
- $r = $r > 255 ? 255 : $r;
104
- $g = $g > 255 ? 255 : $g;
105
- $b = $b > 255 ? 255 : $b;
106
-
107
- if ( false !== $a ) {
108
- return sprintf( 'rgba(%s,%s,%s,%s)', $r, $g, $b, $a );
109
- } else {
110
- return sprintf( 'rgb(%s,%s,%s)', $r, $g, $b );
111
- }
112
- }
113
-
114
- /**
115
- * Convert passed color into RGBa with passed opacity.
116
- *
117
- * @since 1.0.0
118
- * @param [string] $color Color to convert.
119
- * @param [integer] $opacity Opacity.
120
- * @return string
121
- */
122
- public function color_alpha( $color, $opacity = 100 ) {
123
-
124
- if ( ! $color ) {
125
- return false;
126
- }
127
-
128
- $prepared_data = $this->prepare_color_mod( $color, 100 );
129
-
130
- if ( ! $prepared_data || ! is_array( $prepared_data ) ) {
131
- return false;
132
- }
133
-
134
- $r = $prepared_data['r'];
135
- $g = $prepared_data['g'];
136
- $b = $prepared_data['b'];
137
- $a = intval( $opacity ) / 100;
138
-
139
- return sprintf( 'rgba(%s,%s,%s,%s)', $r, $g, $b, $a );
140
- }
141
-
142
- /**
143
- * Select contrast color for passed from 2 proposed.
144
- *
145
- * 1st proposed color must be light - it will selected if passed color is dark,
146
- * 2nd selected if passed is light, so it must be darken.
147
- *
148
- * @since 1.0.0
149
- * @param [string] $color Color to get contrast for.
150
- * @param [string] $if_dark Return this if we had dark color.
151
- * @param [string] $if_light Return this if we had light color.
152
- * @return string Color.
153
- */
154
- public function color_contrast( $color, $if_dark = '#ffffff', $if_light = '#000000' ) {
155
-
156
- if ( ! $color ) {
157
- return false;
158
- }
159
-
160
- $prepared_data = $this->prepare_color_mod( $color, 100 );
161
-
162
- if ( ! $prepared_data || ! is_array( $prepared_data ) ) {
163
- return false;
164
- }
165
-
166
- $r = $prepared_data['r'];
167
- $g = $prepared_data['g'];
168
- $b = $prepared_data['b'];
169
-
170
- $luminance = 0.299 * $r + 0.587 * $g + 0.114 * $b;
171
-
172
- if ( $luminance >= 128 ) {
173
- return $if_light;
174
- } else {
175
- return $if_dark;
176
- }
177
- }
178
-
179
- /**
180
- * Prepare color to modify.
181
- *
182
- * Bring passed color and change percent to array
183
- * with R, G, B color values, opacity (if provided)
184
- * and change percentage.
185
- *
186
- * @since 1.0.0
187
- * @param [string] $color HEX or RGB(A) color value.
188
- * @param [float] $percent Modify percent (0-100).
189
- * @return array Prepared color and modify percent.
190
- */
191
- public function prepare_color_mod( $color, $percent = 0 ) {
192
- $is_rgba = ( false !== strpos( $color, 'rgba' ) ) ? true : false;
193
- $is_rgb = ( false !== strpos( $color, 'rgb' ) && false === $is_rgba ) ? true : false;
194
- $is_hex = ( false === $is_rgba && false === $is_rgb ) ? true : false;
195
-
196
- $percent = round( ( double ) $percent / 100, 4 );
197
-
198
- if ( $is_hex && '#' == $color[0] ) {
199
- $color = substr( $color, 1 );
200
- }
201
-
202
- // Prepare hex color.
203
- if ( $is_hex && strlen( $color ) == 6 ) {
204
- list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
205
- } elseif ( $is_hex && strlen( $color ) == 3 ) {
206
- list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
207
- } elseif ( $is_hex ) {
208
- return false;
209
- }
210
-
211
- if ( $is_hex ) {
212
- $r = hexdec( $r );
213
- $g = hexdec( $g );
214
- $b = hexdec( $b );
215
- }
216
-
217
- $color = str_replace( ' ', '', $color );
218
-
219
- // Prepare RGBA.
220
- if ( $is_rgba ) {
221
- preg_match( '/rgba\((.*)\)/', $color, $matches );
222
- if ( ! is_array( $matches ) || empty( $matches[1] ) ) {
223
- return false;
224
- }
225
- list( $r, $g, $b, $a ) = explode( ',', $matches[1] );
226
- }
227
-
228
- // Prepare RGB.
229
- if ( $is_rgb ) {
230
- preg_match( '/rgb\((.*)\)/', $color, $matches );
231
- if ( ! is_array( $matches ) || empty( $matches[1] ) ) {
232
- return false;
233
- }
234
- list( $r, $g, $b ) = explode( ',', $matches[1] );
235
- }
236
-
237
- $result = array(
238
- 'r' => $r,
239
- 'g' => $g,
240
- 'b' => $b,
241
- 'a' => isset( $a ) ? $a : false,
242
- 'percent' => $percent,
243
- );
244
-
245
- return $result;
246
- }
247
-
248
- /**
249
- * Get background-image CSS property CSS by url.
250
- *
251
- * @param [string] $url url-value.
252
- * @return string
253
- */
254
- public function background_url( $url = '' ) {
255
-
256
- if ( empty( $url ) ) {
257
- return;
258
- }
259
-
260
- $result = 'background-image: url(' . esc_url( $url ) . ')';
261
-
262
- return $result;
263
- }
264
-
265
- /**
266
- * Get background CSS by bg data from options and selector.
267
- * If passed multiplie images - returns retina ready CSS.
268
- *
269
- * @since 1.0.0
270
- * @param [string] $selector CSS selector to apply bg for.
271
- * @param [array] $data data-array from options.
272
- * @return string
273
- */
274
- public function get_background_css( $selector, $data ) {
275
-
276
- if ( ! $selector ) {
277
- return;
278
- }
279
-
280
- if ( ! is_array( $data ) ) {
281
- return;
282
- }
283
-
284
- if ( empty( $data['image'] ) && empty( $data['color'] ) ) {
285
- return;
286
- }
287
-
288
- $standard_bg = cherry_prepare_background( $data );
289
-
290
- if ( empty( $data['image'] ) ) {
291
- $standard_bg .= 'background-image:none;';
292
- return $selector . '{' . $standard_bg . '}';
293
- }
294
-
295
- $images = explode( ',', $data['image'] );
296
-
297
- $property_format = "%1$s {background-image: url(%2$s);%3$s}";
298
-
299
- if ( 1 == count( $images ) && wp_attachment_is_image( $images[0] ) ) {
300
-
301
- $img = wp_get_attachment_image_src( $images[0], 'full' );
302
- $result = sprintf( $property_format, $selector, $img[0], $standard_bg );
303
-
304
- return $result;
305
- }
306
-
307
- $img1x = null;
308
- $img2x = null;
309
- $width1x = 0;
310
- $count = 2;
311
-
312
- for ( $i = 0; $i < $count; $i++ ) {
313
-
314
- if ( ( ! isset( $images[ $i ] ) ) || ( ! wp_attachment_is_image( $images[ $i ] ) ) ) {
315
- continue;
316
- }
317
-
318
- $img = wp_get_attachment_image_src( $images[ $i ], 'full' );
319
-
320
- if ( ! is_array( $img ) ) {
321
- continue;
322
- }
323
-
324
- $img_url = $img[0];
325
- $img_width = intval( $img[1] );
326
-
327
- if ( null == $img1x ) {
328
- $img1x = $img_url;
329
- $img2x = $img_url;
330
- $width1x = $img_width;
331
- } elseif ( $img_width > $width1x ) {
332
- $img2x = $img_url;
333
- } else {
334
- $img1x = $img_url;
335
- }
336
- }
337
-
338
- $bg1 = sprintf( $property_format, $selector, $img1x, $standard_bg );
339
- $bg2 = sprintf( $property_format, $selector, $img2x, '' );
340
- $result = $bg1 . ' @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {' . $bg2 . '}';
341
-
342
- return $result;
343
- }
344
-
345
- /**
346
- * Sanitizes a hex color.
347
- *
348
- * Always adds hash to color use `sanitize_hex_color` if exist.
349
- *
350
- * @since 1.0.0
351
- * @param [string] $color Maybe HEX color.
352
- * @return string|null Sanitized color.
353
- */
354
- public function sanitize_hex_color( $color ) {
355
- $color = ltrim( $color, '#' );
356
- $color = '#' . $color;
357
-
358
- if ( '' === $color ) {
359
- return '';
360
- }
361
-
362
- if ( function_exists( 'sanitize_hex_color' ) ) {
363
- return sanitize_hex_color( $color );
364
- }
365
-
366
- // 3 or 6 hex digits, or the empty string.
367
- if ( preg_match( '|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) {
368
- return $color;
369
- }
370
-
371
- return null;
372
- }
373
-
374
- /**
375
- * Implode background properties array into CSS string.
376
- *
377
- * @since 1.0.0
378
- * @param [array] $data Background data-array.
379
- * @return string Set of background rules.
380
- */
381
- public function prepare_background( $data ) {
382
-
383
- if ( ! is_array( $data ) ) {
384
- return;
385
- }
386
-
387
- unset( $data['image'] );
388
-
389
- $result = '';
390
- $format = 'background-%s:%s;';
391
-
392
- foreach ( $data as $prop => $value ) {
393
-
394
- if ( ! $value ) {
395
- continue;
396
- }
397
-
398
- switch ( $prop ) {
399
- case 'color':
400
- $value = $this->sanitize_hex_color( $value );
401
- break;
402
-
403
- case 'position':
404
- $value = str_replace( '-', ' ', $value );
405
- break;
406
- }
407
-
408
- $result .= sprintf( $format, $prop, $value );
409
- }
410
-
411
- return $result;
412
- }
413
-
414
- /**
415
- * Implode typography data array from options into CSS string.
416
- *
417
- * @since 1.0.0
418
- * @param [array] $data Typography parameters array from options.
419
- * @param [array] $mod Optional parameter - pass function name and arg to modify values inside typography array.
420
- * @return string Font, letter-spacing, text-align, color CSS properties string.
421
- */
422
- public function cherry_get_typography_css( $data, $mod = array() ) {
423
-
424
- if ( ! is_array( $data ) || empty( $data ) ) {
425
- return;
426
- }
427
-
428
- $defaults = array(
429
- 'family' => '',
430
- 'style' => '',
431
- 'color' => '',
432
- 'size' => '',
433
- 'lineheight' => '',
434
- 'letterspacing' => '',
435
- 'align' => '',
436
- );
437
-
438
- $data = wp_parse_args( $data, $defaults );
439
-
440
- $result = array();
441
-
442
- if ( '' !== $data['letterspacing'] ) {
443
- $units = '0' != $data['letterspacing'] ? 'px' : '';
444
- $result[] = 'letter-spacing:' . $data['letterspacing'] . $units;
445
- }
446
-
447
- if ( 'notdefined' != $data['align'] ) {
448
- $result[] = 'text-align:' . $data['align'];
449
- }
450
-
451
- if ( '' != $data['color'] ) {
452
- $color = $this->sanitize_hex_color( $data['color'] );
453
-
454
- if ( 1 < count( $mod ) && ( in_array( $mod[0], array( 'cherry_colors_lighten', 'cherry_colors_darken' ) ) ) ) {
455
- $color = $mod[0]( $color, $mod[1] );
456
- }
457
-
458
- $result[] = 'color:' . $color;
459
- }
460
-
461
- $family = stripcslashes( $data['family'] );
462
- $family = explode( ',', $family );
463
-
464
- array_walk( $family, array( $this, 'typography_prepare_family' ) );
465
-
466
- $family[] = ! empty( $data['category'] ) ? $data['category'] : 'sans-serif';
467
- $family = array_unique( $family );
468
-
469
- $font_style = false;
470
- $font_weight = false;
471
- $font_size = $data['size'] . 'px';
472
- $line_height = $data['lineheight'] . 'px';
473
-
474
- $font_family = implode( ', ', $family );
475
-
476
- preg_match( '/^(\d*)(\w*)/i', $data['style'], $matches );
477
-
478
- if ( is_array( $matches ) ) {
479
- $font_style = ( 'regular' != $matches[2] ) ? $matches[2] : false;
480
- $font_weight = $matches[1];
481
- }
482
-
483
- $font = array(
484
- $font_style,
485
- $font_weight,
486
- $font_size . '/' . $line_height,
487
- $font_family,
488
- );
489
-
490
- $font = implode( ' ', array_filter( $font ) );
491
-
492
- $result[] = 'font:' . ltrim( $font );
493
-
494
- $result = implode( ';', $result ) . ';';
495
-
496
- return $result;
497
- }
498
-
499
- /**
500
- * Prepare font family for passing into typography function.
501
- *
502
- * @since 4.0.5
503
- * @param [string] $item Array item.
504
- * @param [int] $index Array item index.
505
- * @return void
506
- */
507
- public function typography_prepare_family( &$item, $index ) {
508
- $item = trim( $item );
509
-
510
- if ( strpos( $item, ' ' ) ) {
511
- $item = '"' . $item . '"';
512
- }
513
- }
514
-
515
- /**
516
- * Get box model CSS from layout editor option.
517
- *
518
- * @since 1.0.0
519
- * @param [array] $data Layout parameters array from options.
520
- * @param [array] $mod Optional parameter - pass function name and arg to modify values inside layout array.
521
- * @return string Indents, border etc.
522
- */
523
- public function cherry_get_box_model_css( $data, $mod = array() ) {
524
-
525
- if ( ! is_array( $data ) || empty( $data ) ) {
526
- return;
527
- }
528
-
529
- $defaults = array(
530
- 'position' => array(),
531
- 'margin' => array(),
532
- 'border' => array(),
533
- 'padding' => array(),
534
- 'container' => array(),
535
- );
536
-
537
- $box_defaults = array(
538
- 'top' => '',
539
- 'right' => '',
540
- 'bottom' => '',
541
- 'left' => '',
542
- );
543
-
544
- $data = wp_parse_args( $data, $defaults );
545
-
546
- $result = '';
547
-
548
- // Prepare postion
549
- $data['position'] = array_filter( $data['position'] );
550
- if ( ! empty( $data['position'] ) ) {
551
-
552
- $data['position'] = array_intersect_key( $data['position'], $box_defaults );
553
-
554
- $parser_data = array(
555
- 'prefix' => '',
556
- 'allowed' => $box_defaults,
557
- );
558
-
559
- array_walk( $data['position'], 'cherry_prepare_box_item', $parser_data );
560
-
561
- $result .= implode( ';', array_filter( $data['position'] ) ) . ';';
562
- }
563
-
564
- // Prepare indents.
565
- $result .= cherry_prepare_css_indents( $data['margin'], 'margin' );
566
- $result .= cherry_prepare_css_indents( $data['padding'], 'padding' );
567
-
568
- // Prepare borders
569
- if ( ! empty( $data['border'] ) ) {
570
-
571
- $border_style = ! empty( $data['border']['style'] ) ? $data['border']['style'] : '';
572
- $border_color = ! empty( $data['border']['color'] ) ? $data['border']['color'] : '';
573
- $border_radius = ! empty( $data['border']['radius'] ) ? $data['border']['radius'] : '';
574
-
575
- if ( '' != $border_radius ) {
576
- $result .= 'border-radius:' . $border_radius . ';';
577
- }
578
-
579
- $border_format = 'border-%1$s:%2$s %3$s %4$s;';
580
-
581
- foreach ( $data['border'] as $property => $value ) {
582
-
583
- if ( ! array_key_exists( $property, $box_defaults ) ) {
584
- continue;
585
- }
586
-
587
- if ( empty( $value ) ) {
588
- continue;
589
- }
590
-
591
- $result .= sprintf(
592
- $border_format,
593
- $property, $value, $border_style, $border_color
594
- );
595
- }
596
- }
597
-
598
- // Prepare dimensions.
599
- if ( ! empty( $data['container']['width'] ) ) {
600
- $result .= 'width:' . $data['container']['width'] . ';';
601
- }
602
-
603
- if ( ! empty( $data['container']['height'] ) ) {
604
- $result .= 'height:' . $data['container']['height'] . ';';
605
- }
606
-
607
- return $result;
608
- }
609
-
610
- /**
611
- * Service function to grab CSS indents from data array into string.
612
- *
613
- * @since 1.0.0
614
- * @param [array] $data data-array.
615
- * @param [string] $property CSS property.
616
- * @return string
617
- */
618
- public function cherry_prepare_css_indents( $data, $property ) {
619
-
620
- if ( empty( $data ) ) {
621
- return;
622
- }
623
-
624
- $box_defaults = array(
625
- 'top' => '',
626
- 'right' => '',
627
- 'bottom' => '',
628
- 'left' => '',
629
- );
630
-
631
- $data = array_intersect_key( $data, $box_defaults );
632
- $data = array_filter( $data );
633
-
634
- if ( 4 == count( $data ) ) {
635
- $result = $property . ':' . implode( ' ', $data ) . ';';
636
- return $result;
637
- }
638
-
639
- $parser_data = array(
640
- 'prefix' => $property,
641
- 'allowed' => $box_defaults,
642
- );
643
-
644
- array_walk( $data, 'cherry_prepare_box_item', $parser_data );
645
-
646
- $result = implode( ';', array_filter( $data ) ) . ';';
647
-
648
- return $result;
649
- }
650
-
651
- /**
652
- * Service callback function for.
653
- *
654
- * @since 1.0.0
655
- * @param [string] $item Position value.
656
- * @param [string] $key Position key.
657
- * @param [array] $data Array of allowed positions and property prefix.
658
- * @return void
659
- */
660
- public function cherry_prepare_box_item( &$item, $key, $data ) {
661
-
662
- if ( ! array_key_exists( $key, $data['allowed'] ) ) {
663
- $item = false;
664
- return;
665
- }
666
-
667
- if ( empty( $item ) ) {
668
- $item = false;
669
- return;
670
- }
671
-
672
- $prefix = '';
673
-
674
- if ( ! empty( $data['prefix'] ) ) {
675
- $prefix = $data['prefix'] . '-';
676
- }
677
-
678
- $item = $prefix . $key . ':' . $item;
679
- }
680
-
681
- /**
682
- * Prepare font family to the using in CSS.
683
- *
684
- * @since 1.0.1
685
- * @param [string] $font_family Font name.
686
- * @return string
687
- */
688
- public function typography_font_family( $font_family ) {
689
- $font_family = trim( $font_family );
690
- $family_args = explode( ',', $font_family );
691
-
692
- $names = '';
693
- $type = end( $family_args );
694
- $type = trim( $type );
695
-
696
- for ( $i = 0; $i < count( $family_args ) - 1; $i++ ) {
697
-
698
- if ( strpos( $family_args[ $i ], ' ' ) ) {
699
- $names .= "'" . $family_args[ $i ] . "',";
700
- } else {
701
- $names .= $family_args[ $i ] . ',';
702
- }
703
- }
704
-
705
- return sprintf( '%1$s, %2$s', trim( $names, ',' ), $type );
706
- }
707
-
708
- /**
709
- * Make float size.
710
- *
711
- * @since 1.0.0
712
- * @param [double] $size Font size.
713
- * @param [string] $operation Arithmetic operator (multiple, addition).
714
- * @param [string] $func Function name (floor, ceil, round, abs).
715
- * @param [double] $percent Font size in percent.
716
- * @return double Size.
717
- */
718
- public function typography_size( $size, $operation = ' ', $func = 'round', $percent ) {
719
-
720
- if ( ! $size ) {
721
- return false;
722
- }
723
-
724
- switch ( $operation ) {
725
- case 'multiple' :
726
- $size = ( double ) $size * ( double ) $percent;
727
- break;
728
- case 'addition' :
729
- $size = ( double ) $size + ( double ) $percent;
730
- break;
731
- }
732
-
733
- switch ( $func ) {
734
- case 'floor' :
735
- $size = floor( $size );
736
- break;
737
- case 'ceil' :
738
- $size = ceil( $size );
739
- break;
740
- case 'round' :
741
- $size = round( $size );
742
- break;
743
- case 'abs' :
744
- $size = abs( $size );
745
- break;
746
- }
747
-
748
- return $size;
749
- }
750
-
751
- /**
752
- * Build a CSS-rule.
753
- *
754
- * @since 1.0.0
755
- * @param [string|int] $value CSS-proterty value.
756
- * @param [string] $rule CSS-proterty name.
757
- * @return string CSS-rule.
758
- */
759
- public function empty_value( $value, $rule ) {
760
-
761
- if ( '' == $value || 'notdefined' == $value ) {
762
- return;
763
- }
764
-
765
- echo $rule . ': ' . $value;
766
-
767
- if ( is_numeric( $value ) ) {
768
- echo 'px; ';
769
- } else {
770
- echo '; ';
771
- }
772
- }
773
-
774
- /**
775
- * Set element emphasis.
776
- *
777
- * @since 1.0.0
778
- * @param [string] $parent Parent selector.
779
- * @param [string] $color Color.
780
- * @param [string] $property To define.
781
- */
782
- public function element_emphasis( $parent, $color, $property ) {
783
- $result = $parent . ' {' . $property . ':' . $color . ';}';
784
- $result .= $parent . ':hover {' . $property . ':' . $this->color_darken( $color, 10 ) . ';}';
785
-
786
- return $result;
787
- }
788
-
789
- /**
790
- * Return width value for container.
791
- *
792
- * @since 1.0.0
793
- * @param [int] $container_width A container width value.
794
- * @param [int] $element_width Some-block (parent-block for container) width value.
795
- * @return int Width value.
796
- */
797
- public function container_width_compare( $container_width, $element_width ) {
798
- return ( $container_width > $element_width ) ? $element_width : $container_width;
799
- }
800
-
801
- /**
802
- * Sum of $a and $b.
803
- *
804
- * @since 1.0.0
805
- * @param [int] $a Operand 1.
806
- * @param [int] $b Operand 2.
807
- * @return int Addition.
808
- */
809
- public function simple_sum( $a, $b ) {
810
- return intval( $a ) + intval( $b );
811
- }
812
-
813
- /**
814
- * Difference of $a and $b.
815
- *
816
- * @since 1.0.0
817
- * @param [int] $a Operand 1.
818
- * @param [int] $b Operand 2.
819
- * @return int Subtraction.
820
- */
821
- public function simple_diff( $a, $b ) {
822
- return intval( $a ) - intval( $b );
823
- }
824
-
825
- /**
826
- * Retrieve a width to swith on mobile menu from.
827
- *
828
- * @since 1.0.0
829
- * @return int Width value.
830
- */
831
- public function menu_toogle_endpoint() {
832
-
833
- /**
834
- * Filters a value when mobile menu switched.
835
- *
836
- * @since 1.0.0
837
- * @param int $value Width value.
838
- */
839
- return apply_filters( 'cherry_menu_toogle_endpoint', 600 );
840
- }
841
-
842
- /**
843
- * Returns the instance.
844
- *
845
- * @since 1.0.0
846
- * @return object
847
- */
848
- public static function get_instance() {
849
-
850
- // If the single instance hasn't been set, set it now.
851
- if ( null == self::$instance ) {
852
- self::$instance = new self;
853
- }
854
- return self::$instance;
855
- }
856
- }
857
-
858
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-google-fonts-loader/cherry-google-fonts-loader.php DELETED
@@ -1,372 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Google Fonts Loader
4
- * Description: Enqueue Google fonts
5
- * Version: 1.1.0
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.1.0
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Google_Fonts_Loader' ) ) {
26
-
27
- /**
28
- * Google fonts loader main class
29
- */
30
- class Cherry_Google_Fonts_Loader {
31
-
32
- /**
33
- * Module version
34
- *
35
- * @var string
36
- */
37
- public $module_version = '1.1.0';
38
-
39
- /**
40
- * Module version
41
- *
42
- * @var string
43
- */
44
- public $module_slug = 'cherry-google-fonts-loader';
45
-
46
- /**
47
- * Module arguments
48
- *
49
- * @var array
50
- */
51
- public $args = array();
52
-
53
- /**
54
- * Core instance
55
- *
56
- * @var object
57
- */
58
- public $core = null;
59
-
60
- /**
61
- * Define fonts server URL
62
- *
63
- * @var string
64
- */
65
- public $fonts_host = '//fonts.googleapis.com/css';
66
-
67
- /**
68
- * Google fonts set
69
- *
70
- * @var array
71
- */
72
- public $google_fonts = null;
73
-
74
- /**
75
- * Array of stored google fonts data
76
- *
77
- * @var array
78
- */
79
- public $fonts_data = array();
80
-
81
- /**
82
- * Constructor for the class
83
- */
84
- function __construct( $core, $args ) {
85
-
86
- $this->core = $core;
87
- $this->args = wp_parse_args( $args, array( 'options' => array() ) );
88
-
89
- $this->fonts_host = apply_filters( 'cherry_google_fonts_cdn', $this->fonts_host );
90
-
91
- add_action( 'customize_preview_init', array( $this, 'reset_fonts_cache' ) );
92
- add_action( 'customize_save_after', array( $this, 'reset_fonts_cache' ) );
93
- add_action( 'switch_theme', array( $this, 'reset_fonts_cache' ) );
94
-
95
- if ( is_admin() ) {
96
- return;
97
- }
98
-
99
- add_action( 'wp_enqueue_scripts', array( $this, 'prepare_fonts' ) );
100
-
101
- }
102
-
103
- /**
104
- * Get fonts data and enqueue URL
105
- *
106
- * @since 1.0.0
107
- */
108
- public function prepare_fonts() {
109
-
110
- $font_url = $this->get_fonts_url();
111
- wp_enqueue_style( 'cherry-google-fonts', $font_url );
112
- }
113
-
114
- /**
115
- * Return theme Google fonts URL to enqueue it
116
- *
117
- * @since 1.0.0
118
- * @return string
119
- */
120
- public function get_fonts_url() {
121
-
122
- $font_url = get_transient( 'cherry_google_fonts_url' );
123
-
124
- if ( ! $font_url ) {
125
-
126
- // Get typography options list
127
- $options_set = $this->get_options_set();
128
-
129
- // build Google fonts data array
130
- foreach ( $options_set as $option ) {
131
- $this->add_font( $option );
132
- }
133
-
134
- $font_url = $this->build_fonts_url();
135
-
136
- if ( false == $font_url ) {
137
- return;
138
- }
139
-
140
- global $wp_customize;
141
- if ( ! isset( $wp_customize ) ) {
142
- set_transient( 'cherry_google_fonts_url', $font_url, WEEK_IN_SECONDS );
143
- }
144
- }
145
-
146
- return $font_url;
147
-
148
- }
149
-
150
- /**
151
- * Get options set from module arguments
152
- *
153
- * @return array
154
- */
155
- public function get_options_set() {
156
- return $this->args['options'];
157
- }
158
-
159
- /**
160
- * Get current setting by name
161
- *
162
- * @since 1.0.0
163
- * @return mixed
164
- */
165
- public function get_setting( $name ) {
166
-
167
- $type = $this->args['type'];
168
-
169
- if ( 'theme_mod' == $type ) {
170
- $setting = get_theme_mod( $name );
171
- return $setting;
172
- }
173
-
174
- if ( true != $this->args['single'] ) {
175
- $setting = get_option( $name );
176
- return $setting;
177
- }
178
-
179
- $settings = get_option( $this->args['prefix'] );
180
-
181
- if ( ! empty( $settings ) && isset( $settings[ $name ] ) ) {
182
- return $settings[ $name ];
183
- }
184
-
185
- return false;
186
-
187
- }
188
-
189
- /**
190
- * Build Google fonts stylesheet URL from stored data
191
- *
192
- * @since 1.0.0
193
- */
194
- public function build_fonts_url() {
195
-
196
- $font_families = array();
197
- $subsets = array();
198
-
199
- if ( empty( $this->fonts_data ) ) {
200
- return false;
201
- }
202
-
203
- foreach ( $this->fonts_data as $family => $data ) {
204
- $styles = implode( ',', array_unique( array_filter( $data['style'] ) ) );
205
- $font_families[] = $family . ':' . $styles;
206
- $subsets = array_merge( $subsets, $data['character'] );
207
- }
208
-
209
- $subsets = array_unique( array_filter( $subsets ) );
210
-
211
- $query_args = array(
212
- 'family' => urlencode( implode( '|', $font_families ) ),
213
- 'subset' => urlencode( implode( ',', $subsets ) ),
214
- );
215
-
216
- $fonts_url = add_query_arg( $query_args, $this->fonts_host );
217
-
218
- return $fonts_url;
219
- }
220
-
221
- /**
222
- * Get single typography option value from database and store it in object property
223
- *
224
- * @since 1.0.0
225
- * @param [type] $font option name to get from database.
226
- */
227
- public function add_font( $font ) {
228
-
229
- $font = wp_parse_args( $font, array(
230
- 'family' => '',
231
- 'style' => 'normal',
232
- 'weight' => '400',
233
- 'charset' => 'latin',
234
- ) );
235
-
236
- $family = $this->get_setting( $font['family'] );
237
- $family = explode( ',', $family );
238
- $family = trim( $family[0], "'" );
239
-
240
- if ( ! $this->is_google_font( $family ) ) {
241
- return;
242
- }
243
-
244
- $load_style = $this->get_setting( $font['weight'] );
245
- $font_style = $this->get_setting( $font['style'] );
246
-
247
- if ( 'italic' === $font_style ) {
248
- $load_style .= $font_style;
249
- }
250
-
251
- if ( ! isset( $this->fonts_data[ $family ] ) ) {
252
-
253
- $this->fonts_data[ $family ] = array(
254
- 'style' => array( $load_style ),
255
- 'character' => array( $this->get_setting( $font['charset'] ) ),
256
- );
257
-
258
- } else {
259
-
260
- $this->fonts_data[ $family ] = array(
261
- 'style' => $this->add_font_prop(
262
- $load_style,
263
- $this->fonts_data[ $family ]['style']
264
- ),
265
- 'character' => $this->add_font_prop(
266
- $this->get_setting( $font['charset'] ),
267
- $this->fonts_data[ $family ]['character']
268
- ),
269
- );
270
-
271
- }
272
-
273
- }
274
-
275
- /**
276
- * Add new font property to existaing properties array
277
- *
278
- * @since 1.0.0
279
- * @param [type] $new property to add.
280
- * @param array $existing existing properties.
281
- */
282
- public function add_font_prop( $new, $existing ) {
283
-
284
- if ( ! is_array( $existing ) ) {
285
- return array( $new );
286
- }
287
-
288
- if ( ! in_array( $new, $existing ) ) {
289
- $existing[] = $new;
290
- }
291
-
292
- return $existing;
293
-
294
- }
295
-
296
- /**
297
- * Check if selected font is google font
298
- *
299
- * @since 1.0.0
300
- * @param array $font_family font family to check.
301
- * @return boolean
302
- */
303
- public function is_google_font( $font_family ) {
304
-
305
- $google_fonts = $this->get_google_fonts();
306
-
307
- if ( empty( $google_fonts ) ) {
308
-
309
- $customizer = isset( $this->core->modules['cherry-customizer'] ) ? $this->core->modules['cherry-customizer'] : false;
310
-
311
- if ( ! $customizer ) {
312
- return false;
313
- }
314
-
315
- $customizer->init_fonts();
316
-
317
- $google_fonts = $this->get_google_fonts();
318
-
319
- if ( empty( $google_fonts ) ) {
320
- return false;
321
- }
322
- }
323
-
324
- $font_family = explode( ',', $font_family );
325
- $font_family = trim( $font_family[0], "'" );
326
-
327
- foreach ( $google_fonts as $font ) {
328
- if ( $font_family === $font['family'] ) {
329
- return true;
330
- }
331
- }
332
-
333
- return false;
334
-
335
- }
336
-
337
- /**
338
- * Get google fonts array
339
- *
340
- * @since 1.0.0
341
- * @return array
342
- */
343
- public function get_google_fonts() {
344
-
345
- if ( null === $this->google_fonts ) {
346
- $this->google_fonts = get_option( 'cherry_customiser_fonts_google', null );
347
- }
348
-
349
- return $this->google_fonts;
350
- }
351
-
352
- /**
353
- * Reset fonts cache
354
- *
355
- * @since 1.0.0
356
- */
357
- public function reset_fonts_cache() {
358
- delete_transient( 'cherry_google_fonts_url' );
359
- }
360
-
361
- /**
362
- * Returns the instance.
363
- *
364
- * @since 1.0.0
365
- * @return object
366
- */
367
- public static function get_instance( $core, $args ) {
368
- return new self( $core, $args );
369
- }
370
- }
371
-
372
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-handler/assets/css/cherry-handler-styles.min.css DELETED
@@ -1 +0,0 @@
1
- .cherry-handler-notice{background:#23282d;position:fixed;margin:5px 0;box-shadow:1px 1px 5px rgba(0,0,0,0.2);box-sizing:border-box;padding:8px 15px 8px 8px;min-width:200px;overflow:hidden;color:#fff;z-index:999;border-radius:2px;-webkit-transition:all 250ms cubic-bezier(0.85, 0.04, 1, 1);transition:all 250ms cubic-bezier(0.85, 0.04, 1, 1)}.cherry-handler-notice span.dashicons{position:relative;margin-right:10px}.cherry-handler-notice span.dashicons:before{position:absolute;font-size:30px;left:-6px;top:-4px}.cherry-handler-notice.success-notice span.dashicons{color:#48c569}.cherry-handler-notice.success-notice span.dashicons:before{content:"\f147"}.cherry-handler-notice.success-notice .inner b{color:#48c569}.cherry-handler-notice.info-notice span.dashicons{color:#faa730}.cherry-handler-notice.info-notice span.dashicons:before{content:"\f534"}.cherry-handler-notice.info-notice .inner b{color:#faa730}.cherry-handler-notice.error-notice span.dashicons{color:#e54343}.cherry-handler-notice.error-notice span.dashicons:before{content:"\f158"}.cherry-handler-notice.show-state{-webkit-transition:all 500ms cubic-bezier(0.1, 0.67, 0.26, 1);transition:all 500ms cubic-bezier(0.1, 0.67, 0.26, 1)}.cherry-handler-notice .inner{display:inline-block}
 
cherry-framework/modules/cherry-handler/assets/js/cherry-handler.js DELETED
@@ -1,287 +0,0 @@
1
- ( function( $, CherryJsCore ) {
2
- 'use strict';
3
-
4
- /**
5
- * CherryAjaxHandler class
6
- *
7
- * @param {object} options Handler options
8
- */
9
-
10
- CherryJsCore.utilites.namespace( 'CherryAjaxHandler' );
11
- CherryJsCore.CherryAjaxHandler = function( options ) {
12
-
13
- /**
14
- * General default settings
15
- *
16
- * @type {Object}
17
- */
18
- var self = this,
19
- settings = {
20
- 'handlerId': '',
21
- 'cache': false,
22
- 'processData': true,
23
- 'url': '',
24
- 'beforeSendCallback': function() {},
25
- 'errorCallback': function() {},
26
- 'successCallback': function() {},
27
- 'completeCallback': function() {}
28
- };
29
-
30
- /**
31
- * Checking options, settings and options merging
32
- *
33
- */
34
- if ( options ) {
35
- $.extend( settings, options );
36
- }
37
-
38
- /**
39
- * Check if handlerId ready to using
40
- *
41
- */
42
- if ( ! window[ settings.handlerId ] ) {
43
- if ( window.console ) {
44
- window.console.warn( 'Handler id not found' );
45
- }
46
- return false;
47
- }
48
-
49
- /**
50
- * Set handler settings from localized global variable
51
- *
52
- * @type {Object}
53
- */
54
- self.handlerSettings = window[ settings.handlerId ] || {};
55
-
56
- /**
57
- * Ajax request instance
58
- *
59
- * @type {Object}
60
- */
61
- self.ajaxRequest = null;
62
-
63
- /**
64
- * Ajax processing state
65
- *
66
- * @type {Boolean}
67
- */
68
- self.ajaxProcessing = false;
69
-
70
- /**
71
- * Set ajax request data
72
- *
73
- * @type {Object}
74
- */
75
- self.data = {
76
- 'action': self.handlerSettings.action,
77
- 'nonce': self.handlerSettings.nonce
78
- };
79
-
80
- /**
81
- * Check ajax url is empty
82
- */
83
- if ( '' === settings.url ) {
84
-
85
- // Check public request
86
- if ( 'false' === self.handlerSettings.is_public ) {
87
- settings.url = window.ajaxurl;
88
- } else {
89
- settings.url = window.cherryHandlerAjaxUrl.ajax_url;
90
- }
91
- }
92
-
93
- /**
94
- * Init ajax request
95
- *
96
- * @return {Void}
97
- */
98
- self.send = function() {
99
- if ( self.ajaxProcessing ) {
100
- CherryJsCore.cherryHandlerUtils.noticeCreate( 'error-notice', self.handlerSettings.sys_messages.wait_processing, self.handlerSettings.is_public );
101
- }
102
- self.ajaxProcessing = true;
103
-
104
- self.ajaxRequest = jQuery.ajax( {
105
- type: self.handlerSettings.type,
106
- url: settings.url,
107
- data: self.data,
108
- cache: settings.cache,
109
- dataType: self.handlerSettings.data_type,
110
- processData: settings.processData,
111
- beforeSend: function( jqXHR, ajaxSettings ) {
112
- if ( null !== self.ajaxRequest ) {
113
- self.ajaxRequest.abort();
114
- }
115
-
116
- if ( settings.beforeSendCallback && 'function' === typeof( settings.beforeSendCallback ) ) {
117
- settings.beforeSendCallback( jqXHR, ajaxSettings );
118
- }
119
- },
120
- error: function( jqXHR, textStatus, errorThrown ) {
121
- if ( settings.errorCallback && 'function' === typeof( settings.errorCallback ) ) {
122
- settings.errorCallback( jqXHR, textStatus, errorThrown );
123
- }
124
- },
125
- success: function( data, textStatus, jqXHR ) {
126
- self.ajaxProcessing = false;
127
- if ( settings.successCallback && 'function' === typeof( settings.successCallback ) ) {
128
- settings.successCallback( data, textStatus, jqXHR );
129
- }
130
-
131
- CherryJsCore.cherryHandlerUtils.noticeCreate( data.type, data.message, self.handlerSettings.is_public );
132
- },
133
- complete: function( jqXHR, textStatus ) {
134
- if ( settings.completeCallback && 'function' === typeof( settings.completeCallback ) ) {
135
- settings.completeCallback( jqXHR, textStatus );
136
- }
137
- }
138
-
139
- } );
140
- };
141
-
142
- /**
143
- * Send data ajax request
144
- *
145
- * @param {Object} data User data
146
- * @return {Void}
147
- */
148
- self.sendData = function( data ) {
149
- var sendData = data || {};
150
- self.data = {
151
- 'action': self.handlerSettings.action,
152
- 'nonce': self.handlerSettings.nonce,
153
- 'data': sendData
154
- };
155
-
156
- self.send();
157
- };
158
-
159
- /**
160
- * Send form serialized data
161
- * @param {String} formId Form selector
162
- * @return {Void}
163
- */
164
- self.sendFormData = function( formId ) {
165
- var form = $( formId ),
166
- data;
167
-
168
- data = CherryJsCore.cherryHandlerUtils.serializeObject( form );
169
-
170
- self.sendData( data );
171
- };
172
- };
173
-
174
- CherryJsCore.utilites.namespace( 'cherryHandlerUtils' );
175
- CherryJsCore.cherryHandlerUtils = {
176
- /**
177
- * Rendering notice message
178
- *
179
- * @param {String} type Message type
180
- * @param {String} message Message content
181
- * @return {Void}
182
- */
183
- noticeCreate: function( type, message, isPublicPage ) {
184
- var notice,
185
- rightDelta = 0,
186
- timeoutId,
187
- isPublic = isPublicPage || false;
188
-
189
- if ( ! message || 'true' === isPublic ) {
190
- return false;
191
- }
192
-
193
- notice = $( '<div class="cherry-handler-notice ' + type + '"><span class="dashicons"></span><div class="inner">' + message + '</div></div>' );
194
-
195
- $( 'body' ).prepend( notice );
196
- reposition();
197
- rightDelta = -1 * ( notice.outerWidth( true ) + 10 );
198
- notice.css( { 'right': rightDelta } );
199
-
200
- timeoutId = setTimeout( function() {
201
- notice.css( { 'right': 10 } ).addClass( 'show-state' );
202
- }, 100 );
203
- timeoutId = setTimeout( function() {
204
- rightDelta = -1 * ( notice.outerWidth( true ) + 10 );
205
- notice.css( { right: rightDelta } ).removeClass( 'show-state' );
206
- }, 4000 );
207
- timeoutId = setTimeout( function() {
208
- notice.remove();
209
- clearTimeout( timeoutId );
210
- }, 4500 );
211
-
212
- function reposition() {
213
- var topDelta = 100;
214
-
215
- $( '.cherry-handler-notice' ).each( function() {
216
- $( this ).css( { top: topDelta } );
217
- topDelta += $( this ).outerHeight( true );
218
- } );
219
- }
220
- },
221
-
222
- /**
223
- * Serialize form into
224
- *
225
- * @return {Object}
226
- */
227
- serializeObject: function( form ) {
228
-
229
- var self = this,
230
- json = {},
231
- pushCounters = {},
232
- patterns = {
233
- 'validate': /^[a-zA-Z][a-zA-Z0-9_-]*(?:\[(?:\d*|[a-zA-Z0-9_-]+)\])*$/,
234
- 'key': /[a-zA-Z0-9_-]+|(?=\[\])/g,
235
- 'push': /^$/,
236
- 'fixed': /^\d+$/,
237
- 'named': /^[a-zA-Z0-9_-]+$/
238
- };
239
-
240
- this.build = function( base, key, value ) {
241
- base[ key ] = value;
242
-
243
- return base;
244
- };
245
-
246
- this.push_counter = function( key ) {
247
- if ( undefined === pushCounters[ key ] ) {
248
- pushCounters[ key ] = 0;
249
- }
250
-
251
- return pushCounters[ key ]++;
252
- };
253
-
254
- $.each( form.serializeArray(), function() {
255
- var k, keys, merge, reverseKey;
256
-
257
- // Skip invalid keys
258
- if ( ! patterns.validate.test( this.name ) ) {
259
- return;
260
- }
261
-
262
- keys = this.name.match( patterns.key );
263
- merge = this.value;
264
- reverseKey = this.name;
265
-
266
- while ( undefined !== ( k = keys.pop() ) ) {
267
-
268
- // Adjust reverseKey
269
- reverseKey = reverseKey.replace( new RegExp( '\\[' + k + '\\]$' ), '' );
270
-
271
- // Push
272
- if ( k.match( patterns.push ) ) {
273
- merge = self.build( [], self.push_counter( reverseKey ), merge );
274
- } else if ( k.match( patterns.fixed ) ) {
275
- merge = self.build( [], k, merge );
276
- } else if ( k.match( patterns.named ) ) {
277
- merge = self.build( {}, k, merge );
278
- }
279
- }
280
-
281
- json = $.extend( true, json, merge );
282
- });
283
-
284
- return json;
285
- }
286
- };
287
- }( jQuery, window.CherryJsCore ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-handler/assets/js/min/cherry-handler.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"use strict";a.utilites.namespace("CherryAjaxHandler"),a.CherryAjaxHandler=function(n){var t=this,r={handlerId:"",cache:!1,processData:!0,url:"",beforeSendCallback:function(){},errorCallback:function(){},successCallback:function(){},completeCallback:function(){}};return n&&e.extend(r,n),window[r.handlerId]?(t.handlerSettings=window[r.handlerId]||{},t.ajaxRequest=null,t.ajaxProcessing=!1,t.data={action:t.handlerSettings.action,nonce:t.handlerSettings.nonce},""===r.url&&(r.url="false"===t.handlerSettings.is_public?window.ajaxurl:window.cherryHandlerAjaxUrl.ajax_url),t.send=function(){t.ajaxProcessing&&a.cherryHandlerUtils.noticeCreate("error-notice",t.handlerSettings.sys_messages.wait_processing,t.handlerSettings.is_public),t.ajaxProcessing=!0,t.ajaxRequest=jQuery.ajax({type:t.handlerSettings.type,url:r.url,data:t.data,cache:r.cache,dataType:t.handlerSettings.data_type,processData:r.processData,beforeSend:function(e,a){null!==t.ajaxRequest&&t.ajaxRequest.abort(),r.beforeSendCallback&&"function"==typeof r.beforeSendCallback&&r.beforeSendCallback(e,a)},error:function(e,a,n){r.errorCallback&&"function"==typeof r.errorCallback&&r.errorCallback(e,a,n)},success:function(e,n,i){t.ajaxProcessing=!1,r.successCallback&&"function"==typeof r.successCallback&&r.successCallback(e,n,i),a.cherryHandlerUtils.noticeCreate(e.type,e.message,t.handlerSettings.is_public)},complete:function(e,a){r.completeCallback&&"function"==typeof r.completeCallback&&r.completeCallback(e,a)}})},t.sendData=function(e){var a=e||{};t.data={action:t.handlerSettings.action,nonce:t.handlerSettings.nonce,data:a},t.send()},void(t.sendFormData=function(n){var r,i=e(n);r=a.cherryHandlerUtils.serializeObject(i),t.sendData(r)})):(window.console&&window.console.warn("Handler id not found"),!1)},a.utilites.namespace("cherryHandlerUtils"),a.cherryHandlerUtils={noticeCreate:function(a,n,t){function r(){var a=100;e(".cherry-handler-notice").each(function(){e(this).css({top:a}),a+=e(this).outerHeight(!0)})}var i,s,c=0,o=t||!1;return n&&"true"!==o?(i=e('<div class="cherry-handler-notice '+a+'"><span class="dashicons"></span><div class="inner">'+n+"</div></div>"),e("body").prepend(i),r(),c=-1*(i.outerWidth(!0)+10),i.css({right:c}),s=setTimeout(function(){i.css({right:10}).addClass("show-state")},100),s=setTimeout(function(){c=-1*(i.outerWidth(!0)+10),i.css({right:c}).removeClass("show-state")},4e3),void(s=setTimeout(function(){i.remove(),clearTimeout(s)},4500))):!1},serializeObject:function(a){var n=this,t={},r={},i={validate:/^[a-zA-Z][a-zA-Z0-9_-]*(?:\[(?:\d*|[a-zA-Z0-9_-]+)\])*$/,key:/[a-zA-Z0-9_-]+|(?=\[\])/g,push:/^$/,fixed:/^\d+$/,named:/^[a-zA-Z0-9_-]+$/};return this.build=function(e,a,n){return e[a]=n,e},this.push_counter=function(e){return void 0===r[e]&&(r[e]=0),r[e]++},e.each(a.serializeArray(),function(){var a,r,s,c;if(i.validate.test(this.name)){for(r=this.name.match(i.key),s=this.value,c=this.name;void 0!==(a=r.pop());)c=c.replace(new RegExp("\\["+a+"\\]$"),""),a.match(i.push)?s=n.build([],n.push_counter(c),s):a.match(i.fixed)?s=n.build([],a,s):a.match(i.named)&&(s=n.build({},a,s));t=e.extend(!0,t,s)}}),t}}}(jQuery,window.CherryJsCore);
 
cherry-framework/modules/cherry-handler/assets/scss/cherry-handler-styles.scss DELETED
@@ -1,65 +0,0 @@
1
- .cherry-handler-notice{
2
- background: #23282d;
3
- position: fixed;
4
- margin: 5px 0;
5
- box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);
6
- box-sizing: border-box;
7
- padding: 8px 15px 8px 8px;
8
- min-width: 200px;
9
- overflow: hidden;
10
- color: #fff;
11
- z-index: 999;
12
- border-radius: 2px;
13
- transition: all 250ms cubic-bezier(0.85, 0.04, 1, 1);
14
- span.dashicons{
15
- position: relative;
16
- margin-right: 10px;
17
- &:before{
18
- position: absolute;
19
- font-size: 30px;
20
- left: -6px;
21
- top: -4px;
22
- }
23
- }
24
- &.success-notice{
25
- span.dashicons{
26
- color: #48c569;
27
- &:before{
28
- content: "\f147";
29
- }
30
- }
31
- .inner{
32
- b{
33
- color: #48c569;
34
- }
35
- }
36
- }
37
- &.info-notice{
38
- span.dashicons{
39
- color: #faa730;
40
- &:before{
41
- content: "\f534";
42
- }
43
- }
44
- .inner{
45
- b{
46
- color: #faa730;
47
- }
48
- }
49
- }
50
- &.error-notice{
51
- span.dashicons{
52
- color: #e54343;
53
- &:before{
54
- content: "\f158";
55
- }
56
- }
57
- }
58
- &.show-state{
59
- -webkit-transition: all 500ms cubic-bezier(0.1, 0.67, 0.26, 1);
60
- transition: all 500ms cubic-bezier(0.1, 0.67, 0.26, 1);
61
- }
62
- .inner{
63
- display: inline-block;
64
- }
65
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-handler/cherry-handler.php DELETED
@@ -1,233 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Cherry handler
4
- * Description: Initializes handlers
5
- * Version: 1.1.0
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.1.0
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Handler' ) ) {
26
-
27
- /**
28
- * Cherry_Handler class.
29
- *
30
- * @since 1.0.0
31
- */
32
- class Cherry_Handler {
33
-
34
- /**
35
- * A reference to an instance of this class.
36
- *
37
- * @since 1.0.0
38
- * @access private
39
- * @var object
40
- */
41
- private static $handlers_list = array();
42
-
43
- /**
44
- * Default settings.
45
- *
46
- * @since 1.0.0
47
- * @var array
48
- */
49
- private $settings = array(
50
- 'id' => '',
51
- 'action' => '',
52
- 'capability' => '',
53
- 'is_public' => false,
54
- 'callback' => '',
55
- 'type' => 'POST',
56
- 'data_type' => 'json',
57
- 'sys_messages' => array(
58
- 'invalid_base_data' => 'Unable to process the request without nonce or server error',
59
- 'no_right' => 'No right for this action',
60
- 'invalid_nonce' => 'Stop CHEATING!!!',
61
- 'access_is_allowed' => 'Access is allowed',
62
- 'wait_processing' => 'Please wait, processing the previous request',
63
- ),
64
- );
65
-
66
- /**
67
- * Class constructor.
68
- *
69
- * @since 1.0.0
70
- * @param object $core Core instance.
71
- * @param array $args Class args.
72
- */
73
- public function __construct( $core, $args = array() ) {
74
- $this->settings = array_merge( $this->settings, $args );
75
-
76
- if ( empty( $this->settings['id'] ) ) {
77
- echo '<h3>ID is required attr</h3>';
78
- return false;
79
- }
80
-
81
- if ( empty( $this->settings['action'] ) ) {
82
- echo '<h3>Action is required attr</h3>';
83
- return false;
84
- }
85
-
86
- add_action( 'wp_ajax_' . $this->settings['action'], array( $this, 'handler_init' ) );
87
-
88
- // Public action check
89
- if ( filter_var( $this->settings['is_public'], FILTER_VALIDATE_BOOLEAN ) ) {
90
- add_action( 'wp_ajax_nopriv_' . $this->settings['action'], array( $this, 'handler_init' ) );
91
- }
92
-
93
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
94
- add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
95
- add_action( 'wp_print_scripts', array( $this, 'localize_script' ) );
96
- }
97
-
98
- /**
99
- * Handler initialization
100
- *
101
- * @since 1.0.0
102
- * @return void
103
- */
104
- public function handler_init() {
105
- $request_type = strtoupper( '_' . $this->settings['type'] );
106
-
107
- if ( ! empty( $GLOBALS[ $request_type ] ) && array_key_exists( 'nonce', $GLOBALS[ $request_type ] ) ) {
108
-
109
- $nonce = $GLOBALS[ $request_type ]['nonce'];
110
-
111
- $nonce_action = ! empty( $this->settings['action'] ) ? $this->settings['action'] : 'cherry_ajax_nonce';
112
-
113
- if ( ! wp_verify_nonce( $nonce, $nonce_action ) ) {
114
- $response = array(
115
- 'message' => $this->settings['sys_messages']['invalid_nonce'],
116
- 'type' => 'error-notice',
117
- );
118
-
119
- wp_send_json( $response );
120
- }
121
-
122
- if ( ! empty( $this->settings['capability'] ) && ! current_user_can( $this->settings['capability'] ) ) {
123
- $response = array(
124
- 'message' => $this->settings['sys_messages']['no_right'],
125
- 'type' => 'error-notice',
126
- );
127
-
128
- wp_send_json( $response );
129
- }
130
-
131
- if ( ! empty( $this->settings['callback'] ) && is_callable( $this->settings['callback'] ) ) {
132
-
133
- ob_start();
134
- $data = call_user_func( $this->settings['callback'] );
135
-
136
- if ( ! $data ) {
137
- $data = ob_get_contents();
138
- }
139
- ob_end_clean();
140
-
141
- $response = array(
142
- 'message' => $this->settings['sys_messages']['access_is_allowed'],
143
- 'type' => 'success-notice',
144
- 'data' => $data,
145
- );
146
-
147
- wp_send_json( $response );
148
- }
149
- } else {
150
- $response = array(
151
- 'message' => $this->settings['sys_messages']['invalid_base_data'],
152
- 'type' => 'error-notice',
153
- );
154
-
155
- wp_send_json( $response );
156
- }
157
- }
158
-
159
- /**
160
- * Register and enqueue handlers js.
161
- *
162
- * @since 1.0.0
163
- */
164
- public function enqueue_scripts() {
165
- wp_enqueue_script(
166
- 'cherry-handler-js',
167
- esc_url( Cherry_Core::base_url( 'assets/js/min/cherry-handler.min.js', __FILE__ ) ),
168
- array( 'jquery' ),
169
- '1.0.0',
170
- true
171
- );
172
-
173
- wp_enqueue_style(
174
- 'cherry-handler-css',
175
- esc_url( Cherry_Core::base_url( 'assets/css/cherry-handler-styles.min.css', __FILE__ ) ),
176
- array(),
177
- '1.0.0',
178
- 'all'
179
- );
180
- }
181
-
182
- /**
183
- * Prepare data for henler script.
184
- *
185
- * @since 1.0.0
186
- * @return void
187
- */
188
- public function localize_script() {
189
-
190
- $nonce = $this->create_nonce( $this->settings['action'] );
191
-
192
- wp_localize_script( 'cherry-handler-js', $this->settings['id'],
193
- array(
194
- 'action' => $this->settings['action'],
195
- 'nonce' => $nonce,
196
- 'type' => strtoupper( $this->settings['type'] ),
197
- 'data_type' => $this->settings['data_type'],
198
- 'is_public' => $this->settings['is_public'] ? 'true' : 'false',
199
- 'sys_messages' => $this->settings['sys_messages'],
200
- )
201
- );
202
-
203
- if ( $this->settings['is_public'] ) {
204
- $ajax_url = esc_url( admin_url( 'admin-ajax.php' ) );
205
- wp_localize_script( 'cherry-handler-js', 'cherryHandlerAjaxUrl', array( 'ajax_url' => $ajax_url ) );
206
- }
207
- }
208
-
209
- /**
210
- * Create nonce by action
211
- *
212
- * @param string $action Nonce name.
213
- * @return string
214
- */
215
- public function create_nonce( $action = '' ) {
216
- if ( ! empty( $action ) ) {
217
- return wp_create_nonce( $action );
218
- }
219
-
220
- return wp_create_nonce( 'cherry_ajax_nonce' );
221
- }
222
-
223
- /**
224
- * Returns the instance.
225
- *
226
- * @since 1.0.0
227
- * @return object
228
- */
229
- public static function get_instance( $core, $args ) {
230
- return new self( $core, $args );
231
- }
232
- }
233
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/cherry-interface-builder.php DELETED
@@ -1,471 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Interface Builder
4
- * Description: The module for the creation of interfaces in the WordPress admin panel
5
- * Version: 1.1.1
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.1.1
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Interface_Builder' ) ) {
26
-
27
- /**
28
- * Class Cherry Interface Builder.
29
- *
30
- * @since 1.0.0
31
- */
32
- class Cherry_Interface_Builder {
33
- /**
34
- * Module settings.
35
- *
36
- * @since 1.0.0
37
- * @access private
38
- * @var array
39
- */
40
- private $args = array(
41
- 'views' => array(
42
- 'section' => 'inc/views/section.php',
43
- 'component-tab-vertical' => 'inc/views/component-tab-vertical.php',
44
- 'component-tab-horizontal' => 'inc/views/component-tab-horizontal.php',
45
- 'component-toggle' => 'inc/views/component-toggle.php',
46
- 'component-accordion' => 'inc/views/component-accordion.php',
47
- 'component-repeater' => 'inc/views/component-repeater.php',
48
- 'settings' => 'inc/views/settings.php',
49
- 'control' => 'inc/views/control.php',
50
- 'settings-children-title' => 'inc/views/settings-children-title.php',
51
- 'tab-children-title' => 'inc/views/tab-children-title.php',
52
- 'toggle-children-title' => 'inc/views/toggle-children-title.php',
53
- 'form' => 'inc/views/form.php',
54
- 'html' => 'inc/views/html.php',
55
- ),
56
- 'views_args' => array(
57
- 'parent' => '',
58
- 'type' => '',
59
- 'view' => '',
60
- 'view_wrapping' => true,
61
- 'html' => '',
62
- 'scroll' => false,
63
- 'master' => false,
64
- 'title' => '',
65
- 'description' => '',
66
- ),
67
- );
68
-
69
- /**
70
- * A reference to an instance of this class.
71
- *
72
- * @since 1.0.0
73
- * @access private
74
- * @var object
75
- */
76
- private static $instance = null;
77
-
78
- /**
79
- * UI element instance.
80
- *
81
- * @since 1.0.0
82
- * @access public
83
- * @var object
84
- */
85
- public $ui_elements = null;
86
-
87
- /**
88
- * The structure of the interface elements.
89
- *
90
- * @since 1.0.0
91
- * @access private
92
- * @var array
93
- */
94
- private $structure = array();
95
-
96
- /**
97
- * Cherry_Interface_Builder constructor.
98
- *
99
- * @since 1.0.0
100
- * @access public
101
- * @return void
102
- */
103
- public function __construct( $core, array $args = array() ) {
104
- $this->args = array_merge_recursive(
105
- $args,
106
- $this->args
107
- );
108
-
109
- $this->ui_elements = $core->init_module( 'cherry-ui-elements' );
110
-
111
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
112
- }
113
-
114
- /**
115
- * Register element type section.
116
- *
117
- * @since 1.0.0
118
- * @access public
119
- * @param array $args Options section.
120
- * @return void
121
- */
122
- public function register_section( array $args = array() ) {
123
- $this->add_new_element( $args, 'section' );
124
- }
125
-
126
- /**
127
- * Register element type component.
128
- *
129
- * @since 1.0.0
130
- * @access public
131
- * @param array $args Options component.
132
- * @return void
133
- */
134
- public function register_component( array $args = array() ) {
135
- $this->add_new_element( $args, 'component' );
136
- }
137
-
138
- /**
139
- * Register element type settings.
140
- *
141
- * @since 1.0.0
142
- * @access public
143
- * @param array $args Options settings.
144
- * @return void
145
- */
146
- public function register_settings( array $args = array() ) {
147
- $this->add_new_element( $args, 'settings' );
148
- }
149
-
150
- /**
151
- * Register element type control.
152
- *
153
- * @since 1.0.0
154
- * @access public
155
- * @param array $args Options control.
156
- * @return void
157
- */
158
- public function register_control( array $args = array() ) {
159
- $this->add_new_element( $args, 'control' );
160
- }
161
-
162
- /**
163
- * Register element type form.
164
- *
165
- * @since 1.0.0
166
- * @access public
167
- * @param array $args Options form.
168
- * @return void
169
- */
170
- public function register_form( array $args = array() ) {
171
- $this->add_new_element( $args, 'form' );
172
- }
173
-
174
- /**
175
- * Register element type html.
176
- *
177
- * @since 1.0.0
178
- * @access public
179
- * @param array $args Options control.
180
- * @return void
181
- */
182
- public function register_html( array $args = array() ) {
183
- $this->add_new_element( $args, 'html' );
184
- }
185
-
186
- /**
187
- * This function adds a new element to the structure.
188
- *
189
- * @since 1.0.0
190
- * @access protected
191
- * @param array $args Options new element.
192
- * @param string $type Type new element.
193
- * @return void
194
- */
195
- protected function add_new_element( array $args = array(), $type = 'section' ) {
196
- if ( ! isset( $args[0] ) && ! is_array( current( $args ) ) ) {
197
-
198
- if ( 'control' !== $type && 'component' !== $type ) {
199
- $args['type'] = $type;
200
- }
201
-
202
- $this->structure[ $args['id'] ] = $args;
203
- } else {
204
- foreach ( $args as $key => $value ) {
205
-
206
- if ( 'control' !== $type && 'component' !== $type ) {
207
- $value['type'] = $type;
208
- }
209
-
210
- $this->structure[ $key ] = $value;
211
- }
212
- }
213
- }
214
-
215
- /**
216
- * Sorts the elements of the structure, adding child items to the parent.
217
- *
218
- * @since 1.0.0
219
- * @access protected
220
- * @param array $structure The original structure of the elements.
221
- * @param string $parent_key The key of the parent element.
222
- * @return array
223
- */
224
- protected function sort_structure( array $structure = array(), $parent_key = null ) {
225
- $new_array = array();
226
-
227
- foreach ( $structure as $key => $value ) {
228
- if (
229
- ( null === $parent_key && ! isset( $value['parent'] ) )
230
- || null === $parent_key && ! isset( $structure[ $value['parent'] ] )
231
- || ( isset( $value['parent'] ) && $value['parent'] === $parent_key )
232
- ) {
233
-
234
- if ( ! isset( $value['id'] ) ) {
235
- $value['id'] = $key;
236
- }
237
- if ( ! isset( $value['name'] ) ) {
238
- $value['name'] = $key;
239
- }
240
- $new_array[ $key ] = $value;
241
-
242
- $children = $this->sort_structure( $structure, $key );
243
- if ( ! empty( $children ) ) {
244
- $new_array[ $key ]['children'] = $children;
245
- }
246
- }
247
- }
248
-
249
- return $new_array;
250
- }
251
-
252
- /**
253
- * Reset structure array.
254
- * Call this method only after render.
255
- *
256
- * @since 1.0.1
257
- * @return void
258
- */
259
- public function reset_structure() {
260
- $this->structure = array();
261
- }
262
-
263
- /**
264
- * Get view for interface elements.
265
- *
266
- * @since 1.0.0
267
- * @access protected
268
- * @param string $type View type.
269
- * @param array $args Input data.
270
- * @return string
271
- */
272
- protected function get_view( $type = 'control', array $args = array() ) {
273
-
274
- if ( empty( $view ) ) {
275
- $path = dirname( __FILE__ ) . '/';
276
- $path .= ( array_key_exists( $type, $this->args['views'] ) ) ? $this->args['views'][ $type ] : $this->args['views']['control'] ;
277
- } else {
278
- $path = $view;
279
- }
280
-
281
- $view = Cherry_Toolkit::render_view( $path, $args );
282
-
283
- return $view;
284
- }
285
-
286
- /**
287
- * Render HTML elements.
288
- *
289
- * @since 1.0.0
290
- * @access public
291
- * @param bool $echo Input data.
292
- * @param array $args The original structure of the elements.
293
- * @return string
294
- */
295
- public function render( $echo = true, array $args = array() ) {
296
-
297
- if ( empty( $args ) ) {
298
- $args = $this->structure;
299
- }
300
-
301
- if ( empty( $args ) ) {
302
- return false;
303
- }
304
-
305
- $sorted_structure = $this->sort_structure( $args );
306
-
307
- $output = $this->build( $sorted_structure );
308
- $output = str_replace( array( "\r\n", "\r", "\n", "\t" ), '', $output );
309
-
310
- $this->reset_structure();
311
-
312
- return $this->output_method( $output, $echo );
313
- }
314
-
315
- /**
316
- * Render HTML elements.
317
- *
318
- * @since 1.0.0
319
- * @access protected
320
- * @param array $args Input data.
321
- * @return string
322
- */
323
- protected function build( array $args = array() ) {
324
- $output = '';
325
- $views = $this->args['views'];
326
-
327
- foreach ( $args as $key => $value ) {
328
- $value = wp_parse_args(
329
- $value,
330
- $this->args['views_args']
331
- );
332
-
333
- $value['class'] = isset( $value['class'] ) ? $value['class'] . ' ' : '' ;
334
- $value['class'] .= $value['id'] . ' ' ;
335
- if ( $value['scroll'] ) {
336
- $value['class'] .= 'cherry-scroll ';
337
- }
338
- if ( $value['master'] ) {
339
- $value['class'] .= $value['master'] . ' ' ;
340
- }
341
-
342
- $type = array_key_exists( $value['type'], $views ) ? $value['type'] : 'field' ;
343
- $has_child = isset( $value['children'] ) && is_array( $value['children'] ) && ! empty( $value['children'] );
344
-
345
- switch ( $type ) {
346
- case 'component-tab-vertical':
347
- case 'component-tab-horizontal':
348
- if ( $has_child ) {
349
- $value['tabs'] = '';
350
-
351
- foreach ( $value['children'] as $key_children => $value_children ) {
352
- $value['tabs'] .= $this->get_view( 'tab-children-title', $value_children );
353
-
354
- unset( $value['children'][ $key_children ]['title'] );
355
- }
356
- }
357
- break;
358
-
359
- case 'component-toggle':
360
- case 'component-accordion':
361
- if ( $has_child ) {
362
- foreach ( $value['children'] as $key_children => $value_children ) {
363
- $value['children'][ $key_children ]['title_in_view'] = $this->get_view( 'toggle-children-title', $value_children );
364
- }
365
- }
366
- break;
367
-
368
- case 'settings':
369
- if ( isset( $value['title'] ) && $value['title'] ) {
370
- $value['title'] = isset( $value['title_in_view'] ) ? $value['title_in_view'] : $this->get_view( 'settings-children-title', $value );
371
- }
372
- break;
373
-
374
- case 'html':
375
- $value['children'] = $value['html'];
376
- break;
377
-
378
- case 'form':
379
- $value['accept-charset'] = isset( $value['accept-charset'] ) ? $value['accept-charset'] : 'utf-8';
380
- $value['action'] = isset( $value['action'] ) ? $value['action'] : '' ;
381
- $value['autocomplete'] = isset( $value['autocomplete'] ) ? $value['autocomplete'] : 'on';
382
- $value['enctype'] = isset( $value['enctype'] ) ? $value['enctype'] : 'application/x-www-form-urlencoded';
383
- $value['method'] = isset( $value['method'] ) ? $value['method'] : 'post';
384
- $value['novalidate'] = ( isset( $value['novalidate'] ) && $value['novalidate'] ) ? 'novalidate' : '';
385
- $value['target'] = isset( $value['target'] ) ? $value['target'] : '';
386
- break;
387
-
388
- case 'field':
389
- $ui_args = $value;
390
-
391
- $ui_args['class'] = isset( $ui_args['child_class'] ) ? $ui_args['child_class'] : '' ;
392
-
393
- if ( isset( $ui_args['options_callback'] ) ) {
394
- $ui_args['options'] = call_user_func( $ui_args['options_callback'] );
395
- }
396
-
397
- unset( $ui_args['master'] );
398
-
399
- $value['children'] = $this->ui_elements->get_ui_element_instance( $ui_args['type'], $ui_args )->render();
400
- break;
401
- }
402
-
403
- if ( $has_child ) {
404
- $value['children'] = $this->build( $value['children'] );
405
- }
406
-
407
- $output .= ( $value['view_wrapping'] ) ? $this->get_view( $type, $value ) : $value['children'];
408
- }
409
-
410
- return $output;
411
- }
412
-
413
- /**
414
- * Output HTML.
415
- *
416
- * @since 1.0.0
417
- * @access protected
418
- * @param string $output Output HTML.
419
- * @param boolean $echo Output type.
420
- * @return string
421
- */
422
- protected function output_method( $output = '', $echo = true ) {
423
- if ( ! filter_var( $echo, FILTER_VALIDATE_BOOLEAN ) ) {
424
- return $output;
425
- } else {
426
- echo $output;
427
- }
428
- }
429
-
430
- /**
431
- * Enqueue javascript and stylesheet interface builder.
432
- *
433
- * @since 4.0.0
434
- * @access public
435
- * @return void
436
- */
437
- public function enqueue_assets() {
438
- wp_enqueue_script(
439
- 'cherry-interface-builder',
440
- esc_url( Cherry_Core::base_url( 'inc/assets/min/cherry-interface-builder.min.js', __FILE__ ) ),
441
- array( 'jquery' ),
442
- '1.0.0',
443
- true
444
- );
445
- wp_enqueue_style(
446
- 'cherry-interface-builder',
447
- esc_url( Cherry_Core::base_url( 'inc/assets/min/cherry-interface-builder.min.css', __FILE__ ) ),
448
- array(),
449
- '1.0.0',
450
- 'all'
451
- );
452
- }
453
-
454
- /**
455
- * Returns the instance.
456
- *
457
- * @since 1.0.0
458
- * @access public
459
- * @return object
460
- */
461
- public static function get_instance( $core, $args ) {
462
-
463
- // If the single instance hasn't been set, set it now.
464
- if ( null == self::$instance ) {
465
- self::$instance = new self( $core, $args );
466
- }
467
-
468
- return self::$instance;
469
- }
470
- }
471
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/assets/_use-in-js.scss DELETED
@@ -1,17 +0,0 @@
1
- .cherry-ui-kit{
2
- button{
3
- *{
4
- pointer-events: none;
5
- }
6
- }
7
- }
8
- .cherry-component{
9
- &__content{
10
- .cherry-settings__content{
11
- display: none;
12
- &.show{
13
- display: inherit;
14
- }
15
- }
16
- }
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/assets/cherry-interface-builder.js DELETED
@@ -1,189 +0,0 @@
1
- /**
2
- * Interface Builder
3
- */
4
- ;( function( $, CherryJsCore ) {
5
- 'use strict';
6
-
7
- CherryJsCore.utilites.namespace( 'interfaceBuilder' );
8
-
9
- CherryJsCore.interfaceBuilder = {
10
- init: function() {
11
- this.component.init();
12
- },
13
- component: {
14
- tabClass: '.cherry-tab',
15
- accordionClass: '.cherry-accordion',
16
- toggleClass: '.cherry-toggle',
17
-
18
- buttonClass: '.cherry-component__button',
19
- contentClass: '.cherry-settings__content',
20
-
21
- buttonActiveClass: 'active',
22
- showClass: 'show',
23
-
24
- localStorage: {},
25
-
26
- init: function () {
27
- this.localStorage = this.getState() || {};
28
-
29
- this.componentInit( this.tabClass );
30
- this.componentInit( this.accordionClass );
31
- this.componentInit( this.toggleClass );
32
-
33
- this.addEvent();
34
- },
35
-
36
- addEvent: function() {
37
- $( 'body' )
38
- .on( 'click',
39
- this.tabClass + ' ' + this.buttonClass + ', ' +
40
- this.toggleClass + ' ' + this.buttonClass + ', ' +
41
- this.accordionClass + ' ' + this.buttonClass,
42
-
43
- this.componentClick.bind( this )
44
- );
45
- },
46
-
47
- componentInit: function( componentClass ) {
48
- var _this = this,
49
- components = $( componentClass ),
50
- componentId = null,
51
- button = null,
52
- contentId = null,
53
- notShow = '';
54
-
55
- components.each( function( index, component ) {
56
- component = $( component );
57
- componentId = component.data( 'compotent-id' );
58
-
59
- switch ( componentClass ) {
60
- case _this.toggleClass:
61
- if ( _this.localStorage[ componentId ] && _this.localStorage[ componentId ].length ) {
62
- notShow = _this.localStorage[ componentId ].join( ', ' );
63
- }
64
-
65
- $( _this.contentClass, component )
66
- .not( notShow )
67
- .addClass( _this.showClass )
68
- .prevAll( _this.buttonClass )
69
- .addClass( _this.buttonActiveClass );
70
- break;
71
-
72
- case _this.tabClass:
73
- case _this.accordionClass:
74
- if ( _this.localStorage[ componentId ] ) {
75
- contentId = _this.localStorage[ componentId ][ 0 ];
76
- button = $( '[data-content-id="' + contentId + '"]', component );
77
- } else {
78
- button = $( _this.buttonClass, component ).eq( 0 );
79
- contentId = button.data( 'content-id' );
80
- }
81
-
82
- _this.showElement( button, component, contentId );
83
- break;
84
- }
85
- } );
86
- },
87
-
88
- componentClick: function( event ) {
89
- var $target = $( event.target ),
90
- $parent = $target.closest( this.tabClass + ', ' + this.accordionClass + ', ' + this.toggleClass ),
91
- expr = new RegExp( this.tabClass + '|' + this.accordionClass + '|' + this.toggleClass ),
92
- componentName = $parent[0].className.match( expr )[ 0 ].replace( ' ', '.' ),
93
- contentId = $target.data( 'content-id' ),
94
- componentId = $parent.data( 'compotent-id' ),
95
- activeFlag = $target.hasClass( this.buttonActiveClass ),
96
- itemClosed;
97
-
98
- switch ( componentName ) {
99
- case this.tabClass:
100
- if ( ! activeFlag ) {
101
- this.hideElement( $parent );
102
- this.showElement( $target, $parent, contentId );
103
-
104
- this.localStorage[ componentId ] = new Array( contentId );
105
- this.setState();
106
- }
107
- break;
108
-
109
- case this.accordionClass:
110
- this.hideElement( $parent );
111
-
112
- if ( ! activeFlag ) {
113
- this.showElement( $target, $parent, contentId );
114
-
115
- this.localStorage[ componentId ] = new Array( contentId );
116
- } else {
117
- this.localStorage[ componentId ] = {};
118
- }
119
- this.setState();
120
- break;
121
-
122
- case this.toggleClass:
123
- $target
124
- .toggleClass( this.buttonActiveClass )
125
- .nextAll( contentId )
126
- .toggleClass( this.showClass );
127
-
128
- if ( Array.isArray( this.localStorage[ componentId ] ) ) {
129
- itemClosed = this.localStorage[ componentId ].indexOf( contentId );
130
-
131
- if ( -1 !== itemClosed ) {
132
- this.localStorage[ componentId ].splice( itemClosed, 1 );
133
- } else {
134
- this.localStorage[ componentId ].push( contentId );
135
- }
136
-
137
- } else {
138
- this.localStorage[ componentId ] = new Array( contentId );
139
- }
140
-
141
- this.setState();
142
- break;
143
- }
144
- $target.blur();
145
-
146
- return false;
147
- },
148
-
149
- showElement: function ( button, holder, contentId ) {
150
- button
151
- .addClass( this.buttonActiveClass );
152
-
153
- holder
154
- .data( 'content-id', contentId );
155
-
156
- $( contentId, holder )
157
- .addClass( this.showClass );
158
- },
159
-
160
- hideElement: function ( holder ) {
161
- var contsntId = holder.data( 'content-id' );
162
-
163
- $( '[data-content-id="' + contsntId + '"]', holder )
164
- .removeClass( this.buttonActiveClass );
165
-
166
- $( contsntId, holder )
167
- .removeClass( this.showClass );
168
- },
169
-
170
- getState: function() {
171
- try {
172
- return JSON.parse( localStorage.getItem( 'interface-builder' ) );
173
- } catch ( e ) {
174
- return false;
175
- }
176
- },
177
-
178
- setState: function() {
179
- try {
180
- localStorage.setItem( 'interface-builder', JSON.stringify( this.localStorage ) );
181
- } catch ( e ) {
182
- return false;
183
- }
184
- }
185
- }
186
- };
187
-
188
- CherryJsCore.interfaceBuilder.init();
189
- }( jQuery, window.CherryJsCore ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/assets/cherry-interface-builder.scss DELETED
@@ -1,463 +0,0 @@
1
- $color-1: #fff; // Background color.
2
- $color-2: #efefef; // Background color.
3
- $color-3: #96989a; // Description color and tabs button text color.
4
- $color-4: #b4b7ba; //
5
- $color-5: #f1f1f1; // Scrollbar background
6
- $color-6: #e5e5e5; // Hover scrollbar background
7
- $color-7: #495159; // Scrollbar track background
8
- $link-color: #298ffc; // link color.
9
- $link-hover-color: #23282d; // link hover color.
10
-
11
- $shadow: 0px 5px 21px rgba(0, 0, 0, 0.1); //Shadow.
12
- $border: 1px solid rgba(0, 0, 0, 0.1) ;
13
-
14
- $br-radius: 5px; // Border radius.
15
-
16
- $padding: 10px;
17
- $margin: 10px;
18
- $max-heught: 700px;
19
-
20
- @import "use-in-js";
21
-
22
- html{
23
- font-size: 13px;
24
- }
25
- .cherry-ui-kit{
26
- h1{
27
- font-weight: 700;
28
- font-size: 2.308rem;
29
- line-height: 2.308rem;
30
- .dashicons{
31
- font-size: 3rem;
32
- line-height: inherit;
33
- width: 20px;
34
- margin: 0 $margin * 2 0 $margin * -0.5;
35
- }
36
- }
37
- h2{
38
- font-weight: 600;
39
- font-size: 1.538rem;
40
- line-height: 1.538rem;
41
- .dashicons{
42
- font-size: 2rem;
43
- line-height: inherit;
44
- width: 20px;
45
- margin-right: $margin * 2;
46
- }
47
- }
48
- h3{
49
- font-weight: 600;
50
- font-size: 1.231rem;
51
- line-height: 1.231rem;
52
- .dashicons{
53
- font-size: 1.7rem;
54
- line-height: inherit;
55
- margin-right: $margin * 0.5;
56
- }
57
- }
58
- h4{
59
- font-weight: 500;
60
- font-size: 1.077rem;
61
- line-height: 1.077rem;
62
-
63
- }
64
- h5{
65
- font-weight: 500;
66
- font-size: 1.077rem;
67
- line-height: 1.077rem;
68
- }
69
- h6{
70
- font-weight: 400;
71
- font-size: 1rem;
72
- line-height: 1rem;
73
- }
74
- a{
75
- color: $link-color;
76
- text-decoration: none;
77
- &:hover{
78
- color: $link-hover-color;
79
- }
80
- &:focus{
81
- outline: 1px solid $link-hover-color;
82
- }
83
- }
84
- &__description{
85
- font-size: 0.9rem;
86
- color: $color-3;
87
- margin: $margin 0;
88
- }
89
- &__title{
90
- margin: $margin*2 0;
91
- }
92
- &.hide{
93
- display: none;
94
- }
95
- }
96
-
97
- .cherry-control + .cherry-control, .cherry-settings + .cherry-control{
98
- border-top: $border;
99
- }
100
-
101
- .cherry-section{
102
- padding: $padding;
103
- background-color: $color-1;
104
- margin-left: -10px;
105
- &__title, &__description{
106
- margin: $margin 0 0 0;
107
- }
108
- & + .cherry-ui-kit {
109
- border-top: $border;
110
- }
111
- @media ( min-width: 783px ) {
112
- box-shadow:$shadow;
113
- border-radius: $br-radius;
114
- border: $border;
115
- padding: $padding * 1.5;
116
- margin: $margin * 1.5 $margin * 1.5 0 0;
117
- &__holder{
118
- background-color: $color-2;
119
- border-radius: $br-radius;
120
- padding: $padding * 1.5;
121
- }
122
- &__inner{
123
-
124
- }
125
- &__info{
126
- background-color: $color-1;
127
- border-radius: $br-radius;
128
- padding: $padding * 1.5;
129
- box-shadow: $shadow;
130
- margin-bottom: $padding * 1.5;
131
- }
132
- .cherry-settings{
133
- box-shadow: $shadow;
134
- border-radius: $br-radius;
135
- border: $border;
136
- background-color: $color-1;
137
- margin-top: $padding * 1.5;
138
- &:first-child{
139
- margin-top: 0;
140
- }
141
- }
142
- }
143
- @media ( min-width: 961px ) {
144
- padding: $padding * 3;
145
- margin: $margin * 2 $margin * 2 0 0;
146
- &__info{
147
- padding: $padding * 3;
148
- margin-bottom: $padding * 3;
149
- }
150
- &__holder{
151
- padding: $padding * 3;
152
- }
153
- .cherry-settings{
154
- margin-top: $padding * 3;
155
- }
156
- }
157
- }
158
-
159
- .cherry-component{
160
- padding: $padding * 2 0;
161
- @media ( min-width: 783px ) {
162
- padding: $padding * 1.5;
163
- }
164
- @media ( min-width: 961px ) {
165
- padding: $padding * 3;
166
- }
167
- & + * {
168
- border-top: $border;
169
- }
170
- &__title{
171
- margin-top: 0;
172
- }
173
- & &__content{
174
- .cherry-settings{
175
- padding: 0;
176
- border-top: none;
177
- }
178
- }
179
- &__button{
180
- display: block;
181
- min-height: 45px;
182
- .cherry-ui-kit__title {
183
- color: inherit;
184
- }
185
- &.active, &:hover{
186
- color: $link-color;
187
- transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
188
- }
189
- &:focus{
190
- outline: none;
191
- box-shadow: inset 0px 0px 10px rgba(41,143,252,0.5);
192
- transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
193
- }
194
- transition: all 300ms cubic-bezier(0.55, 0.055, 0.675, 0.19);
195
- }
196
- &.cherry-accordion, &.cherry-toggle{
197
- .cherry-component__button{
198
- width: 100%;
199
- padding: $padding * 1.5 $padding * 2;
200
- border:0;
201
- background: none;
202
- cursor: pointer;
203
- .cherry-toggle__title {
204
- font-weight: 700;
205
- font-size: 14px;
206
- float: left;
207
- margin: 0;
208
- }
209
- span{
210
- font-size: 25px;
211
- color: $color-4;
212
- float: right;
213
- padding: 5px 5px;
214
- width: 10px;
215
- height: 9px;
216
- text-align: left;
217
- margin-right: -6px;
218
- &.hide-icon{
219
- &:before{
220
- position: relative;
221
- top: -8px;
222
- left: -9px;
223
- }
224
- transform:scaleX(1);
225
- transition: all 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
226
- }
227
- &.show-icon{
228
- &:before{
229
- position: relative;
230
- top: -7px;
231
- left: -9px;
232
- }
233
- position: relative;
234
- left: 14px;
235
- transform:scaleX(0);
236
- transition: all 300ms cubic-bezier(0.215, 0.61, 0.355, 1);
237
- }
238
- }
239
- &.active{
240
- span{
241
- &.show-icon{
242
- transform:scaleX(1);
243
- transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
244
- }
245
- &.hide-icon{
246
- transform:scaleX(0);
247
- transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
248
- }
249
- }
250
- }
251
- }
252
- .cherry-component__button + .cherry-settings__content{
253
- border-top: $border;
254
- }
255
- > .cherry-ui-kit__content{
256
- & > .cherry-settings + .cherry-settings{
257
- margin-top: $margin;
258
- }
259
- > .cherry-settings{
260
- box-shadow:$shadow;
261
- border-radius: $br-radius;
262
- border: $border;
263
- }
264
- }
265
- }
266
- &.cherry-tab{
267
- .cherry-tab__tabs{
268
- display: flex;
269
- flex-flow: row wrap;
270
- justify-content: flex-start;
271
- align-items: flex-start;
272
- align-content: flex-start;
273
- border-bottom: $border;
274
- .cherry-component__button{
275
- order: 0;
276
- flex: 0 1 100%;
277
- align-self: auto;
278
- padding: $padding * 1.5 $padding * 2;
279
- border: 0;
280
- background: none;
281
- cursor: pointer;
282
- &.active{
283
- -ms-box-shadow: inset 0px -3px 0px 0px $link-color;
284
- box-shadow: inset 0px -3px 0px 0px $link-color;
285
- }
286
- .cherry-tab__title {
287
- font-weight: 700;
288
- font-size: 14px;
289
- float: left;
290
- margin: 0;
291
- }
292
- & + button{
293
- border-top: $border;
294
- }
295
- }
296
- }
297
- .cherry-tab__body{
298
- box-shadow:$shadow;
299
- border-radius: $br-radius;
300
- border: $border;
301
- background-color: $color-1;
302
- .cherry-settings{
303
- box-shadow: none;
304
- border-radius: 0;
305
- border: none;
306
- background-color: inherit;
307
- margin: 0;
308
- }
309
- }
310
- @media ( min-width: 783px ) {
311
- .cherry-tab__tabs{
312
- border: solid 1px rgba(0,0,0,0.1);
313
- .cherry-component__button{
314
- & + button{
315
- border-top: none;
316
- }
317
- }
318
- }
319
- .cherry-tab__body{
320
- border: none;
321
- .cherry-tab__content{
322
- border: $border;
323
- }
324
- }
325
- &--horizontal{
326
- >.cherry-tab__body{
327
- border-radius: none;
328
- >.cherry-tab__tabs{
329
- flex-wrap: nowrap;
330
- flex-direction: row;
331
- border-radius:$br-radius $br-radius 0 0;
332
- border-bottom: none;
333
- .cherry-component__button{
334
- flex: 0 1 auto;
335
- }
336
- }
337
- >.cherry-tab__content{
338
- border-radius: 0 0 $br-radius $br-radius;
339
- }
340
- }
341
- }
342
- &--vertical{
343
- >.cherry-tab__body{
344
- display: flex;
345
- border-radius: none;
346
- >.cherry-tab__tabs{
347
- flex-direction: row;
348
- -webkit-box-flex: 0;
349
- flex: 0 1 25%;
350
- border-radius:$br-radius 0 0 $br-radius;
351
- border-right: none;
352
- .cherry-component__button{
353
- text-align: right;
354
- .cherry-tab__title {
355
- width: 100%;
356
- }
357
- &.active{
358
- box-shadow: inset -3px 0px 0px $link-color;
359
- }
360
- }
361
- }
362
- >.cherry-tab__content{
363
- -webkit-box-flex: 0;
364
- flex: 0 1 75%;
365
- border-radius: 0 $br-radius $br-radius 0;
366
- }
367
- }
368
- }
369
- }
370
- @media ( min-width: 1200px ) {
371
- &--vertical{
372
- .cherry-tab__tabs{
373
- flex: 0 1 20%;
374
- }
375
- .cherry-tab__content{
376
- flex: 0 1 80%;
377
- }
378
- }
379
- }
380
- }
381
- }
382
- .cherry-settings{
383
- & + & {
384
- border-top: $border;
385
- }
386
- & &__title{
387
- margin-bottom: $margin;
388
- }
389
- &__description, & &__title{
390
- margin-left: $margin;
391
- @media ( min-width: 783px ) {
392
- margin-left: $margin * 1.5;
393
- }
394
- @media ( min-width: 961px ) {
395
- margin-left: $margin * 3;
396
- }
397
- }
398
- }
399
- .cherry-control{
400
- padding: $padding * 1.5 $padding * 2;
401
- &__title{
402
- margin: 0 0 $margin 0 ;
403
- }
404
- &__description{
405
- margin-top: 0;
406
- }
407
- .cherry-ui-container {
408
- margin: 0;
409
- }
410
- @media (min-width: 783px) {
411
- padding: $padding * 1.5;
412
- display: flex;
413
- flex-flow: row nowrap;
414
- &__info{
415
- -webkit-box-flex: 0;
416
- flex: 0 1 30%;
417
- padding-right: $padding * 1.5;
418
- }
419
- &__content{
420
- -webkit-box-flex: 0;
421
- flex: 0 1 70%;
422
- }
423
- }
424
- @media ( min-width: 961px ) {
425
- padding: $padding * 3;
426
- }
427
- }
428
-
429
- .cherry-section.cherry-scroll > .cherry-section__holder > .cherry-section__inner,
430
- .cherry-tab__content > .cherry-scroll,
431
- .cherry-accordion__content > .cherry-scroll > .cherry-settings__content,
432
- .cherry-toggle__content > .cherry-scroll > .cherry-settings__content,
433
- {
434
- @media ( min-width: 783px ) {
435
- max-height: $max-heught;
436
- overflow-y: auto;
437
- position: relative;
438
- &::-webkit-scrollbar {
439
- width: 10px;
440
- height: 10px;
441
- &-button {
442
- width: 0px;
443
- height: 0px;
444
- }
445
- &-thumb {
446
- background-color: $link-color;
447
- border: none;
448
- border-radius: $br-radius;
449
- &:hover, &:active {
450
- background: #206ff4;
451
- }
452
- }
453
- &-track {
454
- background-color: $color-1;
455
- border: none;
456
- border-radius: $br-radius;
457
- }
458
- &-corner {
459
- background: transparent;
460
- }
461
- }
462
- }
463
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/assets/min/cherry-interface-builder.min.css DELETED
@@ -1 +0,0 @@
1
- .cherry-ui-kit button *{pointer-events:none}.cherry-component__content .cherry-settings__content{display:none}.cherry-component__content .cherry-settings__content.show{display:inherit}html{font-size:13px}.cherry-ui-kit h1{font-weight:700;font-size:2.308rem;line-height:2.308rem}.cherry-ui-kit h1 .dashicons{font-size:3rem;line-height:inherit;width:20px;margin:0 20px 0 -5px}.cherry-ui-kit h2{font-weight:600;font-size:1.538rem;line-height:1.538rem}.cherry-ui-kit h2 .dashicons{font-size:2rem;line-height:inherit;width:20px;margin-right:20px}.cherry-ui-kit h3{font-weight:600;font-size:1.231rem;line-height:1.231rem}.cherry-ui-kit h3 .dashicons{font-size:1.7rem;line-height:inherit;margin-right:5px}.cherry-ui-kit h4{font-weight:500;font-size:1.077rem;line-height:1.077rem}.cherry-ui-kit h5{font-weight:500;font-size:1.077rem;line-height:1.077rem}.cherry-ui-kit h6{font-weight:400;font-size:1rem;line-height:1rem}.cherry-ui-kit a{color:#298ffc;text-decoration:none}.cherry-ui-kit a:hover{color:#23282d}.cherry-ui-kit a:focus{outline:1px solid #23282d}.cherry-ui-kit__description{font-size:0.9rem;color:#96989a;margin:10px 0}.cherry-ui-kit__title{margin:20px 0}.cherry-ui-kit.hide{display:none}.cherry-control+.cherry-control,.cherry-settings+.cherry-control{border-top:1px solid rgba(0,0,0,0.1)}.cherry-section{padding:10px;background-color:#fff;margin-left:-10px}.cherry-section__title,.cherry-section__description{margin:10px 0 0 0}.cherry-section+.cherry-ui-kit{border-top:1px solid rgba(0,0,0,0.1)}@media (min-width: 783px){.cherry-section{box-shadow:0px 5px 21px rgba(0,0,0,0.1);border-radius:5px;border:1px solid rgba(0,0,0,0.1);padding:15px;margin:15px 15px 0 0}.cherry-section__holder{background-color:#efefef;border-radius:5px;padding:15px}.cherry-section__info{background-color:#fff;border-radius:5px;padding:15px;box-shadow:0px 5px 21px rgba(0,0,0,0.1);margin-bottom:15px}.cherry-section .cherry-settings{box-shadow:0px 5px 21px rgba(0,0,0,0.1);border-radius:5px;border:1px solid rgba(0,0,0,0.1);background-color:#fff;margin-top:15px}.cherry-section .cherry-settings:first-child{margin-top:0}}@media (min-width: 961px){.cherry-section{padding:30px;margin:20px 20px 0 0}.cherry-section__info{padding:30px;margin-bottom:30px}.cherry-section__holder{padding:30px}.cherry-section .cherry-settings{margin-top:30px}}.cherry-component{padding:20px 0}@media (min-width: 783px){.cherry-component{padding:15px}}@media (min-width: 961px){.cherry-component{padding:30px}}.cherry-component+*{border-top:1px solid rgba(0,0,0,0.1)}.cherry-component__title{margin-top:0}.cherry-component .cherry-component__content .cherry-settings{padding:0;border-top:none}.cherry-component__button{display:block;min-height:45px;-webkit-transition:all 300ms cubic-bezier(0.55, 0.055, 0.675, 0.19);transition:all 300ms cubic-bezier(0.55, 0.055, 0.675, 0.19)}.cherry-component__button .cherry-ui-kit__title{color:inherit}.cherry-component__button.active,.cherry-component__button:hover{color:#298ffc;-webkit-transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}.cherry-component__button:focus{outline:none;box-shadow:inset 0px 0px 10px rgba(41,143,252,0.5);-webkit-transition-timing-function:cubic-bezier(0.175, 0.885, 0.32, 1.275);transition-timing-function:cubic-bezier(0.175, 0.885, 0.32, 1.275)}.cherry-component.cherry-accordion .cherry-component__button,.cherry-component.cherry-toggle .cherry-component__button{width:100%;padding:15px 20px;border:0;background:none;cursor:pointer}.cherry-component.cherry-accordion .cherry-component__button .cherry-toggle__title,.cherry-component.cherry-toggle .cherry-component__button .cherry-toggle__title{font-weight:700;font-size:14px;float:left;margin:0}.cherry-component.cherry-accordion .cherry-component__button span,.cherry-component.cherry-toggle .cherry-component__button span{font-size:25px;color:#b4b7ba;float:right;padding:5px 5px;width:10px;height:9px;text-align:left;margin-right:-6px}.cherry-component.cherry-accordion .cherry-component__button span.hide-icon,.cherry-component.cherry-toggle .cherry-component__button span.hide-icon{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1);-webkit-transition:all 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:all 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275)}.cherry-component.cherry-accordion .cherry-component__button span.hide-icon:before,.cherry-component.cherry-toggle .cherry-component__button span.hide-icon:before{position:relative;top:-8px;left:-9px}.cherry-component.cherry-accordion .cherry-component__button span.show-icon,.cherry-component.cherry-toggle .cherry-component__button span.show-icon{position:relative;left:14px;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transition:all 300ms cubic-bezier(0.215, 0.61, 0.355, 1);transition:all 300ms cubic-bezier(0.215, 0.61, 0.355, 1)}.cherry-component.cherry-accordion .cherry-component__button span.show-icon:before,.cherry-component.cherry-toggle .cherry-component__button span.show-icon:before{position:relative;top:-7px;left:-9px}.cherry-component.cherry-accordion .cherry-component__button.active span.show-icon,.cherry-component.cherry-toggle .cherry-component__button.active span.show-icon{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1);-webkit-transition-timing-function:cubic-bezier(0.175, 0.885, 0.32, 1.275);transition-timing-function:cubic-bezier(0.175, 0.885, 0.32, 1.275)}.cherry-component.cherry-accordion .cherry-component__button.active span.hide-icon,.cherry-component.cherry-toggle .cherry-component__button.active span.hide-icon{-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}.cherry-component.cherry-accordion .cherry-component__button+.cherry-settings__content,.cherry-component.cherry-toggle .cherry-component__button+.cherry-settings__content{border-top:1px solid rgba(0,0,0,0.1)}.cherry-component.cherry-accordion>.cherry-ui-kit__content>.cherry-settings+.cherry-settings,.cherry-component.cherry-toggle>.cherry-ui-kit__content>.cherry-settings+.cherry-settings{margin-top:10px}.cherry-component.cherry-accordion>.cherry-ui-kit__content>.cherry-settings,.cherry-component.cherry-toggle>.cherry-ui-kit__content>.cherry-settings{box-shadow:0px 5px 21px rgba(0,0,0,0.1);border-radius:5px;border:1px solid rgba(0,0,0,0.1)}.cherry-component.cherry-tab .cherry-tab__tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start;border-bottom:1px solid rgba(0,0,0,0.1)}.cherry-component.cherry-tab .cherry-tab__tabs .cherry-component__button{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-webkit-flex:0 1 100%;-ms-flex:0 1 100%;flex:0 1 100%;-webkit-align-self:auto;-ms-flex-item-align:auto;align-self:auto;padding:15px 20px;border:0;background:none;cursor:pointer}.cherry-component.cherry-tab .cherry-tab__tabs .cherry-component__button.active{-ms-box-shadow:inset 0px -3px 0px 0px #298ffc;box-shadow:inset 0px -3px 0px 0px #298ffc}.cherry-component.cherry-tab .cherry-tab__tabs .cherry-component__button .cherry-tab__title{font-weight:700;font-size:14px;float:left;margin:0}.cherry-component.cherry-tab .cherry-tab__tabs .cherry-component__button+button{border-top:1px solid rgba(0,0,0,0.1)}.cherry-component.cherry-tab .cherry-tab__body{box-shadow:0px 5px 21px rgba(0,0,0,0.1);border-radius:5px;border:1px solid rgba(0,0,0,0.1);background-color:#fff}.cherry-component.cherry-tab .cherry-tab__body .cherry-settings{box-shadow:none;border-radius:0;border:none;background-color:inherit;margin:0}@media (min-width: 783px){.cherry-component.cherry-tab .cherry-tab__tabs{border:solid 1px rgba(0,0,0,0.1)}.cherry-component.cherry-tab .cherry-tab__tabs .cherry-component__button+button{border-top:none}.cherry-component.cherry-tab .cherry-tab__body{border:none}.cherry-component.cherry-tab .cherry-tab__body .cherry-tab__content{border:1px solid rgba(0,0,0,0.1)}.cherry-component.cherry-tab--horizontal>.cherry-tab__body{border-radius:none}.cherry-component.cherry-tab--horizontal>.cherry-tab__body>.cherry-tab__tabs{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;border-radius:5px 5px 0 0;border-bottom:none}.cherry-component.cherry-tab--horizontal>.cherry-tab__body>.cherry-tab__tabs .cherry-component__button{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.cherry-component.cherry-tab--horizontal>.cherry-tab__body>.cherry-tab__content{border-radius:0 0 5px 5px}.cherry-component.cherry-tab--vertical>.cherry-tab__body{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:none}.cherry-component.cherry-tab--vertical>.cherry-tab__body>.cherry-tab__tabs{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:0;-webkit-flex:0 1 25%;-ms-flex:0 1 25%;flex:0 1 25%;border-radius:5px 0 0 5px;border-right:none}.cherry-component.cherry-tab--vertical>.cherry-tab__body>.cherry-tab__tabs .cherry-component__button{text-align:right}.cherry-component.cherry-tab--vertical>.cherry-tab__body>.cherry-tab__tabs .cherry-component__button .cherry-tab__title{width:100%}.cherry-component.cherry-tab--vertical>.cherry-tab__body>.cherry-tab__tabs .cherry-component__button.active{box-shadow:inset -3px 0px 0px #298ffc}.cherry-component.cherry-tab--vertical>.cherry-tab__body>.cherry-tab__content{-webkit-box-flex:0;-webkit-flex:0 1 75%;-ms-flex:0 1 75%;flex:0 1 75%;border-radius:0 5px 5px 0}}@media (min-width: 1200px){.cherry-component.cherry-tab--vertical .cherry-tab__tabs{-webkit-box-flex:0;-webkit-flex:0 1 20%;-ms-flex:0 1 20%;flex:0 1 20%}.cherry-component.cherry-tab--vertical .cherry-tab__content{-webkit-box-flex:0;-webkit-flex:0 1 80%;-ms-flex:0 1 80%;flex:0 1 80%}}.cherry-settings+.cherry-settings{border-top:1px solid rgba(0,0,0,0.1)}.cherry-settings .cherry-settings__title{margin-bottom:10px}.cherry-settings__description,.cherry-settings .cherry-settings__title{margin-left:10px}@media (min-width: 783px){.cherry-settings__description,.cherry-settings .cherry-settings__title{margin-left:15px}}@media (min-width: 961px){.cherry-settings__description,.cherry-settings .cherry-settings__title{margin-left:30px}}.cherry-control{padding:15px 20px}.cherry-control__title{margin:0 0 10px 0}.cherry-control__description{margin-top:0}.cherry-control .cherry-ui-container{margin:0}@media (min-width: 783px){.cherry-control{padding:15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.cherry-control__info{-webkit-box-flex:0;-webkit-flex:0 1 30%;-ms-flex:0 1 30%;flex:0 1 30%;padding-right:15px}.cherry-control__content{-webkit-box-flex:0;-webkit-flex:0 1 70%;-ms-flex:0 1 70%;flex:0 1 70%}}@media (min-width: 961px){.cherry-control{padding:30px}}@media (min-width: 783px){.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner,.cherry-tab__content>.cherry-scroll,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content{max-height:700px;overflow-y:auto;position:relative}.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar{width:10px;height:10px}.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar-button,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar-button,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-button,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-button{width:0px;height:0px}.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar-thumb,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar-thumb,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-thumb,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-thumb{background-color:#298ffc;border:none;border-radius:5px}.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar-thumb:hover,.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar-thumb:active,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar-thumb:hover,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar-thumb:active,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-thumb:hover,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-thumb:active,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-thumb:hover,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-thumb:active{background:#206ff4}.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar-track,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar-track,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-track,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-track{background-color:#fff;border:none;border-radius:5px}.cherry-section.cherry-scroll>.cherry-section__holder>.cherry-section__inner::-webkit-scrollbar-corner,.cherry-tab__content>.cherry-scroll::-webkit-scrollbar-corner,.cherry-accordion__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-corner,.cherry-toggle__content>.cherry-scroll>.cherry-settings__content::-webkit-scrollbar-corner{background:transparent}}
 
cherry-framework/modules/cherry-interface-builder/inc/assets/min/cherry-interface-builder.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t,s){"use strict";s.utilites.namespace("interfaceBuilder"),s.interfaceBuilder={init:function(){this.component.init()},component:{tabClass:".cherry-tab",accordionClass:".cherry-accordion",toggleClass:".cherry-toggle",buttonClass:".cherry-component__button",contentClass:".cherry-settings__content",buttonActiveClass:"active",showClass:"show",localStorage:{},init:function(){this.localStorage=this.getState()||{},this.componentInit(this.tabClass),this.componentInit(this.accordionClass),this.componentInit(this.toggleClass),this.addEvent()},addEvent:function(){t("body").on("click",this.tabClass+" "+this.buttonClass+", "+this.toggleClass+" "+this.buttonClass+", "+this.accordionClass+" "+this.buttonClass,this.componentClick.bind(this))},componentInit:function(s){var a=this,e=t(s),o=null,i=null,l=null,n="";e.each(function(e,c){switch(c=t(c),o=c.data("compotent-id"),s){case a.toggleClass:a.localStorage[o]&&a.localStorage[o].length&&(n=a.localStorage[o].join(", ")),t(a.contentClass,c).not(n).addClass(a.showClass).prevAll(a.buttonClass).addClass(a.buttonActiveClass);break;case a.tabClass:case a.accordionClass:a.localStorage[o]?(l=a.localStorage[o][0],i=t('[data-content-id="'+l+'"]',c)):(i=t(a.buttonClass,c).eq(0),l=i.data("content-id")),a.showElement(i,c,l)}})},componentClick:function(s){var a,e=t(s.target),o=e.closest(this.tabClass+", "+this.accordionClass+", "+this.toggleClass),i=new RegExp(this.tabClass+"|"+this.accordionClass+"|"+this.toggleClass),l=o[0].className.match(i)[0].replace(" ","."),n=e.data("content-id"),c=o.data("compotent-id"),r=e.hasClass(this.buttonActiveClass);switch(l){case this.tabClass:r||(this.hideElement(o),this.showElement(e,o,n),this.localStorage[c]=new Array(n),this.setState());break;case this.accordionClass:this.hideElement(o),r?this.localStorage[c]={}:(this.showElement(e,o,n),this.localStorage[c]=new Array(n)),this.setState();break;case this.toggleClass:e.toggleClass(this.buttonActiveClass).nextAll(n).toggleClass(this.showClass),Array.isArray(this.localStorage[c])?(a=this.localStorage[c].indexOf(n),-1!==a?this.localStorage[c].splice(a,1):this.localStorage[c].push(n)):this.localStorage[c]=new Array(n),this.setState()}return e.blur(),!1},showElement:function(s,a,e){s.addClass(this.buttonActiveClass),a.data("content-id",e),t(e,a).addClass(this.showClass)},hideElement:function(s){var a=s.data("content-id");t('[data-content-id="'+a+'"]',s).removeClass(this.buttonActiveClass),t(a,s).removeClass(this.showClass)},getState:function(){try{return JSON.parse(localStorage.getItem("interface-builder"))}catch(t){return!1}},setState:function(){try{localStorage.setItem("interface-builder",JSON.stringify(this.localStorage))}catch(t){return!1}}}},s.interfaceBuilder.init()}(jQuery,window.CherryJsCore);
 
cherry-framework/modules/cherry-interface-builder/inc/views/component-accordion.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- /**
3
- * Accordion template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-component cherry-accordion <?php echo esc_attr( $__data['class'] ); ?>" data-compotent-id="#<?php echo esc_attr( $__data['id'] ) ?>">
19
- <?php if ( ! empty( $__data['title'] ) ) { ?>
20
- <h2 class="cherry-ui-kit__title cherry-component__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h2>
21
- <?php } ?>
22
- <?php if ( ! empty( $__data['description'] ) ) { ?>
23
- <div class="cherry-ui-kit__description cherry-component__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
24
- <?php } ?>
25
- <?php if ( ! empty( $__data['children'] ) ) { ?>
26
- <div class="cherry-ui-kit__content cherry-component__content cherry-accordion__content" role="group" >
27
- <?php echo $__data['children'] ?>
28
- </div>
29
- <?php } ?>
30
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/component-repeater.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- /**
3
- * Repeater template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-component cherry-repeater <?php echo esc_attr( $__data['class'] ); ?>" data-compotent-id="#<?php echo esc_attr( $__data['id'] ); ?>">
19
- <?php if ( ! empty( $__data['title'] ) ) { ?>
20
- <h2 class="cherry-ui-kit__title cherry-component__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h2>
21
- <?php } ?>
22
- <?php if ( ! empty( $__data['description'] ) ) { ?>
23
- <div class="cherry-ui-kit__description cherry-component__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
24
- <?php } ?>
25
- <?php if ( ! empty( $__data['children'] ) ) { ?>
26
- <div class="cherry-ui-kit__content cherry-component__content" role="group" >
27
- <?php echo $__data['children']; ?>
28
- </div>
29
- <?php } ?>
30
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/component-tab-horizontal.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- /**
3
- * Horizontal tab template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-component cherry-tab cherry-tab--horizontal <?php echo esc_attr( $__data['class'] ) ?>" data-compotent-id="#<?php echo esc_attr( $__data['id'] ); ?>">
19
- <?php if ( ! empty( $__data['title'] ) ) { ?>
20
- <h2 class="cherry-ui-kit__title cherry-component__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h2>
21
- <?php } ?>
22
- <?php if ( ! empty( $__data['description'] ) ) { ?>
23
- <div class="cherry-ui-kit__description cherry-component__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
24
- <?php } ?>
25
- <?php if ( ! empty( $__data['children'] ) ) { ?>
26
- <div class="cherry-tab__body" >
27
- <div class="cherry-tab__tabs" role="navigation" >
28
- <?php echo $__data['tabs']; ?>
29
- </div>
30
- <div class="cherry-ui-kit__content cherry-component__content cherry-tab__content" role="group" >
31
- <?php echo $__data['children']; ?>
32
- </div>
33
- </div>
34
- <?php } ?>
35
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/component-tab-vertical.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- /**
3
- * Verticall tab template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-component cherry-tab cherry-tab--vertical <?php echo esc_attr( $__data['class'] ); ?>" data-compotent-id="#<?php echo esc_attr( $__data['id'] ); ?>">
19
- <?php if ( ! empty( $__data['title'] ) ) { ?>
20
- <h2 class="cherry-ui-kit__title cherry-component__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h2>
21
- <?php } ?>
22
- <?php if ( ! empty( $__data['description'] ) ) { ?>
23
- <div class="cherry-ui-kit__description cherry-component__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
24
- <?php } ?>
25
- <?php if ( ! empty( $__data['children'] ) ) { ?>
26
- <div class="cherry-tab__body" >
27
- <div class="cherry-tab__tabs" role="navigation" >
28
- <?php echo $__data['tabs']; ?>
29
- </div>
30
- <div class="cherry-ui-kit__content cherry-component__content cherry-tab__content" role="group" >
31
- <?php echo $__data['children']; ?>
32
- </div>
33
- </div>
34
- <?php } ?>
35
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/component-toggle.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- /**
3
- * Toggle template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-component cherry-toggle <?php echo esc_attr( $__data['class'] ); ?>" data-compotent-id="#<?php echo esc_attr( $__data['id'] ); ?>">
19
- <?php if ( ! empty( $__data['title'] ) ) { ?>
20
- <h2 class="cherry-ui-kit__title cherry-component__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h2>
21
- <?php } ?>
22
- <?php if ( ! empty( $__data['description'] ) ) { ?>
23
- <div class="cherry-ui-kit__description cherry-component__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
24
- <?php } ?>
25
- <?php if ( ! empty( $__data['children'] ) ) { ?>
26
- <div class="cherry-ui-kit__content cherry-component__content cherry-toggle__content" role="group" >
27
- <?php echo $__data['children']; ?>
28
- </div>
29
- <?php } ?>
30
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/control.php DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
- /**
3
- * Control template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-control <?php echo esc_attr( $__data['class'] ); ?>">
19
- <?php if ( ! empty( $__data['title'] ) || ! empty( $__data['description'] ) ) { ?>
20
- <div class="cherry-control__info">
21
- <?php if ( ! empty( $__data['title'] ) ) { ?>
22
- <h4 class="cherry-ui-kit__title cherry-control__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h4>
23
- <?php } ?>
24
- <?php if ( ! empty( $__data['description'] ) ) { ?>
25
- <div class="cherry-ui-kit__description cherry-control__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
26
- <?php } ?>
27
- </div>
28
- <?php } ?>
29
- <?php if ( ! empty( $__data['children'] ) ) { ?>
30
- <div class="cherry-ui-kit__content cherry-control__content" role="group" >
31
- <?php echo $__data['children']; ?>
32
- </div>
33
- <?php } ?>
34
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/form.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /**
3
- * Form template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <form class="cherry-form <?php echo esc_attr( $__data['class'] ); ?>" id="<?php echo esc_attr( $__data['id'] ); ?>" name="<?php echo esc_attr( $__data['id'] ); ?>" accept-charset="<?php echo esc_attr( $__data['accept-charset'] ); ?>" action="<?php echo esc_attr( $__data['action'] ); ?>" autocomplete="<?php echo esc_attr( $__data['autocomplete'] ); ?>" enctype="<?php echo esc_attr( $__data['enctype'] ); ?>" method="<?php echo esc_attr( $__data['method'] ); ?>" target="<?php echo esc_attr( $__data['target'] ); ?>" <?php echo esc_attr( $__data['novalidate'] ); ?> >
19
- <?php
20
- if ( ! empty( $__data['children'] ) ) {
21
- echo $__data['children'];
22
- }
23
- ?>
24
- </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/html.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /**
3
- * HTML template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit <?php echo esc_attr( $__data['class'] ); ?>">
19
- <?php if ( ! empty( $__data['children'] ) ) { ?>
20
- <div class="cherry-ui-kit__content" role="group" >
21
- <?php echo $__data['children']; ?>
22
- </div>
23
- <?php } ?>
24
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/section.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Section template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-section <?php echo esc_attr( $__data['class'] ); ?>" onclick="void(0)">
19
- <div class="cherry-section__holder">
20
- <div class="cherry-section__inner">
21
- <div class="cherry-section__info">
22
- <?php if ( ! empty( $__data['title'] ) ) { ?>
23
- <h1 class="cherry-ui-kit__title cherry-section__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h1>
24
- <?php } ?>
25
- <?php if ( ! empty( $__data['description'] ) ) { ?>
26
- <div class="cherry-ui-kit__description cherry-section__description " role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
27
- <?php } ?>
28
- </div>
29
- <?php if ( ! empty( $__data['children'] ) ) { ?>
30
- <div class="cherry-ui-kit__content cherry-section__content" role="group" >
31
- <?php echo $__data['children']; ?>
32
- </div>
33
- <?php } ?>
34
- </div>
35
- </div>
36
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/settings-children-title.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
- /**
3
- * Settings title template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <h3 class="cherry-ui-kit__title cherry-settings__title" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/settings.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- /**
3
- * Settings template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <div class="cherry-ui-kit cherry-settings <?php echo esc_attr( $__data['class'] ); ?>">
19
- <?php if ( ! empty( $__data['title'] ) ) {
20
- echo $__data['title'];
21
- } ?>
22
- <?php if ( ! empty( $__data['children'] ) || ! empty( $__data['description'] ) ) { ?>
23
- <div class="cherry-ui-kit__content cherry-settings__content" role="group" id="<?php echo esc_attr( $__data['id'] ); ?>" >
24
- <?php if ( ! empty( $__data['description'] ) ) { ?>
25
- <div class="cherry-ui-kit__description cherry-settings__description" role="note" ><?php echo wp_kses_post( $__data['description'] ); ?></div>
26
- <?php } ?>
27
- <?php if ( ! empty( $__data['children'] ) ) { ?>
28
- <?php echo $__data['children']; ?>
29
- <?php } ?>
30
- </div>
31
- <?php } ?>
32
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/tab-children-title.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
- /**
3
- * Tabs title template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <button class="cherry-tab__button cherry-component__button" role="button" title="<?php echo esc_attr( $__data['title'] ); ?>" aria-expanded="false" data-content-id="#<?php echo esc_attr( $__data['id'] ); ?>">
19
- <h3 class="cherry-ui-kit__title cherry-tab__title" aria-grabbed="true" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h3>
20
- </button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-interface-builder/inc/views/toggle-children-title.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- /**
3
- * Toggle title template.
4
- *
5
- * @package Cherry_Interface_Builder
6
- * @subpackage Views
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- ?>
18
- <button class="cherry-toggle__header cherry-component__button" role="button" aria-expanded="false" data-content-id="#<?php echo esc_attr( $__data['id'] ); ?>">
19
- <h3 class="cherry-ui-kit__title cherry-toggle__title" aria-grabbed="true" role="banner" ><?php echo wp_kses_post( $__data['title'] ); ?></h3>
20
- <span class="dashicons dashicons-arrow-down hide-icon"></span>
21
- <span class="dashicons dashicons-arrow-up show-icon"></span>
22
- </button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-js-core/assets/js/cherry-js-core.js CHANGED
@@ -70,7 +70,7 @@ var CherryJsCore = {};
70
  expressions: {
71
  widget_ui_init: function() {
72
  $( document ).on( 'widget-added widget-updated', function( event, data ) {
73
- $( 'body' ).trigger( {
74
  type: 'cherry-ui-elements-init',
75
  _target: data
76
  } );
@@ -92,6 +92,61 @@ var CherryJsCore = {};
92
  parent = parent[ parts[ i ] ];
93
  }
94
  return parent;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
96
  }
97
  };
70
  expressions: {
71
  widget_ui_init: function() {
72
  $( document ).on( 'widget-added widget-updated', function( event, data ) {
73
+ $( window ).trigger( {
74
  type: 'cherry-ui-elements-init',
75
  _target: data
76
  } );
92
  parent = parent[ parts[ i ] ];
93
  }
94
  return parent;
95
+ },
96
+ get_compress_assets: function( url, callback ) {
97
+ var data = {
98
+ action: 'get_compress_assets',
99
+ security: CherryJsCore.variable.security,
100
+ style: [],
101
+ script: []
102
+ },
103
+ reg_name = /([\S.]+\/)/gmi,
104
+ reg_type = /(\.js|\.css)/gmi,
105
+ callback_function = callback || function() {};
106
+
107
+ if( !$.isArray( url ) ){
108
+ url = [ url ];
109
+ }
110
+
111
+ for( var index in url ){
112
+ var file_url = url[ index ],
113
+ file_name = file_url.replace( reg_name, '' ),
114
+ file_type = file_url.match( reg_type )[ 0 ];
115
+
116
+ if( '.js' === file_type && -1 === $.inArray( file_name, CherryJsCore.variable.loaded_assets.script ) ){
117
+ data.script.push( file_url );
118
+ CherryJsCore.variable.loaded_assets.script.push( file_name );
119
+ }
120
+
121
+ if( '.css' === file_type && -1 === $.inArray( file_name, CherryJsCore.variable.loaded_assets.style ) ){
122
+ data.style.push( file_url );
123
+ CherryJsCore.variable.loaded_assets.style.push( file_name );
124
+ }
125
+ }
126
+
127
+ $.get( window.ajaxurl, data, function( response ) {
128
+ var json = $.parseJSON(response),
129
+ compressStyle = json.style,
130
+ compressScript = json.script,
131
+ script = null;
132
+
133
+ if(compressStyle){
134
+ var style = document.createElement('style');
135
+
136
+ style.type = 'text/css';
137
+ style.media = 'all';
138
+ style.innerHTML = compressStyle;
139
+
140
+ $('body', document).append(style);
141
+
142
+ }
143
+
144
+ if ( compressScript ) {
145
+ script = new Function( compressScript ) ();
146
+ }
147
+
148
+ return callback_function();
149
+ });
150
  }
151
  }
152
  };
cherry-framework/modules/cherry-js-core/assets/js/min/cherry-js-core.min.js CHANGED
@@ -1 +1 @@
1
- var CherryJsCore={};!function(r){"use strict";CherryJsCore={name:"Cherry Js Core",version:"1.0.0",author:"Cherry Team",variable:{$document:r(document),$window:r(window),browser:r.browser,browser_supported:!0,security:window.cherry_ajax,loaded_assets:{script:window.wp_load_script,style:window.wp_load_style},ui_auto_init:"true"===window.ui_init_object.auto_init?!0:!1,ui_auto_target:window.ui_init_object.targets},status:{on_load:!1,is_ready:!1},init:function(){CherryJsCore.set_variable(),r(document).on("ready",CherryJsCore.ready),r(window).on("load",CherryJsCore.load)},set_variable:function(){CherryJsCore.variable.browser_supported=function(){var r=CherryJsCore.variable.browser,e={msie:[8]};for(var i in e)if("undefined"!==r.browser)for(var o in e[i])if(r.version<=e[i][o])return!1;return!0}()},ready:function(){CherryJsCore.status.is_ready=!0,CherryJsCore.expressions.widget_ui_init()},load:function(){CherryJsCore.status.on_load=!0},expressions:{widget_ui_init:function(){r(document).on("widget-added widget-updated",function(e,i){r("body").trigger({type:"cherry-ui-elements-init",_target:i})})}},utilites:{namespace:function(r){var e=r.split("."),i=CherryJsCore,o=e.length,t=0;for(t=0;o>t;t+=1)"undefined"==typeof i[e[t]]&&(i[e[t]]={}),i=i[e[t]];return i}}},CherryJsCore.init()}(jQuery);
1
+ var CherryJsCore={};!function(e){"use strict";CherryJsCore={name:"Cherry Js Core",version:"1.0.0",author:"Cherry Team",variable:{$document:e(document),$window:e(window),browser:e.browser,browser_supported:!0,security:window.cherry_ajax,loaded_assets:{script:window.wp_load_script,style:window.wp_load_style},ui_auto_init:"true"===window.ui_init_object.auto_init?!0:!1,ui_auto_target:window.ui_init_object.targets},status:{on_load:!1,is_ready:!1},init:function(){CherryJsCore.set_variable(),e(document).on("ready",CherryJsCore.ready),e(window).on("load",CherryJsCore.load)},set_variable:function(){CherryJsCore.variable.browser_supported=function(){var e=CherryJsCore.variable.browser,r={msie:[8]};for(var s in r)if("undefined"!==e.browser)for(var t in r[s])if(e.version<=r[s][t])return!1;return!0}()},ready:function(){CherryJsCore.status.is_ready=!0,CherryJsCore.expressions.widget_ui_init()},load:function(){CherryJsCore.status.on_load=!0},expressions:{widget_ui_init:function(){e(document).on("widget-added widget-updated",function(r,s){e(window).trigger({type:"cherry-ui-elements-init",_target:s})})}},utilites:{namespace:function(e){var r=e.split("."),s=CherryJsCore,t=r.length,i=0;for(i=0;t>i;i+=1)"undefined"==typeof s[r[i]]&&(s[r[i]]={}),s=s[r[i]];return s},get_compress_assets:function(r,s){var t={action:"get_compress_assets",security:CherryJsCore.variable.security,style:[],script:[]},i=/([\S.]+\/)/gim,o=/(\.js|\.css)/gim,a=s||function(){};e.isArray(r)||(r=[r]);for(var n in r){var d=r[n],u=d.replace(i,""),y=d.match(o)[0];".js"===y&&-1===e.inArray(u,CherryJsCore.variable.loaded_assets.script)&&(t.script.push(d),CherryJsCore.variable.loaded_assets.script.push(u)),".css"===y&&-1===e.inArray(u,CherryJsCore.variable.loaded_assets.style)&&(t.style.push(d),CherryJsCore.variable.loaded_assets.style.push(u))}e.get(window.ajaxurl,t,function(r){var s=e.parseJSON(r),t=s.style,i=s.script,o=null;if(t){var n=document.createElement("style");n.type="text/css",n.media="all",n.innerHTML=t,e("body",document).append(n)}return i&&(o=new Function(i)()),a()})}}},CherryJsCore.init()}(jQuery);
cherry-framework/modules/cherry-post-formats-api/assets/js/cherry-post-formats.js DELETED
@@ -1,68 +0,0 @@
1
- /**
2
- * Post formats related scripts
3
- * @use CherryJsCore
4
- */
5
- ( function($, CherryJsCore){
6
- 'use strict';
7
-
8
- CherryJsCore.utilites.namespace( 'post_formats' );
9
- CherryJsCore.post_formats = {
10
-
11
- init: function () {
12
-
13
- var self = this;
14
-
15
- if ( CherryJsCore.status.document_ready ) {
16
- self.render( self );
17
- } else {
18
- CherryJsCore.variable.$document.on( 'ready', self.render( self ) );
19
- }
20
- },
21
-
22
- render: function ( self ) {
23
-
24
- // Init slider scripts
25
- self.initalize( 'slider' );
26
-
27
- // Init popup scripts
28
- self.initalize( 'popup' );
29
-
30
- },
31
-
32
- initalize: function( object ) {
33
-
34
- $(window).load(function () {
35
-
36
- $( '*[data-cherry' + object + '="1"]' ).each( function() {
37
- var plugin = $( this ).data( object ),
38
- init = $( this ).data( 'init' );
39
-
40
- $( this ).data( 'initalized', false );
41
- $( this ).trigger({
42
- type: 'cherry-post-formats-custom-init',
43
- item: $( this ),
44
- object: object
45
- });
46
-
47
- if ( true === $( this ).data( 'initalized' ) ) {
48
- return 1;
49
- }
50
-
51
- if ( ! plugin ) {
52
- return !1;
53
- }
54
-
55
- if ( ! $.isFunction( jQuery.fn[ plugin ] ) ) {
56
- return !1;
57
- }
58
-
59
- $( this )[ plugin ]( init );
60
- });
61
- });
62
-
63
- }
64
- };
65
-
66
- CherryJsCore.post_formats.init();
67
-
68
- } (jQuery, window.CherryJsCore) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-post-formats-api/assets/js/min/cherry-post-formats.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t,i){"use strict";i.utilites.namespace("post_formats"),i.post_formats={init:function(){var t=this;i.status.document_ready?t.render(t):i.variable.$document.on("ready",t.render(t))},render:function(t){t.initalize("slider"),t.initalize("popup")},initalize:function(i){t(window).load(function(){t("*[data-cherry"+i+'="1"]').each(function(){var n=t(this).data(i),e=t(this).data("init");return t(this).data("initalized",!1),t(this).trigger({type:"cherry-post-formats-custom-init",item:t(this),object:i}),!0===t(this).data("initalized")?1:n?t.isFunction(jQuery.fn[n])?(t(this)[n](e),void 0):!1:!1})})}},i.post_formats.init()}(jQuery,window.CherryJsCore);
 
cherry-framework/modules/cherry-post-formats-api/cherry-post-formats-api.php DELETED
@@ -1,1096 +0,0 @@
1
- <?php
2
- /**
3
- * API functions for post formats specific content
4
- * Module Name: Post Formats API
5
- * Description: API for post formats specific content
6
- * Version: 1.1.2
7
- * Author: Cherry Team
8
- * Author URI: http://www.cherryframework.com/
9
- * License: GPLv3
10
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
- *
12
- * @package Cherry_Framework
13
- * @subpackage Modules
14
- * @version 1.1.2
15
- * @author Cherry Team <cherryframework@gmail.com>
16
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
17
- * @link http://www.cherryframework.com/
18
- * @license http://www.gnu.org/licenses/gpl-3.0.html
19
- */
20
-
21
- // If this file is called directly, abort.
22
- if ( ! defined( 'WPINC' ) ) {
23
- die;
24
- }
25
-
26
- if ( ! class_exists( 'Cherry_Post_Formats_Api' ) ) {
27
-
28
- /**
29
- * API functions for post formats specific content
30
- */
31
- class Cherry_Post_Formats_Api {
32
-
33
- /**
34
- * Module version
35
- *
36
- * @var string
37
- */
38
- public $module_version = '1.1.0';
39
-
40
- /**
41
- * Module slug
42
- *
43
- * @var string
44
- */
45
- public $module_slug = 'cherry-post-formats-api';
46
-
47
- /**
48
- * Module arguments
49
- *
50
- * @var array
51
- */
52
- public $args = array();
53
-
54
- /**
55
- * Core instance
56
- *
57
- * @var object
58
- */
59
- public $core = null;
60
-
61
- /**
62
- * Constructor for the module
63
- */
64
- function __construct( $core, $args ) {
65
-
66
- $this->core = $core;
67
- $this->args = wp_parse_args( $args, array(
68
- 'rewrite_default_gallery' => false,
69
- 'gallery_args' => array(),
70
- 'image_args' => array(),
71
- 'link_args' => array(),
72
- 'video_args' => array(),
73
- ) );
74
-
75
- $this->args['gallery_args'] = wp_parse_args( $this->args['gallery_args'], array(
76
- 'base_class' => 'post-gallery',
77
- 'container' => '<div class="%2$s" %3$s>%1$s</div>',
78
- 'slide' => '<figure class="%2$s">%1$s</figure>',
79
- 'slide_item' => '<a href="%3$s" %4$s>%1$s</a>%2$s',
80
- 'slide_item_alt' => '%1$s%2$s',
81
- 'img_class' => '',
82
- 'size' => 'post-thumbnail',
83
- 'link' => 'file',
84
- 'slider' => false,
85
- 'slider_init' => false,
86
- 'slider_handle' => false,
87
- 'popup' => false,
88
- 'popup_init' => false,
89
- 'popup_handle' => false,
90
- ) );
91
-
92
- $this->args['image_args'] = wp_parse_args( $this->args['image_args'], array(
93
- 'base_class' => 'post-thumbnail',
94
- 'container' => '<figure class="%2$s">%1$s</figure>',
95
- 'item' => '<a href="%3$s" class="%2$s" %4$s>%1$s</a>',
96
- 'size' => 'post-thumbnail',
97
- 'link' => 'file',
98
- 'popup' => false,
99
- 'popup_init' => false,
100
- 'popup_handle' => false,
101
- ) );
102
-
103
- $this->args['link_args'] = wp_parse_args( $this->args['link_args'], array(
104
- 'render' => false,
105
- 'class' => '',
106
- ) );
107
-
108
- $this->args['video_args'] = wp_parse_args( $this->args['video_args'], array(
109
- 'width' => 600,
110
- 'height' => 400,
111
- ) );
112
-
113
- $formats = array(
114
- 'image',
115
- 'gallery',
116
- 'video',
117
- 'audio',
118
- 'link',
119
- 'quote',
120
- 'status',
121
- );
122
-
123
- // Register default post formats
124
- foreach ( $formats as $format ) {
125
- add_action( 'cherry_post_format_' . $format, array( $this, 'post_format_' . $format ) );
126
- }
127
-
128
- // Register an embed post formats
129
- add_filter( 'cherry_get_embed_post_formats', array( $this, 'embed_post_formats' ), 10, 2 );
130
-
131
- if ( true === $this->args['rewrite_default_gallery'] ) {
132
- // Replace gallery shortcode
133
- add_filter( 'post_gallery', array( $this, 'gallery_shortcode' ), 10, 3 );
134
- }
135
-
136
- add_action( 'wp_enqueue_scripts', array( $this, 'assets' ) );
137
-
138
- $this->includes();
139
-
140
- }
141
-
142
- /**
143
- * Register extra post formats rendering.
144
- * Currently supported - facebook, twitter, soundcloud.
145
- *
146
- * @param bool $embed Default embed value - false.
147
- * @return string|bool
148
- */
149
- public function embed_post_formats( $embed, $args = array() ) {
150
-
151
- $args = wp_parse_args( $args, array(
152
- 'fields' => array(),
153
- 'width' => 350,
154
- 'height' => 350,
155
- ) );
156
-
157
- if ( empty( $args['fields'] ) ) {
158
- return $embed;
159
- }
160
-
161
- $extra_formats = array(
162
- 'twitter' => 'https://twitter.com',
163
- 'facebook' => 'https://www.facebook.com',
164
- 'soundcloud' => 'https://soundcloud.com',
165
- );
166
-
167
- global $post;
168
-
169
- if ( ! $post ) {
170
- return $embed;
171
- }
172
-
173
- $excerpt = substr( $post->post_content, 0, 200 );
174
-
175
- foreach ( $args['fields'] as $name ) {
176
-
177
- $trigger = isset( $extra_formats[ $name ] ) ? $extra_formats[ $name ] : '';
178
-
179
- if ( ! $trigger ) {
180
- return $embed;
181
- }
182
-
183
- if ( false === strpos( $excerpt, $trigger ) ) {
184
- continue;
185
- }
186
-
187
- $url = $this->get_content_url( $post->post_content );
188
-
189
- if ( ! empty( $url ) ) {
190
- return wp_oembed_get( $url, $args );
191
- }
192
- }
193
-
194
- return $embed;
195
-
196
- }
197
-
198
- /**
199
- * Include required API files
200
- *
201
- * @since 1.0.0
202
- * @since 1.1.1 Using dirname( __FILE__ ) instead of __DIR__.
203
- * @return void
204
- */
205
- public function includes() {
206
- require_once dirname( __FILE__ ) . '/inc/class-cherry-facebook-embed.php';
207
-
208
- // Register Facebook Embed.
209
- if ( class_exists( 'Cherry_Facebook_Embed' ) ) {
210
- Cherry_Facebook_Embed::get_instance();
211
- }
212
- }
213
-
214
- /**
215
- * Enqueue required assets
216
- *
217
- * @since 1.0.0
218
- * @return void
219
- */
220
- public function assets() {
221
- wp_enqueue_script(
222
- 'cherry-post-formats',
223
- Cherry_Core::base_url( 'assets/js/min/cherry-post-formats.min.js', __FILE__ ),
224
- array( 'jquery', 'cherry-js-core' ),
225
- $this->module_version,
226
- true
227
- );
228
- }
229
-
230
- /**
231
- * If did not find a URL, check the post content for one. If nothing is found, return the post permalink.
232
- *
233
- * @author Justin Tadlock <justin@justintadlock.com>
234
- * @author Cherry Team <support@cherryframework.com>
235
- * @since 1.0.0
236
- * @param array $args API arguments.
237
- * @param object $post Post object.
238
- * @return string
239
- */
240
- public function get_post_format_link( $args = array(), $post = null ) {
241
-
242
- $args = wp_parse_args( $args, $this->args['link_args'] );
243
-
244
- $post = is_null( $post ) ? get_post() : $post;
245
- $content_url = $this->get_content_url( $post->post_content );
246
- $url = ! empty( $content_url ) ? $content_url : get_permalink( $post->ID );
247
-
248
- if ( false === $args['render'] ) {
249
- return esc_url( $url );
250
- } else {
251
- return sprintf(
252
- '<a href="%1$s" class="post-format-link %2$s">%1$s</a>',
253
- esc_url( $url ), esc_attr( $args['class'] )
254
- );
255
- }
256
-
257
- }
258
-
259
- /**
260
- * Callback for apropriate hook to show link post format related link.
261
- *
262
- * @since 1.0.0
263
- * @param array $args Set of arguments.
264
- */
265
- public function post_format_link( $args = array() ) {
266
-
267
- echo $this->get_post_format_link( $args );
268
-
269
- }
270
-
271
- /**
272
- * Returns first blockquote from content. If not - returns excerpt.
273
- *
274
- * @author Cherry Team <support@cherryframework.com>
275
- * @since 1.0.0
276
- * @param object $post Post object.
277
- * @return string UblockquoteRL.
278
- */
279
- public function get_post_format_quote( $post = null ) {
280
-
281
- $post = is_null( $post ) ? get_post() : $post;
282
- $quote = $this->get_content_quote( $post->post_content );
283
- $quote = ! empty( $quote ) ? $quote : get_the_excerpt();
284
-
285
- return sprintf( '<blockquote class="post-format-quote">%s</blockquote>', $quote );
286
-
287
- }
288
-
289
- /**
290
- * Callback for apropriate hook to show link post format related link.
291
- *
292
- * @since 1.0.0
293
- * @param array $args Set of arguments.
294
- */
295
- public function post_format_quote( $args ) {
296
-
297
- echo $this->get_post_format_quote();
298
-
299
- }
300
-
301
- /**
302
- * Retrieve a featured audio.
303
- *
304
- * Returns first finded audio tag in page content.
305
- *
306
- * @since 1.0.0
307
- */
308
- public function get_post_format_audio() {
309
-
310
- /**
311
- * Filter post format audio output to rewrite audio from child theme or plugins.
312
- *
313
- * @since 1.0.0
314
- * @param bool|mixed $result Value to return instead of the featured audio.
315
- * Default false to skip it.
316
- */
317
- $result = apply_filters( 'cherry_pre_get_post_audio', false );
318
-
319
- if ( false !== $result ) {
320
- return $result;
321
- }
322
-
323
- $content = get_the_content();
324
- $embeds = get_media_embedded_in_content( apply_filters( 'the_content', $content ), array( 'audio' ) );
325
-
326
- if ( empty( $embeds ) ) {
327
- return false;
328
- }
329
-
330
- if ( false == preg_match( '/<audio[^>]*>(.*?)<\/audio>/', $embeds[0], $matches ) ) {
331
- return false;
332
- }
333
-
334
- /**
335
- * Filter a featured audio.
336
- *
337
- * @since 1.0.0
338
- * @param string $output Featured audio.
339
- */
340
- return apply_filters( 'cherry_get_the_post_audio', $matches[0] );
341
-
342
- }
343
-
344
- /**
345
- * Callback for apropriate hook to show audio post format related audio.
346
- *
347
- * @since 1.0.0
348
- * @param array $args Set of arguments.
349
- */
350
- public function post_format_audio( $args ) {
351
-
352
- echo $this->get_post_format_audio();
353
-
354
- }
355
-
356
- /**
357
- * Retrieve a featured video.
358
- *
359
- * Returns first finded video, iframe, object or embed tag in content.
360
- *
361
- * @since 1.0.0
362
- * @param array $args Set of arguments.
363
- */
364
- public function get_post_format_video( $args ) {
365
-
366
- $args = wp_parse_args( $args, $this->args['video_args'] );
367
-
368
- /**
369
- * Filter post format video output to rewrite video from child theme or plugins.
370
- *
371
- * @since 1.0.0
372
- * @param bool|mixed $result Value to return instead of the featured video.
373
- * Default false to skip it.
374
- */
375
- $result = apply_filters( 'cherry_pre_get_post_video', false );
376
-
377
- if ( false !== $result ) {
378
- return $result;
379
- }
380
-
381
- $post_content = get_the_content();
382
-
383
- if ( has_shortcode( $post_content, 'video' ) ) {
384
- $result_format = '%s';
385
- } else {
386
- $result_format = '<div class="entry-video embed-responsive embed-responsive-16by9">%s</div>';
387
- }
388
-
389
- /** This filter is documented in wp-includes/post-template.php */
390
- $content = apply_filters( 'the_content', $post_content );
391
- $types = array( 'video', 'object', 'embed', 'iframe' );
392
- $embeds = get_media_embedded_in_content( $content, $types );
393
-
394
- if ( empty( $embeds ) ) {
395
- return;
396
- }
397
-
398
- foreach ( $types as $tag ) {
399
- if ( preg_match( "/<{$tag}[^>]*>(.*?)<\/{$tag}>/", $embeds[0], $matches ) ) {
400
- $result = $matches[0];
401
- break;
402
- }
403
- }
404
-
405
- if ( false === $result ) {
406
- return false;
407
- }
408
-
409
- $regex = array(
410
- '/width=[\'\"](\d+)[\'\"]/',
411
- '/height=[\'\"](\d+)[\'\"]/',
412
- );
413
-
414
- $replace = array(
415
- 'width="' . $args['width'] . '"',
416
- 'height="' . $args['height'] . '"',
417
- );
418
-
419
- $result = preg_replace( $regex, $replace, $result );
420
- $result = sprintf( $result_format, $result );
421
-
422
- /**
423
- * Filter a featured video.
424
- *
425
- * @since 1.0.0
426
- * @param string $result Featured video.
427
- */
428
- return apply_filters( 'cherry_get_the_post_video', $result );
429
-
430
- }
431
-
432
- /**
433
- * Callback for apropriate hook to show video post format related video.
434
- *
435
- * @since 1.0.0
436
- * @param array $args Set of arguments.
437
- */
438
- public function post_format_video( $args = array() ) {
439
-
440
- echo $this->get_post_format_video( $args );
441
-
442
- }
443
-
444
- /**
445
- * Retrieve a featured image.
446
- *
447
- * If has post thumbnail - will get post thumbnail, else - get first image from content.
448
- *
449
- * @since 1.0.0
450
- * @param array $args Set of arguments.
451
- * @return string Featured image.
452
- */
453
- public function get_post_format_image( $args ) {
454
-
455
- /**
456
- * Filter post format image output to rewrite image from child theme or plugins.
457
- *
458
- * @since 1.0.0
459
- * @param bool|mixed $result Value to return instead of the featured image.
460
- * Default false to skip it.
461
- */
462
- $result = apply_filters( 'cherry_pre_get_post_image', false );
463
-
464
- if ( false !== $result ) {
465
- return $result;
466
- }
467
-
468
- $post_id = get_the_ID();
469
- $post_type = get_post_type( $post_id );
470
-
471
- /**
472
- * Filter the default arguments used to display a post image.
473
- *
474
- * @since 1.0.0
475
- * @param array $defaults Array of arguments.
476
- * @param int $post_id The post ID.
477
- * @param string $post_type The post type of the current post.
478
- */
479
- $defaults = apply_filters(
480
- 'cherry_get_the_post_image_defaults',
481
- $this->args['image_args'],
482
- $post_id,
483
- $post_type
484
- );
485
-
486
- $args = wp_parse_args( $args, $defaults );
487
-
488
- /**
489
- * Filter image CSS model
490
- *
491
- * @param array $css_model Default CSS model.
492
- * @param array $args Post formats module arguments.
493
- */
494
- $css_model = apply_filters( 'cherry_post_formats_image_css_model', array(
495
- 'container' => $args['base_class'],
496
- 'link' => $args['base_class'] . '__link',
497
- 'image' => $args['base_class'] . '__img',
498
- ), $args );
499
-
500
- /**
501
- * Filter image attributes array passed to post format image
502
- *
503
- * @since 1.0.0
504
- * @param array existing attributes.
505
- */
506
- $img_atts = apply_filters( 'cherry_post_image_attributes', array( 'class' => $css_model['image'] ) );
507
-
508
- if ( has_post_thumbnail( $post_id ) ) {
509
-
510
- $thumb = get_the_post_thumbnail( $post_id, $args['size'], $img_atts );
511
- $url = wp_get_attachment_url( get_post_thumbnail_id( $post_id ) );
512
-
513
- } else {
514
-
515
- $img = $this->get_post_images();
516
-
517
- if ( ! $img || empty( $img ) || empty( $img[0] ) ) {
518
- return false;
519
-
520
- } elseif ( is_int( $img[0] ) ) {
521
-
522
- $thumb = wp_get_attachment_image( $img[0], $args['size'], 0, $img_atts );
523
- $url = wp_get_attachment_url( $img[0] );
524
-
525
- } else {
526
-
527
- global $_wp_additional_image_sizes;
528
-
529
- if ( ! isset( $_wp_additional_image_sizes[ $args['size'] ] ) ) {
530
- return false;
531
- }
532
-
533
- if ( has_excerpt( $post_id ) ) {
534
- $alt = trim( strip_tags( get_the_excerpt() ) );
535
- } else {
536
- $alt = trim( strip_tags( get_the_title( $post_id ) ) );
537
- }
538
-
539
- $default_atts = array(
540
- 'width' => $_wp_additional_image_sizes[ $args['size'] ]['width'],
541
- 'alt' => esc_attr( $alt ),
542
- );
543
-
544
- $img_atts = array_merge( $default_atts, $img_atts );
545
- $thumb = sprintf( '<img src="%s" %s>', esc_url( $img[0] ), $this->prepare_atts( $img_atts ) );
546
- $url = $img[0];
547
-
548
- }
549
- }
550
-
551
- if ( 'file' !== $args['link'] ) {
552
- $url = get_permalink( $post_id );
553
- }
554
-
555
- $data_atts = array( 'data-cherrypopup' => true );
556
-
557
- if ( false !== $args['popup_init'] ) {
558
- $init = json_encode( $args['popup_init'] );
559
- $data_atts['data-init'] = $init;
560
- }
561
-
562
- if ( false !== $args['popup'] ) {
563
- $data_atts['data-popup'] = $args['popup'];
564
- }
565
-
566
- $data_string = $this->prepare_atts( $data_atts );
567
-
568
- if ( ! empty( $args['popup_handle'] ) ) {
569
- wp_enqueue_script( $args['popup_handle'] );
570
- }
571
-
572
- $item = sprintf( $args['item'], $thumb, $css_model['link'], $url, $data_string );
573
- $result = sprintf( $args['container'], $item, $css_model['container'] );
574
-
575
- /**
576
- * Filter a featured image.
577
- *
578
- * @since 1.0.0
579
- * @param string $result Featured image.
580
- * @param array $args Array of arguments.
581
- */
582
- return apply_filters( 'cherry_get_the_post_image', $result, $args );
583
-
584
- }
585
-
586
- /**
587
- * Callback for apropriate hook to show image post format related thumbnail.
588
- *
589
- * @since 1.0.0
590
- * @param array $args Set of arguments.
591
- */
592
- public function post_format_image( $args ) {
593
-
594
- echo $this->get_post_format_image( $args );
595
-
596
- }
597
-
598
- /**
599
- * Retrieve a featured gallery.
600
- *
601
- * If has post thumbnail - will get post thumbnail, else - get first image from content.
602
- *
603
- * @since 1.0.0
604
- * @return string $output Featured gallery.
605
- */
606
- public function get_post_format_gallery( $args ) {
607
-
608
- if ( ! $args ) {
609
- $args = array();
610
- }
611
-
612
- $args = wp_parse_args( $args, $this->args['gallery_args'] );
613
-
614
- /**
615
- * Filter post format gallery output to rewrite gallery from child theme or plugins.
616
- *
617
- * @since 1.0.0
618
- * @param bool|mixed $result Value to return instead of the featured gallery.
619
- * Default false to skip it.
620
- */
621
- $result = apply_filters( 'cherry_pre_get_post_gallery', false );
622
-
623
- if ( false !== $result ) {
624
- return $result;
625
- }
626
-
627
- // First - try to get images from galleries in post.
628
- $is_html = ( true === $this->args['rewrite_default_gallery'] ) ? true : false;
629
-
630
- // Temporary replace default global args with currently parsed
631
- $temp_args = $this->args;
632
- $this->args['gallery_args'] = $args;
633
-
634
- $post_gallery = $this->get_gallery_images( $is_html, $args );
635
-
636
- // Restore default arguments list
637
- $this->args = null;
638
- $this->args = $temp_args;
639
-
640
- // If stanadrd gallery shortcode replaced with cherry - return HTML.
641
- if ( is_string( $post_gallery ) && ! empty( $post_gallery ) ) {
642
- return $post_gallery;
643
- } else if ( empty( $post_gallery ) ) {
644
- return false;
645
- }
646
-
647
- $output = $this->get_gallery_html( $post_gallery, $args );
648
-
649
- /**
650
- * Filter a post gallery.
651
- *
652
- * @since 1.0.0
653
- * @param string $output Post gallery.
654
- */
655
- return apply_filters( 'cherry_get_the_post_gallery', $output );
656
- }
657
-
658
- /**
659
- * Get galeery images list or try to get gallery HTML
660
- *
661
- * @param bool $is_html is HTML returns or not.
662
- * @param array $args argumnets array.
663
- * @return mixed
664
- */
665
- public function get_gallery_images( $is_html, $args = array() ) {
666
-
667
- $post_id = get_the_ID();
668
-
669
- $post_gallery = get_post_gallery( $post_id, $is_html );
670
-
671
- // If stanadrd gallery shortcode replaced with cherry - return HTML.
672
- if ( is_string( $post_gallery ) && ! empty( $post_gallery ) ) {
673
- return $post_gallery;
674
- }
675
-
676
- if ( ! empty( $post_gallery['ids'] ) ) {
677
- $post_gallery = explode( ',', $post_gallery['ids'] );
678
- } elseif ( ! empty( $post_gallery['src'] ) ) {
679
- $post_gallery = $post_gallery['src'];
680
- } else {
681
- $post_gallery = false;
682
- }
683
-
684
- // If can't try to catch images inserted into post.
685
- if ( ! $post_gallery ) {
686
- $post_gallery = $this->get_post_images( $post_id, 15 );
687
- }
688
-
689
- // And if not find any images - try to get images attached to post.
690
- if ( ! $post_gallery || empty( $post_gallery ) ) {
691
-
692
- $attachments = get_children( array(
693
- 'post_parent' => $post_id,
694
- 'posts_per_page' => 3,
695
- 'post_status' => 'inherit',
696
- 'post_type' => 'attachment',
697
- 'post_mime_type' => 'image',
698
- ) );
699
-
700
- if ( $attachments && is_array( $attachments ) ) {
701
- $post_gallery = array_keys( $attachments );
702
- }
703
- }
704
-
705
- return $post_gallery;
706
- }
707
-
708
- /**
709
- * Callback for apropriate hook to show gallery post format related gallery.
710
- *
711
- * @since 1.0.0
712
- * @param array $args Set of arguments.
713
- */
714
- public function post_format_gallery( $args ) {
715
-
716
- echo $this->get_post_format_gallery( $args );
717
-
718
- }
719
-
720
- /**
721
- * Custom output for gallery shortcode.
722
- *
723
- * @since 1.0.0
724
- * @param array $result S Value to return instead of the gallery shortcode.
725
- * @param array $attr Shortcode attributes.
726
- * @return string Gallery HTML.
727
- */
728
- public function gallery_shortcode( $result, $attr ) {
729
-
730
- /**
731
- * Filter a gallery output.
732
- *
733
- * @since 1.0.0
734
- * @param bool|mixed $result Value to return instead of the gallery shortcode. Default false to skip it.
735
- * @param array $attr Shortcode attributes.
736
- * @param object $this Current class instance.
737
- */
738
- $result = apply_filters( 'cherry_pre_get_gallery_shortcode', false, $attr, $this );
739
-
740
- if ( false !== $result ) {
741
- return $result;
742
- }
743
-
744
- $post = get_post();
745
-
746
- $atts = shortcode_atts( array(
747
- 'order' => 'ASC',
748
- 'orderby' => 'menu_order ID',
749
- 'id' => $post ? $post->ID : 0,
750
- 'include' => '',
751
- 'exclude' => '',
752
- 'link' => '',
753
- ), $attr, 'gallery' );
754
-
755
- $id = intval( $atts['id'] );
756
-
757
- if ( ! empty( $atts['include'] ) ) {
758
-
759
- $attachments = $this->esc_include_ids( $atts['include'] );
760
-
761
- } elseif ( ! empty( $atts['exclude'] ) ) {
762
-
763
- $attachments = get_children(
764
- array(
765
- 'post_parent' => $id,
766
- 'exclude' => $atts['exclude'],
767
- 'post_status' => 'inherit',
768
- 'post_type' => 'attachment',
769
- 'post_mime_type' => 'image',
770
- 'order' => $atts['order'],
771
- 'orderby' => $atts['orderby'],
772
- )
773
- );
774
- $attachments = array_keys( $attachments );
775
-
776
- } else {
777
-
778
- $attachments = get_children(
779
- array(
780
- 'post_parent' => $id,
781
- 'post_status' => 'inherit',
782
- 'post_type' => 'attachment',
783
- 'post_mime_type' => 'image',
784
- 'order' => $atts['order'],
785
- 'orderby' => $atts['orderby'],
786
- )
787
- );
788
- $attachments = array_keys( $attachments );
789
-
790
- }
791
-
792
- if ( empty( $attachments ) || ! is_array( $attachments ) ) {
793
- return;
794
- }
795
-
796
- $atts = array_merge( $atts, $this->args['gallery_args'] );
797
- $result = $this->get_gallery_html( $attachments, $atts );
798
-
799
- return $result;
800
-
801
- }
802
-
803
- /**
804
- * Build default gallery HTML from images array.
805
- *
806
- * @since 1.0.0
807
- * @param array $images Images array can contain image IDs or URLs.
808
- * @param array $args Shortcode/user attributes array.
809
- * @return string Gallery HTML markup.
810
- */
811
- public function get_gallery_html( $images, $args = array() ) {
812
-
813
- $post_id = get_the_ID();
814
- $post_type = get_post_type( $post_id );
815
-
816
- /**
817
- * Filter the default arguments used to display a post gallery.
818
- *
819
- * @since 1.0.0
820
- * @param array $defaults Array of arguments.
821
- * @param int $post_id The post ID.
822
- * @param string $post_type The post type of the current post.
823
- */
824
- $defaults = apply_filters(
825
- 'cherry_get_the_post_gallery_defaults',
826
- $this->args['gallery_args'],
827
- $post_id,
828
- $post_type
829
- );
830
-
831
- $args = wp_parse_args( $args, $defaults );
832
-
833
- /**
834
- * Filter image CSS model
835
- *
836
- * @param array $css_model Default CSS model.
837
- * @param array $args Post formats module arguments.
838
- */
839
- $css_model = apply_filters( 'cherry_post_formats_gallery_css_model', array(
840
- 'container' => $args['base_class'],
841
- 'slide' => $args['base_class'] . '__slide',
842
- 'link' => $args['base_class'] . '__link',
843
- 'image' => $args['base_class'] . '__image',
844
- 'caption' => $args['base_class'] . '__caption',
845
- ) );
846
-
847
- if ( ! empty( $args['img_class'] ) ) {
848
- $css_model['image'] .= ' ' . esc_attr( $args['img_class'] );
849
- }
850
-
851
- if ( ! empty( $args['slider_handle'] ) ) {
852
- wp_enqueue_script( $args['slider_handle'] );
853
- }
854
-
855
- if ( ! empty( $args['popup_handle'] ) ) {
856
- wp_enqueue_script( $args['popup_handle'] );
857
- }
858
-
859
- $slider_data = array( 'data-cherryslider' => true );
860
- $popup_data = array( 'data-cherrypopup' => true );
861
-
862
- if ( false !== $args['slider'] ) {
863
- $slider_data['data-slider'] = $args['slider'];
864
- }
865
-
866
- if ( false !== $args['slider_init'] ) {
867
- $slider_data['data-init'] = json_encode( $args['slider_init'] );
868
- }
869
-
870
- if ( false !== $args['popup'] ) {
871
- $popup_data['data-popup'] = $args['popup'];
872
- }
873
-
874
- if ( false !== $args['popup_init'] ) {
875
- $popup_data['data-init'] = json_encode( $args['popup_init'] );
876
- }
877
-
878
- $items = array();
879
- $is_first = true;
880
-
881
- foreach ( $images as $img ) {
882
-
883
- $caption = '';
884
-
885
- if ( true === $is_first ) {
886
- $nth_class = '';
887
- $is_first = false;
888
- } else {
889
- $nth_class = ' nth-child';
890
- }
891
-
892
- /**
893
- * Filter image attributes for gallery item image
894
- *
895
- * @since 1.0.0
896
- * @param array existing attributes.
897
- * @param int|string $img current image,
898
- */
899
- $img_atts = apply_filters(
900
- 'cherry_post_gallery_image_attributes',
901
- array( 'class' => $css_model['image'] ),
902
- $img
903
- );
904
-
905
- if ( 0 < intval( $img ) ) {
906
-
907
- $image = wp_get_attachment_image( $img, $args['size'], '', $img_atts );
908
- $attachment = get_post( $img );
909
-
910
- if ( '' === $args['link'] ) {
911
- $url = get_permalink( $img );
912
- } else {
913
- $url = wp_get_attachment_url( $img );
914
- }
915
-
916
- if ( ! empty( $attachment->post_excerpt ) ) {
917
- $capt_txt = wptexturize( $attachment->post_excerpt );
918
- $caption = '<figcaption class="' . $css_model['caption'] . '">' . $capt_txt . '</figcaption>';
919
- }
920
- } else {
921
-
922
- global $_wp_additional_image_sizes;
923
-
924
- if ( ! isset( $_wp_additional_image_sizes[ $args['size'] ] ) ) {
925
- $width = 'auto';
926
- } else {
927
- $width = $_wp_additional_image_sizes[ $args['size'] ]['width'];
928
- }
929
-
930
- $default_atts = array( 'width' => $width );
931
- $img_atts = array_merge( $default_atts, $img_atts );
932
- $thumb = sprintf( '<img src="%s" %s>', esc_url( $img ), $this->prepare_atts( $img_atts ) );
933
- $url = $img;
934
-
935
- }
936
-
937
- if ( 'none' === $args['link'] ) {
938
- $format = $args['slide_item_alt'];
939
- } else {
940
- $format = $args['slide_item'];
941
- }
942
-
943
- $slide_atts = $this->prepare_atts(
944
- array_merge( array( 'class' => $css_model['link'] . $nth_class ), $popup_data )
945
- );
946
-
947
- $slide_content = sprintf( $format, $image, $caption, $url, $slide_atts );
948
- $items[] = sprintf( $args['slide'], $slide_content, $css_model['slide'] . $nth_class );
949
- }
950
-
951
- $items = implode( "\r\n", $items );
952
-
953
- $slider_data_str = $this->prepare_atts( $slider_data );
954
- $slider_id = 'gallery-' . rand( 100, 999 );
955
-
956
- $result = sprintf(
957
- $args['container'],
958
- $items, $css_model['container'], $slider_data_str, $slider_id
959
- );
960
-
961
- return $result;
962
- }
963
-
964
- /**
965
- * Include IDs set (array or string).
966
- *
967
- * @since 1.1.2
968
- * @param mixed $ids ID's set.
969
- * @return array
970
- */
971
- public function esc_include_ids( $ids ) {
972
-
973
- if ( is_array( $ids ) ) {
974
- return $ids;
975
- } else {
976
- return explode( ',', str_replace( ' ', '', $ids ) );
977
- }
978
-
979
- }
980
-
981
- /**
982
- * Prepare attributes string from array
983
- *
984
- * @since 1.0.0
985
- * @param array $atts attributes array to parse.
986
- * @return string
987
- */
988
- public function prepare_atts( $atts ) {
989
-
990
- $result = '';
991
-
992
- if ( empty( $atts ) ) {
993
- return '';
994
- }
995
-
996
- foreach ( $atts as $attr => $value ) {
997
- $result .= ' ' . $attr . '=\'' . esc_attr( $value ) . '\'';
998
- }
999
-
1000
- return $result;
1001
-
1002
- }
1003
-
1004
- /**
1005
- * Retrieve images from post content.
1006
- *
1007
- * Returns image ID's if can find this image in database,
1008
- * returns image URL or boolean false in other case.
1009
- *
1010
- * @since 1.0.0
1011
- * @param int $post_id Post ID to search image in.
1012
- * @param int $limit Max images count to search.
1013
- * @return mixed Images.
1014
- */
1015
- public function get_post_images( $post_id = null, $limit = 1 ) {
1016
-
1017
- $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
1018
- $content = get_the_content();
1019
-
1020
- // Gets first image from content.
1021
- preg_match_all( '/< *img[^>]*src *= *["\']?([^"\']*)/i', $content, $matches );
1022
-
1023
- if ( ! isset( $matches[1] ) ) {
1024
- return false;
1025
- }
1026
-
1027
- $result = array();
1028
-
1029
- global $wpdb;
1030
-
1031
- for ( $i = 0; $i < $limit; $i++ ) {
1032
-
1033
- if ( empty( $matches[1][ $i ] ) ) {
1034
- continue;
1035
- }
1036
-
1037
- $image_src = esc_url( $matches[1][ $i ] );
1038
- $image_src = preg_replace( '/^(.+)(-\d+x\d+)(\..+)$/', '$1$3', $image_src );
1039
-
1040
- // Try to get current image ID.
1041
- $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE guid = %s", $image_src ) );
1042
-
1043
- if ( ! $id ) {
1044
- $result[] = $image_src;
1045
- } else {
1046
- $result[] = (int) $id;
1047
- }
1048
- }
1049
-
1050
- return $result;
1051
- }
1052
-
1053
- /**
1054
- * Gets the first URL from the content, even if it's not wrapped in an <a> tag.
1055
- *
1056
- * @author Justin Tadlock <justin@justintadlock.com>
1057
- * @author Cherry Team <support@cherryframework.com>
1058
- * @since 1.0.0
1059
- * @param [type] $content Post content.
1060
- * @return string URL.
1061
- */
1062
- public function get_content_url( $content ) {
1063
-
1064
- // Catch links that are not wrapped in an '<a>' tag.
1065
- preg_match( '/<a\s[^>]*?href=[\'"](.+?)[\'"]/is', make_clickable( $content ), $matches );
1066
-
1067
- return ! empty( $matches[1] ) ? esc_url_raw( $matches[1] ) : '';
1068
- }
1069
-
1070
- /**
1071
- * Gets the first blockquote from post content.
1072
- *
1073
- * @author Cherry Team <support@cherryframework.com>
1074
- * @since 1.0.0
1075
- * @param [type] $content Post content.
1076
- * @return string Quote.
1077
- */
1078
- public function get_content_quote( $content ) {
1079
-
1080
- // Catch links that are not wrapped in an '<a>' tag.
1081
- preg_match( '/<blockquote[^>]*>(.*?)<\/blockquote>/im', $content, $matches );
1082
-
1083
- return ! empty( $matches[1] ) ? wp_kses_post( $matches[1] ) : '';
1084
- }
1085
-
1086
- /**
1087
- * Returns the instance.
1088
- *
1089
- * @since 1.0.0
1090
- * @return object
1091
- */
1092
- public static function get_instance( $core, $args ) {
1093
- return new self( $core, $args );
1094
- }
1095
- }
1096
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-post-formats-api/inc/class-cherry-facebook-embed.php DELETED
@@ -1,81 +0,0 @@
1
- <?php
2
- /**
3
- * Facebook embed
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'Cherry_Facebook_Embed' ) ) {
19
-
20
- /**
21
- * Define Cherry_Facebook_Embed class
22
- */
23
- class Cherry_Facebook_Embed {
24
-
25
- /**
26
- * A reference to an instance of this class.
27
- *
28
- * @since 1.0.0
29
- * @var object
30
- */
31
- private static $instance = null;
32
-
33
- /**
34
- * Constructor for the class
35
- */
36
- function __construct() {
37
- add_filter( 'init', array( $this, 'add_facebook' ) );
38
- }
39
-
40
- /**
41
- * Register Facebook provider
42
- *
43
- * @since 1.0.0
44
- * @param array $providers Existing providers.
45
- */
46
- public function add_facebook( $providers ) {
47
-
48
- $endpoints = array(
49
- '#https?://www\.facebook\.com/video.php.*#i' => 'https://www.facebook.com/plugins/video/oembed.json/',
50
- '#https?://www\.facebook\.com/.*/videos/.*#i' => 'https://www.facebook.com/plugins/video/oembed.json/',
51
- '#https?://www\.facebook\.com/.*/posts/.*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
52
- '#https?://www\.facebook\.com/.*/activity/.*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
53
- '#https?://www\.facebook\.com/photo(s/|.php).*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
54
- '#https?://www\.facebook\.com/permalink.php.*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
55
- '#https?://www\.facebook\.com/media/.*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
56
- '#https?://www\.facebook\.com/questions/.*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
57
- '#https?://www\.facebook\.com/notes/.*#i' => 'https://www.facebook.com/plugins/post/oembed.json/',
58
- );
59
-
60
- foreach ( $endpoints as $pattern => $endpoint ) {
61
- wp_oembed_add_provider( $pattern, $endpoint, true );
62
- }
63
- }
64
-
65
- /**
66
- * Returns the instance.
67
- *
68
- * @since 1.0.0
69
- * @return object
70
- */
71
- public static function get_instance() {
72
-
73
- // If the single instance hasn't been set, set it now.
74
- if ( null == self::$instance ) {
75
- self::$instance = new self;
76
- }
77
- return self::$instance;
78
- }
79
- }
80
-
81
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-post-meta/cherry-post-meta.php DELETED
@@ -1,547 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Post Meta
4
- * Description: Manage post meta
5
- * Version: 1.2.1
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.2.1
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Post_Meta' ) ) {
26
-
27
- /**
28
- * Post meta management module.
29
- *
30
- * @since 1.0.0
31
- * @since 1.0.2 Removed `module_directory` property.
32
- */
33
- class Cherry_Post_Meta {
34
-
35
- /**
36
- * Module slug.
37
- *
38
- * @var string
39
- */
40
- public $module_slug = 'cherry-post-meta';
41
-
42
- /**
43
- * Module arguments.
44
- *
45
- * @var array
46
- */
47
- public $args = array();
48
-
49
- /**
50
- * Interface builder instance.
51
- *
52
- * @var object
53
- */
54
- public $builder = null;
55
-
56
- /**
57
- * Core instance.
58
- *
59
- * @var object
60
- */
61
- public $core = null;
62
-
63
- /**
64
- * Current nonce name to check.
65
- *
66
- * @var null
67
- */
68
- public $nonce = 'cherry-meta-nonce';
69
-
70
- /**
71
- * Storage of meta values.
72
- *
73
- * @since 1.0.0
74
- * @var array
75
- */
76
- public $meta_values = array();
77
-
78
- /**
79
- * Constructor for the module.
80
- *
81
- * @since 1.0.0
82
- */
83
- public function __construct( $core, $args ) {
84
- $this->core = $core;
85
- $this->args = wp_parse_args(
86
- $args,
87
- array(
88
- 'id' => 'cherry-post-metabox',
89
- 'title' => '',
90
- 'page' => array( 'post' ),
91
- 'context' => 'normal',
92
- 'priority' => 'high',
93
- 'single' => false,
94
- 'callback_args' => false,
95
- 'fields' => array(),
96
- )
97
- );
98
-
99
- if ( empty( $this->args['fields'] ) ) {
100
- return;
101
- }
102
-
103
- $this->builder = $this->core->init_module( 'cherry-interface-builder', array() );
104
-
105
- $this->init_columns_actions();
106
-
107
- if ( ! $this->builder ) {
108
- return;
109
- }
110
-
111
- add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 10, 2 );
112
- add_action( 'save_post', array( $this, 'save_meta' ), 10, 2 );
113
-
114
- }
115
-
116
- /**
117
- * Initalize admin columns
118
- *
119
- * @return void
120
- */
121
- public function init_columns_actions() {
122
-
123
- if ( empty( $this->args['admin_columns'] ) ) {
124
- return;
125
- }
126
-
127
- if ( ! is_array( $this->args['page'] ) ) {
128
- $pages = array( $this->args['page'] );
129
- } else {
130
- $pages = $this->args['page'];
131
- }
132
-
133
- foreach ( $pages as $page ) {
134
- add_filter( 'manage_edit-' . $page . '_columns', array( $this, 'edit_columns' ) );
135
- add_action( 'manage_' . $page . '_posts_custom_column', array( $this, 'manage_columns' ), 10, 2 );
136
- }
137
-
138
- }
139
-
140
- /**
141
- * Edit admin columns
142
- *
143
- * @since 1.1.3
144
- * @param array $columns current post table columns.
145
- * @return array
146
- */
147
- public function edit_columns( $columns ) {
148
-
149
- foreach ( $this->args['admin_columns'] as $column_key => $column_data ) {
150
-
151
- if ( empty( $column_data['label'] ) ) {
152
- continue;
153
- }
154
-
155
- if ( ! empty( $column_data['position'] ) && 0 !== (int) $column_data['position'] ) {
156
-
157
- $length = count( $columns );
158
-
159
- if ( (int) $column_data['position'] > $length ) {
160
- $columns[ $column_key ] = $column_data['label'];
161
- }
162
-
163
- $columns_before = array_slice( $columns, 0, (int) $column_data['position'] );
164
- $columns_after = array_slice( $columns, (int) $column_data['position'], $length - (int) $column_data['position'] );
165
-
166
- $columns = array_merge(
167
- $columns_before,
168
- array( $column_key => $column_data['label'] ),
169
- $columns_after
170
- );
171
- } else {
172
- $columns[ $column_key ] = $column_data['label'];
173
- }
174
- }
175
-
176
- return $columns;
177
-
178
- }
179
-
180
- /**
181
- * Add output for custom columns.
182
- *
183
- * @since 1.1.3
184
- * @param string $column current post list categories.
185
- * @param int $post_id current post ID.
186
- * @return void
187
- */
188
- public function manage_columns( $column, $post_id ) {
189
-
190
- if ( empty( $this->args['admin_columns'][ $column ] ) ) {
191
- return;
192
- }
193
-
194
- if ( ! empty( $this->args['admin_columns'][ $column ]['callback'] ) && is_callable( $this->args['admin_columns'][ $column ]['callback'] ) ) {
195
- call_user_func( $this->args['admin_columns'][ $column ]['callback'], $column, $post_id );
196
- } else {
197
- echo get_post_meta( $post_id, $column, true );
198
- }
199
-
200
- }
201
-
202
- /**
203
- * Check if defined metabox is allowed on current page
204
- *
205
- * @since 1.0.0
206
- * @return boolean
207
- */
208
- public function is_allowed_page() {
209
-
210
- global $current_screen;
211
-
212
- if ( empty( $current_screen ) ) {
213
- return false;
214
- }
215
-
216
- if ( is_array( $this->args['page'] ) && ! in_array( $current_screen->id, $this->args['page'] ) ) {
217
- return false;
218
- }
219
-
220
- if ( is_string( $this->args['page'] ) && $current_screen->id !== $this->args['page'] ) {
221
- return false;
222
- }
223
-
224
- return true;
225
- }
226
-
227
- /**
228
- * Add meta box handler
229
- *
230
- * @since 1.0.0
231
- * @param [type] $post_type The post type of the current post being edited.
232
- * @param object $post The current post object.
233
- * @return void
234
- */
235
- public function add_meta_boxes( $post_type, $post ) {
236
-
237
- if ( ! $this->is_allowed_page() ) {
238
- return;
239
- }
240
-
241
- add_meta_box(
242
- $this->args['id'],
243
- $this->args['title'],
244
- array( $this, 'render_metabox' ),
245
- $this->args['page'],
246
- $this->args['context'],
247
- $this->args['priority'],
248
- $this->args['callback_args']
249
- );
250
- }
251
-
252
- /**
253
- * Render metabox funciton
254
- *
255
- * @since 1.0.0
256
- * @param object $post The post object currently being edited.
257
- * @param array $metabox Specific information about the meta box being loaded.
258
- * @return void
259
- */
260
- public function render_metabox( $post, $metabox ) {
261
-
262
- /**
263
- * Filter custom metabox output. Prevent from showing main box, if user output passed
264
- *
265
- * @var string
266
- */
267
- $custom_box = apply_filters( 'cherry_post_meta_custom_box', false, $post, $metabox );
268
-
269
- if ( false !== $custom_box ) {
270
- echo $custom_box;
271
- return;
272
- }
273
-
274
- wp_nonce_field( $this->nonce, $this->nonce );
275
-
276
- /**
277
- * Hook fires before metabox output started.
278
- */
279
- do_action( 'cherry_post_meta_box_before' );
280
-
281
- $this->get_fields( $post );
282
-
283
- /**
284
- * Hook fires after metabox output finished.
285
- */
286
- do_action( 'cherry_post_meta_box_after' );
287
-
288
- }
289
-
290
- /**
291
- * Get registered control fields
292
- *
293
- * @since 1.0.0
294
- * @since 1.1.3 Using dirname( __FILE__ ) instead of __DIR__.
295
- * @since 1.2.0 Use interface builder for HTML rendering.
296
- *
297
- * @param mixed $post Current post object.
298
- * @return void
299
- */
300
- public function get_fields( $post ) {
301
-
302
- if ( is_array( $this->args['single'] ) && isset( $this->args['single']['key'] ) ) {
303
- $this->meta_values = get_post_meta( $post->ID, $this->args['single']['key'], true );
304
- }
305
-
306
- $zero_allowed = apply_filters(
307
- 'cherry_zero_allowed_controls',
308
- array(
309
- 'stepper',
310
- 'slider',
311
- )
312
- );
313
-
314
- foreach ( $this->args['fields'] as $key => $field ) {
315
-
316
- $default = Cherry_Toolkit::get_arg( $field, 'value', '' );
317
- $value = $this->get_meta( $post, $key, $default );
318
-
319
- if ( isset( $field['options_callback'] ) ) {
320
- $field['options'] = call_user_func( $field['options_callback'] );
321
- }
322
-
323
- $element = Cherry_Toolkit::get_arg( $field, 'element', 'control' );
324
- $field['id'] = Cherry_Toolkit::get_arg( $field, 'id', $key );
325
- $field['name'] = Cherry_Toolkit::get_arg( $field, 'name', $key );
326
- $field['type'] = Cherry_Toolkit::get_arg( $field, 'type', '' );
327
- $field['value'] = $value;
328
-
329
- // Fix zero values for stepper and slider
330
- if ( ! $value && in_array( $field['type'], $zero_allowed ) ) {
331
- $field['value'] = 0;
332
- }
333
-
334
- $register_callback = 'register_' . $element;
335
-
336
- if ( method_exists( $this->builder, $register_callback ) ) {
337
- call_user_func( array( $this->builder, $register_callback ), $field );
338
- }
339
- }
340
-
341
- $this->builder->render();
342
- }
343
-
344
- /**
345
- * Save additional taxonomy meta on edit or create tax
346
- *
347
- * @since 1.0.0
348
- * @param int $post_id The ID of the current post being saved.
349
- * @param object $post The post object currently being saved.
350
- * @return void|int
351
- */
352
- public function save_meta( $post_id, $post = '' ) {
353
-
354
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
355
- return;
356
- }
357
-
358
- if ( ! isset( $_POST[ $this->nonce ] ) || ! wp_verify_nonce( $_POST[ $this->nonce ], $this->nonce ) ) {
359
- return;
360
- }
361
-
362
- $posts = ! empty( $this->args['page'] ) ? $this->args['page'] : array( 'post' );
363
- $posts = is_array( $posts ) ? $posts : array( $posts );
364
-
365
- $maybe_break = false;
366
-
367
- foreach ( $posts as $post_type ) {
368
-
369
- if ( get_post_type( $post_id ) !== $post_type ) {
370
- $maybe_break = true;
371
- continue;
372
- }
373
-
374
- $maybe_break = false;
375
- $obj = get_post_type_object( $post_type );
376
-
377
- if ( ! isset( $obj->cap->edit_posts ) || ! current_user_can( $obj->cap->edit_posts ) ) {
378
- $maybe_break = true;
379
- continue;
380
- }
381
-
382
- break;
383
- }
384
-
385
- if ( true === $maybe_break ) {
386
- return;
387
- }
388
-
389
- if ( ! $this->is_allowed_page() ) {
390
- return;
391
- }
392
-
393
- if ( ! is_object( $post ) ) {
394
- $post = get_post();
395
- }
396
-
397
- /**
398
- * Hook on current metabox saving
399
- */
400
- do_action( 'cherry_save_meta_' . $this->args['id'] );
401
-
402
- if ( is_array( $this->args['single'] ) && isset( $this->args['single']['key'] ) ) {
403
- $this->save_meta_mod( $post_id );
404
- } else {
405
- $this->save_meta_option( $post_id );
406
- }
407
-
408
- }
409
-
410
- /**
411
- * Save all meta values as a one array value in `wp_postmeta` table.
412
- *
413
- * @since 1.1.0
414
- * @param int $post_id Post ID.
415
- */
416
- public function save_meta_mod( $post_id ) {
417
- $meta_key = $this->args['single']['key'];
418
-
419
- // Array of new post meta value.
420
- $new_meta_value = array();
421
-
422
- if ( empty( $_POST[ $meta_key ] ) ) {
423
- return;
424
- }
425
-
426
- foreach ( $_POST[ $meta_key ] as $key => $value ) {
427
-
428
- $new_meta_value[ $key ] = $this->sanitize_meta( $key, $value );
429
- }
430
-
431
- // Get current post meta data.
432
- $meta_value = get_post_meta( $post_id, $meta_key, true );
433
-
434
- if ( $new_meta_value && '' == $meta_value ) {
435
- add_post_meta( $post_id, $meta_key, $new_meta_value, true );
436
- } elseif ( $new_meta_value && $new_meta_value != $meta_value ) {
437
- update_post_meta( $post_id, $meta_key, $new_meta_value );
438
- } elseif ( empty( $new_meta_value ) && $meta_value ) {
439
- delete_post_meta( $post_id, $meta_key, $meta_value );
440
- }
441
- }
442
-
443
- /**
444
- * Save each meta value as a single value in `wp_postmeta` table.
445
- *
446
- * @since 1.1.0
447
- * @param int $post_id Post ID.
448
- */
449
- public function save_meta_option( $post_id ) {
450
-
451
- foreach ( $this->args['fields'] as $key => $field ) {
452
-
453
- if ( isset( $field['element'] ) && 'control' !== $field['element'] ) {
454
- continue;
455
- }
456
-
457
- if ( empty( $_POST[ $key ] ) ) {
458
- update_post_meta( $post_id, $key, false );
459
- continue;
460
- }
461
-
462
- $value = $this->sanitize_meta( $key, $_POST[ $key ] );
463
- update_post_meta( $post_id, $key, $value );
464
- }
465
-
466
- }
467
-
468
- /**
469
- * Sanitize passed meta value
470
- *
471
- * @since 1.1.3
472
- * @param string $key Meta key to sanitize.
473
- * @param mixed $value Meta value.
474
- * @return mixed
475
- */
476
- public function sanitize_meta( $key, $value ) {
477
-
478
- if ( empty( $this->args['fields'][ $key ]['sanitize_callback'] ) ) {
479
- return $this->sanitize_deafult( $value );
480
- }
481
-
482
- if ( ! is_callable( $this->args['fields'][ $key ]['sanitize_callback'] ) ) {
483
- return $this->sanitize_deafult( $value );
484
- }
485
-
486
- return call_user_func(
487
- $this->args['fields'][ $key ]['sanitize_callback'],
488
- $value,
489
- $key,
490
- $this->args['fields'][ $key ]
491
- );
492
-
493
- }
494
-
495
- /**
496
- * Cleare value with sanitize_text_field if not is array
497
- *
498
- * @since 1.1.3
499
- * @param mixed $value Passed value.
500
- * @return mixed
501
- */
502
- public function sanitize_deafult( $value ) {
503
- return is_array( $value ) ? $value : sanitize_text_field( $value );
504
- }
505
-
506
- /**
507
- * Retrieve post meta field.
508
- *
509
- * @since 1.1.0
510
- * @since 1.2.0 Process default value.
511
- *
512
- * @param object $post Current post object.
513
- * @param string $key The meta key to retrieve.
514
- * @param mixed $default Default value.
515
- * @return string
516
- */
517
- public function get_meta( $post, $key, $default = false ) {
518
-
519
- if ( ! is_object( $post ) ) {
520
- return '';
521
- }
522
-
523
- if ( is_array( $this->args['single'] ) && isset( $this->args['single']['key'] ) ) {
524
- return isset( $this->meta_values[ $key ] ) ? $this->meta_values[ $key ] : $default;
525
- }
526
-
527
- $meta = get_post_meta( $post->ID, $key, false );
528
-
529
- return ( empty( $meta ) ) ? $default : $meta[0];
530
- }
531
-
532
- /**
533
- * Returns the instance.
534
- *
535
- * @since 1.0.0
536
- * @return object
537
- */
538
- public static function get_instance( $core, $args ) {
539
-
540
- if ( ! is_admin() ) {
541
- return;
542
- }
543
-
544
- return new self( $core, $args );
545
- }
546
- }
547
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-template-manager/cherry-template-manager.php DELETED
@@ -1,129 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Template Manager
4
- * Description: Module load and parse tmpl files.
5
- * Version: 1.0.0
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.0.0
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Template_Manager' ) ) {
26
-
27
- /**
28
- * Class Cherry Template Manager.
29
- *
30
- * @since 1.0.0
31
- */
32
- class Cherry_Template_Manager {
33
-
34
- /**
35
- * A reference to an instance of this class.
36
- *
37
- * @since 1.0.0
38
- * @access private
39
- * @var object
40
- */
41
- private static $instance = null;
42
-
43
- /**
44
- * Module arguments.
45
- *
46
- * @since 1.0.0
47
- * @access private
48
- * @var array
49
- */
50
- private $args = array();
51
-
52
- /**
53
- * It contains a class Cherry_Template_Parser.
54
- *
55
- * @since 1.0.0
56
- * @access public
57
- * @var object
58
- */
59
- public $parser = null;
60
-
61
- /**
62
- * It contains a class Cherry_Template_Loader.
63
- *
64
- * @since 1.0.0
65
- * @access public
66
- * @var object
67
- */
68
- public $loader = null;
69
-
70
- /**
71
- * Cherry_Template_Manager constructor.
72
- *
73
- * @since 1.0.0
74
- * @access public
75
- * @return void
76
- */
77
- public function __construct( $core = null, $args = array() ) {
78
- $this->include_class();
79
-
80
- $this->args = array_merge_recursive(
81
- $args,
82
- $this->args
83
- );
84
-
85
- $this->set_class();
86
- }
87
-
88
- /**
89
- * Include abstract widget class
90
- *
91
- * @since 1.0.0
92
- * @access public
93
- * @return void
94
- */
95
- public function include_class() {
96
- require_once( dirname( __FILE__ ) . '/inc/cherry-template-loader.php' );
97
- require_once( dirname( __FILE__ ) . '/inc/cherry-template-parser.php' );
98
- }
99
-
100
- /**
101
- * Function set the child classes.
102
- *
103
- * @since 1.0.0
104
- * @access public
105
- * @return void
106
- */
107
- public function set_class() {
108
- $this->loader = Cherry_Template_Loader::get_instance( $this->args, $this );
109
- $this->parser = Cherry_Template_Parser::get_instance( $this->args, $this );
110
- }
111
-
112
- /**
113
- * Returns the instance.
114
- *
115
- * @since 1.0.0
116
- * @access public
117
- * @return object
118
- */
119
- public static function get_instance() {
120
-
121
- // If the single instance hasn't been set, set it now.
122
- if ( null == self::$instance ) {
123
- self::$instance = new self;
124
- }
125
-
126
- return self::$instance;
127
- }
128
- }
129
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-template-manager/inc/cherry-template-loader.php DELETED
@@ -1,242 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Template Loader
4
- * Description: Module load tmpl files.
5
- * Version: 1.0.0
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.0.0
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Template_Loader' ) ) {
26
-
27
- /**
28
- * Class Cherry Template Loader.
29
- *
30
- * @since 1.0.0
31
- */
32
- class Cherry_Template_Loader {
33
-
34
- /**
35
- * A reference to an instance of this class.
36
- *
37
- * @since 1.0.0
38
- * @access private
39
- * @var object
40
- */
41
- private static $instance = null;
42
-
43
- /**
44
- * A reference to an instance of this Cherry_Template_Manager class.
45
- *
46
- * @since 1.0.0
47
- * @access private
48
- * @var object
49
- */
50
- private $cherry_template_manager_class = null;
51
-
52
- /**
53
- * Module arguments.
54
- *
55
- * @since 1.0.0
56
- * @access private
57
- * @var array
58
- */
59
- private $args = array(
60
- 'template_dir' => 'templates/%1$s/%2$s.tmpl',
61
- 'slug' => '',
62
- 'upload_dir' => '',
63
- );
64
-
65
- /**
66
- * Cherry_Template_Loader constructor.
67
- *
68
- * @since 1.0.0
69
- * @access public
70
- * @return void
71
- */
72
- public function __construct( $args = array(), $main_class = null ) {
73
-
74
- $this->args = array_merge_recursive(
75
- $args,
76
- $this->args
77
- );
78
-
79
- $this->cherry_template_manager_class = $main_class;
80
-
81
- $this->set_default_variable();
82
- $this->includes_file_system();
83
-
84
- }
85
-
86
- /**
87
- * Set the default variables.
88
- *
89
- * @since 1.0.0
90
- * @access private
91
- * @return void
92
- */
93
- private function set_default_variable() {
94
- if ( ! $this->args['slug'] ) {
95
- $this->args['slug'] = $this->get_slug();
96
- }
97
-
98
- if ( ! $this->args['upload_dir'] ) {
99
- $get_upload_dir = wp_upload_dir();
100
- $this->args['upload_dir'] = trailingslashit( $get_upload_dir['basedir'] );
101
- }
102
- }
103
-
104
- /**
105
- * Function Include file with class WP_Filesystem.
106
- *
107
- * @since 1.0.0
108
- * @access private
109
- * @return void
110
- */
111
- private function includes_file_system() {
112
- if ( ! function_exists( 'WP_Filesystem' ) ) {
113
- include_once( ABSPATH . '/wp-admin/includes/file.php' );
114
- }
115
-
116
- WP_Filesystem();
117
- }
118
-
119
- /**
120
- * Return product slug.
121
- *
122
- * @since 1.0.0
123
- * @since 1.1.3 Using dirname( __FILE__ ) instead of __DIR__.
124
- * @access private
125
- * @return string
126
- */
127
- private function get_slug() {
128
- $file_dir = wp_normalize_path( dirname( __FILE__ ) );
129
- $product_dir = $this->get_project_root();
130
-
131
- $slug = str_replace( $product_dir, '', $file_dir );
132
- preg_match( '/^[a-zA-Z-]*/' , $slug, $slug );
133
-
134
- return $slug[0];
135
- }
136
-
137
- /**
138
- * Function return the project root dir, themes or plugins.
139
- *
140
- * @since 1.0.0
141
- * @since 1.1.3 Using dirname( __FILE__ ) instead of __DIR__.
142
- * @access private
143
- * @return string
144
- */
145
- private function get_project_root() {
146
- $themes_dir = wp_normalize_path( get_theme_root() );
147
- $plugin_dir = wp_normalize_path( WP_PLUGIN_DIR );
148
- $file_dir = wp_normalize_path( dirname( __FILE__ ) );
149
- $project_root = ( false === strpos( $file_dir, $themes_dir ) ) ? $plugin_dir : $themes_dir;
150
-
151
- return trailingslashit( $project_root );
152
- }
153
-
154
- /**
155
- * Retrieve a *.tmpl file content.
156
- *
157
- * @since 1.0.0
158
- * @param string $name File name.
159
- * @access private
160
- * @return string|bool
161
- */
162
- public function get_template_by_name( $name ) {
163
- $file = '';
164
- $template_dir = sprintf( $this->args['template_dir'], $this->args['slug'], $name );
165
- $in_uploads = $this->args['upload_dir'] . $template_dir ;
166
- $in_project = trailingslashit( $this->get_project_root() . $this->args['slug'] ) . $template_dir;
167
-
168
- if ( file_exists( $in_uploads ) ) {
169
- $file = $in_uploads;
170
- } elseif ( $theme_template = locate_template( $template_dir ) ) {
171
- $file = $theme_template;
172
- } else {
173
- $file = $in_project;
174
- }
175
-
176
- if ( ! empty( $file ) ) {
177
- return $this->get_contents( $file );
178
- } else {
179
- return false;
180
- }
181
- }
182
-
183
- /**
184
- * Read template (static).
185
- *
186
- * @since 1.0.0
187
- * @param string $file Correct file path.
188
- * @access public
189
- * @return string|bool
190
- */
191
- public function get_contents( $file ) {
192
- global $wp_filesystem;
193
-
194
- $file = wp_normalize_path( $file );
195
-
196
- // Check for existence.
197
- if ( ! $content = $wp_filesystem->get_contents( $file ) ) {
198
- return false;
199
- }
200
-
201
- if ( ! $content ) {
202
- // Return error object.
203
- return new WP_Error( 'reading_error', 'Error when reading file' );
204
- }
205
-
206
- return $content;
207
- }
208
-
209
- /**
210
- * Returns argument.
211
- *
212
- * @since 1.0.0
213
- * @param string $argument_name Argument name.
214
- * @access public
215
- * @return object
216
- */
217
- public function get_argument( $argument_name ) {
218
- if ( isset( $this->args[ $argument_name ] ) ) {
219
- return $this->args[ $argument_name ];
220
- } else {
221
- return;
222
- }
223
- }
224
-
225
-
226
- /**
227
- * Returns the instance.
228
- *
229
- * @since 1.0.0
230
- * @return object
231
- */
232
- public static function get_instance( $args, $main_class ) {
233
-
234
- // If the single instance hasn't been set, set it now.
235
- if ( null == self::$instance ) {
236
- self::$instance = new self( $args, $main_class );
237
- }
238
-
239
- return self::$instance;
240
- }
241
- }
242
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-template-manager/inc/cherry-template-parser.php DELETED
@@ -1,230 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Template Parser
4
- * Description: Module parsed tmpl files.
5
- * Version: 1.0.0
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.0.0
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Template_Parser' ) ) {
26
-
27
- /**
28
- * Class Cherry Template Parser.
29
- *
30
- * @since 1.0.0
31
- */
32
- class Cherry_Template_Parser {
33
-
34
- /**
35
- * A reference to an instance of this class.
36
- *
37
- * @since 1.0.0
38
- * @access private
39
- * @var object
40
- */
41
- private static $instance = null;
42
-
43
- /**
44
- * A reference to an instance of this Cherry_Template_Manager class.
45
- *
46
- * @since 1.0.0
47
- * @access private
48
- * @var object
49
- */
50
- private $cherry_template_manager_class = null;
51
-
52
- /**
53
- * Module arguments.
54
- *
55
- * @since 1.0.0
56
- * @access private
57
- * @var array
58
- */
59
- private $args = array(
60
- 'macros_callback' => '/%%.+?%%/',
61
- 'macros_variable' => '/\$\$.+?\$\$/',
62
- );
63
-
64
- /**
65
- * Keeps the user callbacks class.
66
- *
67
- * @since 1.0.0
68
- * @access private
69
- * @var object
70
- */
71
- private static $callbacks_class = null;
72
-
73
- /**
74
- * Cherry_Template_Parser constructor.
75
- *
76
- * @since 1.0.0
77
- * @access public
78
- * @return void
79
- */
80
- public function __construct( $args = array(), $main_class = null ) {
81
- $this->args = array_merge_recursive(
82
- $args,
83
- $this->args
84
- );
85
-
86
- $this->cherry_template_manager_class = $main_class;
87
- }
88
-
89
- /**
90
- * Function parsed template.
91
- *
92
- * @since 1.0.0
93
- * @param string $template_name Template Name.
94
- * @param string|stdClass $class An instance or class name.
95
- * @param string $macros_callback The regular expression for the callback.
96
- * @param string $macros_variable The regular expression for the variable.
97
- * @access public
98
- * @return string|bool
99
- */
100
- public function parsed_template( $template_name = false, $class = false, $macros_callback = false, $macros_variable = false ) {
101
- if ( $template_name && $class ) {
102
-
103
- if ( ! $macros_callback ) {
104
- $macros_callback = $this->args['macros_callback'];
105
- }
106
-
107
- if ( ! $macros_variable ) {
108
- $macros_variable = $this->args['macros_variable'];
109
- }
110
-
111
- $search_form_template = $this->cherry_template_manager_class->loader->get_template_by_name( $template_name );
112
-
113
- if ( ! $search_form_template ) {
114
- return false;
115
- }
116
-
117
- if ( 'string' === gettype( $class ) && class_exists( $class ) ) {
118
- $class = new $class();
119
- }
120
-
121
- if ( $class !== self::$callbacks_class ) {
122
- self::$callbacks_class = $class;
123
- }
124
-
125
- $ouput = preg_replace_callback( $macros_callback, array( $this, 'replace_callback' ), $search_form_template );
126
- $ouput = preg_replace_callback( $macros_variable, array( $this, 'replace_variable' ), $ouput );
127
-
128
- return $ouput;
129
- } else {
130
- return false;
131
- }
132
-
133
- }
134
-
135
- /**
136
- * Callback to replace macros with data.
137
- *
138
- * @since 1.0.0
139
- * @param array $matches Founded macros.
140
- * @access private
141
- * @return string
142
- */
143
- private function replace_callback( $matches, $slug = '' ) {
144
- if ( ! is_array( $matches ) || empty( $matches ) ) {
145
- return;
146
- }
147
-
148
- $slug = $this->cherry_template_manager_class->loader->get_argument( 'slug' );
149
- $item = trim( $matches[0], '%%' );
150
- $arr = explode( ' ', $item, 2 );
151
- $macros = strtolower( $arr[0] );
152
- $attr = isset( $arr[1] ) ? shortcode_parse_atts( $arr[1] ) : array();
153
- $callback = apply_filters( $slug . '_set_callback_' . $macros, array( self::$callbacks_class, 'get_' . $macros ) );
154
-
155
- if ( ! is_callable( $callback ) ) {
156
- return;
157
- }
158
-
159
- if ( ! empty( $attr ) ) {
160
- // Call a WordPress function.
161
- return call_user_func( $callback, $attr );
162
- }
163
-
164
- return call_user_func( $callback );
165
- }
166
-
167
- /**
168
- * Callback to replace macros with data.
169
- *
170
- * @since 1.0.0
171
- * @param array $matches Founded macros.
172
- * @access private
173
- * @return string
174
- */
175
- private function replace_variable( $matches, $slug = '' ) {
176
-
177
- if ( ! is_array( $matches ) || empty( $matches ) ) {
178
- return;
179
- }
180
-
181
- $slug = $this->cherry_template_manager_class->loader->get_argument( 'slug' );
182
- $item = trim( $matches[0], '$$' );
183
- $arr = explode( ' ', $item, 2 );
184
- $macros = strtolower( $arr[0] );
185
- $variable = apply_filters( $slug . '_set_variable_' . $macros, null );
186
-
187
- if ( null === $variable ) {
188
- if ( isset( self::$callbacks_class->variable ) && array_key_exists( $macros, self::$callbacks_class->variable ) ) {
189
- $variable = self::$callbacks_class->variable[ $macros ];
190
- } else {
191
- return;
192
- }
193
- }
194
-
195
- return $variable;
196
- }
197
-
198
- /**
199
- * Returns argument.
200
- *
201
- * @since 1.0.0
202
- * @param string $argument_name Argument name.
203
- * @access public
204
- * @return object
205
- */
206
- public function get_argument( $argument_name ) {
207
- if ( isset( $this->args[ $argument_name ] ) ) {
208
- return $this->args[ $argument_name ];
209
- } else {
210
- return;
211
- }
212
- }
213
-
214
- /**
215
- * Returns the instance.
216
- *
217
- * @since 1.0.0
218
- * @return object
219
- */
220
- public static function get_instance( $args, $main_class ) {
221
-
222
- // If the single instance hasn't been set, set it now.
223
- if ( null == self::$instance ) {
224
- self::$instance = new self( $args, $main_class );
225
- }
226
-
227
- return self::$instance;
228
- }
229
- }
230
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-term-meta/cherry-term-meta.php DELETED
@@ -1,303 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Term Meta
4
- * Description: Manage term metadata
5
- * Version: 1.1.4
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.1.4
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Term_Meta' ) ) {
26
-
27
- /**
28
- * Term meta management module
29
- */
30
- class Cherry_Term_Meta {
31
-
32
- /**
33
- * Module slug
34
- *
35
- * @var string
36
- */
37
- public $module_slug = 'cherry-term-meta';
38
-
39
- /**
40
- * Module arguments
41
- *
42
- * @var array
43
- */
44
- public $args = array();
45
-
46
- /**
47
- * Existing field types
48
- *
49
- * @var array
50
- */
51
- public $field_types = array();
52
-
53
- /**
54
- * UI builder instance
55
- *
56
- * @var object
57
- */
58
- public $ui_builder = null;
59
-
60
- /**
61
- * Already registered field.
62
- *
63
- * @since 1.0.2
64
- * @var array
65
- */
66
- static public $register_fields = array();
67
-
68
- /**
69
- * Core instance
70
- *
71
- * @var object
72
- */
73
- public $core = null;
74
-
75
- /**
76
- * Constructor for the module
77
- */
78
- function __construct( $core, $args ) {
79
-
80
- $this->core = $core;
81
- $this->args = wp_parse_args( $args, array(
82
- 'tax' => 'category',
83
- 'priority' => 10,
84
- 'fields' => array(),
85
- ) );
86
-
87
- if ( empty( $this->args['fields'] ) ) {
88
- return;
89
- }
90
-
91
- add_action( 'admin_enqueue_scripts', array( $this, 'init_ui' ), 1 );
92
-
93
- $priority = intval( $this->args['priority'] );
94
- $tax = esc_attr( $this->args['tax'] );
95
-
96
- add_action( "{$tax}_add_form_fields", array( $this, 'render_add_fields' ), $priority );
97
- add_action( "{$tax}_edit_form_fields", array( $this, 'render_edit_fields' ), $priority, 2 );
98
-
99
- add_action( "created_{$tax}", array( $this, 'save_meta' ) );
100
- add_action( "edited_{$tax}", array( $this, 'save_meta' ) );
101
- }
102
-
103
- /**
104
- * Init UI builder.
105
- *
106
- * @since 1.0.0
107
- * @return bool
108
- */
109
- public function init_ui() {
110
-
111
- global $current_screen;
112
-
113
- if ( empty( $current_screen ) || ! in_array( $current_screen->base, array( 'edit-tags', 'term' ) ) ) {
114
- return false;
115
- }
116
-
117
- array_walk( $this->args['fields'], array( $this, 'set_field_types' ) );
118
-
119
- if ( in_array( 'slider', $this->field_types ) ) {
120
- $this->field_types[] = 'stepper';
121
- }
122
-
123
- $this->ui_builder = $this->core->init_module( 'cherry-ui-elements', $this->field_types );
124
-
125
- return true;
126
- }
127
-
128
- /**
129
- * Render add term form fields
130
- *
131
- * @since 1.0.0
132
- * @param [type] $taxonomy taxonomy name.
133
- * @return void
134
- */
135
- public function render_add_fields( $taxonomy ) {
136
-
137
- $format = '<div style="padding:10px 0;">%s</div>';
138
- echo $this->get_fields( false, $taxonomy, $format );
139
- }
140
-
141
- /**
142
- * Render edit term form fields
143
- *
144
- * @since 1.0.0
145
- * @param object $term current term object.
146
- * @param [type] $taxonomy taxonomy name.
147
- * @return void
148
- */
149
- public function render_edit_fields( $term, $taxonomy ) {
150
-
151
- $format = '<tr class="form-field cherry-term-meta-wrap"><th>&nbsp;</th><td>%s</td></tr>';
152
- echo $this->get_fields( $term, $taxonomy, $format );
153
- }
154
-
155
- /**
156
- * Get registered control fields
157
- *
158
- * @since 1.0.0
159
- * @param mixed $term current term object.
160
- * @param [type] $taxonomy current taxonomy name.
161
- * @return string
162
- */
163
- public function get_fields( $term, $taxonomy, $format = '%s' ) {
164
-
165
- $result = '';
166
-
167
- foreach ( $this->args['fields'] as $key => $field ) {
168
-
169
- if ( in_array( $key, Cherry_Term_Meta::$register_fields ) ) {
170
- continue;
171
- } else {
172
- Cherry_Term_Meta::$register_fields[] = $key;
173
- }
174
-
175
- if ( false !== $term ) {
176
- $value = get_term_meta( $term->term_id, $key, true );
177
- } else {
178
- $value = '';
179
- }
180
-
181
- $value = ! empty( $value ) ? $value : Cherry_Toolkit::get_arg( $field, 'value', '' );
182
-
183
- if ( isset( $field['options_callback'] ) ) {
184
- $options = call_user_func( $field['options_callback'] );
185
- } else {
186
- $options = Cherry_Toolkit::get_arg( $field, 'options', array() );
187
- }
188
-
189
- $args = array(
190
- 'type' => Cherry_Toolkit::get_arg( $field, 'type', 'text' ),
191
- 'id' => $key,
192
- 'name' => $key,
193
- 'value' => $value,
194
- 'label' => Cherry_Toolkit::get_arg( $field, 'label', '' ),
195
- 'options' => $options,
196
- 'multiple' => Cherry_Toolkit::get_arg( $field, 'multiple', false ),
197
- 'filter' => Cherry_Toolkit::get_arg( $field, 'filter', false ),
198
- 'size' => Cherry_Toolkit::get_arg( $field, 'size', 1 ),
199
- 'null_option' => Cherry_Toolkit::get_arg( $field, 'null_option', 'None' ),
200
- 'multi_upload' => Cherry_Toolkit::get_arg( $field, 'multi_upload', true ),
201
- 'library_type' => Cherry_Toolkit::get_arg( $field, 'library_type', 'image' ),
202
- 'upload_button_text' => Cherry_Toolkit::get_arg( $field, 'upload_button_text', 'Choose' ),
203
- 'max_value' => Cherry_Toolkit::get_arg( $field, 'max_value', '100' ),
204
- 'min_value' => Cherry_Toolkit::get_arg( $field, 'min_value', '0' ),
205
- 'max' => Cherry_Toolkit::get_arg( $field, 'max', '100' ),
206
- 'min' => Cherry_Toolkit::get_arg( $field, 'min', '0' ),
207
- 'step_value' => Cherry_Toolkit::get_arg( $field, 'step_value', '1' ),
208
- 'style' => Cherry_Toolkit::get_arg( $field, 'style', 'normal' ),
209
- 'display_input' => Cherry_Toolkit::get_arg( $field, 'display_input', true ),
210
- 'controls' => Cherry_Toolkit::get_arg( $field, 'controls', array() ),
211
- 'fields' => Cherry_Toolkit::get_arg( $field, 'fields', array() ),
212
- 'auto_parse' => Cherry_Toolkit::get_arg( $field, 'auto_parse', false ),
213
- 'icon_data' => Cherry_Toolkit::get_arg( $field, 'icon_data', array() ),
214
- 'toggle' => Cherry_Toolkit::get_arg( $field, 'toggle', array(
215
- 'true_toggle' => 'On',
216
- 'false_toggle' => 'Off',
217
- 'true_slave' => '',
218
- 'false_slave' => '',
219
- ) ),
220
- 'class' => Cherry_Toolkit::get_arg( $field, 'class' ),
221
- 'required' => Cherry_Toolkit::get_arg( $field, 'required', false ),
222
- 'placeholder' => Cherry_Toolkit::get_arg( $field, 'placeholder' ),
223
- 'master' => Cherry_Toolkit::get_arg( $field, 'master' ),
224
- 'title_field' => Cherry_Toolkit::get_arg( $field, 'title_field' ),
225
- 'ui_kit' => Cherry_Toolkit::get_arg( $field, 'ui_kit', true ),
226
- );
227
-
228
- $current_element = $this->ui_builder->get_ui_element_instance( $args['type'], $args );
229
-
230
- $result .= sprintf( $format, $current_element->render() );
231
-
232
- }
233
-
234
- return $result;
235
-
236
- }
237
-
238
- /**
239
- * Store field types used in this widget into class property
240
- *
241
- * @since 1.0.0
242
- * @param array $field field data.
243
- * @param [type] $id field key.
244
- * @return bool
245
- */
246
- public function set_field_types( $field, $id ) {
247
-
248
- if ( is_array( $field ) || ! isset( $field['type'] ) ) {
249
- return false;
250
- }
251
-
252
- if ( ! in_array( $field['type'], $this->field_types ) ) {
253
- $this->field_types[] = $field['type'];
254
- }
255
-
256
- return true;
257
-
258
- }
259
-
260
- /**
261
- * Save additional taxonomy meta on edit or create tax
262
- *
263
- * @since 1.0.0
264
- * @param int $term_id Term ID.
265
- * @return bool
266
- */
267
- public function save_meta( $term_id ) {
268
-
269
- if ( ! current_user_can( 'edit_posts' ) ) {
270
- return false;
271
- }
272
-
273
- foreach ( $this->args['fields'] as $key => $field ) {
274
-
275
- if ( ! isset( $_POST[ $key ] ) ) {
276
- continue;
277
- }
278
-
279
- if ( is_array( $_POST[ $key ] ) ) {
280
- $new_val = array_filter( $_POST[ $key ] );
281
- } else {
282
- $new_val = esc_attr( $_POST[ $key ] );
283
- }
284
-
285
- update_term_meta( $term_id, $key, $new_val );
286
-
287
- }
288
-
289
- return true;
290
-
291
- }
292
-
293
- /**
294
- * Returns the instance.
295
- *
296
- * @since 1.0.0
297
- * @return object
298
- */
299
- public static function get_instance( $core, $args ) {
300
- return new self( $core, $args );
301
- }
302
- }
303
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-toolkit/cherry-toolkit.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Module Name: Framework Toolkit
4
  * Description: Framework Toolkit contains various PHP utilities
5
- * Version: 1.2.0
6
  * Author: Cherry Team
7
  * Author URI: http://www.cherryframework.com/
8
  * License: GPLv3
@@ -10,7 +10,6 @@
10
  *
11
  * @package Cherry_Framework
12
  * @subpackage Class
13
- * @version 1.2.0
14
  * @author Cherry Team <cherryframework@gmail.com>
15
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
  * @link http://www.cherryframework.com/
@@ -29,6 +28,13 @@ if ( ! class_exists( 'Cherry_Toolkit' ) ) {
29
  */
30
  class Cherry_Toolkit {
31
 
 
 
 
 
 
 
 
32
  /**
33
  * Module slug
34
  *
@@ -179,23 +185,6 @@ if ( ! class_exists( 'Cherry_Toolkit' ) ) {
179
  return $array;
180
  }
181
 
182
- /**
183
- * Safely get file content by path
184
- *
185
- * @param string $filepath Path to file.
186
- * @return mixed
187
- */
188
- public static function get_file( $filepath ) {
189
-
190
- if ( ! file_exists( $filepath ) ) {
191
- return false;
192
- }
193
-
194
- ob_start();
195
- include $filepath;
196
- return ob_get_clean();
197
- }
198
-
199
  /**
200
  * Remove some keys form array
201
  *
2
  /**
3
  * Module Name: Framework Toolkit
4
  * Description: Framework Toolkit contains various PHP utilities
5
+ * Version: 1.1.0
6
  * Author: Cherry Team
7
  * Author URI: http://www.cherryframework.com/
8
  * License: GPLv3
10
  *
11
  * @package Cherry_Framework
12
  * @subpackage Class
 
13
  * @author Cherry Team <cherryframework@gmail.com>
14
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
15
  * @link http://www.cherryframework.com/
28
  */
29
  class Cherry_Toolkit {
30
 
31
+ /**
32
+ * Module version
33
+ *
34
+ * @var string Module version
35
+ */
36
+ public $module_version = '1.1.0';
37
+
38
  /**
39
  * Module slug
40
  *
185
  return $array;
186
  }
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  /**
189
  * Remove some keys form array
190
  *
cherry-framework/modules/cherry-ui-elements/cherry-ui-elements.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Module Name: UI Elements
4
  * Description: Class for the building ui elements
5
- * Version: 1.3.2
6
  * Author: Cherry Team
7
  * Author URI: http://www.cherryframework.com/
8
  * License: GPLv3
@@ -10,7 +10,7 @@
10
  *
11
  * @package Cherry_Framework
12
  * @subpackage Modules
13
- * @version 1.3.2
14
  * @author Cherry Team <cherryframework@gmail.com>
15
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
  * @link http://www.cherryframework.com/
@@ -52,7 +52,6 @@ if ( ! class_exists( 'Cherry_UI_Elements' ) ) {
52
  'slider',
53
  'repeater',
54
  'iconpicker',
55
- 'button',
56
  ),
57
  );
58
 
@@ -105,23 +104,22 @@ if ( ! class_exists( 'Cherry_UI_Elements' ) ) {
105
  * Require UI-elements.
106
  *
107
  * @since 1.0.0
108
- * @since 1.1.4 Using dirname( __FILE__ ) instead of __DIR__.
109
  * @return void
110
  */
111
  public function ui_elements_require() {
112
 
113
  // Add I_UI interface.
114
  if ( ! interface_exists( 'I_UI' ) ) {
115
- require_once( dirname( __FILE__ ) . '/i-ui.php' );
116
  }
117
 
118
  if ( ! class_exists( 'UI_Element' ) ) {
119
- require_once( dirname( __FILE__ ) . '/ui-element.php' );
120
  }
121
 
122
  if ( ! empty( $this->args['ui_elements'] ) ) {
123
  foreach ( $this->args['ui_elements'] as $ui_element ) {
124
- require_once( dirname( __FILE__ ) . '/inc/ui-elements/ui-' . $ui_element . '/ui-' . $ui_element . '.php' );
125
  }
126
  }
127
  }
2
  /**
3
  * Module Name: UI Elements
4
  * Description: Class for the building ui elements
5
+ * Version: 1.1.3
6
  * Author: Cherry Team
7
  * Author URI: http://www.cherryframework.com/
8
  * License: GPLv3
10
  *
11
  * @package Cherry_Framework
12
  * @subpackage Modules
13
+ * @version 1.1.3
14
  * @author Cherry Team <cherryframework@gmail.com>
15
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
  * @link http://www.cherryframework.com/
52
  'slider',
53
  'repeater',
54
  'iconpicker',
 
55
  ),
56
  );
57
 
104
  * Require UI-elements.
105
  *
106
  * @since 1.0.0
 
107
  * @return void
108
  */
109
  public function ui_elements_require() {
110
 
111
  // Add I_UI interface.
112
  if ( ! interface_exists( 'I_UI' ) ) {
113
+ require_once( __DIR__ . '/i-ui.php' );
114
  }
115
 
116
  if ( ! class_exists( 'UI_Element' ) ) {
117
+ require_once( __DIR__ . '/ui-element.php' );
118
  }
119
 
120
  if ( ! empty( $this->args['ui_elements'] ) ) {
121
  foreach ( $this->args['ui_elements'] as $ui_element ) {
122
+ require_once( __DIR__ . '/inc/ui-elements/ui-' . $ui_element . '/ui-' . $ui_element . '.php' );
123
  }
124
  }
125
  }
cherry-framework/modules/cherry-ui-elements/i-ui.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <cherryframework@gmail.com>
8
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  /**
7
  * @author Cherry Team <cherryframework@gmail.com>
8
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  /**
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/min/ui-button.min.css DELETED
@@ -1 +0,0 @@
1
- .ui-button{padding:16px 30px;display:inline-block;background-color:#96989a;font-weight:900;text-transform:uppercase;color:#fff;box-shadow:0px 0px 13px rgba(0,0,0,0.2);cursor:pointer;border-radius:4px;border:none;-webkit-transition:background 300ms ease-in-out;transition:background 300ms ease-in-out}.ui-button:hover{background-color:#b4b7ba}.ui-button:focus{outline:none}.ui-button.ui-button-normal-style{background-color:#495159}.ui-button.ui-button-normal-style:hover{background-color:#393f45}.ui-button.ui-button-success-style{background-color:#48c569}.ui-button.ui-button-success-style:hover{background-color:#3ba956}.ui-button.ui-button-primary-style{background-color:#298ffc}.ui-button.ui-button-primary-style:hover{background-color:#206ff4}.ui-button.ui-button-danger-style{background-color:#e54343}.ui-button.ui-button-danger-style:hover{background-color:#c73434}.ui-button.ui-button-warning-style{background-color:#faa730}.ui-button.ui-button-warning-style:hover{background-color:#ee8425}
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/ui-button.scss DELETED
@@ -1,52 +0,0 @@
1
- @import "ui-kit/variables";
2
- @import "ui-kit/mixins";
3
-
4
- .ui-button{
5
- padding: 16px 30px;
6
- display: inline-block;
7
- background-color: $grey_color_1;
8
- font-weight: 900;
9
- text-transform: uppercase;
10
- color: #fff;
11
- box-shadow: 0px 0px 13px rgba(0, 0, 0, 0.2);
12
- cursor: pointer;
13
- border-radius: 4px;
14
- border: none;
15
- transition: background 300ms ease-in-out;
16
- &:hover{
17
- background-color: $grey_color_4;
18
- }
19
- &:focus{
20
- outline: none;
21
- }
22
- &.ui-button-normal-style{
23
- background-color: $normal_color;
24
- &:hover{
25
- background-color: $normal_color_h;
26
- }
27
- }
28
- &.ui-button-success-style{
29
- background-color: $green_color;
30
- &:hover{
31
- background-color: $green_color_h;
32
- }
33
- }
34
- &.ui-button-primary-style{
35
- background-color: $blue_color;
36
- &:hover{
37
- background-color: $blue_color_h;
38
- }
39
- }
40
- &.ui-button-danger-style{
41
- background-color: $red_color;
42
- &:hover{
43
- background-color: $red_color_h;
44
- }
45
- }
46
- &.ui-button-warning-style{
47
- background-color: $orange_color;
48
- &:hover{
49
- background-color: $orange_color_h;
50
- }
51
- }
52
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/ui-kit/_mixins.scss DELETED
@@ -1,182 +0,0 @@
1
- @mixin button_base() {
2
- display: inline-block;
3
- text-decoration: none;
4
- font-size: 12px;
5
- line-height: 20px;
6
- font-weight: bold;
7
- padding: 15px 20px;
8
- color: #fff;
9
- text-transform: uppercase;
10
- border-radius: $border_radius_small;
11
- transition: all 200ms linear;
12
- box-shadow: $box_shadow;
13
- &:hover {
14
- color: #fff;
15
- box-shadow: none;
16
- }
17
- &:focus,
18
- &:active {
19
- outline: none;
20
- box-shadow: none;
21
- color: #fff;
22
- }
23
- }
24
-
25
- @mixin button_normal() {
26
- background: $dark_color_2;
27
- &:hover {
28
- background: $dark_color_2_h;
29
- }
30
- }
31
-
32
- @mixin button_primary() {
33
- background: $blue_color;
34
- &:hover {
35
- background: $blue_color_h;
36
- }
37
- }
38
-
39
- @mixin button_success() {
40
- background: $green_color;
41
- &:hover {
42
- background: $green_color_h;
43
- }
44
- }
45
-
46
- @mixin button_danger() {
47
- background: $red_color;
48
- &:hover {
49
- background: $red_color_h;
50
- }
51
- }
52
-
53
- @mixin button_warning() {
54
- background: $orange_color;
55
- &:hover {
56
- background: $orange_color_h;
57
- }
58
- }
59
-
60
- @mixin input() {
61
- font-size: 14px;
62
- line-height: 20px;
63
- color: $dark_color_1;
64
- background-color: $grey_color_3;
65
- border-radius: $border_radius_extra_small;
66
- padding: 10px 20px;
67
- min-height: 50px;
68
- border: 1px solid $grey_color_3;
69
- box-shadow: none;
70
- &:focus{
71
- border-color: rgba(72,197,105,.6);
72
- box-shadow: 0 0 2px rgba(72,197,105,.6);
73
- }
74
- }
75
-
76
- @mixin button_icon( $icon ) {
77
- content: $icon;
78
- display: inline-block;
79
- font-family: dashicons;
80
- font-size: 16px;
81
- font-style: normal;
82
- font-weight: 400;
83
- height: 18px;
84
- line-height: 18px;
85
- text-align: center;
86
- text-decoration: inherit;
87
- transition: all 200ms linear;
88
- vertical-align: middle;
89
- }
90
-
91
- @mixin button_icon_before( $icon ) {
92
- &:before {
93
- @include button_icon( $icon );
94
- padding: 0 5px 0 0;
95
- }
96
- }
97
-
98
- @mixin button_icon_after( $icon ) {
99
- &:after {
100
- @include button_icon( $icon );
101
- padding: 0 0 0 5px;
102
- }
103
- }
104
-
105
- @mixin button_icon_middle( $icon ) {
106
- &:before {
107
- @include button_icon( $icon );
108
- margin: 0 -5px;
109
- }
110
- }
111
-
112
- @mixin link() {
113
- display: inline-block;
114
- text-decoration: none;
115
- font-size: 12px;
116
- line-height: 20px;
117
- font-weight: bold;
118
- color: $blue_color;
119
- text-transform: uppercase;
120
- transition: all 200ms linear;
121
- &:hover {
122
- color: $dark_color_1;
123
- box-shadow: none;
124
- }
125
- &:focus,
126
- &:active {
127
- outline: none;
128
- box-shadow: none;
129
- color: $blue_color;
130
- }
131
- }
132
-
133
- @mixin link_icon_before( $icon ) {
134
- &:before {
135
- @include button_icon( $icon );
136
- padding: 0 5px 0 0;
137
- color: $grey_color_4;
138
- }
139
- &:hover {
140
- &:before {
141
- color: $blue_color;
142
- }
143
- }
144
- }
145
-
146
- @mixin container() {
147
- padding: 30px;
148
- border: 2px solid $grey_color_2;
149
- background: $grey_color_3;
150
- border-radius: $border_radius_large;
151
- }
152
-
153
- @mixin container_heading() {
154
- margin: -30px -30px 30px -30px;
155
- border-radius: $border_radius_large $border_radius_large 0 0;
156
- border-bottom: 1px solid $grey_color_2;
157
- padding: 20px 30px;
158
- font-weight: bold;
159
- font-size: 16px;
160
- line-height: 18px;
161
- text-align: center;
162
- background: #fff;
163
- }
164
-
165
- @mixin box() {
166
- margin: 0 0 30px;
167
- padding: 20px;
168
- background: #fff;
169
- box-shadow: $box_shadow_box;
170
- border-radius: $border_radius;
171
- }
172
-
173
- @mixin box_heading() {
174
- margin: -20px -20px 20px -20px;
175
- border-radius: $border_radius_small $border_radius_small 0 0;
176
- border-bottom: 1px solid $grey_color_2;
177
- padding: 20px 30px;
178
- font-weight: bold;
179
- font-size: 16px;
180
- line-height: 18px;
181
- background: #fff;
182
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/assets/ui-kit/_variables.scss DELETED
@@ -1,25 +0,0 @@
1
- $dark_color_1: #23282d;
2
- $dark_color_2: #495159;
3
- $dark_color_2_h: #393f45;
4
- $grey_color_1: #96989a;
5
- $grey_color_2: #e5e5e5;
6
- $grey_color_3: #f1f1f1;
7
- $grey_color_4: #b4b7ba;
8
- $normal_color: #495159;
9
- $normal_color_h: #393f45;
10
- $blue_color: #298ffc;
11
- $blue_color_h: #206ff4;
12
- $green_color: #48c569;
13
- $green_color_h: #3ba956;
14
- $red_color: #e54343;
15
- $red_color_h: #c73434;
16
- $orange_color: #faa730;
17
- $orange_color_h: #ee8425;
18
-
19
- $border_radius_extra_small: 2px;
20
- $border_radius_small: 4px;
21
- $border_radius_medium: 6px;
22
- $border_radius_large: 8px;
23
-
24
- $box_shadow: 0 5px 13px rgba(0,0,0,.18);
25
- $box_shadow_box: 0 8px 21px rgba(0,0,0,.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/ui-button.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
- /**
3
- * Class for the building ui-button elements.
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <support@cherryframework.com>
8
- * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'UI_Button' ) ) {
19
-
20
- /**
21
- * Class for the building ui-text elements.
22
- */
23
- class UI_Button extends UI_Element implements I_UI {
24
-
25
- /**
26
- * Default settings
27
- *
28
- * @var array
29
- */
30
- private $defaults_settings = array(
31
- 'type' => 'text',
32
- 'id' => 'cherry-ui-button-id',
33
- 'name' => 'cherry-ui-button-name',
34
- 'value' => 'button',
35
- 'disabled' => false,
36
- 'form' => '',
37
- 'formaction' => '',
38
- 'type' => 'button',
39
- 'style' => 'normal',
40
- 'content' => 'Button',
41
- 'class' => '',
42
- 'master' => '',
43
- );
44
-
45
- /**
46
- * Constructor method for the UI_Text class.
47
- *
48
- * @since 4.0.0
49
- */
50
- function __construct( $args = array() ) {
51
- $this->defaults_settings['id'] = 'cherry-ui-button-' . uniqid();
52
- $this->settings = wp_parse_args( $args, $this->defaults_settings );
53
-
54
- add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
55
- }
56
-
57
- /**
58
- * Render html UI_Text.
59
- *
60
- * @since 4.0.0
61
- */
62
- public function render() {
63
- $html = Cherry_Toolkit::render_view(
64
- dirname( __FILE__ ) . '/view/button-view.php',
65
- $this->settings
66
- );
67
-
68
- return $html;
69
- }
70
-
71
- /**
72
- * Enqueue javascript and stylesheet UI_Text
73
- *
74
- * @since 4.0.0
75
- */
76
- public static function enqueue_assets() {
77
-
78
- wp_enqueue_style(
79
- 'ui-button',
80
- esc_url( Cherry_Core::base_url( 'assets/min/ui-button.min.css', __FILE__ ) ),
81
- array(),
82
- '1.0.0',
83
- 'all'
84
- );
85
- }
86
- }
87
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-button/view/button-view.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Ui-Button view
4
- *
5
- * @package Cherry_UI_Elements
6
- * @subpackage View
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
- $class = trim( implode( ' ', array( 'ui-button', 'ui-button-' . $__data['style'] . '-style ', $__data['master'], $__data['class'] ) ) );
18
- $attrs = Cherry_Toolkit::join(
19
- array(
20
- 'type' => esc_attr( $__data['type'] ),
21
- 'id' => esc_attr( $__data['id'] ),
22
- 'name' => esc_attr( $__data['name'] ),
23
- 'class' => esc_attr( $class ),
24
- 'disabled' => filter_var( $__data['disabled'], FILTER_VALIDATE_BOOLEAN ),
25
- 'form' => esc_attr( $__data['form'] ),
26
- 'formaction' => esc_attr( $__data['formaction'] ),
27
- )
28
- );
29
- ?>
30
-
31
- <button <?php echo $attrs; ?>><?php echo $__data['content']; ?></button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/min/ui-checkbox.min.css CHANGED
@@ -1 +1,56 @@
1
- .cherry-ui-container{margin:10px 0 20px 0}label.cherry-label{margin:0 0 5px 0;display:block}.hide{display:none !important}.cherry-checkbox-item{width:26px;height:26px;display:inline-block;border-radius:2px;margin-right:10px;margin-bottom:6px;cursor:pointer;position:relative;background-color:#f1f1f1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all 0.4s cubic-bezier(0.77, 0, 0.175, 1);transition:all 0.4s cubic-bezier(0.77, 0, 0.175, 1)}.cherry-checkbox-item .marker{position:absolute;width:26px;height:26px;top:0px;left:0px;color:#fff;font-size:28px;-webkit-transition:inherit;transition:inherit;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.cherry-checkbox-item .marker:before{-webkit-transition:inherit;transition:inherit;position:relative;left:-2px}.cherry-checkbox-input[checked]+.cherry-checkbox-item{background-color:#48c569}.cherry-checkbox-input[checked]+.cherry-checkbox-item .marker{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.cherry-checkbox-label{display:inline-block;vertical-align:top;font-size:14px;line-height:26px;color:#23282d;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .cherry-ui-container {
2
+ margin: 10px 0 20px 0; }
3
+
4
+ label.cherry-label {
5
+ margin: 0 0 5px 0;
6
+ display: block; }
7
+
8
+ .cherry-checkbox-item {
9
+ width: 26px;
10
+ height: 26px;
11
+ display: inline-block;
12
+ border-radius: 2px;
13
+ margin-right: 10px;
14
+ margin-bottom: 6px;
15
+ cursor: pointer;
16
+ position: relative;
17
+ background-color: #f1f1f1;
18
+ -webkit-user-select: none;
19
+ -moz-user-select: none;
20
+ -ms-user-select: none;
21
+ user-select: none;
22
+ -webkit-transition: all 0.2s ease-out;
23
+ transition: all 0.2s ease-out; }
24
+ .cherry-checkbox-item .marker {
25
+ position: absolute;
26
+ width: 26px;
27
+ height: 26px;
28
+ top: 0px;
29
+ left: 0px;
30
+ color: #fff;
31
+ font-size: 28px;
32
+ -webkit-transform: scale(0);
33
+ -ms-transform: scale(0);
34
+ transform: scale(0);
35
+ -webkit-transition: all 0.3s cubic-bezier(0.27, 0.63, 0.54, 0.96);
36
+ transition: all 0.3s cubic-bezier(0.27, 0.63, 0.54, 0.96); }
37
+ .cherry-checkbox-item .marker:before {
38
+ position: relative;
39
+ left: -2px; }
40
+ .cherry-checkbox-item.checked {
41
+ background-color: #48c569; }
42
+ .cherry-checkbox-item.checked .marker {
43
+ -webkit-transform: scale(1);
44
+ -ms-transform: scale(1);
45
+ transform: scale(1); }
46
+
47
+ .cherry-checkbox-label {
48
+ display: inline-block;
49
+ vertical-align: top;
50
+ font-size: 14px;
51
+ line-height: 26px;
52
+ color: #23282d;
53
+ -webkit-user-select: none;
54
+ -moz-user-select: none;
55
+ -ms-user-select: none;
56
+ user-select: none; }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/min/ui-checkbox.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"use strict";t.utilites.namespace("ui_elements.checkbox"),t.ui_elements.checkbox={inputClass:'.cherry-checkbox-input[type="hidden"]:not([name*="__i__"])',labelClass:".cherry-checkbox-label, .cherry-checkbox-item",init:function(){e(document).on("ready.cherry-ui-elements-init",this.addEvent.bind(this)).on("cherry-ui-elements-init",this.initState.bind(this))},addEvent:function(){e("body").on("click.masterSlave",this.labelClass,this.switchState.bind(this)),this.initState()},initState:function(){for(var t,i,s,n=e(this.inputClass),c=n.length-1;c>=0;c--)t=e(n[c]),i=t.data(),s=t.closest("form"),jQuery.isEmptyObject(i)||e("."+i.slave,s)[t[0].checked?"removeClass":"addClass"]("hide")},switchState:function(t){var i=e(t.currentTarget).siblings(this.inputClass),s=i.data(),n=i[0].checked,c=i.closest("form");i.val(n?"false":"true").attr("checked",n?!1:!0).trigger("change"),jQuery.isEmptyObject(s)||e("."+s.slave,c)[n?"addClass":"removeClass"]("hide")}},t.ui_elements.checkbox.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,c){"use strict";c.utilites.namespace("ui_elements.checkbox"),c.ui_elements.checkbox={init:function(){e(document).on("ready",this.render),e(window).on("cherry-ui-elements-init",this.render)},render:function(c){var i=c._target?c._target:e("body");e('.cherry-checkbox-input[type="hidden"]',i).each(function(){var c=e(this),t=c.data("slave"),s="true"===c.val();s||e("."+t,i).stop().hide()}),e(".cherry-checkbox-item",i).on("click",function(){var c=e(this).siblings('.cherry-checkbox-input[type="hidden"]'),t=c.data("slave"),s="true"===c.val();e(this).hasClass("checked")?(e(this).removeClass("checked"),c.val("false"),s=!1,e("."+t,i).hide()):(e(this).addClass("checked"),c.val("true"),s=!0,e("."+t,i).show()),c.trigger("change")}),e(".cherry-checkbox-label",i).on("click",function(){var c=e(this).siblings('.cherry-checkbox-input[type="hidden"]'),t=e(this).siblings(".cherry-checkbox-item"),s=c.data("slave"),h="true"===c.val();t.hasClass("checked")?(t.removeClass("checked"),c.val("false"),h=!1,e("."+s,i).hide()):(t.addClass("checked"),c.val("true"),h=!0,e("."+s,i).show()),c.trigger("change")})}},c.ui_elements.checkbox.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/ui-checkbox.js CHANGED
@@ -1,58 +1,74 @@
1
  /**
2
  * Checkbox
3
  */
4
- ( function( $, CherryJsCore ) {
5
  'use strict';
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.checkbox');
8
  CherryJsCore.ui_elements.checkbox = {
9
- inputClass: '.cherry-checkbox-input[type="hidden"]:not([name*="__i__"])',
10
- labelClass: '.cherry-checkbox-label, .cherry-checkbox-item',
11
-
12
- init: function() {
13
- $( document )
14
- .on( 'ready.cherry-ui-elements-init', this.addEvent.bind( this ) )
15
- .on( 'cherry-ui-elements-init', this.initState.bind( this ) );
16
- },
17
- addEvent: function() {
18
- $( 'body' ).on( 'click.masterSlave', this.labelClass, this.switchState.bind( this ) );
19
- this.initState();
20
  },
21
- initState: function(){
22
- var $_input = $( this.inputClass ),
23
- i = $_input.length - 1,
24
- $_target,
25
- data,
26
- wrapper;
27
-
28
- for ( ; i >= 0; i-- ) {
29
- $_target = $( $_input[ i ] );
30
- data = $_target.data();
31
- wrapper = $_target.closest('form');
32
-
33
- if ( jQuery.isEmptyObject( data ) ) {
34
- continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  } else {
36
- $( '.' + data.slave, wrapper )[ ( $_target[0].checked ) ? 'removeClass' : 'addClass' ]( 'hide' );
 
 
 
 
37
  }
38
- }
39
- },
40
- switchState: function( event ) {
41
- var $_input = $( event.currentTarget ).siblings( this.inputClass ),
42
- data = $_input.data(),
43
- flag = $_input[0].checked,
44
- wrapper = $_input.closest('form');
45
-
46
- $_input
47
- .val( ( flag ) ? 'false' : 'true' )
48
- .attr( 'checked', ( flag ) ? false : true )
49
- .trigger( 'change' );
50
-
51
- if ( ! jQuery.isEmptyObject( data ) ) {
52
- $( '.' + data.slave, wrapper )[ ( flag ) ? 'addClass' : 'removeClass' ]( 'hide' );
53
- }
54
  }
55
  };
56
 
57
  CherryJsCore.ui_elements.checkbox.init();
58
- } ( jQuery, window.CherryJsCore ) );
1
  /**
2
  * Checkbox
3
  */
4
+ (function($, CherryJsCore){
5
  'use strict';
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.checkbox');
8
  CherryJsCore.ui_elements.checkbox = {
9
+ init: function () {
10
+ $( document ).on( 'ready', this.render );
11
+ $( window ).on( 'cherry-ui-elements-init', this.render );
 
 
 
 
 
 
 
 
12
  },
13
+ render: function ( event ) {
14
+ var target = ( event._target ) ? event._target : $( 'body' );
15
+
16
+ $( '.cherry-checkbox-input[type="hidden"]', target ).each( function() {
17
+ var $this = $( this ),
18
+ this_slave = $this.data( 'slave' ),
19
+ state = ( $this.val() === 'true' );
20
+
21
+ if ( ! state ) {
22
+ $( '.'+ this_slave, target ).stop().hide();
23
+ }
24
+ });
25
+
26
+ $( '.cherry-checkbox-item', target ).on( 'click', function() {
27
+ var input = $( this ).siblings( '.cherry-checkbox-input[type="hidden"]' ),
28
+ slave = input.data( 'slave' ),
29
+ state = ( input.val() === 'true' );
30
+
31
+ if ( $( this ).hasClass( 'checked' ) ) {
32
+ $( this ).removeClass( 'checked' );
33
+ input.val( 'false' );
34
+ state = false;
35
+
36
+ $( '.' + slave, target ).hide();
37
+ } else {
38
+ $( this ).addClass( 'checked' );
39
+ input.val( 'true' );
40
+ state = true;
41
+
42
+ $( '.' + slave, target ).show();
43
+ }
44
+
45
+ input.trigger( 'change' );
46
+ } );
47
+
48
+ $( '.cherry-checkbox-label', target ).on( 'click', function() {
49
+ var input = $( this ).siblings( '.cherry-checkbox-input[type="hidden"]' ),
50
+ item = $( this ).siblings( '.cherry-checkbox-item' ),
51
+ slave = input.data( 'slave' ),
52
+ state = ( input.val() === 'true' );
53
+
54
+ if ( item.hasClass( 'checked' ) ) {
55
+ item.removeClass( 'checked' );
56
+ input.val( 'false' );
57
+ state = false;
58
+
59
+ $( '.' + slave, target ).hide();
60
  } else {
61
+ item.addClass( 'checked' );
62
+ input.val( 'true' );
63
+ state = true;
64
+
65
+ $( '.' + slave, target ).show();
66
  }
67
+
68
+ input.trigger( 'change' );
69
+ } );
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
  };
72
 
73
  CherryJsCore.ui_elements.checkbox.init();
74
+ }(jQuery, window.CherryJsCore));
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/assets/ui-checkbox.scss CHANGED
@@ -8,9 +8,6 @@ label.cherry-label{
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
11
- .hide{
12
- display: none !important;
13
- }
14
  .cherry-checkbox-item{
15
  width: 26px;
16
  height: 26px;
@@ -22,7 +19,7 @@ label.cherry-label{
22
  position: relative;
23
  background-color: $grey_color_3;
24
  user-select: none;
25
- transition: all 0.4s cubic-bezier(0.77, 0, 0.175, 1);
26
  .marker{
27
  position: absolute;
28
  width: 26px;
@@ -31,22 +28,19 @@ label.cherry-label{
31
  left: 0px;
32
  color: #fff;
33
  font-size: 28px;
34
- transition:inherit;
35
  transform: scale(0);
 
36
  &:before{
37
- transition:inherit;
38
  position: relative;
39
  left: -2px;
40
  }
41
  }
42
- }
43
- .cherry-checkbox-input[checked]{
44
- &+.cherry-checkbox-item{
45
- background-color: $green_color;
46
- .marker{
47
- transform: scale(1);
48
  }
49
- }
50
  }
51
  .cherry-checkbox-label{
52
  display: inline-block;
@@ -55,4 +49,4 @@ label.cherry-label{
55
  line-height: 26px;
56
  color: $dark_color_1;
57
  user-select: none;
58
- }
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
 
 
 
11
  .cherry-checkbox-item{
12
  width: 26px;
13
  height: 26px;
19
  position: relative;
20
  background-color: $grey_color_3;
21
  user-select: none;
22
+ transition: all 0.2s ease-out;
23
  .marker{
24
  position: absolute;
25
  width: 26px;
28
  left: 0px;
29
  color: #fff;
30
  font-size: 28px;
 
31
  transform: scale(0);
32
+ transition: all 0.3s cubic-bezier(.27,.63,.54,.96);
33
  &:before{
 
34
  position: relative;
35
  left: -2px;
36
  }
37
  }
38
+ &.checked{
39
+ background-color: $green_color;
40
+ .marker{
41
+ transform: scale(1);
42
+ }
 
43
  }
 
44
  }
45
  .cherry-checkbox-label{
46
  display: inline-block;
49
  line-height: 26px;
50
  color: $dark_color_1;
51
  user-select: none;
52
+ }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-checkbox/ui-checkbox.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -50,7 +50,7 @@ if ( ! class_exists( 'UI_Checkbox' ) ) {
50
  * @since 4.0.0
51
  */
52
  function __construct( $args = array() ) {
53
- $this->defaults_settings['id'] = 'cherry-ui-checkbox-' . uniqid();
54
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
55
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
56
  }
@@ -62,10 +62,9 @@ if ( ! class_exists( 'UI_Checkbox' ) ) {
62
  */
63
  public function render() {
64
  $html = '';
65
- $class = $this->settings['class'];
66
- $class .= ' ' . $this->settings['master'];
67
 
68
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
69
 
70
  $counter = 0;
71
  if ( $this->settings['options'] && ! empty( $this->settings['options'] ) && is_array( $this->settings['options'] ) ) {
@@ -91,9 +90,9 @@ if ( ! class_exists( 'UI_Checkbox' ) ) {
91
  $option_label = isset( $option_value ) && is_array( $option_value ) ? $option_value['label'] : $option_value;
92
  $data_slave = isset( $option_value['slave'] ) && ! empty( $option_value['slave'] ) ? ' data-slave="' . $option_value['slave'] . '"' : '';
93
 
94
- $html .= '<div class="cherry-checkbox-item-wrap">';
95
- $html .= '<input type="hidden" id="' . esc_attr( $this->settings['id'] ) . '-' . $counter . '" class="cherry-checkbox-input" name="' . esc_attr( $this->settings['name'] ) . '[' . $option . ']" ' . $checked . ' value="' . esc_html( $item_value ) . '"' . $data_slave . '>';
96
- $html .= '<div class="cherry-checkbox-item"><span class="marker dashicons dashicons-yes"></span></div>';
97
  $html .= '<label class="cherry-checkbox-label" for="' . esc_attr( $this->settings['id'] ) . '-' . $counter . '">' . esc_html( $option_label ) . '</label> ';
98
  $html .= '</div>';
99
 
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
50
  * @since 4.0.0
51
  */
52
  function __construct( $args = array() ) {
53
+ $this->defaults_settings['id'] = 'cherry-ui-checkbox-'.uniqid();
54
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
55
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
56
  }
62
  */
63
  public function render() {
64
  $html = '';
65
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
 
66
 
67
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
68
 
69
  $counter = 0;
70
  if ( $this->settings['options'] && ! empty( $this->settings['options'] ) && is_array( $this->settings['options'] ) ) {
90
  $option_label = isset( $option_value ) && is_array( $option_value ) ? $option_value['label'] : $option_value;
91
  $data_slave = isset( $option_value['slave'] ) && ! empty( $option_value['slave'] ) ? ' data-slave="' . $option_value['slave'] . '"' : '';
92
 
93
+ $html .= '<div class="cherry-checkbox-item-wrap ' . esc_attr( $this->settings['class'] ) . '">';
94
+ $html .= '<div class="cherry-checkbox-item ' . $checked . '"><span class="marker dashicons dashicons-yes"></span></div>';
95
+ $html .= '<input type="hidden" id="' . esc_attr( $this->settings['id'] ) . '-' . $counter . '" class="cherry-checkbox-input" name="' . esc_attr( $this->settings['name'] ) . '['. $option .']" value="' . esc_html( $item_value ) . '"' . $data_slave . '>';
96
  $html .= '<label class="cherry-checkbox-label" for="' . esc_attr( $this->settings['id'] ) . '-' . $counter . '">' . esc_html( $option_label ) . '</label> ';
97
  $html .= '</div>';
98
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/min/ui-colorpicker.min.css CHANGED
@@ -1 +1,41 @@
1
- .cherry-ui-container{margin:10px 0 20px 0}label.cherry-label{margin:0 0 5px 0;display:block}.wp-picker-container{display:block;background-color:#f1f1f1;border-radius:2px;display:inline-block;padding:8px;max-width:380px}.wp-picker-container a.wp-color-result{border:medium none;box-shadow:none;height:35px;margin:0;border-radius:0;padding-left:36px}.wp-picker-container a.wp-color-result:after{background-color:#f1f1f1;border:medium none;border-radius:0;line-height:36px;font-size:14px;color:#23282d;padding:0 80px 0 20px}@media screen and (max-width: 782px){.wp-picker-container a.wp-color-result{height:36px}.wp-picker-container a.wp-color-result:after{line-height:36px}}.wp-picker-container .wp-picker-holder{position:absolute;z-index:1000}.wp-picker-container .wp-picker-input-wrap input[type="text"]{padding:7px 4px}.wp-picker-container .wp-picker-input-wrap input.wp-picker-clear{height:32px}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .cherry-ui-container {
2
+ margin: 10px 0 20px 0; }
3
+
4
+ label.cherry-label {
5
+ margin: 0 0 5px 0;
6
+ display: block; }
7
+
8
+ .wp-picker-container {
9
+ display: block;
10
+ background-color: #f1f1f1;
11
+ border-radius: 2px;
12
+ display: inline-block;
13
+ padding: 8px;
14
+ max-width: 380px; }
15
+ .wp-picker-container a.wp-color-result {
16
+ border: medium none;
17
+ box-shadow: none;
18
+ height: 36px;
19
+ margin: 0;
20
+ border-radius: 0;
21
+ padding-left: 36px; }
22
+ .wp-picker-container a.wp-color-result:after {
23
+ background-color: #f1f1f1;
24
+ border: medium none;
25
+ border-radius: 0;
26
+ line-height: 36px;
27
+ font-size: 14px;
28
+ color: #23282d;
29
+ padding: 0 80px 0 20px; }
30
+ @media screen and (max-width: 782px) {
31
+ .wp-picker-container a.wp-color-result {
32
+ height: 36px; }
33
+ .wp-picker-container a.wp-color-result:after {
34
+ line-height: 36px; } }
35
+ .wp-picker-container .wp-picker-holder {
36
+ position: absolute;
37
+ z-index: 1000; }
38
+ .wp-picker-container .wp-picker-input-wrap input[type="text"] {
39
+ padding: 7px 4px; }
40
+ .wp-picker-container .wp-picker-input-wrap input.wp-picker-clear {
41
+ height: 32px; }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/min/ui-colorpicker.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,r){"use strict";r.utilites.namespace("ui_elements.colorpicker"),r.ui_elements.colorpicker={init:function(){e(document).on("ready",this.render).on("cherry-ui-elements-init",this.render)},render:function(r){var i=r._target?r._target:e("body"),n=e('input.cherry-ui-colorpicker:not([name*="__i__"])',i);n[0]&&n.wpColorPicker()}},r.ui_elements.colorpicker.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,r){"use strict";r.utilites.namespace("ui_elements.colorpicker"),r.ui_elements.colorpicker={init:function(){e(document).on("ready",this.render),e(window).on("cherry-ui-elements-init",this.render)},render:function(r){var i=r._target?r._target:e("body"),n=e('input.cherry-ui-colorpicker:not([name*="__i__"])',i);n[0]&&n.wpColorPicker()}},r.ui_elements.colorpicker.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/ui-colorpicker.js CHANGED
@@ -7,9 +7,8 @@
7
  CherryJsCore.utilites.namespace('ui_elements.colorpicker');
8
  CherryJsCore.ui_elements.colorpicker = {
9
  init: function () {
10
- $( document )
11
- .on( 'ready', this.render )
12
- .on( 'cherry-ui-elements-init', this.render );
13
  },
14
  render: function ( event ) {
15
  var target = ( event._target ) ? event._target : $( 'body' ),
7
  CherryJsCore.utilites.namespace('ui_elements.colorpicker');
8
  CherryJsCore.ui_elements.colorpicker = {
9
  init: function () {
10
+ $( document ).on( 'ready', this.render );
11
+ $( window ).on( 'cherry-ui-elements-init', this.render );
 
12
  },
13
  render: function ( event ) {
14
  var target = ( event._target ) ? event._target : $( 'body' ),
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/assets/ui-colorpicker.scss CHANGED
@@ -18,7 +18,7 @@ label.cherry-label{
18
  a.wp-color-result{
19
  border: medium none;
20
  box-shadow: none;
21
- height: 35px;
22
  margin: 0;
23
  border-radius: 0;
24
  padding-left: 36px;
@@ -50,4 +50,4 @@ label.cherry-label{
50
  height: 32px;
51
  }
52
  }
53
- }
18
  a.wp-color-result{
19
  border: medium none;
20
  box-shadow: none;
21
+ height: 36px;
22
  margin: 0;
23
  border-radius: 0;
24
  padding-left: 36px;
50
  height: 32px;
51
  }
52
  }
53
+ }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-colorpicker/ui-colorpicker.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -43,7 +43,7 @@ if ( ! class_exists( 'UI_Colorpicker' ) ) {
43
  */
44
  function __construct( $args = array() ) {
45
 
46
- $this->defaults_settings['id'] = 'cherry-ui-colorpicker-' . uniqid();
47
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
48
 
49
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -56,15 +56,15 @@ if ( ! class_exists( 'UI_Colorpicker' ) ) {
56
  */
57
  public function render() {
58
  $html = '';
59
- $class = $this->settings['class'];
60
- $class .= ' ' . $this->settings['master'];
61
 
62
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
 
 
63
  if ( '' !== $this->settings['label'] ) {
64
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
65
  }
66
  $html .= '<div class="cherry-ui-colorpicker-wrapper">';
67
- $html .= '<input type="text" id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-colorpicker" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '"/>';
68
  $html .= '</div>';
69
  $html .= '</div>';
70
 
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
43
  */
44
  function __construct( $args = array() ) {
45
 
46
+ $this->defaults_settings['id'] = 'cherry-ui-colorpicker-'.uniqid();
47
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
48
 
49
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
56
  */
57
  public function render() {
58
  $html = '';
 
 
59
 
60
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
61
+
62
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
63
  if ( '' !== $this->settings['label'] ) {
64
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
65
  }
66
  $html .= '<div class="cherry-ui-colorpicker-wrapper">';
67
+ $html .= '<input type="text" id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-colorpicker '. esc_attr( $this->settings['class'] ) . '" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '"/>';
68
  $html .= '</div>';
69
  $html .= '</div>';
70
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/min/ui-iconpicker.min.css CHANGED
@@ -1 +1,326 @@
1
- .cherry-ui-iconpicker-group{max-width:230px;position:relative}.cherry-ui-iconpicker-group .input-group-addon{position:absolute;width:36px;height:36px;left:0px;top:0px;background:#f1f1f1;font-size:14px;line-height:36px;text-align:center;border-radius:3px 0 0 3px;border-right:1px solid #dddcdc;margin:7px}.cherry-ui-iconpicker-group .input-group-addon .fa{line-height:36px}.cherry-ui-iconpicker-group .cherry-ui-text{font-size:14px;line-height:20px;color:#23282d;background-color:#f1f1f1;border-radius:2px;padding:10px 20px;height:50px;border:1px solid #f1f1f1;box-shadow:none;padding-left:60px}.cherry-ui-iconpicker-group .cherry-ui-text:focus{border-color:rgba(72,197,105,0.6);box-shadow:0 0 2px rgba(72,197,105,0.6)}.iconpicker-popover.popover{position:absolute;top:0;left:0;display:none;max-width:none;padding:1px;text-align:left;width:242px;background:#f0f0f0;z-index:999}.iconpicker-popover.popover.top,.iconpicker-popover.popover.topLeftCorner,.iconpicker-popover.popover.topLeft,.iconpicker-popover.popover.topRight,.iconpicker-popover.popover.topRightCorner{margin-top:-10px}.iconpicker-popover.popover.right,.iconpicker-popover.popover.rightTop,.iconpicker-popover.popover.rightBottom{margin-left:10px}.iconpicker-popover.popover.bottom,.iconpicker-popover.popover.bottomRightCorner,.iconpicker-popover.popover.bottomRight,.iconpicker-popover.popover.bottomLeft,.iconpicker-popover.popover.bottomLeftCorner{margin-top:10px}.iconpicker-popover.popover.left,.iconpicker-popover.popover.leftBottom,.iconpicker-popover.popover.leftTop{margin-left:-10px}.iconpicker-popover.popover.inline{margin:0 0 14px 0;position:relative;display:inline-block;opacity:1;top:auto;left:auto;bottom:auto;right:auto;max-width:100%;box-shadow:none;z-index:auto;vertical-align:top}.iconpicker-popover.popover.inline>.arrow{display:none}.dropdown-menu .iconpicker-popover.inline{margin:0;border:none}.dropdown-menu.iconpicker-container{padding:0}.iconpicker-popover.popover .popover-title{padding:14px;font-size:14px;line-height:16px;border-bottom:1px solid #ebebeb;background-color:#f0f0f0}.iconpicker-popover.popover .popover-title input[type=search].iconpicker-search{margin:0 0 2px 0}.iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search{margin-top:14px}.iconpicker-popover.popover .popover-content{padding:0px;text-align:center}.iconpicker-popover .popover-footer{float:none;clear:both;padding:14px;text-align:right;margin:0;border-top:1px solid #ebebeb;background-color:#f0f0f0}.iconpicker-popover .popover-footer:before,.iconpicker-popover .popover-footer:after{content:" ";display:table}.iconpicker-popover .popover-footer:after{clear:both}.iconpicker-popover .popover-footer .iconpicker-btn{margin-left:10px}.iconpicker-popover .popover-footer input[type=search].iconpicker-search{margin-bottom:14px}.iconpicker-popover.popover>.arrow,.iconpicker-popover.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.iconpicker-popover.popover>.arrow{border-width:11px}.iconpicker-popover.popover>.arrow:after{border-width:10px;content:""}.iconpicker-popover.popover.top>.arrow,.iconpicker-popover.popover.topLeft>.arrow,.iconpicker-popover.popover.topRight>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#f0f0f0;bottom:-11px}.iconpicker-popover.popover.top>.arrow:after,.iconpicker-popover.popover.topLeft>.arrow:after,.iconpicker-popover.popover.topRight>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.iconpicker-popover.popover.topLeft>.arrow{left:14px;margin-left:0}.iconpicker-popover.popover.topRight>.arrow{left:auto;right:14px;margin-left:0}.iconpicker-popover.popover.right>.arrow,.iconpicker-popover.popover.rightTop>.arrow,.iconpicker-popover.popover.rightBottom>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#f0f0f0}.iconpicker-popover.popover.right>.arrow:after,.iconpicker-popover.popover.rightTop>.arrow:after,.iconpicker-popover.popover.rightBottom>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.iconpicker-popover.popover.rightTop>.arrow{top:auto;bottom:14px;margin-top:0}.iconpicker-popover.popover.rightBottom>.arrow{top:14px;margin-top:0}.iconpicker-popover.popover.bottom>.arrow,.iconpicker-popover.popover.bottomRight>.arrow,.iconpicker-popover.popover.bottomLeft>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#f0f0f0;top:-11px}.iconpicker-popover.popover.bottom>.arrow:after,.iconpicker-popover.popover.bottomRight>.arrow:after,.iconpicker-popover.popover.bottomLeft>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#f0f0f0}.iconpicker-popover.popover.bottomLeft>.arrow{left:14px;margin-left:0}.iconpicker-popover.popover.bottomRight>.arrow{left:auto;right:14px;margin-left:0}.iconpicker-popover.popover.left>.arrow,.iconpicker-popover.popover.leftBottom>.arrow,.iconpicker-popover.popover.leftTop>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#f0f0f0}.iconpicker-popover.popover.left>.arrow:after,.iconpicker-popover.popover.leftBottom>.arrow:after,.iconpicker-popover.popover.leftTop>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.iconpicker-popover.popover.leftBottom>.arrow{top:14px;margin-top:0}.iconpicker-popover.popover.leftTop>.arrow{top:auto;bottom:14px;margin-top:0}.iconpicker{position:relative;text-align:left;text-shadow:none;line-height:0;display:block;margin:0;overflow:hidden}.iconpicker *{box-sizing:content-box;position:relative}.iconpicker:before,.iconpicker:after{content:" ";display:table}.iconpicker:after{clear:both}.iconpicker .iconpicker-items{position:relative;clear:both;float:none;padding:10px 0 0 10px;background:#fff;margin:0;overflow:hidden;overflow-y:auto;min-height:55px;max-height:275px}.iconpicker .iconpicker-items:before,.iconpicker .iconpicker-items:after{content:" ";display:table}.iconpicker .iconpicker-items:after{clear:both}.iconpicker .iconpicker-item{float:left;width:28px;height:28px;line-height:28px;margin:0 7px 7px 0;text-align:center;cursor:pointer;border-radius:3px;font-size:18px;color:#444;box-shadow:0 0 0 1px #dddddd}.iconpicker .iconpicker-item .fa{line-height:28px}.iconpicker .iconpicker-item:hover:not(.iconpicker-selected){background-color:#eeeeee}.iconpicker .iconpicker-item.iconpicker-selected{box-shadow:none;background:#ddd}.iconpicker-component{cursor:pointer}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .cherry-ui-iconpicker-group {
2
+ max-width: 230px;
3
+ position: relative; }
4
+ .cherry-ui-iconpicker-group .input-group-addon {
5
+ position: absolute;
6
+ width: 36px;
7
+ height: 36px;
8
+ left: 0px;
9
+ top: 0px;
10
+ background: #f1f1f1;
11
+ font-size: 14px;
12
+ line-height: 36px;
13
+ text-align: center;
14
+ border-radius: 3px 0 0 3px;
15
+ border-right: 1px solid #dddcdc;
16
+ margin: 7px; }
17
+ .cherry-ui-iconpicker-group .cherry-ui-text {
18
+ font-size: 14px;
19
+ line-height: 20px;
20
+ color: #23282d;
21
+ background-color: #f1f1f1;
22
+ border-radius: 2px;
23
+ padding: 10px 20px;
24
+ height: 50px;
25
+ border: 1px solid #f1f1f1;
26
+ box-shadow: none;
27
+ padding-left: 60px; }
28
+ .cherry-ui-iconpicker-group .cherry-ui-text:focus {
29
+ border-color: rgba(72, 197, 105, 0.6);
30
+ box-shadow: 0 0 2px rgba(72, 197, 105, 0.6); }
31
+
32
+ .iconpicker-popover.popover {
33
+ position: absolute;
34
+ top: 0;
35
+ left: 0;
36
+ display: none;
37
+ max-width: none;
38
+ padding: 1px;
39
+ text-align: left;
40
+ width: 242px;
41
+ background: #f0f0f0;
42
+ z-index: 999; }
43
+
44
+ .iconpicker-popover.popover.top,
45
+ .iconpicker-popover.popover.topLeftCorner,
46
+ .iconpicker-popover.popover.topLeft,
47
+ .iconpicker-popover.popover.topRight,
48
+ .iconpicker-popover.popover.topRightCorner {
49
+ margin-top: -10px; }
50
+
51
+ .iconpicker-popover.popover.right,
52
+ .iconpicker-popover.popover.rightTop,
53
+ .iconpicker-popover.popover.rightBottom {
54
+ margin-left: 10px; }
55
+
56
+ .iconpicker-popover.popover.bottom,
57
+ .iconpicker-popover.popover.bottomRightCorner,
58
+ .iconpicker-popover.popover.bottomRight,
59
+ .iconpicker-popover.popover.bottomLeft,
60
+ .iconpicker-popover.popover.bottomLeftCorner {
61
+ margin-top: 10px; }
62
+
63
+ .iconpicker-popover.popover.left,
64
+ .iconpicker-popover.popover.leftBottom,
65
+ .iconpicker-popover.popover.leftTop {
66
+ margin-left: -10px; }
67
+
68
+ .iconpicker-popover.popover.inline {
69
+ margin: 0 0 14px 0;
70
+ position: relative;
71
+ display: inline-block;
72
+ opacity: 1;
73
+ top: auto;
74
+ left: auto;
75
+ bottom: auto;
76
+ right: auto;
77
+ max-width: 100%;
78
+ box-shadow: none;
79
+ z-index: auto;
80
+ vertical-align: top; }
81
+
82
+ .iconpicker-popover.popover.inline > .arrow {
83
+ display: none; }
84
+
85
+ .dropdown-menu .iconpicker-popover.inline {
86
+ margin: 0;
87
+ border: none; }
88
+
89
+ .dropdown-menu.iconpicker-container {
90
+ padding: 0; }
91
+
92
+ .iconpicker-popover.popover .popover-title {
93
+ padding: 14px;
94
+ font-size: 14px;
95
+ line-height: 16px;
96
+ border-bottom: 1px solid #ebebeb;
97
+ background-color: #f0f0f0; }
98
+
99
+ .iconpicker-popover.popover .popover-title input[type=search].iconpicker-search {
100
+ margin: 0 0 2px 0; }
101
+
102
+ .iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search {
103
+ margin-top: 14px; }
104
+
105
+ .iconpicker-popover.popover .popover-content {
106
+ padding: 0px;
107
+ text-align: center; }
108
+
109
+ .iconpicker-popover .popover-footer {
110
+ float: none;
111
+ clear: both;
112
+ padding: 14px;
113
+ text-align: right;
114
+ margin: 0;
115
+ border-top: 1px solid #ebebeb;
116
+ background-color: #f0f0f0; }
117
+
118
+ .iconpicker-popover .popover-footer:before,
119
+ .iconpicker-popover .popover-footer:after {
120
+ content: " ";
121
+ display: table; }
122
+
123
+ .iconpicker-popover .popover-footer:after {
124
+ clear: both; }
125
+
126
+ .iconpicker-popover .popover-footer .iconpicker-btn {
127
+ margin-left: 10px; }
128
+
129
+ .iconpicker-popover .popover-footer input[type=search].iconpicker-search {
130
+ /*width:auto;
131
+ float:left;*/
132
+ margin-bottom: 14px; }
133
+
134
+ .iconpicker-popover.popover > .arrow,
135
+ .iconpicker-popover.popover > .arrow:after {
136
+ position: absolute;
137
+ display: block;
138
+ width: 0;
139
+ height: 0;
140
+ border-color: transparent;
141
+ border-style: solid; }
142
+
143
+ .iconpicker-popover.popover > .arrow {
144
+ border-width: 11px; }
145
+
146
+ .iconpicker-popover.popover > .arrow:after {
147
+ border-width: 10px;
148
+ content: ""; }
149
+
150
+ .iconpicker-popover.popover.top > .arrow,
151
+ .iconpicker-popover.popover.topLeft > .arrow,
152
+ .iconpicker-popover.popover.topRight > .arrow {
153
+ left: 50%;
154
+ margin-left: -11px;
155
+ border-bottom-width: 0;
156
+ border-top-color: #f0f0f0;
157
+ bottom: -11px; }
158
+
159
+ .iconpicker-popover.popover.top > .arrow:after,
160
+ .iconpicker-popover.popover.topLeft > .arrow:after,
161
+ .iconpicker-popover.popover.topRight > .arrow:after {
162
+ content: " ";
163
+ bottom: 1px;
164
+ margin-left: -10px;
165
+ border-bottom-width: 0;
166
+ border-top-color: #ffffff; }
167
+
168
+ .iconpicker-popover.popover.topLeft > .arrow {
169
+ left: 14px;
170
+ margin-left: 0; }
171
+
172
+ .iconpicker-popover.popover.topRight > .arrow {
173
+ left: auto;
174
+ right: 14px;
175
+ margin-left: 0; }
176
+
177
+ .iconpicker-popover.popover.right > .arrow,
178
+ .iconpicker-popover.popover.rightTop > .arrow,
179
+ .iconpicker-popover.popover.rightBottom > .arrow {
180
+ top: 50%;
181
+ left: -11px;
182
+ margin-top: -11px;
183
+ border-left-width: 0;
184
+ border-right-color: #f0f0f0; }
185
+
186
+ .iconpicker-popover.popover.right > .arrow:after,
187
+ .iconpicker-popover.popover.rightTop > .arrow:after,
188
+ .iconpicker-popover.popover.rightBottom > .arrow:after {
189
+ content: " ";
190
+ left: 1px;
191
+ bottom: -10px;
192
+ border-left-width: 0;
193
+ border-right-color: #ffffff; }
194
+
195
+ .iconpicker-popover.popover.rightTop > .arrow {
196
+ top: auto;
197
+ bottom: 14px;
198
+ margin-top: 0; }
199
+
200
+ .iconpicker-popover.popover.rightBottom > .arrow {
201
+ top: 14px;
202
+ margin-top: 0; }
203
+
204
+ .iconpicker-popover.popover.bottom > .arrow,
205
+ .iconpicker-popover.popover.bottomRight > .arrow,
206
+ .iconpicker-popover.popover.bottomLeft > .arrow {
207
+ left: 50%;
208
+ margin-left: -11px;
209
+ border-top-width: 0;
210
+ border-bottom-color: #f0f0f0;
211
+ top: -11px; }
212
+
213
+ .iconpicker-popover.popover.bottom > .arrow:after,
214
+ .iconpicker-popover.popover.bottomRight > .arrow:after,
215
+ .iconpicker-popover.popover.bottomLeft > .arrow:after {
216
+ content: " ";
217
+ top: 1px;
218
+ margin-left: -10px;
219
+ border-top-width: 0;
220
+ border-bottom-color: #f0f0f0; }
221
+
222
+ .iconpicker-popover.popover.bottomLeft > .arrow {
223
+ left: 14px;
224
+ margin-left: 0; }
225
+
226
+ .iconpicker-popover.popover.bottomRight > .arrow {
227
+ left: auto;
228
+ right: 14px;
229
+ margin-left: 0; }
230
+
231
+ .iconpicker-popover.popover.left > .arrow,
232
+ .iconpicker-popover.popover.leftBottom > .arrow,
233
+ .iconpicker-popover.popover.leftTop > .arrow {
234
+ top: 50%;
235
+ right: -11px;
236
+ margin-top: -11px;
237
+ border-right-width: 0;
238
+ border-left-color: #f0f0f0; }
239
+
240
+ .iconpicker-popover.popover.left > .arrow:after,
241
+ .iconpicker-popover.popover.leftBottom > .arrow:after,
242
+ .iconpicker-popover.popover.leftTop > .arrow:after {
243
+ content: " ";
244
+ right: 1px;
245
+ border-right-width: 0;
246
+ border-left-color: #ffffff;
247
+ bottom: -10px; }
248
+
249
+ .iconpicker-popover.popover.leftBottom > .arrow {
250
+ top: 14px;
251
+ margin-top: 0; }
252
+
253
+ .iconpicker-popover.popover.leftTop > .arrow {
254
+ top: auto;
255
+ bottom: 14px;
256
+ margin-top: 0; }
257
+
258
+ .iconpicker {
259
+ position: relative;
260
+ text-align: left;
261
+ text-shadow: none;
262
+ line-height: 0;
263
+ display: block;
264
+ margin: 0;
265
+ overflow: hidden; }
266
+
267
+ .iconpicker * {
268
+ box-sizing: content-box;
269
+ position: relative; }
270
+
271
+ .iconpicker:before,
272
+ .iconpicker:after {
273
+ content: " ";
274
+ display: table; }
275
+
276
+ .iconpicker:after {
277
+ clear: both; }
278
+
279
+ .iconpicker .iconpicker-items {
280
+ position: relative;
281
+ clear: both;
282
+ float: none;
283
+ padding: 10px 0 0 10px;
284
+ background: #fff;
285
+ margin: 0;
286
+ overflow: hidden;
287
+ overflow-y: auto;
288
+ min-height: 55px;
289
+ max-height: 275px; }
290
+
291
+ .iconpicker .iconpicker-items:before,
292
+ .iconpicker .iconpicker-items:after {
293
+ content: " ";
294
+ display: table; }
295
+
296
+ .iconpicker .iconpicker-items:after {
297
+ clear: both; }
298
+
299
+ .iconpicker .iconpicker-item {
300
+ float: left;
301
+ width: 28px;
302
+ height: 28px;
303
+ line-height: 28px;
304
+ margin: 0 7px 7px 0;
305
+ text-align: center;
306
+ cursor: pointer;
307
+ border-radius: 3px;
308
+ font-size: 18px;
309
+ color: #444;
310
+ box-shadow: 0 0 0 1px #dddddd
311
+ /*&:nth-child(4n+4) {
312
+ margin-right: 0;
313
+ }
314
+ &:nth-last-child(-n+4) {
315
+ margin-bottom: 0;
316
+ }*/ }
317
+
318
+ .iconpicker .iconpicker-item:hover:not(.iconpicker-selected) {
319
+ background-color: #eeeeee; }
320
+
321
+ .iconpicker .iconpicker-item.iconpicker-selected {
322
+ box-shadow: none;
323
+ background: #ddd; }
324
+
325
+ .iconpicker-component {
326
+ cursor: pointer; }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/min/ui-iconpicker.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,i){"use strict";i.utilites.namespace("ui_elements.iconpicker"),i.ui_elements.iconpicker={init:function(){e(document).on("ready",this.render).on("cherry-ui-elements-init",this.render)},render:function(i){var n,t,c,r=i._target?i._target:e("body"),o=e('.cherry-ui-iconpicker:not([name*="__i__"])',r);o.each(function(){n=e(this),t=n.data("set"),c=window[t],n.length&&c.icons&&n.iconpicker({icons:c.icons,iconBaseClass:c.iconBase,iconClassPrefix:c.iconPrefix,animation:!1,fullClassFormatter:function(e){return c.iconBase+" "+c.iconPrefix+e}}).on("iconpickerUpdated",function(){e(this).trigger("change")}),c&&e("head").append('<link rel="stylesheet" type="text/css" href="'+c.iconCSS+'"">')})}},i.ui_elements.iconpicker.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,i){"use strict";i.utilites.namespace("ui_elements.iconpicker"),i.ui_elements.iconpicker={init:function(){e(document).on("ready",this.render),e(window).on("cherry-ui-elements-init",this.render)},render:function(i){var n,t,c,r=i._target?i._target:e("body"),o=e('.cherry-ui-iconpicker:not([name*="__i__"])',r);o.each(function(){n=e(this),t=n.data("set"),c=window[t],n.length&&c.icons&&n.iconpicker({icons:c.icons,iconBaseClass:c.iconBase,iconClassPrefix:c.iconPrefix,fullClassFormatter:function(e){return c.iconBase+" "+c.iconPrefix+e}}).on("iconpickerUpdated",function(){e(this).trigger("change")}),c&&e("body").append('<link rel="stylesheet" type="text/css" href="'+c.iconCSS+'"">')})}},i.ui_elements.iconpicker.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/ui-iconpicker.js CHANGED
@@ -7,9 +7,8 @@
7
  CherryJsCore.utilites.namespace( 'ui_elements.iconpicker' );
8
  CherryJsCore.ui_elements.iconpicker = {
9
  init: function() {
10
- $( document )
11
- .on( 'ready', this.render )
12
- .on( 'cherry-ui-elements-init', this.render );
13
  },
14
  render: function( event ) {
15
  var target = ( event._target ) ? event._target : $( 'body' ),
@@ -28,7 +27,6 @@
28
  icons: setData.icons,
29
  iconBaseClass: setData.iconBase,
30
  iconClassPrefix: setData.iconPrefix,
31
- animation: false,
32
  fullClassFormatter: function( val ) {
33
  return setData.iconBase + ' ' + setData.iconPrefix + val;
34
  }
@@ -38,7 +36,7 @@
38
  }
39
 
40
  if ( setData ) {
41
- $( 'head' ).append( '<link rel="stylesheet" type="text/css" href="' + setData.iconCSS + '"">' );
42
  }
43
  } );
44
  }
7
  CherryJsCore.utilites.namespace( 'ui_elements.iconpicker' );
8
  CherryJsCore.ui_elements.iconpicker = {
9
  init: function() {
10
+ $( document ).on( 'ready', this.render );
11
+ $( window ).on( 'cherry-ui-elements-init', this.render );
 
12
  },
13
  render: function( event ) {
14
  var target = ( event._target ) ? event._target : $( 'body' ),
27
  icons: setData.icons,
28
  iconBaseClass: setData.iconBase,
29
  iconClassPrefix: setData.iconPrefix,
 
30
  fullClassFormatter: function( val ) {
31
  return setData.iconBase + ' ' + setData.iconPrefix + val;
32
  }
36
  }
37
 
38
  if ( setData ) {
39
+ $( 'body' ).append( '<link rel="stylesheet" type="text/css" href="' + setData.iconCSS + '"">' );
40
  }
41
  } );
42
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/assets/ui-iconpicker.scss CHANGED
@@ -17,9 +17,6 @@
17
  border-radius: 3px 0 0 3px;
18
  border-right: 1px solid #dddcdc;
19
  margin: 7px;
20
- .fa {
21
- line-height: 36px;
22
- }
23
  }
24
  .cherry-ui-text{
25
  @include input();
@@ -125,6 +122,8 @@
125
  margin-left: 10px;
126
  }
127
  .iconpicker-popover .popover-footer input[type=search].iconpicker-search {
 
 
128
  margin-bottom: 14px;
129
  }
130
  .iconpicker-popover.popover > .arrow,
@@ -306,9 +305,12 @@
306
  font-size: 18px;
307
  color: #444;
308
  box-shadow: 0 0 0 1px #dddddd;
309
- .fa {
310
- line-height: 28px;
311
- }
 
 
 
312
  }
313
  .iconpicker .iconpicker-item:hover:not(.iconpicker-selected) {
314
  background-color: #eeeeee;
17
  border-radius: 3px 0 0 3px;
18
  border-right: 1px solid #dddcdc;
19
  margin: 7px;
 
 
 
20
  }
21
  .cherry-ui-text{
22
  @include input();
122
  margin-left: 10px;
123
  }
124
  .iconpicker-popover .popover-footer input[type=search].iconpicker-search {
125
+ /*width:auto;
126
+ float:left;*/
127
  margin-bottom: 14px;
128
  }
129
  .iconpicker-popover.popover > .arrow,
305
  font-size: 18px;
306
  color: #444;
307
  box-shadow: 0 0 0 1px #dddddd;
308
+ /*&:nth-child(4n+4) {
309
+ margin-right: 0;
310
+ }
311
+ &:nth-last-child(-n+4) {
312
+ margin-bottom: 0;
313
+ }*/
314
  }
315
  .iconpicker .iconpicker-item:hover:not(.iconpicker-selected) {
316
  background-color: #eeeeee;
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-iconpicker/ui-iconpicker.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -81,7 +81,7 @@ if ( ! class_exists( 'UI_Iconpicker' ) ) {
81
  * @since 4.0.0
82
  */
83
  function __construct( $args = array() ) {
84
- $this->defaults_settings['id'] = 'cherry-ui-input-icon-' . uniqid();
85
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
86
 
87
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -108,10 +108,8 @@ if ( ! class_exists( 'UI_Iconpicker' ) ) {
108
  */
109
  public function render() {
110
  $html = '';
111
- $class = $this->settings['class'];
112
- $class .= ' ' . $this->settings['master'];
113
 
114
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
115
  if ( '' !== $this->settings['label'] ) {
116
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
117
  }
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
81
  * @since 4.0.0
82
  */
83
  function __construct( $args = array() ) {
84
+ $this->defaults_settings['id'] = 'cherry-ui-input-icon-'.uniqid();
85
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
86
 
87
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
108
  */
109
  public function render() {
110
  $html = '';
 
 
111
 
112
+ $html .= '<div class="cherry-ui-container ' . esc_attr( $this->settings['master'] ) . '">';
113
  if ( '' !== $this->settings['label'] ) {
114
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
115
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-media/assets/min/ui-media.min.js CHANGED
@@ -1,156 +1 @@
1
- /**
2
- * Media
3
- */
4
- (function( $, CherryJsCore){
5
- 'use strict';
6
-
7
- CherryJsCore.utilites.namespace('ui_elements.media');
8
- CherryJsCore.ui_elements.media = {
9
- init: function () {
10
- $( document )
11
- .on( 'ready', this.render )
12
- .on( 'cherry-ui-elements-init', this.render );
13
- },
14
- render: function ( event ) {
15
- var target = ( event._target ) ? event._target : $( 'body' ),
16
- buttons = $('.cherry-upload-button', target);
17
-
18
- buttons.each( function() {
19
- var button = $( this ),
20
- button_parent = button.closest('.cherry-ui-media-wrap'),
21
- settings = {
22
- input: $('.cherry-upload-input', button_parent),
23
- img_holder: $('.cherry-upload-preview', button_parent),
24
- title_text: button.data('title'),
25
- multiple: button.data('multi-upload'),
26
- library_type: button.data('library-type'),
27
- },
28
- cherry_uploader = wp.media.frames.file_frame = wp.media({
29
- title: settings.title_text,
30
- button: { text: settings.title_text },
31
- multiple: settings.multiple,
32
- library : { type : settings.library_type }
33
- });
34
-
35
- if ( ! button_parent.has('input[name*="__i__"]')[ 0 ] ) {
36
- button.on( 'click', function() {
37
- cherry_uploader.open();
38
- return !1;
39
- } ); // end click
40
-
41
- cherry_uploader.on('select', function() {
42
- var attachment = cherry_uploader.state().get('selection').toJSON(),
43
- count = 0,
44
- input_value = '',
45
- new_img_object = $('.cherry-all-images-wrap', settings.img_holder),
46
- new_img = '',
47
- delimiter = '';
48
-
49
- if ( settings.multiple ) {
50
- input_value = settings.input.val();
51
- delimiter = ',';
52
- new_img = new_img_object.html();
53
- }
54
-
55
- while( attachment[ count ] ) {
56
- var img_data = attachment[count],
57
- return_data = img_data.id,
58
- mimeType = img_data.mime,
59
- img_src = '',
60
- thumb = '';
61
-
62
- switch (mimeType) {
63
- case 'image/jpeg':
64
- case 'image/png':
65
- case 'image/gif':
66
- if( img_data.sizes !== undefined){
67
- img_src = img_data.sizes.thumbnail ? img_data.sizes.thumbnail.url : img_data.sizes.full.url;
68
- }
69
- thumb = '<img src="' + img_src + '" alt="" data-img-attr="'+return_data+'">';
70
- break;
71
- case 'image/x-icon':
72
- thumb = '<span class="dashicons dashicons-format-image"></span>';
73
- break;
74
- case 'video/mpeg':
75
- case 'video/mp4':
76
- case 'video/quicktime':
77
- case 'video/webm':
78
- case 'video/ogg':
79
- thumb = '<span class="dashicons dashicons-format-video"></span>';
80
- break;
81
- case 'audio/mpeg':
82
- case 'audio/wav':
83
- case 'audio/ogg':
84
- thumb = '<span class="dashicons dashicons-format-audio"></span>';
85
- break;
86
- }
87
-
88
- new_img += '<div class="cherry-image-wrap">'+
89
- '<div class="inner">'+
90
- '<div class="preview-holder" data-id-attr="' + return_data +'"><div class="centered">' + thumb + '</div></div>'+
91
- '<a class="cherry-remove-image" href="#"><i class="dashicons dashicons-no"></i></a>'+
92
- '<span class="title">' + img_data.title + '</span>'+
93
- '</div>'+
94
- '</div>';
95
-
96
- input_value += delimiter+return_data;
97
- count++;
98
- }
99
-
100
- settings.input.val(input_value.replace(/(^,)/, '')).trigger( 'change' );
101
- new_img_object.html(new_img);
102
- } );
103
-
104
- var removeMediaPreview = function( item ) {
105
- var button_parent = item.closest('.cherry-ui-media-wrap'),
106
- input = $('.cherry-upload-input', button_parent),
107
- img_holder = item.parent().parent('.cherry-image-wrap'),
108
- img_attr = $('.preview-holder', img_holder).data('id-attr'),
109
- input_value = input.attr('value'),
110
- pattern = new RegExp(''+img_attr+'(,*)', 'i');
111
-
112
- input_value = input_value.replace(pattern, '');
113
- input_value = input_value.replace(/(,$)/, '');
114
- input.attr({'value':input_value}).trigger( 'change' );
115
- img_holder.remove();
116
- };
117
-
118
- // This function remove upload image
119
- button_parent.on('click', '.cherry-remove-image', function () {
120
- removeMediaPreview( $(this) );
121
- return !1;
122
- });
123
- }
124
- } ); // end each
125
-
126
- // Image ordering
127
- $('.cherry-all-images-wrap', target).sortable( {
128
- items: 'div.cherry-image-wrap',
129
- cursor: 'move',
130
- scrollSensitivity: 40,
131
- forcePlaceholderSize: true,
132
- forceHelperSize: false,
133
- helper: 'clone',
134
- opacity: 0.65,
135
- placeholder: 'cherry-media-thumb-sortable-placeholder',
136
- start:function(){},
137
- stop:function(){},
138
- update: function() {
139
- var attachment_ids = '';
140
- $('.cherry-image-wrap', this).each(
141
- function() {
142
- var attachment_id = $('.preview-holder', this).data( 'id-attr' );
143
- attachment_ids = attachment_ids + attachment_id + ',';
144
- }
145
- );
146
- attachment_ids = attachment_ids.substr(0, attachment_ids.lastIndexOf(',') );
147
- $(this).parent().siblings('.cherry-element-wrap').find('input.cherry-upload-input').val( attachment_ids ).trigger( 'change' );
148
- }
149
- } );
150
- // End Image ordering
151
- }
152
- };
153
-
154
- CherryJsCore.ui_elements.media.init();
155
-
156
- }( jQuery , window.CherryJsCore ) );
1
+ !function(e,a){"use strict";a.utilites.namespace("ui_elements.media"),a.ui_elements.media={init:function(){e(document).on("ready",this.render),e(window).on("cherry-ui-elements-init",this.render)},render:function(a){var i=a._target?a._target:e("body"),r=e(".upload-button",i);r.each(function(){var a=e(this),i=a.closest(".cherry-ui-media-wrap"),r={input:e(".cherry-upload-input",i),img_holder:e(".cherry-upload-preview",i),title_text:a.data("title"),multiple:a.data("multi-upload"),library_type:a.data("library-type")},t=wp.media.frames.file_frame=wp.media({title:r.title_text,button:{text:r.title_text},multiple:r.multiple,library:{type:r.library_type}});a.on("click",function(){return t.open(),!1}),t.on("select",function(){var a=t.state().get("selection").toJSON(),i=0,n="",c=e(".cherry-all-images-wrap",r.img_holder),l="",o="";for(r.multiple&&(n=r.input.val(),o=",",l=c.html());a[i];){var d=a[i],u=d.id,p=d.mime,m="",h="";switch(p){case"image/jpeg":case"image/png":case"image/gif":void 0!==d.sizes&&(m=d.sizes.thumbnail?d.sizes.thumbnail.url:d.sizes.full.url),h='<img src="'+m+'" alt="" data-img-attr="'+u+'">';break;case"image/x-icon":h='<span class="dashicons dashicons-format-image"></span>';break;case"video/mpeg":case"video/mp4":case"video/quicktime":case"video/webm":case"video/ogg":h='<span class="dashicons dashicons-format-video"></span>';break;case"audio/mpeg":case"audio/wav":case"audio/ogg":h='<span class="dashicons dashicons-format-audio"></span>'}l+='<div class="cherry-image-wrap"><div class="inner"><div class="preview-holder" data-id-attr="'+u+'"><div class="centered">'+h+'</div></div><a class="cherry-remove-image" href="#"><i class="dashicons dashicons-no"></i></a><span class="title">'+d.title+"</span></div></div>",n+=o+u,i++}r.input.val(n.replace(/(^,)/,"")).trigger("change"),c.html(l),e(".cherry-remove-image").on("click",function(){return s(e(this)),!1})});var s=function(e){var a=e.closest(".cherry-ui-media-wrap"),i=jQuery(".cherry-upload-input",a),r=e.parent().parent(".cherry-image-wrap"),t=jQuery(".preview-holder",r).data("id-attr"),s=i.attr("value"),n=new RegExp(""+t+"(,*)","i");s=s.replace(n,""),s=s.replace(/(,$)/,""),i.attr({value:s}).trigger("change"),r.remove()};jQuery(".cherry-remove-image",i).on("click",function(){return s(jQuery(this)),!1})}),jQuery(".cherry-all-images-wrap",i).sortable({items:"div.cherry-image-wrap",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,placeholder:"cherry-media-thumb-sortable-placeholder",start:function(){},stop:function(){},update:function(){var e="";jQuery(".cherry-image-wrap",this).each(function(){var a=jQuery(".preview-holder",this).data("id-attr");e=e+a+","}),e=e.substr(0,e.lastIndexOf(",")),jQuery(this).parent().siblings(".cherry-element-wrap").find("input.cherry-upload-input").val(e).trigger("change")}})}},a.ui_elements.media.init()}(jQuery,window.CherryJsCore);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-media/assets/ui-media.js CHANGED
@@ -7,13 +7,12 @@
7
  CherryJsCore.utilites.namespace('ui_elements.media');
8
  CherryJsCore.ui_elements.media = {
9
  init: function () {
10
- $( document )
11
- .on( 'ready', this.render )
12
- .on( 'cherry-ui-elements-init', this.render );
13
  },
14
  render: function ( event ) {
15
  var target = ( event._target ) ? event._target : $( 'body' ),
16
- buttons = $('.cherry-upload-button', target);
17
 
18
  buttons.each( function() {
19
  var button = $( this ),
@@ -32,99 +31,103 @@
32
  library : { type : settings.library_type }
33
  });
34
 
35
- if ( ! button_parent.has('input[name*="__i__"]')[ 0 ] ) {
36
- button.on( 'click', function() {
37
- cherry_uploader.open();
38
- return !1;
39
- } ); // end click
40
-
41
- cherry_uploader.on('select', function() {
42
- var attachment = cherry_uploader.state().get('selection').toJSON(),
43
- count = 0,
44
- input_value = '',
45
- new_img_object = $('.cherry-all-images-wrap', settings.img_holder),
46
- new_img = '',
47
- delimiter = '';
48
-
49
- if ( settings.multiple ) {
50
- input_value = settings.input.val();
51
- delimiter = ',';
52
- new_img = new_img_object.html();
53
- }
54
-
55
- while( attachment[ count ] ) {
56
- var img_data = attachment[count],
57
- return_data = img_data.id,
58
- mimeType = img_data.mime,
59
- img_src = '',
60
- thumb = '';
61
-
62
- switch (mimeType) {
63
- case 'image/jpeg':
64
- case 'image/png':
65
- case 'image/gif':
66
- if( img_data.sizes !== undefined){
67
- img_src = img_data.sizes.thumbnail ? img_data.sizes.thumbnail.url : img_data.sizes.full.url;
68
- }
69
- thumb = '<img src="' + img_src + '" alt="" data-img-attr="'+return_data+'">';
70
- break;
71
- case 'image/x-icon':
72
- thumb = '<span class="dashicons dashicons-format-image"></span>';
73
- break;
74
- case 'video/mpeg':
75
- case 'video/mp4':
76
- case 'video/quicktime':
77
- case 'video/webm':
78
- case 'video/ogg':
79
- thumb = '<span class="dashicons dashicons-format-video"></span>';
80
- break;
81
- case 'audio/mpeg':
82
- case 'audio/wav':
83
- case 'audio/ogg':
84
- thumb = '<span class="dashicons dashicons-format-audio"></span>';
85
- break;
86
- }
87
-
88
- new_img += '<div class="cherry-image-wrap">'+
89
- '<div class="inner">'+
90
- '<div class="preview-holder" data-id-attr="' + return_data +'"><div class="centered">' + thumb + '</div></div>'+
91
- '<a class="cherry-remove-image" href="#"><i class="dashicons dashicons-no"></i></a>'+
92
- '<span class="title">' + img_data.title + '</span>'+
93
- '</div>'+
94
- '</div>';
95
-
96
- input_value += delimiter+return_data;
97
- count++;
98
- }
99
-
100
- settings.input.val(input_value.replace(/(^,)/, '')).trigger( 'change' );
101
- new_img_object.html(new_img);
102
- } );
103
-
104
- var removeMediaPreview = function( item ) {
105
- var button_parent = item.closest('.cherry-ui-media-wrap'),
106
- input = $('.cherry-upload-input', button_parent),
107
- img_holder = item.parent().parent('.cherry-image-wrap'),
108
- img_attr = $('.preview-holder', img_holder).data('id-attr'),
109
- input_value = input.attr('value'),
110
- pattern = new RegExp(''+img_attr+'(,*)', 'i');
111
-
112
- input_value = input_value.replace(pattern, '');
113
- input_value = input_value.replace(/(,$)/, '');
114
- input.attr({'value':input_value}).trigger( 'change' );
115
- img_holder.remove();
116
- };
117
-
118
- // This function remove upload image
119
- button_parent.on('click', '.cherry-remove-image', function () {
120
- removeMediaPreview( $(this) );
121
- return !1;
122
- });
123
- }
 
 
 
 
124
  } ); // end each
125
 
126
  // Image ordering
127
- $('.cherry-all-images-wrap', target).sortable( {
128
  items: 'div.cherry-image-wrap',
129
  cursor: 'move',
130
  scrollSensitivity: 40,
@@ -137,14 +140,14 @@
137
  stop:function(){},
138
  update: function() {
139
  var attachment_ids = '';
140
- $('.cherry-image-wrap', this).each(
141
  function() {
142
- var attachment_id = $('.preview-holder', this).data( 'id-attr' );
143
  attachment_ids = attachment_ids + attachment_id + ',';
144
  }
145
  );
146
  attachment_ids = attachment_ids.substr(0, attachment_ids.lastIndexOf(',') );
147
- $(this).parent().siblings('.cherry-element-wrap').find('input.cherry-upload-input').val( attachment_ids ).trigger( 'change' );
148
  }
149
  } );
150
  // End Image ordering
@@ -153,4 +156,4 @@
153
 
154
  CherryJsCore.ui_elements.media.init();
155
 
156
- }( jQuery , window.CherryJsCore ) );
7
  CherryJsCore.utilites.namespace('ui_elements.media');
8
  CherryJsCore.ui_elements.media = {
9
  init: function () {
10
+ $( document ).on( 'ready', this.render );
11
+ $( window ).on( 'cherry-ui-elements-init', this.render );
 
12
  },
13
  render: function ( event ) {
14
  var target = ( event._target ) ? event._target : $( 'body' ),
15
+ buttons = $('.upload-button', target);
16
 
17
  buttons.each( function() {
18
  var button = $( this ),
31
  library : { type : settings.library_type }
32
  });
33
 
34
+ button.on( 'click', function() {
35
+ cherry_uploader.open();
36
+ return !1;
37
+ } ); // end click
38
+
39
+ cherry_uploader.on('select', function() {
40
+ var attachment = cherry_uploader.state().get('selection').toJSON(),
41
+ count = 0,
42
+ input_value = '',
43
+ new_img_object = $('.cherry-all-images-wrap', settings.img_holder),
44
+ new_img = '',
45
+ delimiter = '';
46
+
47
+ if ( settings.multiple ) {
48
+ input_value = settings.input.val();
49
+ delimiter = ',';
50
+ new_img = new_img_object.html();
51
+ }
52
+
53
+ while( attachment[ count ] ) {
54
+ var img_data = attachment[count],
55
+ return_data = img_data.id,
56
+ mimeType = img_data.mime,
57
+ img_src = '',
58
+ thumb = '';
59
+
60
+ switch (mimeType) {
61
+ case 'image/jpeg':
62
+ case 'image/png':
63
+ case 'image/gif':
64
+ if( img_data.sizes !== undefined){
65
+ img_src = img_data.sizes.thumbnail ? img_data.sizes.thumbnail.url : img_data.sizes.full.url;
66
+ }
67
+ thumb = '<img src="' + img_src + '" alt="" data-img-attr="'+return_data+'">';
68
+ break;
69
+ case 'image/x-icon':
70
+ thumb = '<span class="dashicons dashicons-format-image"></span>';
71
+ break;
72
+ case 'video/mpeg':
73
+ case 'video/mp4':
74
+ case 'video/quicktime':
75
+ case 'video/webm':
76
+ case 'video/ogg':
77
+ thumb = '<span class="dashicons dashicons-format-video"></span>';
78
+ break;
79
+ case 'audio/mpeg':
80
+ case 'audio/wav':
81
+ case 'audio/ogg':
82
+ thumb = '<span class="dashicons dashicons-format-audio"></span>';
83
+ break;
84
+ }
85
+
86
+ new_img += '<div class="cherry-image-wrap">'+
87
+ '<div class="inner">'+
88
+ '<div class="preview-holder" data-id-attr="' + return_data +'"><div class="centered">' + thumb + '</div></div>'+
89
+ '<a class="cherry-remove-image" href="#"><i class="dashicons dashicons-no"></i></a>'+
90
+ '<span class="title">' + img_data.title + '</span>'+
91
+ '</div>'+
92
+ '</div>';
93
+
94
+ input_value += delimiter+return_data;
95
+ count++;
96
+ }
97
+
98
+ settings.input.val(input_value.replace(/(^,)/, '')).trigger( 'change' );
99
+ new_img_object.html(new_img);
100
+
101
+ $('.cherry-remove-image').on('click', function () {
102
+ removeMediaPreview( $(this) );
103
+ return !1;
104
+ });
105
+ } );
106
+
107
+ var removeMediaPreview = function( item ) {
108
+ var button_parent = item.closest('.cherry-ui-media-wrap'),
109
+ input = jQuery('.cherry-upload-input', button_parent),
110
+ img_holder = item.parent().parent('.cherry-image-wrap'),
111
+ img_attr = jQuery('.preview-holder', img_holder).data('id-attr'),
112
+ input_value = input.attr('value'),
113
+ pattern = new RegExp(''+img_attr+'(,*)', 'i');
114
+
115
+ input_value = input_value.replace(pattern, '');
116
+ input_value = input_value.replace(/(,$)/, '');
117
+ input.attr({'value':input_value}).trigger( 'change' );
118
+ img_holder.remove();
119
+
120
+ };
121
+
122
+ // This function remove upload image
123
+ jQuery('.cherry-remove-image', button_parent).on('click', function () {
124
+ removeMediaPreview( jQuery(this) );
125
+ return !1;
126
+ });
127
  } ); // end each
128
 
129
  // Image ordering
130
+ jQuery('.cherry-all-images-wrap', target).sortable( {
131
  items: 'div.cherry-image-wrap',
132
  cursor: 'move',
133
  scrollSensitivity: 40,
140
  stop:function(){},
141
  update: function() {
142
  var attachment_ids = '';
143
+ jQuery('.cherry-image-wrap', this).each(
144
  function() {
145
+ var attachment_id = jQuery('.preview-holder', this).data( 'id-attr' );
146
  attachment_ids = attachment_ids + attachment_id + ',';
147
  }
148
  );
149
  attachment_ids = attachment_ids.substr(0, attachment_ids.lastIndexOf(',') );
150
+ jQuery(this).parent().siblings('.cherry-element-wrap').find('input.cherry-upload-input').val( attachment_ids ).trigger( 'change' );
151
  }
152
  } );
153
  // End Image ordering
156
 
157
  CherryJsCore.ui_elements.media.init();
158
 
159
+ }(jQuery , window.CherryJsCore));
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-media/ui-media.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -21,22 +21,22 @@ if ( ! class_exists( 'UI_Media' ) ) {
21
  * Class for the building UI_Media elements.
22
  */
23
  class UI_Media extends UI_Element implements I_UI {
24
-
25
  /**
26
  * Default settings
27
  *
28
  * @var array
29
  */
 
30
  private $defaults_settings = array(
31
- 'id' => 'cherry-ui-media-id',
32
- 'name' => 'cherry-ui-media-name',
33
- 'value' => '',
34
- 'multi_upload' => true,
35
- 'library_type' => '', // image, video
36
- 'upload_button_text' => 'Choose Media',
37
- 'label' => '',
38
- 'class' => '',
39
- 'master' => '',
40
  );
41
 
42
  /**
@@ -44,10 +44,10 @@ if ( ! class_exists( 'UI_Media' ) ) {
44
  *
45
  * @since 4.0.0
46
  */
47
- public function __construct( $args = array() ) {
48
 
49
- $this->defaults_settings['id'] = 'cherry-ui-media-' . uniqid();
50
- $this->settings = wp_parse_args( $args, $this->defaults_settings );
51
 
52
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
53
  }
@@ -60,88 +60,79 @@ if ( ! class_exists( 'UI_Media' ) ) {
60
  public function render() {
61
  $html = '';
62
 
63
- if ( current_user_can( 'upload_files' ) ) {
64
-
65
- $class = $this->settings['class'] . ' ' . $this->settings['master'];
66
-
67
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
68
- if ( '' != $this->settings['value'] ) {
69
- $this->settings['value'] = str_replace( ' ', '', $this->settings['value'] );
70
- $medias = explode( ',', $this->settings['value'] );
71
- } else {
72
- $this->settings['value'] = '';
73
- $medias = array();
74
- }
75
-
76
- $img_style = ! $this->settings['value'] ? 'style="display:none;"' : '' ;
77
-
78
- if ( '' !== $this->settings['label'] ) {
79
- $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
80
- }
81
- $html .= '<div class="cherry-ui-media-wrap">';
82
- $html .= '<div class="cherry-upload-preview" >';
83
- $html .= '<div class="cherry-all-images-wrap">';
84
-
85
- if ( is_array( $medias ) && ! empty( $medias ) ) {
86
 
87
- foreach ( $medias as $medias_key => $medias_value ) {
 
 
 
 
 
 
 
88
 
89
- $media_title = get_the_title( $medias_value );
90
- $mime_type = get_post_mime_type( $medias_value );
91
- $tmp = wp_get_attachment_metadata( $medias_value );
92
- $img_src = '';
93
- $thumb = '';
94
 
95
- switch ( $mime_type ) {
96
- case 'image/jpeg':
97
- case 'image/png':
98
- case 'image/gif':
99
- $img_src = wp_get_attachment_image_src( $medias_value, 'thumbnail' );
100
- $img_src = $img_src[0];
101
- $thumb = '<img src="' . esc_html( $img_src ) . '" alt="">';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  break;
103
-
104
- case 'image/x-icon':
105
- $thumb = '<span class="dashicons dashicons-format-image"></span>';
106
  break;
107
-
108
- case 'video/mpeg':
109
- case 'video/mp4':
110
- case 'video/quicktime':
111
- case 'video/webm':
112
- case 'video/ogg':
113
  $thumb = '<span class="dashicons dashicons-format-video"></span>';
114
  break;
115
-
116
- case 'audio/mpeg':
117
- case 'audio/wav':
118
- case 'audio/ogg':
119
  $thumb = '<span class="dashicons dashicons-format-audio"></span>';
120
  break;
121
- }
122
- $html .= '<div class="cherry-image-wrap">';
123
- $html .= '<div class="inner">';
124
- $html .= '<div class="preview-holder" data-id-attr="' . esc_attr( $medias_value ) . '">';
125
- $html .= '<div class="centered">';
126
- $html .= $thumb;
127
- $html .= '</div>';
128
  $html .= '</div>';
129
- $html .= '<span class="title">' . $media_title . '</span>';
130
- $html .= '<a class="cherry-remove-image" href="#" title=""><i class="dashicons dashicons-no"></i></a>';
131
  $html .= '</div>';
 
 
132
  $html .= '</div>';
133
- }
134
  }
135
- $html .= '</div>';
136
- $html .= '</div>';
137
- $html .= '<div class="cherry-element-wrap">';
138
- $html .= '<input type="hidden" id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-upload-input" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '" >';
139
- $html .= '<input type="button" class="upload-button cherry-upload-button button-default_" value="' . esc_attr( $this->settings['upload_button_text'] ) . '" data-title="' . esc_attr( $this->settings['upload_button_text'] ) . '" data-multi-upload="' . esc_attr( $this->settings['multi_upload'] ) . '" data-library-type="' . esc_attr( $this->settings['library_type'] ) . '"/>';
140
- $html .= '<div class="clear"></div>';
141
  $html .= '</div>';
142
  $html .= '</div>';
 
 
 
 
 
143
  $html .= '</div>';
144
- }
145
 
146
  return $html;
147
  }
@@ -152,25 +143,23 @@ if ( ! class_exists( 'UI_Media' ) ) {
152
  * @since 4.0.0
153
  */
154
  public static function enqueue_assets() {
155
- if ( current_user_can( 'upload_files' ) ) {
156
- wp_enqueue_media();
157
-
158
- wp_enqueue_script(
159
- 'ui-media-min',
160
- esc_url( Cherry_Core::base_url( 'assets/min/ui-media.min.js', __FILE__ ) ),
161
- array( 'jquery', 'jquery-ui-sortable' ),
162
- '1.0.0',
163
- true
164
- );
165
-
166
- wp_enqueue_style(
167
- 'ui-media-min',
168
- esc_url( Cherry_Core::base_url( 'assets/min/ui-media.min.css', __FILE__ ) ),
169
- array(),
170
- '1.0.0',
171
- 'all'
172
- );
173
- }
174
  }
175
  }
176
  }
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
21
  * Class for the building UI_Media elements.
22
  */
23
  class UI_Media extends UI_Element implements I_UI {
 
24
  /**
25
  * Default settings
26
  *
27
  * @var array
28
  */
29
+
30
  private $defaults_settings = array(
31
+ 'id' => 'cherry-ui-media-id',
32
+ 'name' => 'cherry-ui-media-name',
33
+ 'value' => '',
34
+ 'multi_upload' => true,
35
+ 'library_type' => '', // image, video
36
+ 'upload_button_text' => 'Choose Media',
37
+ 'label' => '',
38
+ 'class' => '',
39
+ 'master' => '',
40
  );
41
 
42
  /**
44
  *
45
  * @since 4.0.0
46
  */
47
+ function __construct( $args = array() ) {
48
 
49
+ $this->defaults_settings['id'] = 'cherry-ui-media-'.uniqid();
50
+ $this->settings = wp_parse_args( $args, $this->defaults_settings );
51
 
52
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
53
  }
60
  public function render() {
61
  $html = '';
62
 
63
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
66
+ if ( '' != $this->settings['value'] ) {
67
+ $this->settings['value'] = str_replace( ' ', '', $this->settings['value'] );
68
+ $medias = explode( ',', $this->settings['value'] );
69
+ } else {
70
+ $this->settings['value'] = '';
71
+ $medias = array();
72
+ }
73
 
74
+ $img_style = ! $this->settings['value'] ? 'style="display:none;"' : '' ;
 
 
 
 
75
 
76
+ if ( '' !== $this->settings['label'] ) {
77
+ $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
78
+ }
79
+ $html .= '<div class="cherry-ui-media-wrap">';
80
+ $html .= '<div class="cherry-upload-preview" >';
81
+ $html .= '<div class="cherry-all-images-wrap">';
82
+ if ( is_array( $medias ) && ! empty( $medias ) ) {
83
+ foreach ( $medias as $medias_key => $medias_value ) {
84
+ $media_title = get_the_title( $medias_value );
85
+ $mime_type = get_post_mime_type( $medias_value );
86
+ $tmp = wp_get_attachment_metadata( $medias_value );
87
+ $img_src = '';
88
+ $thumb = '';
89
+
90
+ switch ( $mime_type ) {
91
+ case 'image/jpeg':
92
+ case 'image/png':
93
+ case 'image/gif':
94
+ $img_src = wp_get_attachment_image_src( $medias_value, 'thumbnail' );
95
+ $img_src = $img_src[0];
96
+ $thumb = '<img src="' . esc_html( $img_src ) . '" alt="">';
97
  break;
98
+ case 'image/x-icon':
99
+ $thumb = '<span class="dashicons dashicons-format-image"></span>';
 
100
  break;
101
+ case 'video/mpeg':
102
+ case 'video/mp4':
103
+ case 'video/quicktime':
104
+ case 'video/webm':
105
+ case 'video/ogg':
 
106
  $thumb = '<span class="dashicons dashicons-format-video"></span>';
107
  break;
108
+ case 'audio/mpeg':
109
+ case 'audio/wav':
110
+ case 'audio/ogg':
 
111
  $thumb = '<span class="dashicons dashicons-format-audio"></span>';
112
  break;
113
+ }
114
+ $html .= '<div class="cherry-image-wrap">';
115
+ $html .= '<div class="inner">';
116
+ $html .= '<div class="preview-holder" data-id-attr="' . esc_attr( $medias_value ) . '">';
117
+ $html .= '<div class="centered">';
118
+ $html .= $thumb;
 
119
  $html .= '</div>';
 
 
120
  $html .= '</div>';
121
+ $html .= '<span class="title">' . $media_title . '</span>';
122
+ $html .= '<a class="cherry-remove-image" href="#" title=""><i class="dashicons dashicons-no"></i></a>';
123
  $html .= '</div>';
124
+ $html .= '</div>';
125
  }
126
+ }
 
 
 
 
 
127
  $html .= '</div>';
128
  $html .= '</div>';
129
+ $html .= '<div class="cherry-element-wrap">';
130
+ $html .= '<input type="hidden" id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-upload-input" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '" >';
131
+ $html .= '<input type="button" class="upload-button button-default_" value="' . esc_attr( $this->settings['upload_button_text'] ) . '" data-title="' . esc_attr( $this->settings['upload_button_text'] ) . '" data-multi-upload="' . esc_attr( $this->settings['multi_upload'] ) . '" data-library-type="' . esc_attr( $this->settings['library_type'] ) . '"/>';
132
+ $html .= '<div class="clear"></div>';
133
+ $html .= '</div>';
134
  $html .= '</div>';
135
+ $html .= '</div>';
136
 
137
  return $html;
138
  }
143
  * @since 4.0.0
144
  */
145
  public static function enqueue_assets() {
146
+ wp_enqueue_media();
147
+
148
+ wp_enqueue_script(
149
+ 'ui-media-min',
150
+ esc_url( Cherry_Core::base_url( 'assets/min/ui-media.min.js', __FILE__ ) ),
151
+ array( 'jquery', 'jquery-ui-sortable' ),
152
+ '1.0.0',
153
+ true
154
+ );
155
+
156
+ wp_enqueue_style(
157
+ 'ui-media-min',
158
+ esc_url( Cherry_Core::base_url( 'assets/min/ui-media.min.css', __FILE__ ) ),
159
+ array(),
160
+ '1.0.0',
161
+ 'all'
162
+ );
 
 
163
  }
164
  }
165
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/min/ui-radio.min.css CHANGED
@@ -1 +1,67 @@
1
- .cherry-ui-container{margin:10px 0 20px 0}label.cherry-label{margin:0 0 5px 0;display:block}.hide{display:none !important}input.cherry-radio-input{display:none}.cherry-radio-item{margin-bottom:10px}.cherry-radio-item:last-child{margin-bottom:0}.cherry-radio-item label{display:inline-block;font-size:14px;line-height:22px;color:#23282d}.cherry-radio-item span{width:25px;height:25px;border-radius:25px;margin-right:10px;cursor:pointer;position:relative;background-color:#f1f1f1;display:inline-block;float:left}.cherry-radio-item span i{width:13px;height:13px;background-color:#298ffc;margin:6px;border-radius:20px;display:inline-block;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:all 0.4s cubic-bezier(0.77, 0, 0.175, 1);transition:all 0.4s cubic-bezier(0.77, 0, 0.175, 1)}.cherry-radio-item .cherry-radio-input:checked+label span i{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.cherry-radio-img{float:left;margin:10px 5px 0 5px;text-align:center;max-width:80px;position:relative}.cherry-radio-img label{display:inline-block}.cherry-radio-img img{width:100%;height:auto;margin:0 0 5px 0;pointer-events:none}.cherry-radio-img .cherry-radio-input:checked+label{font-weight:bold}.cherry-radio-img .cherry-radio-input:checked+label .check{display:block}.cherry-radio-img .cherry-radio-input:checked+label img{box-shadow:0 0 0 2px #fffeff,0 0 0 5px #298ffc}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .cherry-ui-container {
2
+ margin: 10px 0 20px 0; }
3
+
4
+ label.cherry-label {
5
+ margin: 0 0 5px 0;
6
+ display: block; }
7
+
8
+ input.cherry-radio-input {
9
+ display: none; }
10
+
11
+ .cherry-radio-item {
12
+ margin-bottom: 10px; }
13
+ .cherry-radio-item:last-child {
14
+ margin-bottom: 0; }
15
+ .cherry-radio-item label {
16
+ display: inline-block;
17
+ font-size: 14px;
18
+ line-height: 22px;
19
+ color: #23282d; }
20
+ .cherry-radio-item span {
21
+ width: 25px;
22
+ height: 25px;
23
+ border-radius: 25px;
24
+ margin-right: 10px;
25
+ cursor: pointer;
26
+ position: relative;
27
+ background-color: #f1f1f1;
28
+ display: inline-block;
29
+ float: left; }
30
+ .cherry-radio-item span i {
31
+ width: 13px;
32
+ height: 13px;
33
+ background-color: #298ffc;
34
+ margin: 6px;
35
+ border-radius: 20px;
36
+ display: inline-block;
37
+ -webkit-transform: scale(0);
38
+ -ms-transform: scale(0);
39
+ transform: scale(0);
40
+ -webkit-transition: all 0.3s cubic-bezier(0.27, 0.63, 0.54, 0.96);
41
+ transition: all 0.3s cubic-bezier(0.27, 0.63, 0.54, 0.96); }
42
+
43
+ .cherry-radio-item.checked span i {
44
+ -webkit-transform: scale(1);
45
+ -ms-transform: scale(1);
46
+ transform: scale(1); }
47
+
48
+ .cherry-radio-img {
49
+ float: left;
50
+ margin: 10px 5px 0 5px;
51
+ text-align: center;
52
+ max-width: 80px;
53
+ position: relative; }
54
+ .cherry-radio-img label {
55
+ display: inline-block; }
56
+ .cherry-radio-img img {
57
+ width: 100%;
58
+ height: auto;
59
+ margin: 0 0 5px 0;
60
+ pointer-events: none; }
61
+
62
+ .cherry-radio-img.checked {
63
+ font-weight: bold; }
64
+ .cherry-radio-img.checked .check {
65
+ display: block; }
66
+ .cherry-radio-img.checked img {
67
+ box-shadow: 0 0 0 2px #fffeff, 0 0 0 5px #298ffc; }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/min/ui-radio.min.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){"use strict";e.utilites.namespace("ui_elements.radio"),e.ui_elements.radio={inputClass:'.cherry-radio-input:not([name*="__i__"])',containerClass:".cherry-ui-container",wrapperClass:".widget, .postbox, .cherry-form",init:function(){t(document).on("ready.cherry-ui-elements-init",this.addEvent.bind(this)).on("cherry-ui-elements-init",this.setState.bind(this))},addEvent:function(){t("body").on("click.masterSlave",this.inputClass,this.switchState.bind(this)),this.setState({_target:t("body")})},setState:function(e){this.switchState({currentTarget:t(this.inputClass,e._target)})},switchState:function(e){for(var i,s,n,a=t(e.currentTarget).closest(this.containerClass),r=t(this.inputClass,a),c=r.length-1;c>=0;c--)i=t(r[c]),n=i.data(),s=i.closest(this.wrapperClass),jQuery.isEmptyObject(n)||t("."+n.slave,s)[i[0].checked?"removeClass":"addClass"]("hide")}},e.ui_elements.radio.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,r){"use strict";r.utilites.namespace("ui_elements.radio"),r.ui_elements.radio={init:function(){e(document).on("ready",this.render),e(window).on("cherry-ui-elements-init",this.render)},render:function(r){var i=r._target?r._target:e("body");e(".cherry-radio-group",i).each(function(){e('.cherry-radio-input[type="radio"]',this).each(function(){var r=e(this),t=r.data("slave");r.is(":checked")||e("."+t,i).stop().hide()})}),e('.cherry-radio-input[type="radio"]',i).on("change",function(){var r=e(this),t=r.data("slave"),a=r.parents(".cherry-radio-group"),n=e('.cherry-radio-input[type="radio"]',a);r.parents(".cherry-radio-group").find(".checked").removeClass("checked"),r.parent().addClass("checked"),e("."+t,i).show(),n.each(function(){var r=e(this),a=r.data("slave");a!==t&&e("."+a,i).hide()}),r.trigger("radio_change_event",[t,n])})}},r.ui_elements.radio.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/ui-radio.js CHANGED
@@ -1,48 +1,53 @@
1
  /**
2
  * Radio
3
  */
4
- (function($, CherryJsCore){
5
  'use strict';
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.radio');
8
  CherryJsCore.ui_elements.radio = {
9
- inputClass: '.cherry-radio-input:not([name*="__i__"])',
10
- containerClass: '.cherry-ui-container',
11
- wrapperClass: '.widget, .postbox, .cherry-form',
12
-
13
  init: function () {
14
- $( document )
15
- .on( 'ready.cherry-ui-elements-init', this.addEvent.bind( this ) )
16
- .on( 'cherry-ui-elements-init', this.setState.bind( this ) );
17
- },
18
- addEvent: function () {
19
- $( 'body' ).on( 'click.masterSlave', this.inputClass, this.switchState.bind( this ) );
20
- this.setState( { '_target': $( 'body' ) } );
21
- },
22
- setState: function ( event ) {
23
- this.switchState( { 'currentTarget': $( this.inputClass, event._target ) } );
24
  },
25
- switchState: function ( event ) {
26
- var parent = $( event.currentTarget ).closest( this.containerClass ),
27
- children = $( this.inputClass, parent ),
28
- i = children.length - 1,
29
- $_target,
30
- wrapper,
31
- data;
32
-
33
- for (; i >= 0; i--) {
34
- $_target = $( children[ i ] );
35
- data = $_target.data();
36
- wrapper = $_target.closest( this.wrapperClass );
37
-
38
- if ( jQuery.isEmptyObject( data ) ) {
39
- continue;
40
- } else {
41
- $( '.' + data.slave, wrapper )[ ( $_target[ 0 ].checked ) ? 'removeClass' : 'addClass' ]( 'hide' );
42
- }
43
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  }
45
  };
46
 
47
  CherryJsCore.ui_elements.radio.init();
48
- }(jQuery, window.CherryJsCore));
 
1
  /**
2
  * Radio
3
  */
4
+ ( function( $, CherryJsCore ){
5
  'use strict';
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.radio');
8
  CherryJsCore.ui_elements.radio = {
 
 
 
 
9
  init: function () {
10
+ $( document ).on( 'ready', this.render );
11
+ $( window ).on( 'cherry-ui-elements-init', this.render );
 
 
 
 
 
 
 
 
12
  },
13
+ render: function ( event ) {
14
+ var target = ( event._target ) ? event._target : $( 'body' );
15
+
16
+ $( '.cherry-radio-group', target ).each( function() {
17
+ $( '.cherry-radio-input[type="radio"]', this ).each( function() {
18
+ var $this = $(this),
19
+ this_slave = $this.data('slave');
20
+
21
+ if ( ! $this.is( ':checked' ) ) {
22
+ $( '.' + this_slave, target ).stop().hide();
23
+ }
24
+ } );
25
+ } );
26
+
27
+ $( '.cherry-radio-input[type="radio"]', target ).on( 'change', function() {
28
+ var $this = $(this),
29
+ slave = $this.data('slave'),
30
+ radio_group = $this.parents('.cherry-radio-group'),
31
+ radio_group_list = $('.cherry-radio-input[type="radio"]', radio_group);
32
+
33
+ $this.parents('.cherry-radio-group').find('.checked').removeClass('checked');
34
+ $this.parent().addClass('checked');
35
+
36
+ $('.' + slave, target).show();
37
+ radio_group_list.each(function(){
38
+ var $this = $(this),
39
+ this_slave = $this.data('slave');
40
+
41
+ if( this_slave !== slave ){
42
+ $('.' + this_slave, target).hide();
43
+ }
44
+ });
45
+
46
+ $this.trigger( 'radio_change_event', [slave, radio_group_list] );
47
+ });
48
  }
49
  };
50
 
51
  CherryJsCore.ui_elements.radio.init();
52
+
53
+ }( jQuery, window.CherryJsCore ) );
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/assets/ui-radio.scss CHANGED
@@ -8,9 +8,6 @@ label.cherry-label{
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
11
- .hide{
12
- display: none !important;
13
- }
14
  input.cherry-radio-input{
15
  display: none;
16
  }
@@ -43,18 +40,14 @@ input.cherry-radio-input{
43
  border-radius: 20px;
44
  display: inline-block;
45
  transform: scale(0);
46
- transition: all 0.4s cubic-bezier(0.77, 0, 0.175, 1);
47
  }
48
  }
49
  }
50
- .cherry-radio-item{
51
- .cherry-radio-input:checked{
52
- & + label{
53
- span{
54
- i{
55
- transform: scale(1);
56
- }
57
- }
58
  }
59
  }
60
  }
@@ -74,16 +67,12 @@ input.cherry-radio-input{
74
  pointer-events: none;
75
  }
76
  }
77
- .cherry-radio-img{
78
- .cherry-radio-input:checked{
79
- & + label{
80
- font-weight: bold;
81
- .check{
82
- display: block;
83
- }
84
- img{
85
- box-shadow: 0 0 0 2px rgba(255, 254, 255, 1), 0 0 0 5px $blue_color;
86
- }
87
- }
88
  }
89
- }
 
 
 
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
 
 
 
11
  input.cherry-radio-input{
12
  display: none;
13
  }
40
  border-radius: 20px;
41
  display: inline-block;
42
  transform: scale(0);
43
+ transition: all 0.3s cubic-bezier(.27,.63,.54,.96);
44
  }
45
  }
46
  }
47
+ .cherry-radio-item.checked{
48
+ span{
49
+ i{
50
+ transform: scale(1);
 
 
 
 
51
  }
52
  }
53
  }
67
  pointer-events: none;
68
  }
69
  }
70
+ .cherry-radio-img.checked{
71
+ font-weight: bold;
72
+ .check{
73
+ display: block;
 
 
 
 
 
 
 
74
  }
75
+ img{
76
+ box-shadow: 0 0 0 2px rgba(255, 254, 255, 1), 0 0 0 5px $blue_color;
77
+ }
78
+ }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-radio/ui-radio.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -60,7 +60,7 @@ if ( ! class_exists( 'UI_Radio' ) ) {
60
  */
61
  function __construct( $args = array() ) {
62
 
63
- $this->defaults_settings['id'] = 'cherry-ui-radio-' . uniqid();
64
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
65
 
66
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -75,10 +75,9 @@ if ( ! class_exists( 'UI_Radio' ) ) {
75
  */
76
  public function render() {
77
  $html = '';
78
- $class = $this->settings['class'];
79
- $class .= ' ' . $this->settings['master'];
80
 
81
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
82
  if ( $this->settings['options'] && ! empty( $this->settings['options'] ) && is_array( $this->settings['options'] ) ) {
83
  if ( '' !== $this->settings['label'] ) {
84
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . $this->settings['label'] . '</label> ';
@@ -89,10 +88,10 @@ if ( ! class_exists( 'UI_Radio' ) ) {
89
  $radio_id = $this->settings['id'] . '-' . $option;
90
  $img = isset( $option_value['img_src'] ) && ! empty( $option_value['img_src'] ) ? '<img src="' . esc_url( $option_value['img_src'] ) . '" alt="' . esc_html( $option_value['label'] ) . '">' : '<span class="cherry-radio-item"><i></i></span>';
91
  $data_slave = isset( $option_value['slave'] ) && ! empty( $option_value['slave'] ) ? ' data-slave="' . $option_value['slave'] . '"' : '';
92
- $class_box = isset( $option_value['img_src'] ) && ! empty( $option_value['img_src'] ) ? ' cherry-radio-img' : ' cherry-radio-item' ;
93
 
94
  $html .= '<div class="' . $class_box . '">';
95
- $html .= '<input type="radio" id="' . esc_attr( $radio_id ) . '" class="cherry-radio-input" name="' . esc_attr( $this->settings['name'] ) . '" ' . checked( $option, $this->settings['value'], false ) . ' value="' . esc_attr( $option ) . '"' . $data_slave . '>';
96
  $label_content = $img . $option_value['label'];
97
  $html .= '<label for="' . esc_attr( $radio_id ) . '">' . $label_content . '</label> ';
98
  $html .= '</div>';
@@ -111,13 +110,6 @@ if ( ! class_exists( 'UI_Radio' ) ) {
111
  * @since 4.0.0
112
  */
113
  public static function enqueue_assets() {
114
- wp_enqueue_style(
115
- 'ui-radio-min',
116
- esc_url( Cherry_Core::base_url( 'assets/min/ui-radio.min.css', __FILE__ ) ),
117
- array(),
118
- '1.0.0',
119
- 'all'
120
- );
121
  wp_enqueue_script(
122
  'ui-radio-min',
123
  esc_url( Cherry_Core::base_url( 'assets/min/ui-radio.min.js', __FILE__ ) ),
@@ -125,6 +117,14 @@ if ( ! class_exists( 'UI_Radio' ) ) {
125
  '1.0.0',
126
  true
127
  );
 
 
 
 
 
 
 
 
128
  }
129
  }
130
  }
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
60
  */
61
  function __construct( $args = array() ) {
62
 
63
+ $this->defaults_settings['id'] = 'cherry-ui-radio-'.uniqid();
64
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
65
 
66
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
75
  */
76
  public function render() {
77
  $html = '';
78
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
 
79
 
80
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
81
  if ( $this->settings['options'] && ! empty( $this->settings['options'] ) && is_array( $this->settings['options'] ) ) {
82
  if ( '' !== $this->settings['label'] ) {
83
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . $this->settings['label'] . '</label> ';
88
  $radio_id = $this->settings['id'] . '-' . $option;
89
  $img = isset( $option_value['img_src'] ) && ! empty( $option_value['img_src'] ) ? '<img src="' . esc_url( $option_value['img_src'] ) . '" alt="' . esc_html( $option_value['label'] ) . '">' : '<span class="cherry-radio-item"><i></i></span>';
90
  $data_slave = isset( $option_value['slave'] ) && ! empty( $option_value['slave'] ) ? ' data-slave="' . $option_value['slave'] . '"' : '';
91
+ $class_box = isset( $option_value['img_src'] ) && ! empty( $option_value['img_src'] ) ? ' cherry-radio-img' . $checked : ' cherry-radio-item' . $checked;
92
 
93
  $html .= '<div class="' . $class_box . '">';
94
+ $html .= '<input type="radio" id="' . esc_attr( $radio_id ) . '" class="cherry-radio-input ' . sanitize_html_class( $this->settings['class'] ) . '" name="' . esc_attr( $this->settings['name'] ) . '" ' . checked( $option, $this->settings['value'], false ) . ' value="' . esc_attr( $option ) . '"' . $data_slave . '>';
95
  $label_content = $img . $option_value['label'];
96
  $html .= '<label for="' . esc_attr( $radio_id ) . '">' . $label_content . '</label> ';
97
  $html .= '</div>';
110
  * @since 4.0.0
111
  */
112
  public static function enqueue_assets() {
 
 
 
 
 
 
 
113
  wp_enqueue_script(
114
  'ui-radio-min',
115
  esc_url( Cherry_Core::base_url( 'assets/min/ui-radio.min.js', __FILE__ ) ),
117
  '1.0.0',
118
  true
119
  );
120
+
121
+ wp_enqueue_style(
122
+ 'ui-radio-min',
123
+ esc_url( Cherry_Core::base_url( 'assets/min/ui-radio.min.css', __FILE__ ) ),
124
+ array(),
125
+ '1.0.0',
126
+ 'all'
127
+ );
128
  }
129
  }
130
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-repeater/assets/min/ui-repeater.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"use strict";t.utilites.namespace("ui_elements.repeater"),t.ui_elements.repeater={repeaterContainerClass:".cherry-ui-repeater-container",repeaterListClass:".cherry-ui-repeater-list",repeaterItemClass:".cherry-ui-repeater-item",repeaterItemHandleClass:".cherry-ui-repeater-actions-box",repeaterTitleClass:".cherry-ui-repeater-title",addItemButtonClass:".cherry-ui-repeater-add",removeItemButtonClass:".cherry-ui-repeater-remove",toggleItemButtonClass:".cherry-ui-repeater-toggle",minItemClass:"cherry-ui-repeater-min",sortablePlaceholderClass:"sortable-placeholder",init:function(){e(document).on("ready",this.addEvents.bind(this))},addEvents:function(){e("body").on("click",this.addItemButtonClass,{self:this},this.addItem).on("click",this.removeItemButtonClass,{self:this},this.removeItem).on("click",this.toggleItemButtonClass,{self:this},this.toggleItem).on("change",this.repeaterListClass+" input, "+this.repeaterListClass+" textarea, "+this.repeaterListClass+" select",{self:this},this.changeWrapperLable).on("sortable-init",{self:this},this.sortableItem),e(document).on("cherry-ui-elements-init",{self:this},this.sortableItem),this.triggers()},triggers:function(t){return e("body").trigger("sortable-init"),t&&e(document).trigger("cherry-ui-elements-init",{target:t}),this},addItem:function(t){var s=t.data.self,a=e(this).prev(s.repeaterListClass),r=a.data("index"),i=a.data("name"),l=wp.template(i),n=a.data("widget-id"),o={index:r};n="__i__"!==n?n:a.attr("id"),n&&(o.widgetId=n),a.append(l(o)),r++,a.data("index",r),s.triggers(e(s.repeaterItemClass+":last",a)).stopDefaultEvent(t)},removeItem:function(t){var s=t.data.self,a=e(this).closest(s.repeaterListClass);s.applyChanges(a),e(this).closest(s.repeaterItemClass).remove(),s.triggers().stopDefaultEvent(t)},toggleItem:function(t){var s=t.data.self,a=e(this).closest(s.repeaterItemClass);a.toggleClass(s.minItemClass),s.stopDefaultEvent(t)},sortableItem:function(t){var s,a,r=t.data.self,i=e(r.repeaterListClass);i.each(function(t,i){s=e(i),a=e(i).data("sortable-init"),s.sortable(a?"refresh":{items:r.repeaterItemClass,handle:r.repeaterItemHandleClass,cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,placeholder:r.sortablePlaceholderClass,create:function(){s.data("sortable-init",!0)},update:function(t){var s=e(t.target);r.applyChanges(s)}})})},changeWrapperLable:function(t){var s,a,r=t.data.self,i=e(r.repeaterListClass),l=i.data("title-field"),n=e(this);l&&n.closest("."+l+"-wrap")[0]&&(s=n.val(),a=n.closest(r.repeaterItemClass),e(r.repeaterTitleClass,a).html(s)),r.stopDefaultEvent(t)},applyChanges:function(t){return void 0!==wp.customize&&e("input[name]:first, select[name]:first",t).change(),this},stopDefaultEvent:function(e){return e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation(),this}},t.ui_elements.repeater.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,t){"use strict";t.utilites.namespace("ui_elements.repeater"),t.ui_elements.repeater={repeaterContainerClass:".cherry-ui-repeater-container",repeaterListClass:".cherry-ui-repeater-list",repeaterItemClass:".cherry-ui-repeater-item",repeaterItemHandleClass:".cherry-ui-repeater-actions-box",repeaterTitleClass:".cherry-ui-repeater-title",addItemButtonClass:".cherry-ui-repeater-add",removeItemButtonClass:".cherry-ui-repeater-remove",toggleItemButtonClass:".cherry-ui-repeater-toggle",minItemClass:"cherry-ui-repeater-min",sortablePlaceholderClass:"sortable-placeholder",init:function(){e(document).on("ready",this.addEvents.bind(this))},addEvents:function(){e("body").on("click",this.addItemButtonClass,{self:this},this.addItem).on("click",this.removeItemButtonClass,{self:this},this.removeItem).on("click",this.toggleItemButtonClass,{self:this},this.toggleItem).on("change",this.repeaterListClass+" input, "+this.repeaterListClass+" textarea, "+this.repeaterListClass+" select",{self:this},this.changeWrapperLable).on("sortable-init",{self:this},this.sortableItem),e(window).on("cherry-ui-elements-init",{self:this},this.sortableItem),this.triggers()},triggers:function(t){return e("body").trigger("sortable-init"),t&&e(window).trigger("cherry-ui-elements-init",{target:t}),this},addItem:function(t){var s=t.data.self,a=e(this).prev(s.repeaterListClass),r=a.data("index"),i=a.data("name"),l=wp.template(i),n=a.data("widget-id"),o={index:r};n&&(o.widgetId=n),a.append(l(o)),r++,a.data("index",r),s.triggers(e(s.repeaterItemClass+":last",a)).stopDefaultEvent(t)},removeItem:function(t){var s=t.data.self,a=e(this).closest(s.repeaterListClass);s.applyChanges(a),e(this).closest(s.repeaterItemClass).remove(),s.triggers().stopDefaultEvent(t)},toggleItem:function(t){var s=t.data.self,a=e(this).closest(s.repeaterItemClass);a.toggleClass(s.minItemClass),s.stopDefaultEvent(t)},sortableItem:function(t){var s,a,r=t.data.self,i=e(r.repeaterListClass);i.each(function(t,i){s=e(i),a=e(i).data("sortable-init"),s.sortable(a?"refresh":{items:r.repeaterItemClass,handle:r.repeaterItemHandleClass,cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,placeholder:r.sortablePlaceholderClass,create:function(){s.data("sortable-init",!0)},update:function(t){var s=e(t.target);r.applyChanges(s)}})})},changeWrapperLable:function(t){var s,a,r=t.data.self,i=e(r.repeaterListClass),l=i.data("title-field"),n=e(this);l&&n.closest("."+l+"-wrap")[0]&&(s=n.val(),a=n.closest(r.repeaterItemClass),e(r.repeaterTitleClass,a).html(s)),r.stopDefaultEvent(t)},applyChanges:function(t){return void 0!==wp.customize&&e("input[name]:first, select[name]:first",t).change(),this},stopDefaultEvent:function(e){return e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation(),this}},t.ui_elements.repeater.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-repeater/assets/ui-repeater.js CHANGED
@@ -37,7 +37,7 @@
37
  // Custom events
38
  .on( 'sortable-init', { 'self': this }, this.sortableItem );
39
 
40
- $( document )
41
  .on( 'cherry-ui-elements-init', { 'self': this }, this.sortableItem );
42
 
43
  this.triggers();
@@ -47,7 +47,7 @@
47
  $( 'body' ).trigger( 'sortable-init' );
48
 
49
  if ( $target ) {
50
- $( document ).trigger( 'cherry-ui-elements-init', { 'target': $target } );
51
  }
52
 
53
  return this;
@@ -62,8 +62,6 @@
62
  widgetId = $list.data( 'widget-id' ),
63
  data = { index: index };
64
 
65
- widgetId = '__i__' !== widgetId ? widgetId : $list.attr( 'id' ) ;
66
-
67
  if ( widgetId ) {
68
  data.widgetId = widgetId;
69
  }
37
  // Custom events
38
  .on( 'sortable-init', { 'self': this }, this.sortableItem );
39
 
40
+ $( window )
41
  .on( 'cherry-ui-elements-init', { 'self': this }, this.sortableItem );
42
 
43
  this.triggers();
47
  $( 'body' ).trigger( 'sortable-init' );
48
 
49
  if ( $target ) {
50
+ $( window ).trigger( 'cherry-ui-elements-init', { 'target': $target } );
51
  }
52
 
53
  return this;
62
  widgetId = $list.data( 'widget-id' ),
63
  data = { index: index };
64
 
 
 
65
  if ( widgetId ) {
66
  data.widgetId = widgetId;
67
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-repeater/ui-repeater.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -114,15 +114,16 @@ if ( ! class_exists( 'UI_Repeater' ) ) {
114
  * @since 1.0.1
115
  */
116
  public function render() {
117
- $html = '';
118
- $class = $this->settings['class'] . ' ' . $this->settings['master'];
119
- $ui_kit = ! empty( $this->settings['ui_kit'] ) ? 'cherry-ui-kit' : '';
120
- $value = ! empty( $this->settings['value'] ) ? count( $this->settings['value'] ) : 0 ;
121
- $title_field = ! empty( $this->settings['title_field'] ) ? 'data-title-field="' . $this->settings['title_field'] . '"' : '' ;
 
122
 
123
  $html .= sprintf( '<div class="cherry-ui-repeater-container cherry-ui-container %1$s %2$s">',
124
  $ui_kit,
125
- esc_attr( $class )
126
  );
127
  if ( '' !== $this->settings['label'] ) {
128
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
@@ -131,8 +132,8 @@ if ( ! class_exists( 'UI_Repeater' ) ) {
131
  $html .= sprintf(
132
  '<div class="cherry-ui-repeater-list" data-name="%1$s" data-index="%2$s" data-widget-id="__i__" %3$s id="%4$s">',
133
  $this->get_tmpl_name(),
134
- $value,
135
- $title_field,
136
  esc_attr( $this->settings['id'] )
137
  );
138
 
@@ -218,14 +219,14 @@ if ( ! class_exists( 'UI_Repeater' ) ) {
218
  return '"type" and "name" are required fields for UI_Repeater items';
219
  }
220
 
221
- $field = wp_parse_args( $field, array( 'value' => '' ) );
222
- $parent_name = str_replace( '__i__', $widget_index, $this->settings['name'] );
223
 
224
  $field['id'] = sprintf( '%s-%s', $field['id'], $index );
225
  $field['value'] = isset( $this->data[ $field['name'] ] ) ? $this->data[ $field['name'] ] : $field['value'];
226
  $field['name'] = sprintf( '%1$s[item-%2$s][%3$s]', $parent_name, $index, $field['name'] );
227
 
228
- $ui_class_name = 'UI_' . ucwords( $field['type'] );
229
 
230
  if ( ! class_exists( $ui_class_name ) ) {
231
  return '<p>Class <b>' . $ui_class_name . '</b> not exist!</p>';
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
114
  * @since 1.0.1
115
  */
116
  public function render() {
117
+
118
+ $html = '';
119
+
120
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
121
+
122
+ $ui_kit = ! empty( $this->settings['ui_kit'] ) ? 'cherry-ui-kit' : '';
123
 
124
  $html .= sprintf( '<div class="cherry-ui-repeater-container cherry-ui-container %1$s %2$s">',
125
  $ui_kit,
126
+ $master_class
127
  );
128
  if ( '' !== $this->settings['label'] ) {
129
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
132
  $html .= sprintf(
133
  '<div class="cherry-ui-repeater-list" data-name="%1$s" data-index="%2$s" data-widget-id="__i__" %3$s id="%4$s">',
134
  $this->get_tmpl_name(),
135
+ ( ! empty( $this->settings['value'] ) ) ? count( $this->settings['value'] ) : 0,
136
+ ( ! empty( $this->settings['title_field'] ) ) ? 'data-title-field="' . $this->settings['title_field'] . '"': '',
137
  esc_attr( $this->settings['id'] )
138
  );
139
 
219
  return '"type" and "name" are required fields for UI_Repeater items';
220
  }
221
 
222
+ $field = wp_parse_args( $field, array( 'value' => '' ) );
223
+ $parent_name = str_replace( '__i__', $widget_index, $this->settings['name'] );
224
 
225
  $field['id'] = sprintf( '%s-%s', $field['id'], $index );
226
  $field['value'] = isset( $this->data[ $field['name'] ] ) ? $this->data[ $field['name'] ] : $field['value'];
227
  $field['name'] = sprintf( '%1$s[item-%2$s][%3$s]', $parent_name, $index, $field['name'] );
228
 
229
+ $ui_class_name = 'UI_' . ucwords( $field['type'] );
230
 
231
  if ( ! class_exists( $ui_class_name ) ) {
232
  return '<p>Class <b>' . $ui_class_name . '</b> not exist!</p>';
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/min/select2.min.css CHANGED
@@ -1,9 +1,9 @@
1
  .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}
2
- .select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}
3
  .select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
4
  .select2-container .select2-selection--single .select2-selection__clear{position:relative}
5
  .select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}
6
- .select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}
7
  .select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}
8
  .select2-container .select2-search--inline{float:left}
9
  .select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}
@@ -11,7 +11,7 @@
11
  .select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}
12
  .select2-results{display:block}
13
  .select2-results__options{list-style:none;margin:0;padding:0}
14
- .select2-results__option{padding:6px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}
15
  .select2-results__option[aria-selected]{cursor:pointer}
16
  .select2-container--open .select2-dropdown{left:0}
17
  .select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}
@@ -64,20 +64,20 @@
64
  .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}
65
  .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}
66
  .select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}
67
- .select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}
68
  .select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}
69
  .select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}
70
  .select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}
71
  .select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}
72
- .select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}
73
  .select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}
74
  .select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}
75
  .select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}
76
  .select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}
77
  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}
78
  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}
79
- .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-webkit-linear-gradient(top, #fff 0, #eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}
80
- .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}
81
  .select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}
82
  .select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}
83
  .select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}
1
  .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}
2
+ .select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}
3
  .select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
4
  .select2-container .select2-selection--single .select2-selection__clear{position:relative}
5
  .select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}
6
+ .select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}
7
  .select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}
8
  .select2-container .select2-search--inline{float:left}
9
  .select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}
11
  .select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}
12
  .select2-results{display:block}
13
  .select2-results__options{list-style:none;margin:0;padding:0}
14
+ .select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}
15
  .select2-results__option[aria-selected]{cursor:pointer}
16
  .select2-container--open .select2-dropdown{left:0}
17
  .select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}
64
  .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}
65
  .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}
66
  .select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}
67
+ .select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}
68
  .select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}
69
  .select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}
70
  .select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}
71
  .select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}
72
+ .select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}
73
  .select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}
74
  .select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}
75
  .select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}
76
  .select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}
77
  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}
78
  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}
79
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}
80
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}
81
  .select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}
82
  .select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}
83
  .select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/min/ui-select.min.css CHANGED
@@ -1 +1 @@
1
- .cherry-ui-container{margin:10px 0 20px 0}label.cherry-label{margin:0 0 5px 0;display:block}.hide{display:none !important}select.cherry-ui-select{width:100%;outline:0 none;color:#23282d;font-size:14px;line-height:20px;color:#23282d;background-color:#f1f1f1;border-radius:2px;padding:10px 20px;height:50px;border:1px solid #f1f1f1;box-shadow:none}select.cherry-ui-select:focus{border-color:rgba(72,197,105,0.6);box-shadow:0 0 2px rgba(72,197,105,0.6)}select.cherry-ui-select:focus{border-color:none;box-shadow:none}select.select2-hidden-accessible{display:none}.select2{color:#23282d;background-color:#f1f1f1;border-radius:2px}.select2 .selection .select2-selection.select2-selection--single{background-color:transparent;border:none;border-radius:2px;height:50px}.select2 .selection .select2-selection.select2-selection--single .select2-selection__rendered{padding:15px 20px;font-size:14px;line-height:20px}.select2 .selection .select2-selection.select2-selection--single .select2-selection__arrow{height:50px}.select2 .selection .select2-selection.select2-selection--multiple{background-color:transparent;border:none;border-radius:2px}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered{font-size:14px;line-height:20px;padding:0;display:block}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-selection__choice{line-height:20px;margin:5px;border:none;background-color:#495159;border-radius:2px;color:#fff;padding:10px}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{color:#e54343;margin-right:10px}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-search{margin:0}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-search .select2-search__field{padding:0;margin:15px 10px;border:none;box-shadow:none;line-height:20px}.select2-container .select2-dropdown{background-color:#e5e5e5;border:none;border-radius:2px;margin:5px 0;box-shadow:0px 5px 21px rgba(0,0,0,0.1);z-index:500001}.select2-container .select2-dropdown .select2-search__field{border:none;box-shadow:none;border-radius:2px;margin:0}.select2-container .select2-dropdown .select2-search__field:focus{outline:none}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-selected=true]{color:#fff;background-color:#48c569}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option--highlighted{color:#fff;background-color:#495159}.select2-container .select2-dropdown .select2-results .select2-results__options .li[aria-disabled=true]{display:none}
1
+ .cherry-ui-container{margin:10px 0 20px 0}label.cherry-label{margin:0 0 5px 0;display:block}select.cherry-ui-select{width:100%;outline:0 none;color:#23282d;font-size:14px;line-height:20px;color:#23282d;background-color:#f1f1f1;border-radius:2px;padding:10px 20px;height:50px;border:1px solid #f1f1f1;box-shadow:none}select.cherry-ui-select:focus{border-color:rgba(72,197,105,0.6);box-shadow:0 0 2px rgba(72,197,105,0.6)}select.cherry-ui-select:focus{border-color:none;box-shadow:none}select.select2-hidden-accessible{display:none}.select2{color:#23282d;background-color:#f1f1f1;border-radius:2px}.select2 .selection .select2-selection.select2-selection--single{background-color:transparent;border:none;border-radius:2px;height:50px}.select2 .selection .select2-selection.select2-selection--single .select2-selection__rendered{padding:15px 20px;font-size:14px;line-height:20px}.select2 .selection .select2-selection.select2-selection--single .select2-selection__arrow{height:50px}.select2 .selection .select2-selection.select2-selection--multiple{background-color:transparent;border:none;border-radius:2px}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered{font-size:14px;line-height:20px;padding:0;display:block}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-selection__choice{line-height:20px;margin:5px;border:none;background-color:#495159;border-radius:2px;color:#fff;padding:10px}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{color:#e54343;margin-right:10px}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-search{margin:0}.select2 .selection .select2-selection.select2-selection--multiple .select2-selection__rendered .select2-search .select2-search__field{padding:0;margin:15px 10px;border:none;box-shadow:none;line-height:20px}.select2-container .select2-dropdown{background-color:#b4b7ba;border:none;border-radius:2px;margin:5px 0;z-index:500001}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option{color:#fff}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-selected=true]{background-color:#48c569}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option--highlighted{background-color:#495159}.select2-container .select2-dropdown .select2-results .select2-results__options .li[aria-disabled=true]{display:none}
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/min/ui-select.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"use strict";t.utilites.namespace("ui_elements.select"),t.ui_elements.select={selectClass:'.cherry-ui-select[data-filter="true"]:not([name*="__i__"]), .cherry-ui-select[multiple]:not([name*="__i__"])',wrapperClass:".widget, .postbox, .cherry-form",init:function(){e(document).on("ready.cherry-ui-elements-init",this.render.bind(this)).on("cherry-ui-elements-init",this.render.bind(this))},render:function(t){var i=t._target?t._target:e("body");e(this.selectClass,i).each(this.select2Init.bind(this))},select2Init:function(t,i){var s=e(i),r={placeholder:s.attr("placeholder")};s.select2(r).on("change.cherrySelect2",this.changeEvent.bind(this)).trigger("change.cherrySelect2")},changeEvent:function(e){this.switchState(e.currentTarget)},switchState:function(t){for(var i,s,r,n=e(t),c=n[0].length;c>=0;c--)i=e(n[0][c]),s=i.data(),r=e(n[0]).closest(this.wrapperClass),jQuery.isEmptyObject(s)||e("."+s.slave,r)[i[0].selected?"removeClass":"addClass"]("hide")}},t.ui_elements.select.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,t){"use strict";t.utilites.namespace("ui_elements.select"),t.ui_elements.select={init:function(){e(document).on("ready",this.render),e(window).on("cherry-ui-elements-init",this.render)},render:function(t){var i=t._target?t._target:e("body");e('.cherry-ui-select[data-filter="true"]:not([name*="__i__"]), .cherry-ui-select[multiple]:not([name*="__i__"])',i).each(function(){var t=e(this);t.select2({placeholder:t.attr("placeholder")})})}},t.ui_elements.select.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/ui-select.js CHANGED
@@ -6,53 +6,21 @@
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.select');
8
  CherryJsCore.ui_elements.select = {
9
- selectClass: '.cherry-ui-select[data-filter="true"]:not([name*="__i__"]), .cherry-ui-select[multiple]:not([name*="__i__"])',
10
- wrapperClass: '.widget, .postbox, .cherry-form',
11
-
12
  init: function () {
13
- $( document )
14
- .on( 'ready.cherry-ui-elements-init', this.render.bind( this ) )
15
- .on( 'cherry-ui-elements-init', this.render.bind( this ) );
16
  },
17
- render: function ( event ) {
18
  var target = ( event._target ) ? event._target : $( 'body' );
19
 
20
  // init filter-select
21
- $( this.selectClass , target ).each( this.select2Init.bind( this ) );
22
- },
23
- select2Init: function ( index, element ) {
24
- var $this = $( element ),
25
- options = {
26
- placeholder: $this.attr('placeholder')
27
- };
28
-
29
- $this
30
- .select2( options )
31
- .on('change.cherrySelect2', this.changeEvent.bind( this ) )
32
- .trigger('change.cherrySelect2');
33
- },
34
- changeEvent: function ( event ) {
35
- this.switchState( event.currentTarget );
36
- },
37
- switchState: function ( item ) {
38
- var items = $( item ),
39
- i = items[0].length,
40
- option,
41
- data,
42
- wrapper;
43
-
44
- for (; i >= 0; i--) {
45
- option = $( items[0][ i ] );
46
- data = option.data();
47
- wrapper = $( items[0] ).closest( this.wrapperClass );
48
-
49
- if ( jQuery.isEmptyObject( data ) ) {
50
- continue;
51
- } else {
52
- $( '.' + data.slave, wrapper )[ ( option[ 0 ].selected ) ? 'removeClass' : 'addClass' ]( 'hide' );
53
- }
54
- }
55
 
 
 
 
 
56
  }
57
  };
58
 
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.select');
8
  CherryJsCore.ui_elements.select = {
 
 
 
9
  init: function () {
10
+ $( document ).on( 'ready', this.render );
11
+ $( window ).on( 'cherry-ui-elements-init', this.render );
 
12
  },
13
+ render: function ( event, data ) {
14
  var target = ( event._target ) ? event._target : $( 'body' );
15
 
16
  // init filter-select
17
+ $( '.cherry-ui-select[data-filter="true"]:not([name*="__i__"]), .cherry-ui-select[multiple]:not([name*="__i__"])', target ).each( function() {
18
+ var $this = $( this );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
+ $this.select2( {
21
+ placeholder: $this.attr('placeholder')
22
+ } );
23
+ } );
24
  }
25
  };
26
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/assets/ui-select.scss CHANGED
@@ -8,9 +8,6 @@ label.cherry-label{
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
11
- .hide{
12
- display: none !important;
13
- }
14
  select.cherry-ui-select{
15
  width: 100%;
16
  outline: 0 none;
@@ -87,32 +84,22 @@ select.select2-hidden-accessible{
87
  }
88
  .select2-container{
89
  .select2-dropdown{
90
- background-color: $grey_color_2;
91
  border: none;
92
  border-radius: $border_radius_extra_small;
93
  margin: 5px 0;
94
- box-shadow: 0px 5px 21px rgba(0,0,0,0.1);
95
  z-index: 500001;
96
- &.select2-container--open, &.select2-dropdown--below{}
97
- .select2-search__field{
98
- border: none;
99
- box-shadow: none;
100
- border-radius: $border_radius_extra_small;
101
- margin: 0;
102
- &:focus{
103
- outline: none;
104
- }
105
  }
106
  .select2-results{
107
  .select2-results__options{
108
  .select2-results__option{
109
-
110
  &[aria-selected=true]{
111
- color: #fff;
112
  background-color: $green_color;
113
  }
114
  &--highlighted{
115
- color: #fff;
116
  background-color: $dark_color_2;
117
  }
118
  }
@@ -122,4 +109,4 @@ select.select2-hidden-accessible{
122
  }
123
  }
124
  }
125
- }
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
 
 
 
11
  select.cherry-ui-select{
12
  width: 100%;
13
  outline: 0 none;
84
  }
85
  .select2-container{
86
  .select2-dropdown{
87
+ background-color: $grey_color_4;
88
  border: none;
89
  border-radius: $border_radius_extra_small;
90
  margin: 5px 0;
 
91
  z-index: 500001;
92
+ &.select2-container--open, &.select2-dropdown--below{
93
+
 
 
 
 
 
 
 
94
  }
95
  .select2-results{
96
  .select2-results__options{
97
  .select2-results__option{
98
+ color: #fff;
99
  &[aria-selected=true]{
 
100
  background-color: $green_color;
101
  }
102
  &--highlighted{
 
103
  background-color: $dark_color_2;
104
  }
105
  }
109
  }
110
  }
111
  }
112
+ }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-select/ui-select.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -39,21 +39,18 @@ if ( ! class_exists( 'UI_Select' ) ) {
39
  'select-2' => 'select 2',
40
  'select-3' => 'select 3',
41
  'select-4' => 'select 4',
42
- 'select-5' => array(
43
- 'label' => 'Group 1',
44
- 'slave' => 'slave',
45
- ),
46
- 'optgroup-1' => array(
47
- 'label' => 'Group 1',
48
- 'group_options' => array(
49
  'select-6' => 'select 6',
50
  'select-7' => 'select 7',
51
  'select-8' => 'select 8',
52
  ),
53
  ),
54
  'optgroup-2' => array(
55
- 'label' => 'Group 2',
56
- 'group_options' => array(
57
  'select-9' => 'select 9',
58
  'select-10' => 'select 10',
59
  'select-11' => 'select 11',
@@ -73,7 +70,7 @@ if ( ! class_exists( 'UI_Select' ) ) {
73
  */
74
  function __construct( $args = array() ) {
75
 
76
- $this->defaults_settings['id'] = 'cherry-ui-select-' . uniqid();
77
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
78
 
79
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -86,11 +83,12 @@ if ( ! class_exists( 'UI_Select' ) ) {
86
  * @since 4.0.0
87
  */
88
  public function render() {
 
89
  $html = '';
90
- $class = $this->settings['class'];
91
- $class .= ' ' . $this->settings['master'];
92
 
93
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
 
 
94
 
95
  ( $this->settings['filter'] ) ? $filter_state = 'data-filter="true"' : $filter_state = 'data-filter="false"' ;
96
 
@@ -103,7 +101,7 @@ if ( ! class_exists( 'UI_Select' ) ) {
103
 
104
  $inline_style = $this->settings['inline_style'] ? 'style="' . esc_attr( $this->settings['inline_style'] ) . '"' : '' ;
105
 
106
- $html .= '<select id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-select" name="' . esc_attr( $name ) . '" size="' . esc_attr( $this->settings['size'] ) . '" ' . $multi_state . ' ' . $filter_state . ' placeholder="' . $this->settings['placeholder'] . '" ' . $inline_style . ' >';
107
  if ( $this->settings['options'] && ! empty( $this->settings['options'] ) && is_array( $this->settings['options'] ) ) {
108
  foreach ( $this->settings['options'] as $option => $option_value ) {
109
  if ( ! is_array( $this->settings['value'] ) ) {
@@ -119,16 +117,7 @@ if ( ! class_exists( 'UI_Select' ) ) {
119
  }
120
  }
121
  }
122
-
123
- if ( is_array( $option_value ) ) {
124
- $lable = $option_value['label'];
125
- $data = 'data-slave="' . $option_value['slave'] . '"';
126
- } else {
127
- $lable = $option_value;
128
- $data = '';
129
- }
130
-
131
- $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected_state . ' ' . $data . '>' . esc_html( $lable ) . '</option>';
132
  } else {
133
  $html .= '<optgroup label="' . esc_attr( $option_value['label'] ) . '">';
134
  $selected_state = '';
@@ -139,7 +128,7 @@ if ( ! class_exists( 'UI_Select' ) ) {
139
  break;
140
  }
141
  }
142
- $html .= '<option value="' . esc_attr( $group_item ) . '" ' . $selected_state . '>' . esc_html( $group_value ) . '</option>';
143
  }
144
  $html .= '</optgroup>';
145
  }
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
39
  'select-2' => 'select 2',
40
  'select-3' => 'select 3',
41
  'select-4' => 'select 4',
42
+ 'select-5' => 'select 5',
43
+ 'optgroup-1' => array(
44
+ 'label' => 'Group 1',
45
+ 'group_options' => array(
 
 
 
46
  'select-6' => 'select 6',
47
  'select-7' => 'select 7',
48
  'select-8' => 'select 8',
49
  ),
50
  ),
51
  'optgroup-2' => array(
52
+ 'label' => 'Group 2',
53
+ 'group_options' => array(
54
  'select-9' => 'select 9',
55
  'select-10' => 'select 10',
56
  'select-11' => 'select 11',
70
  */
71
  function __construct( $args = array() ) {
72
 
73
+ $this->defaults_settings['id'] = 'cherry-ui-select-'.uniqid();
74
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
75
 
76
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
83
  * @since 4.0.0
84
  */
85
  public function render() {
86
+
87
  $html = '';
 
 
88
 
89
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
90
+
91
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
92
 
93
  ( $this->settings['filter'] ) ? $filter_state = 'data-filter="true"' : $filter_state = 'data-filter="false"' ;
94
 
101
 
102
  $inline_style = $this->settings['inline_style'] ? 'style="' . esc_attr( $this->settings['inline_style'] ) . '"' : '' ;
103
 
104
+ $html .= '<select id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-select ' . esc_attr( $this->settings['class'] ) . '" name="' . esc_attr( $name ) . '" size="' . esc_attr( $this->settings['size'] ) . '" ' . $multi_state . ' ' . $filter_state . ' placeholder="' . $this->settings['placeholder'] . '" ' . $inline_style . ' >';
105
  if ( $this->settings['options'] && ! empty( $this->settings['options'] ) && is_array( $this->settings['options'] ) ) {
106
  foreach ( $this->settings['options'] as $option => $option_value ) {
107
  if ( ! is_array( $this->settings['value'] ) ) {
117
  }
118
  }
119
  }
120
+ $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected_state . '>'. esc_html( $option_value ) .'</option>';
 
 
 
 
 
 
 
 
 
121
  } else {
122
  $html .= '<optgroup label="' . esc_attr( $option_value['label'] ) . '">';
123
  $selected_state = '';
128
  break;
129
  }
130
  }
131
+ $html .= '<option value="' . esc_attr( $group_item ) . '" ' . $selected_state . '>'. esc_html( $group_value ) .'</option>';
132
  }
133
  $html .= '</optgroup>';
134
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/min/ui-slider.min.css CHANGED
@@ -1 +1 @@
1
- .cherry-ui-container{margin:10px 0 20px 0}.cherry-ui-container .cherry-ui-container{margin:0}label.cherry-label{margin:0 0 5px 0;display:block}.cherry-slider-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.cherry-slider-wrap .cherry-slider-input{-webkit-box-flex:0;-webkit-flex:0 1 10%;-ms-flex:0 1 10%;flex:0 1 10%;min-width:100px;max-width:200px}.cherry-slider-wrap .cherry-slider-holder{-webkit-box-flex:0;-webkit-flex:0 1 90%;-ms-flex:0 1 90%;flex:0 1 90%;min-width:200px;max-width:300px;margin-right:20px}.cherry-slider-wrap .cherry-slider-holder input[type=range]{-webkit-appearance:none;width:100%;margin:20px 0}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus{outline:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-webkit-slider-runnable-track{width:100%;height:5px;cursor:pointer;box-shadow:none;background:#48c569;border-radius:25px;border:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-webkit-slider-thumb{box-shadow:5px 5px 13px rgba(0,0,0,0.18);border:5px solid #48c569;height:20px;width:20px;margin-top:-7px;border-radius:15px;background:#48c569;cursor:pointer;-webkit-appearance:none;-webkit-transition:all 250ms cubic-bezier(0.645, 0.045, 0.355, 1);transition:all 250ms cubic-bezier(0.645, 0.045, 0.355, 1)}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-webkit-slider-thumb{background:#f1f1f1;height:28px;width:28px;margin-top:-11.5px}.cherry-slider-wrap .cherry-slider-holder input[type=range]:hover::-webkit-slider-thumb{background:#f1f1f1;height:28px;width:28px;margin-top:-11.5px}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-webkit-slider-runnable-track{background:#48c569}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-moz-range-track{width:100%;height:5px;cursor:pointer;box-shadow:none;background:#48c569;border-radius:25px;border:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-moz-range-thumb{box-shadow:none;border:none;height:28px;width:28px;border-radius:15px;background:#48c569;cursor:pointer}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-track{width:100%;height:10px;cursor:pointer;background:#f1f1f1;border-color:transparent;color:transparent}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-fill-lower{background:#f1f1f1;border:none;border-radius:50px;box-shadow:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-fill-upper{background:#48c569;border:none;border-radius:50px;box-shadow:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-thumb{box-shadow:none;border:none;height:10px;width:10px;border-radius:15px;background:#495159;cursor:pointer}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-ms-fill-lower{background:#f1f1f1}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-ms-fill-upper{background:#48c569}.cherry-slider-wrap .cherry-input{margin:0;width:100%}
1
+ .cherry-ui-container{margin:10px 0 20px 0}.cherry-ui-container .cherry-ui-container{margin:0}label.cherry-label{margin:0 0 5px 0;display:block}.cherry-slider-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.cherry-slider-wrap .cherry-slider-input{-webkit-box-flex:0;-webkit-flex:0 1 10%;-ms-flex:0 1 10%;flex:0 1 10%;min-width:100px;max-width:200px}.cherry-slider-wrap .cherry-slider-holder{-webkit-box-flex:0;-webkit-flex:0 1 90%;-ms-flex:0 1 90%;flex:0 1 90%;min-width:200px;max-width:300px;margin-right:20px}.cherry-slider-wrap .cherry-slider-holder input[type=range]{-webkit-appearance:none;width:100%;margin:20px 0}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus{outline:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-webkit-slider-runnable-track{width:100%;height:5px;cursor:pointer;box-shadow:none;background:#48c569;border-radius:25px;border:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-webkit-slider-thumb{box-shadow:5px 5px 13px rgba(0,0,0,0.18);border:5px solid #48c569;height:28px;width:28px;border-radius:15px;background:#48c569;cursor:pointer;-webkit-appearance:none;margin-top:-11.5px}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-webkit-slider-thumb{background:#f1f1f1}.cherry-slider-wrap .cherry-slider-holder input[type=range]:hover::-webkit-slider-thumb{background:#f1f1f1}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-webkit-slider-runnable-track{background:#48c569}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-moz-range-track{width:100%;height:5px;cursor:pointer;box-shadow:none;background:#48c569;border-radius:25px;border:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-moz-range-thumb{box-shadow:none;border:none;height:28px;width:28px;border-radius:15px;background:#48c569;cursor:pointer}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-track{width:100%;height:10px;cursor:pointer;background:#f1f1f1;border-color:transparent;color:transparent}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-fill-lower{background:#f1f1f1;border:none;border-radius:50px;box-shadow:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-fill-upper{background:#48c569;border:none;border-radius:50px;box-shadow:none}.cherry-slider-wrap .cherry-slider-holder input[type=range]::-ms-thumb{box-shadow:none;border:none;height:10px;width:10px;border-radius:15px;background:#495159;cursor:pointer}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-ms-fill-lower{background:#f1f1f1}.cherry-slider-wrap .cherry-slider-holder input[type=range]:focus::-ms-fill-upper{background:#48c569}.cherry-slider-wrap .cherry-input{margin:0;width:100%}
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/min/ui-slider.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,i){"use strict";i.utilites.namespace("ui_elements.slider"),i.ui_elements.slider={init:function(){e(document).on("ready.cherry-ui-elements-init",this.render.bind(this))},render:function(){e("body").on("input.cherry-ui-elements-init change.cherry-ui-elements-init",".cherry-slider-unit, .cherry-ui-stepper-input",this.changeHandler)},changeHandler:function(){var i=e(this),r=i.hasClass("cherry-slider-unit")?".cherry-ui-stepper-input":".cherry-slider-unit",n=i.closest(".cherry-slider-wrap");e(r,n).val(i.val())}},i.ui_elements.slider.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,i){"use strict";i.utilites.namespace("ui_elements.slider"),i.ui_elements.slider={init:function(){e(document).on("ready",this.render.bind(this))},render:function(){e("body").on("input change",".cherry-slider-unit, .cherry-ui-stepper-input",this.changeHandler)},changeHandler:function(){var i=e(this),r=i.hasClass("cherry-slider-unit")?".cherry-ui-stepper-input":".cherry-slider-unit",n=i.closest(".cherry-slider-wrap");e(r,n).val(i.val())}},i.ui_elements.slider.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/ui-slider.js CHANGED
@@ -7,10 +7,10 @@
7
  CherryJsCore.utilites.namespace('ui_elements.slider');
8
  CherryJsCore.ui_elements.slider = {
9
  init: function () {
10
- $( document ).on( 'ready.cherry-ui-elements-init', this.render.bind( this ) );
11
  },
12
- render: function () {
13
- $( 'body' ).on( 'input.cherry-ui-elements-init change.cherry-ui-elements-init', '.cherry-slider-unit, .cherry-ui-stepper-input', this.changeHandler );
14
  },
15
  changeHandler: function () {
16
  var $this = $( this ),
7
  CherryJsCore.utilites.namespace('ui_elements.slider');
8
  CherryJsCore.ui_elements.slider = {
9
  init: function () {
10
+ $( document ).on( 'ready', this.render.bind( this ) );
11
  },
12
+ render: function ( event, data ) {
13
+ $( 'body' ).on( 'input change', '.cherry-slider-unit, .cherry-ui-stepper-input', this.changeHandler );
14
  },
15
  changeHandler: function () {
16
  var $this = $( this ),
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/assets/ui-slider.scss CHANGED
@@ -44,26 +44,19 @@ label.cherry-label{
44
  input[type=range]::-webkit-slider-thumb {
45
  box-shadow: 5px 5px 13px rgba(0, 0, 0, 0.18);
46
  border: 5px solid $green_color;
47
- height: 20px;
48
- width: 20px;
49
- margin-top: -7px;
50
  border-radius: 15px;
51
  background: $green_color;
52
  cursor: pointer;
53
  -webkit-appearance: none;
54
- transition: all 250ms cubic-bezier(0.645, 0.045, 0.355, 1);
55
  }
56
  input[type=range]:focus::-webkit-slider-thumb {
57
  background: $grey_color_3;
58
- height: 28px;
59
- width: 28px;
60
- margin-top: -11.5px;
61
  }
62
  input[type=range]:hover::-webkit-slider-thumb {
63
  background: $grey_color_3;
64
- height: 28px;
65
- width: 28px;
66
- margin-top: -11.5px;
67
  }
68
  input[type=range]:focus::-webkit-slider-runnable-track {
69
  background: $green_color;
@@ -121,9 +114,13 @@ label.cherry-label{
121
  input[type=range]:focus::-ms-fill-upper {
122
  background: $green_color;
123
  }
 
 
 
 
124
  }
125
  .cherry-input{
126
  margin: 0;
127
  width: 100%;
128
  }
129
- }
44
  input[type=range]::-webkit-slider-thumb {
45
  box-shadow: 5px 5px 13px rgba(0, 0, 0, 0.18);
46
  border: 5px solid $green_color;
47
+ height: 28px;
48
+ width: 28px;
 
49
  border-radius: 15px;
50
  background: $green_color;
51
  cursor: pointer;
52
  -webkit-appearance: none;
53
+ margin-top: -11.5px;
54
  }
55
  input[type=range]:focus::-webkit-slider-thumb {
56
  background: $grey_color_3;
 
 
 
57
  }
58
  input[type=range]:hover::-webkit-slider-thumb {
59
  background: $grey_color_3;
 
 
 
60
  }
61
  input[type=range]:focus::-webkit-slider-runnable-track {
62
  background: $green_color;
114
  input[type=range]:focus::-ms-fill-upper {
115
  background: $green_color;
116
  }
117
+
118
+ .cherry-slider-unit{
119
+
120
+ }
121
  }
122
  .cherry-input{
123
  margin: 0;
124
  width: 100%;
125
  }
126
+ }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-slider/ui-slider.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -44,7 +44,7 @@ if ( ! class_exists( 'UI_Slider' ) ) {
44
  * @since 4.0.0
45
  */
46
  function __construct( $args = array() ) {
47
- $this->defaults_settings['id'] = 'cherry-ui-slider-' . uniqid();
48
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
49
 
50
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -57,10 +57,10 @@ if ( ! class_exists( 'UI_Slider' ) ) {
57
  */
58
  public function render() {
59
  $html = '';
60
- $class = $this->settings['class'];
61
- $class .= ' ' . $this->settings['master'];
62
 
63
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
 
 
64
 
65
  $ui_stepper = new UI_Stepper(
66
  array(
@@ -79,7 +79,7 @@ if ( ! class_exists( 'UI_Slider' ) ) {
79
  }
80
  $html .= '<div class="cherry-slider-wrap">';
81
  $html .= '<div class="cherry-slider-holder">';
82
- $html .= '<input type="range" class="cherry-slider-unit" step="' . esc_attr( $this->settings['step_value'] ) . '" min="' . esc_attr( $this->settings['min_value'] ) . '" max="' . esc_attr( $this->settings['max_value'] ) . '" value="' . esc_attr( $this->settings['value'] ) . '">';
83
  $html .= '</div>';
84
  $html .= '<div class="cherry-slider-input">';
85
  $html .= $ui_stepper_html;
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
44
  * @since 4.0.0
45
  */
46
  function __construct( $args = array() ) {
47
+ $this->defaults_settings['id'] = 'cherry-ui-slider-'.uniqid();
48
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
49
 
50
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
57
  */
58
  public function render() {
59
  $html = '';
 
 
60
 
61
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
62
+
63
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
64
 
65
  $ui_stepper = new UI_Stepper(
66
  array(
79
  }
80
  $html .= '<div class="cherry-slider-wrap">';
81
  $html .= '<div class="cherry-slider-holder">';
82
+ $html .= '<input type="range" class="cherry-slider-unit" step="' . esc_attr( $this->settings['step_value'] ) . '" min="' . esc_attr( $this->settings['min_value'] ) . '" max="' . esc_attr( $this->settings['max_value'] ) . '" value="' . esc_attr( $this->settings['value'] ) . '">';
83
  $html .= '</div>';
84
  $html .= '<div class="cherry-slider-input">';
85
  $html .= $ui_stepper_html;
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-stepper/ui-stepper.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -45,7 +45,7 @@ if ( ! class_exists( 'UI_Stepper' ) ) {
45
  * @since 4.0.0
46
  */
47
  function __construct( $args = array() ) {
48
- $this->defaults_settings['id'] = 'cherry-ui-stepper-' . uniqid();
49
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
50
 
51
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -59,15 +59,15 @@ if ( ! class_exists( 'UI_Stepper' ) ) {
59
  */
60
  public function render() {
61
  $html = '';
62
- $class = $this->settings['class'];
63
- $class .= ' ' . $this->settings['master'];
64
 
65
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
 
 
66
 
67
  if ( '' !== $this->settings['label'] ) {
68
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
69
  }
70
- $html .= '<div class="cherry-ui-stepper">';
71
  $html .= '<input type="number" id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-stepper-input" pattern="[0-5]+([\.,][0-5]+)?" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '" min="' . esc_html( $this->settings['min_value'] ) . '" max="' . esc_html( $this->settings['max_value'] ) . '" step="' . esc_html( $this->settings['step_value'] ) . '" placeholder="' . esc_attr( $this->settings['placeholder'] ) . '">';
72
  $html .= '</div>';
73
  $html .= '</div>';
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
45
  * @since 4.0.0
46
  */
47
  function __construct( $args = array() ) {
48
+ $this->defaults_settings['id'] = 'cherry-ui-stepper-'.uniqid();
49
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
50
 
51
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
59
  */
60
  public function render() {
61
  $html = '';
 
 
62
 
63
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
64
+
65
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
66
 
67
  if ( '' !== $this->settings['label'] ) {
68
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
69
  }
70
+ $html .= '<div class="cherry-ui-stepper ' . esc_attr( $this->settings['class'] ) . '">';
71
  $html .= '<input type="number" id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-stepper-input" pattern="[0-5]+([\.,][0-5]+)?" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '" min="' . esc_html( $this->settings['min_value'] ) . '" max="' . esc_html( $this->settings['max_value'] ) . '" step="' . esc_html( $this->settings['step_value'] ) . '" placeholder="' . esc_attr( $this->settings['placeholder'] ) . '">';
72
  $html .= '</div>';
73
  $html .= '</div>';
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/min/ui-switcher.min.css CHANGED
@@ -1 +1,80 @@
1
- .cherry-ui-container{margin:10px 0 20px 0}label.cherry-label{margin:0 0 5px 0;display:block}.hide{display:none !important}.cherry-switcher-wrap{height:49px;border-radius:25px;display:inline-block;overflow:hidden;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cherry-switcher-wrap label{height:49px;background-color:#e54343;display:block;float:left;-webkit-transition:all 0.4s ease;transition:all 0.4s ease}.cherry-switcher-wrap label span{font-size:12px;line-height:19px;font-weight:800;text-transform:uppercase;color:#fff;padding:15px;text-align:center;display:block;opacity:1;-webkit-transition:all 0.4s ease;transition:all 0.4s ease}.cherry-switcher-wrap .sw-enable span{opacity:0}.cherry-switcher-wrap .sw-disable span{opacity:1}.cherry-switcher-wrap .state-marker{background-color:#fff;display:block;position:absolute;width:41px;height:41px;margin:4px;top:0;left:0;margin-left:4px;border-radius:25px;-webkit-transition:all 0.4s cubic-bezier(0.77, 0, 0.175, 1);transition:all 0.4s cubic-bezier(0.77, 0, 0.175, 1)}.cherry-switcher-wrap .cherry-input-switcher{display:none}.cherry-switcher-wrap .cherry-input-switcher-true:checked ~ .sw-enable{background-color:#48c569}.cherry-switcher-wrap .cherry-input-switcher-true:checked ~ .sw-enable span{opacity:1}.cherry-switcher-wrap .cherry-input-switcher-true:checked ~ .sw-disable{background-color:#48c569}.cherry-switcher-wrap .cherry-input-switcher-true:checked ~ .sw-disable span{opacity:0}.cherry-switcher-wrap .cherry-input-switcher-true:checked ~ .state-marker{left:100%;margin-left:-45px}.cherry-switcher-wrap.size-small{height:25px}.cherry-switcher-wrap.size-small label{height:25px}.cherry-switcher-wrap.size-small label span{font-size:10px;line-height:15px;padding:5px}.cherry-switcher-wrap.size-small .state-marker{width:17px;height:17px;margin-left:4px}.cherry-switcher-wrap.size-small .cherry-input-switcher-true:checked ~ .state-marker{margin-left:-22px}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .cherry-ui-container {
2
+ margin: 10px 0 20px 0; }
3
+
4
+ label.cherry-label {
5
+ margin: 0 0 5px 0;
6
+ display: block; }
7
+
8
+ .cherry-switcher-wrap {
9
+ height: 49px;
10
+ border-radius: 25px;
11
+ display: inline-block;
12
+ overflow: hidden;
13
+ position: relative;
14
+ cursor: pointer;
15
+ -webkit-user-select: none;
16
+ -moz-user-select: none;
17
+ -ms-user-select: none;
18
+ user-select: none; }
19
+ .cherry-switcher-wrap label {
20
+ height: 49px;
21
+ background-color: #e54343;
22
+ display: block;
23
+ float: left;
24
+ -webkit-transition: all 0.2s ease-in-out;
25
+ transition: all 0.2s ease-in-out; }
26
+ .cherry-switcher-wrap label span {
27
+ font-size: 12px;
28
+ line-height: 19px;
29
+ font-weight: 800;
30
+ text-transform: uppercase;
31
+ color: #fff;
32
+ padding: 15px;
33
+ text-align: center;
34
+ display: block;
35
+ opacity: 1;
36
+ -webkit-transition: all 0.2s ease-in-out;
37
+ transition: all 0.2s ease-in-out; }
38
+ .cherry-switcher-wrap .sw-enable span {
39
+ opacity: 0; }
40
+ .cherry-switcher-wrap .sw-disable span {
41
+ opacity: 1; }
42
+ .cherry-switcher-wrap .state-marker {
43
+ background-color: #fff;
44
+ display: block;
45
+ position: absolute;
46
+ width: 41px;
47
+ height: 41px;
48
+ margin: 4px;
49
+ top: 0;
50
+ left: 0;
51
+ margin-left: 4px;
52
+ border-radius: 25px;
53
+ -webkit-transition: all 0.2s ease-in-out;
54
+ transition: all 0.2s ease-in-out; }
55
+ .cherry-switcher-wrap.selected .sw-enable {
56
+ background-color: #48c569; }
57
+ .cherry-switcher-wrap.selected .sw-enable span {
58
+ opacity: 1; }
59
+ .cherry-switcher-wrap.selected .sw-disable {
60
+ background-color: #48c569; }
61
+ .cherry-switcher-wrap.selected .sw-disable span {
62
+ opacity: 0; }
63
+ .cherry-switcher-wrap.selected .state-marker {
64
+ left: 100%;
65
+ margin-left: -45px; }
66
+ .cherry-switcher-wrap.size-small {
67
+ height: 25px; }
68
+ .cherry-switcher-wrap.size-small label {
69
+ height: 25px; }
70
+ .cherry-switcher-wrap.size-small label span {
71
+ font-size: 10px;
72
+ line-height: 15px;
73
+ padding: 5px; }
74
+ .cherry-switcher-wrap.size-small .state-marker {
75
+ width: 17px;
76
+ height: 17px;
77
+ margin-left: 4px; }
78
+ .cherry-switcher-wrap.size-small.selected .state-marker {
79
+ left: 0;
80
+ margin-left: 33px; }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/min/ui-switcher.min.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){"use strict";e.utilites.namespace("ui_elements.switcher"),e.ui_elements.switcher={switcherClass:".cherry-switcher-wrap",inputTrueClass:".cherry-input-switcher-true",inputFalseClass:".cherry-input-switcher-false",containerClass:".cherry-ui-container",wrapperClass:".widget, .postbox, .cherry-form",init:function(){t(document).on("ready.cherry-ui-elements-init",this.addEvent.bind(this)).on("cherry-ui-elements-init",this.initState.bind(this))},addEvent:function(){t("body").on("click",this.switcherClass,this.switchState.bind(this)),this.initState()},initState:function(){for(var e,i=t(this.switcherClass),s=i.length-1;s>=0;s--)e=t(i[s]),this.switchState({currentTarget:e,initState:!0})},switchState:function(e){var i,s=t(e.currentTarget),r=t(this.inputTrueClass,s),a=t(this.inputFalseClass,s),n=r.data(),c=a.data(),h=s.closest(this.wrapperClass);e.initState||this.checkedRadio(r,a,r[0].checked),i=r[0].checked,jQuery.isEmptyObject(n)||t("."+n.slave,h)[i?"removeClass":"addClass"]("hide"),jQuery.isEmptyObject(c)||t("."+c.slave,h)[i?"addClass":"removeClass"]("hide")},checkedRadio:function(t,e,i){t.attr("checked",i?!1:!0),e.attr("checked",i?!0:!1).trigger("change")}},e.ui_elements.switcher.init()}(jQuery,window.CherryJsCore);
1
+ !function(e,t){"use strict";t.utilites.namespace("ui_elements.switcher"),t.ui_elements.switcher={init:function(){e(document).on("ready",this.render.bind(this)),e(window).on("cherry-ui-elements-init",this.master_slave_init)},render:function(){e("body").on("click",".cherry-switcher-wrap",this.swiperHandler)},master_slave_init:function(t){var i=t._target?t._target:e("body");e(".cherry-switcher-wrap",i).each(function(){var t=e(this),r=e(".cherry-input-switcher",t),a="true"===r.val(),n="undefined"!=typeof r.data("true-slave")?r.data("true-slave"):null,s="undefined"!=typeof r.data("false-slave")?r.data("false-slave"):null;a?e("."+s,i)[0]&&e("."+s,i).hide():e("."+n,i)[0]&&e("."+n,i).hide()})},swiperHandler:function(){var t=e(this),i=e(".cherry-input-switcher",t),r=i.data("true-slave"),a=i.data("false-slave");t.toggleClass("selected"),i.attr("value","true"===i.val()?!1:!0).trigger("change").trigger("switcher_disabled_event",[r,a]),e("."+r).toggle(),e("."+a).toggle()}},t.ui_elements.switcher.init()}(jQuery,window.CherryJsCore);
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/ui-switcher.js CHANGED
@@ -6,60 +6,50 @@
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.switcher');
8
  CherryJsCore.ui_elements.switcher = {
9
- switcherClass: '.cherry-switcher-wrap',
10
- inputTrueClass: '.cherry-input-switcher-true',
11
- inputFalseClass: '.cherry-input-switcher-false',
12
- containerClass: '.cherry-ui-container',
13
- wrapperClass: '.widget, .postbox, .cherry-form',
14
-
15
  init: function () {
16
- $( document )
17
- .on( 'ready.cherry-ui-elements-init', this.addEvent.bind( this ) )
18
- .on( 'cherry-ui-elements-init', this.initState.bind( this ) );
19
  },
20
- addEvent: function () {
21
- $( 'body' ).on( 'click', this.switcherClass, this.switchState.bind( this ) );
22
- this.initState();
23
  },
24
- initState: function(){
25
- var switchers = $( this.switcherClass ),
26
- i = switchers.length - 1,
27
- switcher;
28
-
29
- for (; i >= 0; i--) {
30
- switcher = $( switchers[ i ] );
31
-
32
- this.switchState( { currentTarget: switcher, initState: true } );
33
- }
 
 
 
 
 
 
 
 
 
 
34
  },
35
- switchState: function ( event ) {
36
- var switcher = $( event.currentTarget ),
37
- inputTrue = $( this.inputTrueClass, switcher ),
38
- inputFalse = $( this.inputFalseClass, switcher ),
39
- dataTrue = inputTrue.data(),
40
- dataFalse = inputFalse.data(),
41
- flag,
42
- wrapper = switcher.closest( this.wrapperClass );
43
 
44
- if( ! event.initState ){
45
- this.checkedRadio( inputTrue, inputFalse, inputTrue[ 0 ].checked );
46
- }
47
 
48
- flag = inputTrue[ 0 ].checked;
 
 
 
49
 
50
- if ( ! jQuery.isEmptyObject( dataTrue ) ) {
51
- $( '.' + dataTrue.slave, wrapper )[ ( flag ) ? 'removeClass' : 'addClass' ]( 'hide' );
52
- }
53
- if ( ! jQuery.isEmptyObject( dataFalse ) ) {
54
- $( '.' + dataFalse.slave, wrapper )[ ( ! flag ) ? 'removeClass' : 'addClass' ]( 'hide' );
55
- }
56
- },
57
- checkedRadio:function( inputTrue, inputFalse, flag ){
58
- inputTrue.attr( 'checked', ( flag ) ? false : true );
59
 
60
- inputFalse
61
- .attr( 'checked', ( ! flag ) ? false : true )
62
- .trigger('change');
63
  }
64
  };
65
 
6
 
7
  CherryJsCore.utilites.namespace('ui_elements.switcher');
8
  CherryJsCore.ui_elements.switcher = {
 
 
 
 
 
 
9
  init: function () {
10
+ $( document ).on( 'ready', this.render.bind( this ) );
11
+ $( window ).on( 'cherry-ui-elements-init', this.master_slave_init );
 
12
  },
13
+ render: function ( event, data ) {
14
+ $( 'body' ).on( 'click', '.cherry-switcher-wrap', this.swiperHandler );
 
15
  },
16
+ master_slave_init: function ( event, data ) {
17
+ var target = ( event._target ) ? event._target : $( 'body' );
18
+
19
+ $( '.cherry-switcher-wrap', target ).each( function() {
20
+ var $this = $( this ),
21
+ $input = $( '.cherry-input-switcher', $this ),
22
+ inputValue = ( $input.val() === 'true' ),
23
+ true_slave = ( typeof $input.data('true-slave') !== 'undefined' ) ? $input.data( 'true-slave' ) : null,
24
+ false_slave = ( typeof $input.data('false-slave') !== 'undefined' ) ? $input.data( 'false-slave' ) : null;
25
+
26
+ if ( ! inputValue ) {
27
+ if ( $( '.' + true_slave, target )[0] ) {
28
+ $( '.' + true_slave, target ).hide();
29
+ }
30
+ } else {
31
+ if ( $( '.' + false_slave, target )[0] ) {
32
+ $( '.' + false_slave, target ).hide();
33
+ }
34
+ }
35
+ });
36
  },
37
+ swiperHandler: function ( event ) {
38
+ var $this = $( this ),
39
+ $input = $( '.cherry-input-switcher', $this ),
40
+ true_slave = $input.data('true-slave'),
41
+ false_slave = $input.data('false-slave');
 
 
 
42
 
43
+ $this.toggleClass('selected');
 
 
44
 
45
+ $input
46
+ .attr( 'value', ( $input.val() === 'true' ) ? false : true )
47
+ .trigger( 'change' )
48
+ .trigger( 'switcher_disabled_event', [ true_slave, false_slave ] );
49
 
 
 
 
 
 
 
 
 
 
50
 
51
+ $( '.' + true_slave ).toggle();
52
+ $( '.' + false_slave ).toggle();
 
53
  }
54
  };
55
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/assets/ui-switcher.scss CHANGED
@@ -8,9 +8,6 @@ label.cherry-label{
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
11
- .hide{
12
- display: none !important;
13
- }
14
  .cherry-switcher-wrap{
15
  height: 49px;
16
  border-radius: 25px;
@@ -24,7 +21,7 @@ label.cherry-label{
24
  background-color: $red_color;
25
  display: block;
26
  float: left;
27
- transition: all 0.4s ease;
28
  span{
29
  font-size: 12px;
30
  line-height: 19px;
@@ -35,7 +32,7 @@ label.cherry-label{
35
  text-align: center;
36
  display: block;
37
  opacity: 1;
38
- transition: all 0.4s ease;
39
  }
40
  }
41
  .sw-enable{
@@ -59,49 +56,46 @@ label.cherry-label{
59
  left: 0;
60
  margin-left: 4px;
61
  border-radius: 25px;
62
- transition: all 0.4s cubic-bezier(0.77, 0, 0.175, 1);
63
- }
64
- .cherry-input-switcher{
65
- display: none;
66
  }
67
- .cherry-input-switcher-true:checked{
68
- ~ .sw-enable{
69
  background-color: $green_color;
70
  span{
71
  opacity: 1;
72
  }
73
  }
74
- ~ .sw-disable{
75
  background-color: $green_color;
76
  span{
77
  opacity: 0;
78
  }
79
  }
80
- ~ .state-marker{
81
  left: 100%;
82
  margin-left: -45px;
83
  }
84
  }
85
-
86
  &.size-small{
87
  height: 25px;
88
- label{
89
- height: 25px;
90
- span{
91
- font-size: 10px;
92
- line-height: 15px;
93
- padding: 5px;
 
 
 
 
 
 
 
 
 
 
 
94
  }
95
- }
96
- .state-marker{
97
- width: 17px;
98
- height: 17px;
99
- margin-left: 4px;
100
- }
101
- .cherry-input-switcher-true:checked{
102
- ~ .state-marker{
103
- margin-left: -22px;
104
  }
105
- }
106
  }
107
  }
8
  margin: 0 0 5px 0;
9
  display: block;
10
  }
 
 
 
11
  .cherry-switcher-wrap{
12
  height: 49px;
13
  border-radius: 25px;
21
  background-color: $red_color;
22
  display: block;
23
  float: left;
24
+ transition: all 0.2s ease-in-out;
25
  span{
26
  font-size: 12px;
27
  line-height: 19px;
32
  text-align: center;
33
  display: block;
34
  opacity: 1;
35
+ transition: all 0.2s ease-in-out;
36
  }
37
  }
38
  .sw-enable{
56
  left: 0;
57
  margin-left: 4px;
58
  border-radius: 25px;
59
+ transition: all 0.2s ease-in-out;
 
 
 
60
  }
61
+ &.selected{
62
+ .sw-enable{
63
  background-color: $green_color;
64
  span{
65
  opacity: 1;
66
  }
67
  }
68
+ .sw-disable{
69
  background-color: $green_color;
70
  span{
71
  opacity: 0;
72
  }
73
  }
74
+ .state-marker{
75
  left: 100%;
76
  margin-left: -45px;
77
  }
78
  }
 
79
  &.size-small{
80
  height: 25px;
81
+ label{
82
+ height: 25px;
83
+ span{
84
+ font-size: 10px;
85
+ line-height: 15px;
86
+ padding: 5px;
87
+ }
88
+ }
89
+ .state-marker{
90
+ width: 17px;
91
+ height: 17px;
92
+ margin-left: 4px;
93
+ }
94
+ &.selected{
95
+ .state-marker{
96
+ left: 0;
97
+ margin-left: 33px;
98
  }
 
 
 
 
 
 
 
 
 
99
  }
 
100
  }
101
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-switcher/ui-switcher.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -48,7 +48,7 @@ if ( ! class_exists( 'UI_Switcher' ) ) {
48
  * @since 4.0.0
49
  */
50
  function __construct( $args = array() ) {
51
- $this->defaults_settings['id'] = 'cherry-ui-swither-' . uniqid();
52
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
53
 
54
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -60,27 +60,25 @@ if ( ! class_exists( 'UI_Switcher' ) ) {
60
  * @since 4.0.0
61
  */
62
  public function render() {
63
- $data_slave_true = ( ! empty( $this->settings['toggle']['true_slave'] ) ) ? 'data-slave="' . $this->settings['toggle']['true_slave'] . '" ' : '';
64
- $data_slave_false = ( ! empty( $this->settings['toggle']['false_slave'] ) ) ? 'data-slave="' . $this->settings['toggle']['false_slave'] . '" ' : '';
65
- $master_true = $data_slave_true || $data_slave_false ? 'data-master="true"' : '' ;
66
 
67
  $html = '';
68
- $class = $this->settings['class'];
69
- $class .= ' ' . $this->settings['master'];
70
 
71
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
 
 
72
  if ( '' !== $this->settings['label'] ) {
73
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
74
  }
75
 
76
- $value = filter_var( $this->settings['value'], FILTER_VALIDATE_BOOLEAN );
77
 
78
- $html .= '<div class="cherry-switcher-wrap size-' . esc_attr( $this->settings['style'] ) . '" ' . $master_true . '>';
79
- $html .= '<input type="radio" id="' . esc_attr( $this->settings['id'] ) . '-true" class="cherry-input-switcher cherry-input-switcher-true" name="' . esc_attr( $this->settings['name'] ) . '" ' . checked( true, $value, false ) . ' value="true" ' . $data_slave_true . '>';
80
- $html .= '<input type="radio" id="' . esc_attr( $this->settings['id'] ) . '-false" class="cherry-input-switcher cherry-input-switcher-false" name="' . esc_attr( $this->settings['name'] ) . '" ' . checked( false, $value, false ) . ' value="false" ' . $data_slave_false . '>';
81
  $html .= '<label class="sw-enable"><span>' . esc_html( $this->settings['toggle']['true_toggle'] ) . '</span></label>';
82
  $html .= '<label class="sw-disable"><span>' . esc_html( $this->settings['toggle']['false_toggle'] ) . '</span></label>';
83
  $html .= '<span class="state-marker"></span>';
 
84
  $html .= '</div>';
85
  $html .= '</div>';
86
 
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
48
  * @since 4.0.0
49
  */
50
  function __construct( $args = array() ) {
51
+ $this->defaults_settings['id'] = 'cherry-ui-swither-'.uniqid();
52
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
53
 
54
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
60
  * @since 4.0.0
61
  */
62
  public function render() {
63
+ $data_attr_line = ( ! empty( $this->settings['toggle']['true_slave'] ) ) ? 'data-true-slave="' . $this->settings['toggle']['true_slave'] . '"' : '';
64
+ $data_attr_line .= ( ! empty( $this->settings['toggle']['false_slave'] ) ) ? ' data-false-slave="' . $this->settings['toggle']['false_slave'] . '"' : '';
 
65
 
66
  $html = '';
 
 
67
 
68
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
69
+
70
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
71
  if ( '' !== $this->settings['label'] ) {
72
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
73
  }
74
 
75
+ $selected_class = filter_var( $this->settings['value'], FILTER_VALIDATE_BOOLEAN ) ? 'selected' : '';
76
 
77
+ $html .= '<div class="cherry-switcher-wrap size-' . esc_attr( $this->settings['style'] ) . ' ' . esc_attr( $this->settings['class'] ) . ' ' . $selected_class .'">';
 
 
78
  $html .= '<label class="sw-enable"><span>' . esc_html( $this->settings['toggle']['true_toggle'] ) . '</span></label>';
79
  $html .= '<label class="sw-disable"><span>' . esc_html( $this->settings['toggle']['false_toggle'] ) . '</span></label>';
80
  $html .= '<span class="state-marker"></span>';
81
+ $html .= '<input id="' . esc_attr( $this->settings['id'] ) . '" type="hidden" class="cherry-input-switcher" name="' . esc_attr( $this->settings['name'] ) . '" ' . checked( 'true', $this->settings['value'], false ) . ' value="' . esc_html( $this->settings['value'] ) . '" ' . $data_attr_line . '>';
82
  $html .= '</div>';
83
  $html .= '</div>';
84
 
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-text/ui-text.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -45,7 +45,7 @@ if ( ! class_exists( 'UI_Text' ) ) {
45
  * @since 4.0.0
46
  */
47
  function __construct( $args = array() ) {
48
- $this->defaults_settings['id'] = 'cherry-ui-input-text-' . uniqid();
49
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
50
 
51
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -70,14 +70,12 @@ if ( ! class_exists( 'UI_Text' ) ) {
70
  */
71
  public function render() {
72
  $html = '';
73
- $class = $this->settings['class'];
74
- $class .= ' ' . $this->settings['master'];
75
 
76
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
77
  if ( '' !== $this->settings['label'] ) {
78
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
79
  }
80
- $html .= '<input type="' . esc_attr( $this->settings['type'] ) . '" id="' . esc_attr( $this->settings['id'] ) . '" class="widefat cherry-ui-text" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '" placeholder="' . esc_attr( $this->settings['placeholder'] ) . '" ' . $this->get_required() . '>';
81
  $html .= '</div>';
82
  return $html;
83
  }
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
45
  * @since 4.0.0
46
  */
47
  function __construct( $args = array() ) {
48
+ $this->defaults_settings['id'] = 'cherry-ui-input-text-'.uniqid();
49
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
50
 
51
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
70
  */
71
  public function render() {
72
  $html = '';
 
 
73
 
74
+ $html .= '<div class="cherry-ui-container ' . esc_attr( $this->settings['master'] ) . '">';
75
  if ( '' !== $this->settings['label'] ) {
76
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . esc_html( $this->settings['label'] ) . '</label> ';
77
  }
78
+ $html .= '<input type="' . esc_attr( $this->settings['type'] ) . '" id="' . esc_attr( $this->settings['id'] ) . '" class="widefat cherry-ui-text ' . esc_attr( $this->settings['class'] ) . '" name="' . esc_attr( $this->settings['name'] ) . '" value="' . esc_html( $this->settings['value'] ) . '" placeholder="' . esc_attr( $this->settings['placeholder'] ) . '" '.$this->get_required().'>';
79
  $html .= '</div>';
80
  return $html;
81
  }
cherry-framework/modules/cherry-ui-elements/inc/ui-elements/ui-textarea/ui-textarea.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
@@ -44,7 +44,7 @@ if ( ! class_exists( 'UI_Textarea' ) ) {
44
  * @since 4.0.0
45
  */
46
  function __construct( $args = array() ) {
47
- $this->defaults_settings['id'] = 'cherry-ui-textarea-' . uniqid();
48
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
49
 
50
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
@@ -57,14 +57,14 @@ if ( ! class_exists( 'UI_Textarea' ) ) {
57
  */
58
  public function render() {
59
  $html = '';
60
- $class = $this->settings['class'];
61
- $class .= ' ' . $this->settings['master'];
62
 
63
- $html .= '<div class="cherry-ui-container ' . esc_attr( $class ) . '">';
 
 
64
  if ( '' !== $this->settings['label'] ) {
65
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . $this->settings['label'] . '</label> ';
66
  }
67
- $html .= '<textarea id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-textarea" name="' . esc_attr( $this->settings['name'] ) . '" rows="' . esc_attr( $this->settings['rows'] ) . '" cols="' . esc_attr( $this->settings['cols'] ) . '" placeholder="' . esc_attr( $this->settings['placeholder'] ) . '">' . esc_html( $this->settings['value'] ) . '</textarea>';
68
  $html .= '</div>';
69
 
70
  return $html;
7
  * @author Cherry Team <support@cherryframework.com>
8
  * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  // If this file is called directly, abort.
44
  * @since 4.0.0
45
  */
46
  function __construct( $args = array() ) {
47
+ $this->defaults_settings['id'] = 'cherry-ui-textarea-'.uniqid();
48
  $this->settings = wp_parse_args( $args, $this->defaults_settings );
49
 
50
  add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_assets' ) );
57
  */
58
  public function render() {
59
  $html = '';
 
 
60
 
61
+ $master_class = ! empty( $this->settings['master'] ) && isset( $this->settings['master'] ) ? esc_html( $this->settings['master'] ) : '';
62
+
63
+ $html .= '<div class="cherry-ui-container ' . $master_class . '">';
64
  if ( '' !== $this->settings['label'] ) {
65
  $html .= '<label class="cherry-label" for="' . esc_attr( $this->settings['id'] ) . '">' . $this->settings['label'] . '</label> ';
66
  }
67
+ $html .= '<textarea id="' . esc_attr( $this->settings['id'] ) . '" class="cherry-ui-textarea ' . esc_attr( $this->settings['class'] ) . '" name="' . esc_attr( $this->settings['name'] ) . '" rows="' . esc_attr( $this->settings['rows'] ) . '" cols="' . esc_attr( $this->settings['cols'] ) . '" placeholder="' . esc_attr( $this->settings['placeholder'] ) . '">' . esc_html( $this->settings['value'] ) . '</textarea>';
68
  $html .= '</div>';
69
 
70
  return $html;
cherry-framework/modules/cherry-ui-elements/ui-element.php CHANGED
@@ -7,7 +7,7 @@
7
  * @author Cherry Team <cherryframework@gmail.com>
8
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
  * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
  */
12
 
13
  /**
@@ -87,7 +87,7 @@ if ( ! class_exists( 'UI_Element' ) ) {
87
  if ( '' !== $name ) {
88
  $this->settings['name'] = $name;
89
  } else {
90
- throw new Exception( "Invalid control name '" . $name . "'. Name can't be empty." );
91
  }
92
  }
93
  }
7
  * @author Cherry Team <cherryframework@gmail.com>
8
  * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
  * @link http://www.cherryframework.com/
10
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11
  */
12
 
13
  /**
87
  if ( '' !== $name ) {
88
  $this->settings['name'] = $name;
89
  } else {
90
+ throw new Exception( "Invalid control name '".$name."'. Name can't be empty." );
91
  }
92
  }
93
  }
cherry-framework/modules/cherry-utility/cherry-utility.php DELETED
@@ -1,124 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Utility
4
- * Description: Multiple utility functions
5
- * Version: 1.1.5
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.1.5
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Utility' ) ) {
26
-
27
- /**
28
- * Class Cherry Utility.
29
- *
30
- * @since 1.0.0
31
- * @since 1.0.3 Removed `module_directory` and `module_directory_uri` properties.
32
- */
33
- class Cherry_Utility {
34
-
35
- /**
36
- * A reference to an instance of this class.
37
- *
38
- * @since 1.0.0
39
- * @var object
40
- */
41
- private static $instance = null;
42
-
43
- /**
44
- * Default arguments.
45
- *
46
- * @since 1.0.0
47
- * @var array
48
- */
49
- public $args = array(
50
- 'utility' => array(
51
- 'media',
52
- 'attributes',
53
- 'meta-data',
54
- ),
55
- 'meta_key' => array(
56
- 'term_thumb' => 'cherry_thumb',
57
- ),
58
- );
59
-
60
- /**
61
- * Utilit class.
62
- *
63
- * @since 1.0.0
64
- * @var string
65
- */
66
- public $utility = null;
67
-
68
- /**
69
- * Cherry_Utility constructor.
70
- *
71
- * @since 1.0.0
72
- */
73
- public function __construct( $core, $args = array() ) {
74
- $this->args = array_merge( $this->args, $args );
75
- $this->utility_require( $core );
76
- }
77
-
78
- /**
79
- * Require utility.
80
- *
81
- * @since 1.0.0
82
- * @since 1.1.1 Using dirname( __FILE__ ) instead of __DIR__.
83
- * @return void
84
- */
85
- public function utility_require() {
86
-
87
- if ( ! empty( $this->args['utility'] ) ) {
88
-
89
- $this->utility = new stdClass();
90
- $utility = $this->args['utility'];
91
- array_unshift( $utility, 'satellite' );
92
-
93
- foreach ( $utility as $utilit ) {
94
-
95
- require_once( dirname( __FILE__ ) . '/inc/cherry-' . $utilit . '-utilit.php' );
96
-
97
- $utilit = str_replace( '-', ' ', $utilit );
98
- $class_name = ucwords( $utilit );
99
- $class_name = str_replace( ' ', '_', $class_name );
100
- $utilit = str_replace( ' ', '_', $utilit );
101
- $class_name = 'Cherry_' . $class_name . '_Utilit';
102
-
103
- $this->utility->$utilit = new $class_name( $this );
104
- }
105
- }
106
- }
107
-
108
- /**
109
- * Returns the instance.
110
- *
111
- * @since 1.0.0
112
- * @return object
113
- */
114
- public static function get_instance( $core, $args ) {
115
-
116
- // If the single instance hasn't been set, set it now.
117
- if ( null == self::$instance ) {
118
- self::$instance = new self( $core, $args );
119
- }
120
-
121
- return self::$instance;
122
- }
123
- }
124
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-utility/inc/cherry-attributes-utilit.php DELETED
@@ -1,171 +0,0 @@
1
- <?php
2
- /**
3
- * Class Cherry Attributes Utilit
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <support@cherryframework.com>
8
- * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'Cherry_Attributes_Utilit' ) ) {
19
-
20
- /**
21
- * Class Cherry Attributes Utilit
22
- */
23
- class Cherry_Attributes_Utilit extends Cherry_Satellite_Utilit {
24
-
25
- /**
26
- * Get post title.
27
- *
28
- * @since 1.0.0
29
- * @param array $args array of arguments.
30
- * @param [type] $type - post, term.
31
- * @param int $id ID of post.
32
- * @return string
33
- */
34
- public function get_title( $args = array(), $type = 'post', $id = 0 ) {
35
- $object = call_user_func( array( $this, 'get_' . $type . '_object' ), $id );
36
-
37
- if ( 'post' === $type && empty( $object->ID ) || 'term' === $type && empty( $object->term_id ) ) {
38
- return '';
39
- }
40
-
41
- $default_args = array(
42
- 'visible' => true,
43
- 'length' => -1,
44
- 'trimmed_type' => 'word',
45
- 'ending' => '&hellip;',
46
- 'html' => '<h3 %1$s><a href="%2$s" %3$s rel="bookmark">%4$s</a></h3>',
47
- 'class' => '',
48
- 'title' => '',
49
- 'echo' => false,
50
- );
51
- $args = wp_parse_args( $args, $default_args );
52
- $html = '' ;
53
-
54
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) && 0 !== $args['length'] ) {
55
- $title = $title_cut = ( 'post' === $type ) ? $object->post_title : $object->name ;
56
- $title = ( $args['title'] ) ? 'title="' . $args['title'] . '"' : 'title="' . $title . '"' ;
57
- $title_cut = $this->cut_text( $title_cut, $args['length'], $args['trimmed_type'], $args['ending'] );
58
- $link = ( 'post' === $type ) ? $this->get_post_permalink() : $this->get_term_permalink( $object->term_id );
59
- $html_class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '' ;
60
-
61
- $html = sprintf( $args['html'], $html_class, $link, $title, $title_cut );
62
- }
63
-
64
- return $this->output_method( $html, $args['echo'] );
65
- }
66
-
67
- /**
68
- * Get post excerpt
69
- *
70
- * @since 1.0.0
71
- * @param array $args array of arguments.
72
- * @param [type] $type - post, term.
73
- * @param int $id ID of post.
74
- * @return string
75
- */
76
- public function get_content( $args = array(), $type = 'post', $id = 0 ) {
77
- $object = call_user_func( array( $this, 'get_' . $type . '_object' ), $id );
78
-
79
- if ( 'post' === $type && empty( $object->ID ) || 'term' === $type && empty( $object->term_id ) ) {
80
- return '';
81
- }
82
-
83
- $default_args = array(
84
- 'visible' => true,
85
- 'content_type' => 'post_content',
86
- 'length' => -1,
87
- 'trimmed_type' => 'word',
88
- 'ending' => '&hellip;',
89
- 'html' => '<p %1$s>%2$s</p>',
90
- 'class' => '',
91
- 'echo' => false,
92
- );
93
- $args = wp_parse_args( $args, $default_args );
94
- $html = '' ;
95
-
96
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
97
- if ( 'term' === $type ) {
98
- $text = $object->description;
99
- } elseif ( 'post_content' === $args['content_type'] || 'post_excerpt' === $args['content_type'] && empty( $object->$args['content_type'] ) ) {
100
- $text = get_the_content();
101
- } else {
102
- $text = get_the_excerpt();
103
- }
104
-
105
- $text = $this->cut_text( $text, $args['length'], $args['trimmed_type'], $args['ending'], true );
106
-
107
- if ( $text ) {
108
- $html_class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '' ;
109
-
110
- $html = sprintf( $args['html'], $html_class, $text );
111
- }
112
- }
113
-
114
- $html = apply_filters( 'the_content', $html );
115
-
116
- return $this->output_method( $html, $args['echo'] );
117
- }
118
-
119
- /**
120
- * Get post more button
121
- *
122
- * @since 1.0.0
123
- * @param array $args array of arguments.
124
- * @param [type] $type - post, term.
125
- * @param int $id ID of post.
126
- * @return string
127
- */
128
- public function get_button( $args = array(), $type = 'post', $id = 0 ) {
129
- $object = call_user_func( array( $this, 'get_' . $type . '_object' ), $id );
130
-
131
- if ( 'post' === $type && empty( $object->ID ) || 'term' === $type && empty( $object->term_id ) ) {
132
- return false;
133
- }
134
-
135
- $default_args = array(
136
- 'visible' => true,
137
- 'text' => '',
138
- 'icon' => '',
139
- 'html' => '<a href="%1$s" %2$s %3$s><span class="btn__text">%4$s</span>%5$s</a>',
140
- 'class' => 'btn',
141
- 'title' => '',
142
- 'echo' => false,
143
- );
144
- $args = wp_parse_args( $args, $default_args );
145
- $html = '' ;
146
-
147
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
148
-
149
- if ( $args['text'] || $args['icon'] ) {
150
-
151
- $html_class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '' ;
152
- $text = esc_html( $args['text'] );
153
-
154
- if ( 'term' === $type ) {
155
-
156
- $title = $object->name;
157
- $link = $this->get_term_permalink( $object->term_id );
158
- } else {
159
- $title = $object->post_title;
160
- $link = $this->get_post_permalink();
161
- }
162
-
163
- $title = ( $args['title'] ) ? 'title="' . $args['title'] . '"' : 'title="' . $title . '"' ;
164
- $html = sprintf( $args['html'], $link, $title, $html_class, wp_kses( $text, wp_kses_allowed_html( 'post' ) ), $args['icon'] );
165
- }
166
- }
167
-
168
- return $this->output_method( $html, $args['echo'] );
169
- }
170
- }
171
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-utility/inc/cherry-media-utilit.php DELETED
@@ -1,251 +0,0 @@
1
- <?php
2
- /**
3
- * Class Cherry Media Utilit
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <support@cherryframework.com>
8
- * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'Cherry_Media_Utilit' ) ) {
19
-
20
- /**
21
- * Class Cherry Media Utilit
22
- */
23
- class Cherry_Media_Utilit extends Cherry_Satellite_Utilit {
24
- /**
25
- * Get post image.
26
- *
27
- * @return string
28
- */
29
- public function get_image( $args = array(), $type = 'post', $id = 0 ) {
30
-
31
- if ( is_callable( array( $this, 'get_' . $type . '_object' ) ) ) {
32
- $object = call_user_func( array( $this, 'get_' . $type . '_object' ), $id );
33
-
34
- if ( 'post' === $type && empty( $object->ID ) || 'term' === $type && empty( $object->term_id ) ) {
35
- return '';
36
- }
37
- }
38
-
39
- $default_args = array(
40
- 'visible' => true,
41
- 'size' => apply_filters( 'cherry_normal_image_size', 'post-thumbnail' ),
42
- 'mobile_size' => apply_filters( 'cherry_mobile_image_size', 'post-thumbnail' ),
43
- 'html' => '<a href="%1$s" %2$s ><img src="%3$s" alt="%4$s" %5$s ></a>',
44
- 'class' => 'wp-image',
45
- 'placeholder' => true,
46
- 'placeholder_background' => '000',
47
- 'placeholder_foreground' => 'fff',
48
- 'placeholder_title' => '',
49
- 'html_tag_suze' => true,
50
- 'echo' => false,
51
- );
52
- $args = wp_parse_args( $args, $default_args );
53
- $html = '';
54
-
55
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
56
-
57
- $size = wp_is_mobile() ? $args['mobile_size'] : $args['size'];
58
- $size = in_array( $size, get_intermediate_image_sizes() ) ? $size : 'post-thumbnail';
59
-
60
- // Place holder defaults attr
61
- $size_array = $this->get_thumbnail_size_array( $size );
62
-
63
- switch ( $type ) {
64
- case 'post':
65
- $id = $object->ID;
66
- $thumbnail_id = get_post_thumbnail_id( $id );
67
- $alt = esc_attr( $object->post_title );
68
- $link = $this->get_post_permalink();
69
- break;
70
-
71
- case 'term':
72
- $id = $object->term_id;
73
- $thumbnail_id = get_term_meta( $id, $this->args['meta_key']['term_thumb'] , true );
74
- $alt = esc_attr( $object->name );
75
- $link = $this->get_term_permalink( $id );
76
- break;
77
-
78
- case 'attachment':
79
- $thumbnail_id = $id;
80
- $alt = get_the_title( $thumbnail_id );
81
- $link = wp_get_attachment_image_url( $thumbnail_id, $size );
82
- break;
83
- }
84
-
85
- if ( $thumbnail_id ) {
86
- $image_data = wp_get_attachment_image_src( $thumbnail_id, $size );
87
- $src = $image_data[0];
88
- $size_array['width'] = $image_data[1];
89
- $size_array['height'] = $image_data[2];
90
- } elseif ( filter_var( $args['placeholder'], FILTER_VALIDATE_BOOLEAN ) ) {
91
- $title = ( $args['placeholder_title'] ) ? $args['placeholder_title'] : $size_array['width'] . 'x' . $size_array['height'] ;
92
- $attr = array(
93
- 'width' => $size_array['width'],
94
- 'height' => $size_array['height'],
95
- 'background' => $args['placeholder_background'],
96
- 'foreground' => $args['placeholder_foreground'],
97
- 'title' => $title,
98
- );
99
-
100
- $attr = array_map( 'esc_attr', $attr );
101
-
102
- $width = ( 4000 < intval( $attr['width'] ) ) ? 4000 : intval( $attr['width'] );
103
- $height = ( 4000 < intval( $attr['height'] ) ) ? 4000 : intval( $attr['height'] );
104
-
105
- $src = $this->get_placeholder_url( array(
106
- 'width' => $width,
107
- 'height' => $height,
108
- 'background' => $attr['background'],
109
- 'foreground' => $attr['foreground'],
110
- 'title' => $attr['title'],
111
- ) );
112
- }
113
-
114
- $class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '' ;
115
- $html_tag_suze = ( filter_var( $args['html_tag_suze'], FILTER_VALIDATE_BOOLEAN ) ) ? 'width="' . $size_array['width'] . '" height="' . $size_array['height'] . '"' : '' ;
116
-
117
- if ( isset( $src ) ) {
118
- $html = sprintf( $args['html'], $link, $class, $src, $alt, $html_tag_suze );
119
- }
120
- }
121
-
122
- return $this->output_method( $html, $args['echo'] );
123
- }
124
-
125
- /**
126
- * Get placeholder image URL
127
- *
128
- * @param array $args Image argumnets.
129
- * @return string
130
- */
131
- public function get_placeholder_url( $args = array() ) {
132
-
133
- $args = wp_parse_args( $args, array(
134
- 'width' => 300,
135
- 'height' => 300,
136
- 'background' => '000',
137
- 'foreground' => 'fff',
138
- 'title' => '',
139
- ) );
140
-
141
- $args = array_map( 'urlencode', $args );
142
- $base_url = 'http://fakeimg.pl';
143
- $format = '%1$s/%2$sx%3$s/%4$s/%5$s/?text=%6$s';
144
- $image_url = sprintf(
145
- $format,
146
- $base_url, $args['width'], $args['height'], $args['background'], $args['foreground'], $args['title']
147
- );
148
-
149
- /**
150
- * Filter image placeholder URL
151
- *
152
- * @param string $image_url Default URL.
153
- * @param string $args Image arguments.
154
- */
155
- return apply_filters( 'cherry_utility_placeholder_image_url', esc_url( $image_url ), $args );
156
- }
157
-
158
-
159
- /**
160
- * Get post embed
161
- *
162
- * @since 1.0.0
163
- * @return string
164
- */
165
- public function get_video( $args = array(), $id = 0 ) {
166
- $object = $this->get_post_object( $id );
167
-
168
- if ( empty( $object->ID ) ) {
169
- return '';
170
- }
171
-
172
- $default_args = array(
173
- 'visible' => true,
174
- 'size' => apply_filters( 'cherry_normal_video_size', 'post-thumbnail' ),
175
- 'mobile_size' => apply_filters( 'cherry_mobile_video_size', 'post-thumbnail' ),
176
- 'class' => 'wp-video',
177
- 'echo' => false,
178
- );
179
- $args = wp_parse_args( $args, $default_args );
180
- $html = '';
181
-
182
- if ( ! filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
183
- return '';
184
- }
185
-
186
- $size = wp_is_mobile() ? $args['mobile_size'] : $args['size'];
187
- $size_array = $this->get_thumbnail_size_array( $size );
188
- $url_array = wp_extract_urls( $object->post_content );
189
-
190
- if ( empty( $url_array ) || ! $url_array ) {
191
- return '';
192
- }
193
-
194
- $html = wp_oembed_get( $url_array[0], array( 'width' => $size_array['width'] ) );
195
-
196
- if ( ! $html ) {
197
- $url_array = $this->sorted_array( $url_array );
198
-
199
- if ( empty( $url_array['video'] ) ) {
200
- return '';
201
- }
202
-
203
- if ( empty( $url_array['poster'] ) ) {
204
- $post_thumbnail_id = get_post_thumbnail_id( $object->ID );
205
- $url_array['poster'] = wp_get_attachment_image_url( $post_thumbnail_id, $size );
206
- }
207
-
208
- $shortcode_attr = array(
209
- 'width' => '100%',
210
- 'height' => '100%',
211
- 'poster' => $url_array['poster'],
212
- );
213
-
214
- $shortcode_attr = wp_parse_args( $url_array['video'], $shortcode_attr );
215
-
216
- $html = wp_video_shortcode( $shortcode_attr );
217
- }
218
-
219
- return $this->output_method( $html, $args['echo'] );
220
- }
221
-
222
- /**
223
- * Sorted video and poster url
224
- *
225
- * @since 1.0.0
226
- * @return array
227
- */
228
- private function sorted_array( $array ) {
229
- $output_array = array(
230
- 'video' => array(),
231
- 'poster' => '',
232
- );
233
-
234
- $default_types = wp_get_video_extensions();
235
- $pattern = '/.(' . implode( '|', $default_types ) . ')/im';
236
-
237
- foreach ( $array as $url ) {
238
- foreach ( $default_types as $type ) {
239
- if ( strpos( $url, $type ) ) {
240
- $output_array['video'][ $type ] = $url;
241
- }
242
- }
243
- if ( ! preg_match( $pattern, $url ) ) {
244
- $output_array['poster'] = $url;
245
- }
246
- }
247
-
248
- return $output_array;
249
- }
250
- }
251
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-utility/inc/cherry-meta-data-utilit.php DELETED
@@ -1,236 +0,0 @@
1
- <?php
2
- /**
3
- * Class Cherry Meta Data Utilit
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <support@cherryframework.com>
8
- * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'Cherry_Meta_Data_Utilit' ) ) {
19
-
20
- /**
21
- * Class Cherry Meta Data Utilit
22
- */
23
- class Cherry_Meta_Data_Utilit extends Cherry_Satellite_Utilit {
24
-
25
- /**
26
- * Get post terms
27
- *
28
- * @since 1.0.0
29
- * @return string
30
- */
31
- public function get_terms( $args = array(), $id = 0 ) {
32
- $object = $this->get_post_object( $id );
33
-
34
- if ( empty( $object->ID ) ) {
35
- return false;
36
- }
37
-
38
- $default_args = array(
39
- 'visible' => true,
40
- 'type' => 'category',
41
- 'icon' => '',
42
- 'prefix' => '',
43
- 'delimiter' => ' ',
44
- 'before' => '<div class="post-terms">',
45
- 'after' => '</div>',
46
- 'echo' => false,
47
- );
48
- $args = wp_parse_args( $args, $default_args );
49
- $html = '';
50
-
51
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
52
- $prefix = $args['prefix'] . $args['icon'] ;
53
- $terms = get_the_term_list( $object, $args['type'], $prefix, $args['delimiter'] );
54
-
55
- if ( ! $terms || is_wp_error( $terms ) ) {
56
- return '';
57
- }
58
-
59
- $html = $args['before'] . $terms . $args['after'];
60
- }
61
-
62
- return $this->output_method( $html, $args['echo'] );
63
- }
64
-
65
- /**
66
- * Get post author
67
- *
68
- * @since 1.0.0
69
- * @return string
70
- */
71
- public function get_author( $args = array(), $id = 0 ) {
72
- $object = $this->get_post_object( $id );
73
-
74
- if ( empty( $object->ID ) ) {
75
- return false;
76
- }
77
-
78
- $default_args = array(
79
- 'visible' => 'true',
80
- 'icon' => '',
81
- 'prefix' => '',
82
- 'html' => '%1$s<a href="%2$s" %3$s %4$s rel="author">%5$s%6$s</a>',
83
- 'title' => '',
84
- 'class' => 'post-author',
85
- 'echo' => false,
86
- );
87
- $args = wp_parse_args( $args, $default_args );
88
- $html = '' ;
89
-
90
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
91
- $html_class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '';
92
- $title = ( $args['title'] ) ? 'title="' . $args['title'] . '"' : '';
93
- $author = get_the_author();
94
- $link = get_author_posts_url( $object->post_author );
95
-
96
- $html = sprintf( $args['html'], $args['prefix'], $link, $title, $html_class, $args['icon'], $author );
97
- }
98
-
99
- return $this->output_method( $html, $args['echo'] );
100
- }
101
-
102
- /**
103
- * Get comment count
104
- *
105
- * @since 1.0.0
106
- * @return string
107
- */
108
- public function get_comment_count( $args = array(), $id = 0 ) {
109
- $object = $this->get_post_object( $id );
110
-
111
- if ( empty( $object->ID ) ) {
112
- return false;
113
- }
114
-
115
- $default_args = array(
116
- 'visible' => true,
117
- 'icon' => '',
118
- 'prefix' => '',
119
- 'suffix' => '%s',
120
- 'html' => '%1$s<a href="%2$s" %3$s %4$s>%5$s%6$s</a>',
121
- 'title' => '',
122
- 'class' => 'post-comments-count',
123
- 'echo' => false,
124
- );
125
-
126
- $args = wp_parse_args( $args, $default_args );
127
-
128
- $args['suffix'] = ( isset( $args['sufix'] ) ) ? $args['sufix'] : $args['suffix'];
129
-
130
- $html = $count = '' ;
131
-
132
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
133
- $post_type = get_post_type( $object->ID );
134
- if ( post_type_supports( $post_type, 'comments' ) ) {
135
- $suffix = is_string( $args['suffix'] ) ? $args['suffix'] : translate_nooped_plural( $args['suffix'], $object->comment_count, $args['suffix']['domain'] );
136
- $count = sprintf( $suffix, $object->comment_count );
137
- }
138
-
139
- $html_class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '';
140
- $title = ( $args['title'] ) ? 'title="' . $args['title'] . '"' : '';
141
- $link = get_comments_link();
142
-
143
- $html = sprintf( $args['html'], $args['prefix'], $link, $title, $html_class, $args['icon'], $count );
144
- }
145
-
146
- return $this->output_method( $html, $args['echo'] );
147
- }
148
-
149
-
150
- /**
151
- * Get post date.
152
- *
153
- * @since 1.0.0
154
- * @return string
155
- */
156
- public function get_date( $args = array(), $id = 0 ) {
157
- $object = $this->get_post_object( $id );
158
-
159
- if ( empty( $object->ID ) ) {
160
- return false;
161
- }
162
-
163
- $default_args = array(
164
- 'visible' => true,
165
- 'icon' => '',
166
- 'prefix' => '',
167
- 'html' => '%1$s<a href="%2$s" %3$s %4$s ><time datetime="%5$s" title="%5$s">%6$s%7$s</time></a>',
168
- 'title' => '',
169
- 'class' => 'post-date',
170
- 'date_format' => '',
171
- 'human_time' => false,
172
- 'echo' => false,
173
- );
174
- $args = wp_parse_args( $args, $default_args );
175
- $html = '' ;
176
-
177
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
178
- $html_class = ( $args['class'] ) ? 'class="' . esc_attr( $args['class'] ) . '"' : '' ;
179
- $title = ( $args['title'] ) ? 'title="' . esc_attr( $args['title'] ) . '"' : '' ;
180
- $date_post_format = ( $args['date_format'] ) ? esc_attr( $args['date_format'] ) : get_option( 'date_format' );
181
- $date = ( $args['human_time'] ) ? human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) ) : get_the_date( $date_post_format );
182
- $time = get_the_time( 'Y-m-d\TH:i:sP' );
183
-
184
- preg_match_all( '/(\d+)/mi', $time, $date_array );
185
- $link = get_day_link( (int) $date_array[0][0], (int) $date_array[0][1], (int) $date_array[0][2] );
186
-
187
- $html = sprintf( $args['html'], $args['prefix'], $link, $title, $html_class, $time, $args['icon'], $date );
188
- }
189
-
190
- return $this->output_method( $html, $args['echo'] );
191
- }
192
-
193
- /**
194
- * Get post count in term
195
- *
196
- * @since 1.0.0
197
- * @return string
198
- */
199
- public function get_post_count_in_term( $args = array(), $id = 0 ) {
200
- $object = $this->get_term_object( $id );
201
-
202
- if ( empty( $object->term_id ) ) {
203
- return false;
204
- }
205
-
206
- $default_args = array(
207
- 'visible' => true,
208
- 'icon' => '',
209
- 'prefix' => '',
210
- 'suffix' => '%s',
211
- 'html' => '%1$s<a href="%2$s" %3$s %4$s rel="bookmark">%5$s%6$s</a>',
212
- 'title' => '',
213
- 'class' => 'post-count',
214
- 'echo' => false,
215
- );
216
- $args = wp_parse_args( $args, $default_args );
217
- $args['suffix'] = ( isset( $args['sufix'] ) ) ? $args['sufix'] : $args['suffix'];
218
-
219
- $html = '' ;
220
-
221
- if ( filter_var( $args['visible'], FILTER_VALIDATE_BOOLEAN ) ) {
222
- $html_class = ( $args['class'] ) ? 'class="' . $args['class'] . '"' : '' ;
223
- $name = $object->name ;
224
- $title = ( $args['title'] ) ? 'title="' . $args['title'] . '"' : 'title="' . $name . '"' ;
225
- $link = get_term_link( $object->term_id , $object->taxonomy );
226
-
227
- $suffix = is_string( $args['suffix'] ) ? $args['suffix'] : translate_nooped_plural( $args['suffix'], $object->count, $args['suffix']['domain'] );
228
- $count = sprintf( $suffix, $object->count );
229
-
230
- $html = sprintf( $args['html'], $args['prefix'], $link, $title, $html_class, $args['icon'], $count );
231
- }
232
-
233
- return $this->output_method( $html, $args['echo'] );
234
- }
235
- }
236
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-utility/inc/cherry-satellite-utilit.php DELETED
@@ -1,163 +0,0 @@
1
- <?php
2
- /**
3
- * Class Cherry Satellite Utilit
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <support@cherryframework.com>
8
- * @copyright Copyright (c) 2012 - 2015, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'Cherry_Satellite_Utilit' ) ) {
19
-
20
- /**
21
- * Class Cherry Satellite Utilit
22
- */
23
- class Cherry_Satellite_Utilit {
24
-
25
- /**
26
- * Parent module args
27
- *
28
- * @since 1.0.0
29
- * @var array
30
- */
31
- public $args = null;
32
-
33
- /**
34
- * Cherry_Satellite_Utilit constructor
35
- *
36
- * @since 1.0.0
37
- */
38
- function __construct( $module = null ) {
39
- if ( null !== $module ) {
40
- $this->args = $module->args;
41
- }
42
- }
43
-
44
- /**
45
- * Get post
46
- *
47
- * @since 1.0.0
48
- * @return object
49
- */
50
- public function get_post_object( $id = 0 ) {
51
- return get_post( $id );
52
- }
53
-
54
- /**
55
- * Get term
56
- *
57
- * @since 1.0.0
58
- * @return object
59
- */
60
- public function get_term_object( $id = 0 ) {
61
- return get_term( $id );
62
- }
63
-
64
- /**
65
- * Get post permalink
66
- *
67
- * @since 1.0.0
68
- * @return string
69
- */
70
- public function get_post_permalink() {
71
- return esc_url( get_the_permalink() );
72
- }
73
-
74
- /**
75
- * Get post permalink.
76
- *
77
- * @since 1.0.0
78
- * @return string
79
- */
80
- public function get_term_permalink( $id = 0 ) {
81
- return esc_url( get_category_link( $id ) );
82
- }
83
-
84
- /**
85
- * Cut text
86
- *
87
- * @since 1.0.0
88
- * @return string
89
- */
90
- public function cut_text( $text = '', $length = -1, $trimmed_type = 'word', $after, $content = false ) {
91
-
92
- if ( -1 !== $length ) {
93
-
94
- if ( $content ) {
95
- $text = strip_shortcodes( $text );
96
- $text = apply_filters( 'the_content', $text );
97
- $text = str_replace( ']]>', ']]&gt;', $text );
98
- }
99
-
100
- if ( 'word' === $trimmed_type ) {
101
- $text = wp_trim_words( $text, $length, $after );
102
- } else {
103
- $text = wp_html_excerpt( $text, $length, $after );
104
- }
105
- }
106
-
107
- return $text;
108
- }
109
-
110
- /**
111
- * Get array image size
112
- *
113
- * @since 1.0.0
114
- * @return array
115
- */
116
- public function get_thumbnail_size_array( $size ) {
117
- global $_wp_additional_image_sizes;
118
- $size_array = array();
119
- if ( array_key_exists( $size, $_wp_additional_image_sizes ) ) {
120
- $size_array = $_wp_additional_image_sizes[ $size ];
121
- } else {
122
- $size_array = $_wp_additional_image_sizes['post-thumbnail'];
123
- }
124
-
125
- return $size_array;
126
- }
127
-
128
- /**
129
- * Output content method.
130
- *
131
- * @since 1.0.0
132
- * @return string
133
- */
134
- public function output_method( $content = '', $echo = false ) {
135
- if ( ! filter_var( $echo, FILTER_VALIDATE_BOOLEAN ) ) {
136
- return $content;
137
- } else {
138
- echo $content;
139
- }
140
- }
141
-
142
-
143
-
144
- /**
145
- * Return post terms.
146
- *
147
- * @since 1.0.0
148
- * @param [type] $tax - category, post_tag, post_format.
149
- * @param [type] $key - slug, term_id.
150
- * @return array
151
- */
152
- public function get_terms_array( $tax = 'category', $key = 'slug' ) {
153
- $terms = array();
154
- $all_terms = (array) get_terms( $tax, array( 'hide_empty' => 0, 'hierarchical' => 0 ) );
155
-
156
- foreach ( $all_terms as $term ) {
157
- $terms[ $term->$key ] = $term->name;
158
- }
159
-
160
- return $terms;
161
- }
162
- }
163
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-widget-factory/cherry-widget-factory.php DELETED
@@ -1,118 +0,0 @@
1
- <?php
2
- /**
3
- * Module Name: Widget Factory
4
- * Description: Base widget class that simplifies creating of your own widgets.
5
- * Version: 1.2.1
6
- * Author: Cherry Team
7
- * Author URI: http://www.cherryframework.com/
8
- * License: GPLv3
9
- * License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
- *
11
- * @package Cherry_Framework
12
- * @subpackage Modules
13
- * @version 1.2.1
14
- * @author Cherry Team <cherryframework@gmail.com>
15
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
16
- * @link http://www.cherryframework.com/
17
- * @license http://www.gnu.org/licenses/gpl-3.0.html
18
- */
19
-
20
- // If this file is called directly, abort.
21
- if ( ! defined( 'WPINC' ) ) {
22
- die;
23
- }
24
-
25
- if ( ! class_exists( 'Cherry_Widget_Factory' ) ) {
26
-
27
- /**
28
- * Widget factory module main class
29
- */
30
- class Cherry_Widget_Factory {
31
-
32
- /**
33
- * Module slug
34
- *
35
- * @var string
36
- */
37
- public $module_slug = 'cherry-widget-factory';
38
-
39
- /**
40
- * Module arguments
41
- *
42
- * @var array
43
- */
44
- public $args = array();
45
-
46
- /**
47
- * Core instance
48
- *
49
- * @var object
50
- */
51
- public $core = null;
52
-
53
- /**
54
- * A reference to an instance of this class.
55
- *
56
- * @since 1.0.0
57
- * @var object
58
- */
59
- private static $instance = null;
60
-
61
- /**
62
- * Constructor for the module
63
- */
64
- function __construct( $core, $args ) {
65
-
66
- $this->core = $core;
67
- $this->args = $args;
68
- $this->include_abstract_widget();
69
- add_filter( 'cherry_widget_factory_core', array( $this, 'pass_core_to_widgets' ), 10, 2 );
70
- }
71
-
72
- /**
73
- * Pass current core instance into widget
74
- *
75
- * @param mixed $core current core object.
76
- * @param [type] $path abstract widget file path.
77
- * @return mixed
78
- */
79
- public function pass_core_to_widgets( $core, $path ) {
80
-
81
- $path = str_replace( '\\', '/', $path );
82
- $current_core = str_replace( '\\', '/', $this->core->settings['extra_base_dir'] );
83
-
84
- if ( false !== strpos( $path, $current_core ) ) {
85
- return $this->core;
86
- }
87
-
88
- return $core;
89
- }
90
-
91
- /**
92
- * Include abstract widget class
93
- *
94
- * @since 1.0.0
95
- * @since 1.1.2 Using dirname( __FILE__ ) instead of __DIR__.
96
- * @return void
97
- */
98
- public function include_abstract_widget() {
99
- require_once( dirname( __FILE__ ) . '/inc/class-cherry-abstract-widget.php' );
100
- }
101
-
102
- /**
103
- * Returns the instance.
104
- *
105
- * @since 1.0.0
106
- * @return object
107
- */
108
- public static function get_instance( $core, $args ) {
109
-
110
- // If the single instance hasn't been set, set it now.
111
- if ( null == self::$instance ) {
112
- self::$instance = new self( $core, $args );
113
- }
114
-
115
- return self::$instance;
116
- }
117
- }
118
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/modules/cherry-widget-factory/inc/class-cherry-abstract-widget.php DELETED
@@ -1,639 +0,0 @@
1
- <?php
2
- /**
3
- * Abstract widget class.
4
- *
5
- * @package Cherry_Framework
6
- * @subpackage Class
7
- * @author Cherry Team <cherryframework@gmail.com>
8
- * @copyright Copyright (c) 2012 - 2016, Cherry Team
9
- * @link http://www.cherryframework.com/
10
- * @license http://www.gnu.org/licenses/old-licenses/gpl-3.0.html
11
- */
12
-
13
- // If this file is called directly, abort.
14
- if ( ! defined( 'WPINC' ) ) {
15
- die;
16
- }
17
-
18
- if ( ! class_exists( 'Cherry_Abstract_Widget' ) ) {
19
-
20
- /**
21
- * Define Cherry_Abstract_Widget class
22
- */
23
- abstract class Cherry_Abstract_Widget extends WP_Widget {
24
-
25
- /**
26
- * CSS class
27
- *
28
- * @var string
29
- */
30
- public $widget_cssclass;
31
-
32
- /**
33
- * Widget description
34
- *
35
- * @var string
36
- */
37
- public $widget_description;
38
-
39
- /**
40
- * Widget ID
41
- *
42
- * @var string
43
- */
44
- public $widget_id;
45
-
46
- /**
47
- * Widget name
48
- *
49
- * @var string
50
- */
51
- public $widget_name;
52
-
53
- /**
54
- * Settings
55
- *
56
- * @var array
57
- */
58
- public $settings;
59
-
60
- /**
61
- * Existing field types
62
- *
63
- * @var array
64
- */
65
- public $field_types = array();
66
-
67
- /**
68
- * UI builder instance
69
- *
70
- * @var object
71
- */
72
- public $ui_builder;
73
-
74
- /**
75
- * Temporary arguments holder
76
- *
77
- * @var array
78
- */
79
- public $args;
80
-
81
- /**
82
- * Temporary instance holder
83
- *
84
- * @var array
85
- */
86
- public $instance;
87
-
88
- /**
89
- * Core instance
90
- *
91
- * @var null
92
- */
93
- public $core = null;
94
-
95
- /**
96
- * Constructor
97
- */
98
- public function __construct() {
99
-
100
- $widget_ops = array(
101
- 'classname' => $this->widget_cssclass,
102
- 'description' => $this->widget_description,
103
- );
104
-
105
- parent::__construct( $this->widget_id, $this->widget_name, $widget_ops );
106
-
107
- add_action( 'save_post', array( $this, 'flush_cache' ) );
108
- add_action( 'deleted_post', array( $this, 'flush_cache' ) );
109
- add_action( 'switch_theme', array( $this, 'flush_cache' ) );
110
-
111
- if ( $this->is_ajax() ) {
112
- add_action( 'admin_init', array( $this, 'admin_init' ) );
113
- } else {
114
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_init' ), 1 );
115
- }
116
-
117
- add_action( 'widgets.php', array( $this, 'ajax_init' ), 1 );
118
-
119
- add_filter( 'widget_display_callback', array( $this, 'prepare_instance' ), 10, 2 );
120
-
121
- }
122
-
123
- /**
124
- * Get default widget instance from settings
125
- *
126
- * @since 1.0.0
127
- * @param array $instance The current widget instance's settings.
128
- * @param WP_Widget $widget The current widget instance.
129
- * @return array
130
- */
131
- public function prepare_instance( $instance, $widget ) {
132
-
133
- if ( ! empty( $instance ) ) {
134
- return $instance;
135
- }
136
-
137
- $instance = array();
138
-
139
- if ( empty( $widget->settings ) ) {
140
- return $instance;
141
- }
142
-
143
- foreach ( $widget->settings as $key => $data ) {
144
-
145
- if ( ! isset( $data['value'] ) ) {
146
- $instance[ $key ] = '';
147
- } else {
148
- $instance[ $key ] = $data['value'];
149
- }
150
- }
151
-
152
- return $instance;
153
- }
154
-
155
- /**
156
- * Check if is AJAX-request processing.
157
- *
158
- * @return boolean
159
- */
160
- public function is_ajax() {
161
- return ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX );
162
- }
163
-
164
- /**
165
- * Initalize UI elements in admin area widgets page
166
- *
167
- * @since 1.0.0
168
- * @return bool
169
- */
170
- public function admin_init() {
171
-
172
- $current_screen = get_current_screen();
173
- $is_allowed_page = ( $current_screen && 'widgets' == $current_screen->id );
174
-
175
- /**
176
- * Filter - is current admin page are allowed to apply UI elements for
177
- *
178
- * @var bool
179
- */
180
- $is_allowed_page = apply_filters( 'cherry_widget_factory_allowed_ui_page', $is_allowed_page );
181
-
182
- if ( ! $this->is_ajax() && ! $is_allowed_page ) {
183
- return false;
184
- }
185
-
186
- $this->init_ui();
187
- }
188
-
189
- /**
190
- * Initalize UI elements on AJAX callbacks
191
- *
192
- * @since 1.0.0
193
- * @return void
194
- */
195
- public function ajax_init() {
196
- $this->init_ui();
197
- }
198
-
199
- /**
200
- * Init UI builder.
201
- *
202
- * @since 1.0.0
203
- * @return bool
204
- */
205
- public function init_ui() {
206
-
207
- if ( empty( $this->settings ) ) {
208
- return false;
209
- }
210
-
211
- array_walk( $this->settings, array( $this, 'set_field_types' ) );
212
-
213
- if ( in_array( 'slider', $this->field_types ) ) {
214
- $this->field_types[] = 'stepper';
215
- }
216
-
217
- $core = $this->get_core();
218
-
219
- if ( ! $core ) {
220
- return false;
221
- }
222
-
223
- $this->ui_builder = $core->init_module( 'cherry-ui-elements', array( 'ui_elements' => $this->field_types ) );
224
-
225
- return true;
226
- }
227
-
228
- /**
229
- * Get widget cache ID
230
- *
231
- * @since 1.0.0
232
- * @return string
233
- */
234
- public function get_cache_id() {
235
- return apply_filters( 'cherry_cached_widget_id', $this->widget_id );
236
- }
237
-
238
- /**
239
- * Get cached widget from WordPress object cache
240
- *
241
- * @since 1.0.0
242
- * @param array $args widget arguments array.
243
- * @return bool
244
- */
245
- public function get_cached_widget( $args ) {
246
-
247
- $cache = wp_cache_get( $this->get_cache_id(), 'widget' );
248
-
249
- if ( ! is_array( $cache ) ) {
250
- $cache = array();
251
- }
252
-
253
- if ( isset( $cache[ $args['widget_id'] ] ) ) {
254
- echo esc_attr( $cache[ $args['widget_id'] ] );
255
- return true;
256
- }
257
-
258
- return false;
259
- }
260
-
261
- /**
262
- * Get core instance inside of widget class
263
- *
264
- * @since 1.0.0
265
- * @return object
266
- */
267
- public function get_core() {
268
-
269
- if ( null == $this->core ) {
270
- $this->core = apply_filters( 'cherry_widget_factory_core', false, dirname( __FILE__ ) );
271
- }
272
-
273
- return $this->core;
274
-
275
- }
276
-
277
- /**
278
- * Save widget into WordPress object cache
279
- *
280
- * @since 1.0.0
281
- * @param array $args widget arguments.
282
- * @param [type] $content widget content.
283
- * @return string the content that was cached
284
- */
285
- public function cache_widget( $args, $content ) {
286
- wp_cache_set( $this->get_cache_id(), array( $args['widget_id'] => $content ), 'widget' );
287
-
288
- return $content;
289
- }
290
-
291
- /**
292
- * Flush the cache
293
- *
294
- * @since 1.0.0
295
- * @return void
296
- */
297
- public function flush_cache() {
298
- wp_cache_delete( $this->get_cache_id(), 'widget' );
299
- }
300
-
301
- /**
302
- * Output the html at the start of a widget
303
- *
304
- * @since 1.0.0
305
- * @param array $args widget arguments.
306
- * @param array $instance widget instance.
307
- * @return void
308
- */
309
- public function widget_start( $args, $instance ) {
310
-
311
- echo $args['before_widget'];
312
-
313
- $title = apply_filters(
314
- 'widget_title',
315
- empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base
316
- );
317
-
318
- if ( $title ) {
319
- echo $args['before_title'] . $title . $args['after_title'];
320
- }
321
- }
322
-
323
- /**
324
- * Output the html at the end of a widget
325
- *
326
- * @since 1.0.0
327
- * @param array $args widget arguments.
328
- * @return void
329
- */
330
- public function widget_end( $args ) {
331
- echo $args['after_widget'];
332
- }
333
-
334
- /**
335
- * Update function.
336
- *
337
- * @since 1.0.0
338
- * @see WP_Widget->update
339
- * @param array $new_instance new widget instance, passed from widget form.
340
- * @param array $old_instance old instance, saved in database.
341
- * @return array
342
- */
343
- public function update( $new_instance, $old_instance ) {
344
-
345
- $instance = $old_instance;
346
-
347
- if ( empty( $this->settings ) ) {
348
- return $instance;
349
- }
350
-
351
- foreach ( $this->settings as $key => $setting ) {
352
-
353
- if ( isset( $new_instance[ $key ] ) ) {
354
-
355
- $instance[ $key ] = ! empty( $setting['sanitize_callback'] ) && is_callable( $setting['sanitize_callback'] )
356
- ? call_user_func( $setting['sanitize_callback'],$new_instance[ $key ] )
357
- : $this->sanitize_instance_item( $new_instance[ $key ] );
358
-
359
- } elseif ( 'checkbox' === $setting['type'] ) {
360
- $instance[ $key ] = array();
361
- } elseif ( isset( $old_instance[ $key ] ) && is_array( $old_instance[ $key ] ) ) {
362
- $instance[ $key ] = array();
363
- } elseif ( isset( $old_instance[ $key ] ) ) {
364
- $instance[ $key ] = '';
365
- }
366
-
367
- // WPML - register strings for translation.
368
- if ( in_array( $setting['type'], array( 'text', 'textarea' ) ) && 'title' !== $key ) {
369
- do_action( 'wpml_register_single_string', 'Widgets', "{$this->widget_name} - {$key}", $instance[ $key ] );
370
- }
371
- }
372
-
373
- $this->flush_cache();
374
-
375
- /**
376
- * Fires after current widget update is proceed, before returning result.
377
- *
378
- * @since 1.0.0
379
- * @param array $instance current widget instance.
380
- */
381
- do_action( 'cherry_widget_after_update', $instance );
382
-
383
- return $instance;
384
- }
385
-
386
- /**
387
- * Sanitize widget instance item
388
- *
389
- * @since 1.0.0
390
- * @param mixed $input instance item to sanitize.
391
- * @return mixed
392
- */
393
- public function sanitize_instance_item( $input ) {
394
- if ( is_array( $input ) ) {
395
- return array_filter( $input );
396
- } else {
397
- return sanitize_text_field( $input );
398
- }
399
- }
400
-
401
- /**
402
- * Store field types used in this widget into class property
403
- *
404
- * @since 1.0.0
405
- * @param array $field field data.
406
- * @param [type] $id field key.
407
- * @return bool
408
- */
409
- public function set_field_types( $field, $id ) {
410
-
411
- if ( ! is_array( $field ) || ! isset( $field['type'] ) ) {
412
- return false;
413
- }
414
-
415
- if ( ! in_array( $field['type'], $this->field_types ) ) {
416
- $this->field_types[] = $field['type'];
417
- }
418
-
419
- $this->maybe_add_repeater_fields( $field );
420
-
421
- return true;
422
-
423
- }
424
-
425
- /**
426
- * Maybe add reapeater sub-fields to required elements list
427
- *
428
- * @since 1.0.1
429
- * @param array $field field data.
430
- * @return bool
431
- */
432
- public function maybe_add_repeater_fields( $field ) {
433
-
434
- if ( 'repeater' !== $field['type'] || empty( $field['fields'] ) ) {
435
- return false;
436
- }
437
-
438
- foreach ( $field['fields'] as $repeater_field ) {
439
- $this->set_field_types( $repeater_field, null );
440
- }
441
-
442
- return true;
443
-
444
- }
445
-
446
- /**
447
- * Render single from control.
448
- *
449
- * @param array $args control arguments.
450
- * @return void|null
451
- */
452
- public function render_control( $args ) {
453
-
454
- $allowed_controls = array(
455
- 'text',
456
- 'textarea',
457
- 'checkbox',
458
- 'colorpicker',
459
- 'media',
460
- 'radio',
461
- 'select',
462
- 'slider',
463
- 'stepper',
464
- 'switcher',
465
- 'slider',
466
- 'collection',
467
- 'chooseicons',
468
- 'repeater',
469
- 'iconpicker',
470
- );
471
-
472
- if ( ! in_array( $args['type'], $allowed_controls ) ) {
473
- do_action( 'cherry_widget_factory_control', $args );
474
- return;
475
- }
476
-
477
- if ( ! is_object( $this->ui_builder ) ) {
478
- return;
479
- }
480
-
481
- $current_element = $this->ui_builder->get_ui_element_instance( $args['type'], $args );
482
-
483
- ?>
484
- <div>
485
- <?php echo $current_element->render(); ?>
486
- </div>
487
- <?php
488
-
489
- }
490
-
491
- /**
492
- * Show widget form
493
- *
494
- * @since 1.0.0
495
- * @see WP_Widget->form
496
- * @param array $instance current widget instance.
497
- * @return void
498
- */
499
- public function form( $instance ) {
500
-
501
- if ( empty( $this->settings ) ) {
502
- return;
503
- }
504
-
505
- foreach ( $this->settings as $key => $setting ) {
506
-
507
- $value = isset( $instance[ $key ] ) ? $instance[ $key ] : Cherry_Toolkit::get_arg( $setting, 'value', '' );
508
-
509
- if ( isset( $setting['options_callback'] ) ) {
510
-
511
- $callback = $this->get_callback_data( $setting['options_callback'] );
512
- $options = call_user_func_array( $callback['callback'], $callback['args'] );
513
-
514
- } else {
515
- $options = Cherry_Toolkit::get_arg( $setting, 'options', array() );
516
- }
517
-
518
- $args = array(
519
- 'type' => Cherry_Toolkit::get_arg( $setting, 'type', 'text' ),
520
- 'id' => $this->get_field_id( $key ),
521
- 'name' => $this->get_field_name( $key ),
522
- 'value' => $value,
523
- 'label' => Cherry_Toolkit::get_arg( $setting, 'label', '' ),
524
- 'options' => $options,
525
- 'multiple' => Cherry_Toolkit::get_arg( $setting, 'multiple', false ),
526
- 'filter' => Cherry_Toolkit::get_arg( $setting, 'filter', false ),
527
- 'size' => Cherry_Toolkit::get_arg( $setting, 'size', 1 ),
528
- 'null_option' => Cherry_Toolkit::get_arg( $setting, 'null_option', 'None' ),
529
- 'multi_upload' => Cherry_Toolkit::get_arg( $setting, 'multi_upload', true ),
530
- 'library_type' => Cherry_Toolkit::get_arg( $setting, 'library_type', 'image' ),
531
- 'upload_button_text' => Cherry_Toolkit::get_arg( $setting, 'upload_button_text', 'Choose' ),
532
- 'max_value' => Cherry_Toolkit::get_arg( $setting, 'max_value', '100' ),
533
- 'min_value' => Cherry_Toolkit::get_arg( $setting, 'min_value', '0' ),
534
- 'step_value' => Cherry_Toolkit::get_arg( $setting, 'step_value', '1' ),
535
- 'style' => Cherry_Toolkit::get_arg( $setting, 'style', 'normal' ),
536
- 'placeholder' => Cherry_Toolkit::get_arg( $setting, 'placeholder', '' ),
537
- 'toggle' => Cherry_Toolkit::get_arg( $setting, 'toggle', array(
538
- 'true_toggle' => 'On',
539
- 'false_toggle' => 'Off',
540
- 'true_slave' => '',
541
- 'false_slave' => '',
542
- ) ),
543
- 'master' => Cherry_Toolkit::get_arg( $setting, 'master', '' ),
544
- 'icon_data' => Cherry_Toolkit::get_arg( $setting, 'icon_data', array() ),
545
- 'title_field' => Cherry_Toolkit::get_arg( $setting, 'title_field' ),
546
- 'add_label' => Cherry_Toolkit::get_arg( $setting, 'add_label', '' ),
547
- 'fields' => Cherry_Toolkit::get_arg( $setting, 'fields', array() ),
548
- 'ui_kit' => Cherry_Toolkit::get_arg( $setting, 'ui_kit', true ),
549
- );
550
-
551
- $this->render_control( $args );
552
- }
553
- }
554
-
555
- /**
556
- * Parse callback data.
557
- *
558
- * @since 1.0.0
559
- * @param array $options_callback Callback data.
560
- * @return array
561
- */
562
- public function get_callback_data( $options_callback ) {
563
-
564
- if ( 2 === count( $options_callback ) ) {
565
-
566
- $callback = array(
567
- 'callback' => $options_callback,
568
- 'args' => array(),
569
- );
570
-
571
- return $callback;
572
- }
573
-
574
- $callback = array(
575
- 'callback' => array_slice( $options_callback, 0, 2 ),
576
- 'args' => $options_callback[2],
577
- );
578
-
579
- return $callback;
580
- }
581
-
582
- /**
583
- * Save current widget data to property object properties
584
- *
585
- * @since 1.0.0
586
- * @param array $args widget arguments.
587
- * @param array $instance current widget instance.
588
- */
589
- public function setup_widget_data( $args, $instance ) {
590
- $this->args = $args;
591
- $this->instance = $instance;
592
- }
593
-
594
- /**
595
- * Clear current widget data.
596
- *
597
- * @since 1.0.0
598
- */
599
- public function reset_widget_data() {
600
-
601
- $this->args = null;
602
- $this->instance = null;
603
-
604
- /**
605
- * Fires on widgget data reseting
606
- */
607
- do_action( 'cherry_widget_reset_data' );
608
- }
609
-
610
- /**
611
- * Add widget_id-related CSS selector
612
- *
613
- * @since 1.2.0
614
- * @param string $selector Selector inside widget.
615
- * @param array $args widget arguments (optional, pass it only setup_widget_data not called before).
616
- * @return string|bool
617
- */
618
- public function add_selector( $selector = null, $args = array() ) {
619
-
620
- if ( null == $this->args && empty( $args ) ) {
621
- return false;
622
- }
623
-
624
- $args = null !== $this->args ? $this->args : $args;
625
-
626
- return sprintf( '#%1$s %2$s', $args['widget_id'], $selector );
627
- }
628
-
629
- /**
630
- * Retrieve a string translation via WPML.
631
- *
632
- * @since 1.0.1
633
- * @param [type] $id Widget setting ID.
634
- */
635
- public function use_wpml_translate( $id ) {
636
- return ! empty( $this->instance[ $id ] ) ? apply_filters( 'wpml_translate_single_string', $this->instance[ $id ], 'Widgets', "{$this->widget_name} - {$id}" ) : '';
637
- }
638
- }
639
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cherry-framework/setup.php CHANGED
@@ -14,7 +14,7 @@
14
  return create_function( '', '
15
  global $chery_core_version;
16
 
17
- $path = trailingslashit( dirname( __FILE__ ) ) . \'cherry-core.php\';
18
 
19
  $data = get_file_data( $path, array(
20
  \'version\' => \'Version\'
14
  return create_function( '', '
15
  global $chery_core_version;
16
 
17
+ $path = trailingslashit( __DIR__ ) . \'cherry-core.php\';
18
 
19
  $data = get_file_data( $path, array(
20
  \'version\' => \'Version\'
cherry-sidebars.php CHANGED
@@ -3,13 +3,18 @@
3
  * Plugin Name: Cherry Sidebars
4
  * Plugin URI: http://www.cherryframework.com/
5
  * Description: Plugin for creating and managing sidebars in WordPress.
6
- * Version: 1.0.5
7
- * Author: Cherry Team
8
- * Author URI: http://www.cherryframework.com/git st
9
  * Text Domain: cherry-sidebars
10
  * License: GPL-3.0+
11
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
  * Domain Path: /languages
 
 
 
 
 
13
  */
14
 
15
  // If this file is called directly, abort.
@@ -53,26 +58,20 @@ if ( ! class_exists( 'Cherry_Sidebars' ) ) {
53
  // Set the constants needed by the plugin.
54
  add_action( 'plugins_loaded', array( $this, 'constants' ), 0 );
55
 
56
- // Internationalize the text strings used.
57
- add_action( 'plugins_loaded', array( $this, 'lang' ), 1 );
58
-
59
  // Load the installer core.
60
  add_action( 'after_setup_theme', require( trailingslashit( __DIR__ ) . 'cherry-framework/setup.php' ), 0 );
61
 
62
- // Load the core functions/classes required by the rest of the plugin.
63
  add_action( 'after_setup_theme', array( $this, 'get_core' ), 1 );
64
 
65
- // Laad the modules.
66
- add_action( 'after_setup_theme', array( 'Cherry_Core', 'load_all_modules' ), 2 );
67
 
68
  // Load the functions files.
69
- add_action( 'after_setup_theme', array( $this, 'includes' ),3 );
70
 
71
  // Load the admin files.
72
- add_action( 'after_setup_theme', array( $this, 'admin' ), 4 );
73
-
74
- // Init modules
75
- add_action( 'after_setup_theme', array( $this, 'init_modules' ), 10 );
76
 
77
  // Register activation and deactivation hook.
78
  register_activation_hook( __FILE__, array( $this, 'activation' ) );
@@ -85,6 +84,7 @@ if ( ! class_exists( 'Cherry_Sidebars' ) ) {
85
  * @since 1.0.0
86
  */
87
  function constants() {
 
88
  if ( ! function_exists( 'get_plugin_data' ) ) {
89
  require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
90
  }
@@ -126,6 +126,8 @@ if ( ! class_exists( 'Cherry_Sidebars' ) ) {
126
  * @since 1.0.0
127
  */
128
  function includes() {
 
 
129
  require_once( CHERRY_SIDEBARS_DIR . 'includes/class-cherry-include-sidebars.php' );
130
  }
131
 
@@ -144,9 +146,7 @@ if ( ! class_exists( 'Cherry_Sidebars' ) ) {
144
  * @since 1.0.0
145
  */
146
  function admin() {
147
- require_once( CHERRY_SIDEBARS_DIR . 'admin/includes/class-cherry-sidebar-utils.php' );
148
  if ( is_admin() ) {
149
- require_once( CHERRY_SIDEBARS_DIR . 'admin/includes/class-cherry-sidebars-admin.php' );
150
  require_once( CHERRY_SIDEBARS_DIR . 'admin/includes/class-cherry-custom-sidebar.php' );
151
  }
152
  }
@@ -163,7 +163,7 @@ if ( ! class_exists( 'Cherry_Sidebars' ) ) {
163
  *
164
  * @since 1.1.0
165
  */
166
- do_action( 'cherry_sidebsrs_core_before' );
167
 
168
  global $chery_core_version;
169
 
@@ -198,10 +198,13 @@ if ( ! class_exists( 'Cherry_Sidebars' ) ) {
198
  * @since 1.0.0
199
  */
200
  function init_modules() {
201
- if ( is_admin() ) {
202
- cherry_sidebars()->get_core()->init_module( 'cherry-js-core' );
203
- cherry_sidebars()->get_core()->init_module( 'cherry-ui-elements' );
204
- }
 
 
 
205
  }
206
 
207
  /**
3
  * Plugin Name: Cherry Sidebars
4
  * Plugin URI: http://www.cherryframework.com/
5
  * Description: Plugin for creating and managing sidebars in WordPress.
6
+ * Version: 1.0.4
7
+ * Author: Template Monster
8
+ * Author URI: http://www.templatemonster.com/
9
  * Text Domain: cherry-sidebars
10
  * License: GPL-3.0+
11
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
  * Domain Path: /languages
13
+ *
14
+ * @package Cherry_Sidebars
15
+ * @author Template Monster
16
+ * @license GPL-3.0+
17
+ * @copyright 2002-2016, Template Monster
18
  */
19
 
20
  // If this file is called directly, abort.
58
  // Set the constants needed by the plugin.
59
  add_action( 'plugins_loaded', array( $this, 'constants' ), 0 );
60
 
 
 
 
61
  // Load the installer core.
62
  add_action( 'after_setup_theme', require( trailingslashit( __DIR__ ) . 'cherry-framework/setup.php' ), 0 );
63
 
64
+ // Load the core functions/classes required by the rest of the theme.
65
  add_action( 'after_setup_theme', array( $this, 'get_core' ), 1 );
66
 
67
+ // Internationalize the text strings used.
68
+ add_action( 'plugins_loaded', array( $this, 'lang' ), 3 );
69
 
70
  // Load the functions files.
71
+ add_action( 'plugins_loaded', array( $this, 'includes' ), 4 );
72
 
73
  // Load the admin files.
74
+ add_action( 'plugins_loaded', array( $this, 'admin' ), 5 );
 
 
 
75
 
76
  // Register activation and deactivation hook.
77
  register_activation_hook( __FILE__, array( $this, 'activation' ) );
84
  * @since 1.0.0
85
  */
86
  function constants() {
87
+
88
  if ( ! function_exists( 'get_plugin_data' ) ) {
89
  require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
90
  }
126
  * @since 1.0.0
127
  */
128
  function includes() {
129
+ require_once( CHERRY_SIDEBARS_DIR . 'admin/includes/class-cherry-sidebar-utils.php' );
130
+ require_once( CHERRY_SIDEBARS_DIR . 'admin/includes/class-cherry-sidebars-admin.php' );
131
  require_once( CHERRY_SIDEBARS_DIR . 'includes/class-cherry-include-sidebars.php' );
132
  }
133
 
146
  * @since 1.0.0
147
  */
148
  function admin() {
 
149
  if ( is_admin() ) {
 
150
  require_once( CHERRY_SIDEBARS_DIR . 'admin/includes/class-cherry-custom-sidebar.php' );
151
  }
152
  }
163
  *
164
  * @since 1.1.0
165
  */
166
+ do_action( 'cherry_core_before' );
167
 
168
  global $chery_core_version;
169
 
198
  * @since 1.0.0
199
  */
200
  function init_modules() {
201
+ cherry_sidebars()->get_core()->init_module( 'cherry-js-core' );
202
+ cherry_sidebars()->get_core()->init_module( 'cherry-ui-elements', array(
203
+ 'ui_elements' => array(
204
+ 'text',
205
+ 'select',
206
+ ),
207
+ ) );
208
  }
209
 
210
  /**
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Cherry Sidebars ===
2
 
3
  Contributors: TemplateMonster 2002
4
- Tags: sidebar, sidebar manager, cherry framework, custom sidebars, widget area, group widgets, page custom sidebar, post custom sidebar, custom sidebar, dynamic sidebar
5
  Requires at least: 4.4
6
- Tested up to: 4.6.1
7
- Stable tag: 1.0.5
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -42,18 +42,6 @@ The plugin can be useful for certain posts or pages, where you want your content
42
 
43
  == Changelog ==
44
 
45
- = 1.0.5 =
46
-
47
- * UPD: Admin panel interface
48
- * UPD: Cherry Framework up to 1.3.1
49
- * FIX: Cherry framework include
50
- * FIX: error in php < 5.2
51
-
52
- = 1.0.4 =
53
-
54
- * FIX: Display sidebars in the widget list
55
- * FIX: List sidebars on pages and posts
56
-
57
  = 1.0.3 =
58
 
59
  * UPD: Update Cherry Framework up to 1.1.1
1
  === Cherry Sidebars ===
2
 
3
  Contributors: TemplateMonster 2002
4
+ Tags: sidebar, sidebar manager, cherry framework, custom sidebars, widget area, group widgets, page custom sidebar, post custom sidebar
5
  Requires at least: 4.4
6
+ Tested up to: 4.6
7
+ Stable tag: 1.0.4
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
42
 
43
  == Changelog ==
44
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  = 1.0.3 =
46
 
47
  * UPD: Update Cherry Framework up to 1.1.1