Version Description
Download this release
Release Info
Developer | aristath |
Plugin | Kirki |
Version | 2.3.0 |
Comparing to | |
See all releases |
Code changes from version 2.2.10 to 2.3.0
- .jscsrc +7 -0
- .jshintignore +3 -0
- .jshintrc +38 -0
- Gruntfile.js +0 -119
- README.md +18 -1
- assets/css/customizer.css +53 -43
- assets/css/customizer.css.map +1 -1
- assets/css/customizer.min.css +0 -1
- assets/js/branding.js +10 -5
- assets/js/controls/checkbox.js +6 -3
- assets/js/controls/code.js +4 -3
- assets/js/controls/color-alpha.js +6 -3
- assets/js/controls/dimension.js +11 -2
- assets/js/controls/editor.js +2 -2
- assets/js/controls/multicheck.js +3 -3
- assets/js/controls/multicolor.js +22 -12
- assets/js/controls/number.js +1 -1
- assets/js/controls/preset.js +9 -8
- assets/js/controls/repeater.js +164 -136
- assets/js/controls/select.js +10 -5
- assets/js/controls/slider.js +13 -12
- assets/js/controls/sortable.js +19 -14
- assets/js/controls/spacing.js +18 -9
- assets/js/controls/switch.js +4 -4
- assets/js/controls/toggle.js +3 -3
- assets/js/controls/typography.js +139 -100
- assets/js/functions/array-to-object.js +4 -4
- assets/js/functions/object-to-array.js +4 -4
- assets/js/functions/set-value.js +76 -26
- assets/js/functions/validate-css-value.js +18 -8
- assets/js/postmessage.js +59 -41
- assets/js/reset.js +12 -14
- assets/js/tooltip.js +1 -2
- codesniffer.ruleset.xml +19 -0
- composer.json +0 -26
- includes/class-kirki-active-callback.php +21 -11
- includes/class-kirki-config.php +38 -21
- includes/class-kirki-control.php +29 -19
- includes/class-kirki-customize-control.php +58 -8
- includes/class-kirki-enqueue.php +29 -28
- includes/class-kirki-explode-background-field.php +26 -10
- includes/class-kirki-field.php +151 -63
- includes/class-kirki-fonts-google.php +113 -48
- includes/class-kirki-fonts.php +74 -7
- includes/class-kirki-helper.php +359 -47
- includes/class-kirki-init.php +12 -15
- includes/class-kirki-l10n.php +40 -6
- includes/class-kirki-panel.php +24 -10
- includes/class-kirki-sanitize-values.php +68 -29
- includes/class-kirki-scripts-registry.php +35 -7
- includes/class-kirki-section.php +31 -6
- includes/class-kirki-selective-refresh.php +19 -21
- includes/class-kirki-settings.php +36 -22
- includes/class-kirki-toolkit.php +11 -7
- includes/class-kirki-values.php +59 -62
- includes/class-kirki.php +86 -21
- includes/controls/class-kirki-controls-checkbox-control.php +33 -7
- includes/controls/class-kirki-controls-code-control.php +39 -10
- includes/controls/class-kirki-controls-color-alpha-control.php +42 -17
- includes/controls/class-kirki-controls-color-palette-control.php +37 -8
- includes/controls/class-kirki-controls-custom-control.php +25 -5
- includes/controls/class-kirki-controls-dashicons-control.php +34 -6
- includes/controls/class-kirki-controls-date-control.php +31 -6
- includes/controls/class-kirki-controls-dimension-control.php +31 -6
- includes/controls/class-kirki-controls-dropdown-pages-control.php +65 -33
- includes/controls/class-kirki-controls-editor-control.php +42 -19
- includes/controls/class-kirki-controls-generic-control.php +43 -7
- includes/controls/class-kirki-controls-multicheck-control.php +31 -7
- includes/controls/class-kirki-controls-multicolor-control.php +41 -19
- includes/controls/class-kirki-controls-number-control.php +27 -5
- includes/controls/class-kirki-controls-palette-control.php +30 -4
- includes/controls/class-kirki-controls-preset-control.php +31 -8
- includes/controls/class-kirki-controls-radio-buttonset-control.php +31 -6
- includes/controls/class-kirki-controls-radio-control.php +30 -5
- includes/controls/class-kirki-controls-radio-image-control.php +30 -5
- includes/controls/class-kirki-controls-repeater-control.php +242 -166
- includes/controls/class-kirki-controls-select-control.php +41 -7
- includes/controls/class-kirki-controls-slider-control.php +34 -7
- includes/controls/class-kirki-controls-sortable-control.php +46 -10
- includes/controls/class-kirki-controls-spacing-control.php +36 -7
- includes/controls/class-kirki-controls-switch-control.php +34 -6
- includes/controls/class-kirki-controls-toggle-control.php +30 -4
- includes/controls/class-kirki-controls-typography-control.php +49 -14
- includes/deprecated.php +6 -2
- includes/dynamic-css.php +15 -9
- includes/field/class-kirki-field-checkbox.php +12 -3
- includes/field/class-kirki-field-code.php +12 -2
- includes/field/class-kirki-field-color-alpha.php +12 -2
- includes/field/class-kirki-field-color.php +12 -3
- includes/field/class-kirki-field-custom.php +12 -2
- includes/field/class-kirki-field-dashicons.php +12 -2
- includes/field/class-kirki-field-date.php +12 -2
- includes/field/class-kirki-field-dropdown-pages.php +12 -2
- includes/field/class-kirki-field-editor.php +12 -1
- includes/field/class-kirki-field-group-title.php +9 -0
- includes/field/class-kirki-field-image.php +12 -0
- includes/field/class-kirki-field-kirki-generic.php +12 -2
- includes/field/class-kirki-field-multicheck.php +14 -2
- includes/field/class-kirki-field-multicolor.php +34 -10
- includes/field/class-kirki-field-number.php +12 -2
- includes/field/class-kirki-field-palette.php +12 -2
- includes/field/class-kirki-field-preset.php +12 -2
- includes/field/class-kirki-field-radio-buttonset.php +12 -2
- includes/field/class-kirki-field-radio-image.php +12 -2
- includes/field/class-kirki-field-radio.php +12 -2
- includes/field/class-kirki-field-select.php +14 -3
- includes/field/class-kirki-field-select2-multiple.php +9 -2
- includes/field/class-kirki-field-select2.php +9 -0
- includes/field/class-kirki-field-slider.php +12 -2
- includes/field/class-kirki-field-switch.php +12 -2
- includes/field/class-kirki-field-text.php +12 -2
- includes/field/class-kirki-field-textarea.php +12 -2
- includes/field/class-kirki-field-toggle.php +12 -2
- includes/field/class-kirki-field-typography.php +34 -14
- includes/field/class-kirki-field-upload.php +12 -1
- includes/lib/class-aricolor.php +2 -2
- includes/lib/class-kirki-color.php +104 -56
- includes/output/class-kirki-output.php +183 -155
- includes/output/field/class-kirki-output-field-multicolor.php +51 -31
- includes/output/field/class-kirki-output-field-spacing.php +35 -13
- includes/output/field/class-kirki-output-field-typography.php +81 -52
- includes/output/property/class-kirki-output-property-background-image.php +26 -8
- includes/output/property/class-kirki-output-property-background-position.php +62 -39
- includes/output/property/class-kirki-output-property-font-family.php +47 -30
- includes/output/property/class-kirki-output-property.php +58 -13
- includes/panels/class-kirki-panels-default-panel.php +24 -2
- includes/panels/class-kirki-panels-expanded-panel.php +58 -21
- includes/scripts/class-kirki-scripts-icons.php +21 -10
- includes/scripts/class-kirki-scripts-loading.php +38 -11
- includes/scripts/class-kirki-scripts-tooltips.php +17 -11
- includes/sections/class-kirki-sections-default-section.php +62 -44
- includes/sections/class-kirki-sections-expanded-section.php +49 -20
- includes/sections/class-kirki-sections-hover-section.php +59 -30
- includes/settings/class-kirki-settings-default-setting.php +12 -0
- includes/settings/class-kirki-settings-repeater-setting.php +28 -11
- includes/styles/class-kirki-styles-customizer.php +111 -25
- includes/styles/class-kirki-styles-frontend.php +74 -29
- includes/styles/class-kirki-styles-output-css.php +102 -32
- includes/webfonts.php +1 -1
.jscsrc
ADDED
@@ -0,0 +1,7 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
{
|
2 |
+
"preset": "wordpress",
|
3 |
+
"fileExtensions": [ ".js" ],
|
4 |
+
"excludeFiles": [
|
5 |
+
"js/**.min.js"
|
6 |
+
]
|
7 |
+
}
|
.jshintignore
ADDED
@@ -0,0 +1,3 @@
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
**/**.min.js
|
2 |
+
assets/js/vendor/
|
3 |
+
Gruntfile.js
|
.jshintrc
ADDED
@@ -0,0 +1,38 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
{
|
2 |
+
"boss": true,
|
3 |
+
"curly": true,
|
4 |
+
"eqeqeq": true,
|
5 |
+
"eqnull": true,
|
6 |
+
"es3": true,
|
7 |
+
"expr": true,
|
8 |
+
"immed": true,
|
9 |
+
"noarg": true,
|
10 |
+
"nonbsp": true,
|
11 |
+
"onevar": true,
|
12 |
+
"quotmark": "single",
|
13 |
+
"trailing": true,
|
14 |
+
"undef": true,
|
15 |
+
"unused": false,
|
16 |
+
|
17 |
+
"browser": true,
|
18 |
+
|
19 |
+
"globals": {
|
20 |
+
"_": false,
|
21 |
+
"Backbone": false,
|
22 |
+
"jQuery": false,
|
23 |
+
"JSON": false,
|
24 |
+
"wp": false,
|
25 |
+
|
26 |
+
"kirkiBranding":false,
|
27 |
+
"jsvars":false,
|
28 |
+
"kirkiSetValue":false,
|
29 |
+
"kirkiValidateCSSValue":false,
|
30 |
+
"kirkiArrayToObject":false,
|
31 |
+
"kirkiObjectToArray":false,
|
32 |
+
"CodeMirror":false,
|
33 |
+
"tinyMCE":false,
|
34 |
+
"unserialize":false,
|
35 |
+
"serialize":false,
|
36 |
+
"kirkiAllFonts":false
|
37 |
+
}
|
38 |
+
}
|
Gruntfile.js
DELETED
@@ -1,119 +0,0 @@
|
|
1 |
-
'use strict';
|
2 |
-
module.exports = function(grunt) {
|
3 |
-
|
4 |
-
grunt.initConfig({
|
5 |
-
// Get json file from the google-fonts API
|
6 |
-
curl: {
|
7 |
-
'google-fonts-source': {
|
8 |
-
src: 'https://www.googleapis.com/webfonts/v1/webfonts?sort=alpha&key=AIzaSyCDiOc36EIOmwdwspLG3LYwCg9avqC5YLs',
|
9 |
-
dest: 'includes/webfonts.json'
|
10 |
-
}
|
11 |
-
},
|
12 |
-
// Compile CSS
|
13 |
-
sass: {
|
14 |
-
dist: {
|
15 |
-
files: { 'assets/css/customizer.css' : 'assets/scss/customizer.scss' }
|
16 |
-
}
|
17 |
-
},
|
18 |
-
// Combine JS files
|
19 |
-
// concat: {
|
20 |
-
// options: {
|
21 |
-
// separator: '',
|
22 |
-
// },
|
23 |
-
// dist: {
|
24 |
-
// src: [
|
25 |
-
// 'assets/js/functions/*.js',
|
26 |
-
// 'assets/js/controls/*.js',
|
27 |
-
// 'assets/js/reset.js'
|
28 |
-
// ],
|
29 |
-
// dest: 'assets/js/customizer.js',
|
30 |
-
// },
|
31 |
-
// },
|
32 |
-
// Minify JS
|
33 |
-
// uglify: {
|
34 |
-
// options: {
|
35 |
-
// compress: {},
|
36 |
-
// mangle: true,
|
37 |
-
// sourceMap: true
|
38 |
-
// },
|
39 |
-
// target: {
|
40 |
-
// src: 'assets/js/customizer.js',
|
41 |
-
// dest: 'assets/js/customizer.min.js'
|
42 |
-
// }
|
43 |
-
// },
|
44 |
-
// Minify CSS
|
45 |
-
cssmin: {
|
46 |
-
options: {
|
47 |
-
shorthandCompacting: false,
|
48 |
-
roundingPrecision: -1
|
49 |
-
},
|
50 |
-
target: {
|
51 |
-
files: {
|
52 |
-
'assets/css/customizer.min.css': 'assets/css/customizer.css'
|
53 |
-
}
|
54 |
-
}
|
55 |
-
},
|
56 |
-
// Generate translation file
|
57 |
-
makepot: {
|
58 |
-
target: {
|
59 |
-
options: {
|
60 |
-
type: 'wp-plugin',
|
61 |
-
domainPath: 'languages',
|
62 |
-
exclude: [
|
63 |
-
'tests/.*'
|
64 |
-
]
|
65 |
-
}
|
66 |
-
}
|
67 |
-
},
|
68 |
-
// Convert readme.txt to readme.md
|
69 |
-
wp_readme_to_markdown: {
|
70 |
-
your_target: {
|
71 |
-
files: {
|
72 |
-
'README.md': 'readme.txt'
|
73 |
-
},
|
74 |
-
},
|
75 |
-
},
|
76 |
-
// Convert json array to PHP array
|
77 |
-
json2php: {
|
78 |
-
convert: {
|
79 |
-
expand: true,
|
80 |
-
ext: '.php',
|
81 |
-
src: ['includes/webfonts.json']
|
82 |
-
}
|
83 |
-
},
|
84 |
-
// Delete the json array
|
85 |
-
clean: [
|
86 |
-
'includes/webfonts.json'
|
87 |
-
],
|
88 |
-
// Watch task (run with "grunt watch")
|
89 |
-
watch: {
|
90 |
-
css: {
|
91 |
-
files: 'assets/**/*.scss',
|
92 |
-
tasks: ['sass', 'cssmin'],
|
93 |
-
},
|
94 |
-
// scripts: {
|
95 |
-
// files: 'assets/**/*.js',
|
96 |
-
// tasks: ['concat', 'uglify'],
|
97 |
-
// },
|
98 |
-
readme: {
|
99 |
-
files: 'readme.txt',
|
100 |
-
tasks: ['wp_readme_to_markdown'],
|
101 |
-
}
|
102 |
-
}
|
103 |
-
});
|
104 |
-
|
105 |
-
grunt.loadNpmTasks('grunt-contrib-sass');
|
106 |
-
grunt.loadNpmTasks('grunt-contrib-concat');
|
107 |
-
grunt.loadNpmTasks('grunt-contrib-uglify');
|
108 |
-
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
109 |
-
grunt.loadNpmTasks('grunt-wp-i18n');
|
110 |
-
grunt.loadNpmTasks('grunt-contrib-watch');
|
111 |
-
grunt.loadNpmTasks('grunt-curl');
|
112 |
-
grunt.loadNpmTasks('grunt-wp-readme-to-markdown');
|
113 |
-
grunt.loadNpmTasks('grunt-json2php');
|
114 |
-
grunt.loadNpmTasks('grunt-contrib-clean');
|
115 |
-
|
116 |
-
grunt.registerTask('default', ['sass', 'cssmin', 'makepot', 'wp_readme_to_markdown']);
|
117 |
-
grunt.registerTask('googlefonts', ['curl:google-fonts-source', 'json2php', 'clean']);
|
118 |
-
|
119 |
-
};
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
Â
**Donate link:** http://kirki.org/
|
5 |
Â
**Requires at least:** 4.4
|
6 |
Â
**Tested up to:** 4.5
|
7 |
-
**Stable tag:** 2.
|
8 |
Â
**License:** GPLv2 or later
|
9 |
Â
**License URI:** http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
Â
|
@@ -37,6 +37,23 @@ If you want to integrate Kirki in your theme or plugin, please read the instruct
|
|
37 |
Â
|
38 |
Â
## Changelog ##
|
39 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
40 |
Â
### 2.2.10 ###
|
41 |
Â
|
42 |
Â
* FIX: Issue with URLs when using Kirki embedded in a theme and not installed as a plugin.
|
4 |
Â
**Donate link:** http://kirki.org/
|
5 |
Â
**Requires at least:** 4.4
|
6 |
Â
**Tested up to:** 4.5
|
7 |
+
**Stable tag:** 2.3.0
|
8 |
Â
**License:** GPLv2 or later
|
9 |
Â
**License URI:** http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
Â
|
37 |
Â
|
38 |
Â
## Changelog ##
|
39 |
Â
|
40 |
+
### 2.3 ###
|
41 |
+
|
42 |
+
Kirki is now 100% WordPress Coding Standards compliant.
|
43 |
+
|
44 |
+
* FIX: Escaping google-font URLs when possible.
|
45 |
+
* FIX: Only enqueue the tooltips script if needed.
|
46 |
+
* FIX: WordPress Coding Standards.
|
47 |
+
* FIX: undefined sub-controls were still being saved in typography fields
|
48 |
+
* FIX: Javascript Console Errors: "wp.customize" object undefined when Kirki fields were added in `customize_register`
|
49 |
+
* FIX: markup in editor fields - props @manuelmoreale.
|
50 |
+
* FIX: multiple styles in head when using js_vars
|
51 |
+
* FIX: Sanitization for rem units
|
52 |
+
* FIX: CSS output for multicolor controls
|
53 |
+
* NEW: Repeater labels are now dynamic - props @guillaumemolter.
|
54 |
+
* NEW: The entire header on repeaters is now draggable - props @guillaumemolter.
|
55 |
+
* TWEAK: More efficient JS code for the typography control
|
56 |
+
|
57 |
Â
### 2.2.10 ###
|
58 |
Â
|
59 |
Â
* FIX: Issue with URLs when using Kirki embedded in a theme and not installed as a plugin.
|
assets/css/customizer.css
CHANGED
@@ -901,12 +901,17 @@ span.CodeMirror-selectedtext {
|
|
901 |
Â
height: 100%; }
|
902 |
Â
|
903 |
Â
.customize-control-repeater .repeater-fields .repeater-row {
|
904 |
-
padding: .5rem;
|
905 |
Â
border: 1px solid #999;
|
906 |
Â
margin-top: .5rem;
|
907 |
Â
background: #eee;
|
908 |
-
position: relative;
|
909 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
910 |
Â
.customize-control-repeater .repeater-fields .repeater-row label {
|
911 |
Â
margin-bottom: 12px;
|
912 |
Â
clear: both; }
|
@@ -918,17 +923,29 @@ span.CodeMirror-selectedtext {
|
|
918 |
Â
-webkit-box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.25);
|
919 |
Â
box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.25);
|
920 |
Â
border: 1px solid #3498DB; }
|
Â
|
|
Â
|
|
Â
|
|
921 |
Â
.customize-control-repeater button.repeater-add {
|
922 |
Â
margin-top: 1rem; }
|
Â
|
|
Â
|
|
923 |
Â
.customize-control-repeater .repeater-field {
|
924 |
Â
margin-bottom: 12px;
|
925 |
Â
width: 100%;
|
926 |
Â
clear: both;
|
927 |
Â
padding-bottom: 12px;
|
928 |
Â
border-bottom: 1px dotted #CCC; }
|
929 |
-
.customize-control-repeater .repeater-
|
930 |
-
|
931 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
932 |
Â
.customize-control-repeater .repeater-field-select select {
|
933 |
Â
margin-left: 0; }
|
934 |
Â
.customize-control-repeater .repeater-field-checkbox label {
|
@@ -941,51 +958,44 @@ span.CodeMirror-selectedtext {
|
|
941 |
Â
resize: vertical; }
|
942 |
Â
.customize-control-repeater .repeater-row-header {
|
943 |
Â
background: white;
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
height:
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
.customize-control-repeater .repeater-row-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
cursor: move; }
|
974 |
-
.customize-control-repeater .repeater-remove,
|
975 |
-
.customize-control-repeater .repeater-move,
|
976 |
Â
.customize-control-repeater .repeater-minimize {
|
977 |
Â
line-height: 36px; }
|
978 |
-
.customize-control-repeater .repeater-row.minimized {
|
979 |
-
padding: 0;
|
980 |
-
height: 36px;
|
981 |
-
overflow: hidden; }
|
982 |
Â
.customize-control-repeater .remove-button, .customize-control-repeater .upload-button {
|
983 |
Â
width: 48%; }
|
984 |
Â
|
985 |
Â
.kirki-image-attachment {
|
986 |
Â
margin: 0;
|
987 |
Â
text-align: center;
|
988 |
-
margin-bottom:
|
989 |
Â
.kirki-image-attachment img {
|
990 |
Â
display: inline-block; }
|
991 |
Â
|
901 |
Â
height: 100%; }
|
902 |
Â
|
903 |
Â
.customize-control-repeater .repeater-fields .repeater-row {
|
Â
|
|
904 |
Â
border: 1px solid #999;
|
905 |
Â
margin-top: .5rem;
|
906 |
Â
background: #eee;
|
907 |
+
position: relative; }
|
908 |
+
.customize-control-repeater .repeater-fields .repeater-row.minimized {
|
909 |
+
border: 1px solid #dfdfdf;
|
910 |
+
padding: 0; }
|
911 |
+
.customize-control-repeater .repeater-fields .repeater-row.minimized:hover {
|
912 |
+
border: 1px solid #999; }
|
913 |
+
.customize-control-repeater .repeater-fields .repeater-row.minimized .repeater-row-content {
|
914 |
+
display: none; }
|
915 |
Â
.customize-control-repeater .repeater-fields .repeater-row label {
|
916 |
Â
margin-bottom: 12px;
|
917 |
Â
clear: both; }
|
923 |
Â
-webkit-box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.25);
|
924 |
Â
box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.25);
|
925 |
Â
border: 1px solid #3498DB; }
|
926 |
+
.customize-control-repeater .repeater-fields .repeater-row .repeater-field:last-child {
|
927 |
+
border-bottom: none;
|
928 |
+
padding-bottom: 0; }
|
929 |
Â
.customize-control-repeater button.repeater-add {
|
930 |
Â
margin-top: 1rem; }
|
931 |
+
.customize-control-repeater .repeater-row-content {
|
932 |
+
padding: 10px 15px; }
|
933 |
Â
.customize-control-repeater .repeater-field {
|
934 |
Â
margin-bottom: 12px;
|
935 |
Â
width: 100%;
|
936 |
Â
clear: both;
|
937 |
Â
padding-bottom: 12px;
|
938 |
Â
border-bottom: 1px dotted #CCC; }
|
939 |
+
.customize-control-repeater .repeater-field .customize-control-title {
|
940 |
+
font-size: 13px;
|
941 |
+
line-height: initial; }
|
942 |
+
.customize-control-repeater .repeater-field .customize-control-description {
|
943 |
+
font-size: 13px;
|
944 |
+
line-height: initial; }
|
945 |
+
.customize-control-repeater .repeater-field.repeater-field-hidden {
|
946 |
+
margin: 0;
|
947 |
+
padding: 0;
|
948 |
+
border: 0; }
|
949 |
Â
.customize-control-repeater .repeater-field-select select {
|
950 |
Â
margin-left: 0; }
|
951 |
Â
.customize-control-repeater .repeater-field-checkbox label {
|
958 |
Â
resize: vertical; }
|
959 |
Â
.customize-control-repeater .repeater-row-header {
|
960 |
Â
background: white;
|
961 |
+
border: 1px solid #dfdfdf;
|
962 |
+
position: relative;
|
963 |
+
padding: 10px 15px;
|
964 |
+
height: auto;
|
965 |
+
min-height: 20px;
|
966 |
+
line-height: 30px;
|
967 |
+
overflow: hidden;
|
968 |
+
word-wrap: break-word; }
|
969 |
+
.customize-control-repeater .repeater-row-header:hover {
|
970 |
+
cursor: move; }
|
971 |
+
.customize-control-repeater .repeater-row-header .dashicons {
|
972 |
+
font-size: 18px;
|
973 |
+
position: absolute;
|
974 |
+
right: 12px;
|
975 |
+
top: 2px;
|
976 |
+
color: #a0a5aa; }
|
977 |
+
.customize-control-repeater .repeater-row-label {
|
978 |
+
font-size: 13px;
|
979 |
+
font-weight: 600;
|
980 |
+
line-height: 20px;
|
981 |
+
display: block;
|
982 |
+
text-transform: capitalize;
|
983 |
+
width: 90%;
|
984 |
+
overflow: hidden;
|
985 |
+
height: 18px; }
|
986 |
+
.customize-control-repeater .repeater-row-remove {
|
987 |
+
color: #a00; }
|
988 |
+
.customize-control-repeater .repeater-row-remove:hover {
|
989 |
+
color: #f00; }
|
Â
|
|
Â
|
|
Â
|
|
990 |
Â
.customize-control-repeater .repeater-minimize {
|
991 |
Â
line-height: 36px; }
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
992 |
Â
.customize-control-repeater .remove-button, .customize-control-repeater .upload-button {
|
993 |
Â
width: 48%; }
|
994 |
Â
|
995 |
Â
.kirki-image-attachment {
|
996 |
Â
margin: 0;
|
997 |
Â
text-align: center;
|
998 |
+
margin-bottom: 10px; }
|
999 |
Â
.kirki-image-attachment img {
|
1000 |
Â
display: inline-block; }
|
1001 |
Â
|
assets/css/customizer.css.map
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
{
|
2 |
Â
"version": 3,
|
3 |
-
"mappings": "AAQQ,4DAAyB;EACrB,aAAa,EAAE,4BAAwB;AAQvC,2FAA2B;EACvB,aAAa,EAAE,4BAAwB;EACvC,iGAAQ;IACJ,YAAY,EAAE,sBAAwB;IACtC,YAAY,EAAE,sBAAsB;;AASxD;WACY;EACR,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB;;mBACQ;IACJ,QAAQ,EAAE,QAAQ;IAGlB,iBAAiB,EAAE,oBAAoB;IACvC,cAAc,EAAE,oBAAoB;IACpC,SAAS,EAAE,oBAAoB;IAI/B,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,GAAG;IAEZ,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,SAAS;IACrB,gBAAgB,EAAE,KAAK;EAE3B;;;;yBAGc;IACV,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,CAAC;EAEd;;yBACc;IACV,gBAAgB,EAAE,CAAC;EAGvB;oBAAS;IACL,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,IAAI;IAEZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,qBAAqB;IACpC,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;EAGZ;mBAAQ;IACJ,OAAO,EAAE,eAAe;IAExB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,KAAK;IACpB,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;;AAIpB,oBAAqB;EACjB,QAAQ,EAAE,QAAQ;EAClB,yCAAqB;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,GAAG;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;;AAKX,8CAAqB;EACjB,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,CAAC;AAKX;uBAAS;EACL,IAAI,EAAE,IAAI;EACV,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,cAAc;AAEhC;sBAAQ;EACJ,IAAI,EAAE,KAAK;;AAOrB,4CAAU;EACT,MAAM,EAAE,6BAAyB;;AAQpC,gCAAiC;EAC7B,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;;AAMnB,KAAM;EACF,SAAS,EAAE,IAAI;;AAMnB,kBAAmB;EACf,MAAM,EAAE,4BAAyB;EACpC,gBAAgB,EAAE,IAAI;EACtB,mBAAmB,EAAE,KAAK;EAC1B,iBAAiB,EAAE,MAAM;EACzB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;;AAQZ,wEAAqB;EACpB,QAAQ,EAAE,KAAK;EACZ,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,KAAK;EACX,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,iCAAiC;EACnD,iBAAiB,EAAE,SAAS;EAC5B,mBAAmB,EAAE,aAAa;;AAKxC,oBAAqB;EACpB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAO;EACnB,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAChB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,KAAK;EACd,kBAAkB,EAAE,mBAAmB;EACvC,eAAe,EAAE,mBAAmB;EACpC,cAAc,EAAE,mBAAmB;EACnC,aAAa,EAAE,mBAAmB;EAClC,UAAU,EAAE,mBAAmB;EAC/B,WAAW,EAAE,IAAI;EAEjB,+BAAW;IACV,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,QAAQ;EAEzB,uDACS;IACR,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,CAAC;EAEX,0BAAQ;IACP,OAAO,EAAE,CAAC;IACV,kBAAkB,EAAE,qDAAgD;IACpE,UAAU,EAAE,qDAAgD;;ACjO5D,gGAA2B;EAC1B,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,gBAAgB;EACzB,UAAU,EAAE,YAAY;EAExB,yHAAyB;IACxB,WAAW,EAAE,CAAC;EAEf,oHAAoB;IACnB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,IAAI;IAChB,6IAAyB;MACxB,aAAa,EAAE,eAAe;;ACbjC,wGAA+B;EAC9B,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,YAAY;;ACAvB,uWAA+B;EAC9B,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,KAAK;EACX,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,MAAM;AAEnB,qVAAyB;EACxB,OAAO,EAAE,IAAI;;ACXd;;kDAAuB;EACnB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,UAAU;EAClB,MAAM,EAAE,OAAO;EACf,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,qBAAqB,EAAE,GAAG;EAC1B;;2DAAS;IACL,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;EAEhB;;0DAAQ;IACJ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,OAAO;IACf,aAAa,EAAE,GAAG;IAClB,qBAAqB,EAAE,GAAG;EAG1B;;mEAAS;IACL,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,GAAG;EAEZ;;kEAAQ;IACJ,UAAU,EAAE,IAAI;;AC1ChC,YAAY;AAEZ,WAAY;EACV,iEAAiE;EACjE,WAAW,EAAE,SAAS;EACtB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;;AAGd,aAAa;AAEb,iBAAkB;EAChB,OAAO,EAAE,KAAK;EAAE,qCAAqC;;AAEvD,eAAgB;EACd,OAAO,EAAE,KAAK;EAAE,mCAAmC;;AAGrD,uDAAwD;EACtD,gBAAgB,EAAE,KAAK;EAAE,kDAAkD;;AAG7E,YAAY;AAEZ,mBAAoB;EAClB,YAAY,EAAE,cAAc;EAC5B,gBAAgB,EAAE,OAAO;EACzB,WAAW,EAAE,MAAM;;AAGrB,sBAAuB;EACrB,OAAO,EAAE,WAAW;EACpB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,KAAK;EACjB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,MAAM;;AAGrB,wBAAyB;EAAE,KAAK,EAAE,KAAK;;AACvC,+BAAgC;EAAE,KAAK,EAAE,IAAI;;AAE7C,YAAY;AAEZ,kBAAmB;EACjB,WAAW,EAAE,eAAe;EAC5B,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,CAAC;;AAEV,8CAA8C;AAC9C,0CAA2C;EACzC,WAAW,EAAE,gBAAgB;;AAE/B,iCAAkC;EAChC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,IAAI;;AAElB,qCAAsC;EACpC,OAAO,EAAE,CAAC;;AAGZ,sBAAuB;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,iBAAiB,EAAE,6BAA6B;EAChD,cAAc,EAAE,6BAA6B;EAC7C,SAAS,EAAE,6BAA6B;EACxC,gBAAgB,EAAE,IAAI;;AAExB,qBAIC;EAFC,GAAI;IAAE,gBAAgB,EAAE,WAAW;AAGrC,wBAIC;EAFC,GAAI;IAAE,gBAAgB,EAAE,WAAW;AAGrC,gBAIC;EAFC,GAAI;IAAE,gBAAgB,EAAE,WAAW;AAIrC,+DAA+D;AAG/D,OAAQ;EAAE,OAAO,EAAE,YAAY;EAAE,eAAe,EAAE,OAAO;;AAEzD,iBAAkB;EAChB,WAAW,EAAE,cAAc;EAC3B,QAAQ,EAAE,QAAQ;;AAGpB,mBAAmB;AAEnB,wBAAyB;EAAC,KAAK,EAAE,IAAI;;AACrC,uBAAwB;EAAC,KAAK,EAAE,IAAI;;AACpC,YAAa;EAAC,KAAK,EAAE,IAAI;;AACzB,YAAa;EAAC,KAAK,EAAE,IAAI;;AACzB,sBAAuB;EAAC,WAAW,EAAE,IAAI;;AACzC,MAAO;EAAC,UAAU,EAAE,MAAM;;AAC1B,QAAS;EAAC,eAAe,EAAE,SAAS;;AACpC,iBAAkB;EAAC,eAAe,EAAE,YAAY;;AAEhD,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,sBAAuB;EAAC,KAAK,EAAE,IAAI;;AACnC,wBAAyB;EAAC,KAAK,EAAE,IAAI;;AACrC,qBAAsB;EAAC,KAAK,EAAE,IAAI;;AAKlC,4BAA6B;EAAC,KAAK,EAAE,IAAI;;AACzC,4BAA6B;EAAC,KAAK,EAAE,IAAI;;AACzC,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,wBAAyB;EAAC,KAAK,EAAE,IAAI;;AACrC,0BAA2B;EAAC,KAAK,EAAE,IAAI;;AACvC,sBAAuB;EAAC,KAAK,EAAE,IAAI;;AACnC,2BAA4B;EAAC,KAAK,EAAE,IAAI;;AACxC,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,qBAAsB;EAAC,KAAK,EAAE,IAAI;;AAClC,2BAA4B;EAAC,KAAK,EAAE,IAAI;;AACxC,oBAAqB;EAAC,KAAK,EAAE,IAAI;;AACjC,sBAAuB;EAAC,KAAK,EAAE,IAAI;;AAEnC,uBAAwB;EAAC,KAAK,EAAE,IAAI;;AACpC,eAAgB;EAAC,KAAK,EAAE,IAAI;;AAE5B,qBAAsB;EAAE,aAAa,EAAE,SAAS;;AAEhD,sCAAsC;AAEtC,8CAA+C;EAAC,KAAK,EAAE,IAAI;;AAC3D,iDAAkD;EAAC,KAAK,EAAE,IAAI;;AAC9D,uBAAwB;EAAE,UAAU,EAAE,sBAAqB;;AAC3D,iCAAkC;EAAC,UAAU,EAAE,OAAO;;AAEtD,UAAU;AAEV;oDACoD;AAEpD,WAAY;EACV,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;EAChB,UAAU,EAAE,KAAK;;AAGnB,kBAAmB;EACjB,QAAQ,EAAE,iBAAiB;EAAE,6CAA6C;EAC1E,yEAAyE;EACzE,yCAAyC;EACzC,aAAa,EAAE,KAAK;EAAE,YAAY,EAAE,KAAK;EACzC,cAAc,EAAE,IAAI;EACpB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EAAE,oDAAoD;EACnE,QAAQ,EAAE,QAAQ;;AAEpB,iBAAkB;EAChB,QAAQ,EAAE,QAAQ;EAClB,YAAY,EAAE,sBAAsB;;AAGtC;;2BAE2B;AAC3B,uGAAwG;EACtG,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,IAAI;;AAEf,sBAAuB;EACrB,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;EAChB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,MAAM;;AAEpB,sBAAuB;EACrB,MAAM,EAAE,CAAC;EAAE,IAAI,EAAE,CAAC;EAClB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,MAAM;;AAEpB,4BAA6B;EAC3B,KAAK,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;AAErB,yBAA0B;EACxB,IAAI,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;AAGpB,mBAAoB;EAClB,QAAQ,EAAE,QAAQ;EAAE,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;EACnC,OAAO,EAAE,CAAC;;AAEZ,kBAAmB;EACjB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,KAAK;EACpB,6BAA6B;EAC7B,KAAK,EAAC,CAAC;EACP,QAAQ,EAAC,MAAM;;AAEjB,0BAA2B;EACzB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,eAAe;EAC3B,MAAM,EAAE,eAAe;;AAEzB,6BAA8B;EAC5B,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;EACjB,OAAO,EAAE,CAAC;;AAEZ,sBAAuB;EACrB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,CAAC;;AAEZ,0BAA2B;EACzB,mBAAmB,EAAE,IAAI;EACzB,gBAAgB,EAAE,IAAI;EACtB,WAAW,EAAE,IAAI;;AAGnB,iBAAkB;EAChB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,GAAG;EAAE,2CAA2C;;AAE9D,eAAgB;EACd,gEAAgE;EAChE,kBAAkB,EAAE,CAAC;EAAE,qBAAqB,EAAE,CAAC;EAAE,aAAa,EAAE,CAAC;EACjE,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,WAAW;EACvB,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO;EAClB,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,OAAO;EACjB,2BAA2B,EAAE,WAAW;;AAE1C,oBAAqB;EACnB,SAAS,EAAE,UAAU;EACrB,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;;AAGpB,0BAA2B;EACzB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EAAE,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;EACpC,OAAO,EAAE,CAAC;;AAGZ,sBAAuB;EACrB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,IAAI;;AAKhB,gBAAiB;EACf,OAAO,EAAE,IAAI;;AAGf,kEAAkE;AAClE;;;;sBAIuB;EACrB,eAAe,EAAE,WAAW;EAC5B,UAAU,EAAE,WAAW;;AAGzB,mBAAoB;EAClB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,MAAM;EAChB,UAAU,EAAE,MAAM;;AAGpB,kBAAmB;EAAE,QAAQ,EAAE,QAAQ;;AACvC,uBAAwB;EAAE,QAAQ,EAAE,MAAM;;AAE1C,sBAAuB;EACrB,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;;AAEZ,0BAA2B;EACzB,UAAU,EAAE,OAAO;;AAGrB,0CAA2C;EACzC,UAAU,EAAE,OAAO;;AAGrB,oBAAqB;EAAE,UAAU,EAAE,OAAO;;AAC1C,wCAAyC;EAAE,UAAU,EAAE,OAAO;;AAC9D,qBAAsB;EAAE,MAAM,EAAE,SAAS;;AACzC,0GAA2G;EAAE,UAAU,EAAE,OAAO;;AAChI,yHAA0H;EAAE,UAAU,EAAE,OAAO;;AAE/I,aAAc;EACZ,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,sBAAqB;;AAGnC,yEAAyE;AACzE,gBAAiB;EAAE,eAAe,EAAE,WAAW;;AAE/C,6CAA6C;AAC7C,gBAAiB;EAAE,aAAa,EAAE,IAAI;;AAEtC,YAAa;EACX,mCAAmC;EACnC,kCAAmC;IACjC,UAAU,EAAE,MAAM;AAItB,qBAAqB;AACrB,uBAAwB;EAAE,OAAO,EAAE,EAAE;;AAErC,kEAAkE;AAClE,4BAA6B;EAAE,UAAU,EAAE,IAAI;;AC5U9C,mDAAqB;EACpB,KAAK,EAAE,IAAI;EACX,qEAAkB;IACjB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE,IAAI;IAClB,2EAAQ;MACP,UAAU,EAAE,mBAAe;MAC3B,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,kBAAkB,EAAE,IAAI;MACxB,UAAU,EAAE,IAAI;IAEjB,oKACc;MACb,KAAK,EAAE,IAAI;;ACfd,uDAA0B;EACzB,OAAO,EAAE,IAAI;EAEb,wFAAiC;IAChC,KAAK,EAAE,IAAI;IACX,8FAAM;MACL,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,MAAM;MAClB,OAAO,EAAE,GAAG;EAGd,4EAAqB;IACpB,KAAK,EAAE,IAAI;IAEX,8FAAkB;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE,CAAC;MACf,aAAa,EAAE,CAAC;MAChB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE,CAAC;MAEf,qGAAO;QACN,sBAAsB,EAAE,YAAY;QACpC,yBAAyB,EAAE,YAAY;QACvC,uBAAuB,EAAE,YAAY;QACrC,0BAA0B,EAAE,YAAY;MAGzC,oGAAQ;QACP,OAAO,EAAE,IAAI;;AC/BjB,sCAAM;EACL,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,KAAK;AAEf,qDAAqB;EACpB,KAAK,EAAE,WAAW;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EAChB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAC,0CAAsC;EACzD,UAAU,EAAC,0CAAsC;EACjD,MAAM,EAAE,4BAAwB;AAEjC,gDAAgB;EACf,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,sDAAM;IACL,OAAO,EAAE,IAAI;IAEZ,2FAA6B;MAC5B,kBAAkB,EAAE,wBAAwB;MAC5C,UAAU,EAAE,wBAAwB;MACpC,MAAM,EAAE,4BAAwB;;AC3BrC,gCAAiC;EAC7B,OAAO,EAAE,iBAAiB;EAC7B,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,iBAAiB;EACzB,sDAAsB;IACrB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,cAAc;IAC7B;8EACoB;MACnB,OAAO,EAAC,KAAK;MACb,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,QAAQ,EAAE,MAAM;MAChB;;sFACQ;QACP,WAAW,EAAE,SAAS;QACtB;;8FAAQ;UACP,MAAM,EAAE,OAAO;MAGjB;yFAAS;QACR,OAAO,EAAE,IAAI;IAGf,0EAAoB;MACnB,IAAI,EAAE,IAAI;MACV,iFAAS;QACR,OAAO,EAAE,OAAO;IAGlB,0EAAoB;MACnB,KAAK,EAAE,IAAI;MACX,gFAAQ;QACP,OAAO,EAAE,OAAO;IAGlB,2EAAqB;MACpB,UAAU,EAAE,MAAM;EAGpB,wDAAwB;IACvB,eAAe,EAAE,QAAQ;IACzB,KAAK,EAAE,IAAI;IACX,8DAAM;MACL,UAAU,EAAE,OAAO;MACnB,OAAO,EAAE,GAAG;IAGZ,8DAAG;MACF,UAAU,EAAE,MAAM;MAClB,gEAAE;QACD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,IAAI;QACX,eAAe,EAAE,IAAI;QACrB,wJACQ;UACP,KAAK,EAAE,IAAI;UACX,gBAAgB,EAAE,OAAO;MAK1B,wLAAE;QACD,KAAK,EAAE,IAAI;;ACjEhB,kCAAM;EACL,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;AAEtB,2CAAe;EACd,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,MAAM;EAClB,8CAAG;IACF,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,MAAM;EAEf,sDAAW;IACV,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,qBAAqB;EAE9B,iDAAM;IACL,OAAO,EAAE,IAAI;IAGX,4EAAW;MACV,MAAM,EAAE,iBAAiB;MACzB,KAAK,EAAE,IAAI;;ACvBf,0DAAe;EACd,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,OAAO;EACnB,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,aAAa,EAAE,GAAG;AAGlB,kEAAe;EACd,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,MAAM;AAKlB,4EAAQ;EACP,YAAY,EAAE,OAAO;;ACpBzB,uDAA8B;EAC7B,QAAQ,EAAE,QAAQ;EAClB,0EAAmB;IAClB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,kBAAc;IACrB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,iBAAiB;IAEzB,aAAa,EAAE,CAAC;IAChB,qBAAqB,EAAE,CAAC;IACxB,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,0FAAgB;MACf,OAAO,EAAE,IAAI;IAIb,kMAAS;MACR,WAAW,EAAE,SAAS;MACtB,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,CAAC;IAGT,wFAAgB;MACf,GAAG,EAAE,IAAI;MACT,+FAAS;QACR,OAAO,EAAE,OAAO;IAGlB,0FAAkB;MACjB,GAAG,EAAE,GAAG;MACR,iGAAS;QACR,OAAO,EAAE,OAAO;IAGlB,gFAAQ;MACP,KAAK,EAAE,kBAAc;;AC1CxB,8CAAoB;EACnB,OAAO,EAAE,IAAI;EAEZ,8DAAQ;IACP,MAAM,EAAE,4BAAwB;AAIhC,gCAAM;EACF,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,qBAAqB;EACjC,aAAa,EAAE,qBAAqB;EACpC,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,qCAAK;IACD,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,WAAa;IACpB,kBAAkB,EAAE,qBAAqB;IACzC,eAAe,EAAE,qBAAqB;IACtC,cAAc,EAAE,qBAAqB;IACrC,aAAa,EAAE,qBAAqB;IACpC,UAAU,EAAE,qBAAqB;IAC1C,UAAU,EAAE,4BAAwB;IACpC,aAAa,EAAE,4BAAwB;IACvC,iDAAc;MACb,WAAW,EAAE,4BAAwB;IAEtC,gDAAa;MACZ,YAAY,EAAE,4BAAwB;IAE9B,2CAAQ;MACJ,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,CAAC;MACZ,SAAS,EAAE,IAAI;MACf,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,KAAK,EAAE,IAAI;;ACxCvB,gDAAkB;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,+DAAiB;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;AAGtB,oCAAM;EACL,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,GAAG;EAClB,wDAAoB;IACnB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,mBAAe;IACtB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;;ACfnB,2DAAc;EACb,UAAU,EAAE,mBAAe;EAC3B,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,4BAAwB;EACtC,OAAO,EAAE,OAAO;EAChB,MAAM,EAAE,CAAC;EACT,SAAS,EAAE,IAAI;EACf,sEAAa;IACZ,YAAY,EAAE,IAAI;AAGpB,2DAAc;EACb,OAAO,EAAE,IAAI;EAEZ,mFAAgB;IACf,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,IAAI;;ACjBf,oCAAM;EACL,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;AAEtB,oCAAM;EAIL,OAAO,EAAE,IAAI;EAHb,wCAAI;IACH,MAAM,EAAE,qBAAqB;EAK5B,wDAAI;IACH,kBAAkB,EAAE,+BAA2B;IAC/C,UAAU,EAAE,+BAA2B;IACvC,MAAM,EAAE,iBAAiB;EAI5B,6DAAyB;IACxB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC;IAAE,KAAK,EAAE,CAAC;IACjB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;;ACtBb,0DAAc;EACb,OAAO,EAAC,KAAK;EACV,MAAM,EAAC,cAAc;EACrB,UAAU,EAAC,KAAK;EAChB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAC,QAAQ;EACjB,WAAW,EAAC,IAAI;EAEnB,gEAAM;IACL,aAAa,EAAC,IAAI;IAClB,KAAK,EAAC,IAAI;EAKT,2GAAM;IAIL,OAAO,EAAE,IAAI;IAHb,+GAAI;MACH,MAAM,EAAE,qBAAqB;IAK5B,+HAAI;MACH,kBAAkB,EAAE,+BAA2B;MAC/C,UAAU,EAAE,+BAA2B;MACvC,MAAM,EAAE,iBAAiB;AASjC,+CAAoB;EAChB,UAAU,EAAC,IAAI;AAGnB,2CAAgB;EACZ,aAAa,EAAC,IAAI;EAClB,KAAK,EAAC,IAAI;EACV,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,IAAI;EACpB,aAAa,EAAE,eAAe;AAGlC,oEAAyC;EACrC,aAAa,EAAC,IAAI;EAClB,cAAc,EAAC,CAAC;AAGpB,yDAA8B;EAC1B,WAAW,EAAC,CAAC;AAGhB,0DAAM;EACL,WAAW,EAAE,IAAI;AAElB,0DAAM;EACF,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,GAAG;AAGtB,6DAAkC;EAC9B,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,QAAQ;AAEpB,gDAAqB;EACjB,UAAU,EAAE,KAAK;EACjB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,cAAc;EAC7B,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,IAAI;AAGnB,gDAAqB;EACjB,YAAY,EAAE,cAAc;EAC5B,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;AAGtB;;kDAEuB;EACnB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,KAAK;EACZ,WAAW,EAAE,cAAc;EAC3B,KAAK,EAAE,IAAI;EACX,MAAM,EAAC,IAAI;EACX,UAAU,EAAE,MAAM;EAErB;;0DAAQ;IACJ,UAAU,EAAC,IAAI;IACf,MAAM,EAAE,OAAO;AAIlB,oDAAyB;EACzB,MAAM,EAAC,IAAI;AAGb;;8CAEmB;EACf,WAAW,EAAE,IAAI;AAGrB,mDAAwB;EACpB,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;AAGpB,sFAA8B;EAC7B,KAAK,EAAE,GAAG;;AAIZ,uBAAuB;EACtB,MAAM,EAAE,CAAC;EACT,UAAU,EAAC,MAAM;EACjB,aAAa,EAAE,IAAI;EACnB,2BAAG;IACF,OAAO,EAAC,YAAY;;AAItB,MAAM;EACL,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,GAAG;EAClB,gBAAY;IACX,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,IAAI;;AC3IZ,kBAAU;EACT,QAAQ,EAAE,QAAQ;EAEjB;kDACuB;IACtB,MAAM,EAAE,OAAO;EAGf,sHACqB;IACpB,MAAM,EAAE,IAAI;EAEb,gDAAQ;IACP,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,6BAAyB;IACtC,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;EAEf,gEAAwB;IACvB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,4BAAwB;EAEtC,mDAAW;IACV,OAAO,EAAE,GAAG;IACZ,gBAAgB,EAAE,OAAO;EAG3B,oDAA6B;IAC5B,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;EAGb,+CAA+B;IAC9B,MAAM,EAAE,uBAAuB;EAK7B,2FAA8B;IAC7B,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,8BAA8B;IAC1C,MAAM,EAAE,iBAAiB;IACzB,kBAAkB,EAAE,0BAA0B;IAC9C,UAAU,EAAE,0BAA0B;EAKxC,oEAAgC;IAC/B,OAAO,EAAE,GAAG;IACZ,UAAU,EAAE,MAAM;EAEnB,wDAAoB;IACnB,kBAAkB,EAAE,4BAA4B;IAChD,UAAU,EAAE,4BAA4B;EAIzC,qDAAa;IACZ,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,eAAe;IAC9B,6DAAQ;MACP,OAAO,EAAE,CAAC;MACV,6BAA6B;MAC7B,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,eAAe,EAAE,IAAI;MACrB,cAAc,EAAE,MAAM;MACtB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,WAAW,EAAE,iBAAiB;MAC9B,qBAAqB,EAAE,WAAW;MAClC,kBAAkB,EAAE,WAAW;MAC/B,aAAa,EAAE,WAAW;MAC1B,kBAAkB,EAAE,UAAU;MAC9B,eAAe,EAAE,UAAU;MAC3B,UAAU,EAAE,UAAU;EAGxB,sDAAc;IACb,UAAU,EAAE,mBAAmB;EAEhC,uDAAiB;IAChB,iBAAiB,EAAE,OAAO;EAI3B,+DAA2B;IAC1B,UAAU,EAAE,IAAI;EAEjB,yDAAqB;IACpB,iBAAiB,EAAE,OAAO;EAK5B,yCAAiB;IAChB,UAAU,EAAE,IAAI;IAChB,mDAAY;MACX,OAAO,EAAE,WAAW;IAErB,+CAAM;MACL,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,WAAW;MACnB,OAAO,EAAE,OAAO;MAChB,UAAU,EAAE,OAAO;MACnB,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,eAAe;MACvB,sDAAS;QACR,UAAU,EAAE,OAAO;QACnB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,eAAe;IAGzB,yHACwB;MACvB,KAAK,EAAE,OAAO;MACd,UAAU,EAAE,OAAO;MACnB,MAAM,EAAE,eAAe;AAK3B,mBAAW;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,eAAe;EACpB,OAAO,EAAE,EAAE;EACX,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,UAAU;EAClB,UAAU,EAAE,MAAM;EAClB,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EACtB,kBAAkB,EAAE,4BAA4B;EAChD,UAAU,EAAE,4BAA4B;EACxC,qBAAqB,EAAE,WAAW;EAClC,kBAAkB,EAAE,WAAW;EAC/B,aAAa,EAAE,WAAW;EAC1B,OAAO,EAAE,GAAG;EACZ,0BAAS;IACR,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,OAAO;IACnB,qBAAqB,EAAE,WAAW;IAClC,kBAAkB,EAAE,WAAW;IAC/B,aAAa,EAAE,WAAW;IAC1B,gCAAQ;MACP,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MACR,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,GAAG;MACZ,UAAU,EAAE,KAAK;MACjB,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE,eAAe;MAC1B,sCAAQ;QACP,KAAK,EAAE,OAAO;EAIjB,qDAAoC;IACnC,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,IAAI;IACX,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,UAAU;IACtB,gEAAa;MACZ,YAAY,EAAE,MAAM;IAErB,4DAAS;MACR,OAAO,EAAE,IAAI;IAEd,4DAAS;MACR,UAAU,EAAE,MAAM;AAIrB,6DAEc;EACb,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,sBAAsB,EAAE,OAAO;AAEhC,yEAC+C;EAC9C,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;AAEtB,gBAAQ;EACP,MAAM,EAAE,4BAAwB;EAChC,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EACtB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;EAClB,qBAAO;IACN,gBAAgB,EAAE,OAAO;EAE1B,sDACa;IACZ,MAAM,EAAE,kBAAkB;EAE3B,sBAAQ;IACP,kBAAkB,EAAE,mCAAmC;IACvD,UAAU,EAAE,mCAAmC;EAEhD,gCAAkB;IACjB,qBAAqB,EAAE,WAAW;IAClC,kBAAkB,EAAE,WAAW;IAC/B,aAAa,EAAE,WAAW;EAE3B,oBAAI;IACH,cAAc,EAAE,QAAQ;IACxB,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,MAAM;EAEjB,wBAAQ;IACP,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,eAAe;IAC3B,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,oBAAoB;IAC5B,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,mBAAmB,EAAE,eAAe;IACpC,kBAAkB,EAAE,eAAe;IACnC,UAAU,EAAE,eAAe;IAC3B,mCAAa;MACZ,OAAO,EAAE,IAAI;IAEd,8BAAQ;MACP,OAAO,EAAE,eAAe;EAG1B,uBAAS;IACR,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;EAEZ,wCAA0B;IACzB,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;AAIT,qCAAkB;EACjB,MAAM,EAAE,OAAO;EACf,QAAQ,EAAE,MAAM;EAChB,gDAAW;IACV,UAAU,EAAE,wBAAwB;IACpC,qBAAqB,EAAE,GAAG;IAC1B,kBAAkB,EAAE,GAAG;IACvB,aAAa,EAAE,GAAG;AAGpB;oCACiB;EAChB,OAAO,EAAE,OAAO;AAEjB,0DAAuC;EACtC,UAAU,EAAE,MAAM;AAEnB,oCAAiB;EAChB,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,OAAO;AAEhB,2BAAQ;EACP,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;AAEf,kCAAe;EACd,KAAK,EAAE,OAAO;AAEf,2BAAQ;EACP,KAAK,EAAE,qBAAqB;AAE7B,2BAAU;EACT,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,KAAK;;ACjUnB,2CAAkB;EACjB,kBAAkB,EAAE,IAAI;EACxB,kBAAkB,EAAE,cAAc;EAClC,eAAe,EAAE,cAAc;EAC/B,UAAU,EAAE,cAAc;EAC1B,gBAAgB,EAAE,kBAAc;EAChC,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,iBAAiB;EACxB,OAAO,EAAE,CAAC;EACV,iDAAQ;IACP,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;EAEd,iDAAQ;IACP,gBAAgB,EAAE,mBAAe;EAElC,iEAAwB;IACvB,kBAAkB,EAAE,IAAI;IACxB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,qBAAqB,EAAE,GAAG;IAC1B,gBAAgB,EAAE,OAAO;EAE1B,iEAAwB;IACvB,kBAAkB,EAAE,IAAI;IACxB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,OAAO;EAE1B,6DAAoB;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,OAAO;EAE1B,sDAAa;IACZ,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,CAAC;IACT,gBAAgB,EAAE,OAAO;EAE1B,6DAAoB;IACnB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,WAAW;EAExB,sDAAa;IACZ,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,WAAW;IAClB,UAAU,EAAE,WAAW;EAExB,wHACkB;IACjB,UAAU,EAAE,WAAW;EAExB,wDAAe;IACd,OAAO,EAAE,IAAI;AAGf,4CAAmB;EAClB,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,GAAG;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;AAET,6CAAoB;EACnB,KAAK,EAAE,kBAAc;EACrB,KAAK,EAAE,KAAK;EACZ,kBAAkB,EAAE,iBAAiB;EACrC,eAAe,EAAE,iBAAiB;EAClC,cAAc,EAAE,iBAAiB;EACjC,aAAa,EAAE,iBAAiB;EAChC,UAAU,EAAE,iBAAiB;EAC7B,kDAAK;IACJ,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;EAElB,mDAAQ;IACP,KAAK,EAAE,GAAG;;ACnFL,6CAAG;EACC,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,cAAc;EACtB,UAAU,EAAE,IAAI;EAEZ,uEAAiB;IACb,KAAK,EAAE,KAAK;EAEhB,mEAAa;IACT,YAAY,EAAE,IAAI;EAG1B,uDAAY;IACR,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,eAAe;IACvB,6EAAsB;MAClB,KAAK,EAAE,IAAI;;ACjB9B,mCAAS;EACR,kBAAkB,EAAC,oCAAgC;EACnD,UAAU,EAAC,oCAAgC;EAC3C,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,EAAE;EACX,4CAAS;IACR,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,aAAa;IAC9B,kDAAM;MACL,KAAK,EAAE,GAAG;MACV,qDAAG;QACF,MAAM,EAAE,YAAY;MAErB,yDAAO;QACN,OAAO,EAAE,IAAI;QACb,8EAAqB;UACpB,KAAK,EAAE,GAAG;UACV,MAAM,EAAE,IAAI;QAEb,mFAA0B;UACzB,KAAK,EAAE,GAAG;UACV,sGAAmB;YAClB,MAAM,EAAE,IAAI;EAOhB,iEAAe;IACd,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,GAAG;EAGlB,yEAAe;IACd,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,MAAM;EAKlB,mFAAQ;IACP,YAAY,EAAE,OAAO;;ACjD1B,gDAAuB;EACtB,OAAO,EAAE,IAAI;AAEd,iCAAQ;EACP,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,MAAM;EACrB,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,mBAAmB,EAAE,IAAI;EACzB,gBAAgB,EAAE,IAAI;EACtB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EACjB,uCAAM;IACL,UAAU,EAAE,kBAAc;IAC1B,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,mBAAmB;IAC/B,MAAM,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,wFAAwF;IACxG,6CAAQ;MACP,UAAU,EAAE,OAAO;MACnB,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,MAAM;MACd,IAAI,EAAE,MAAM;MACZ,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,MAAM;MACX,KAAK,EAAE,MAAM;MACb,kBAAkB,EAAE,oBAAoB;MACxC,eAAe,EAAE,oBAAoB;MACrC,cAAc,EAAE,oBAAoB;MACpC,aAAa,EAAE,oBAAoB;MACnC,UAAU,EAAE,oBAAoB;EAGlC,uCAAM;IACL,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,+CAAQ;MACP,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;IAGf,uDAAQ;MACP,UAAU,EAAE,OAAO;MACnB,6DAAQ;QACP,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO;EAKvB,uCAAQ;IACP,aAAa,EAAE,MAAM;IACrB,6CAAM;MACL,aAAa,EAAE,IAAI;MACnB,mDAAQ;QACP,aAAa,EAAE,IAAI;AAKvB;qCACY;EACX,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,MAAM;AAEhB,oCAAW;EACV,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;AAEnB,qCAAY;EACX,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,GAAG;;AClFlB,yCAAS;EACR,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,4BAAwB;EAChC,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI;;ACHjB,+BAAM;EACL,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;EAEf,wDAAyB;IACxB,KAAK,EAAE,iBAAiB;EAGzB,4CAAa;IACZ,KAAK,EAAE,EAAE;AAIX,gDAAuB;EACtB,OAAO,EAAE,IAAI;AAEd,iCAAQ;EACP,MAAM,EAAE,4BAAwB;EAChC,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,MAAM;EACtB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,OAAO;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,qBAAqB;EACjC,iFACQ;IACP,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,kEACS;EAEtB,wCAAS;IACR,UAAU,EAAE,kBAAc;IAC1B,SAAS,EAAE,gCAAgC;EAE5C,uCAAQ;IACP,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,4BAAwB;IAChC,SAAS,EAAE,uBAAuB;EAGlC,+CAAS;IACR,SAAS,EAAE,gCAAgC;AAI9C,iDAAwB;EACvB,UAAU,EAAE,uBAAgB;EAC5B,wDAAS;IACR,UAAU,EAAE,yBAAoB;IAChC,SAAS,EAAE,mCAAmC;EAE/C,uDAAQ;IACP,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,0BAA0B;EAGrC,+DAAS;IACR,UAAU,EAAE,yBAAoB;IAChC,SAAS,EAAE,mCAAmC;;ACtEjD,sCAAS;EACR,kBAAkB,EAAC,mCAA+B;EAClD,UAAU,EAAC,mCAA+B;EAC1C,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,aAAa;EAE9B;;;;;;;+CAOO;IACN,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX;;;;;;;oDAAG;MACF,MAAM,EAAE,SAAS;EAGnB;;wDAEgB;IACf,KAAK,EAAE,GAAG;EAEX,kDAAY;IACX,KAAK,EAAE,IAAI;EAGX,6DAAW;IACV,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,qBAAqB;EAE9B,wDAAM;IACL,OAAO,EAAE,IAAI;IAGX,mFAAW;MACV,MAAM,EAAE,iBAAiB;MACzB,KAAK,EAAE,IAAI;EAMhB,sDAAgB;IACf,WAAW,EAAE,IAAI;EAElB,6CAAO;IACN,KAAK,EAAE,IAAI",
|
4 |
Â
"sources": ["../scss/global.scss","../scss/panels/expanded.scss","../scss/sections/expanded.scss","../scss/sections/hover.scss","../scss/controls/checkbox.scss","../scss/controls/code.scss","../scss/controls/color.scss","../scss/controls/multicolor.scss","../scss/controls/color-palette.scss","../scss/controls/date.scss","../scss/controls/dashicons.scss","../scss/controls/dimension.scss","../scss/controls/number.scss","../scss/controls/palette.scss","../scss/controls/radio.scss","../scss/controls/radio-buttonset.scss","../scss/controls/radio-image.scss","../scss/controls/repeater.scss","../scss/controls/select.scss","../scss/controls/slider.scss","../scss/controls/sortable.scss","../scss/controls/spacing.scss","../scss/controls/switch.scss","../scss/controls/generic.scss","../scss/controls/toggle.scss","../scss/controls/typography.scss"],
|
5 |
Â
"names": [],
|
6 |
Â
"file": "customizer.css"
|
1 |
Â
{
|
2 |
Â
"version": 3,
|
3 |
+
"mappings": "AAQQ,4DAAyB;EACrB,aAAa,EAAE,4BAAwB;AAQvC,2FAA2B;EACvB,aAAa,EAAE,4BAAwB;EACvC,iGAAQ;IACJ,YAAY,EAAE,sBAAwB;IACtC,YAAY,EAAE,sBAAsB;;AASxD;WACY;EACR,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB;;mBACQ;IACJ,QAAQ,EAAE,QAAQ;IAGlB,iBAAiB,EAAE,oBAAoB;IACvC,cAAc,EAAE,oBAAoB;IACpC,SAAS,EAAE,oBAAoB;IAI/B,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,GAAG;IAEZ,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,SAAS;IACrB,gBAAgB,EAAE,KAAK;EAE3B;;;;yBAGc;IACV,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,CAAC;EAEd;;yBACc;IACV,gBAAgB,EAAE,CAAC;EAGvB;oBAAS;IACL,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,IAAI;IAEZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,qBAAqB;IACpC,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;EAGZ;mBAAQ;IACJ,OAAO,EAAE,eAAe;IAExB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,KAAK;IACpB,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;;AAIpB,oBAAqB;EACjB,QAAQ,EAAE,QAAQ;EAClB,yCAAqB;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,GAAG;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;;AAKX,8CAAqB;EACjB,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,CAAC;AAKX;uBAAS;EACL,IAAI,EAAE,IAAI;EACV,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,cAAc;AAEhC;sBAAQ;EACJ,IAAI,EAAE,KAAK;;AAOrB,4CAAU;EACT,MAAM,EAAE,6BAAyB;;AAQpC,gCAAiC;EAC7B,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;;AAMnB,KAAM;EACF,SAAS,EAAE,IAAI;;AAMnB,kBAAmB;EACf,MAAM,EAAE,4BAAyB;EACpC,gBAAgB,EAAE,IAAI;EACtB,mBAAmB,EAAE,KAAK;EAC1B,iBAAiB,EAAE,MAAM;EACzB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;;AAQZ,wEAAqB;EACpB,QAAQ,EAAE,KAAK;EACZ,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,KAAK;EACX,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,iCAAiC;EACnD,iBAAiB,EAAE,SAAS;EAC5B,mBAAmB,EAAE,aAAa;;AAKxC,oBAAqB;EACpB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAO;EACnB,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAChB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,KAAK;EACd,kBAAkB,EAAE,mBAAmB;EACvC,eAAe,EAAE,mBAAmB;EACpC,cAAc,EAAE,mBAAmB;EACnC,aAAa,EAAE,mBAAmB;EAClC,UAAU,EAAE,mBAAmB;EAC/B,WAAW,EAAE,IAAI;EAEjB,+BAAW;IACV,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,QAAQ;EAEzB,uDACS;IACR,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,CAAC;EAEX,0BAAQ;IACP,OAAO,EAAE,CAAC;IACV,kBAAkB,EAAE,qDAAgD;IACpE,UAAU,EAAE,qDAAgD;;ACjO5D,gGAA2B;EAC1B,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,gBAAgB;EACzB,UAAU,EAAE,YAAY;EAExB,yHAAyB;IACxB,WAAW,EAAE,CAAC;EAEf,oHAAoB;IACnB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,IAAI;IAChB,6IAAyB;MACxB,aAAa,EAAE,eAAe;;ACbjC,wGAA+B;EAC9B,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,YAAY;;ACAvB,uWAA+B;EAC9B,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,KAAK;EACX,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,MAAM;AAEnB,qVAAyB;EACxB,OAAO,EAAE,IAAI;;ACXd;;kDAAuB;EACnB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,UAAU;EAClB,MAAM,EAAE,OAAO;EACf,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,qBAAqB,EAAE,GAAG;EAC1B;;2DAAS;IACL,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;EAEhB;;0DAAQ;IACJ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,OAAO;IACf,aAAa,EAAE,GAAG;IAClB,qBAAqB,EAAE,GAAG;EAG1B;;mEAAS;IACL,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,GAAG;EAEZ;;kEAAQ;IACJ,UAAU,EAAE,IAAI;;AC1ChC,YAAY;AAEZ,WAAY;EACV,iEAAiE;EACjE,WAAW,EAAE,SAAS;EACtB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;;AAGd,aAAa;AAEb,iBAAkB;EAChB,OAAO,EAAE,KAAK;EAAE,qCAAqC;;AAEvD,eAAgB;EACd,OAAO,EAAE,KAAK;EAAE,mCAAmC;;AAGrD,uDAAwD;EACtD,gBAAgB,EAAE,KAAK;EAAE,kDAAkD;;AAG7E,YAAY;AAEZ,mBAAoB;EAClB,YAAY,EAAE,cAAc;EAC5B,gBAAgB,EAAE,OAAO;EACzB,WAAW,EAAE,MAAM;;AAGrB,sBAAuB;EACrB,OAAO,EAAE,WAAW;EACpB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,KAAK;EACjB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,MAAM;;AAGrB,wBAAyB;EAAE,KAAK,EAAE,KAAK;;AACvC,+BAAgC;EAAE,KAAK,EAAE,IAAI;;AAE7C,YAAY;AAEZ,kBAAmB;EACjB,WAAW,EAAE,eAAe;EAC5B,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,CAAC;;AAEV,8CAA8C;AAC9C,0CAA2C;EACzC,WAAW,EAAE,gBAAgB;;AAE/B,iCAAkC;EAChC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,IAAI;;AAElB,qCAAsC;EACpC,OAAO,EAAE,CAAC;;AAGZ,sBAAuB;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,iBAAiB,EAAE,6BAA6B;EAChD,cAAc,EAAE,6BAA6B;EAC7C,SAAS,EAAE,6BAA6B;EACxC,gBAAgB,EAAE,IAAI;;AAExB,qBAIC;EAFC,GAAI;IAAE,gBAAgB,EAAE,WAAW;AAGrC,wBAIC;EAFC,GAAI;IAAE,gBAAgB,EAAE,WAAW;AAGrC,gBAIC;EAFC,GAAI;IAAE,gBAAgB,EAAE,WAAW;AAIrC,+DAA+D;AAG/D,OAAQ;EAAE,OAAO,EAAE,YAAY;EAAE,eAAe,EAAE,OAAO;;AAEzD,iBAAkB;EAChB,WAAW,EAAE,cAAc;EAC3B,QAAQ,EAAE,QAAQ;;AAGpB,mBAAmB;AAEnB,wBAAyB;EAAC,KAAK,EAAE,IAAI;;AACrC,uBAAwB;EAAC,KAAK,EAAE,IAAI;;AACpC,YAAa;EAAC,KAAK,EAAE,IAAI;;AACzB,YAAa;EAAC,KAAK,EAAE,IAAI;;AACzB,sBAAuB;EAAC,WAAW,EAAE,IAAI;;AACzC,MAAO;EAAC,UAAU,EAAE,MAAM;;AAC1B,QAAS;EAAC,eAAe,EAAE,SAAS;;AACpC,iBAAkB;EAAC,eAAe,EAAE,YAAY;;AAEhD,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,sBAAuB;EAAC,KAAK,EAAE,IAAI;;AACnC,wBAAyB;EAAC,KAAK,EAAE,IAAI;;AACrC,qBAAsB;EAAC,KAAK,EAAE,IAAI;;AAKlC,4BAA6B;EAAC,KAAK,EAAE,IAAI;;AACzC,4BAA6B;EAAC,KAAK,EAAE,IAAI;;AACzC,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,wBAAyB;EAAC,KAAK,EAAE,IAAI;;AACrC,0BAA2B;EAAC,KAAK,EAAE,IAAI;;AACvC,sBAAuB;EAAC,KAAK,EAAE,IAAI;;AACnC,2BAA4B;EAAC,KAAK,EAAE,IAAI;;AACxC,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,yBAA0B;EAAC,KAAK,EAAE,IAAI;;AACtC,qBAAsB;EAAC,KAAK,EAAE,IAAI;;AAClC,2BAA4B;EAAC,KAAK,EAAE,IAAI;;AACxC,oBAAqB;EAAC,KAAK,EAAE,IAAI;;AACjC,sBAAuB;EAAC,KAAK,EAAE,IAAI;;AAEnC,uBAAwB;EAAC,KAAK,EAAE,IAAI;;AACpC,eAAgB;EAAC,KAAK,EAAE,IAAI;;AAE5B,qBAAsB;EAAE,aAAa,EAAE,SAAS;;AAEhD,sCAAsC;AAEtC,8CAA+C;EAAC,KAAK,EAAE,IAAI;;AAC3D,iDAAkD;EAAC,KAAK,EAAE,IAAI;;AAC9D,uBAAwB;EAAE,UAAU,EAAE,sBAAqB;;AAC3D,iCAAkC;EAAC,UAAU,EAAE,OAAO;;AAEtD,UAAU;AAEV;oDACoD;AAEpD,WAAY;EACV,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;EAChB,UAAU,EAAE,KAAK;;AAGnB,kBAAmB;EACjB,QAAQ,EAAE,iBAAiB;EAAE,6CAA6C;EAC1E,yEAAyE;EACzE,yCAAyC;EACzC,aAAa,EAAE,KAAK;EAAE,YAAY,EAAE,KAAK;EACzC,cAAc,EAAE,IAAI;EACpB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EAAE,oDAAoD;EACnE,QAAQ,EAAE,QAAQ;;AAEpB,iBAAkB;EAChB,QAAQ,EAAE,QAAQ;EAClB,YAAY,EAAE,sBAAsB;;AAGtC;;2BAE2B;AAC3B,uGAAwG;EACtG,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,IAAI;;AAEf,sBAAuB;EACrB,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;EAChB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,MAAM;;AAEpB,sBAAuB;EACrB,MAAM,EAAE,CAAC;EAAE,IAAI,EAAE,CAAC;EAClB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,MAAM;;AAEpB,4BAA6B;EAC3B,KAAK,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;AAErB,yBAA0B;EACxB,IAAI,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;AAGpB,mBAAoB;EAClB,QAAQ,EAAE,QAAQ;EAAE,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;EACnC,OAAO,EAAE,CAAC;;AAEZ,kBAAmB;EACjB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,KAAK;EACpB,6BAA6B;EAC7B,KAAK,EAAC,CAAC;EACP,QAAQ,EAAC,MAAM;;AAEjB,0BAA2B;EACzB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,eAAe;EAC3B,MAAM,EAAE,eAAe;;AAEzB,6BAA8B;EAC5B,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;EACjB,OAAO,EAAE,CAAC;;AAEZ,sBAAuB;EACrB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,CAAC;;AAEZ,0BAA2B;EACzB,mBAAmB,EAAE,IAAI;EACzB,gBAAgB,EAAE,IAAI;EACtB,WAAW,EAAE,IAAI;;AAGnB,iBAAkB;EAChB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,GAAG;EAAE,2CAA2C;;AAE9D,eAAgB;EACd,gEAAgE;EAChE,kBAAkB,EAAE,CAAC;EAAE,qBAAqB,EAAE,CAAC;EAAE,aAAa,EAAE,CAAC;EACjE,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,WAAW;EACvB,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO;EAClB,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,OAAO;EACjB,2BAA2B,EAAE,WAAW;;AAE1C,oBAAqB;EACnB,SAAS,EAAE,UAAU;EACrB,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;;AAGpB,0BAA2B;EACzB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EAAE,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;EACpC,OAAO,EAAE,CAAC;;AAGZ,sBAAuB;EACrB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,IAAI;;AAKhB,gBAAiB;EACf,OAAO,EAAE,IAAI;;AAGf,kEAAkE;AAClE;;;;sBAIuB;EACrB,eAAe,EAAE,WAAW;EAC5B,UAAU,EAAE,WAAW;;AAGzB,mBAAoB;EAClB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,MAAM;EAChB,UAAU,EAAE,MAAM;;AAGpB,kBAAmB;EAAE,QAAQ,EAAE,QAAQ;;AACvC,uBAAwB;EAAE,QAAQ,EAAE,MAAM;;AAE1C,sBAAuB;EACrB,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;;AAEZ,0BAA2B;EACzB,UAAU,EAAE,OAAO;;AAGrB,0CAA2C;EACzC,UAAU,EAAE,OAAO;;AAGrB,oBAAqB;EAAE,UAAU,EAAE,OAAO;;AAC1C,wCAAyC;EAAE,UAAU,EAAE,OAAO;;AAC9D,qBAAsB;EAAE,MAAM,EAAE,SAAS;;AACzC,0GAA2G;EAAE,UAAU,EAAE,OAAO;;AAChI,yHAA0H;EAAE,UAAU,EAAE,OAAO;;AAE/I,aAAc;EACZ,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,sBAAqB;;AAGnC,yEAAyE;AACzE,gBAAiB;EAAE,eAAe,EAAE,WAAW;;AAE/C,6CAA6C;AAC7C,gBAAiB;EAAE,aAAa,EAAE,IAAI;;AAEtC,YAAa;EACX,mCAAmC;EACnC,kCAAmC;IACjC,UAAU,EAAE,MAAM;AAItB,qBAAqB;AACrB,uBAAwB;EAAE,OAAO,EAAE,EAAE;;AAErC,kEAAkE;AAClE,4BAA6B;EAAE,UAAU,EAAE,IAAI;;AC5U9C,mDAAqB;EACpB,KAAK,EAAE,IAAI;EACX,qEAAkB;IACjB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE,IAAI;IAClB,2EAAQ;MACP,UAAU,EAAE,mBAAe;MAC3B,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,kBAAkB,EAAE,IAAI;MACxB,UAAU,EAAE,IAAI;IAEjB,oKACc;MACb,KAAK,EAAE,IAAI;;ACfd,uDAA0B;EACzB,OAAO,EAAE,IAAI;EAEb,wFAAiC;IAChC,KAAK,EAAE,IAAI;IACX,8FAAM;MACL,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,MAAM;MAClB,OAAO,EAAE,GAAG;EAGd,4EAAqB;IACpB,KAAK,EAAE,IAAI;IAEX,8FAAkB;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE,CAAC;MACf,aAAa,EAAE,CAAC;MAChB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE,CAAC;MAEf,qGAAO;QACN,sBAAsB,EAAE,YAAY;QACpC,yBAAyB,EAAE,YAAY;QACvC,uBAAuB,EAAE,YAAY;QACrC,0BAA0B,EAAE,YAAY;MAGzC,oGAAQ;QACP,OAAO,EAAE,IAAI;;AC/BjB,sCAAM;EACL,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,KAAK;AAEf,qDAAqB;EACpB,KAAK,EAAE,WAAW;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EAChB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAC,0CAAsC;EACzD,UAAU,EAAC,0CAAsC;EACjD,MAAM,EAAE,4BAAwB;AAEjC,gDAAgB;EACf,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,sDAAM;IACL,OAAO,EAAE,IAAI;IAEZ,2FAA6B;MAC5B,kBAAkB,EAAE,wBAAwB;MAC5C,UAAU,EAAE,wBAAwB;MACpC,MAAM,EAAE,4BAAwB;;AC3BrC,gCAAiC;EAC7B,OAAO,EAAE,iBAAiB;EAC7B,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,iBAAiB;EACzB,sDAAsB;IACrB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,cAAc;IAC7B;8EACoB;MACnB,OAAO,EAAC,KAAK;MACb,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,QAAQ,EAAE,MAAM;MAChB;;sFACQ;QACP,WAAW,EAAE,SAAS;QACtB;;8FAAQ;UACP,MAAM,EAAE,OAAO;MAGjB;yFAAS;QACR,OAAO,EAAE,IAAI;IAGf,0EAAoB;MACnB,IAAI,EAAE,IAAI;MACV,iFAAS;QACR,OAAO,EAAE,OAAO;IAGlB,0EAAoB;MACnB,KAAK,EAAE,IAAI;MACX,gFAAQ;QACP,OAAO,EAAE,OAAO;IAGlB,2EAAqB;MACpB,UAAU,EAAE,MAAM;EAGpB,wDAAwB;IACvB,eAAe,EAAE,QAAQ;IACzB,KAAK,EAAE,IAAI;IACX,8DAAM;MACL,UAAU,EAAE,OAAO;MACnB,OAAO,EAAE,GAAG;IAGZ,8DAAG;MACF,UAAU,EAAE,MAAM;MAClB,gEAAE;QACD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,IAAI;QACX,eAAe,EAAE,IAAI;QACrB,wJACQ;UACP,KAAK,EAAE,IAAI;UACX,gBAAgB,EAAE,OAAO;MAK1B,wLAAE;QACD,KAAK,EAAE,IAAI;;ACjEhB,kCAAM;EACL,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;AAEtB,2CAAe;EACd,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,MAAM;EAClB,8CAAG;IACF,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,MAAM;EAEf,sDAAW;IACV,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,qBAAqB;EAE9B,iDAAM;IACL,OAAO,EAAE,IAAI;IAGX,4EAAW;MACV,MAAM,EAAE,iBAAiB;MACzB,KAAK,EAAE,IAAI;;ACvBf,0DAAe;EACd,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,OAAO;EACnB,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,aAAa,EAAE,GAAG;AAGlB,kEAAe;EACd,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,MAAM;AAKlB,4EAAQ;EACP,YAAY,EAAE,OAAO;;ACpBzB,uDAA8B;EAC7B,QAAQ,EAAE,QAAQ;EAClB,0EAAmB;IAClB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,kBAAc;IACrB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,iBAAiB;IAEzB,aAAa,EAAE,CAAC;IAChB,qBAAqB,EAAE,CAAC;IACxB,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,0FAAgB;MACf,OAAO,EAAE,IAAI;IAIb,kMAAS;MACR,WAAW,EAAE,SAAS;MACtB,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,CAAC;IAGT,wFAAgB;MACf,GAAG,EAAE,IAAI;MACT,+FAAS;QACR,OAAO,EAAE,OAAO;IAGlB,0FAAkB;MACjB,GAAG,EAAE,GAAG;MACR,iGAAS;QACR,OAAO,EAAE,OAAO;IAGlB,gFAAQ;MACP,KAAK,EAAE,kBAAc;;AC1CxB,8CAAoB;EACnB,OAAO,EAAE,IAAI;EAEZ,8DAAQ;IACP,MAAM,EAAE,4BAAwB;AAIhC,gCAAM;EACF,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,qBAAqB;EACjC,aAAa,EAAE,qBAAqB;EACpC,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,qCAAK;IACD,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,WAAa;IACpB,kBAAkB,EAAE,qBAAqB;IACzC,eAAe,EAAE,qBAAqB;IACtC,cAAc,EAAE,qBAAqB;IACrC,aAAa,EAAE,qBAAqB;IACpC,UAAU,EAAE,qBAAqB;IAC1C,UAAU,EAAE,4BAAwB;IACpC,aAAa,EAAE,4BAAwB;IACvC,iDAAc;MACb,WAAW,EAAE,4BAAwB;IAEtC,gDAAa;MACZ,YAAY,EAAE,4BAAwB;IAE9B,2CAAQ;MACJ,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,CAAC;MACZ,SAAS,EAAE,IAAI;MACf,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,KAAK,EAAE,IAAI;;ACxCvB,gDAAkB;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,+DAAiB;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;AAGtB,oCAAM;EACL,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,GAAG;EAClB,wDAAoB;IACnB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,mBAAe;IACtB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;;ACfnB,2DAAc;EACb,UAAU,EAAE,mBAAe;EAC3B,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,4BAAwB;EACtC,OAAO,EAAE,OAAO;EAChB,MAAM,EAAE,CAAC;EACT,SAAS,EAAE,IAAI;EACf,sEAAa;IACZ,YAAY,EAAE,IAAI;AAGpB,2DAAc;EACb,OAAO,EAAE,IAAI;EAEZ,mFAAgB;IACf,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,IAAI;;ACjBf,oCAAM;EACL,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;AAEtB,oCAAM;EAIL,OAAO,EAAE,IAAI;EAHb,wCAAI;IACH,MAAM,EAAE,qBAAqB;EAK5B,wDAAI;IACH,kBAAkB,EAAE,+BAA2B;IAC/C,UAAU,EAAE,+BAA2B;IACvC,MAAM,EAAE,iBAAiB;EAI5B,6DAAyB;IACxB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC;IAAE,KAAK,EAAE,CAAC;IACjB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;;ACtBb,0DAAc;EACV,MAAM,EAAC,cAAc;EACrB,UAAU,EAAC,KAAK;EAChB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAC,QAAQ;EACjB,oEAAW;IACV,MAAM,EAAC,iBAAiB;IAC3B,OAAO,EAAE,CAAC;IACP,0EAAO;MACN,MAAM,EAAC,cAAc;IAEtB,0FAAqB;MACpB,OAAO,EAAE,IAAI;EAIlB,gEAAM;IACL,aAAa,EAAC,IAAI;IAClB,KAAK,EAAC,IAAI;EAKT,2GAAM;IAIL,OAAO,EAAE,IAAI;IAHb,+GAAI;MACH,MAAM,EAAE,qBAAqB;IAK5B,+HAAI;MACH,kBAAkB,EAAE,+BAA2B;MAC/C,UAAU,EAAE,+BAA2B;MACvC,MAAM,EAAE,iBAAiB;EAM9B,qFAAa;IACT,aAAa,EAAC,IAAI;IAClB,cAAc,EAAC,CAAC;AAKvB,+CAAoB;EAChB,UAAU,EAAC,IAAI;AAGnB,iDAAqB;EACpB,OAAO,EAAE,SAAS;AAGnB,2CAAgB;EACZ,aAAa,EAAC,IAAI;EAClB,KAAK,EAAC,IAAI;EACV,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,IAAI;EACpB,aAAa,EAAE,eAAe;EAE9B,oEAAyB;IACxB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,OAAO;EAGrB,0EAA+B;IAC9B,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,OAAO;EAGrB,iEAAuB;IACtB,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;AAKd,yDAA8B;EAC1B,WAAW,EAAC,CAAC;AAGhB,0DAAM;EACL,WAAW,EAAE,IAAI;AAElB,0DAAM;EACF,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,GAAG;AAGtB,6DAAkC;EAC9B,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,QAAQ;AAEpB,gDAAqB;EACjB,UAAU,EAAE,KAAK;EACjB,MAAM,EAAE,iBAAiB;EACzB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,IAAI;EACjB,QAAQ,EAAE,MAAM;EAChB,SAAS,EAAE,UAAU;EACxB,sDAAQ;IACN,MAAM,EAAC,IAAI;EAGb,2DAAU;IACT,SAAS,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,OAAO;AAInB,+CAAoB;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,KAAK;EACd,cAAc,EAAE,UAAU;EAC1B,KAAK,EAAE,GAAG;EACV,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,IAAI;AAGhB,gDAAqB;EACpB,KAAK,EAAC,IAAI;EACV,sDAAQ;IACP,KAAK,EAAC,IAAI;AAIZ,8CAAmB;EACf,WAAW,EAAE,IAAI;AAGrB,sFAA8B;EAC7B,KAAK,EAAE,GAAG;;AAIZ,uBAAuB;EACtB,MAAM,EAAE,CAAC;EACT,UAAU,EAAC,MAAM;EACjB,aAAa,EAAE,IAAI;EACnB,2BAAG;IACF,OAAO,EAAC,YAAY;;AAItB,MAAM;EACL,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,GAAG;EAClB,gBAAY;IACX,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,IAAI;;AChKZ,kBAAU;EACT,QAAQ,EAAE,QAAQ;EAEjB;kDACuB;IACtB,MAAM,EAAE,OAAO;EAGf,sHACqB;IACpB,MAAM,EAAE,IAAI;EAEb,gDAAQ;IACP,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,6BAAyB;IACtC,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;EAEf,gEAAwB;IACvB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,4BAAwB;EAEtC,mDAAW;IACV,OAAO,EAAE,GAAG;IACZ,gBAAgB,EAAE,OAAO;EAG3B,oDAA6B;IAC5B,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;EAGb,+CAA+B;IAC9B,MAAM,EAAE,uBAAuB;EAK7B,2FAA8B;IAC7B,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,8BAA8B;IAC1C,MAAM,EAAE,iBAAiB;IACzB,kBAAkB,EAAE,0BAA0B;IAC9C,UAAU,EAAE,0BAA0B;EAKxC,oEAAgC;IAC/B,OAAO,EAAE,GAAG;IACZ,UAAU,EAAE,MAAM;EAEnB,wDAAoB;IACnB,kBAAkB,EAAE,4BAA4B;IAChD,UAAU,EAAE,4BAA4B;EAIzC,qDAAa;IACZ,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,eAAe;IAC9B,6DAAQ;MACP,OAAO,EAAE,CAAC;MACV,6BAA6B;MAC7B,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,eAAe,EAAE,IAAI;MACrB,cAAc,EAAE,MAAM;MACtB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,WAAW,EAAE,iBAAiB;MAC9B,qBAAqB,EAAE,WAAW;MAClC,kBAAkB,EAAE,WAAW;MAC/B,aAAa,EAAE,WAAW;MAC1B,kBAAkB,EAAE,UAAU;MAC9B,eAAe,EAAE,UAAU;MAC3B,UAAU,EAAE,UAAU;EAGxB,sDAAc;IACb,UAAU,EAAE,mBAAmB;EAEhC,uDAAiB;IAChB,iBAAiB,EAAE,OAAO;EAI3B,+DAA2B;IAC1B,UAAU,EAAE,IAAI;EAEjB,yDAAqB;IACpB,iBAAiB,EAAE,OAAO;EAK5B,yCAAiB;IAChB,UAAU,EAAE,IAAI;IAChB,mDAAY;MACX,OAAO,EAAE,WAAW;IAErB,+CAAM;MACL,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,WAAW;MACnB,OAAO,EAAE,OAAO;MAChB,UAAU,EAAE,OAAO;MACnB,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,eAAe;MACvB,sDAAS;QACR,UAAU,EAAE,OAAO;QACnB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,eAAe;IAGzB,yHACwB;MACvB,KAAK,EAAE,OAAO;MACd,UAAU,EAAE,OAAO;MACnB,MAAM,EAAE,eAAe;AAK3B,mBAAW;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,eAAe;EACpB,OAAO,EAAE,EAAE;EACX,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,UAAU;EAClB,UAAU,EAAE,MAAM;EAClB,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EACtB,kBAAkB,EAAE,4BAA4B;EAChD,UAAU,EAAE,4BAA4B;EACxC,qBAAqB,EAAE,WAAW;EAClC,kBAAkB,EAAE,WAAW;EAC/B,aAAa,EAAE,WAAW;EAC1B,OAAO,EAAE,GAAG;EACZ,0BAAS;IACR,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,OAAO;IACnB,qBAAqB,EAAE,WAAW;IAClC,kBAAkB,EAAE,WAAW;IAC/B,aAAa,EAAE,WAAW;IAC1B,gCAAQ;MACP,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MACR,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,GAAG;MACZ,UAAU,EAAE,KAAK;MACjB,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE,eAAe;MAC1B,sCAAQ;QACP,KAAK,EAAE,OAAO;EAIjB,qDAAoC;IACnC,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,IAAI;IACX,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,UAAU;IACtB,gEAAa;MACZ,YAAY,EAAE,MAAM;IAErB,4DAAS;MACR,OAAO,EAAE,IAAI;IAEd,4DAAS;MACR,UAAU,EAAE,MAAM;AAIrB,6DAEc;EACb,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,sBAAsB,EAAE,OAAO;AAEhC,yEAC+C;EAC9C,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;AAEtB,gBAAQ;EACP,MAAM,EAAE,4BAAwB;EAChC,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EACtB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;EAClB,qBAAO;IACN,gBAAgB,EAAE,OAAO;EAE1B,sDACa;IACZ,MAAM,EAAE,kBAAkB;EAE3B,sBAAQ;IACP,kBAAkB,EAAE,mCAAmC;IACvD,UAAU,EAAE,mCAAmC;EAEhD,gCAAkB;IACjB,qBAAqB,EAAE,WAAW;IAClC,kBAAkB,EAAE,WAAW;IAC/B,aAAa,EAAE,WAAW;EAE3B,oBAAI;IACH,cAAc,EAAE,QAAQ;IACxB,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,MAAM;EAEjB,wBAAQ;IACP,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,eAAe;IAC3B,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,oBAAoB;IAC5B,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,mBAAmB,EAAE,eAAe;IACpC,kBAAkB,EAAE,eAAe;IACnC,UAAU,EAAE,eAAe;IAC3B,mCAAa;MACZ,OAAO,EAAE,IAAI;IAEd,8BAAQ;MACP,OAAO,EAAE,eAAe;EAG1B,uBAAS;IACR,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;EAEZ,wCAA0B;IACzB,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;AAIT,qCAAkB;EACjB,MAAM,EAAE,OAAO;EACf,QAAQ,EAAE,MAAM;EAChB,gDAAW;IACV,UAAU,EAAE,wBAAwB;IACpC,qBAAqB,EAAE,GAAG;IAC1B,kBAAkB,EAAE,GAAG;IACvB,aAAa,EAAE,GAAG;AAGpB;oCACiB;EAChB,OAAO,EAAE,OAAO;AAEjB,0DAAuC;EACtC,UAAU,EAAE,MAAM;AAEnB,oCAAiB;EAChB,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,OAAO;AAEhB,2BAAQ;EACP,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;AAEf,kCAAe;EACd,KAAK,EAAE,OAAO;AAEf,2BAAQ;EACP,KAAK,EAAE,qBAAqB;AAE7B,2BAAU;EACT,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,KAAK;;ACjUnB,2CAAkB;EACjB,kBAAkB,EAAE,IAAI;EACxB,kBAAkB,EAAE,cAAc;EAClC,eAAe,EAAE,cAAc;EAC/B,UAAU,EAAE,cAAc;EAC1B,gBAAgB,EAAE,kBAAc;EAChC,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,iBAAiB;EACxB,OAAO,EAAE,CAAC;EACV,iDAAQ;IACP,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;EAEd,iDAAQ;IACP,gBAAgB,EAAE,mBAAe;EAElC,iEAAwB;IACvB,kBAAkB,EAAE,IAAI;IACxB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,qBAAqB,EAAE,GAAG;IAC1B,gBAAgB,EAAE,OAAO;EAE1B,iEAAwB;IACvB,kBAAkB,EAAE,IAAI;IACxB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,OAAO;EAE1B,6DAAoB;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,OAAO;EAE1B,sDAAa;IACZ,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,CAAC;IACT,gBAAgB,EAAE,OAAO;EAE1B,6DAAoB;IACnB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,WAAW;EAExB,sDAAa;IACZ,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,WAAW;IAClB,UAAU,EAAE,WAAW;EAExB,wHACkB;IACjB,UAAU,EAAE,WAAW;EAExB,wDAAe;IACd,OAAO,EAAE,IAAI;AAGf,4CAAmB;EAClB,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,GAAG;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;AAET,6CAAoB;EACnB,KAAK,EAAE,kBAAc;EACrB,KAAK,EAAE,KAAK;EACZ,kBAAkB,EAAE,iBAAiB;EACrC,eAAe,EAAE,iBAAiB;EAClC,cAAc,EAAE,iBAAiB;EACjC,aAAa,EAAE,iBAAiB;EAChC,UAAU,EAAE,iBAAiB;EAC7B,kDAAK;IACJ,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;EAElB,mDAAQ;IACP,KAAK,EAAE,GAAG;;ACnFL,6CAAG;EACC,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,cAAc;EACtB,UAAU,EAAE,IAAI;EAEZ,uEAAiB;IACb,KAAK,EAAE,KAAK;EAEhB,mEAAa;IACT,YAAY,EAAE,IAAI;EAG1B,uDAAY;IACR,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,eAAe;IACvB,6EAAsB;MAClB,KAAK,EAAE,IAAI;;ACjB9B,mCAAS;EACR,kBAAkB,EAAC,oCAAgC;EACnD,UAAU,EAAC,oCAAgC;EAC3C,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,EAAE;EACX,4CAAS;IACR,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,aAAa;IAC9B,kDAAM;MACL,KAAK,EAAE,GAAG;MACV,qDAAG;QACF,MAAM,EAAE,YAAY;MAErB,yDAAO;QACN,OAAO,EAAE,IAAI;QACb,8EAAqB;UACpB,KAAK,EAAE,GAAG;UACV,MAAM,EAAE,IAAI;QAEb,mFAA0B;UACzB,KAAK,EAAE,GAAG;UACV,sGAAmB;YAClB,MAAM,EAAE,IAAI;EAOhB,iEAAe;IACd,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,GAAG;EAGlB,yEAAe;IACd,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,MAAM;EAKlB,mFAAQ;IACP,YAAY,EAAE,OAAO;;ACjD1B,gDAAuB;EACtB,OAAO,EAAE,IAAI;AAEd,iCAAQ;EACP,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,MAAM;EACrB,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,mBAAmB,EAAE,IAAI;EACzB,gBAAgB,EAAE,IAAI;EACtB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EACjB,uCAAM;IACL,UAAU,EAAE,kBAAc;IAC1B,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,mBAAmB;IAC/B,MAAM,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,wFAAwF;IACxG,6CAAQ;MACP,UAAU,EAAE,OAAO;MACnB,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,MAAM;MACd,IAAI,EAAE,MAAM;MACZ,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,MAAM;MACX,KAAK,EAAE,MAAM;MACb,kBAAkB,EAAE,oBAAoB;MACxC,eAAe,EAAE,oBAAoB;MACrC,cAAc,EAAE,oBAAoB;MACpC,aAAa,EAAE,oBAAoB;MACnC,UAAU,EAAE,oBAAoB;EAGlC,uCAAM;IACL,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,+CAAQ;MACP,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;IAGf,uDAAQ;MACP,UAAU,EAAE,OAAO;MACnB,6DAAQ;QACP,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO;EAKvB,uCAAQ;IACP,aAAa,EAAE,MAAM;IACrB,6CAAM;MACL,aAAa,EAAE,IAAI;MACnB,mDAAQ;QACP,aAAa,EAAE,IAAI;AAKvB;qCACY;EACX,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,MAAM;AAEhB,oCAAW;EACV,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;AAEnB,qCAAY;EACX,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,GAAG;;AClFlB,yCAAS;EACR,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,4BAAwB;EAChC,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI;;ACHjB,+BAAM;EACL,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;EAEf,wDAAyB;IACxB,KAAK,EAAE,iBAAiB;EAGzB,4CAAa;IACZ,KAAK,EAAE,EAAE;AAIX,gDAAuB;EACtB,OAAO,EAAE,IAAI;AAEd,iCAAQ;EACP,MAAM,EAAE,4BAAwB;EAChC,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,MAAM;EACtB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,OAAO;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,qBAAqB;EACjC,iFACQ;IACP,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,kEACS;EAEtB,wCAAS;IACR,UAAU,EAAE,kBAAc;IAC1B,SAAS,EAAE,gCAAgC;EAE5C,uCAAQ;IACP,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,4BAAwB;IAChC,SAAS,EAAE,uBAAuB;EAGlC,+CAAS;IACR,SAAS,EAAE,gCAAgC;AAI9C,iDAAwB;EACvB,UAAU,EAAE,uBAAgB;EAC5B,wDAAS;IACR,UAAU,EAAE,yBAAoB;IAChC,SAAS,EAAE,mCAAmC;EAE/C,uDAAQ;IACP,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,0BAA0B;EAGrC,+DAAS;IACR,UAAU,EAAE,yBAAoB;IAChC,SAAS,EAAE,mCAAmC;;ACtEjD,sCAAS;EACR,kBAAkB,EAAC,mCAA+B;EAClD,UAAU,EAAC,mCAA+B;EAC1C,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,aAAa;EAE9B;;;;;;;+CAOO;IACN,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX;;;;;;;oDAAG;MACF,MAAM,EAAE,SAAS;EAGnB;;wDAEgB;IACf,KAAK,EAAE,GAAG;EAEX,kDAAY;IACX,KAAK,EAAE,IAAI;EAGX,6DAAW;IACV,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,qBAAqB;EAE9B,wDAAM;IACL,OAAO,EAAE,IAAI;IAGX,mFAAW;MACV,MAAM,EAAE,iBAAiB;MACzB,KAAK,EAAE,IAAI;EAMhB,sDAAgB;IACf,WAAW,EAAE,IAAI;EAElB,6CAAO;IACN,KAAK,EAAE,IAAI",
|
4 |
Â
"sources": ["../scss/global.scss","../scss/panels/expanded.scss","../scss/sections/expanded.scss","../scss/sections/hover.scss","../scss/controls/checkbox.scss","../scss/controls/code.scss","../scss/controls/color.scss","../scss/controls/multicolor.scss","../scss/controls/color-palette.scss","../scss/controls/date.scss","../scss/controls/dashicons.scss","../scss/controls/dimension.scss","../scss/controls/number.scss","../scss/controls/palette.scss","../scss/controls/radio.scss","../scss/controls/radio-buttonset.scss","../scss/controls/radio-image.scss","../scss/controls/repeater.scss","../scss/controls/select.scss","../scss/controls/slider.scss","../scss/controls/sortable.scss","../scss/controls/spacing.scss","../scss/controls/switch.scss","../scss/controls/generic.scss","../scss/controls/toggle.scss","../scss/controls/typography.scss"],
|
5 |
Â
"names": [],
|
6 |
Â
"file": "customizer.css"
|
assets/css/customizer.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#customize-controls #customize-info .accordion-section-title{border-bottom:1px solid rgba(0,0,0,.3)}#customize-controls #customize-theme-controls .accordion-section>.accordion-section-title{border-bottom:1px solid rgba(0,0,0,.1)}#customize-controls #customize-theme-controls .accordion-section>.accordion-section-title:after{border-color:transparent!important}.hint,[data-hint]{position:relative;display:inline-block}.hint:after,.hint:before,[data-hint]:after,[data-hint]:before{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;opacity:0;z-index:998;pointer-events:none;transition:.3s ease;transition-delay:250ms}.hint:focus:after,.hint:focus:before,.hint:hover:after,.hint:hover:before,[data-hint]:focus:after,[data-hint]:focus:before,[data-hint]:hover:after,[data-hint]:hover:before{visibility:visible;opacity:1}.hint:hover:after,.hint:hover:before,[data-hint]:hover:after,[data-hint]:hover:before{transition-delay:0}.hint:before,[data-hint]:before{content:'';position:absolute;background:0 0;border:none;z-index:999;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #333;left:-5px;top:5px}.hint:after,[data-hint]:after{content:attr(data-hint);background:#333;color:#fff;padding:5px 10px;font-size:12px;line-height:14px;height:auto;margin-bottom:-14px;width:170px;max-width:170px;display:block;white-space:normal;text-align:right;position:relative;top:-22px;left:-195px}li.customize-control{position:relative}li.customize-control a.tooltip.hint--left{display:block;position:absolute;top:5px;right:-10px;border-radius:50%;color:#999;border:none;line-height:8px;width:20px;height:20px;z-index:10}.rtl li.customize-control a.tooltip.hint--left{right:auto;left:0}.rtl .hint:before,.rtl [data-hint]:before{left:20px;border-left:none;border-right:5px solid #333}.rtl .hint:after,.rtl [data-hint]:after{left:195px}customize-control-upload .current .container{border:1px solid rgba(0,0,0,.05)}#customize-controls .description{font-style:normal;font-weight:300;font-size:.9em}input{font-size:16px}input[type=text]{border:1px solid rgba(0,0,0,.1);background-image:none;background-position:0 0;background-repeat:repeat;border-radius:3px;padding:.5em}.wp-full-overlay.expanded #customize-footer-actions .kirki-footer-thanks{position:fixed;bottom:8px;left:150px;padding:0;width:90px;height:25px;background-image:url(../images/kirki-bottom.png);background-repeat:no-repeat;background-position:center center}.kirki-reset-section{position:absolute;top:10px;right:10px;background:#BDBDBD;opacity:.5;color:#fff;font-size:.8rem;border-radius:3px;padding:0 5px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;font-weight:700}.kirki-reset-section .dashicons{font-size:.8rem;width:.8rem;height:.8rem;line-height:.8rem;vertical-align:baseline}.kirki-reset-section:active,.kirki-reset-section:hover{background:#F44336;color:#fff;font-weight:700;opacity:1}.kirki-reset-section:focus{opacity:1;-webkit-box-shadow:0 0 0 1px #F44336,0 0 2px 1px rgba(200,50,30,.8);box-shadow:0 0 0 1px #F44336,0 0 2px 1px rgba(200,50,30,.8)}#customize-theme-controls .control-panel.control-panel-kirki-expanded>ul.control-panel-content{position:relative;left:0;display:block!important;margin-top:0!important}#customize-theme-controls .control-panel.control-panel-kirki-expanded>ul.control-panel-content .accordion-section-title{margin-left:0}#customize-theme-controls .control-panel.control-panel-kirki-expanded>ul.control-panel-content>li.customize-info{margin-bottom:0;border-top:none}#customize-theme-controls .control-panel.control-panel-kirki-expanded>ul.control-panel-content>li.customize-info .accordion-section-title{border-bottom:none!important}#customize-theme-controls .control-section.control-section-kirki-expanded>ul.accordion-section-content{position:relative;left:0;display:block;margin-top:0!important}#customize-theme-controls .control-section.control-section-kirki-hover:active:not(.open)>ul.accordion-section-content,#customize-theme-controls .control-section.control-section-kirki-hover:focus:not(.open)>ul.accordion-section-content,#customize-theme-controls .control-section.control-section-kirki-hover:hover:not(.open)>ul.accordion-section-content{position:fixed;left:300px;width:300px;background:#eee;display:block;height:100%;max-height:100vh;overflow-y:scroll}#customize-theme-controls .control-section.control-section-kirki-hover:active:not(.open) .customize-section-title,#customize-theme-controls .control-section.control-section-kirki-hover:focus:not(.open) .customize-section-title,#customize-theme-controls .control-section.control-section-kirki-hover:hover:not(.open) .customize-section-title{display:none}.customize-control-kirki-checkbox input[type=checkbox],.customize-control-multicheck input[type=checkbox],.customize-control-repeater input[type=checkbox]{position:relative;margin:0 1rem 0 0;cursor:pointer;margin-bottom:5px;width:22px;height:22px;border-radius:3px;-webkit-border-radius:3px}.customize-control-kirki-checkbox input[type=checkbox]:before,.customize-control-multicheck input[type=checkbox]:before,.customize-control-repeater input[type=checkbox]:before{content:"";position:absolute;left:0;z-index:1;width:100%;height:100%;border:none}.customize-control-kirki-checkbox input[type=checkbox]:after,.customize-control-multicheck input[type=checkbox]:after,.customize-control-repeater input[type=checkbox]:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:#f2f2f2;cursor:pointer;border-radius:3px;-webkit-border-radius:3px}.customize-control-kirki-checkbox input[type=checkbox]:checked:before,.customize-control-multicheck input[type=checkbox]:checked:before,.customize-control-repeater input[type=checkbox]:checked:before{content:"\f147";font-family:dashicons;font-size:25px;left:0;top:2px}.customize-control-kirki-checkbox input[type=checkbox]:checked:after,.customize-control-multicheck input[type=checkbox]:checked:after,.customize-control-repeater input[type=checkbox]:checked:after{background:#fff}.CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected,.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.customize-control-color-alpha .wp-picker-container{width:100%}.customize-control-color-alpha .wp-picker-container a.wp-color-result{width:auto;display:block;border:none;padding-left:40px}.customize-control-multicolor .multicolor-group-wrapper .multicolor-single-color-wrapper,.customize-control-multicolor .multicolor-group-wrapper .wp-picker-container{width:100%}.customize-control-color-alpha .wp-picker-container a.wp-color-result:after{background:rgba(0,0,0,.25);color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}.customize-control-color-alpha .wp-picker-container a.wp-color-result:focus:after,.customize-control-color-alpha .wp-picker-container a.wp-color-result:hover:after{color:#fff}.customize-control-multicolor .multicolor-group-wrapper{display:flex}.customize-control-multicolor .multicolor-group-wrapper .multicolor-single-color-wrapper label{display:block;text-align:center;padding:3px}.customize-control-multicolor .multicolor-group-wrapper .wp-picker-container a.wp-color-result{width:100%;height:30px;padding-left:0;border-radius:0;border:none;margin-right:0}.customize-control-multicolor .multicolor-group-wrapper .wp-picker-container a.wp-color-result>span{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.customize-control-multicolor .multicolor-group-wrapper .wp-picker-container a.wp-color-result:after{display:none}.customize-control-color-palette label{position:relative;display:inline-block;padding:2px 0}.customize-control-color-palette .color-palette-color{color:transparent;display:block;width:42px;height:42px;overflow:hidden;border-radius:50%;-webkit-box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,.22);box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,.22);border:1px solid rgba(0,0,0,.2)}.customize-control-color-palette .colors-wrapper{max-height:300px;overflow-y:auto;padding:10px}.customize-control-color-palette .colors-wrapper input{display:none}.customize-control-color-palette .colors-wrapper input:checked+label .color-palette-color{-webkit-box-shadow:1px 1px 10px 1px #333;box-shadow:1px 1px 10px 1px #333;border:1px solid rgba(0,0,0,.3)}.wp-customizer div.ui-datepicker{z-index:500001!important;width:255px;background:#fff;border:1px solid #dedede}.wp-customizer div.ui-datepicker .ui-datepicker-header{padding:10px;background:#e5e5e5;border-bottom:1px solid #fff}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev{display:block;position:absolute;width:1em;overflow:hidden}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next:after,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:after,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before{font-family:dashicons}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next:after:hover,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before:hover,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:after:hover,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before:hover{cursor:pointer}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next .ui-icon,.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev .ui-icon{display:none}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev{left:10px}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before{content:"\f341"}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next{right:10px}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-next:after{content:"\f345"}.wp-customizer div.ui-datepicker .ui-datepicker-header .ui-datepicker-title{text-align:center}.wp-customizer div.ui-datepicker .ui-datepicker-calendar{border-collapse:collapse;width:100%}.wp-customizer div.ui-datepicker .ui-datepicker-calendar thead{background:#e5e5e5;padding:5px}.wp-customizer div.ui-datepicker .ui-datepicker-calendar tr td{text-align:center}.wp-customizer div.ui-datepicker .ui-datepicker-calendar tr td a{display:block;padding:5px;color:#333;text-decoration:none}.wp-customizer div.ui-datepicker .ui-datepicker-calendar tr td a.ui-state-active,.wp-customizer div.ui-datepicker .ui-datepicker-calendar tr td a:hover{color:#fff;background-color:#0073aa}.wp-customizer div.ui-datepicker .ui-datepicker-calendar tr td.ui-state-disabled .ui-state-default a,.wp-customizer div.ui-datepicker .ui-datepicker-calendar tr td.ui-state-disabled a{color:#999}.customize-control-dashicons label{position:relative;display:inline-block}.customize-control-dashicons .icons-wrapper{max-height:300px;overflow-y:scroll}.customize-control-dashicons .icons-wrapper h4{font-weight:300;margin:.7em 0}.customize-control-dashicons .icons-wrapper .dashicons{padding:3px;font-size:25px;width:25px;height:25px;border:1px solid transparent}.customize-control-dashicons .icons-wrapper input{display:none}.customize-control-dashicons .icons-wrapper input:checked+label .dashicons{border:1px solid #3498DB;color:#000}.customize-control-dimension .input-wrapper .invalid-value{display:none;background:#D32F2F;font-size:.85em;color:#fff;float:left;padding:2px 0;border-radius:3px}.customize-control-dimension .input-wrapper.invalid .invalid-value{display:block;width:98%;text-align:center}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button .ui-button-text,.customize-control-palette input[type=radio]{display:none}.customize-control-dimension .input-wrapper.invalid input[type=text]:focus{border-color:#D32F2F}.customize-control-number .ui-spinner.ui-widget-content{position:relative}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button{position:absolute;right:0;color:rgba(0,0,0,.3);border:none;padding:0 5px;width:20px;height:calc(50% + .5em);border-radius:0;-webkit-border-radius:0;box-shadow:none;-webkit-box-shadow:none;background:0 0;margin:0}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button.ui-spinner-down:before,.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button.ui-spinner-up:before{font-family:dashicons;position:absolute;left:0}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button.ui-spinner-up{top:-50%}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button.ui-spinner-up:before{content:"\f343"}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button.ui-spinner-down{top:50%}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button.ui-spinner-down:before{content:"\f347"}.customize-control-number .ui-spinner.ui-widget-content .ui-spinner-button:hover{color:rgba(0,0,0,.7)}.customize-control-palette input[type=radio]:checked+label{border:3px solid rgba(0,0,0,.4)}.customize-control-palette label{background:0 0;padding:0;border-top:3px solid transparent;border-bottom:3px solid transparent;margin-bottom:5px;display:flex}.customize-control-palette label span{padding:10px 0;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(0,0,0,.1)}.customize-control-palette label span:first-child{border-left:1px solid rgba(0,0,0,.1)}.customize-control-palette label span:last-child{border-right:1px solid rgba(0,0,0,.1)}.customize-control-palette label span:hover{padding:10px;flex-grow:3;min-width:60px;font-size:10px;line-height:10px;color:#000}.customize-control-kirki-radio input[type=radio]{width:18px;height:18px}.customize-control-kirki-radio input[type=radio]:checked:before{width:10px;height:10px;margin:3px}.customize-control-kirki-radio label{display:list-item;margin-bottom:7px}.customize-control-kirki-radio label .option-description{display:block;color:rgba(0,0,0,.35);font-size:.9em;padding-left:25px}.customize-control-radio-buttonset .buttonset .switch-label{background:rgba(0,0,0,.05);color:#555;border-right:1px solid rgba(0,0,0,.2);padding:4px 7px;margin:0;font-size:12px}.customize-control-radio-buttonset .buttonset .switch-label:last-child{border-right:none}.customize-control-radio-buttonset .buttonset .switch-input{display:none}.customize-control-radio-buttonset .buttonset .switch-input:checked+.switch-label{background-color:#3498DB;color:#fff}.customize-control-radio-image label{position:relative;display:inline-block}.customize-control-radio-image input,.customize-control-repeater .repeater-fields .repeater-row .repeater-field.repeater-field-radio-image input{display:none}.customize-control-radio-image input img{border:1px solid transparent}.customize-control-radio-image input:checked+label img{-webkit-box-shadow:0 0 5px 2px rgba(0,0,0,.25);box-shadow:0 0 5px 2px rgba(0,0,0,.25);border:1px solid #3498DB}.customize-control-radio-image input+label .image-clickable{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.customize-control-repeater .repeater-fields .repeater-row{padding:.5rem;border:1px solid #999;margin-top:.5rem;background:#eee;position:relative;padding-top:48px}.customize-control-repeater .repeater-fields .repeater-row label{margin-bottom:12px;clear:both}.customize-control-repeater .repeater-fields .repeater-row .repeater-field.repeater-field-radio-image input img{border:1px solid transparent}.customize-control-repeater .repeater-fields .repeater-row .repeater-field.repeater-field-radio-image input:checked+label img{-webkit-box-shadow:0 0 5px 2px rgba(0,0,0,.25);box-shadow:0 0 5px 2px rgba(0,0,0,.25);border:1px solid #3498DB}.customize-control-repeater button.repeater-add{margin-top:1rem}.customize-control-repeater .repeater-field{margin-bottom:12px;width:100%;clear:both;padding-bottom:12px;border-bottom:1px dotted #CCC}.customize-control-repeater .repeater-row .repeater-field:last-child{border-bottom:none;padding-bottom:0}.customize-control-repeater .repeater-field-select select{margin-left:0}.customize-control-repeater .repeater-field-checkbox label{line-height:28px}.customize-control-repeater .repeater-field-checkbox input{line-height:28px;margin-right:5px}.customize-control-repeater .repeater-field-textarea textarea{width:100%;resize:vertical}.customize-control-repeater .repeater-row-header{background:#fff;position:absolute;top:0;left:0;right:0;height:36px;color:#555;border-bottom:1px solid #999;line-height:36px;font-size:15px}.customize-control-repeater .repeater-row-number{border-right:1px solid #ddd;display:inline-block;width:35px;text-align:center}.customize-control-repeater .repeater-row-minimize,.customize-control-repeater .repeater-row-move,.customize-control-repeater .repeater-row-remove{display:inline-block;float:right;border-left:1px solid #ddd;width:35px;height:36px;text-align:center}.customize-control-repeater .repeater-row-minimize:hover,.customize-control-repeater .repeater-row-move:hover,.customize-control-repeater .repeater-row-remove:hover{background:#ddd;cursor:pointer}.customize-control-repeater .repeater-row-move:hover{cursor:move}.customize-control-repeater .repeater-minimize,.customize-control-repeater .repeater-move,.customize-control-repeater .repeater-remove{line-height:36px}.customize-control-repeater .repeater-row.minimized{padding:0;height:36px;overflow:hidden}.customize-control-repeater .remove-button,.customize-control-repeater .upload-button{width:48%}.kirki-image-attachment{margin:0;text-align:center;margin-bottom:25px}.kirki-image-attachment img{display:inline-block}.limit{padding:3px;border-radius:3px}.limit.highlight{background:#D32F2F;color:#fff}.selectize-control{position:relative}.selectize-control.single .selectize-input,.selectize-control.single .selectize-input input{cursor:pointer}.selectize-control.single .selectize-input.input-active,.selectize-control.single .selectize-input.input-active input{cursor:text}.selectize-control.single .selectize-input:after{content:"\f347";display:block;position:absolute;top:0;right:0;margin-top:0;width:12px;height:36px;font-family:dashicons;border-left:1px solid rgba(0,0,0,.06);line-height:36px;padding:0 3px}.selectize-control.single .selectize-input.dropdown-active:after{content:"\f343";border-left:1px solid rgba(0,0,0,.1)}.selectize-control.single .selectize-input.disabled{opacity:.5;background-color:#fafafa}.selectize-control.single.rtl .selectize-input:after{left:15px;right:auto}.selectize-control.rtl .selectize-input>input{margin:0 4px 0 -2px!important}.selectize-control .plugin-drag_drop.multi>.selectize-input>div.ui-sortable-placeholder{visibility:visible!important;background:#f2f2f2!important;background:rgba(0,0,0,.06)!important;border:0!important;-webkit-box-shadow:inset 0 0 12px 4px #fff;box-shadow:inset 0 0 12px 4px #fff}.selectize-control .plugin-drag_drop .ui-sortable-placeholder::after{content:'!';visibility:hidden}.selectize-control .plugin-drag_drop .ui-sortable-helper{-webkit-box-shadow:0 2px 5px rgba(0,0,0,.2);box-shadow:0 2px 5px rgba(0,0,0,.2)}.selectize-control .plugin-remove_button [data-value]{position:relative;padding-right:24px!important}.selectize-control .plugin-remove_button [data-value] .remove{z-index:1;position:absolute;top:0;right:0;bottom:0;width:17px;text-align:center;font-weight:700;font-size:12px;color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:2px 0 0;border-left:1px solid #d0d0d0;-webkit-border-radius:0 2px 2px 0;-moz-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.selectize-control .plugin-remove_button .remove:hover{background:rgba(0,0,0,.05)}.selectize-control .plugin-remove_button.active .remove{border-left-color:#cacaca}.selectize-control .plugin .disabled [data-value] .remove:hover{background:0 0}.selectize-control .plugin .disabled [data-value] .remove{border-left-color:#fff}.selectize-control.multi .selectize-input{min-height:36px}.selectize-control.multi .selectize-input.has-items{padding:6px 8px 3px}.selectize-control.multi .selectize-input>div{cursor:pointer;margin:0 3px 3px 0;padding:2px 6px;background:#f2f2f2;color:#303030;border:0 solid #d0d0d0}.selectize-control.multi .selectize-input>div.active{background:#e8e8e8;color:#303030;border:0 solid #cacaca}.selectize-control.multi .selectize-input.disabled>div,.selectize-control.multi .selectize-input.disabled>div.active{color:#7d7d7d;background:#fff;border:0 solid #fff}.selectize-dropdown{position:relative;top:-4px!important;border:1px solid #d0d0d0;background:#fff;margin:-1px 0 0;border-top:0 none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1);-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;z-index:999}.selectize-dropdown-header{position:relative;padding:5px 8px;border-bottom:1px solid #d0d0d0;background:#f8f8f8;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.selectize-dropdown-header-close{position:absolute;right:8px;top:50%;color:#303030;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.selectize-dropdown-header-close:hover{color:#000}.selectize-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.selectize-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.selectize-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.selectize-dropdown,.selectize-input,.selectize-input input{color:#303030;font-family:inherit;font-size:13px;line-height:18px;-webkit-font-smoothing:inherit}.selectize-control.single .selectize-input.input-active,.selectize-input{background:#fff;cursor:text;display:inline-block}.selectize-input{border:1px solid rgba(0,0,0,.1);padding:8px;display:inline-block;width:100%;overflow:hidden;position:relative;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.selectize-input.full{background-color:#fff}.selectize-input.disabled,.selectize-input.disabled *{cursor:default!important}.selectize-input.focus{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.15)}.selectize-input.dropdown-active{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.selectize-input>*{vertical-align:baseline;display:-moz-inline-stack;display:inline-block;zoom:1}.selectize-input>input{display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0 2px 0 0!important;text-indent:0!important;border:0!important;background:0 0!important;line-height:inherit!important;-webkit-user-select:auto!important;-webkit-box-shadow:none!important;box-shadow:none!important}.selectize-input>input::-ms-clear{display:none}.selectize-input>input:focus{outline:0!important}.selectize-input::after{content:' ';display:block;clear:left}.selectize-input.dropdown-active::before{content:' ';display:block;position:absolute;background:#f0f0f0;height:1px;bottom:0;left:0;right:0}.selectize-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.selectize-dropdown [data-selectable] .highlight{background:rgba(125,168,208,.2);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.selectize-dropdown .optgroup-header,.selectize-dropdown [data-selectable]{padding:5px 8px}.selectize-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.selectize-dropdown .optgroup-header{color:#303030;background:#fff;cursor:default}.selectize-dropdown .active{background-color:#f5fafd;color:#495c68}.selectize-dropdown .active.create{color:#495c68}.selectize-dropdown .create{color:rgba(48,48,48,.5)}.selectize-dropdown-content{overflow-y:auto;overflow-x:hidden;max-height:200px}.customize-control-slider input[type=range]{-webkit-appearance:none;-webkit-transition:background .3s;-moz-transition:background .3s;transition:background .3s;background-color:rgba(0,0,0,.1);height:5px;width:calc(100% - 70px);padding:0}.customize-control-slider input[type=range]:focus{box-shadow:none;outline:0}.customize-control-slider input[type=range]:hover{background-color:rgba(0,0,0,.25)}.customize-control-slider input[type=range]::-webkit-slider-thumb{-webkit-border-radius:50%;-webkit-appearance:none;width:15px;height:15px;border:none;border-radius:50%;background-color:#3498D9}.customize-control-slider input[type=range]::-moz-range-thumb{width:15px;height:15px;border:none;border-radius:50%;background-color:#3498D9}.customize-control-slider input[type=range]::-ms-thumb{width:15px;height:15px;border-radius:50%;border:0;background-color:#3498D9}.customize-control-slider input[type=range]::-moz-range-track{border:inherit;background:0 0}.customize-control-slider input[type=range]::-ms-track{border:inherit;color:transparent;background:0 0}.customize-control-slider input[type=range]::-ms-fill-lower,.customize-control-slider input[type=range]::-ms-fill-upper{background:0 0}.customize-control-slider input[type=range]::-ms-tooltip{display:none}.customize-control-slider .kirki_range_value{display:inline-block;font-size:14px;padding:0 5px;font-weight:400;position:relative;top:2px}.customize-control-slider .kirki-slider-reset{color:rgba(0,0,0,.2);float:right;-webkit-transition:color .5s ease-in;-moz-transition:color .5s ease-in;-ms-transition:color .5s ease-in;-o-transition:color .5s ease-in;transition:color .5s ease-in}.customize-control-slider .kirki-slider-reset span{font-size:16px;line-height:22px}.customize-control-slider .kirki-slider-reset:hover{color:red}.customize-control-sortable ul.ui-sortable li{padding:5px 10px;border:1px solid #333;background:#fff}.customize-control-sortable ul.ui-sortable li .dashicons.dashicons-menu{float:right}.customize-control-sortable ul.ui-sortable li .dashicons.visibility{margin-right:10px}.customize-control-sortable ul.ui-sortable li.invisible{color:#aaa;border:1px dashed #aaa}.customize-control-sortable ul.ui-sortable li.invisible .dashicons.visibility{color:#aaa}.customize-control-spacing .wrapper{-webkit-box-shadow:inset 0 0 5px 2px rgba(0,0,0,.1);box-shadow:inset 0 0 5px 2px rgba(0,0,0,.1);width:96%;padding:3%}.customize-control-spacing .wrapper .control{display:flex;flex-wrap:wrap;justify-content:space-between}.customize-control-spacing .wrapper .control>div{width:48%}.customize-control-spacing .wrapper .control>div h5{margin:10px 0 7px}.customize-control-spacing .wrapper .control>div .inner{display:flex}.customize-control-spacing .wrapper .control>div .inner input[type=number]{width:50%;height:36px}.customize-control-spacing .wrapper .control>div .inner .selectize-control.single{width:50%}.customize-control-spacing .wrapper .control>div .inner .selectize-control.single>.selectize-input{height:36px}.customize-control-spacing .wrapper .input-wrapper .invalid-value{display:none;background:#D32F2F;font-size:.85em;color:#fff;float:left;padding:2px 0;border-radius:3px}.customize-control-spacing .wrapper .input-wrapper.invalid .invalid-value{display:block;width:98%;text-align:center}.customize-control-spacing .wrapper .input-wrapper.invalid input[type=text]:focus{border-color:#D32F2F}.customize-control-switch input[type=checkbox]{display:none}.customize-control-switch .switch{border:none;margin-bottom:1.5rem;outline:0;padding:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.customize-control-switch .switch label{background:rgba(0,0,0,.2);color:transparent;cursor:pointer;display:block;margin-bottom:1rem;position:relative;transition:left .15s ease-out;height:2rem;width:4rem;font-family:Monaco,"Lucida Sans Typewriter","Lucida Typewriter","Courier New",Courier,monospace}.customize-control-switch .switch label:after{background:#FFF;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;width:1.5rem;-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-ms-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out}.customize-control-switch .switch input{left:10px;opacity:0;padding:0;position:absolute;top:9px}.customize-control-switch .switch input+label{margin-left:0;margin-right:0}.customize-control-switch .switch input:checked+label{background:#3498DB}.customize-control-switch .switch input:checked+label:after{left:2.25rem;background:#fff}.customize-control-switch .switch.round{border-radius:1000px}.customize-control-switch .switch.round label,.customize-control-switch .switch.round label:after{border-radius:2rem}.customize-control-switch .switch-off,.customize-control-switch .switch-on{line-height:32px;font-weight:700;padding:0 10px}.customize-control-switch .switch-on{color:#fff;padding-right:5px}.customize-control-switch .switch-off{color:#777;padding-left:5px}.customize-control-kirki-generic textarea{width:100%;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:none;box-shadow:none}.customize-control-toggle label{display:flex;flex-wrap:wrap}.customize-control-toggle label .customize-control-title{width:calc(100% - 55px)}.customize-control-toggle label .description{order:99}.customize-control-toggle input[type=checkbox]{display:none}.customize-control-toggle .switch{border:1px solid rgba(0,0,0,.1);display:inline-block;width:35px;height:12px;border-radius:8px;background:#ccc;vertical-align:middle;position:relative;cursor:pointer;user-select:none;transition:background 350ms ease}.customize-control-toggle .switch:after,.customize-control-toggle .switch:before{content:"";display:block;width:20px;height:20px;border-radius:50%;position:absolute;top:50%;left:-3px;transition:all 350ms cubic-bezier(0,.95,.38,.98),background 150ms ease}.customize-control-toggle .switch:before{background:rgba(0,0,0,.2);transform:translate3d(0,-50%,0) scale(0)}.customize-control-toggle .switch:after{background:#999;border:1px solid rgba(0,0,0,.1);transform:translate3d(0,-50%,0)}.customize-control-toggle .switch:active:before{transform:translate3d(0,-50%,0) scale(3)}.customize-control-toggle input:checked+.switch{background:rgba(52,152,222,.3)}.customize-control-toggle input:checked+.switch:before{background:rgba(52,152,222,.075);transform:translate3d(100%,-50%,0) scale(1)}.customize-control-toggle input:checked+.switch:after{background:#3498DE;transform:translate3d(100%,-50%,0)}.customize-control-toggle input:checked+.switch:active:before{background:rgba(52,152,222,.075);transform:translate3d(100%,-50%,0) scale(3)}.customize-control-typography .wrapper{-webkit-box-shadow:inset 0 0 10px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 10px 0 rgba(0,0,0,.1);padding:10px;border-radius:3px;display:flex;flex-wrap:wrap;justify-content:space-between}.customize-control-typography .wrapper .color,.customize-control-typography .wrapper .font-family,.customize-control-typography .wrapper .font-size,.customize-control-typography .wrapper .letter-spacing,.customize-control-typography .wrapper .line-height,.customize-control-typography .wrapper .subset,.customize-control-typography .wrapper .text-transform,.customize-control-typography .wrapper .variant{width:100%;float:none;clear:both}.customize-control-typography .wrapper .color h5,.customize-control-typography .wrapper .font-family h5,.customize-control-typography .wrapper .font-size h5,.customize-control-typography .wrapper .letter-spacing h5,.customize-control-typography .wrapper .line-height h5,.customize-control-typography .wrapper .subset h5,.customize-control-typography .wrapper .text-transform h5,.customize-control-typography .wrapper .variant h5{margin:.67em 0 0}.customize-control-typography .wrapper .font-size,.customize-control-typography .wrapper .letter-spacing,.customize-control-typography .wrapper .line-height{width:50%}.customize-control-typography .wrapper .text-align{width:100%}.customize-control-typography .wrapper .text-align .dashicons{padding:3px;font-size:25px;width:25px;height:25px;border:1px solid transparent}.customize-control-typography .wrapper .text-align input{display:none}.customize-control-typography .wrapper .text-align input:checked+label .dashicons{border:1px solid #3498DB;color:#000}.customize-control-typography .wrapper .text-transform{padding-top:10px}.customize-control-typography .wrapper .color{width:auto}
|
Â
|
assets/js/branding.js
CHANGED
@@ -1,8 +1,13 @@
|
|
1 |
-
jQuery(document).ready(function(
|
2 |
-
|
3 |
-
|
Â
|
|
Â
|
|
Â
|
|
4 |
Â
}
|
5 |
-
|
6 |
-
|
Â
|
|
7 |
Â
}
|
Â
|
|
8 |
Â
});
|
1 |
+
jQuery( document ).ready( function() {
|
2 |
+
|
3 |
+
'use strict';
|
4 |
+
|
5 |
+
if ( '' !== kirkiBranding.logoImage ) {
|
6 |
+
jQuery( 'div#customize-info .preview-notice' ).replaceWith( '<img src="' + kirkiBranding.logoImage + '">' );
|
7 |
Â
}
|
8 |
+
|
9 |
+
if ( '' !== kirkiBranding.description ) {
|
10 |
+
jQuery( 'div#customize-info > .customize-panel-description' ).replaceWith( '<div class="customize-panel-description">' + kirkiBranding.description + '</div>' );
|
11 |
Â
}
|
12 |
+
|
13 |
Â
});
|
assets/js/controls/checkbox.js
CHANGED
@@ -9,14 +9,17 @@ wp.customize.controlConstructor['kirki-checkbox'] = wp.customize.Control.extend(
|
|
9 |
Â
var control = this;
|
10 |
Â
|
11 |
Â
// Get the initial value
|
12 |
-
var
|
13 |
Â
|
14 |
Â
// Change the value
|
15 |
Â
this.container.on( 'change', 'input', function() {
|
Â
|
|
16 |
Â
// Get the checkbox status
|
17 |
-
|
Â
|
|
18 |
Â
// Set the value in the WordPress API
|
19 |
-
control.setting.set(
|
Â
|
|
20 |
Â
});
|
21 |
Â
|
22 |
Â
}
|
9 |
Â
var control = this;
|
10 |
Â
|
11 |
Â
// Get the initial value
|
12 |
+
var value = control.setting._value;
|
13 |
Â
|
14 |
Â
// Change the value
|
15 |
Â
this.container.on( 'change', 'input', function() {
|
16 |
+
|
17 |
Â
// Get the checkbox status
|
18 |
+
value = ( jQuery( this ).is( ':checked' ) ) ? true : false;
|
19 |
+
|
20 |
Â
// Set the value in the WordPress API
|
21 |
+
control.setting.set( value );
|
22 |
+
|
23 |
Â
});
|
24 |
Â
|
25 |
Â
}
|
assets/js/controls/code.js
CHANGED
@@ -8,14 +8,15 @@ wp.customize.controlConstructor.code = wp.customize.Control.extend({
|
|
8 |
Â
|
9 |
Â
var control = this,
|
10 |
Â
element = control.container.find( '#kirki-codemirror-editor-' + control.id ),
|
11 |
-
language = control.params.choices.language
|
Â
|
|
12 |
Â
|
13 |
Â
// HTML mode requires a small hack because CodeMirror uses 'htmlmixed'.
|
14 |
Â
if ( 'html' === control.params.choices.language ) {
|
15 |
Â
language = { name: 'htmlmixed' };
|
16 |
Â
}
|
17 |
Â
|
18 |
-
|
19 |
Â
value: control.setting._value,
|
20 |
Â
mode: language,
|
21 |
Â
lineNumbers: true,
|
@@ -29,7 +30,7 @@ wp.customize.controlConstructor.code = wp.customize.Control.extend({
|
|
29 |
Â
});
|
30 |
Â
|
31 |
Â
// Hack to refresh the editor when we open a section
|
32 |
-
element.parents( '.accordion-section' ).on( 'click', function(){
|
33 |
Â
editor.refresh();
|
34 |
Â
});
|
35 |
Â
|
8 |
Â
|
9 |
Â
var control = this,
|
10 |
Â
element = control.container.find( '#kirki-codemirror-editor-' + control.id ),
|
11 |
+
language = control.params.choices.language,
|
12 |
+
editor;
|
13 |
Â
|
14 |
Â
// HTML mode requires a small hack because CodeMirror uses 'htmlmixed'.
|
15 |
Â
if ( 'html' === control.params.choices.language ) {
|
16 |
Â
language = { name: 'htmlmixed' };
|
17 |
Â
}
|
18 |
Â
|
19 |
+
editor = CodeMirror.fromTextArea( element[0], {
|
20 |
Â
value: control.setting._value,
|
21 |
Â
mode: language,
|
22 |
Â
lineNumbers: true,
|
30 |
Â
});
|
31 |
Â
|
32 |
Â
// Hack to refresh the editor when we open a section
|
33 |
+
element.parents( '.accordion-section' ).on( 'click', function() {
|
34 |
Â
editor.refresh();
|
35 |
Â
});
|
36 |
Â
|
assets/js/controls/color-alpha.js
CHANGED
@@ -6,8 +6,8 @@ wp.customize.controlConstructor['color-alpha'] = wp.customize.Control.extend({
|
|
6 |
Â
// When we're finished loading continue processing
|
7 |
Â
ready: function() {
|
8 |
Â
|
9 |
-
var control
|
10 |
-
picker
|
11 |
Â
|
12 |
Â
// If we have defined any extra choices, make sure they are passed-on to Iris.
|
13 |
Â
if ( undefined !== control.params.choices ) {
|
@@ -17,11 +17,14 @@ wp.customize.controlConstructor['color-alpha'] = wp.customize.Control.extend({
|
|
17 |
Â
// Saves our settings to the WP API
|
18 |
Â
picker.wpColorPicker({
|
19 |
Â
change: function( event, ui ) {
|
Â
|
|
20 |
Â
// Small hack: the picker needs a small delay
|
21 |
Â
setTimeout( function() {
|
22 |
Â
control.setting.set( picker.val() );
|
23 |
Â
}, 100 );
|
24 |
-
|
Â
|
|
Â
|
|
25 |
Â
});
|
26 |
Â
|
27 |
Â
}
|
6 |
Â
// When we're finished loading continue processing
|
7 |
Â
ready: function() {
|
8 |
Â
|
9 |
+
var control = this,
|
10 |
+
picker = this.container.find( '.kirki-color-control' );
|
11 |
Â
|
12 |
Â
// If we have defined any extra choices, make sure they are passed-on to Iris.
|
13 |
Â
if ( undefined !== control.params.choices ) {
|
17 |
Â
// Saves our settings to the WP API
|
18 |
Â
picker.wpColorPicker({
|
19 |
Â
change: function( event, ui ) {
|
20 |
+
|
21 |
Â
// Small hack: the picker needs a small delay
|
22 |
Â
setTimeout( function() {
|
23 |
Â
control.setting.set( picker.val() );
|
24 |
Â
}, 100 );
|
25 |
+
|
26 |
+
}
|
27 |
+
|
28 |
Â
});
|
29 |
Â
|
30 |
Â
}
|
assets/js/controls/dimension.js
CHANGED
@@ -6,7 +6,8 @@ wp.customize.controlConstructor.dimension = wp.customize.Control.extend({
|
|
6 |
Â
// When we're finished loading continue processing
|
7 |
Â
ready: function() {
|
8 |
Â
|
9 |
-
var control = this
|
Â
|
|
10 |
Â
|
11 |
Â
// Validate the value and show a warning if it's invalid
|
12 |
Â
if ( false === kirkiValidateCSSValue( control.setting._value ) ) {
|
@@ -17,18 +18,26 @@ wp.customize.controlConstructor.dimension = wp.customize.Control.extend({
|
|
17 |
Â
|
18 |
Â
// Save the value
|
19 |
Â
this.container.on( 'change keyup paste', 'input', function() {
|
20 |
-
|
Â
|
|
Â
|
|
21 |
Â
// Validate the value and show a warning if it's invalid.
|
22 |
Â
// We did this once when initializing the field, but we need to re-evaluate
|
23 |
Â
// every time the value changes.
|
24 |
Â
if ( false === kirkiValidateCSSValue( value ) ) {
|
Â
|
|
25 |
Â
jQuery( control.selector + ' .input-wrapper' ).addClass( 'invalid' );
|
Â
|
|
26 |
Â
} else {
|
Â
|
|
27 |
Â
jQuery( control.selector + ' .input-wrapper' ).removeClass( 'invalid' );
|
Â
|
|
28 |
Â
// Set the value to the customizer.
|
29 |
Â
// We're only saving VALID values.
|
30 |
Â
control.setting.set( value );
|
Â
|
|
31 |
Â
}
|
Â
|
|
32 |
Â
});
|
33 |
Â
|
34 |
Â
}
|
6 |
Â
// When we're finished loading continue processing
|
7 |
Â
ready: function() {
|
8 |
Â
|
9 |
+
var control = this,
|
10 |
+
value;
|
11 |
Â
|
12 |
Â
// Validate the value and show a warning if it's invalid
|
13 |
Â
if ( false === kirkiValidateCSSValue( control.setting._value ) ) {
|
18 |
Â
|
19 |
Â
// Save the value
|
20 |
Â
this.container.on( 'change keyup paste', 'input', function() {
|
21 |
+
|
22 |
+
value = jQuery( this ).val();
|
23 |
+
|
24 |
Â
// Validate the value and show a warning if it's invalid.
|
25 |
Â
// We did this once when initializing the field, but we need to re-evaluate
|
26 |
Â
// every time the value changes.
|
27 |
Â
if ( false === kirkiValidateCSSValue( value ) ) {
|
28 |
+
|
29 |
Â
jQuery( control.selector + ' .input-wrapper' ).addClass( 'invalid' );
|
30 |
+
|
31 |
Â
} else {
|
32 |
+
|
33 |
Â
jQuery( control.selector + ' .input-wrapper' ).removeClass( 'invalid' );
|
34 |
+
|
35 |
Â
// Set the value to the customizer.
|
36 |
Â
// We're only saving VALID values.
|
37 |
Â
control.setting.set( value );
|
38 |
+
|
39 |
Â
}
|
40 |
+
|
41 |
Â
});
|
42 |
Â
|
43 |
Â
}
|
assets/js/controls/editor.js
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
Â
content;
|
14 |
Â
|
15 |
Â
if ( editor ) {
|
16 |
-
editor.onChange.add( function(ed, e) {
|
17 |
Â
ed.save();
|
18 |
Â
content = editor.getContent();
|
19 |
Â
clearTimeout( setChange );
|
@@ -23,7 +23,7 @@
|
|
23 |
Â
});
|
24 |
Â
}
|
25 |
Â
|
26 |
-
tArea.css({ visibility: 'visible' }).on('keyup', function() {
|
27 |
Â
content = tArea.val();
|
28 |
Â
clearTimeout( setChange );
|
29 |
Â
setChange = setTimeout( function() {
|
13 |
Â
content;
|
14 |
Â
|
15 |
Â
if ( editor ) {
|
16 |
+
editor.onChange.add( function( ed, e ) {
|
17 |
Â
ed.save();
|
18 |
Â
content = editor.getContent();
|
19 |
Â
clearTimeout( setChange );
|
23 |
Â
});
|
24 |
Â
}
|
25 |
Â
|
26 |
+
tArea.css({ visibility: 'visible' }).on( 'keyup', function() {
|
27 |
Â
content = tArea.val();
|
28 |
Â
clearTimeout( setChange );
|
29 |
Â
setChange = setTimeout( function() {
|
assets/js/controls/multicheck.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Â
*/
|
4 |
Â
wp.customize.controlConstructor.multicheck = wp.customize.Control.extend({
|
5 |
Â
|
6 |
-
// When we're finished loading continue processing
|
7 |
Â
ready: function() {
|
8 |
Â
var control = this;
|
9 |
Â
|
@@ -12,7 +12,7 @@ wp.customize.controlConstructor.multicheck = wp.customize.Control.extend({
|
|
12 |
Â
var value = [],
|
13 |
Â
i = 0;
|
14 |
Â
|
15 |
-
//
|
16 |
Â
jQuery.each( control.params.choices, function( key, subValue ) {
|
17 |
Â
if ( control.container.find( 'input[value="' + key + '"]' ).is( ':checked' ) ) {
|
18 |
Â
value[ i ] = key;
|
@@ -20,7 +20,7 @@ wp.customize.controlConstructor.multicheck = wp.customize.Control.extend({
|
|
20 |
Â
}
|
21 |
Â
});
|
22 |
Â
|
23 |
-
// Update the value in the customizer
|
24 |
Â
control.setting.set( value );
|
25 |
Â
|
26 |
Â
});
|
3 |
Â
*/
|
4 |
Â
wp.customize.controlConstructor.multicheck = wp.customize.Control.extend({
|
5 |
Â
|
6 |
+
// When we're finished loading continue processing.
|
7 |
Â
ready: function() {
|
8 |
Â
var control = this;
|
9 |
Â
|
12 |
Â
var value = [],
|
13 |
Â
i = 0;
|
14 |
Â
|
15 |
+
// Build the value as an object using the sub-values from individual checkboxes.
|
16 |
Â
jQuery.each( control.params.choices, function( key, subValue ) {
|
17 |
Â
if ( control.container.find( 'input[value="' + key + '"]' ).is( ':checked' ) ) {
|
18 |
Â
value[ i ] = key;
|
20 |
Â
}
|
21 |
Â
});
|
22 |
Â
|
23 |
+
// Update the value in the customizer.
|
24 |
Â
control.setting.set( value );
|
25 |
Â
|
26 |
Â
});
|
assets/js/controls/multicolor.js
CHANGED
@@ -9,27 +9,34 @@ wp.customize.controlConstructor.multicolor = wp.customize.Control.extend({
|
|
9 |
Â
colors = control.params.choices,
|
10 |
Â
keys = Object.keys( colors ),
|
11 |
Â
value = this.params.value,
|
12 |
-
target = control.container.find( '.iris-target' )
|
13 |
-
i = 0
|
Â
|
|
Â
|
|
14 |
Â
|
15 |
Â
// Proxy function that handles changing the individual colors
|
16 |
-
function kirkiMulticolorChangeHandler( control, value,
|
17 |
Â
|
18 |
-
var picker = control.container.find( '.multicolor-index-' +
|
19 |
Â
|
20 |
-
//
|
21 |
Â
picker.wpColorPicker({
|
22 |
Â
target: target[0],
|
23 |
Â
change: function( event, ui ) {
|
Â
|
|
24 |
Â
// Color controls require a small delay
|
25 |
Â
setTimeout( function() {
|
26 |
-
value[
|
Â
|
|
27 |
Â
// Set the value
|
28 |
Â
control.setting.set( value );
|
Â
|
|
29 |
Â
// Trigger the change
|
30 |
-
control.container.find( '.multicolor-index-' +
|
31 |
Â
}, 100 );
|
32 |
-
|
Â
|
|
Â
|
|
33 |
Â
});
|
34 |
Â
|
35 |
Â
}
|
@@ -37,14 +44,14 @@ wp.customize.controlConstructor.multicolor = wp.customize.Control.extend({
|
|
37 |
Â
// The hidden field that keeps the data saved (though we never update it)
|
38 |
Â
this.settingField = this.container.find( '[data-customize-setting-link]' ).first();
|
39 |
Â
|
40 |
-
//
|
41 |
Â
while ( i < Object.keys( colors ).length ) {
|
42 |
Â
|
43 |
Â
kirkiMulticolorChangeHandler( this, value, keys[ i ] );
|
44 |
Â
|
45 |
Â
// Move colorpicker to the 'iris-target' container div
|
46 |
-
|
47 |
-
|
48 |
Â
jQuery( irisInput[0] ).detach().appendTo( target[0] );
|
49 |
Â
jQuery( irisPicker[0] ).detach().appendTo( target[0] );
|
50 |
Â
|
@@ -64,10 +71,13 @@ wp.customize.controlConstructor.multicolor = wp.customize.Control.extend({
|
|
64 |
Â
this.setting.set( newValue );
|
65 |
Â
|
66 |
Â
if ( refresh ) {
|
Â
|
|
67 |
Â
// Trigger the change event on the hidden field so
|
68 |
Â
// previewer refresh the website on Customizer
|
69 |
Â
this.settingField.trigger( 'change' );
|
Â
|
|
70 |
Â
}
|
71 |
-
|
Â
|
|
72 |
Â
|
73 |
Â
});
|
9 |
Â
colors = control.params.choices,
|
10 |
Â
keys = Object.keys( colors ),
|
11 |
Â
value = this.params.value,
|
12 |
+
target = control.container.find( '.iris-target' ),
|
13 |
+
i = 0,
|
14 |
+
irisInput,
|
15 |
+
irisPicker;
|
16 |
Â
|
17 |
Â
// Proxy function that handles changing the individual colors
|
18 |
+
function kirkiMulticolorChangeHandler( control, value, subSetting ) {
|
19 |
Â
|
20 |
+
var picker = control.container.find( '.multicolor-index-' + subSetting );
|
21 |
Â
|
22 |
+
// Did we change the value?
|
23 |
Â
picker.wpColorPicker({
|
24 |
Â
target: target[0],
|
25 |
Â
change: function( event, ui ) {
|
26 |
+
|
27 |
Â
// Color controls require a small delay
|
28 |
Â
setTimeout( function() {
|
29 |
+
value[ subSetting ] = picker.val();
|
30 |
+
|
31 |
Â
// Set the value
|
32 |
Â
control.setting.set( value );
|
33 |
+
|
34 |
Â
// Trigger the change
|
35 |
+
control.container.find( '.multicolor-index-' + subSetting ).trigger( 'change' );
|
36 |
Â
}, 100 );
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
Â
});
|
41 |
Â
|
42 |
Â
}
|
44 |
Â
// The hidden field that keeps the data saved (though we never update it)
|
45 |
Â
this.settingField = this.container.find( '[data-customize-setting-link]' ).first();
|
46 |
Â
|
47 |
+
// Colors loop
|
48 |
Â
while ( i < Object.keys( colors ).length ) {
|
49 |
Â
|
50 |
Â
kirkiMulticolorChangeHandler( this, value, keys[ i ] );
|
51 |
Â
|
52 |
Â
// Move colorpicker to the 'iris-target' container div
|
53 |
+
irisInput = control.container.find( '.wp-picker-container .wp-picker-input-wrap' ),
|
54 |
+
irisPicker = control.container.find( '.wp-picker-container .wp-picker-holder' );
|
55 |
Â
jQuery( irisInput[0] ).detach().appendTo( target[0] );
|
56 |
Â
jQuery( irisPicker[0] ).detach().appendTo( target[0] );
|
57 |
Â
|
71 |
Â
this.setting.set( newValue );
|
72 |
Â
|
73 |
Â
if ( refresh ) {
|
74 |
+
|
75 |
Â
// Trigger the change event on the hidden field so
|
76 |
Â
// previewer refresh the website on Customizer
|
77 |
Â
this.settingField.trigger( 'change' );
|
78 |
+
|
79 |
Â
}
|
80 |
+
|
81 |
+
}
|
82 |
Â
|
83 |
Â
});
|
assets/js/controls/number.js
CHANGED
@@ -12,7 +12,7 @@ wp.customize.controlConstructor.number = wp.customize.Control.extend({
|
|
12 |
Â
|
13 |
Â
if ( undefined !== typeof control.params.choices.min && undefined !== typeof control.params.choices.max && undefined !== typeof control.params.choices.step ) {
|
14 |
Â
|
15 |
-
//
|
16 |
Â
jQuery( element ).spinner( 'option', 'min', control.params.choices.min );
|
17 |
Â
|
18 |
Â
// Set maximum value
|
12 |
Â
|
13 |
Â
if ( undefined !== typeof control.params.choices.min && undefined !== typeof control.params.choices.max && undefined !== typeof control.params.choices.step ) {
|
14 |
Â
|
15 |
+
// Set minimum value
|
16 |
Â
jQuery( element ).spinner( 'option', 'min', control.params.choices.min );
|
17 |
Â
|
18 |
Â
// Set maximum value
|
assets/js/controls/preset.js
CHANGED
@@ -7,19 +7,20 @@ wp.customize.controlConstructor.preset = wp.customize.Control.extend({
|
|
7 |
Â
ready: function() {
|
8 |
Â
|
9 |
Â
var control = this,
|
10 |
-
element = this.container.find( 'select' )
|
Â
|
|
11 |
Â
|
12 |
-
//
|
13 |
Â
jQuery( element ).selectize();
|
14 |
Â
|
15 |
Â
// Trigger a change
|
16 |
Â
this.container.on( 'change', 'select', function() {
|
17 |
Â
|
18 |
-
//
|
19 |
-
|
20 |
Â
|
21 |
Â
// Update the value using the customizer API and trigger the "save" button
|
22 |
-
control.setting.set(
|
23 |
Â
|
24 |
Â
// We have to get the choices of this control
|
25 |
Â
// and then start parsing them to see what we have to do for each of the choices.
|
@@ -27,12 +28,12 @@ wp.customize.controlConstructor.preset = wp.customize.Control.extend({
|
|
27 |
Â
|
28 |
Â
// If the current value of the control is the key of the choice,
|
29 |
Â
// then we can continue processing, Otherwise there's no reason to do anything.
|
30 |
-
if (
|
31 |
Â
|
32 |
Â
// Each choice has an array of settings defined in it.
|
33 |
Â
// We'll have to loop through them all and apply the changes needed to them.
|
34 |
-
jQuery.each( value.settings, function(
|
35 |
-
kirkiSetValue(
|
36 |
Â
});
|
37 |
Â
|
38 |
Â
}
|
7 |
Â
ready: function() {
|
8 |
Â
|
9 |
Â
var control = this,
|
10 |
+
element = this.container.find( 'select' ),
|
11 |
+
selectValue;
|
12 |
Â
|
13 |
+
// Init selectize
|
14 |
Â
jQuery( element ).selectize();
|
15 |
Â
|
16 |
Â
// Trigger a change
|
17 |
Â
this.container.on( 'change', 'select', function() {
|
18 |
Â
|
19 |
+
// Get the control's value
|
20 |
+
selectValue = jQuery( this ).val();
|
21 |
Â
|
22 |
Â
// Update the value using the customizer API and trigger the "save" button
|
23 |
+
control.setting.set( selectValue );
|
24 |
Â
|
25 |
Â
// We have to get the choices of this control
|
26 |
Â
// and then start parsing them to see what we have to do for each of the choices.
|
28 |
Â
|
29 |
Â
// If the current value of the control is the key of the choice,
|
30 |
Â
// then we can continue processing, Otherwise there's no reason to do anything.
|
31 |
+
if ( selectValue === key ) {
|
32 |
Â
|
33 |
Â
// Each choice has an array of settings defined in it.
|
34 |
Â
// We'll have to loop through them all and apply the changes needed to them.
|
35 |
+
jQuery.each( value.settings, function( presetSetting, presetSettingValue ) {
|
36 |
+
kirkiSetValue( presetSetting, presetSettingValue );
|
37 |
Â
});
|
38 |
Â
|
39 |
Â
}
|
assets/js/controls/repeater.js
CHANGED
@@ -1,92 +1,78 @@
|
|
Â
|
|
1 |
Â
/**
|
2 |
Â
* KIRKI CONTROL: REPEATER
|
3 |
Â
*/
|
4 |
-
function RepeaterRow( rowIndex, element ) {
|
5 |
-
this.rowIndex = rowIndex;
|
6 |
-
this.rowNumber = rowIndex + 1;
|
7 |
-
this.$el = element;
|
8 |
-
this.$dragger = this.$el.find( '.repeater-row-move' );
|
9 |
-
this.$minimizer = this.$el.find( '.repeater-row-minimize' );
|
10 |
-
this.$remover = this.$el.find( '.repeater-row-remove' );
|
11 |
-
this.$number = this.$el.find( '.repeater-row-number' );
|
12 |
-
this.$fields = this.$el.find( 'input,select,textarea' );
|
13 |
Â
|
14 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
15 |
Â
|
16 |
-
this
|
17 |
Â
self.toggleMinimize();
|
18 |
Â
});
|
19 |
Â
|
20 |
-
this
|
21 |
Â
self.remove();
|
22 |
Â
});
|
23 |
Â
|
24 |
-
this
|
25 |
-
self
|
26 |
Â
});
|
27 |
Â
|
28 |
-
|
29 |
-
|
30 |
-
self.$el.trigger( 'row:update', [ self.getRowIndex(), jQuery( e.target ).data( 'field' ), e.target ] );
|
31 |
Â
});
|
32 |
Â
|
33 |
-
this.
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
};
|
40 |
-
|
41 |
-
RepeaterRow.prototype.getRowNumber = function() {
|
42 |
-
return this.rowNumber;
|
43 |
-
};
|
44 |
-
|
45 |
-
RepeaterRow.prototype.setRowNumber = function( rowNumber ) {
|
46 |
-
this.rowNumber = rowNumber;
|
47 |
-
this.renderNumber();
|
48 |
-
};
|
49 |
-
|
50 |
-
RepeaterRow.prototype.getElement = function() {
|
51 |
-
return this.$el;
|
52 |
-
};
|
53 |
Â
|
54 |
-
|
55 |
-
this.rowIndex = rowIndex;
|
56 |
-
this.$el.attr( 'data-row', rowIndex );
|
57 |
-
this.$el.data( 'row', rowIndex );
|
58 |
-
};
|
59 |
Â
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
this.$minimizer.find( '.repeater-minimize').toggleClass( 'dashicons-arrow-down' );
|
65 |
-
};
|
66 |
Â
|
67 |
-
|
68 |
-
|
69 |
-
this.$minimizer.find( '.repeater-minimize' ).removeClass( 'dashicons-arrow-up' );
|
70 |
-
this.$minimizer.find( '.repeater-minimize').addClass( 'dashicons-arrow-down' );
|
71 |
-
};
|
72 |
-
|
73 |
-
RepeaterRow.prototype.remove = function() {
|
74 |
-
// TODO: make this translatable
|
75 |
-
if ( confirm( "Are you sure?" ) ) {
|
76 |
-
this.$el.slideUp( 300, function() {
|
77 |
Â
jQuery( this ).detach();
|
78 |
Â
});
|
79 |
-
this
|
80 |
-
}
|
81 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
82 |
Â
|
83 |
-
|
84 |
-
this.$number.text( this.getRowNumber() );
|
85 |
Â
};
|
86 |
Â
|
87 |
Â
wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
88 |
Â
ready: function() {
|
89 |
-
var control = this
|
Â
|
|
Â
|
|
90 |
Â
|
91 |
Â
// The current value set in Control Class (set in Kirki_Customize_Repeater_Control::to_json() function)
|
92 |
Â
var settingValue = this.params.value;
|
@@ -107,16 +93,16 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
107 |
Â
this.rows = [];
|
108 |
Â
|
109 |
Â
// Default limit choice
|
110 |
-
|
111 |
Â
if ( undefined !== this.params.choices.limit ) {
|
112 |
-
|
113 |
Â
}
|
114 |
Â
|
115 |
Â
this.container.on( 'click', 'button.repeater-add', function( e ) {
|
116 |
Â
e.preventDefault();
|
117 |
Â
if ( ! limit || control.currentIndex < limit ) {
|
118 |
-
control.addRow();
|
119 |
-
|
120 |
Â
} else {
|
121 |
Â
jQuery( control.selector + ' .limit' ).addClass( 'highlight' );
|
122 |
Â
}
|
@@ -129,16 +115,16 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
129 |
Â
}
|
130 |
Â
});
|
131 |
Â
|
132 |
-
this.container.on( 'click keypress', '.repeater-field-image .upload-button,.repeater-field-cropped_image .upload-button', function
|
133 |
Â
e.preventDefault();
|
134 |
Â
control.$thisButton = jQuery( this );
|
135 |
Â
control.openFrame( e );
|
136 |
Â
});
|
137 |
Â
|
138 |
-
this.container.on( 'click keypress', '.repeater-field-image .remove-button,.repeater-field-cropped_image .remove-button', function
|
139 |
Â
e.preventDefault();
|
140 |
-
control.$thisButton = jQuery(this);
|
141 |
-
control.removeImage(e);
|
142 |
Â
});
|
143 |
Â
|
144 |
Â
/**
|
@@ -168,13 +154,16 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
168 |
Â
// When we load the control, the fields have not been filled up
|
169 |
Â
// This is the first time that we create all the rows
|
170 |
Â
if ( settingValue.length ) {
|
171 |
-
|
172 |
-
control.addRow(
|
173 |
-
}
|
174 |
Â
}
|
175 |
Â
|
Â
|
|
Â
|
|
Â
|
|
176 |
Â
this.repeaterFieldsContainer.sortable({
|
177 |
-
handle:
|
178 |
Â
update: function( e, ui ) {
|
179 |
Â
control.sort();
|
180 |
Â
}
|
@@ -200,7 +189,7 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
200 |
Â
this.frame.open();
|
201 |
Â
},
|
202 |
Â
|
203 |
-
initFrame
|
204 |
Â
|
205 |
Â
this.frame = wp.media({
|
206 |
Â
states: [
|
@@ -219,24 +208,28 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
219 |
Â
* Create a media modal select frame, and store it so the instance can be reused when needed.
|
220 |
Â
* This is mostly a copy/paste of Core api.CroppedImageControl in /wp-admin/js/customize-control.js
|
221 |
Â
*/
|
222 |
-
initCropperFrame
|
223 |
Â
|
224 |
Â
// We get the field id from which this was called
|
225 |
-
var currentFieldId = this.$thisButton.siblings( 'input.hidden-field' ).attr( 'data-field' )
|
Â
|
|
Â
|
|
226 |
Â
// Make sure we got it
|
227 |
Â
if ( 'string' === typeof currentFieldId && '' !== currentFieldId ) {
|
Â
|
|
228 |
Â
// Make fields is defined and only do the hack for cropped_image
|
229 |
Â
if ( 'object' === typeof this.params.fields[ currentFieldId ] && 'cropped_image' === this.params.fields[ currentFieldId ].type ) {
|
230 |
-
|
231 |
-
var attrs = [ 'width' , 'height' , 'flex_width' , 'flex_height' ];
|
232 |
Â
//Iterate over the list of attributes
|
233 |
-
attrs.forEach( function( el
|
Â
|
|
234 |
Â
// If the attribute exists in the field
|
235 |
Â
if ( 'undefined' !== typeof this.params.fields[ currentFieldId ][ el ] ) {
|
Â
|
|
236 |
Â
// Set the attribute in the main object
|
237 |
Â
this.params[ el ] = this.params.fields[ currentFieldId ][ el ];
|
238 |
Â
}
|
239 |
-
}.bind(this));
|
240 |
Â
}
|
241 |
Â
}
|
242 |
Â
|
@@ -266,7 +259,7 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
266 |
Â
|
267 |
Â
},
|
268 |
Â
|
269 |
-
onSelect
|
270 |
Â
var attachment = this.frame.state().get( 'selection' ).first().toJSON();
|
271 |
Â
|
272 |
Â
this.setImageInReaperField( attachment );
|
@@ -409,7 +402,7 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
409 |
Â
setImageInReaperField: function( attachment ) {
|
410 |
Â
var $targetDiv = this.$thisButton.closest( '.repeater-field-image,.repeater-field-cropped_image' );
|
411 |
Â
|
412 |
-
$targetDiv.find( '.kirki-image-attachment' ).html( '<img src="'+ attachment.url +'">' ).hide().slideDown( 'slow' );
|
413 |
Â
|
414 |
Â
$targetDiv.find( '.hidden-field' ).val( attachment.id );
|
415 |
Â
this.$thisButton.text( this.$thisButton.data( 'alt-label' ) );
|
@@ -420,16 +413,19 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
420 |
Â
this.frame.close();
|
421 |
Â
},
|
422 |
Â
|
423 |
-
removeImage
|
Â
|
|
Â
|
|
Â
|
|
424 |
Â
if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) {
|
425 |
Â
return;
|
426 |
Â
}
|
427 |
Â
|
428 |
-
|
429 |
-
|
430 |
Â
|
431 |
Â
$targetDiv.find( '.kirki-image-attachment' ).slideUp( 'fast', function() {
|
432 |
-
jQuery(this).show().html( jQuery(this).data( 'placeholder' ) );
|
433 |
Â
});
|
434 |
Â
$targetDiv.find( '.hidden-field' ).val( '' );
|
435 |
Â
$uploadButton.text( $uploadButton.data( 'label' ) );
|
@@ -444,8 +440,10 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
444 |
Â
* @return Object
|
445 |
Â
*/
|
446 |
Â
getValue: function() {
|
Â
|
|
447 |
Â
// The setting is saved in JSON
|
448 |
Â
return JSON.parse( decodeURI( this.setting.get() ) );
|
Â
|
|
449 |
Â
},
|
450 |
Â
|
451 |
Â
/**
|
@@ -454,14 +452,37 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
454 |
Â
* @param newValue Object
|
455 |
Â
* @param refresh If we want to refresh the previewer or not
|
456 |
Â
*/
|
457 |
-
setValue: function( newValue, refresh ) {
|
458 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
459 |
Â
|
460 |
Â
if ( refresh ) {
|
Â
|
|
461 |
Â
// Trigger the change event on the hidden field so
|
462 |
Â
// previewer refresh the website on Customizer
|
463 |
-
this.settingField.trigger('change');
|
Â
|
|
464 |
Â
}
|
Â
|
|
465 |
Â
},
|
466 |
Â
|
467 |
Â
/**
|
@@ -472,14 +493,11 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
472 |
Â
addRow: function( data ) {
|
473 |
Â
var control = this,
|
474 |
Â
i,
|
475 |
-
// The template for the new row (defined on Kirki_Customize_Repeater_Control::render_content() )
|
476 |
-
|
477 |
-
//
|
478 |
-
|
479 |
-
|
480 |
-
newRowSetting = {},
|
481 |
-
// Data to pass to the template
|
482 |
-
templateData;
|
483 |
Â
|
484 |
Â
if ( template ) {
|
485 |
Â
|
@@ -492,38 +510,30 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
492 |
Â
if ( data ) {
|
493 |
Â
for ( i in data ) {
|
494 |
Â
if ( data.hasOwnProperty( i ) && templateData.hasOwnProperty( i ) ) {
|
495 |
-
templateData[ i ]
|
496 |
Â
}
|
497 |
Â
}
|
498 |
Â
}
|
499 |
Â
|
500 |
Â
templateData.index = this.currentIndex;
|
501 |
-
templateData.ControlId = this.id;
|
502 |
Â
|
503 |
Â
// Append the template content
|
504 |
Â
template = template( templateData );
|
505 |
Â
|
506 |
Â
// Create a new row object and append the element
|
507 |
-
|
508 |
Â
control.currentIndex,
|
509 |
-
jQuery( template ).appendTo( control.repeaterFieldsContainer )
|
Â
|
|
510 |
Â
);
|
511 |
Â
|
512 |
-
newRow.
|
513 |
Â
control.deleteRow( rowIndex );
|
514 |
Â
});
|
515 |
Â
|
516 |
-
newRow.
|
517 |
Â
control.updateField.call( control, e, rowIndex, fieldName, element );
|
518 |
-
|
519 |
-
|
520 |
-
newRow.getElement().on( 'row:start-dragging', function() {
|
521 |
-
// Minimize all rows
|
522 |
-
for ( i in control.rows ) {
|
523 |
-
if ( control.rows.hasOwnProperty( i ) && control.rows[ i ] ) {
|
524 |
-
control.rows[ i ].minimize();
|
525 |
-
}
|
526 |
-
}
|
527 |
Â
});
|
528 |
Â
|
529 |
Â
// Add the row to rows collection
|
@@ -531,7 +541,7 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
531 |
Â
|
532 |
Â
for ( i in templateData ) {
|
533 |
Â
if ( templateData.hasOwnProperty( i ) ) {
|
534 |
-
newRowSetting[ i ] = templateData[ i ]
|
535 |
Â
}
|
536 |
Â
}
|
537 |
Â
|
@@ -540,26 +550,27 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
540 |
Â
|
541 |
Â
this.currentIndex++;
|
542 |
Â
|
Â
|
|
Â
|
|
543 |
Â
}
|
544 |
Â
|
545 |
Â
},
|
546 |
Â
|
547 |
Â
sort: function() {
|
548 |
-
var control = this
|
549 |
-
|
550 |
-
|
Â
|
|
Â
|
|
Â
|
|
551 |
Â
|
552 |
Â
$rows.each( function( i, element ) {
|
553 |
Â
newOrder.push( jQuery( element ).data( 'row' ) );
|
554 |
Â
});
|
555 |
Â
|
556 |
-
var settings = control.getValue();
|
557 |
-
var newRows = [];
|
558 |
-
var newSettings = [];
|
559 |
Â
jQuery.each( newOrder, function( newPosition, oldPosition ) {
|
560 |
Â
newRows[ newPosition ] = control.rows[ oldPosition ];
|
561 |
Â
newRows[ newPosition ].setRowIndex( newPosition );
|
562 |
-
newRows[ newPosition ].setRowNumber( newPosition + 1 );
|
563 |
Â
|
564 |
Â
newSettings[ newPosition ] = settings[ oldPosition ];
|
565 |
Â
});
|
@@ -574,12 +585,17 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
574 |
Â
* @param index Position of the row in the complete Setting Array
|
575 |
Â
*/
|
576 |
Â
deleteRow: function( index ) {
|
577 |
-
var currentSettings = this.getValue()
|
Â
|
|
Â
|
|
Â
|
|
578 |
Â
|
579 |
Â
if ( currentSettings[ index ] ) {
|
Â
|
|
580 |
Â
// Find the row
|
581 |
-
|
582 |
Â
if ( row ) {
|
Â
|
|
583 |
Â
// The row exists, let's delete it
|
584 |
Â
|
585 |
Â
// Remove the row settings
|
@@ -590,14 +606,16 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
590 |
Â
|
591 |
Â
// Update the new setting values
|
592 |
Â
this.setValue( currentSettings, true );
|
Â
|
|
593 |
Â
}
|
Â
|
|
594 |
Â
}
|
595 |
Â
|
596 |
Â
// Remap the row numbers
|
597 |
-
|
598 |
-
for (
|
599 |
Â
if ( this.rows.hasOwnProperty( prop ) && this.rows[ prop ] ) {
|
600 |
-
this.rows[ prop ].
|
601 |
Â
i++;
|
602 |
Â
}
|
603 |
Â
}
|
@@ -610,27 +628,37 @@ wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
|
610 |
Â
* @param e Event Object
|
611 |
Â
*/
|
612 |
Â
updateField: function( e, rowIndex, fieldId, element ) {
|
613 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
614 |
Â
return;
|
Â
|
|
615 |
Â
|
616 |
-
if ( ! this.params.fields[ fieldId ] )
|
617 |
Â
return;
|
Â
|
|
618 |
Â
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
Â
|
623 |
Â
element = jQuery( element );
|
624 |
Â
|
625 |
-
if ( undefined === typeof currentSettings[ row.
|
626 |
Â
return;
|
627 |
Â
}
|
628 |
Â
|
629 |
Â
if ( 'checkbox' === type ) {
|
630 |
-
|
Â
|
|
Â
|
|
631 |
Â
} else {
|
Â
|
|
632 |
Â
// Update the settings
|
633 |
-
currentSettings[ row.
|
Â
|
|
634 |
Â
}
|
635 |
Â
|
636 |
Â
this.setValue( currentSettings, true );
|
1 |
+
/*jshint -W065 */
|
2 |
Â
/**
|
3 |
Â
* KIRKI CONTROL: REPEATER
|
4 |
Â
*/
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
|
6 |
+
var RepeaterRow = function( rowIndex, container, label ) {
|
7 |
+
var self = this;
|
8 |
+
|
9 |
+
this.rowIndex = rowIndex;
|
10 |
+
this.container = container;
|
11 |
+
this.label = label;
|
12 |
+
this.header = this.container.find( '.repeater-row-header' ),
|
13 |
Â
|
14 |
+
this.header.on( 'click', function() {
|
15 |
Â
self.toggleMinimize();
|
16 |
Â
});
|
17 |
Â
|
18 |
+
this.container.on( 'click', '.repeater-row-remove', function() {
|
19 |
Â
self.remove();
|
20 |
Â
});
|
21 |
Â
|
22 |
+
this.header.on( 'mousedown', function() {
|
23 |
+
self.container.trigger( 'row:start-dragging' );
|
24 |
Â
});
|
25 |
Â
|
26 |
+
this.container.on( 'keyup change', 'input, select, textarea', function( e ) {
|
27 |
+
self.container.trigger( 'row:update', [ self.rowIndex, jQuery( e.target ).data( 'field' ), e.target ] );
|
Â
|
|
28 |
Â
});
|
29 |
Â
|
30 |
+
this.setRowIndex = function( rowIndex ) {
|
31 |
+
this.rowIndex = rowIndex;
|
32 |
+
this.container.attr( 'data-row', rowIndex );
|
33 |
+
this.container.data( 'row', rowIndex );
|
34 |
+
this.updateLabel();
|
35 |
+
};
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
36 |
Â
|
37 |
+
this.toggleMinimize = function() {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
38 |
Â
|
39 |
+
// Store the previous state.
|
40 |
+
this.container.toggleClass( 'minimized' );
|
41 |
+
this.header.find( '.dashicons' ).toggleClass( 'dashicons-arrow-up' ).toggleClass( 'dashicons-arrow-down' );
|
42 |
+
};
|
Â
|
|
Â
|
|
43 |
Â
|
44 |
+
this.remove = function() {
|
45 |
+
this.container.slideUp( 300, function() {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
46 |
Â
jQuery( this ).detach();
|
47 |
Â
});
|
48 |
+
this.container.trigger( 'row:remove', [ this.rowIndex ] );
|
49 |
+
};
|
50 |
+
|
51 |
+
this.updateLabel = function() {
|
52 |
+
var rowLabelField,
|
53 |
+
rowLabel;
|
54 |
+
|
55 |
+
if ( 'field' === this.label.type ) {
|
56 |
+
rowLabelField = this.container.find( '.repeater-field [data-field="' + this.label.field + '"]' );
|
57 |
+
if ( 'function' === typeof rowLabelField.val ) {
|
58 |
+
rowLabel = rowLabelField.val();
|
59 |
+
if ( '' !== rowLabel ) {
|
60 |
+
this.header.find( '.repeater-row-label' ).text( rowLabel );
|
61 |
+
return;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
}
|
65 |
+
this.header.find( '.repeater-row-label' ).text( this.label.value + ' ' + ( this.rowIndex + 1 ) );
|
66 |
+
};
|
67 |
Â
|
68 |
+
this.updateLabel();
|
Â
|
|
69 |
Â
};
|
70 |
Â
|
71 |
Â
wp.customize.controlConstructor.repeater = wp.customize.Control.extend({
|
72 |
Â
ready: function() {
|
73 |
+
var control = this,
|
74 |
+
limit,
|
75 |
+
theNewRow;
|
76 |
Â
|
77 |
Â
// The current value set in Control Class (set in Kirki_Customize_Repeater_Control::to_json() function)
|
78 |
Â
var settingValue = this.params.value;
|
93 |
Â
this.rows = [];
|
94 |
Â
|
95 |
Â
// Default limit choice
|
96 |
+
limit = false;
|
97 |
Â
if ( undefined !== this.params.choices.limit ) {
|
98 |
+
limit = ( 0 >= this.params.choices.limit ) ? false : parseInt( this.params.choices.limit );
|
99 |
Â
}
|
100 |
Â
|
101 |
Â
this.container.on( 'click', 'button.repeater-add', function( e ) {
|
102 |
Â
e.preventDefault();
|
103 |
Â
if ( ! limit || control.currentIndex < limit ) {
|
104 |
+
theNewRow = control.addRow();
|
105 |
+
theNewRow.toggleMinimize();
|
106 |
Â
} else {
|
107 |
Â
jQuery( control.selector + ' .limit' ).addClass( 'highlight' );
|
108 |
Â
}
|
115 |
Â
}
|
116 |
Â
});
|
117 |
Â
|
118 |
+
this.container.on( 'click keypress', '.repeater-field-image .upload-button,.repeater-field-cropped_image .upload-button', function( e ) {
|
119 |
Â
e.preventDefault();
|
120 |
Â
control.$thisButton = jQuery( this );
|
121 |
Â
control.openFrame( e );
|
122 |
Â
});
|
123 |
Â
|
124 |
+
this.container.on( 'click keypress', '.repeater-field-image .remove-button,.repeater-field-cropped_image .remove-button', function( e ) {
|
125 |
Â
e.preventDefault();
|
126 |
+
control.$thisButton = jQuery( this );
|
127 |
+
control.removeImage( e );
|
128 |
Â
});
|
129 |
Â
|
130 |
Â
/**
|
154 |
Â
// When we load the control, the fields have not been filled up
|
155 |
Â
// This is the first time that we create all the rows
|
156 |
Â
if ( settingValue.length ) {
|
157 |
+
_.each( settingValue, function( subValue ) {
|
158 |
+
control.addRow( subValue );
|
159 |
+
});
|
160 |
Â
}
|
161 |
Â
|
162 |
+
// Once we have displayed the rows, we cleanup the values
|
163 |
+
this.setValue( settingValue, true, true );
|
164 |
+
|
165 |
Â
this.repeaterFieldsContainer.sortable({
|
166 |
+
handle: '.repeater-row-header',
|
167 |
Â
update: function( e, ui ) {
|
168 |
Â
control.sort();
|
169 |
Â
}
|
189 |
Â
this.frame.open();
|
190 |
Â
},
|
191 |
Â
|
192 |
+
initFrame: function() {
|
193 |
Â
|
194 |
Â
this.frame = wp.media({
|
195 |
Â
states: [
|
208 |
Â
* Create a media modal select frame, and store it so the instance can be reused when needed.
|
209 |
Â
* This is mostly a copy/paste of Core api.CroppedImageControl in /wp-admin/js/customize-control.js
|
210 |
Â
*/
|
211 |
+
initCropperFrame: function() {
|
212 |
Â
|
213 |
Â
// We get the field id from which this was called
|
214 |
+
var currentFieldId = this.$thisButton.siblings( 'input.hidden-field' ).attr( 'data-field' ),
|
215 |
+
attrs = [ 'width', 'height', 'flex_width', 'flex_height' ]; // A list of attributes to look for
|
216 |
+
|
217 |
Â
// Make sure we got it
|
218 |
Â
if ( 'string' === typeof currentFieldId && '' !== currentFieldId ) {
|
219 |
+
|
220 |
Â
// Make fields is defined and only do the hack for cropped_image
|
221 |
Â
if ( 'object' === typeof this.params.fields[ currentFieldId ] && 'cropped_image' === this.params.fields[ currentFieldId ].type ) {
|
222 |
+
|
Â
|
|
223 |
Â
//Iterate over the list of attributes
|
224 |
+
attrs.forEach( function( el, index ) {
|
225 |
+
|
226 |
Â
// If the attribute exists in the field
|
227 |
Â
if ( 'undefined' !== typeof this.params.fields[ currentFieldId ][ el ] ) {
|
228 |
+
|
229 |
Â
// Set the attribute in the main object
|
230 |
Â
this.params[ el ] = this.params.fields[ currentFieldId ][ el ];
|
231 |
Â
}
|
232 |
+
}.bind( this ) );
|
233 |
Â
}
|
234 |
Â
}
|
235 |
Â
|
259 |
Â
|
260 |
Â
},
|
261 |
Â
|
262 |
+
onSelect: function() {
|
263 |
Â
var attachment = this.frame.state().get( 'selection' ).first().toJSON();
|
264 |
Â
|
265 |
Â
this.setImageInReaperField( attachment );
|
402 |
Â
setImageInReaperField: function( attachment ) {
|
403 |
Â
var $targetDiv = this.$thisButton.closest( '.repeater-field-image,.repeater-field-cropped_image' );
|
404 |
Â
|
405 |
+
$targetDiv.find( '.kirki-image-attachment' ).html( '<img src="' + attachment.url + '">' ).hide().slideDown( 'slow' );
|
406 |
Â
|
407 |
Â
$targetDiv.find( '.hidden-field' ).val( attachment.id );
|
408 |
Â
this.$thisButton.text( this.$thisButton.data( 'alt-label' ) );
|
413 |
Â
this.frame.close();
|
414 |
Â
},
|
415 |
Â
|
416 |
+
removeImage: function( event ) {
|
417 |
+
var $targetDiv,
|
418 |
+
$uploadButton;
|
419 |
+
|
420 |
Â
if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) {
|
421 |
Â
return;
|
422 |
Â
}
|
423 |
Â
|
424 |
+
$targetDiv = this.$thisButton.closest( '.repeater-field-image' );
|
425 |
+
$uploadButton = $targetDiv.find( '.upload-button' );
|
426 |
Â
|
427 |
Â
$targetDiv.find( '.kirki-image-attachment' ).slideUp( 'fast', function() {
|
428 |
+
jQuery( this ).show().html( jQuery( this ).data( 'placeholder' ) );
|
429 |
Â
});
|
430 |
Â
$targetDiv.find( '.hidden-field' ).val( '' );
|
431 |
Â
$uploadButton.text( $uploadButton.data( 'label' ) );
|
440 |
Â
* @return Object
|
441 |
Â
*/
|
442 |
Â
getValue: function() {
|
443 |
+
|
444 |
Â
// The setting is saved in JSON
|
445 |
Â
return JSON.parse( decodeURI( this.setting.get() ) );
|
446 |
+
|
447 |
Â
},
|
448 |
Â
|
449 |
Â
/**
|
452 |
Â
* @param newValue Object
|
453 |
Â
* @param refresh If we want to refresh the previewer or not
|
454 |
Â
*/
|
455 |
+
setValue: function( newValue, refresh, filtering ) {
|
456 |
+
|
457 |
+
// We need to filter the values after the first load to remove data requrired for diplay but that we don't want to save in DB
|
458 |
+
var filteredValue = newValue;
|
459 |
+
var filter = [];
|
460 |
+
|
461 |
+
if ( filtering ) {
|
462 |
+
jQuery.each( this.params.fields, function( index, value ) {
|
463 |
+
if ( 'image' === value.type || 'cropped_image' === value.type ) {
|
464 |
+
filter.push( index );
|
465 |
+
}
|
466 |
+
});
|
467 |
+
jQuery.each( newValue, function( index, value ) {
|
468 |
+
jQuery.each( filter, function( ind, field ) {
|
469 |
+
if ( 'undefined' !== typeof value[field] && 'undefined' !== typeof value[field].id ) {
|
470 |
+
filteredValue[index][field] = value[field].id;
|
471 |
+
}
|
472 |
+
});
|
473 |
+
});
|
474 |
+
}
|
475 |
+
|
476 |
+
this.setting.set( encodeURI( JSON.stringify( filteredValue ) ) );
|
477 |
Â
|
478 |
Â
if ( refresh ) {
|
479 |
+
|
480 |
Â
// Trigger the change event on the hidden field so
|
481 |
Â
// previewer refresh the website on Customizer
|
482 |
+
this.settingField.trigger( 'change' );
|
483 |
+
|
484 |
Â
}
|
485 |
+
|
486 |
Â
},
|
487 |
Â
|
488 |
Â
/**
|
493 |
Â
addRow: function( data ) {
|
494 |
Â
var control = this,
|
495 |
Â
i,
|
496 |
+
template = control.repeaterTemplate(), // The template for the new row (defined on Kirki_Customize_Repeater_Control::render_content() ).
|
497 |
+
settingValue = this.getValue(), // Get the current setting value.
|
498 |
+
newRowSetting = {}, // Saves the new setting data.
|
499 |
+
templateData, // Data to pass to the template
|
500 |
+
newRow;
|
Â
|
|
Â
|
|
Â
|
|
501 |
Â
|
502 |
Â
if ( template ) {
|
503 |
Â
|
510 |
Â
if ( data ) {
|
511 |
Â
for ( i in data ) {
|
512 |
Â
if ( data.hasOwnProperty( i ) && templateData.hasOwnProperty( i ) ) {
|
513 |
+
templateData[ i ]['default'] = data[ i ];
|
514 |
Â
}
|
515 |
Â
}
|
516 |
Â
}
|
517 |
Â
|
518 |
Â
templateData.index = this.currentIndex;
|
Â
|
|
519 |
Â
|
520 |
Â
// Append the template content
|
521 |
Â
template = template( templateData );
|
522 |
Â
|
523 |
Â
// Create a new row object and append the element
|
524 |
+
newRow = new RepeaterRow(
|
525 |
Â
control.currentIndex,
|
526 |
+
jQuery( template ).appendTo( control.repeaterFieldsContainer ),
|
527 |
+
control.params.row_label
|
528 |
Â
);
|
529 |
Â
|
530 |
+
newRow.container.on( 'row:remove', function( e, rowIndex ) {
|
531 |
Â
control.deleteRow( rowIndex );
|
532 |
Â
});
|
533 |
Â
|
534 |
+
newRow.container.on( 'row:update', function( e, rowIndex, fieldName, element ) {
|
535 |
Â
control.updateField.call( control, e, rowIndex, fieldName, element );
|
536 |
+
newRow.updateLabel();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
537 |
Â
});
|
538 |
Â
|
539 |
Â
// Add the row to rows collection
|
541 |
Â
|
542 |
Â
for ( i in templateData ) {
|
543 |
Â
if ( templateData.hasOwnProperty( i ) ) {
|
544 |
+
newRowSetting[ i ] = templateData[ i ]['default'];
|
545 |
Â
}
|
546 |
Â
}
|
547 |
Â
|
550 |
Â
|
551 |
Â
this.currentIndex++;
|
552 |
Â
|
553 |
+
return newRow;
|
554 |
+
|
555 |
Â
}
|
556 |
Â
|
557 |
Â
},
|
558 |
Â
|
559 |
Â
sort: function() {
|
560 |
+
var control = this,
|
561 |
+
$rows = this.repeaterFieldsContainer.find( '.repeater-row' ),
|
562 |
+
newOrder = [],
|
563 |
+
settings = control.getValue(),
|
564 |
+
newRows = [],
|
565 |
+
newSettings = [];
|
566 |
Â
|
567 |
Â
$rows.each( function( i, element ) {
|
568 |
Â
newOrder.push( jQuery( element ).data( 'row' ) );
|
569 |
Â
});
|
570 |
Â
|
Â
|
|
Â
|
|
Â
|
|
571 |
Â
jQuery.each( newOrder, function( newPosition, oldPosition ) {
|
572 |
Â
newRows[ newPosition ] = control.rows[ oldPosition ];
|
573 |
Â
newRows[ newPosition ].setRowIndex( newPosition );
|
Â
|
|
574 |
Â
|
575 |
Â
newSettings[ newPosition ] = settings[ oldPosition ];
|
576 |
Â
});
|
585 |
Â
* @param index Position of the row in the complete Setting Array
|
586 |
Â
*/
|
587 |
Â
deleteRow: function( index ) {
|
588 |
+
var currentSettings = this.getValue(),
|
589 |
+
row,
|
590 |
+
i,
|
591 |
+
prop;
|
592 |
Â
|
593 |
Â
if ( currentSettings[ index ] ) {
|
594 |
+
|
595 |
Â
// Find the row
|
596 |
+
row = this.rows[ index ];
|
597 |
Â
if ( row ) {
|
598 |
+
|
599 |
Â
// The row exists, let's delete it
|
600 |
Â
|
601 |
Â
// Remove the row settings
|
606 |
Â
|
607 |
Â
// Update the new setting values
|
608 |
Â
this.setValue( currentSettings, true );
|
609 |
+
|
610 |
Â
}
|
611 |
+
|
612 |
Â
}
|
613 |
Â
|
614 |
Â
// Remap the row numbers
|
615 |
+
i = 1;
|
616 |
+
for ( prop in this.rows ) {
|
617 |
Â
if ( this.rows.hasOwnProperty( prop ) && this.rows[ prop ] ) {
|
618 |
+
this.rows[ prop ].updateLabel();
|
619 |
Â
i++;
|
620 |
Â
}
|
621 |
Â
}
|
628 |
Â
* @param e Event Object
|
629 |
Â
*/
|
630 |
Â
updateField: function( e, rowIndex, fieldId, element ) {
|
631 |
+
var type,
|
632 |
+
row,
|
633 |
+
currentSettings;
|
634 |
+
|
635 |
+
if ( ! this.rows[ rowIndex ] ) {
|
636 |
Â
return;
|
637 |
+
}
|
638 |
Â
|
639 |
+
if ( ! this.params.fields[ fieldId ] ) {
|
640 |
Â
return;
|
641 |
+
}
|
642 |
Â
|
643 |
+
type = this.params.fields[ fieldId].type;
|
644 |
+
row = this.rows[ rowIndex ];
|
645 |
+
currentSettings = this.getValue();
|
646 |
Â
|
647 |
Â
element = jQuery( element );
|
648 |
Â
|
649 |
+
if ( undefined === typeof currentSettings[ row.rowIndex ][ fieldId ] ) {
|
650 |
Â
return;
|
651 |
Â
}
|
652 |
Â
|
653 |
Â
if ( 'checkbox' === type ) {
|
654 |
+
|
655 |
+
currentSettings[ row.rowIndex ][ fieldId ] = element.is( ':checked' );
|
656 |
+
|
657 |
Â
} else {
|
658 |
+
|
659 |
Â
// Update the settings
|
660 |
+
currentSettings[ row.rowIndex ][ fieldId ] = element.val();
|
661 |
+
|
662 |
Â
}
|
663 |
Â
|
664 |
Â
this.setValue( currentSettings, true );
|
assets/js/controls/select.js
CHANGED
@@ -1,3 +1,4 @@
|
|
Â
|
|
1 |
Â
/**
|
2 |
Â
* KIRKI CONTROL: KIRKI-SELECT
|
3 |
Â
*/
|
@@ -7,7 +8,8 @@ wp.customize.controlConstructor['kirki-select'] = wp.customize.Control.extend({
|
|
7 |
Â
|
8 |
Â
var control = this,
|
9 |
Â
element = this.container.find( 'select' ),
|
10 |
-
multiple = parseInt( element.data( 'multiple' ) )
|
Â
|
|
11 |
Â
|
12 |
Â
// If this is a multi-select control,
|
13 |
Â
// then we'll need to initialize selectize using the appropriate arguments.
|
@@ -23,13 +25,16 @@ wp.customize.controlConstructor['kirki-select'] = wp.customize.Control.extend({
|
|
23 |
Â
|
24 |
Â
// Change value
|
25 |
Â
this.container.on( 'change', 'select', function() {
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
// If this is a multi-select, then we need to convert the value to an object.
|
27 |
Â
if ( multiple > 1 ) {
|
28 |
-
|
29 |
-
} else {
|
30 |
-
var select_value = jQuery( this ).val();
|
31 |
Â
}
|
32 |
-
|
Â
|
|
Â
|
|
33 |
Â
});
|
34 |
Â
|
35 |
Â
}
|
1 |
+
/*jshint -W065 */
|
2 |
Â
/**
|
3 |
Â
* KIRKI CONTROL: KIRKI-SELECT
|
4 |
Â
*/
|
8 |
Â
|
9 |
Â
var control = this,
|
10 |
Â
element = this.container.find( 'select' ),
|
11 |
+
multiple = parseInt( element.data( 'multiple' ) ),
|
12 |
+
selectValue;
|
13 |
Â
|
14 |
Â
// If this is a multi-select control,
|
15 |
Â
// then we'll need to initialize selectize using the appropriate arguments.
|
25 |
Â
|
26 |
Â
// Change value
|
27 |
Â
this.container.on( 'change', 'select', function() {
|
28 |
+
|
29 |
+
selectValue = jQuery( this ).val();
|
30 |
+
|
31 |
Â
// If this is a multi-select, then we need to convert the value to an object.
|
32 |
Â
if ( multiple > 1 ) {
|
33 |
+
selectValue = kirkiArrayToObject( jQuery( this ).val() );
|
Â
|
|
Â
|
|
34 |
Â
}
|
35 |
+
|
36 |
+
control.setting.set( selectValue );
|
37 |
+
|
38 |
Â
});
|
39 |
Â
|
40 |
Â
}
|
assets/js/controls/slider.js
CHANGED
@@ -1,28 +1,29 @@
|
|
1 |
Â
/**
|
2 |
Â
* KIRKI CONTROL: SLIDER
|
3 |
Â
*/
|
4 |
-
jQuery(document).ready(function(
|
5 |
Â
|
6 |
Â
// Update the text value
|
7 |
-
|
8 |
Â
|
9 |
-
value =
|
10 |
-
|
11 |
-
|
12 |
-
|
Â
|
|
13 |
Â
});
|
14 |
Â
|
15 |
Â
});
|
16 |
Â
|
17 |
Â
// Handle the reset button
|
18 |
-
|
19 |
Â
|
20 |
-
var
|
21 |
-
|
22 |
Â
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
Â
|
27 |
Â
});
|
28 |
Â
|
1 |
Â
/**
|
2 |
Â
* KIRKI CONTROL: SLIDER
|
3 |
Â
*/
|
4 |
+
jQuery( document ).ready(function() {
|
5 |
Â
|
6 |
Â
// Update the text value
|
7 |
+
jQuery( 'input[type=range]' ).on( 'mousedown', function() {
|
8 |
Â
|
9 |
+
var value = jQuery( this ).attr( 'value' );
|
10 |
+
|
11 |
+
jQuery( this ).mousemove(function() {
|
12 |
+
value = jQuery( this ).attr( 'value' );
|
13 |
+
jQuery( this ).closest( 'label' ).find( '.kirki_range_value .value' ).text( value );
|
14 |
Â
});
|
15 |
Â
|
16 |
Â
});
|
17 |
Â
|
18 |
Â
// Handle the reset button
|
19 |
+
jQuery( '.kirki-slider-reset' ).click( function() {
|
20 |
Â
|
21 |
+
var thisInput = jQuery( this ).closest( 'label' ).find( 'input' ),
|
22 |
+
inputDefault = thisInput.data( 'reset_value' );
|
23 |
Â
|
24 |
+
thisInput.val( inputDefault );
|
25 |
+
thisInput.change();
|
26 |
+
jQuery( this ).closest( 'label' ).find( '.kirki_range_value .value' ).text( inputDefault );
|
27 |
Â
|
28 |
Â
});
|
29 |
Â
|
assets/js/controls/sortable.js
CHANGED
@@ -7,27 +7,26 @@ wp.customize.controlConstructor.sortable = wp.customize.Control.extend({
|
|
7 |
Â
var control = this;
|
8 |
Â
|
9 |
Â
// The hidden field that keeps the data saved
|
10 |
-
this.settingField = this.container.find('[data-customize-setting-link]').first();
|
11 |
Â
|
12 |
Â
// The sortable container
|
13 |
-
this.sortableContainer = this.container.find( 'ul.sortable').first();
|
14 |
Â
|
15 |
Â
// Set the field value for the first time
|
16 |
Â
this.setValue( this.setting.get(), false );
|
17 |
Â
|
18 |
-
|
19 |
Â
// Init the sortable container
|
20 |
Â
this.sortableContainer.sortable()
|
21 |
Â
.disableSelection()
|
22 |
-
.on(
|
23 |
Â
control.sort();
|
24 |
Â
})
|
25 |
-
.find('li').each(function() {
|
26 |
-
jQuery(this).find('i.visibility').click(function() {
|
27 |
-
jQuery(this).toggleClass('dashicons-visibility-faint').parents('li:eq(0)').toggleClass('invisible');
|
28 |
Â
});
|
29 |
Â
})
|
30 |
-
.click(function() {
|
31 |
Â
control.sort();
|
32 |
Â
});
|
33 |
Â
},
|
@@ -38,9 +37,9 @@ wp.customize.controlConstructor.sortable = wp.customize.Control.extend({
|
|
38 |
Â
sort: function() {
|
39 |
Â
var newValue = [];
|
40 |
Â
this.sortableContainer.find( 'li' ).each( function() {
|
41 |
-
var $this = jQuery(this);
|
42 |
Â
if ( ! $this.is( '.invisible' ) ) {
|
43 |
-
newValue.push( $this.data('value' ) );
|
44 |
Â
}
|
45 |
Â
});
|
46 |
Â
|
@@ -53,8 +52,10 @@ wp.customize.controlConstructor.sortable = wp.customize.Control.extend({
|
|
53 |
Â
* @return Object
|
54 |
Â
*/
|
55 |
Â
getValue: function() {
|
Â
|
|
56 |
Â
// The setting is saved in PHP serialized format
|
57 |
Â
return unserialize( this.setting.get() );
|
Â
|
|
58 |
Â
},
|
59 |
Â
|
60 |
Â
/**
|
@@ -64,17 +65,21 @@ wp.customize.controlConstructor.sortable = wp.customize.Control.extend({
|
|
64 |
Â
* @param refresh If we want to refresh the previewer or not
|
65 |
Â
*/
|
66 |
Â
setValue: function( newValue, refresh ) {
|
67 |
-
|
68 |
-
|
Â
|
|
69 |
Â
|
70 |
Â
// Update the hidden field
|
71 |
-
this.settingField.val(
|
72 |
Â
|
73 |
Â
if ( refresh ) {
|
Â
|
|
74 |
Â
// Trigger the change event on the hidden field so
|
75 |
Â
// previewer refresh the website on Customizer
|
76 |
-
this.settingField.trigger('change');
|
Â
|
|
77 |
Â
}
|
Â
|
|
78 |
Â
}
|
79 |
Â
|
80 |
Â
});
|
7 |
Â
var control = this;
|
8 |
Â
|
9 |
Â
// The hidden field that keeps the data saved
|
10 |
+
this.settingField = this.container.find( '[data-customize-setting-link]' ).first();
|
11 |
Â
|
12 |
Â
// The sortable container
|
13 |
+
this.sortableContainer = this.container.find( 'ul.sortable' ).first();
|
14 |
Â
|
15 |
Â
// Set the field value for the first time
|
16 |
Â
this.setValue( this.setting.get(), false );
|
17 |
Â
|
Â
|
|
18 |
Â
// Init the sortable container
|
19 |
Â
this.sortableContainer.sortable()
|
20 |
Â
.disableSelection()
|
21 |
+
.on( 'sortstop', function( event, ui ) {
|
22 |
Â
control.sort();
|
23 |
Â
})
|
24 |
+
.find( 'li' ).each(function() {
|
25 |
+
jQuery( this ).find( 'i.visibility' ).click( function() {
|
26 |
+
jQuery( this ).toggleClass( 'dashicons-visibility-faint' ).parents( 'li:eq(0)' ).toggleClass( 'invisible' );
|
27 |
Â
});
|
28 |
Â
})
|
29 |
+
.click( function() {
|
30 |
Â
control.sort();
|
31 |
Â
});
|
32 |
Â
},
|
37 |
Â
sort: function() {
|
38 |
Â
var newValue = [];
|
39 |
Â
this.sortableContainer.find( 'li' ).each( function() {
|
40 |
+
var $this = jQuery( this );
|
41 |
Â
if ( ! $this.is( '.invisible' ) ) {
|
42 |
+
newValue.push( $this.data( 'value' ) );
|
43 |
Â
}
|
44 |
Â
});
|
45 |
Â
|
52 |
Â
* @return Object
|
53 |
Â
*/
|
54 |
Â
getValue: function() {
|
55 |
+
|
56 |
Â
// The setting is saved in PHP serialized format
|
57 |
Â
return unserialize( this.setting.get() );
|
58 |
+
|
59 |
Â
},
|
60 |
Â
|
61 |
Â
/**
|
65 |
Â
* @param refresh If we want to refresh the previewer or not
|
66 |
Â
*/
|
67 |
Â
setValue: function( newValue, refresh ) {
|
68 |
+
|
69 |
+
var newValueSerialized = serialize( newValue );
|
70 |
+
this.setting.set( newValueSerialized );
|
71 |
Â
|
72 |
Â
// Update the hidden field
|
73 |
+
this.settingField.val( newValueSerialized );
|
74 |
Â
|
75 |
Â
if ( refresh ) {
|
76 |
+
|
77 |
Â
// Trigger the change event on the hidden field so
|
78 |
Â
// previewer refresh the website on Customizer
|
79 |
+
this.settingField.trigger( 'change' );
|
80 |
+
|
81 |
Â
}
|
82 |
+
|
83 |
Â
}
|
84 |
Â
|
85 |
Â
});
|
assets/js/controls/spacing.js
CHANGED
@@ -6,34 +6,43 @@ wp.customize.controlConstructor.spacing = wp.customize.Control.extend({
|
|
6 |
Â
ready: function() {
|
7 |
Â
|
8 |
Â
var control = this,
|
9 |
-
|
10 |
Â
|
11 |
Â
jQuery.each( ['top', 'bottom', 'left', 'right'], function( index, dimension ) {
|
12 |
Â
|
13 |
-
//
|
14 |
Â
if ( control.container.has( '.' + dimension ).size() ) {
|
15 |
-
|
16 |
-
|
Â
|
|
Â
|
|
17 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).removeClass( 'invalid' );
|
18 |
Â
if ( false === kirkiValidateCSSValue( control.setting._value[ dimension ] ) ) {
|
19 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).addClass( 'invalid' );
|
20 |
Â
}
|
Â
|
|
21 |
Â
}
|
22 |
Â
|
23 |
Â
if ( control.container.has( '.' + dimension ).size() ) {
|
24 |
Â
|
25 |
Â
control.container.on( 'change keyup paste', '.' + dimension + ' input', function() {
|
26 |
Â
|
27 |
-
subValue = jQuery( this ).val();
|
28 |
-
|
Â
|
|
29 |
Â
if ( false === kirkiValidateCSSValue( subValue ) ) {
|
Â
|
|
30 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).addClass( 'invalid' );
|
Â
|
|
31 |
Â
} else {
|
Â
|
|
32 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).removeClass( 'invalid' );
|
33 |
-
|
34 |
-
|
35 |
-
|
Â
|
|
36 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
37 |
Â
}
|
38 |
Â
|
39 |
Â
});
|
6 |
Â
ready: function() {
|
7 |
Â
|
8 |
Â
var control = this,
|
9 |
+
compiledValue = {};
|
10 |
Â
|
11 |
Â
jQuery.each( ['top', 'bottom', 'left', 'right'], function( index, dimension ) {
|
12 |
Â
|
13 |
+
// Get initial values and pre-populate the object.
|
14 |
Â
if ( control.container.has( '.' + dimension ).size() ) {
|
15 |
+
|
16 |
+
compiledValue[ dimension ] = control.setting._value[ dimension ];
|
17 |
+
|
18 |
+
// Validate the value and show a warning if it's invalid.
|
19 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).removeClass( 'invalid' );
|
20 |
Â
if ( false === kirkiValidateCSSValue( control.setting._value[ dimension ] ) ) {
|
21 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).addClass( 'invalid' );
|
22 |
Â
}
|
23 |
+
|
24 |
Â
}
|
25 |
Â
|
26 |
Â
if ( control.container.has( '.' + dimension ).size() ) {
|
27 |
Â
|
28 |
Â
control.container.on( 'change keyup paste', '.' + dimension + ' input', function() {
|
29 |
Â
|
30 |
+
var subValue = jQuery( this ).val();
|
31 |
+
|
32 |
+
// Validate the value and show a warning if it's invalid.
|
33 |
Â
if ( false === kirkiValidateCSSValue( subValue ) ) {
|
34 |
+
|
35 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).addClass( 'invalid' );
|
36 |
+
|
37 |
Â
} else {
|
38 |
+
|
39 |
Â
jQuery( control.selector + ' .' + dimension + '.input-wrapper' ).removeClass( 'invalid' );
|
40 |
+
|
41 |
+
// Only proceed if value is valid.
|
42 |
+
compiledValue[ dimension ] = subValue;
|
43 |
+
control.setting.set( compiledValue );
|
44 |
Â
wp.customize.previewer.refresh();
|
45 |
+
|
46 |
Â
}
|
47 |
Â
|
48 |
Â
});
|
assets/js/controls/switch.js
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
Â
/**
|
2 |
Â
* KIRKI CONTROL: SWITCH
|
3 |
Â
*/
|
4 |
-
wp.customize.controlConstructor
|
5 |
Â
|
6 |
Â
ready: function() {
|
7 |
Â
|
8 |
Â
var control = this;
|
9 |
Â
|
10 |
Â
// Get the initial value
|
11 |
-
var
|
12 |
Â
|
13 |
Â
// Save the value
|
14 |
Â
this.container.on( 'change', 'input', function() {
|
15 |
-
|
16 |
-
control.setting.set(
|
17 |
Â
});
|
18 |
Â
|
19 |
Â
}
|
1 |
Â
/**
|
2 |
Â
* KIRKI CONTROL: SWITCH
|
3 |
Â
*/
|
4 |
+
wp.customize.controlConstructor['switch'] = wp.customize.Control.extend({
|
5 |
Â
|
6 |
Â
ready: function() {
|
7 |
Â
|
8 |
Â
var control = this;
|
9 |
Â
|
10 |
Â
// Get the initial value
|
11 |
+
var checkboxValue = control.setting._value;
|
12 |
Â
|
13 |
Â
// Save the value
|
14 |
Â
this.container.on( 'change', 'input', function() {
|
15 |
+
checkboxValue = ( jQuery( this ).is( ':checked' ) ) ? true : false;
|
16 |
+
control.setting.set( checkboxValue );
|
17 |
Â
});
|
18 |
Â
|
19 |
Â
}
|
assets/js/controls/toggle.js
CHANGED
@@ -8,12 +8,12 @@ wp.customize.controlConstructor.toggle = wp.customize.Control.extend({
|
|
8 |
Â
var control = this;
|
9 |
Â
|
10 |
Â
// Get the initial value
|
11 |
-
var
|
12 |
Â
|
13 |
Â
// Save the value
|
14 |
Â
this.container.on( 'change', 'input', function() {
|
15 |
-
|
16 |
-
control.setting.set(
|
17 |
Â
});
|
18 |
Â
|
19 |
Â
}
|
8 |
Â
var control = this;
|
9 |
Â
|
10 |
Â
// Get the initial value
|
11 |
+
var checkboxValue = control.setting._value;
|
12 |
Â
|
13 |
Â
// Save the value
|
14 |
Â
this.container.on( 'change', 'input', function() {
|
15 |
+
checkboxValue = ( jQuery( this ).is( ':checked' ) ) ? true : false;
|
16 |
+
control.setting.set( checkboxValue );
|
17 |
Â
});
|
18 |
Â
|
19 |
Â
}
|
assets/js/controls/typography.js
CHANGED
@@ -13,88 +13,100 @@ wp.customize.controlConstructor.typography = wp.customize.Control.extend({
|
|
13 |
Â
hasDefault = false,
|
14 |
Â
firstAvailable = false,
|
15 |
Â
activeItem,
|
16 |
-
value = {}
|
Â
|
|
Â
|
|
17 |
Â
|
18 |
Â
// Make sure everything we're going to need exists.
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
value['text-transform'] = ( undefined !== control.setting._value['text-transform'] ) ? control.setting._value['text-transform'] : 'inherit';
|
28 |
-
|
29 |
-
// renders and refreshes selectize sub-controls
|
30 |
-
var renderSubControl = function( fontFamily, sub, startValue ) {
|
31 |
Â
|
32 |
-
|
Â
|
|
33 |
Â
|
34 |
-
var
|
35 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
36 |
Â
|
37 |
-
//
|
38 |
Â
if ( undefined !== jQuery( subSelector ).selectize()[0] ) {
|
39 |
Â
jQuery( subSelector ).selectize()[0].selectize.destroy();
|
40 |
Â
}
|
41 |
Â
|
42 |
-
// Get all items in the sub-list for the active font-family
|
43 |
-
|
Â
|
|
44 |
Â
// Find the font-family we've selected in the global array of fonts.
|
45 |
-
if ( fontFamily ===
|
Â
|
|
46 |
Â
// Check if this is a standard font or a google-font.
|
47 |
-
if ( undefined !==
|
48 |
-
|
49 |
Â
}
|
50 |
Â
|
51 |
-
subList =
|
52 |
Â
|
53 |
Â
}
|
54 |
Â
|
55 |
-
}
|
56 |
Â
|
57 |
Â
// This is a googlefont, or we're talking subsets.
|
58 |
-
if ( false ===
|
Â
|
|
59 |
Â
// Determine the initial value we have to use
|
60 |
Â
if ( null === startValue ) {
|
61 |
-
if ( 'variant' === sub ) { // the context here is variants
|
62 |
-
// loop the variants.
|
63 |
-
for ( var i = 0, len = subList.length; i < len; i++ ) {
|
64 |
Â
|
65 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
66 |
Â
activeItem = value.variant;
|
Â
|
|
67 |
Â
} else {
|
68 |
-
|
69 |
-
|
Â
|
|
Â
|
|
70 |
Â
hasDefault = true;
|
71 |
Â
} else if ( false === firstAvailable ) {
|
72 |
-
firstAvailable =
|
73 |
Â
}
|
Â
|
|
74 |
Â
}
|
75 |
Â
|
76 |
-
}
|
77 |
Â
|
78 |
Â
} else if ( 'subset' === sub ) { // The context here is subsets
|
79 |
Â
|
80 |
-
|
81 |
-
|
82 |
-
for ( var i = 0, len = subList.length; i < len; i++ ) {
|
83 |
Â
|
Â
|
|
84 |
Â
if ( null !== value.subset ) {
|
85 |
-
|
86 |
-
if ( undefined !==
|
87 |
-
subsetValues[
|
88 |
Â
}
|
89 |
-
}
|
90 |
Â
}
|
Â
|
|
91 |
Â
|
92 |
-
|
93 |
-
|
94 |
-
if ( 0 === subsetValues.length ) {
|
95 |
-
activeItem = ['latin'];
|
96 |
-
} else {
|
97 |
-
var subsetValuesArray = jQuery.map( subsetValues, function(value, index) {
|
98 |
Â
return [value];
|
99 |
Â
});
|
100 |
Â
activeItem = subsetValuesArray;
|
@@ -113,8 +125,7 @@ wp.customize.controlConstructor.typography = wp.customize.Control.extend({
|
|
113 |
Â
|
114 |
Â
}
|
115 |
Â
|
116 |
-
//
|
117 |
-
var subSelectize;
|
118 |
Â
subSelectize = jQuery( subSelector ).selectize({
|
119 |
Â
maxItems: ( 'variant' === sub ) ? 1 : null,
|
120 |
Â
valueField: 'id',
|
@@ -125,39 +136,33 @@ wp.customize.controlConstructor.typography = wp.customize.Control.extend({
|
|
125 |
Â
create: false,
|
126 |
Â
plugins: ( 'variant' === sub ) ? '' : ['remove_button'],
|
127 |
Â
render: {
|
128 |
-
item: function( item, escape ) {
|
129 |
-
|
130 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
131 |
Â
}).data( 'selectize' );
|
132 |
Â
|
133 |
Â
}
|
134 |
Â
|
Â
|
|
135 |
Â
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
if ( 1 >= subList.length ) {
|
140 |
-
control.container.find( '.kirki-variant-wrapper' ).css( 'display', 'none' );
|
141 |
-
} else {
|
142 |
-
control.container.find( '.kirki-variant-wrapper' ).css( 'display', 'block' );
|
143 |
-
}
|
144 |
Â
|
145 |
-
|
146 |
Â
|
147 |
-
|
148 |
-
control.container.find( '.kirki-
|
149 |
Â
} else {
|
150 |
-
control.container.find( '.kirki-
|
151 |
Â
}
|
152 |
Â
|
153 |
Â
}
|
154 |
Â
|
155 |
-
if ( true === is_standard ) {
|
156 |
-
control.container.find( '.hide-on-standard-fonts' ).css( 'display', 'none' );
|
157 |
-
} else {
|
158 |
-
control.container.find( '.hide-on-standard-fonts' ).css( 'display', 'block' );
|
159 |
-
}
|
160 |
-
|
161 |
Â
};
|
162 |
Â
|
163 |
Â
// Render the font-family
|
@@ -171,9 +176,13 @@ wp.customize.controlConstructor.typography = wp.customize.Control.extend({
|
|
171 |
Â
searchField: ['family', 'label', 'subsets'],
|
172 |
Â
create: false,
|
173 |
Â
render: {
|
174 |
-
item: function( item, escape ) {
|
175 |
-
|
176 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
177 |
Â
});
|
178 |
Â
|
179 |
Â
// Render the variants
|
@@ -187,88 +196,118 @@ wp.customize.controlConstructor.typography = wp.customize.Control.extend({
|
|
187 |
Â
renderSubControl( value['font-family'], 'subset', value.subset );
|
188 |
Â
|
189 |
Â
this.container.on( 'change', '.font-family select', function() {
|
190 |
-
|
Â
|
|
191 |
Â
value['font-family'] = jQuery( this ).val();
|
192 |
Â
control.setting.set( value );
|
193 |
-
|
Â
|
|
194 |
Â
renderSubControl( jQuery( this ).val(), 'variant', null );
|
195 |
Â
renderSubControl( jQuery( this ).val(), 'subset', null );
|
196 |
-
|
Â
|
|
197 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
198 |
Â
});
|
199 |
Â
|
200 |
Â
this.container.on( 'change', '.variant select', function() {
|
201 |
-
|
Â
|
|
202 |
Â
value.variant = jQuery( this ).val();
|
203 |
Â
control.setting.set( value );
|
204 |
-
|
Â
|
|
205 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
206 |
Â
});
|
207 |
Â
|
208 |
Â
this.container.on( 'change', '.subset select', function() {
|
209 |
-
|
Â
|
|
210 |
Â
value.subset = jQuery( this ).val();
|
211 |
Â
control.setting.set( value );
|
212 |
-
|
Â
|
|
213 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
214 |
Â
});
|
215 |
Â
|
216 |
Â
this.container.on( 'change keyup paste', '.font-size input', function() {
|
217 |
-
|
Â
|
|
218 |
Â
value['font-size'] = jQuery( this ).val();
|
219 |
Â
control.setting.set( value );
|
220 |
-
|
Â
|
|
221 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
222 |
Â
});
|
223 |
Â
|
224 |
Â
this.container.on( 'change keyup paste', '.line-height input', function() {
|
225 |
-
|
Â
|
|
226 |
Â
value['line-height'] = jQuery( this ).val();
|
227 |
Â
control.setting.set( value );
|
228 |
-
|
Â
|
|
229 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
230 |
Â
});
|
231 |
Â
|
232 |
Â
this.container.on( 'change keyup paste', '.letter-spacing input', function() {
|
233 |
-
|
Â
|
|
234 |
Â
value['letter-spacing'] = jQuery( this ).val();
|
235 |
Â
control.setting.set( value );
|
236 |
-
|
Â
|
|
237 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
238 |
Â
});
|
239 |
Â
|
240 |
Â
this.container.on( 'change', '.text-align input', function() {
|
241 |
-
|
Â
|
|
242 |
Â
value['text-align'] = jQuery( this ).val();
|
243 |
Â
control.setting.set( value );
|
244 |
-
|
Â
|
|
245 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
246 |
Â
});
|
247 |
Â
|
248 |
-
//
|
249 |
Â
jQuery( textTransformSelector ).selectize();
|
250 |
Â
this.container.on( 'change', '.text-transform select', function() {
|
251 |
-
|
Â
|
|
252 |
Â
value['text-transform'] = jQuery( this ).val();
|
253 |
Â
control.setting.set( value );
|
254 |
-
|
Â
|
|
255 |
Â
wp.customize.previewer.refresh();
|
256 |
-
});
|
257 |
Â
|
Â
|
|
258 |
Â
|
Â
|
|
259 |
Â
|
260 |
-
|
261 |
-
|
262 |
-
picker.wpColorPicker ({
|
263 |
Â
change: function() {
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
270 |
Â
}, 100 );
|
Â
|
|
271 |
Â
}
|
Â
|
|
272 |
Â
});
|
273 |
Â
|
274 |
Â
}
|
13 |
Â
hasDefault = false,
|
14 |
Â
firstAvailable = false,
|
15 |
Â
activeItem,
|
16 |
+
value = {},
|
17 |
+
renderSubControl,
|
18 |
+
picker;
|
19 |
Â
|
20 |
Â
// Make sure everything we're going to need exists.
|
21 |
+
_.each( control.params['default'], function( defaultParamValue, param ) {
|
22 |
+
if ( false !== defaultParamValue ) {
|
23 |
+
value[ param ] = defaultParamValue;
|
24 |
+
if ( undefined !== control.setting._value[ param ] ) {
|
25 |
+
value[ param ] = control.setting._value[ param ];
|
26 |
+
}
|
27 |
+
}
|
28 |
+
});
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
29 |
Â
|
30 |
+
// Renders and refreshes selectize sub-controls.
|
31 |
+
renderSubControl = function( fontFamily, sub, startValue ) {
|
32 |
Â
|
33 |
+
var subSelector = ( 'variant' === sub ) ? variantSelector : subsetSelector,
|
34 |
+
isStandard = false,
|
35 |
+
subList = {},
|
36 |
+
subValue,
|
37 |
+
subsetValues,
|
38 |
+
subsetValuesArray,
|
39 |
+
subSelectize;
|
40 |
Â
|
41 |
+
// Destroy the selectize instance.
|
42 |
Â
if ( undefined !== jQuery( subSelector ).selectize()[0] ) {
|
43 |
Â
jQuery( subSelector ).selectize()[0].selectize.destroy();
|
44 |
Â
}
|
45 |
Â
|
46 |
+
// Get all items in the sub-list for the active font-family.
|
47 |
+
_.each( kirkiAllFonts, function( font, i ) {
|
48 |
+
|
49 |
Â
// Find the font-family we've selected in the global array of fonts.
|
50 |
+
if ( fontFamily === font.family ) {
|
51 |
+
|
52 |
Â
// Check if this is a standard font or a google-font.
|
53 |
+
if ( undefined !== font.isStandard && true === font.isStandard ) {
|
54 |
+
isStandard = true;
|
55 |
Â
}
|
56 |
Â
|
57 |
+
subList = font[ sub + 's' ]; // The 's' is for plural (variant/variants, subset/subsets)
|
58 |
Â
|
59 |
Â
}
|
60 |
Â
|
61 |
+
});
|
62 |
Â
|
63 |
Â
// This is a googlefont, or we're talking subsets.
|
64 |
+
if ( false === isStandard || 'subset' !== sub ) {
|
65 |
+
|
66 |
Â
// Determine the initial value we have to use
|
67 |
Â
if ( null === startValue ) {
|
Â
|
|
Â
|
|
Â
|
|
68 |
Â
|
69 |
+
if ( 'variant' === sub ) { // The context here is variants
|
70 |
+
|
71 |
+
// Loop the variants.
|
72 |
+
_.each( subList, function( variant ) {
|
73 |
+
|
74 |
+
var defaultValue;
|
75 |
+
|
76 |
+
if ( undefined !== variant.id ) {
|
77 |
+
|
78 |
Â
activeItem = value.variant;
|
79 |
+
|
80 |
Â
} else {
|
81 |
+
|
82 |
+
defaultValue = 'regular';
|
83 |
+
|
84 |
+
if ( defaultValue === variant.id ) {
|
85 |
Â
hasDefault = true;
|
86 |
Â
} else if ( false === firstAvailable ) {
|
87 |
+
firstAvailable = variant.id;
|
88 |
Â
}
|
89 |
+
|
90 |
Â
}
|
91 |
Â
|
92 |
+
});
|
93 |
Â
|
94 |
Â
} else if ( 'subset' === sub ) { // The context here is subsets
|
95 |
Â
|
96 |
+
subsetValues = {};
|
Â
|
|
Â
|
|
97 |
Â
|
98 |
+
_.each( subList, function( subSet ) {
|
99 |
Â
if ( null !== value.subset ) {
|
100 |
+
_.each( value.subset, function( item ) {
|
101 |
+
if ( undefined !== subSet && item === subSet.id ) {
|
102 |
+
subsetValues[ item ] = item;
|
103 |
Â
}
|
104 |
+
});
|
105 |
Â
}
|
106 |
+
});
|
107 |
Â
|
108 |
+
if ( 0 !== subsetValues.length ) {
|
109 |
+
subsetValuesArray = jQuery.map( subsetValues, function( value, index ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
110 |
Â
return [value];
|
111 |
Â
});
|
112 |
Â
activeItem = subsetValuesArray;
|
125 |
Â
|
126 |
Â
}
|
127 |
Â
|
128 |
+
// Create
|
Â
|
|
129 |
Â
subSelectize = jQuery( subSelector ).selectize({
|
130 |
Â
maxItems: ( 'variant' === sub ) ? 1 : null,
|
131 |
Â
valueField: 'id',
|
136 |
Â
create: false,
|
137 |
Â
plugins: ( 'variant' === sub ) ? '' : ['remove_button'],
|
138 |
Â
render: {
|
139 |
+
item: function( item, escape ) {
|
140 |
+
return '<div>' + escape( item.label ) + '</div>';
|
141 |
+
},
|
142 |
+
option: function( item, escape ) {
|
143 |
+
return '<div>' + escape( item.label ) + '</div>';
|
144 |
+
}
|
145 |
+
}
|
146 |
Â
}).data( 'selectize' );
|
147 |
Â
|
148 |
Â
}
|
149 |
Â
|
150 |
+
if ( true === isStandard ) {
|
151 |
Â
|
152 |
+
// Hide unrelated fields on standard fonts.
|
153 |
+
control.container.find( '.hide-on-standard-fonts' ).css( 'display', 'none' );
|
154 |
+
} else {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
155 |
Â
|
156 |
+
if ( 2 > subList.length ) {
|
157 |
Â
|
158 |
+
// If only 1 option is available then there's no reason to show this.
|
159 |
+
control.container.find( '.kirki-' + sub + '-wrapper' ).css( 'display', 'none' );
|
160 |
Â
} else {
|
161 |
+
control.container.find( '.kirki-' + sub + '-wrapper' ).css( 'display', 'block' );
|
162 |
Â
}
|
163 |
Â
|
164 |
Â
}
|
165 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
166 |
Â
};
|
167 |
Â
|
168 |
Â
// Render the font-family
|
176 |
Â
searchField: ['family', 'label', 'subsets'],
|
177 |
Â
create: false,
|
178 |
Â
render: {
|
179 |
+
item: function( item, escape ) {
|
180 |
+
return '<div>' + escape( item.label ) + '</div>';
|
181 |
+
},
|
182 |
+
option: function( item, escape ) {
|
183 |
+
return '<div>' + escape( item.label ) + '</div>';
|
184 |
+
}
|
185 |
+
}
|
186 |
Â
});
|
187 |
Â
|
188 |
Â
// Render the variants
|
196 |
Â
renderSubControl( value['font-family'], 'subset', value.subset );
|
197 |
Â
|
198 |
Â
this.container.on( 'change', '.font-family select', function() {
|
199 |
+
|
200 |
+
// Add the value to the array and set the setting's value
|
201 |
Â
value['font-family'] = jQuery( this ).val();
|
202 |
Â
control.setting.set( value );
|
203 |
+
|
204 |
+
// Trigger changes to variants & subsets
|
205 |
Â
renderSubControl( jQuery( this ).val(), 'variant', null );
|
206 |
Â
renderSubControl( jQuery( this ).val(), 'subset', null );
|
207 |
+
|
208 |
+
// Refresh the preview
|
209 |
Â
wp.customize.previewer.refresh();
|
210 |
+
|
211 |
Â
});
|
212 |
Â
|
213 |
Â
this.container.on( 'change', '.variant select', function() {
|
214 |
+
|
215 |
+
// Add the value to the array and set the setting's value
|
216 |
Â
value.variant = jQuery( this ).val();
|
217 |
Â
control.setting.set( value );
|
218 |
+
|
219 |
+
// Refresh the preview
|
220 |
Â
wp.customize.previewer.refresh();
|
221 |
+
|
222 |
Â
});
|
223 |
Â
|
224 |
Â
this.container.on( 'change', '.subset select', function() {
|
225 |
+
|
226 |
+
// Add the value to the array and set the setting's value.
|
227 |
Â
value.subset = jQuery( this ).val();
|
228 |
Â
control.setting.set( value );
|
229 |
+
|
230 |
+
// Refresh the preview
|
231 |
Â
wp.customize.previewer.refresh();
|
232 |
+
|
233 |
Â
});
|
234 |
Â
|
235 |
Â
this.container.on( 'change keyup paste', '.font-size input', function() {
|
236 |
+
|
237 |
+
// Add the value to the array and set the setting's value
|
238 |
Â
value['font-size'] = jQuery( this ).val();
|
239 |
Â
control.setting.set( value );
|
240 |
+
|
241 |
+
// Refresh the preview
|
242 |
Â
wp.customize.previewer.refresh();
|
243 |
+
|
244 |
Â
});
|
245 |
Â
|
246 |
Â
this.container.on( 'change keyup paste', '.line-height input', function() {
|
247 |
+
|
248 |
+
// Add the value to the array and set the setting's value
|
249 |
Â
value['line-height'] = jQuery( this ).val();
|
250 |
Â
control.setting.set( value );
|
251 |
+
|
252 |
+
// Refresh the preview
|
253 |
Â
wp.customize.previewer.refresh();
|
254 |
+
|
255 |
Â
});
|
256 |
Â
|
257 |
Â
this.container.on( 'change keyup paste', '.letter-spacing input', function() {
|
258 |
+
|
259 |
+
// Add the value to the array and set the setting's value
|
260 |
Â
value['letter-spacing'] = jQuery( this ).val();
|
261 |
Â
control.setting.set( value );
|
262 |
+
|
263 |
+
// Refresh the preview
|
264 |
Â
wp.customize.previewer.refresh();
|
265 |
+
|
266 |
Â
});
|
267 |
Â
|
268 |
Â
this.container.on( 'change', '.text-align input', function() {
|
269 |
+
|
270 |
+
// Add the value to the array and set the setting's value.
|
271 |
Â
value['text-align'] = jQuery( this ).val();
|
272 |
Â
control.setting.set( value );
|
273 |
+
|
274 |
+
// Refresh the preview
|
275 |
Â
wp.customize.previewer.refresh();
|
276 |
+
|
277 |
Â
});
|
278 |
Â
|
279 |
+
// Text-transform
|
280 |
Â
jQuery( textTransformSelector ).selectize();
|
281 |
Â
this.container.on( 'change', '.text-transform select', function() {
|
282 |
+
|
283 |
+
// Add the value to the array and set the setting's value.
|
284 |
Â
value['text-transform'] = jQuery( this ).val();
|
285 |
Â
control.setting.set( value );
|
286 |
+
|
287 |
+
// Refresh the preview
|
288 |
Â
wp.customize.previewer.refresh();
|
Â
|
|
289 |
Â
|
290 |
+
});
|
291 |
Â
|
292 |
+
picker = this.container.find( '.kirki-color-control' );
|
293 |
Â
|
294 |
+
// Change color
|
295 |
+
picker.wpColorPicker({
|
Â
|
|
296 |
Â
change: function() {
|
297 |
+
|
298 |
+
setTimeout( function() {
|
299 |
+
|
300 |
+
// Add the value to the array and set the setting's value
|
301 |
+
value.color = picker.val();
|
302 |
+
control.setting.set( value );
|
303 |
+
|
304 |
+
// Refresh the preview
|
305 |
+
wp.customize.previewer.refresh();
|
306 |
+
|
307 |
Â
}, 100 );
|
308 |
+
|
309 |
Â
}
|
310 |
+
|
311 |
Â
});
|
312 |
Â
|
313 |
Â
}
|
assets/js/functions/array-to-object.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
Â
function kirkiArrayToObject( arr ) {
|
2 |
Â
var obj = {};
|
3 |
Â
if ( null !== arr ) {
|
4 |
-
|
5 |
-
if ( undefined !==
|
6 |
-
obj
|
7 |
Â
}
|
8 |
-
}
|
9 |
Â
}
|
10 |
Â
return obj;
|
11 |
Â
}
|
1 |
Â
function kirkiArrayToObject( arr ) {
|
2 |
Â
var obj = {};
|
3 |
Â
if ( null !== arr ) {
|
4 |
+
_.each( arr, function( item, i ) {
|
5 |
+
if ( undefined !== item ) {
|
6 |
+
obj.i = item;
|
7 |
Â
}
|
8 |
+
});
|
9 |
Â
}
|
10 |
Â
return obj;
|
11 |
Â
}
|
assets/js/functions/object-to-array.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
Â
function kirkiObjectToArray( obj ) {
|
2 |
Â
var arr = [];
|
3 |
Â
if ( null !== obj ) {
|
4 |
-
|
5 |
-
if ( undefined !==
|
6 |
-
arr.push(
|
7 |
Â
}
|
8 |
-
}
|
9 |
Â
}
|
10 |
Â
return arr;
|
11 |
Â
}
|
1 |
Â
function kirkiObjectToArray( obj ) {
|
2 |
Â
var arr = [];
|
3 |
Â
if ( null !== obj ) {
|
4 |
+
_.each( obj, function( value ) {
|
5 |
+
if ( undefined !== value ) {
|
6 |
+
arr.push( value );
|
7 |
Â
}
|
8 |
+
});
|
9 |
Â
}
|
10 |
Â
return arr;
|
11 |
Â
}
|
assets/js/functions/set-value.js
CHANGED
@@ -4,12 +4,17 @@ function kirkiSetValue( setting, value ) {
|
|
4 |
Â
* This will be used to get properties we need from that control,
|
5 |
Â
* and determine if we need to do any further work based on those.
|
6 |
Â
*/
|
7 |
-
var
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
8 |
Â
/**
|
9 |
Â
* Check if the control we want to affect actually exists.
|
10 |
Â
* If not then skip the item,
|
11 |
Â
*/
|
12 |
-
if (
|
13 |
Â
return true;
|
14 |
Â
}
|
15 |
Â
|
@@ -18,7 +23,7 @@ function kirkiSetValue( setting, value ) {
|
|
18 |
Â
* We want the value to live-update on the controls themselves,
|
19 |
Â
* so depending on the control's type we'll need to do different things.
|
20 |
Â
*/
|
21 |
-
|
22 |
Â
|
23 |
Â
/**
|
24 |
Â
* Below we're starting to check the control tyype and depending on what that is,
|
@@ -32,18 +37,24 @@ function kirkiSetValue( setting, value ) {
|
|
32 |
Â
* toggle
|
33 |
Â
* kirki-checkbox
|
34 |
Â
*/
|
35 |
-
if ( 'checkbox'
|
Â
|
|
Â
|
|
36 |
Â
|
37 |
-
if ( 1 == value ) {
|
38 |
Â
// Update the value visually in the control
|
39 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'checked', true );
|
Â
|
|
40 |
Â
// Update the value in the customizer object
|
41 |
Â
wp.customize.instance( setting ).set( true );
|
Â
|
|
42 |
Â
} else {
|
Â
|
|
43 |
Â
// Update the value visually in the control
|
44 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'checked', false );
|
Â
|
|
45 |
Â
// Update the value in the customizer object
|
46 |
Â
wp.customize.instance( setting ).set( false );
|
Â
|
|
47 |
Â
}
|
48 |
Â
|
49 |
Â
}
|
@@ -54,38 +65,44 @@ function kirkiSetValue( setting, value ) {
|
|
54 |
Â
* select2-multiple
|
55 |
Â
* kirki-select
|
56 |
Â
*/
|
57 |
-
else if ( 'select'
|
58 |
Â
|
59 |
Â
// Update the value visually in the control
|
60 |
-
|
61 |
-
|
62 |
Â
selectize.setValue( value, true );
|
Â
|
|
63 |
Â
// Update the value in the customizer object
|
64 |
Â
wp.customize.instance( setting ).set( value );
|
65 |
Â
|
66 |
Â
}
|
Â
|
|
67 |
Â
/**
|
68 |
Â
* Control types:
|
69 |
Â
* slider
|
70 |
Â
*/
|
71 |
-
else if ( 'slider'
|
72 |
Â
|
73 |
Â
// Update the value visually in the control (slider)
|
74 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'value', value );
|
Â
|
|
75 |
Â
// Update the value visually in the control (number)
|
76 |
Â
jQuery( wp.customize.control( setting ).container.find( '.kirki_range_value .value' ) ).html( value );
|
Â
|
|
77 |
Â
// Update the value in the customizer object
|
78 |
Â
wp.customize.instance( setting ).set( value );
|
79 |
Â
|
80 |
Â
}
|
Â
|
|
81 |
Â
/**
|
82 |
Â
* Control types:
|
83 |
Â
* textarea
|
84 |
Â
*/
|
85 |
-
else if ( 'kirki-generic'
|
86 |
Â
|
87 |
Â
// Update the value visually in the control
|
88 |
Â
jQuery( wp.customize.control( setting ).container.find( 'textarea' ) ).prop( 'value', value );
|
Â
|
|
89 |
Â
// Update the value in the customizer object
|
90 |
Â
wp.customize( setting ).set( value );
|
91 |
Â
|
@@ -96,10 +113,10 @@ function kirkiSetValue( setting, value ) {
|
|
96 |
Â
* kirki-color
|
97 |
Â
* color-alpha
|
98 |
Â
*/
|
99 |
-
else if ( 'color-alpha'
|
100 |
Â
|
101 |
Â
// Update the value visually in the control
|
102 |
-
|
103 |
Â
|
104 |
Â
alphaColorControl
|
105 |
Â
.attr( 'data-default-color', value )
|
@@ -114,10 +131,11 @@ function kirkiSetValue( setting, value ) {
|
|
114 |
Â
* Control types:
|
115 |
Â
* multicheck
|
116 |
Â
*/
|
117 |
-
else if ( 'multicheck'
|
118 |
Â
|
119 |
Â
// Update the value in the customizer object
|
120 |
Â
wp.customize.instance( setting ).set( value );
|
Â
|
|
121 |
Â
/**
|
122 |
Â
* Update the value visually in the control.
|
123 |
Â
* This value is an array so we'll have to go through each one of the items
|
@@ -130,11 +148,12 @@ function kirkiSetValue( setting, value ) {
|
|
130 |
Â
jQuery( this ).prop( 'checked', false );
|
131 |
Â
});
|
132 |
Â
|
133 |
-
|
134 |
-
jQuery( wp.customize.control( setting ).container.find( 'input[value="' + value[
|
135 |
-
}
|
136 |
Â
|
137 |
Â
}
|
Â
|
|
138 |
Â
/**
|
139 |
Â
* Control types:
|
140 |
Â
* radio-buttonset
|
@@ -145,68 +164,98 @@ function kirkiSetValue( setting, value ) {
|
|
145 |
Â
* color-pallette
|
146 |
Â
* palette
|
147 |
Â
*/
|
148 |
-
else if ( 'radio-buttonset'
|
149 |
Â
|
150 |
Â
// Update the value visually in the control
|
151 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input[value="' + value + '"]' ) ).prop( 'checked', true );
|
Â
|
|
152 |
Â
// Update the value in the customizer object
|
153 |
Â
wp.customize.instance( setting ).set( value );
|
154 |
Â
|
155 |
Â
}
|
Â
|
|
156 |
Â
/**
|
157 |
Â
* Control types:
|
158 |
Â
* typography
|
159 |
Â
*/
|
160 |
-
else if ( 'typography'
|
Â
|
|
161 |
Â
if ( undefined !== value['font-family'] ) {
|
162 |
-
|
163 |
-
|
Â
|
|
Â
|
|
164 |
Â
// Update the value visually in the control
|
165 |
Â
selectize.setValue( value['font-family'], true );
|
Â
|
|
166 |
Â
}
|
Â
|
|
167 |
Â
if ( undefined !== value.variant ) {
|
168 |
-
|
169 |
-
|
Â
|
|
Â
|
|
170 |
Â
// Update the value visually in the control
|
171 |
Â
selectize.setValue( value.variant, true );
|
Â
|
|
172 |
Â
}
|
Â
|
|
173 |
Â
if ( undefined !== value.subset ) {
|
174 |
-
|
175 |
-
|
Â
|
|
Â
|
|
176 |
Â
// Update the value visually in the control
|
177 |
Â
selectize.setValue( value.subset, true );
|
Â
|
|
178 |
Â
}
|
Â
|
|
179 |
Â
if ( undefined !== value['font-size'] ) {
|
Â
|
|
180 |
Â
// Update the value visually in the control
|
181 |
Â
jQuery( wp.customize.control( setting ).container.find( '.font-size input' ) ).prop( 'value', value['font-size'] );
|
Â
|
|
182 |
Â
}
|
Â
|
|
183 |
Â
if ( undefined !== value['line-height'] ) {
|
Â
|
|
184 |
Â
// Update the value visually in the control
|
185 |
Â
jQuery( wp.customize.control( setting ).container.find( '.line-height input' ) ).prop( 'value', value['line-height'] );
|
Â
|
|
186 |
Â
}
|
Â
|
|
187 |
Â
if ( undefined !== value['letter-spacing'] ) {
|
Â
|
|
188 |
Â
// Update the value visually in the control
|
189 |
Â
jQuery( wp.customize.control( setting ).container.find( '.letter-spacing input' ) ).prop( 'value', value['letter-spacing'] );
|
Â
|
|
190 |
Â
}
|
Â
|
|
191 |
Â
if ( undefined !== value.color ) {
|
Â
|
|
192 |
Â
// Update the value visually in the control
|
193 |
-
|
194 |
Â
|
195 |
Â
typographyColor
|
196 |
Â
.attr( 'data-default-color', value )
|
197 |
Â
.data( 'default-color', value )
|
198 |
Â
.wpColorPicker( 'color', value );
|
199 |
Â
}
|
Â
|
|
200 |
Â
// Update the value in the customizer object
|
201 |
Â
wp.customize.instance( setting ).set( value );
|
Â
|
|
202 |
Â
}
|
Â
|
|
203 |
Â
/**
|
204 |
Â
* Control types:
|
205 |
Â
* repeater
|
206 |
Â
*/
|
207 |
-
else if ( 'repeater'
|
Â
|
|
208 |
Â
// Do nothing
|
209 |
Â
}
|
Â
|
|
210 |
Â
/**
|
211 |
Â
* Fallback for all other controls.
|
212 |
Â
*/
|
@@ -214,6 +263,7 @@ function kirkiSetValue( setting, value ) {
|
|
214 |
Â
|
215 |
Â
// Update the value visually in the control
|
216 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'value', value );
|
Â
|
|
217 |
Â
// Update the value in the customizer object
|
218 |
Â
wp.customize.instance( setting ).set( value );
|
219 |
Â
|
4 |
Â
* This will be used to get properties we need from that control,
|
5 |
Â
* and determine if we need to do any further work based on those.
|
6 |
Â
*/
|
7 |
+
var subControl = wp.customize.settings.controls[ setting ],
|
8 |
+
$select,
|
9 |
+
selectize,
|
10 |
+
controlType,
|
11 |
+
alphaColorControl,
|
12 |
+
typographyColor;
|
13 |
Â
/**
|
14 |
Â
* Check if the control we want to affect actually exists.
|
15 |
Â
* If not then skip the item,
|
16 |
Â
*/
|
17 |
+
if ( undefined === typeof subControl ) {
|
18 |
Â
return true;
|
19 |
Â
}
|
20 |
Â
|
23 |
Â
* We want the value to live-update on the controls themselves,
|
24 |
Â
* so depending on the control's type we'll need to do different things.
|
25 |
Â
*/
|
26 |
+
controlType = subControl.type;
|
27 |
Â
|
28 |
Â
/**
|
29 |
Â
* Below we're starting to check the control tyype and depending on what that is,
|
37 |
Â
* toggle
|
38 |
Â
* kirki-checkbox
|
39 |
Â
*/
|
40 |
+
if ( 'checkbox' === controlType || 'switch' === controlType || 'toggle' === controlType || 'kirki-checkbox' === controlType ) {
|
41 |
+
|
42 |
+
if ( 1 === value || '1' === value || true === value ) {
|
43 |
Â
|
Â
|
|
44 |
Â
// Update the value visually in the control
|
45 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'checked', true );
|
46 |
+
|
47 |
Â
// Update the value in the customizer object
|
48 |
Â
wp.customize.instance( setting ).set( true );
|
49 |
+
|
50 |
Â
} else {
|
51 |
+
|
52 |
Â
// Update the value visually in the control
|
53 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'checked', false );
|
54 |
+
|
55 |
Â
// Update the value in the customizer object
|
56 |
Â
wp.customize.instance( setting ).set( false );
|
57 |
+
|
58 |
Â
}
|
59 |
Â
|
60 |
Â
}
|
65 |
Â
* select2-multiple
|
66 |
Â
* kirki-select
|
67 |
Â
*/
|
68 |
+
else if ( 'select' === controlType || 'select2' === controlType || 'select2-multiple' === controlType || 'kirki-select' === controlType || 'preset' === controlType ) {
|
69 |
Â
|
70 |
Â
// Update the value visually in the control
|
71 |
+
$select = jQuery( wp.customize.control( setting ).container.find( 'select' ) ).selectize();
|
72 |
+
selectize = $select[0].selectize;
|
73 |
Â
selectize.setValue( value, true );
|
74 |
+
|
75 |
Â
// Update the value in the customizer object
|
76 |
Â
wp.customize.instance( setting ).set( value );
|
77 |
Â
|
78 |
Â
}
|
79 |
+
|
80 |
Â
/**
|
81 |
Â
* Control types:
|
82 |
Â
* slider
|
83 |
Â
*/
|
84 |
+
else if ( 'slider' === controlType ) {
|
85 |
Â
|
86 |
Â
// Update the value visually in the control (slider)
|
87 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'value', value );
|
88 |
+
|
89 |
Â
// Update the value visually in the control (number)
|
90 |
Â
jQuery( wp.customize.control( setting ).container.find( '.kirki_range_value .value' ) ).html( value );
|
91 |
+
|
92 |
Â
// Update the value in the customizer object
|
93 |
Â
wp.customize.instance( setting ).set( value );
|
94 |
Â
|
95 |
Â
}
|
96 |
+
|
97 |
Â
/**
|
98 |
Â
* Control types:
|
99 |
Â
* textarea
|
100 |
Â
*/
|
101 |
+
else if ( 'kirki-generic' === controlType && undefined !== subControl.choices && undefined !== subControl.choices.element && 'textarea' === subControl.choices.element ) {
|
102 |
Â
|
103 |
Â
// Update the value visually in the control
|
104 |
Â
jQuery( wp.customize.control( setting ).container.find( 'textarea' ) ).prop( 'value', value );
|
105 |
+
|
106 |
Â
// Update the value in the customizer object
|
107 |
Â
wp.customize( setting ).set( value );
|
108 |
Â
|
113 |
Â
* kirki-color
|
114 |
Â
* color-alpha
|
115 |
Â
*/
|
116 |
+
else if ( 'color-alpha' === controlType || 'kirki-color' === controlType || 'color' === controlType ) {
|
117 |
Â
|
118 |
Â
// Update the value visually in the control
|
119 |
+
alphaColorControl = wp.customize.control( setting ).container.find( '.kirki-color-control' );
|
120 |
Â
|
121 |
Â
alphaColorControl
|
122 |
Â
.attr( 'data-default-color', value )
|
131 |
Â
* Control types:
|
132 |
Â
* multicheck
|
133 |
Â
*/
|
134 |
+
else if ( 'multicheck' === controlType ) {
|
135 |
Â
|
136 |
Â
// Update the value in the customizer object
|
137 |
Â
wp.customize.instance( setting ).set( value );
|
138 |
+
|
139 |
Â
/**
|
140 |
Â
* Update the value visually in the control.
|
141 |
Â
* This value is an array so we'll have to go through each one of the items
|
148 |
Â
jQuery( this ).prop( 'checked', false );
|
149 |
Â
});
|
150 |
Â
|
151 |
+
_.each( value, function( subValue, i ) {
|
152 |
+
jQuery( wp.customize.control( setting ).container.find( 'input[value="' + value[ i ] + '"]' ) ).prop( 'checked', true );
|
153 |
+
});
|
154 |
Â
|
155 |
Â
}
|
156 |
+
|
157 |
Â
/**
|
158 |
Â
* Control types:
|
159 |
Â
* radio-buttonset
|
164 |
Â
* color-pallette
|
165 |
Â
* palette
|
166 |
Â
*/
|
167 |
+
else if ( 'radio-buttonset' === controlType || 'radio-image' === controlType || 'radio' === controlType || 'kirki-radio' === controlType || 'dashicons' === controlType || 'color-palette' === controlType || 'palette' === controlType ) {
|
168 |
Â
|
169 |
Â
// Update the value visually in the control
|
170 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input[value="' + value + '"]' ) ).prop( 'checked', true );
|
171 |
+
|
172 |
Â
// Update the value in the customizer object
|
173 |
Â
wp.customize.instance( setting ).set( value );
|
174 |
Â
|
175 |
Â
}
|
176 |
+
|
177 |
Â
/**
|
178 |
Â
* Control types:
|
179 |
Â
* typography
|
180 |
Â
*/
|
181 |
+
else if ( 'typography' === controlType ) {
|
182 |
+
|
183 |
Â
if ( undefined !== value['font-family'] ) {
|
184 |
+
|
185 |
+
$select = jQuery( wp.customize.control( setting ).container.find( '.font-family select' ) ).selectize();
|
186 |
+
selectize = $select[0].selectize;
|
187 |
+
|
188 |
Â
// Update the value visually in the control
|
189 |
Â
selectize.setValue( value['font-family'], true );
|
190 |
+
|
191 |
Â
}
|
192 |
+
|
193 |
Â
if ( undefined !== value.variant ) {
|
194 |
+
|
195 |
+
$select = jQuery( wp.customize.control( setting ).container.find( '.variant select' ) ).selectize();
|
196 |
+
selectize = $select[0].selectize;
|
197 |
+
|
198 |
Â
// Update the value visually in the control
|
199 |
Â
selectize.setValue( value.variant, true );
|
200 |
+
|
201 |
Â
}
|
202 |
+
|
203 |
Â
if ( undefined !== value.subset ) {
|
204 |
+
|
205 |
+
$select = jQuery( wp.customize.control( setting ).container.find( '.subset select' ) ).selectize();
|
206 |
+
selectize = $select[0].selectize;
|
207 |
+
|
208 |
Â
// Update the value visually in the control
|
209 |
Â
selectize.setValue( value.subset, true );
|
210 |
+
|
211 |
Â
}
|
212 |
+
|
213 |
Â
if ( undefined !== value['font-size'] ) {
|
214 |
+
|
215 |
Â
// Update the value visually in the control
|
216 |
Â
jQuery( wp.customize.control( setting ).container.find( '.font-size input' ) ).prop( 'value', value['font-size'] );
|
217 |
+
|
218 |
Â
}
|
219 |
+
|
220 |
Â
if ( undefined !== value['line-height'] ) {
|
221 |
+
|
222 |
Â
// Update the value visually in the control
|
223 |
Â
jQuery( wp.customize.control( setting ).container.find( '.line-height input' ) ).prop( 'value', value['line-height'] );
|
224 |
+
|
225 |
Â
}
|
226 |
+
|
227 |
Â
if ( undefined !== value['letter-spacing'] ) {
|
228 |
+
|
229 |
Â
// Update the value visually in the control
|
230 |
Â
jQuery( wp.customize.control( setting ).container.find( '.letter-spacing input' ) ).prop( 'value', value['letter-spacing'] );
|
231 |
+
|
232 |
Â
}
|
233 |
+
|
234 |
Â
if ( undefined !== value.color ) {
|
235 |
+
|
236 |
Â
// Update the value visually in the control
|
237 |
+
typographyColor = wp.customize.control( setting ).container.find( '.kirki-color-control' );
|
238 |
Â
|
239 |
Â
typographyColor
|
240 |
Â
.attr( 'data-default-color', value )
|
241 |
Â
.data( 'default-color', value )
|
242 |
Â
.wpColorPicker( 'color', value );
|
243 |
Â
}
|
244 |
+
|
245 |
Â
// Update the value in the customizer object
|
246 |
Â
wp.customize.instance( setting ).set( value );
|
247 |
+
|
248 |
Â
}
|
249 |
+
|
250 |
Â
/**
|
251 |
Â
* Control types:
|
252 |
Â
* repeater
|
253 |
Â
*/
|
254 |
+
else if ( 'repeater' === controlType ) {
|
255 |
+
|
256 |
Â
// Do nothing
|
257 |
Â
}
|
258 |
+
|
259 |
Â
/**
|
260 |
Â
* Fallback for all other controls.
|
261 |
Â
*/
|
263 |
Â
|
264 |
Â
// Update the value visually in the control
|
265 |
Â
jQuery( wp.customize.control( setting ).container.find( 'input' ) ).prop( 'value', value );
|
266 |
+
|
267 |
Â
// Update the value in the customizer object
|
268 |
Â
wp.customize.instance( setting ).set( value );
|
269 |
Â
|
assets/js/functions/validate-css-value.js
CHANGED
@@ -1,25 +1,35 @@
|
|
1 |
Â
function kirkiValidateCSSValue( value ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
// 0 is always a valid value
|
3 |
-
if ( '0'
|
4 |
Â
return true;
|
5 |
Â
}
|
6 |
-
|
Â
|
|
7 |
Â
if ( 0 <= value.indexOf( 'calc(' ) && 0 <= value.indexOf( ')' ) ) {
|
8 |
Â
return true;
|
9 |
Â
}
|
10 |
Â
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
Â
// Get the unit
|
15 |
-
|
16 |
-
|
Â
|
|
17 |
Â
if ( isNaN( numericValue ) ) {
|
18 |
Â
return false;
|
19 |
Â
}
|
20 |
-
|
Â
|
|
21 |
Â
if ( -1 === jQuery.inArray( unit, validUnits ) ) {
|
22 |
Â
return false;
|
23 |
Â
}
|
Â
|
|
24 |
Â
return true;
|
Â
|
|
25 |
Â
}
|
1 |
Â
function kirkiValidateCSSValue( value ) {
|
2 |
+
|
3 |
+
var validUnits = ['rem', 'em', 'ex', '%', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ch', 'vh', 'vw', 'vmin', 'vmax'],
|
4 |
+
numericValue,
|
5 |
+
unit;
|
6 |
+
|
7 |
Â
// 0 is always a valid value
|
8 |
+
if ( '0' === value ) {
|
9 |
Â
return true;
|
10 |
Â
}
|
11 |
+
|
12 |
+
// If we're using calc() just return true.
|
13 |
Â
if ( 0 <= value.indexOf( 'calc(' ) && 0 <= value.indexOf( ')' ) ) {
|
14 |
Â
return true;
|
15 |
Â
}
|
16 |
Â
|
17 |
+
// Get the numeric value.
|
18 |
+
numericValue = parseFloat( value );
|
19 |
+
|
20 |
Â
// Get the unit
|
21 |
+
unit = value.replace( numericValue, '' );
|
22 |
+
|
23 |
+
// Check the validity of the numeric value.
|
24 |
Â
if ( isNaN( numericValue ) ) {
|
25 |
Â
return false;
|
26 |
Â
}
|
27 |
+
|
28 |
+
// Check the validity of the units.
|
29 |
Â
if ( -1 === jQuery.inArray( unit, validUnits ) ) {
|
30 |
Â
return false;
|
31 |
Â
}
|
32 |
+
|
33 |
Â
return true;
|
34 |
+
|
35 |
Â
}
|
assets/js/postmessage.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
( function(
|
2 |
Â
var api = wp.customize;
|
3 |
Â
|
4 |
-
|
5 |
Â
|
6 |
Â
var css = '',
|
7 |
Â
cssArray = {};
|
@@ -12,95 +12,113 @@
|
|
12 |
Â
|
13 |
Â
if ( undefined !== jsVars && 0 < jsVars.length ) {
|
14 |
Â
|
15 |
-
|
Â
|
|
Â
|
|
16 |
Â
|
17 |
Â
// Make sure element is defined.
|
18 |
-
if ( undefined ===
|
19 |
-
|
20 |
Â
}
|
Â
|
|
21 |
Â
// Make sure property is defined.
|
22 |
-
if ( undefined ===
|
23 |
-
|
24 |
Â
}
|
Â
|
|
25 |
Â
// Use empty prefix if undefined
|
26 |
-
if ( undefined ===
|
27 |
-
|
28 |
Â
}
|
Â
|
|
29 |
Â
// Use empty suffix if undefined
|
30 |
-
if ( undefined ===
|
31 |
-
|
32 |
Â
}
|
Â
|
|
33 |
Â
// Use empty units if undefined
|
34 |
-
if ( undefined ===
|
35 |
-
|
36 |
Â
}
|
Â
|
|
37 |
Â
// Use css if method is undefined
|
38 |
-
if ( undefined ===
|
39 |
-
|
40 |
Â
}
|
Â
|
|
41 |
Â
// Use $ (just the value) if value_pattern is undefined
|
42 |
-
if ( undefined ===
|
43 |
-
|
44 |
Â
}
|
45 |
Â
|
46 |
-
|
47 |
Â
|
48 |
Â
// Value is a string
|
49 |
-
if ( 'string'
|
Â
|
|
50 |
Â
// Process the value pattern
|
51 |
-
if ( undefined !==
|
52 |
-
|
53 |
-
} else {
|
54 |
-
var val = newval;
|
55 |
Â
}
|
Â
|
|
56 |
Â
// Inject HTML
|
57 |
-
if ( 'html' === args
|
58 |
-
|
Â
|
|
59 |
Â
// Add CSS
|
60 |
Â
} else {
|
61 |
-
|
62 |
-
|
63 |
-
|
Â
|
|
64 |
Â
}
|
65 |
-
|
Â
|
|
66 |
Â
else {
|
67 |
-
cssArray
|
68 |
Â
}
|
69 |
Â
|
70 |
Â
}
|
71 |
Â
|
72 |
Â
// Value is an object
|
73 |
-
} else if ( 'object'
|
74 |
-
|
75 |
-
|
Â
|
|
76 |
Â
if ( undefined !== args.choice ) {
|
77 |
-
if ( args.choice
|
78 |
-
cssArray
|
79 |
Â
}
|
80 |
Â
} else {
|
81 |
-
cssArray
|
82 |
Â
}
|
83 |
Â
});
|
Â
|
|
84 |
Â
}
|
Â
|
|
85 |
Â
});
|
86 |
Â
|
87 |
Â
});
|
88 |
Â
|
89 |
-
|
Â
|
|
Â
|
|
90 |
Â
|
91 |
Â
setTimeout( function() {
|
92 |
Â
|
93 |
Â
if ( '' !== singleCSS ) {
|
94 |
Â
css += singleCSS;
|
95 |
Â
}
|
Â
|
|
96 |
Â
// Attach to <head>
|
97 |
Â
if ( '' !== css ) {
|
98 |
-
|
Â
|
|
99 |
Â
// If we don't then add it.
|
100 |
-
if ( !
|
101 |
-
|
102 |
Â
}
|
103 |
-
|
104 |
Â
}
|
105 |
Â
|
106 |
Â
}, 300 );
|
1 |
+
( function() {
|
2 |
Â
var api = wp.customize;
|
3 |
Â
|
4 |
+
_.each( jsvars, function( jsVars, setting ) {
|
5 |
Â
|
6 |
Â
var css = '',
|
7 |
Â
cssArray = {};
|
12 |
Â
|
13 |
Â
if ( undefined !== jsVars && 0 < jsVars.length ) {
|
14 |
Â
|
15 |
+
_.each( jsVars, function( jsVar ) {
|
16 |
+
|
17 |
+
var val = newval;
|
18 |
Â
|
19 |
Â
// Make sure element is defined.
|
20 |
+
if ( undefined === jsVar.element ) {
|
21 |
+
jsVar.element = '';
|
22 |
Â
}
|
23 |
+
|
24 |
Â
// Make sure property is defined.
|
25 |
+
if ( undefined === jsVar.property ) {
|
26 |
+
jsVar.property = '';
|
27 |
Â
}
|
28 |
+
|
29 |
Â
// Use empty prefix if undefined
|
30 |
+
if ( undefined === jsVar.prefix ) {
|
31 |
+
jsVar.prefix = '';
|
32 |
Â
}
|
33 |
+
|
34 |
Â
// Use empty suffix if undefined
|
35 |
+
if ( undefined === jsVar.suffix ) {
|
36 |
+
jsVar.suffix = '';
|
37 |
Â
}
|
38 |
+
|
39 |
Â
// Use empty units if undefined
|
40 |
+
if ( undefined === jsVar.units ) {
|
41 |
+
jsVar.units = '';
|
42 |
Â
}
|
43 |
+
|
44 |
Â
// Use css if method is undefined
|
45 |
+
if ( undefined === jsVar['function'] ) {
|
46 |
+
jsVar['function'] = 'css';
|
47 |
Â
}
|
48 |
+
|
49 |
Â
// Use $ (just the value) if value_pattern is undefined
|
50 |
+
if ( undefined === jsVar.value_pattern ) {
|
51 |
+
jsVar.value_pattern = '$';
|
52 |
Â
}
|
53 |
Â
|
54 |
+
_.each( jsVars, function( args, i ) {
|
55 |
Â
|
56 |
Â
// Value is a string
|
57 |
+
if ( 'string' === typeof newval ) {
|
58 |
+
|
59 |
Â
// Process the value pattern
|
60 |
+
if ( undefined !== jsVar.value_pattern ) {
|
61 |
+
val = jsVar.value_pattern.replace( /\$/g, newval );
|
Â
|
|
Â
|
|
62 |
Â
}
|
63 |
+
|
64 |
Â
// Inject HTML
|
65 |
+
if ( 'html' === args['function'] ) {
|
66 |
+
jQuery( args.element ).html( args.prefix + val + args.units + args.suffix );
|
67 |
+
|
68 |
Â
// Add CSS
|
69 |
Â
} else {
|
70 |
+
|
71 |
+
// If we have new value, replace style contents with custom css
|
72 |
+
if ( '' !== val ) {
|
73 |
+
cssArray.i = args.element + '{' + args.property + ':' + args.prefix + val + args.units + args.suffix + ';}';
|
74 |
Â
}
|
75 |
+
|
76 |
+
// Else let's clear it out
|
77 |
Â
else {
|
78 |
+
cssArray.i = '';
|
79 |
Â
}
|
80 |
Â
|
81 |
Â
}
|
82 |
Â
|
83 |
Â
// Value is an object
|
84 |
+
} else if ( 'object' === typeof newval ) {
|
85 |
+
|
86 |
+
cssArray.i = '';
|
87 |
+
_.each( newval, function( subValueValue, subValueKey ) {
|
88 |
Â
if ( undefined !== args.choice ) {
|
89 |
+
if ( args.choice === subValueKey ) {
|
90 |
+
cssArray.i += args.element + '{' + args.property + ':' + args.prefix + subValueValue + args.units + args.suffix + ';}';
|
91 |
Â
}
|
92 |
Â
} else {
|
93 |
+
cssArray.i += args.element + '{' + args.property + ':' + args.prefix + subValueValue + args.units + args.suffix + ';}';
|
94 |
Â
}
|
95 |
Â
});
|
96 |
+
|
97 |
Â
}
|
98 |
+
|
99 |
Â
});
|
100 |
Â
|
101 |
Â
});
|
102 |
Â
|
103 |
+
_.each( cssArray, function( singleCSS ) {
|
104 |
+
|
105 |
+
css = '';
|
106 |
Â
|
107 |
Â
setTimeout( function() {
|
108 |
Â
|
109 |
Â
if ( '' !== singleCSS ) {
|
110 |
Â
css += singleCSS;
|
111 |
Â
}
|
112 |
+
|
113 |
Â
// Attach to <head>
|
114 |
Â
if ( '' !== css ) {
|
115 |
+
|
116 |
+
// Make sure we have a stylesheet with the defined ID.
|
117 |
Â
// If we don't then add it.
|
118 |
+
if ( ! jQuery( '#kirki-customizer-postmessage' + setting ).size() ) {
|
119 |
+
jQuery( 'head' ).append( '<style id="kirki-customizer-postmessage' + setting + '"></style>' );
|
120 |
Â
}
|
121 |
+
jQuery( '#kirki-customizer-postmessage' + setting ).text( css );
|
122 |
Â
}
|
123 |
Â
|
124 |
Â
}, 300 );
|
assets/js/reset.js
CHANGED
@@ -1,22 +1,20 @@
|
|
1 |
-
jQuery(document).ready(function(
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
jQuery( 'a.kirki-reset-section' ).on( 'click', function() {
|
4 |
-
// var reset = confirm( "Reset all settings in section" );
|
5 |
-
// if ( reset == true ) {
|
6 |
Â
|
7 |
-
|
8 |
-
|
9 |
-
// Get controls inside the section
|
10 |
-
var controls = wp.customize.section( id ).controls();
|
11 |
-
// Loop controls
|
12 |
-
for ( var i = 0, len = controls.length; i < len; i++ ) {
|
13 |
-
// set value to default
|
14 |
-
kirkiSetValue( controls[ i ].id, controls[ i ].params.default );
|
15 |
-
}
|
16 |
Â
|
17 |
-
//
|
Â
|
|
18 |
Â
|
19 |
-
|
Â
|
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
|
22 |
Â
});
|
1 |
+
jQuery( document ).ready( function() {
|
2 |
+
|
3 |
+
'use strict';
|
4 |
Â
|
5 |
Â
jQuery( 'a.kirki-reset-section' ).on( 'click', function() {
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
+
var id = jQuery( this ).data( 'reset-section-id' ),
|
8 |
+
controls = wp.customize.section( id ).controls();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
9 |
Â
|
10 |
+
// Loop controls
|
11 |
+
_.each( controls, function( control, i ) {
|
12 |
Â
|
13 |
+
// Set value to default
|
14 |
+
kirkiSetValue( controls[ i ].id, control.params['default'] );
|
15 |
Â
|
16 |
+
});
|
17 |
+
|
18 |
+
});
|
19 |
Â
|
20 |
Â
});
|
assets/js/tooltip.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
/** Fire up jQuery - let's dance! */
|
2 |
Â
jQuery( document ).ready( function( $ ) {
|
3 |
-
$( 'a.tooltip').tooltip();
|
4 |
Â
});
|
Â
|
|
1 |
Â
jQuery( document ).ready( function( $ ) {
|
2 |
+
$( 'a.tooltip' ).tooltip();
|
3 |
Â
});
|
codesniffer.ruleset.xml
ADDED
@@ -0,0 +1,19 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<ruleset name="WordPress 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 and plugins.</description>
|
8 |
+
|
9 |
+
<!-- Include the WordPress ruleset, with exclusions. -->
|
10 |
+
<rule ref="WordPress">
|
11 |
+
<exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact" />
|
12 |
+
<exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect" />
|
13 |
+
<exclude name="WordPress.VIP.RestrictedFunctions.user_meta" />
|
14 |
+
<exclude name="WordPress.VIP.RestrictedFunctions.url_to_postid" />
|
15 |
+
</rule>
|
16 |
+
|
17 |
+
<!-- Include sniffs for PHP cross-version compatibility. -->
|
18 |
+
<rule ref="PHPCompatibility"/>
|
19 |
+
</ruleset>
|
composer.json
DELETED
@@ -1,26 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"name": "aristath/kirki",
|
3 |
-
"type": "wordpress-plugin",
|
4 |
-
"description": "Extending the WordPress customizer",
|
5 |
-
"homepage": "http://kirki.org",
|
6 |
-
"license": "GPLv2 or later",
|
7 |
-
"authors": [
|
8 |
-
{
|
9 |
-
"name" : "aristath",
|
10 |
-
"email" : "aristath@gmail.com",
|
11 |
-
"homepage" : "http://aristeides.com"
|
12 |
-
},
|
13 |
-
{
|
14 |
-
"name" : "fovoc",
|
15 |
-
"email" : "kalliris.d@gmail.com",
|
16 |
-
"homepage" : "https://github.com/fovoc"
|
17 |
-
}
|
18 |
-
],
|
19 |
-
"require": {
|
20 |
-
"php": ">=5.2",
|
21 |
-
"composer/installers": "~1.0"
|
22 |
-
},
|
23 |
-
"require-dev": {
|
24 |
-
"phpunit/phpunit": "~4.0"
|
25 |
-
}
|
26 |
-
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
includes/class-kirki-active-callback.php
CHANGED
@@ -1,18 +1,30 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Active_Callback' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Active_Callback {
|
6 |
Â
|
7 |
Â
/**
|
8 |
Â
* Figure out whether the current object should be displayed or not.
|
9 |
Â
*
|
10 |
-
* @param $object
|
11 |
Â
* @return boolean
|
12 |
Â
*/
|
13 |
Â
public static function evaluate( $object ) {
|
14 |
Â
|
15 |
-
// Get all fields
|
16 |
Â
$fields = Kirki::$fields;
|
17 |
Â
|
18 |
Â
// Make sure the current object matches a registered field.
|
@@ -29,7 +41,7 @@ if ( ! class_exists( 'Kirki_Active_Callback' ) ) {
|
|
29 |
Â
return true;
|
30 |
Â
}
|
31 |
Â
|
32 |
-
if ( isset( $current_object['option_name'] ) && ''
|
33 |
Â
if ( false === strpos( $requirement['setting'], '[' ) ) {
|
34 |
Â
$requirement['setting'] = $current_object['option_name'] . '[' . $requirement['setting'] . ']';
|
35 |
Â
}
|
@@ -66,9 +78,7 @@ if ( ! class_exists( 'Kirki_Active_Callback' ) ) {
|
|
66 |
Â
$current_setting->value(),
|
67 |
Â
$requirement['operator']
|
68 |
Â
);
|
69 |
-
|
70 |
Â
}
|
71 |
-
|
72 |
Â
}
|
73 |
Â
|
74 |
Â
return ( isset( $show ) && ( false === $show ) ) ? false : true;
|
@@ -76,10 +86,12 @@ if ( ! class_exists( 'Kirki_Active_Callback' ) ) {
|
|
76 |
Â
}
|
77 |
Â
|
78 |
Â
/**
|
79 |
-
*
|
80 |
-
*
|
81 |
-
* @param
|
82 |
-
* @
|
Â
|
|
Â
|
|
83 |
Â
*/
|
84 |
Â
public static function compare( $value1, $value2, $operator ) {
|
85 |
Â
switch ( $operator ) {
|
@@ -147,7 +159,5 @@ if ( ! class_exists( 'Kirki_Active_Callback' ) ) {
|
|
147 |
Â
|
148 |
Â
return true;
|
149 |
Â
}
|
150 |
-
|
151 |
Â
}
|
152 |
-
|
153 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Active callback used with the "required" argument in fields
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Active_Callback' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Callback class for use with the "required" argument
|
16 |
+
*/
|
17 |
Â
class Kirki_Active_Callback {
|
18 |
Â
|
19 |
Â
/**
|
20 |
Â
* Figure out whether the current object should be displayed or not.
|
21 |
Â
*
|
22 |
+
* @param WP_Customize_Setting $object The current field.
|
23 |
Â
* @return boolean
|
24 |
Â
*/
|
25 |
Â
public static function evaluate( $object ) {
|
26 |
Â
|
27 |
+
// Get all fields.
|
28 |
Â
$fields = Kirki::$fields;
|
29 |
Â
|
30 |
Â
// Make sure the current object matches a registered field.
|
41 |
Â
return true;
|
42 |
Â
}
|
43 |
Â
|
44 |
+
if ( isset( $current_object['option_name'] ) && '' !== $current_object['option_name'] ) {
|
45 |
Â
if ( false === strpos( $requirement['setting'], '[' ) ) {
|
46 |
Â
$requirement['setting'] = $current_object['option_name'] . '[' . $requirement['setting'] . ']';
|
47 |
Â
}
|
78 |
Â
$current_setting->value(),
|
79 |
Â
$requirement['operator']
|
80 |
Â
);
|
Â
|
|
81 |
Â
}
|
Â
|
|
82 |
Â
}
|
83 |
Â
|
84 |
Â
return ( isset( $show ) && ( false === $show ) ) ? false : true;
|
86 |
Â
}
|
87 |
Â
|
88 |
Â
/**
|
89 |
+
* Compares the 2 values given the condition
|
90 |
+
*
|
91 |
+
* @param mixed $value1 The 1st value in the comparison.
|
92 |
+
* @param mixed $value2 The 2nd value in the comparison.
|
93 |
+
* @param string $operator The operator we'll use for the comparison.
|
94 |
+
* @return boolean whether The comparison has succeded (true) or failed (false).
|
95 |
Â
*/
|
96 |
Â
public static function compare( $value1, $value2, $operator ) {
|
97 |
Â
switch ( $operator ) {
|
159 |
Â
|
160 |
Â
return true;
|
161 |
Â
}
|
Â
|
|
162 |
Â
}
|
Â
|
|
163 |
Â
}
|
includes/class-kirki-config.php
CHANGED
@@ -1,10 +1,24 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Config' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
final class Kirki_Config {
|
6 |
Â
|
7 |
Â
/**
|
Â
|
|
Â
|
|
8 |
Â
* @static
|
9 |
Â
* @access private
|
10 |
Â
* @var array
|
@@ -12,75 +26,83 @@ if ( ! class_exists( 'Kirki_Config' ) ) {
|
|
12 |
Â
private static $instances = array();
|
13 |
Â
|
14 |
Â
/**
|
Â
|
|
Â
|
|
15 |
Â
* @access protected
|
16 |
Â
* @var array
|
17 |
Â
*/
|
18 |
Â
protected $config_final = array();
|
19 |
Â
|
20 |
Â
/**
|
Â
|
|
Â
|
|
21 |
Â
* @access protected
|
22 |
Â
* @var string
|
23 |
Â
*/
|
24 |
Â
protected $id = 'global';
|
25 |
Â
|
26 |
Â
/**
|
Â
|
|
Â
|
|
27 |
Â
* @access protected
|
28 |
Â
* @var string
|
29 |
Â
*/
|
30 |
Â
protected $capability = 'edit_theme_options';
|
31 |
Â
|
32 |
Â
/**
|
Â
|
|
Â
|
|
33 |
Â
* @access protected
|
34 |
Â
* @var string
|
35 |
Â
*/
|
36 |
Â
protected $option_type = 'theme_mod';
|
37 |
Â
|
38 |
Â
/**
|
Â
|
|
Â
|
|
39 |
Â
* @access protected
|
40 |
Â
* @var string
|
41 |
Â
*/
|
42 |
Â
protected $option_name = '';
|
43 |
Â
|
44 |
Â
/**
|
Â
|
|
Â
|
|
45 |
Â
* @access protected
|
46 |
Â
* @var array
|
47 |
Â
*/
|
48 |
Â
protected $compiler = array();
|
49 |
Â
|
50 |
Â
/**
|
Â
|
|
Â
|
|
51 |
Â
* @access protected
|
52 |
Â
* @var bool
|
53 |
Â
*/
|
54 |
Â
protected $disable_output = false;
|
55 |
Â
|
56 |
-
/**
|
57 |
-
* @access protected
|
58 |
-
* @var bool
|
59 |
-
*/
|
60 |
-
protected $postMessage = '';
|
61 |
-
|
62 |
Â
/**
|
63 |
Â
* The class constructor.
|
64 |
Â
* Use the get_instance() static method to get the instance you need.
|
65 |
Â
*
|
66 |
Â
* @access private
|
67 |
Â
*
|
68 |
-
* @param string
|
69 |
-
* @param array
|
70 |
Â
*/
|
71 |
Â
private function __construct( $id = 'global', $args = array() ) {
|
72 |
Â
|
73 |
-
// Get defaults from the class
|
74 |
Â
$defaults = get_class_vars( __CLASS__ );
|
75 |
-
//
|
76 |
Â
unset( $defaults['config_final'] );
|
77 |
Â
unset( $defaults['instances'] );
|
78 |
Â
// Apply any kirki/config global filters.
|
79 |
Â
$defaults = apply_filters( 'kirki/config', $defaults );
|
80 |
-
// Merge our args with the defaults
|
81 |
Â
$args = wp_parse_args( $args, $defaults );
|
82 |
Â
|
83 |
-
// Modify default values with the defined ones
|
84 |
Â
foreach ( $args as $key => $value ) {
|
85 |
Â
// Is this property whitelisted?
|
86 |
Â
if ( property_exists( $this, $key ) ) {
|
@@ -99,9 +121,9 @@ if ( ! class_exists( 'Kirki_Config' ) ) {
|
|
99 |
Â
*
|
100 |
Â
* @static
|
101 |
Â
* @access public
|
102 |
-
* @param string
|
103 |
-
* @param array
|
104 |
-
*
|
105 |
Â
*
|
106 |
Â
* @type string $capability @see https://codex.wordpress.org/Roles_and_Capabilities
|
107 |
Â
* @type string $option_type theme_mod or option.
|
@@ -111,7 +133,6 @@ if ( ! class_exists( 'Kirki_Config' ) ) {
|
|
111 |
Â
* @type array $compiler Not yet fully implemented
|
112 |
Â
* @type bool $disable_output If set to true, no CSS will be generated
|
113 |
Â
* from fields using this configuration.
|
114 |
-
* @type string $postMessage
|
115 |
Â
* }
|
116 |
Â
*
|
117 |
Â
* @return Kirki_Config
|
@@ -119,7 +140,7 @@ if ( ! class_exists( 'Kirki_Config' ) ) {
|
|
119 |
Â
public static function get_instance( $id = 'global', $args = array() ) {
|
120 |
Â
|
121 |
Â
$id = trim( esc_attr( $id ) );
|
122 |
-
$id = ( ''
|
123 |
Â
|
124 |
Â
$id_md5 = md5( $id );
|
125 |
Â
if ( ! isset( self::$instances[ $id_md5 ] ) ) {
|
@@ -129,8 +150,6 @@ if ( ! class_exists( 'Kirki_Config' ) ) {
|
|
129 |
Â
|
130 |
Â
}
|
131 |
Â
|
132 |
-
|
133 |
-
|
134 |
Â
/**
|
135 |
Â
* Returns the $config_final property
|
136 |
Â
*
|
@@ -143,7 +162,5 @@ if ( ! class_exists( 'Kirki_Config' ) ) {
|
|
143 |
Â
return $this->config_final;
|
144 |
Â
|
145 |
Â
}
|
146 |
-
|
147 |
Â
}
|
148 |
-
|
149 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Processes configurations.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Config' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* The Kirki_Config object
|
16 |
+
*/
|
17 |
Â
final class Kirki_Config {
|
18 |
Â
|
19 |
Â
/**
|
20 |
+
* Each instance is stored separately in this array.
|
21 |
+
*
|
22 |
Â
* @static
|
23 |
Â
* @access private
|
24 |
Â
* @var array
|
26 |
Â
private static $instances = array();
|
27 |
Â
|
28 |
Â
/**
|
29 |
+
* The finalized configuration array.
|
30 |
+
*
|
31 |
Â
* @access protected
|
32 |
Â
* @var array
|
33 |
Â
*/
|
34 |
Â
protected $config_final = array();
|
35 |
Â
|
36 |
Â
/**
|
37 |
+
* The configuration ID.
|
38 |
+
*
|
39 |
Â
* @access protected
|
40 |
Â
* @var string
|
41 |
Â
*/
|
42 |
Â
protected $id = 'global';
|
43 |
Â
|
44 |
Â
/**
|
45 |
+
* Capability (fields will inherit this).
|
46 |
+
*
|
47 |
Â
* @access protected
|
48 |
Â
* @var string
|
49 |
Â
*/
|
50 |
Â
protected $capability = 'edit_theme_options';
|
51 |
Â
|
52 |
Â
/**
|
53 |
+
* The data-type we'll be using.
|
54 |
+
*
|
55 |
Â
* @access protected
|
56 |
Â
* @var string
|
57 |
Â
*/
|
58 |
Â
protected $option_type = 'theme_mod';
|
59 |
Â
|
60 |
Â
/**
|
61 |
+
* If we're using serialized options, then this is the global option name.
|
62 |
+
*
|
63 |
Â
* @access protected
|
64 |
Â
* @var string
|
65 |
Â
*/
|
66 |
Â
protected $option_name = '';
|
67 |
Â
|
68 |
Â
/**
|
69 |
+
* The compiler.
|
70 |
+
*
|
71 |
Â
* @access protected
|
72 |
Â
* @var array
|
73 |
Â
*/
|
74 |
Â
protected $compiler = array();
|
75 |
Â
|
76 |
Â
/**
|
77 |
+
* Set to true if you want to completely disable any Kirki-generated CSS.
|
78 |
+
*
|
79 |
Â
* @access protected
|
80 |
Â
* @var bool
|
81 |
Â
*/
|
82 |
Â
protected $disable_output = false;
|
83 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
84 |
Â
/**
|
85 |
Â
* The class constructor.
|
86 |
Â
* Use the get_instance() static method to get the instance you need.
|
87 |
Â
*
|
88 |
Â
* @access private
|
89 |
Â
*
|
90 |
+
* @param string $id @see Kirki_Config::get_instance().
|
91 |
+
* @param array $args @see Kirki_Config::get_instance().
|
92 |
Â
*/
|
93 |
Â
private function __construct( $id = 'global', $args = array() ) {
|
94 |
Â
|
95 |
+
// Get defaults from the class.
|
96 |
Â
$defaults = get_class_vars( __CLASS__ );
|
97 |
+
// Skip the what we don't need in this context.
|
98 |
Â
unset( $defaults['config_final'] );
|
99 |
Â
unset( $defaults['instances'] );
|
100 |
Â
// Apply any kirki/config global filters.
|
101 |
Â
$defaults = apply_filters( 'kirki/config', $defaults );
|
102 |
+
// Merge our args with the defaults.
|
103 |
Â
$args = wp_parse_args( $args, $defaults );
|
104 |
Â
|
105 |
+
// Modify default values with the defined ones.
|
106 |
Â
foreach ( $args as $key => $value ) {
|
107 |
Â
// Is this property whitelisted?
|
108 |
Â
if ( property_exists( $this, $key ) ) {
|
121 |
Â
*
|
122 |
Â
* @static
|
123 |
Â
* @access public
|
124 |
+
* @param string $id Config ID.
|
125 |
+
* @param array $args {
|
126 |
+
* Optional. Arguments to override config defaults.
|
127 |
Â
*
|
128 |
Â
* @type string $capability @see https://codex.wordpress.org/Roles_and_Capabilities
|
129 |
Â
* @type string $option_type theme_mod or option.
|
133 |
Â
* @type array $compiler Not yet fully implemented
|
134 |
Â
* @type bool $disable_output If set to true, no CSS will be generated
|
135 |
Â
* from fields using this configuration.
|
Â
|
|
136 |
Â
* }
|
137 |
Â
*
|
138 |
Â
* @return Kirki_Config
|
140 |
Â
public static function get_instance( $id = 'global', $args = array() ) {
|
141 |
Â
|
142 |
Â
$id = trim( esc_attr( $id ) );
|
143 |
+
$id = ( '' === $id ) ? 'global' : $id;
|
144 |
Â
|
145 |
Â
$id_md5 = md5( $id );
|
146 |
Â
if ( ! isset( self::$instances[ $id_md5 ] ) ) {
|
150 |
Â
|
151 |
Â
}
|
152 |
Â
|
Â
|
|
Â
|
|
153 |
Â
/**
|
154 |
Â
* Returns the $config_final property
|
155 |
Â
*
|
162 |
Â
return $this->config_final;
|
163 |
Â
|
164 |
Â
}
|
Â
|
|
165 |
Â
}
|
Â
|
|
166 |
Â
}
|
includes/class-kirki-control.php
CHANGED
@@ -1,16 +1,32 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Control' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Control {
|
6 |
Â
|
7 |
Â
/**
|
Â
|
|
Â
|
|
8 |
Â
* @access protected
|
9 |
Â
* @var WP_Customize_Manager
|
10 |
Â
*/
|
11 |
Â
protected $wp_customize;
|
12 |
Â
|
13 |
Â
/**
|
Â
|
|
Â
|
|
14 |
Â
* @access protected
|
15 |
Â
* @var array
|
16 |
Â
*/
|
@@ -21,20 +37,20 @@ if ( ! class_exists( 'Kirki_Control' ) ) {
|
|
21 |
Â
* Creates the actual controls in the customizer.
|
22 |
Â
*
|
23 |
Â
* @access public
|
24 |
-
* @param $args
|
25 |
Â
*/
|
26 |
Â
public function __construct( $args ) {
|
27 |
Â
|
28 |
-
// Set the $wp_customize property
|
29 |
Â
global $wp_customize;
|
30 |
Â
if ( ! $wp_customize ) {
|
31 |
Â
return;
|
32 |
Â
}
|
33 |
Â
$this->wp_customize = $wp_customize;
|
34 |
Â
|
35 |
-
// Set the control types
|
36 |
Â
$this->set_control_types();
|
37 |
-
// Add the control
|
38 |
Â
$this->add_control( $args );
|
39 |
Â
|
40 |
Â
}
|
@@ -43,15 +59,15 @@ if ( ! class_exists( 'Kirki_Control' ) ) {
|
|
43 |
Â
* Get the class name of the class needed to create tis control.
|
44 |
Â
*
|
45 |
Â
* @access private
|
46 |
-
* @param $args
|
47 |
Â
*
|
48 |
-
* @return string the name of the class that will be used to create this control
|
49 |
Â
*/
|
50 |
Â
final private function get_control_class_name( $args ) {
|
51 |
Â
|
52 |
-
// Set a default class name
|
53 |
Â
$class_name = 'WP_Customize_Control';
|
54 |
-
// Get the classname from the array of control classnames
|
55 |
Â
if ( array_key_exists( $args['type'], $this->control_types ) ) {
|
56 |
Â
$class_name = $this->control_types[ $args['type'] ];
|
57 |
Â
}
|
@@ -63,15 +79,13 @@ if ( ! class_exists( 'Kirki_Control' ) ) {
|
|
63 |
Â
* Adds the control.
|
64 |
Â
*
|
65 |
Â
* @access protected
|
66 |
-
* @param $args
|
67 |
-
*
|
68 |
-
* @return void
|
69 |
Â
*/
|
70 |
Â
final protected function add_control( $args ) {
|
71 |
Â
|
72 |
-
// Get the name of the class we're going to use
|
73 |
Â
$class_name = $this->get_control_class_name( $args );
|
74 |
-
// Add the control
|
75 |
Â
$this->wp_customize->add_control( new $class_name( $this->wp_customize, $args['settings'], $args ) );
|
76 |
Â
|
77 |
Â
}
|
@@ -114,20 +128,16 @@ if ( ! class_exists( 'Kirki_Control' ) ) {
|
|
114 |
Â
'image' => 'WP_Customize_Image_Control',
|
115 |
Â
'cropped_image' => 'WP_Customize_Cropped_Image_Control',
|
116 |
Â
'upload' => 'WP_Customize_Upload_Control',
|
117 |
-
'dropdown-pages' => 'Kirki_Controls_Dropdown_Pages_Control'
|
118 |
Â
) );
|
119 |
Â
|
120 |
-
// Make sure the defined classes actually exist
|
121 |
Â
foreach ( $this->control_types as $key => $classname ) {
|
122 |
Â
|
123 |
Â
if ( ! class_exists( $classname ) ) {
|
124 |
Â
unset( $this->control_types[ $key ] );
|
125 |
Â
}
|
126 |
-
|
127 |
Â
}
|
128 |
-
|
129 |
Â
}
|
130 |
-
|
131 |
Â
}
|
132 |
-
|
133 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Controls handler
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Control' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Our main Kirki_Control object
|
16 |
+
*/
|
17 |
Â
class Kirki_Control {
|
18 |
Â
|
19 |
Â
/**
|
20 |
+
* The $wp_customize WordPress global.
|
21 |
+
*
|
22 |
Â
* @access protected
|
23 |
Â
* @var WP_Customize_Manager
|
24 |
Â
*/
|
25 |
Â
protected $wp_customize;
|
26 |
Â
|
27 |
Â
/**
|
28 |
+
* An array of all available control types.
|
29 |
+
*
|
30 |
Â
* @access protected
|
31 |
Â
* @var array
|
32 |
Â
*/
|
37 |
Â
* Creates the actual controls in the customizer.
|
38 |
Â
*
|
39 |
Â
* @access public
|
40 |
+
* @param array $args The field definition as sanitized in Kirki_Field.
|
41 |
Â
*/
|
42 |
Â
public function __construct( $args ) {
|
43 |
Â
|
44 |
+
// Set the $wp_customize property.
|
45 |
Â
global $wp_customize;
|
46 |
Â
if ( ! $wp_customize ) {
|
47 |
Â
return;
|
48 |
Â
}
|
49 |
Â
$this->wp_customize = $wp_customize;
|
50 |
Â
|
51 |
+
// Set the control types.
|
52 |
Â
$this->set_control_types();
|
53 |
+
// Add the control.
|
54 |
Â
$this->add_control( $args );
|
55 |
Â
|
56 |
Â
}
|
59 |
Â
* Get the class name of the class needed to create tis control.
|
60 |
Â
*
|
61 |
Â
* @access private
|
62 |
+
* @param array $args The field definition as sanitized in Kirki_Field.
|
63 |
Â
*
|
64 |
+
* @return string the name of the class that will be used to create this control.
|
65 |
Â
*/
|
66 |
Â
final private function get_control_class_name( $args ) {
|
67 |
Â
|
68 |
+
// Set a default class name.
|
69 |
Â
$class_name = 'WP_Customize_Control';
|
70 |
+
// Get the classname from the array of control classnames.
|
71 |
Â
if ( array_key_exists( $args['type'], $this->control_types ) ) {
|
72 |
Â
$class_name = $this->control_types[ $args['type'] ];
|
73 |
Â
}
|
79 |
Â
* Adds the control.
|
80 |
Â
*
|
81 |
Â
* @access protected
|
82 |
+
* @param array $args The field definition as sanitized in Kirki_Field.
|
Â
|
|
Â
|
|
83 |
Â
*/
|
84 |
Â
final protected function add_control( $args ) {
|
85 |
Â
|
86 |
+
// Get the name of the class we're going to use.
|
87 |
Â
$class_name = $this->get_control_class_name( $args );
|
88 |
+
// Add the control.
|
89 |
Â
$this->wp_customize->add_control( new $class_name( $this->wp_customize, $args['settings'], $args ) );
|
90 |
Â
|
91 |
Â
}
|
128 |
Â
'image' => 'WP_Customize_Image_Control',
|
129 |
Â
'cropped_image' => 'WP_Customize_Cropped_Image_Control',
|
130 |
Â
'upload' => 'WP_Customize_Upload_Control',
|
131 |
+
'dropdown-pages' => 'Kirki_Controls_Dropdown_Pages_Control',
|
132 |
Â
) );
|
133 |
Â
|
134 |
+
// Make sure the defined classes actually exist.
|
135 |
Â
foreach ( $this->control_types as $key => $classname ) {
|
136 |
Â
|
137 |
Â
if ( ! class_exists( $classname ) ) {
|
138 |
Â
unset( $this->control_types[ $key ] );
|
139 |
Â
}
|
Â
|
|
140 |
Â
}
|
Â
|
|
141 |
Â
}
|
Â
|
|
142 |
Â
}
|
Â
|
|
143 |
Â
}
|
includes/class-kirki-customize-control.php
CHANGED
@@ -1,27 +1,74 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
3 |
Â
* @package Kirki
|
4 |
Â
* @subpackage Controls
|
5 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
6 |
-
* @license http://opensource.org/licenses/
|
7 |
Â
* @since 1.0
|
8 |
Â
*/
|
9 |
Â
|
10 |
-
// Exit if accessed directly
|
11 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
Â
exit;
|
13 |
Â
}
|
14 |
Â
|
15 |
Â
if ( ! class_exists( 'Kirki_Customize_Control' ) ) {
|
16 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
17 |
Â
class Kirki_Customize_Control extends WP_Customize_Control {
|
18 |
Â
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $kirki_config = 'global';
|
24 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public function to_json() {
|
26 |
Â
parent::to_json();
|
27 |
Â
|
@@ -44,8 +91,11 @@ if ( ! class_exists( 'Kirki_Customize_Control' ) ) {
|
|
44 |
Â
}
|
45 |
Â
}
|
46 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
47 |
Â
protected function render_content() {}
|
48 |
-
|
49 |
Â
}
|
50 |
-
|
51 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* A wrapper class for WP_Customize_Control.
|
4 |
+
* We'll be using this to define things that all Kirki fields must inherit.
|
5 |
+
* Helps us keep a cleaner codebase and avoid code duplication.
|
6 |
+
*
|
7 |
Â
* @package Kirki
|
8 |
Â
* @subpackage Controls
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Customize_Control' ) ) {
|
20 |
Â
|
21 |
+
/**
|
22 |
+
* The parent class for all Kirki controls.
|
23 |
+
* Other controls should extend this object.
|
24 |
+
*/
|
25 |
Â
class Kirki_Customize_Control extends WP_Customize_Control {
|
26 |
Â
|
27 |
+
/**
|
28 |
+
* Tooltips content.
|
29 |
+
*
|
30 |
+
* @access public
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
public $tooltip = '';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Used to automatically generate all postMessage scripts.
|
37 |
+
*
|
38 |
+
* @access public
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
+
public $js_vars = array();
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Used to automatically generate all CSS output.
|
45 |
+
*
|
46 |
+
* @access public
|
47 |
+
* @var array
|
48 |
+
*/
|
49 |
+
public $output = array();
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Data type
|
53 |
+
*
|
54 |
+
* @access public
|
55 |
+
* @var string
|
56 |
+
*/
|
57 |
+
public $option_type = 'theme_mod';
|
58 |
+
|
59 |
+
/**
|
60 |
+
* The kirki_config we're using for this control
|
61 |
+
*
|
62 |
+
* @access public
|
63 |
+
* @var string
|
64 |
+
*/
|
65 |
Â
public $kirki_config = 'global';
|
66 |
Â
|
67 |
+
/**
|
68 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
69 |
+
*
|
70 |
+
* @see WP_Customize_Control::to_json()
|
71 |
+
*/
|
72 |
Â
public function to_json() {
|
73 |
Â
parent::to_json();
|
74 |
Â
|
91 |
Â
}
|
92 |
Â
}
|
93 |
Â
|
94 |
+
/**
|
95 |
+
* Render the control's content.
|
96 |
+
*
|
97 |
+
* @see WP_Customize_Control::render_content()
|
98 |
+
*/
|
99 |
Â
protected function render_content() {}
|
Â
|
|
100 |
Â
}
|
Â
|
|
101 |
Â
}
|
includes/class-kirki-enqueue.php
CHANGED
@@ -18,6 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Enqueue' ) ) {
|
Â
|
|
21 |
Â
/**
|
22 |
Â
* Enqueues JS & CSS assets
|
23 |
Â
*/
|
@@ -76,7 +77,7 @@ if ( ! class_exists( 'Kirki_Enqueue' ) ) {
|
|
76 |
Â
|
77 |
Â
// Register the color-alpha picker.
|
78 |
Â
wp_enqueue_style( 'wp-color-picker' );
|
79 |
-
wp_register_script( 'wp-color-picker-alpha', trailingslashit( Kirki::$url ) . 'assets/js/vendor/wp-color-picker-alpha.js', array( 'wp-color-picker' ), '1.2' );
|
80 |
Â
|
81 |
Â
// Register the jquery-ui-spinner.
|
82 |
Â
wp_register_script( 'jquery-ui-spinner', trailingslashit( Kirki::$url ) . 'assets/js/vendor/jquery-ui-spinner', array( 'jquery', 'jquery-ui-core', 'jquery-ui-button' ) );
|
@@ -89,35 +90,35 @@ if ( ! class_exists( 'Kirki_Enqueue' ) ) {
|
|
89 |
Â
|
90 |
Â
// An array of control scripts and their dependencies.
|
91 |
Â
$controls_scripts = array(
|
92 |
-
'checkbox' => array( 'jquery' ),
|
93 |
-
'code' => array( 'jquery', 'codemirror' ),
|
94 |
-
'color-alpha' => array( 'jquery', 'wp-color-picker-alpha' ),
|
95 |
-
'color-palette' => array( 'jquery', 'jquery-ui-button' ),
|
96 |
-
'dashicons' => array( 'jquery' ),
|
97 |
-
'date' => array( 'jquery', 'jquery-ui', 'jquery-ui-datepicker' ),
|
98 |
-
'dimension' => array( 'jquery', 'kirki-validate-css-value' ),
|
99 |
-
'dropdown-pages' => array( 'jquery', 'selectize' ),
|
100 |
-
'editor' => array( 'jquery' ),
|
101 |
-
'generic' => array( 'jquery' ),
|
102 |
-
'multicheck' => array( 'jquery' ),
|
103 |
-
'multicolor' => array( 'jquery', 'wp-color-picker-alpha' ),
|
104 |
-
'number' => array( 'jquery', 'jquery-ui-spinner' ),
|
105 |
-
'palette' => array( 'jquery', 'jquery-ui-button' ),
|
106 |
-
'preset' => array( 'jquery', 'selectize', 'kirki-set-value' ),
|
107 |
-
'radio-buttonset' => array( 'jquery' ),
|
108 |
-
'radio-image' => array( 'jquery' ),
|
109 |
-
'radio' => array( 'jquery' ),
|
110 |
Â
'repeater' => array( 'jquery', 'customize-base', 'jquery-ui-core', 'jquery-ui-sortable' ),
|
111 |
-
'select' => array( 'jquery', 'selectize', 'kirki-array-to-object' ),
|
112 |
-
'slider' => array( 'jquery' ),
|
113 |
-
'sortable' => array( 'jquery', 'jquery-ui-core', 'jquery-ui-sortable', 'serialize-js' ),
|
114 |
-
'spacing' => array( 'jquery' ),
|
115 |
-
'switch' => array( 'jquery' ),
|
116 |
-
'toggle' => array( 'jquery' ),
|
117 |
-
'typography' => array( 'jquery', 'selectize', 'wp-color-picker-alpha' ),
|
118 |
Â
);
|
119 |
Â
foreach ( $controls_scripts as $id => $dependencies ) {
|
120 |
-
wp_register_script( 'kirki-' . $id, trailingslashit( Kirki::$url ) . 'assets/js/controls/' . $id . '.js', $dependencies, false );
|
121 |
Â
}
|
122 |
Â
|
123 |
Â
$google_fonts = Kirki_Fonts::get_google_fonts();
|
@@ -224,7 +225,7 @@ if ( ! class_exists( 'Kirki_Enqueue' ) ) {
|
|
224 |
Â
$js_vars_fields[ $field['settings'] ] = $field['js_vars'];
|
225 |
Â
}
|
226 |
Â
}
|
227 |
-
wp_localize_script( 'kirki_auto_postmessage', '
|
228 |
Â
}
|
229 |
Â
}
|
230 |
Â
}
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Enqueue' ) ) {
|
21 |
+
|
22 |
Â
/**
|
23 |
Â
* Enqueues JS & CSS assets
|
24 |
Â
*/
|
77 |
Â
|
78 |
Â
// Register the color-alpha picker.
|
79 |
Â
wp_enqueue_style( 'wp-color-picker' );
|
80 |
+
wp_register_script( 'wp-color-picker-alpha', trailingslashit( Kirki::$url ) . 'assets/js/vendor/wp-color-picker-alpha.js', array( 'wp-color-picker' ), '1.2', true );
|
81 |
Â
|
82 |
Â
// Register the jquery-ui-spinner.
|
83 |
Â
wp_register_script( 'jquery-ui-spinner', trailingslashit( Kirki::$url ) . 'assets/js/vendor/jquery-ui-spinner', array( 'jquery', 'jquery-ui-core', 'jquery-ui-button' ) );
|
90 |
Â
|
91 |
Â
// An array of control scripts and their dependencies.
|
92 |
Â
$controls_scripts = array(
|
93 |
+
'checkbox' => array( 'jquery', 'customize-base' ),
|
94 |
+
'code' => array( 'jquery', 'customize-base', 'codemirror' ),
|
95 |
+
'color-alpha' => array( 'jquery', 'customize-base', 'wp-color-picker-alpha' ),
|
96 |
+
'color-palette' => array( 'jquery', 'customize-base', 'jquery-ui-button' ),
|
97 |
+
'dashicons' => array( 'jquery', 'customize-base' ),
|
98 |
+
'date' => array( 'jquery', 'customize-base', 'jquery-ui', 'jquery-ui-datepicker' ),
|
99 |
+
'dimension' => array( 'jquery', 'customize-base', 'kirki-validate-css-value' ),
|
100 |
+
'dropdown-pages' => array( 'jquery', 'customize-base', 'selectize' ),
|
101 |
+
'editor' => array( 'jquery', 'customize-base' ),
|
102 |
+
'generic' => array( 'jquery', 'customize-base' ),
|
103 |
+
'multicheck' => array( 'jquery', 'customize-base' ),
|
104 |
+
'multicolor' => array( 'jquery', 'customize-base', 'wp-color-picker-alpha' ),
|
105 |
+
'number' => array( 'jquery', 'customize-base', 'jquery-ui-spinner' ),
|
106 |
+
'palette' => array( 'jquery', 'customize-base', 'jquery-ui-button' ),
|
107 |
+
'preset' => array( 'jquery', 'customize-base', 'selectize', 'kirki-set-value' ),
|
108 |
+
'radio-buttonset' => array( 'jquery', 'customize-base' ),
|
109 |
+
'radio-image' => array( 'jquery', 'customize-base' ),
|
110 |
+
'radio' => array( 'jquery', 'customize-base' ),
|
111 |
Â
'repeater' => array( 'jquery', 'customize-base', 'jquery-ui-core', 'jquery-ui-sortable' ),
|
112 |
+
'select' => array( 'jquery', 'customize-base', 'selectize', 'kirki-array-to-object' ),
|
113 |
+
'slider' => array( 'jquery', 'customize-base' ),
|
114 |
+
'sortable' => array( 'jquery', 'customize-base', 'jquery-ui-core', 'jquery-ui-sortable', 'serialize-js' ),
|
115 |
+
'spacing' => array( 'jquery', 'customize-base' ),
|
116 |
+
'switch' => array( 'jquery', 'customize-base' ),
|
117 |
+
'toggle' => array( 'jquery', 'customize-base' ),
|
118 |
+
'typography' => array( 'jquery', 'customize-base', 'selectize', 'wp-color-picker-alpha' ),
|
119 |
Â
);
|
120 |
Â
foreach ( $controls_scripts as $id => $dependencies ) {
|
121 |
+
wp_register_script( 'kirki-' . $id, trailingslashit( Kirki::$url ) . 'assets/js/controls/' . $id . '.js', $dependencies, false, true );
|
122 |
Â
}
|
123 |
Â
|
124 |
Â
$google_fonts = Kirki_Fonts::get_google_fonts();
|
225 |
Â
$js_vars_fields[ $field['settings'] ] = $field['js_vars'];
|
226 |
Â
}
|
227 |
Â
}
|
228 |
+
wp_localize_script( 'kirki_auto_postmessage', 'jsvars', $js_vars_fields );
|
229 |
Â
}
|
230 |
Â
}
|
231 |
Â
}
|
includes/class-kirki-explode-background-field.php
CHANGED
@@ -1,12 +1,29 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
4 |
Â
class Kirki_Explode_Background_Field {
|
Â
|
|
5 |
Â
/**
|
6 |
Â
* Build the background fields.
|
7 |
Â
* Takes a single field with type = background and explodes it to multiple controls.
|
8 |
Â
*
|
9 |
-
* @param array
|
10 |
Â
* @return null|array
|
11 |
Â
*/
|
12 |
Â
public static function explode( $field ) {
|
@@ -14,7 +31,7 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
14 |
Â
$choices = self::background_choices();
|
15 |
Â
|
16 |
Â
// Early exit if this is not a background field.
|
17 |
-
if ( 'background'
|
18 |
Â
return;
|
19 |
Â
}
|
20 |
Â
|
@@ -29,7 +46,7 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
29 |
Â
foreach ( $field['default'] as $key => $value ) {
|
30 |
Â
|
31 |
Â
// No need to process the opacity, it is factored in the color control.
|
32 |
-
if ( 'opacity'
|
33 |
Â
continue;
|
34 |
Â
}
|
35 |
Â
|
@@ -44,8 +61,7 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
44 |
Â
|
45 |
Â
switch ( $key ) {
|
46 |
Â
case 'color':
|
47 |
-
// Use 'color-alpha' instead of 'color' if default is an rgba value
|
48 |
-
// or if 'opacity' is set.
|
49 |
Â
$type = ( false !== strpos( $field['default']['color'], 'rgba' ) ) ? 'color-alpha' : 'color';
|
50 |
Â
$type = ( isset( $field['default']['opacity'] ) ) ? 'color-alpha' : $type;
|
51 |
Â
if ( isset( $field['default']['opacity'] ) && false === strpos( $value, 'rgb' ) ) {
|
@@ -68,14 +84,14 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
68 |
Â
}
|
69 |
Â
|
70 |
Â
// If we're using options & option_name is set, then we need to modify the setting.
|
71 |
-
if ( ( isset( $field['option_type'] ) && 'option'
|
72 |
Â
$property_setting = str_replace( ']', '', str_replace( $field['option_name'] . '[', '', $field['settings'] ) );
|
73 |
Â
$property_setting = esc_attr( $field['option_name'] ) . '[' . esc_attr( $property_setting ) . '_' . $setting . ']';
|
74 |
Â
} else {
|
75 |
Â
$property_setting = esc_attr( $field['settings'] ) . '_' . $setting;
|
76 |
Â
}
|
77 |
Â
|
78 |
-
// Build the field's output element
|
79 |
Â
$output_element = $field['output'];
|
80 |
Â
if ( ! empty( $field['output'] ) ) {
|
81 |
Â
if ( is_array( $field['output'] ) ) {
|
@@ -121,7 +137,7 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
121 |
Â
/**
|
122 |
Â
* Parse all fields and add the new background fields
|
123 |
Â
*
|
124 |
-
* @param array
|
125 |
Â
* @return array
|
126 |
Â
*/
|
127 |
Â
public static function process_fields( $fields ) {
|
@@ -130,7 +146,7 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
130 |
Â
/**
|
131 |
Â
* Make sure background fields are exploded
|
132 |
Â
*/
|
133 |
-
if ( isset( $field['type'] ) && 'background'
|
134 |
Â
$explode = self::explode( $field );
|
135 |
Â
$fields = array_merge( $fields, $explode );
|
136 |
Â
}
|
@@ -143,6 +159,7 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
143 |
Â
|
144 |
Â
/**
|
145 |
Â
* The background choices.
|
Â
|
|
146 |
Â
* @return array<string,array>
|
147 |
Â
*/
|
148 |
Â
public static function background_choices() {
|
@@ -181,6 +198,5 @@ if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
|
181 |
Â
);
|
182 |
Â
|
183 |
Â
}
|
184 |
-
|
185 |
Â
}
|
186 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Background fields are just lots of sub-fields combined.
|
4 |
+
* We have to actually separate the field to its sub-parts
|
5 |
+
* and register each one of them separately.
|
6 |
+
*
|
7 |
+
* @package Kirki
|
8 |
+
* @category Core
|
9 |
+
* @author Aristeides Stathopoulos
|
10 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
12 |
+
* @since 1.0
|
13 |
+
*/
|
14 |
Â
|
15 |
Â
if ( ! class_exists( 'Kirki_Explode_Background_Field' ) ) {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Explodes background fields and creates sub-fields for it.
|
19 |
+
*/
|
20 |
Â
class Kirki_Explode_Background_Field {
|
21 |
+
|
22 |
Â
/**
|
23 |
Â
* Build the background fields.
|
24 |
Â
* Takes a single field with type = background and explodes it to multiple controls.
|
25 |
Â
*
|
26 |
+
* @param array $field The field arguments.
|
27 |
Â
* @return null|array
|
28 |
Â
*/
|
29 |
Â
public static function explode( $field ) {
|
31 |
Â
$choices = self::background_choices();
|
32 |
Â
|
33 |
Â
// Early exit if this is not a background field.
|
34 |
+
if ( 'background' !== $field['type'] ) {
|
35 |
Â
return;
|
36 |
Â
}
|
37 |
Â
|
46 |
Â
foreach ( $field['default'] as $key => $value ) {
|
47 |
Â
|
48 |
Â
// No need to process the opacity, it is factored in the color control.
|
49 |
+
if ( 'opacity' === $key ) {
|
50 |
Â
continue;
|
51 |
Â
}
|
52 |
Â
|
61 |
Â
|
62 |
Â
switch ( $key ) {
|
63 |
Â
case 'color':
|
64 |
+
// Use 'color-alpha' instead of 'color' if default is an rgba value or if 'opacity' is set.
|
Â
|
|
65 |
Â
$type = ( false !== strpos( $field['default']['color'], 'rgba' ) ) ? 'color-alpha' : 'color';
|
66 |
Â
$type = ( isset( $field['default']['opacity'] ) ) ? 'color-alpha' : $type;
|
67 |
Â
if ( isset( $field['default']['opacity'] ) && false === strpos( $value, 'rgb' ) ) {
|
84 |
Â
}
|
85 |
Â
|
86 |
Â
// If we're using options & option_name is set, then we need to modify the setting.
|
87 |
+
if ( ( isset( $field['option_type'] ) && 'option' === $field['option_type'] && isset( $field['option_name'] ) ) && ! empty( $field['option_name'] ) ) {
|
88 |
Â
$property_setting = str_replace( ']', '', str_replace( $field['option_name'] . '[', '', $field['settings'] ) );
|
89 |
Â
$property_setting = esc_attr( $field['option_name'] ) . '[' . esc_attr( $property_setting ) . '_' . $setting . ']';
|
90 |
Â
} else {
|
91 |
Â
$property_setting = esc_attr( $field['settings'] ) . '_' . $setting;
|
92 |
Â
}
|
93 |
Â
|
94 |
+
// Build the field's output element.
|
95 |
Â
$output_element = $field['output'];
|
96 |
Â
if ( ! empty( $field['output'] ) ) {
|
97 |
Â
if ( is_array( $field['output'] ) ) {
|
137 |
Â
/**
|
138 |
Â
* Parse all fields and add the new background fields
|
139 |
Â
*
|
140 |
+
* @param array $fields An array of all the generated fields.
|
141 |
Â
* @return array
|
142 |
Â
*/
|
143 |
Â
public static function process_fields( $fields ) {
|
146 |
Â
/**
|
147 |
Â
* Make sure background fields are exploded
|
148 |
Â
*/
|
149 |
+
if ( isset( $field['type'] ) && 'background' === $field['type'] ) {
|
150 |
Â
$explode = self::explode( $field );
|
151 |
Â
$fields = array_merge( $fields, $explode );
|
152 |
Â
}
|
159 |
Â
|
160 |
Â
/**
|
161 |
Â
* The background choices.
|
162 |
+
*
|
163 |
Â
* @return array<string,array>
|
164 |
Â
*/
|
165 |
Â
public static function background_choices() {
|
198 |
Â
);
|
199 |
Â
|
200 |
Â
}
|
Â
|
|
201 |
Â
}
|
202 |
Â
}
|
includes/class-kirki-field.php
CHANGED
@@ -1,99 +1,159 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
4 |
Â
class Kirki_Field {
|
5 |
Â
|
6 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
7 |
Â
* @access protected
|
8 |
Â
* @var string
|
9 |
Â
*/
|
10 |
Â
protected $kirki_config = 'global';
|
11 |
Â
|
12 |
Â
/**
|
Â
|
|
Â
|
|
13 |
Â
* @access protected
|
14 |
Â
* @var string
|
15 |
Â
*/
|
16 |
Â
protected $capability = 'edit_theme_options';
|
17 |
Â
|
18 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
* @access protected
|
20 |
Â
* @var string
|
21 |
Â
*/
|
22 |
Â
protected $option_name = '';
|
23 |
Â
|
24 |
Â
/**
|
Â
|
|
Â
|
|
25 |
Â
* @access protected
|
26 |
Â
* @var string
|
27 |
Â
*/
|
28 |
Â
protected $option_type = 'theme_mod';
|
29 |
Â
|
30 |
Â
/**
|
Â
|
|
Â
|
|
31 |
Â
* @access protected
|
32 |
Â
* @var string|array
|
33 |
Â
*/
|
34 |
Â
protected $settings = '';
|
35 |
Â
|
36 |
Â
/**
|
Â
|
|
Â
|
|
37 |
Â
* @access protected
|
38 |
Â
* @var bool
|
39 |
Â
*/
|
40 |
Â
protected $disable_output = false;
|
41 |
Â
|
42 |
Â
/**
|
Â
|
|
Â
|
|
43 |
Â
* @access protected
|
44 |
Â
* @var string
|
45 |
Â
*/
|
46 |
Â
protected $type = 'kirki-generic';
|
47 |
Â
|
48 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
49 |
Â
* @access protected
|
50 |
Â
* @var array
|
51 |
Â
*/
|
52 |
Â
protected $choices = array();
|
53 |
Â
|
54 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
55 |
Â
* @access protected
|
56 |
Â
* @var string
|
57 |
Â
*/
|
58 |
Â
protected $section = '';
|
59 |
Â
|
60 |
Â
/**
|
Â
|
|
Â
|
|
61 |
Â
* @access protected
|
62 |
Â
* @var string|array
|
63 |
Â
*/
|
64 |
Â
protected $default = '';
|
65 |
Â
|
66 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
67 |
Â
* @access protected
|
68 |
Â
* @var int
|
69 |
Â
*/
|
70 |
Â
protected $priority = 10;
|
71 |
Â
|
72 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
73 |
Â
* @access protected
|
74 |
Â
* @var string
|
75 |
Â
*/
|
76 |
Â
protected $id = '';
|
77 |
Â
|
78 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
79 |
Â
* @access protected
|
80 |
Â
* @var array
|
81 |
Â
*/
|
82 |
Â
protected $output = array();
|
83 |
Â
|
84 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
85 |
Â
* @access protected
|
86 |
Â
* @var array
|
87 |
Â
*/
|
88 |
Â
protected $js_vars = array();
|
89 |
Â
|
90 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
91 |
Â
* @access protected
|
92 |
Â
* @var array
|
93 |
Â
*/
|
94 |
Â
protected $variables = array();
|
95 |
Â
|
96 |
Â
/**
|
Â
|
|
Â
|
|
97 |
Â
* @access protected
|
98 |
Â
* @var string
|
99 |
Â
*/
|
@@ -116,30 +176,44 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
116 |
Â
protected $mode = '';
|
117 |
Â
|
118 |
Â
/**
|
Â
|
|
Â
|
|
119 |
Â
* @access protected
|
120 |
Â
* @var string|array
|
121 |
Â
*/
|
122 |
Â
protected $active_callback = '__return_true';
|
123 |
Â
|
124 |
Â
/**
|
Â
|
|
Â
|
|
125 |
Â
* @access protected
|
126 |
Â
* @var string|array
|
127 |
Â
*/
|
128 |
Â
protected $sanitize_callback = '';
|
129 |
Â
|
130 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
131 |
Â
* @access protected
|
132 |
Â
* @var string
|
133 |
Â
*/
|
134 |
Â
protected $transport = 'refresh';
|
135 |
Â
|
136 |
Â
/**
|
Â
|
|
Â
|
|
137 |
Â
* @access protected
|
138 |
Â
* @var array
|
139 |
Â
*/
|
140 |
Â
protected $required = array();
|
141 |
Â
|
142 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
143 |
Â
* @access protected
|
144 |
Â
* @var int
|
145 |
Â
*/
|
@@ -177,16 +251,24 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
177 |
Â
*/
|
178 |
Â
protected $flex_height = false;
|
179 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
180 |
Â
/**
|
181 |
Â
* The class constructor.
|
182 |
Â
* Parses and sanitizes all field arguments.
|
183 |
-
* Then it adds the field to Kirki::$fields
|
184 |
Â
*
|
185 |
Â
* @access public
|
186 |
-
* @param $config_id
|
187 |
-
*
|
188 |
-
*
|
189 |
-
* @param $args
|
190 |
Â
*/
|
191 |
Â
public function __construct( $config_id = 'global', $args = array() ) {
|
192 |
Â
|
@@ -199,21 +281,24 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
199 |
Â
if ( is_string( $config_id ) ) {
|
200 |
Â
$args['kirki_config'] = $config_id;
|
201 |
Â
}
|
Â
|
|
202 |
Â
// In case the user only provides 1 argument,
|
203 |
-
// assume that the provided argument is $args and set $config_id = 'global'
|
204 |
Â
if ( is_array( $config_id ) && empty( $args ) ) {
|
205 |
Â
$args = $config_id;
|
206 |
Â
$this->kirki_config = 'global';
|
207 |
Â
}
|
208 |
Â
$this->kirki_config = trim( esc_attr( $config_id ) );
|
209 |
-
if ( ''
|
210 |
Â
$this->kirki_config = 'global';
|
211 |
Â
}
|
212 |
-
|
Â
|
|
213 |
Â
$defaults = get_class_vars( __CLASS__ );
|
214 |
-
|
Â
|
|
215 |
Â
$config_defaults = ( isset( Kirki::$config['global'] ) ) ? Kirki::$config['global'] : array();
|
216 |
-
if ( 'global'
|
217 |
Â
$config_defaults = Kirki::$config[ $this->kirki_config ];
|
218 |
Â
}
|
219 |
Â
$config_defaults = ( is_array( $config_defaults ) ) ? $config_defaults : array();
|
@@ -224,29 +309,38 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
224 |
Â
}
|
225 |
Â
}
|
226 |
Â
}
|
227 |
-
|
Â
|
|
228 |
Â
$args = wp_parse_args( $args, $defaults );
|
229 |
-
|
Â
|
|
230 |
Â
foreach ( $args as $key => $value ) {
|
231 |
Â
$this->$key = $value;
|
232 |
Â
}
|
Â
|
|
233 |
Â
// An array of whitelisted properties that don't need to be sanitized here.
|
234 |
-
//
|
235 |
Â
$whitelisted = apply_filters( 'kirki/' . $this->kirki_config . '/fields/properties_whitelist', array(
|
236 |
-
'label' => '', //
|
237 |
-
'description' => '', //
|
238 |
-
'mode' => '', //
|
239 |
-
'fields' => array(), // Used in repeater fields
|
Â
|
|
240 |
Â
) );
|
241 |
Â
|
242 |
Â
$this->set_field( $whitelisted );
|
243 |
Â
|
244 |
Â
}
|
245 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
246 |
Â
protected function set_field( $whitelisted_properties = array() ) {
|
247 |
Â
|
248 |
Â
$properties = get_class_vars( __CLASS__ );
|
249 |
-
//
|
250 |
Â
// These will get a free pass, completely unfiltered.
|
251 |
Â
foreach ( $whitelisted_properties as $key => $default_value ) {
|
252 |
Â
if ( isset( $properties[ $key ] ) ) {
|
@@ -268,9 +362,9 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
268 |
Â
}
|
269 |
Â
}
|
270 |
Â
|
271 |
-
// Sanitize the properties, skipping the ones run from the $priorities
|
272 |
Â
foreach ( $properties as $property => $value ) {
|
273 |
-
if ( in_array( $property, $priorities ) ) {
|
274 |
Â
continue;
|
275 |
Â
}
|
276 |
Â
if ( method_exists( $this, 'set_' . $property ) ) {
|
@@ -279,13 +373,13 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
279 |
Â
}
|
280 |
Â
}
|
281 |
Â
|
282 |
-
// Get all arguments with their values
|
283 |
Â
$args = get_class_vars( __CLASS__ );
|
284 |
Â
foreach ( $args as $key => $default_value ) {
|
285 |
Â
$args[ $key ] = $this->$key;
|
286 |
Â
}
|
287 |
Â
|
288 |
-
//
|
289 |
Â
foreach ( $whitelisted_properties as $key => $default_value ) {
|
290 |
Â
if ( ! isset( $this->$key ) ) {
|
291 |
Â
$this->$key = $default_value;
|
@@ -293,11 +387,11 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
293 |
Â
$args[ $key ] = $this->$key;
|
294 |
Â
}
|
295 |
Â
|
296 |
-
// Add the field to the static $fields variable properly indexed
|
297 |
Â
Kirki::$fields[ $this->settings ] = $args;
|
298 |
Â
|
299 |
-
if ( 'background'
|
300 |
-
// Build the background fields
|
301 |
Â
Kirki::$fields = Kirki_Explode_Background_Field::process_fields( Kirki::$fields );
|
302 |
Â
}
|
303 |
Â
|
@@ -307,14 +401,12 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
307 |
Â
* This allows us to process this on a field-basis
|
308 |
Â
* by using sub-classes which can override this method.
|
309 |
Â
*
|
310 |
-
* $default
|
311 |
-
*
|
312 |
Â
* @access protected
|
313 |
Â
*/
|
314 |
Â
protected function set_default() {}
|
315 |
Â
|
316 |
Â
/**
|
317 |
-
*
|
318 |
Â
*
|
319 |
Â
* @access protected
|
320 |
Â
*/
|
@@ -325,7 +417,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
325 |
Â
}
|
326 |
Â
|
327 |
Â
/**
|
328 |
-
*
|
329 |
Â
*
|
330 |
Â
* @access protected
|
331 |
Â
*/
|
@@ -337,7 +429,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
337 |
Â
|
338 |
Â
|
339 |
Â
/**
|
340 |
-
*
|
341 |
Â
*
|
342 |
Â
* @access protected
|
343 |
Â
*/
|
@@ -354,11 +446,11 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
354 |
Â
* @access protected
|
355 |
Â
*/
|
356 |
Â
protected function set_capability() {
|
357 |
-
//
|
358 |
-
if ( 'edit_theme_options'
|
359 |
Â
return;
|
360 |
Â
}
|
361 |
-
//
|
362 |
Â
$this->capability = trim( esc_attr( $this->capability ) );
|
363 |
Â
}
|
364 |
Â
|
@@ -369,17 +461,16 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
369 |
Â
*/
|
370 |
Â
protected function set_option_type() {
|
371 |
Â
|
372 |
-
// If we have an option_name
|
373 |
-
|
374 |
-
if ( '' != $this->option_name ) {
|
375 |
Â
$this->option_type = 'option';
|
376 |
Â
}
|
377 |
-
// Take care of common typos
|
378 |
-
if ( 'options'
|
379 |
Â
$this->option_type = 'option';
|
380 |
Â
}
|
381 |
-
// Take care of common typos
|
382 |
-
if ( 'theme_mods'
|
383 |
Â
$this->option_type = 'theme_mod';
|
384 |
Â
}
|
385 |
Â
}
|
@@ -402,8 +493,8 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
402 |
Â
$settings = array();
|
403 |
Â
foreach ( $this->settings as $setting_key => $setting_value ) {
|
404 |
Â
$settings[ sanitize_key( $setting_key ) ] = esc_attr( $setting_value );
|
405 |
-
// If we're using serialized options then we need to spice this up
|
406 |
-
if ( 'option'
|
407 |
Â
$settings[ sanitize_key( $setting_key ) ] = esc_attr( $this->option_name ) . '[' . esc_attr( $setting_value ).']';
|
408 |
Â
}
|
409 |
Â
}
|
@@ -415,13 +506,13 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
415 |
Â
}
|
416 |
Â
|
417 |
Â
/**
|
418 |
-
*
|
419 |
Â
*
|
420 |
Â
* @access protected
|
421 |
Â
*/
|
422 |
Â
protected function set_tooltip() {
|
423 |
Â
|
424 |
-
if ( ''
|
425 |
Â
$this->tooltip = wp_strip_all_tags( $this->tooltip );
|
426 |
Â
return;
|
427 |
Â
}
|
@@ -441,11 +532,11 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
441 |
Â
$this->active_callback = array( 'Kirki_Active_Callback', 'evaluate' );
|
442 |
Â
return;
|
443 |
Â
}
|
444 |
-
// No need to proceed any further if we're using the default value
|
445 |
-
if ( '__return_true'
|
446 |
Â
return;
|
447 |
Â
}
|
448 |
-
// Make sure the function is callable, otherwise fallback to __return_true
|
449 |
Â
if ( ! is_callable( $this->active_callback ) ) {
|
450 |
Â
$this->active_callback = '__return_true';
|
451 |
Â
}
|
@@ -459,7 +550,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
459 |
Â
*/
|
460 |
Â
protected function set_type() {
|
461 |
Â
|
462 |
-
//
|
463 |
Â
$this->type = esc_attr( $this->type );
|
464 |
Â
|
465 |
Â
}
|
@@ -504,7 +595,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
504 |
Â
}
|
505 |
Â
|
506 |
Â
/**
|
507 |
-
* Sets the $choices
|
508 |
Â
*
|
509 |
Â
* @access protected
|
510 |
Â
*/
|
@@ -517,7 +608,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
517 |
Â
}
|
518 |
Â
|
519 |
Â
/**
|
520 |
-
*
|
521 |
Â
*
|
522 |
Â
* @access protected
|
523 |
Â
*/
|
@@ -540,7 +631,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
540 |
Â
if ( ! empty( $this->output ) && ! is_array( $this->output ) ) {
|
541 |
Â
$this->output = array( array( 'element' => $this->output ) );
|
542 |
Â
}
|
543 |
-
// Convert to array of arrays if needed
|
544 |
Â
if ( isset( $this->output['element'] ) ) {
|
545 |
Â
$this->output = array( $this->output );
|
546 |
Â
}
|
@@ -549,13 +640,13 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
549 |
Â
if ( ! isset( $output['element'] ) ) {
|
550 |
Â
continue;
|
551 |
Â
}
|
552 |
-
if ( ! isset( $output['property'] ) && ! in_array( $this->type, array( 'typography', 'background' ) ) ) {
|
553 |
Â
continue;
|
554 |
Â
}
|
555 |
Â
if ( ! isset( $output['sanitize_callback'] ) && isset( $output['callback'] ) ) {
|
556 |
Â
$output['sanitize_callback'] = $output['callback'];
|
557 |
Â
}
|
558 |
-
// Convert element arrays to strings
|
559 |
Â
if ( is_array( $output['element'] ) ) {
|
560 |
Â
$output['element'] = array_unique( $output['element'] );
|
561 |
Â
sort( $output['element'] );
|
@@ -590,18 +681,18 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
590 |
Â
* Check if transport is set to auto.
|
591 |
Â
* If not, then skip the auto-calculations and exit early.
|
592 |
Â
*/
|
593 |
-
if ( 'auto'
|
594 |
Â
return;
|
595 |
Â
}
|
596 |
Â
|
597 |
Â
// Set transport to refresh initially.
|
598 |
-
// Serves as a fallback in case we failt to auto-calculate js_vars
|
599 |
Â
$this->transport = 'refresh';
|
600 |
Â
$js_vars = array();
|
601 |
Â
// Try to auto-generate js_vars.
|
602 |
Â
// First we need to check if js_vars are empty, and that output is not empty.
|
603 |
Â
if ( empty( $this->js_vars ) && ! empty( $this->output ) ) {
|
604 |
-
//
|
605 |
Â
foreach ( $this->output as $output ) {
|
606 |
Â
$output['function'] = 'css';
|
607 |
Â
// If 'element' or 'property' are not defined, skip this.
|
@@ -619,13 +710,12 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
619 |
Â
continue;
|
620 |
Â
}
|
621 |
Â
// If we got this far, it's safe to add this.
|
622 |
-
|
623 |
Â
$js_vars[] = $output;
|
624 |
Â
}
|
625 |
Â
|
626 |
Â
// Did we manage to get all the items from 'output'?
|
627 |
Â
// If not, then we're missing something so don't add this.
|
628 |
-
if ( count( $js_vars )
|
629 |
Â
return;
|
630 |
Â
}
|
631 |
Â
$this->js_vars = $js_vars;
|
@@ -656,10 +746,10 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
656 |
Â
*/
|
657 |
Â
protected function set_help() {
|
658 |
Â
|
659 |
-
if ( ''
|
660 |
Â
return;
|
661 |
Â
}
|
662 |
-
if ( ''
|
663 |
Â
$this->tooltip = wp_strip_all_tags( $this->help );
|
664 |
Â
// $help has been deprecated
|
665 |
Â
$this->help = '';
|
@@ -675,7 +765,7 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
675 |
Â
*/
|
676 |
Â
protected function set_transport() {
|
677 |
Â
|
678 |
-
if ( 'postmessage'
|
679 |
Â
$this->transport = 'postMessage';
|
680 |
Â
}
|
681 |
Â
|
@@ -715,7 +805,5 @@ if ( ! class_exists( 'Kirki_Field' ) ) {
|
|
715 |
Â
$this->priority = absint( $this->priority );
|
716 |
Â
|
717 |
Â
}
|
718 |
-
|
719 |
Â
}
|
720 |
-
|
721 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Creates and validates field parameters.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Field' ) ) {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Please do not use this class directly.
|
17 |
+
* You should instead extend it per-field-type.
|
18 |
+
*/
|
19 |
Â
class Kirki_Field {
|
20 |
Â
|
21 |
Â
/**
|
22 |
+
* The ID of the kirki_config we're using.
|
23 |
+
*
|
24 |
+
* @see Kirki_Config
|
25 |
Â
* @access protected
|
26 |
Â
* @var string
|
27 |
Â
*/
|
28 |
Â
protected $kirki_config = 'global';
|
29 |
Â
|
30 |
Â
/**
|
31 |
+
* Thje capability required so that users can edit this field.
|
32 |
+
*
|
33 |
Â
* @access protected
|
34 |
Â
* @var string
|
35 |
Â
*/
|
36 |
Â
protected $capability = 'edit_theme_options';
|
37 |
Â
|
38 |
Â
/**
|
39 |
+
* If we're using options instead of theme_mods
|
40 |
+
* and we want them serialized, this is the option that
|
41 |
+
* will saved in the db.
|
42 |
+
*
|
43 |
Â
* @access protected
|
44 |
Â
* @var string
|
45 |
Â
*/
|
46 |
Â
protected $option_name = '';
|
47 |
Â
|
48 |
Â
/**
|
49 |
+
* Use "theme_mod" or "option".
|
50 |
+
*
|
51 |
Â
* @access protected
|
52 |
Â
* @var string
|
53 |
Â
*/
|
54 |
Â
protected $option_type = 'theme_mod';
|
55 |
Â
|
56 |
Â
/**
|
57 |
+
* The name of this setting (id for the db).
|
58 |
+
*
|
59 |
Â
* @access protected
|
60 |
Â
* @var string|array
|
61 |
Â
*/
|
62 |
Â
protected $settings = '';
|
63 |
Â
|
64 |
Â
/**
|
65 |
+
* Set to true if you want to disable all CSS output for this field.
|
66 |
+
*
|
67 |
Â
* @access protected
|
68 |
Â
* @var bool
|
69 |
Â
*/
|
70 |
Â
protected $disable_output = false;
|
71 |
Â
|
72 |
Â
/**
|
73 |
+
* The field type.
|
74 |
+
*
|
75 |
Â
* @access protected
|
76 |
Â
* @var string
|
77 |
Â
*/
|
78 |
Â
protected $type = 'kirki-generic';
|
79 |
Â
|
80 |
Â
/**
|
81 |
+
* Some fields require options to be set.
|
82 |
+
* We're whitelisting the property here
|
83 |
+
* and suggest you validate this in a child class.
|
84 |
+
*
|
85 |
Â
* @access protected
|
86 |
Â
* @var array
|
87 |
Â
*/
|
88 |
Â
protected $choices = array();
|
89 |
Â
|
90 |
Â
/**
|
91 |
+
* Assign this field to a section.
|
92 |
+
* Fields not assigned to a section will not be displayed in the customizer.
|
93 |
+
*
|
94 |
Â
* @access protected
|
95 |
Â
* @var string
|
96 |
Â
*/
|
97 |
Â
protected $section = '';
|
98 |
Â
|
99 |
Â
/**
|
100 |
+
* The default value for this field.
|
101 |
+
*
|
102 |
Â
* @access protected
|
103 |
Â
* @var string|array
|
104 |
Â
*/
|
105 |
Â
protected $default = '';
|
106 |
Â
|
107 |
Â
/**
|
108 |
+
* Priority determines the position of a control inside a section.
|
109 |
+
* Lower priority numbers move the control to the top.
|
110 |
+
*
|
111 |
Â
* @access protected
|
112 |
Â
* @var int
|
113 |
Â
*/
|
114 |
Â
protected $priority = 10;
|
115 |
Â
|
116 |
Â
/**
|
117 |
+
* Unique ID for this field.
|
118 |
+
* This is auto-calculated from the $settings argument.
|
119 |
+
*
|
120 |
Â
* @access protected
|
121 |
Â
* @var string
|
122 |
Â
*/
|
123 |
Â
protected $id = '';
|
124 |
Â
|
125 |
Â
/**
|
126 |
+
* Use if you want to automatically generate CSS from this field's value.
|
127 |
+
*
|
128 |
+
* @see https://kirki.org/docs/arguments/output
|
129 |
Â
* @access protected
|
130 |
Â
* @var array
|
131 |
Â
*/
|
132 |
Â
protected $output = array();
|
133 |
Â
|
134 |
Â
/**
|
135 |
+
* Use to automatically generate postMessage scripts.
|
136 |
+
* Not necessary to use if you use 'transport' => 'auto'
|
137 |
+
* and have already set an array for the 'output' argument.
|
138 |
+
*
|
139 |
+
* @see https://kirki.org/docs/arguments/js_vars
|
140 |
Â
* @access protected
|
141 |
Â
* @var array
|
142 |
Â
*/
|
143 |
Â
protected $js_vars = array();
|
144 |
Â
|
145 |
Â
/**
|
146 |
+
* If you want to use a CSS compiler, then use this to set the variable names.
|
147 |
+
*
|
148 |
+
* @see https://kirki.org/docs/arguments/variables
|
149 |
Â
* @access protected
|
150 |
Â
* @var array
|
151 |
Â
*/
|
152 |
Â
protected $variables = array();
|
153 |
Â
|
154 |
Â
/**
|
155 |
+
* Text that will be used in a tooltip to provide extra info for this field.
|
156 |
+
*
|
157 |
Â
* @access protected
|
158 |
Â
* @var string
|
159 |
Â
*/
|
176 |
Â
protected $mode = '';
|
177 |
Â
|
178 |
Â
/**
|
179 |
+
* A custom callback to determine if the field should be visible or not.
|
180 |
+
*
|
181 |
Â
* @access protected
|
182 |
Â
* @var string|array
|
183 |
Â
*/
|
184 |
Â
protected $active_callback = '__return_true';
|
185 |
Â
|
186 |
Â
/**
|
187 |
+
* A custom sanitize callback that will be used to properly save the values.
|
188 |
+
*
|
189 |
Â
* @access protected
|
190 |
Â
* @var string|array
|
191 |
Â
*/
|
192 |
Â
protected $sanitize_callback = '';
|
193 |
Â
|
194 |
Â
/**
|
195 |
+
* Use 'refresh', 'postMessage' or 'auto'.
|
196 |
+
* 'auto' will automatically geberate any 'js_vars' from the 'output' argument.
|
197 |
+
*
|
198 |
Â
* @access protected
|
199 |
Â
* @var string
|
200 |
Â
*/
|
201 |
Â
protected $transport = 'refresh';
|
202 |
Â
|
203 |
Â
/**
|
204 |
+
* Define dependencies to show/hide this field based on the values of other fields.
|
205 |
+
*
|
206 |
Â
* @access protected
|
207 |
Â
* @var array
|
208 |
Â
*/
|
209 |
Â
protected $required = array();
|
210 |
Â
|
211 |
Â
/**
|
212 |
+
* Use only on select controls.
|
213 |
+
* Defines if this is a multi-select or not.
|
214 |
+
* If value is > 1, then the maximum number of selectable options
|
215 |
+
* is the number defined here.
|
216 |
+
*
|
217 |
Â
* @access protected
|
218 |
Â
* @var int
|
219 |
Â
*/
|
251 |
Â
*/
|
252 |
Â
protected $flex_height = false;
|
253 |
Â
|
254 |
+
/**
|
255 |
+
* Contain the settings for the repeater rows labels
|
256 |
+
*
|
257 |
+
* @access protected
|
258 |
+
* @var array
|
259 |
+
*/
|
260 |
+
protected $row_label = array();
|
261 |
+
|
262 |
Â
/**
|
263 |
Â
* The class constructor.
|
264 |
Â
* Parses and sanitizes all field arguments.
|
265 |
+
* Then it adds the field to Kirki::$fields.
|
266 |
Â
*
|
267 |
Â
* @access public
|
268 |
+
* @param string $config_id The ID of the config we want to use.
|
269 |
+
* Defaults to "global".
|
270 |
+
* Configs are handled by the Kirki_Config class.
|
271 |
+
* @param array $args The arguments of the field.
|
272 |
Â
*/
|
273 |
Â
public function __construct( $config_id = 'global', $args = array() ) {
|
274 |
Â
|
281 |
Â
if ( is_string( $config_id ) ) {
|
282 |
Â
$args['kirki_config'] = $config_id;
|
283 |
Â
}
|
284 |
+
|
285 |
Â
// In case the user only provides 1 argument,
|
286 |
+
// assume that the provided argument is $args and set $config_id = 'global'.
|
287 |
Â
if ( is_array( $config_id ) && empty( $args ) ) {
|
288 |
Â
$args = $config_id;
|
289 |
Â
$this->kirki_config = 'global';
|
290 |
Â
}
|
291 |
Â
$this->kirki_config = trim( esc_attr( $config_id ) );
|
292 |
+
if ( '' === $config_id ) {
|
293 |
Â
$this->kirki_config = 'global';
|
294 |
Â
}
|
295 |
+
|
296 |
+
// Get defaults from the class.
|
297 |
Â
$defaults = get_class_vars( __CLASS__ );
|
298 |
+
|
299 |
+
// Get the config arguments, and merge them with the defaults.
|
300 |
Â
$config_defaults = ( isset( Kirki::$config['global'] ) ) ? Kirki::$config['global'] : array();
|
301 |
+
if ( 'global' !== $this->kirki_config && isset( Kirki::$config[ $this->kirki_config ] ) ) {
|
302 |
Â
$config_defaults = Kirki::$config[ $this->kirki_config ];
|
303 |
Â
}
|
304 |
Â
$config_defaults = ( is_array( $config_defaults ) ) ? $config_defaults : array();
|
309 |
Â
}
|
310 |
Â
}
|
311 |
Â
}
|
312 |
+
|
313 |
+
// Merge our args with the defaults.
|
314 |
Â
$args = wp_parse_args( $args, $defaults );
|
315 |
+
|
316 |
+
// Set the class properties using the parsed args.
|
317 |
Â
foreach ( $args as $key => $value ) {
|
318 |
Â
$this->$key = $value;
|
319 |
Â
}
|
320 |
+
|
321 |
Â
// An array of whitelisted properties that don't need to be sanitized here.
|
322 |
+
// Format: $key => $default_value.
|
323 |
Â
$whitelisted = apply_filters( 'kirki/' . $this->kirki_config . '/fields/properties_whitelist', array(
|
324 |
+
'label' => '', // This is sanitized later in the controls themselves.
|
325 |
+
'description' => '', // This is sanitized later in the controls themselves.
|
326 |
+
'mode' => '', // Only used for backwards-compatibility reasons.
|
327 |
+
'fields' => array(), // Used in repeater fields.
|
328 |
+
'row_label' => array(), // Used in repeater fields.
|
329 |
Â
) );
|
330 |
Â
|
331 |
Â
$this->set_field( $whitelisted );
|
332 |
Â
|
333 |
Â
}
|
334 |
Â
|
335 |
+
/**
|
336 |
+
* Processes the field arguments
|
337 |
+
*
|
338 |
+
* @param array $whitelisted_properties Defines an array of arguments that will skip validation at this point.
|
339 |
+
*/
|
340 |
Â
protected function set_field( $whitelisted_properties = array() ) {
|
341 |
Â
|
342 |
Â
$properties = get_class_vars( __CLASS__ );
|
343 |
+
// Remove any whitelisted properties from above.
|
344 |
Â
// These will get a free pass, completely unfiltered.
|
345 |
Â
foreach ( $whitelisted_properties as $key => $default_value ) {
|
346 |
Â
if ( isset( $properties[ $key ] ) ) {
|
362 |
Â
}
|
363 |
Â
}
|
364 |
Â
|
365 |
+
// Sanitize the properties, skipping the ones run from the $priorities.
|
366 |
Â
foreach ( $properties as $property => $value ) {
|
367 |
+
if ( in_array( $property, $priorities, true ) ) {
|
368 |
Â
continue;
|
369 |
Â
}
|
370 |
Â
if ( method_exists( $this, 'set_' . $property ) ) {
|
373 |
Â
}
|
374 |
Â
}
|
375 |
Â
|
376 |
+
// Get all arguments with their values.
|
377 |
Â
$args = get_class_vars( __CLASS__ );
|
378 |
Â
foreach ( $args as $key => $default_value ) {
|
379 |
Â
$args[ $key ] = $this->$key;
|
380 |
Â
}
|
381 |
Â
|
382 |
+
// Add the whitelisted properties through the back door.
|
383 |
Â
foreach ( $whitelisted_properties as $key => $default_value ) {
|
384 |
Â
if ( ! isset( $this->$key ) ) {
|
385 |
Â
$this->$key = $default_value;
|
387 |
Â
$args[ $key ] = $this->$key;
|
388 |
Â
}
|
389 |
Â
|
390 |
+
// Add the field to the static $fields variable properly indexed.
|
391 |
Â
Kirki::$fields[ $this->settings ] = $args;
|
392 |
Â
|
393 |
+
if ( 'background' === $this->type ) {
|
394 |
+
// Build the background fields.
|
395 |
Â
Kirki::$fields = Kirki_Explode_Background_Field::process_fields( Kirki::$fields );
|
396 |
Â
}
|
397 |
Â
|
401 |
Â
* This allows us to process this on a field-basis
|
402 |
Â
* by using sub-classes which can override this method.
|
403 |
Â
*
|
Â
|
|
Â
|
|
404 |
Â
* @access protected
|
405 |
Â
*/
|
406 |
Â
protected function set_default() {}
|
407 |
Â
|
408 |
Â
/**
|
409 |
+
* Escape $kirki_config.
|
410 |
Â
*
|
411 |
Â
* @access protected
|
412 |
Â
*/
|
417 |
Â
}
|
418 |
Â
|
419 |
Â
/**
|
420 |
+
* Escape $option_name.
|
421 |
Â
*
|
422 |
Â
* @access protected
|
423 |
Â
*/
|
429 |
Â
|
430 |
Â
|
431 |
Â
/**
|
432 |
+
* Escape the $section.
|
433 |
Â
*
|
434 |
Â
* @access protected
|
435 |
Â
*/
|
446 |
Â
* @access protected
|
447 |
Â
*/
|
448 |
Â
protected function set_capability() {
|
449 |
+
// Early exit if we're using 'edit_theme_options'.
|
450 |
+
if ( 'edit_theme_options' === $this->capability ) {
|
451 |
Â
return;
|
452 |
Â
}
|
453 |
+
// Escape & trim the capability.
|
454 |
Â
$this->capability = trim( esc_attr( $this->capability ) );
|
455 |
Â
}
|
456 |
Â
|
461 |
Â
*/
|
462 |
Â
protected function set_option_type() {
|
463 |
Â
|
464 |
+
// If we have an option_name then make sure we're using options and not theme_mods.
|
465 |
+
if ( '' !== $this->option_name ) {
|
Â
|
|
466 |
Â
$this->option_type = 'option';
|
467 |
Â
}
|
468 |
+
// Take care of common typos.
|
469 |
+
if ( 'options' === $this->option_type ) {
|
470 |
Â
$this->option_type = 'option';
|
471 |
Â
}
|
472 |
+
// Take care of common typos.
|
473 |
+
if ( 'theme_mods' === $this->option_type ) {
|
474 |
Â
$this->option_type = 'theme_mod';
|
475 |
Â
}
|
476 |
Â
}
|
493 |
Â
$settings = array();
|
494 |
Â
foreach ( $this->settings as $setting_key => $setting_value ) {
|
495 |
Â
$settings[ sanitize_key( $setting_key ) ] = esc_attr( $setting_value );
|
496 |
+
// If we're using serialized options then we need to spice this up.
|
497 |
+
if ( 'option' === $this->option_type && '' !== $this->option_name && ( false === strpos( $setting_key, '[' ) ) ) {
|
498 |
Â
$settings[ sanitize_key( $setting_key ) ] = esc_attr( $this->option_name ) . '[' . esc_attr( $setting_value ).']';
|
499 |
Â
}
|
500 |
Â
}
|
506 |
Â
}
|
507 |
Â
|
508 |
Â
/**
|
509 |
+
* Escapes the tooltip messages.
|
510 |
Â
*
|
511 |
Â
* @access protected
|
512 |
Â
*/
|
513 |
Â
protected function set_tooltip() {
|
514 |
Â
|
515 |
+
if ( '' !== $this->tooltip ) {
|
516 |
Â
$this->tooltip = wp_strip_all_tags( $this->tooltip );
|
517 |
Â
return;
|
518 |
Â
}
|
532 |
Â
$this->active_callback = array( 'Kirki_Active_Callback', 'evaluate' );
|
533 |
Â
return;
|
534 |
Â
}
|
535 |
+
// No need to proceed any further if we're using the default value.
|
536 |
+
if ( '__return_true' === $this->active_callback ) {
|
537 |
Â
return;
|
538 |
Â
}
|
539 |
+
// Make sure the function is callable, otherwise fallback to __return_true.
|
540 |
Â
if ( ! is_callable( $this->active_callback ) ) {
|
541 |
Â
$this->active_callback = '__return_true';
|
542 |
Â
}
|
550 |
Â
*/
|
551 |
Â
protected function set_type() {
|
552 |
Â
|
553 |
+
// Escape the control type (it doesn't hurt to be sure).
|
554 |
Â
$this->type = esc_attr( $this->type );
|
555 |
Â
|
556 |
Â
}
|
595 |
Â
}
|
596 |
Â
|
597 |
Â
/**
|
598 |
+
* Sets the $choices.
|
599 |
Â
*
|
600 |
Â
* @access protected
|
601 |
Â
*/
|
608 |
Â
}
|
609 |
Â
|
610 |
Â
/**
|
611 |
+
* Escapes the $disable_output.
|
612 |
Â
*
|
613 |
Â
* @access protected
|
614 |
Â
*/
|
631 |
Â
if ( ! empty( $this->output ) && ! is_array( $this->output ) ) {
|
632 |
Â
$this->output = array( array( 'element' => $this->output ) );
|
633 |
Â
}
|
634 |
+
// Convert to array of arrays if needed.
|
635 |
Â
if ( isset( $this->output['element'] ) ) {
|
636 |
Â
$this->output = array( $this->output );
|
637 |
Â
}
|
640 |
Â
if ( ! isset( $output['element'] ) ) {
|
641 |
Â
continue;
|
642 |
Â
}
|
643 |
+
if ( ! isset( $output['property'] ) && ! in_array( $this->type, array( 'typography', 'background' ), true ) ) {
|
644 |
Â
continue;
|
645 |
Â
}
|
646 |
Â
if ( ! isset( $output['sanitize_callback'] ) && isset( $output['callback'] ) ) {
|
647 |
Â
$output['sanitize_callback'] = $output['callback'];
|
648 |
Â
}
|
649 |
+
// Convert element arrays to strings.
|
650 |
Â
if ( is_array( $output['element'] ) ) {
|
651 |
Â
$output['element'] = array_unique( $output['element'] );
|
652 |
Â
sort( $output['element'] );
|
681 |
Â
* Check if transport is set to auto.
|
682 |
Â
* If not, then skip the auto-calculations and exit early.
|
683 |
Â
*/
|
684 |
+
if ( 'auto' !== $this->transport ) {
|
685 |
Â
return;
|
686 |
Â
}
|
687 |
Â
|
688 |
Â
// Set transport to refresh initially.
|
689 |
+
// Serves as a fallback in case we failt to auto-calculate js_vars.
|
690 |
Â
$this->transport = 'refresh';
|
691 |
Â
$js_vars = array();
|
692 |
Â
// Try to auto-generate js_vars.
|
693 |
Â
// First we need to check if js_vars are empty, and that output is not empty.
|
694 |
Â
if ( empty( $this->js_vars ) && ! empty( $this->output ) ) {
|
695 |
+
// Start going through each item in the $output array.
|
696 |
Â
foreach ( $this->output as $output ) {
|
697 |
Â
$output['function'] = 'css';
|
698 |
Â
// If 'element' or 'property' are not defined, skip this.
|
710 |
Â
continue;
|
711 |
Â
}
|
712 |
Â
// If we got this far, it's safe to add this.
|
Â
|
|
713 |
Â
$js_vars[] = $output;
|
714 |
Â
}
|
715 |
Â
|
716 |
Â
// Did we manage to get all the items from 'output'?
|
717 |
Â
// If not, then we're missing something so don't add this.
|
718 |
+
if ( count( $js_vars ) !== count( $this->output ) ) {
|
719 |
Â
return;
|
720 |
Â
}
|
721 |
Â
$this->js_vars = $js_vars;
|
746 |
Â
*/
|
747 |
Â
protected function set_help() {
|
748 |
Â
|
749 |
+
if ( '' !== $this->tooltip ) {
|
750 |
Â
return;
|
751 |
Â
}
|
752 |
+
if ( '' !== $this->help ) {
|
753 |
Â
$this->tooltip = wp_strip_all_tags( $this->help );
|
754 |
Â
// $help has been deprecated
|
755 |
Â
$this->help = '';
|
765 |
Â
*/
|
766 |
Â
protected function set_transport() {
|
767 |
Â
|
768 |
+
if ( 'postmessage' === trim( strtolower( $this->transport ) ) ) {
|
769 |
Â
$this->transport = 'postMessage';
|
770 |
Â
}
|
771 |
Â
|
805 |
Â
$this->priority = absint( $this->priority );
|
806 |
Â
|
807 |
Â
}
|
Â
|
|
808 |
Â
}
|
Â
|
|
809 |
Â
}
|
includes/class-kirki-fonts-google.php
CHANGED
@@ -1,29 +1,70 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
Â
|
|
4 |
Â
/**
|
5 |
Â
* Manages the way Google Fonts are enqueued.
|
6 |
Â
*/
|
7 |
Â
final class Kirki_Fonts_Google {
|
8 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
9 |
Â
private static $instance = null;
|
10 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
11 |
Â
private $fonts = array();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
12 |
Â
private $subsets = array();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
13 |
Â
private $link = '';
|
14 |
Â
|
15 |
Â
/**
|
16 |
-
* The class constructor
|
17 |
Â
*/
|
18 |
Â
private function __construct() {
|
19 |
Â
|
20 |
Â
$config = apply_filters( 'kirki/config', array() );
|
21 |
-
|
22 |
-
// then do not proceed any further.
|
23 |
-
if ( isset( $config['disable_google_fonts'] ) && true
|
24 |
Â
return;
|
25 |
Â
}
|
26 |
-
|
Â
|
|
27 |
Â
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ), 105 );
|
28 |
Â
|
29 |
Â
}
|
@@ -45,14 +86,18 @@ if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
|
45 |
Â
* Calls all the other necessary methods to populate and create the link.
|
46 |
Â
*/
|
47 |
Â
public function enqueue() {
|
48 |
-
|
Â
|
|
49 |
Â
$this->loop_fields();
|
Â
|
|
50 |
Â
// Goes through $this->fonts and adds or removes things as needed.
|
51 |
Â
$this->process_fonts();
|
52 |
-
|
Â
|
|
53 |
Â
$this->create_link();
|
Â
|
|
54 |
Â
// If $this->link is not empty then enqueue it.
|
55 |
-
if ( ''
|
56 |
Â
wp_enqueue_style( 'kirki_google_fonts', $this->link, array(), null );
|
57 |
Â
}
|
58 |
Â
}
|
@@ -66,29 +111,39 @@ if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
|
66 |
Â
}
|
67 |
Â
}
|
68 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
69 |
Â
private function generate_google_font( $args ) {
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
// Get the value
|
75 |
Â
$value = Kirki_Values::get_sanitized_field_value( $args );
|
Â
|
|
76 |
Â
// If we don't have a font-family then we can skip this.
|
77 |
Â
if ( ! isset( $value['font-family'] ) ) {
|
78 |
Â
return;
|
79 |
Â
}
|
Â
|
|
80 |
Â
// Add support for older formats of the typography control.
|
81 |
Â
// We used to have font-weight instead of variant.
|
82 |
Â
if ( isset( $value['font-weight'] ) && ( ! isset( $value['variant'] ) || empty( $value['variant'] ) ) ) {
|
83 |
Â
$value['variant'] = $value['font-weight'];
|
84 |
Â
}
|
85 |
-
|
Â
|
|
86 |
Â
if ( ! isset( $value['variant'] ) ) {
|
87 |
Â
$value['variant'] = 'regular';
|
88 |
Â
}
|
89 |
Â
if ( isset( $value['subset'] ) ) {
|
90 |
-
|
91 |
-
// in the Kirki_GoogleFonts_Manager object.
|
92 |
Â
// Subsets must be applied to ALL fonts if possible.
|
93 |
Â
if ( ! is_array( $value['subset'] ) ) {
|
94 |
Â
$this->subsets[] = $value['subset'];
|
@@ -98,51 +153,46 @@ if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
|
98 |
Â
}
|
99 |
Â
}
|
100 |
Â
}
|
101 |
-
|
Â
|
|
102 |
Â
if ( ! isset( $this->fonts[ $value['font-family'] ] ) ) {
|
103 |
Â
$this->fonts[ $value['font-family'] ] = array();
|
104 |
Â
}
|
105 |
-
if ( ! in_array( $value['variant'], $this->fonts[ $value['font-family'] ] ) ) {
|
106 |
Â
$this->fonts[ $value['font-family'] ][] = $value['variant'];
|
107 |
Â
}
|
108 |
-
}
|
109 |
Â
|
110 |
-
|
111 |
-
* Process non-typography fields
|
112 |
-
*/
|
113 |
-
else {
|
114 |
Â
if ( isset( $args['output'] ) && is_array( $args['output'] ) ) {
|
115 |
Â
foreach ( $args['output'] as $output ) {
|
Â
|
|
116 |
Â
// If we don't have a typography-related output argument we can skip this.
|
117 |
-
if ( ! isset( $output['property'] ) || ! in_array( $output['property'], array( 'font-family', 'font-weight', 'font-subset', 'subset' ) ) ) {
|
118 |
Â
continue;
|
119 |
Â
}
|
120 |
-
|
Â
|
|
121 |
Â
$value = Kirki_Values::get_sanitized_field_value( $args );
|
122 |
Â
|
123 |
-
|
124 |
-
if ( 'font-family' == $output['property'] ) {
|
125 |
Â
if ( ! array_key_exists( $value, $this->fonts ) ) {
|
126 |
Â
$this->fonts[ $value ] = array();
|
127 |
Â
}
|
128 |
-
}
|
129 |
-
// font-weight
|
130 |
-
elseif ( 'font-weight' == $output['property'] ) {
|
131 |
Â
foreach ( $this->fonts as $font => $variants ) {
|
132 |
-
if ( ! in_array( $value, $variants ) ) {
|
133 |
Â
$this->fonts[ $font ][] = $value;
|
134 |
Â
}
|
135 |
Â
}
|
136 |
-
}
|
137 |
-
// subsets
|
138 |
-
elseif ( 'font-subset' == $output['property'] || 'subset' == $output['property'] ) {
|
139 |
Â
if ( ! is_array( $value ) ) {
|
140 |
-
if ( ! in_array( $value, $this->subsets ) ) {
|
141 |
Â
$this->subsets[] = $value;
|
142 |
Â
}
|
143 |
Â
} else {
|
144 |
Â
foreach ( $value as $subset ) {
|
145 |
-
if ( ! in_array( $subset, $this->subsets ) ) {
|
146 |
Â
$this->subsets[] = $subset;
|
147 |
Â
}
|
148 |
Â
}
|
@@ -151,44 +201,54 @@ if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
|
151 |
Â
}
|
152 |
Â
}
|
153 |
Â
}
|
154 |
-
|
155 |
Â
}
|
156 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
157 |
Â
private function process_fonts() {
|
158 |
-
|
Â
|
|
159 |
Â
if ( empty( $this->fonts ) ) {
|
160 |
Â
return;
|
161 |
Â
}
|
162 |
-
|
Â
|
|
163 |
Â
$google_fonts = Kirki_Fonts::get_google_fonts();
|
164 |
Â
|
165 |
Â
$valid_subsets = array();
|
166 |
Â
foreach ( $this->fonts as $font => $variants ) {
|
Â
|
|
167 |
Â
// Determine if this is indeed a google font or not.
|
168 |
Â
// If it's not, then just remove it from the array.
|
169 |
Â
if ( ! array_key_exists( $font, $google_fonts ) ) {
|
170 |
Â
unset( $this->fonts[ $font ] );
|
171 |
Â
continue;
|
172 |
Â
}
|
173 |
-
|
Â
|
|
174 |
Â
$font_variants = array();
|
175 |
Â
if ( isset( $google_fonts[ $font ]['variants'] ) ) {
|
176 |
Â
$font_variants = $google_fonts[ $font ]['variants'];
|
177 |
Â
}
|
178 |
Â
foreach ( $variants as $variant ) {
|
Â
|
|
179 |
Â
// If this is not a valid variant for this font-family
|
180 |
Â
// then unset it and move on to the next one.
|
181 |
-
if ( ! in_array( $variant, $font_variants ) ) {
|
182 |
Â
$variant_key = array_search( $variant, $this->fonts[ $font ] );
|
183 |
Â
unset( $this->fonts[ $font ][ $variant_key ] );
|
184 |
Â
continue;
|
185 |
Â
}
|
186 |
Â
}
|
Â
|
|
187 |
Â
// Check if the selected subsets exist, even in one of the selected fonts.
|
188 |
Â
// If they don't, then they have to be removed otherwise the link will fail.
|
189 |
Â
if ( isset( $google_fonts[ $font ]['subsets'] ) ) {
|
190 |
Â
foreach ( $this->subsets as $subset ) {
|
191 |
-
if ( in_array( $subset, $google_fonts[ $font ]['subsets'] ) ) {
|
192 |
Â
$valid_subsets[] = $subset;
|
193 |
Â
}
|
194 |
Â
}
|
@@ -197,12 +257,17 @@ if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
|
197 |
Â
$this->subsets = $valid_subsets;
|
198 |
Â
}
|
199 |
Â
|
Â
|
|
Â
|
|
Â
|
|
200 |
Â
private function create_link() {
|
Â
|
|
201 |
Â
// If we don't have any fonts then we can exit.
|
202 |
Â
if ( empty( $this->fonts ) ) {
|
203 |
Â
return;
|
204 |
Â
}
|
205 |
-
|
Â
|
|
206 |
Â
$link_fonts = array();
|
207 |
Â
foreach ( $this->fonts as $font => $variants ) {
|
208 |
Â
$variants = implode( ',', $variants );
|
@@ -213,16 +278,16 @@ if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
|
213 |
Â
}
|
214 |
Â
$link_fonts[] = $link_font;
|
215 |
Â
}
|
216 |
-
$this->link = 'https://fonts.googleapis.com/css?family=';
|
217 |
-
$this->link .= implode( '|', $link_fonts );
|
218 |
Â
|
219 |
Â
if ( ! empty( $this->subsets ) ) {
|
220 |
Â
$this->subsets = array_unique( $this->subsets );
|
221 |
-
$this->link .= '&subset=' . implode( ',', $this->subsets );
|
222 |
Â
}
|
223 |
Â
|
224 |
-
|
Â
|
|
Â
|
|
Â
|
|
225 |
Â
|
Â
|
|
226 |
Â
}
|
227 |
-
|
228 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Processes typography-related fields
|
4 |
+
* and generates the google-font link.
|
5 |
+
*
|
6 |
+
* @package Kirki
|
7 |
+
* @category Core
|
8 |
+
* @author Aristeides Stathopoulos
|
9 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
+
* @since 1.0
|
12 |
+
*/
|
13 |
Â
|
14 |
Â
if ( ! class_exists( 'Kirki_Fonts_Google' ) ) {
|
15 |
+
|
16 |
Â
/**
|
17 |
Â
* Manages the way Google Fonts are enqueued.
|
18 |
Â
*/
|
19 |
Â
final class Kirki_Fonts_Google {
|
20 |
Â
|
21 |
+
/**
|
22 |
+
* The Kirki_Fonts_Google instance.
|
23 |
+
* We use the singleton pattern here to avoid loading the google-font array multiple times.
|
24 |
+
* This is mostly a performance tweak.
|
25 |
+
*
|
26 |
+
* @access private
|
27 |
+
* @var null|object
|
28 |
+
*/
|
29 |
Â
private static $instance = null;
|
30 |
Â
|
31 |
+
/**
|
32 |
+
* The array of fonts
|
33 |
+
*
|
34 |
+
* @access private
|
35 |
+
* @var array
|
36 |
+
*/
|
37 |
Â
private $fonts = array();
|
38 |
+
|
39 |
+
/**
|
40 |
+
* The array of subsets
|
41 |
+
*
|
42 |
+
* @access private
|
43 |
+
* @var array
|
44 |
+
*/
|
45 |
Â
private $subsets = array();
|
46 |
+
|
47 |
+
/**
|
48 |
+
* The google link
|
49 |
+
*
|
50 |
+
* @access private
|
51 |
+
* @var string
|
52 |
+
*/
|
53 |
Â
private $link = '';
|
54 |
Â
|
55 |
Â
/**
|
56 |
+
* The class constructor.
|
57 |
Â
*/
|
58 |
Â
private function __construct() {
|
59 |
Â
|
60 |
Â
$config = apply_filters( 'kirki/config', array() );
|
61 |
+
|
62 |
+
// If we have set $config['disable_google_fonts'] to true then do not proceed any further.
|
63 |
+
if ( isset( $config['disable_google_fonts'] ) && true === $config['disable_google_fonts'] ) {
|
64 |
Â
return;
|
65 |
Â
}
|
66 |
+
|
67 |
+
// Enqueue link.
|
68 |
Â
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ), 105 );
|
69 |
Â
|
70 |
Â
}
|
86 |
Â
* Calls all the other necessary methods to populate and create the link.
|
87 |
Â
*/
|
88 |
Â
public function enqueue() {
|
89 |
+
|
90 |
+
// Go through our fields and populate $this->fonts.
|
91 |
Â
$this->loop_fields();
|
92 |
+
|
93 |
Â
// Goes through $this->fonts and adds or removes things as needed.
|
94 |
Â
$this->process_fonts();
|
95 |
+
|
96 |
+
// Go through $this->fonts and populate $this->link.
|
97 |
Â
$this->create_link();
|
98 |
+
|
99 |
Â
// If $this->link is not empty then enqueue it.
|
100 |
+
if ( '' !== $this->link ) {
|
101 |
Â
wp_enqueue_style( 'kirki_google_fonts', $this->link, array(), null );
|
102 |
Â
}
|
103 |
Â
}
|
111 |
Â
}
|
112 |
Â
}
|
113 |
Â
|
114 |
+
/**
|
115 |
+
* Processes the arguments of a field
|
116 |
+
* determines if it's a typography field
|
117 |
+
* and if it is, then takes appropriate actions.
|
118 |
+
*
|
119 |
+
* @param array $args The field arguments.
|
120 |
+
*/
|
121 |
Â
private function generate_google_font( $args ) {
|
122 |
+
|
123 |
+
// Process typography fields.
|
124 |
+
if ( isset( $args['type'] ) && 'typography' === $args['type'] ) {
|
125 |
+
|
126 |
+
// Get the value.
|
127 |
Â
$value = Kirki_Values::get_sanitized_field_value( $args );
|
128 |
+
|
129 |
Â
// If we don't have a font-family then we can skip this.
|
130 |
Â
if ( ! isset( $value['font-family'] ) ) {
|
131 |
Â
return;
|
132 |
Â
}
|
133 |
+
|
134 |
Â
// Add support for older formats of the typography control.
|
135 |
Â
// We used to have font-weight instead of variant.
|
136 |
Â
if ( isset( $value['font-weight'] ) && ( ! isset( $value['variant'] ) || empty( $value['variant'] ) ) ) {
|
137 |
Â
$value['variant'] = $value['font-weight'];
|
138 |
Â
}
|
139 |
+
|
140 |
+
// Set a default value for variants.
|
141 |
Â
if ( ! isset( $value['variant'] ) ) {
|
142 |
Â
$value['variant'] = 'regular';
|
143 |
Â
}
|
144 |
Â
if ( isset( $value['subset'] ) ) {
|
145 |
+
|
146 |
+
// Add the subset directly to the array of subsets in the Kirki_GoogleFonts_Manager object.
|
147 |
Â
// Subsets must be applied to ALL fonts if possible.
|
148 |
Â
if ( ! is_array( $value['subset'] ) ) {
|
149 |
Â
$this->subsets[] = $value['subset'];
|
153 |
Â
}
|
154 |
Â
}
|
155 |
Â
}
|
156 |
+
|
157 |
+
// Add the requested google-font.
|
158 |
Â
if ( ! isset( $this->fonts[ $value['font-family'] ] ) ) {
|
159 |
Â
$this->fonts[ $value['font-family'] ] = array();
|
160 |
Â
}
|
161 |
+
if ( ! in_array( $value['variant'], $this->fonts[ $value['font-family'] ], true ) ) {
|
162 |
Â
$this->fonts[ $value['font-family'] ][] = $value['variant'];
|
163 |
Â
}
|
164 |
+
} else {
|
165 |
Â
|
166 |
+
// Process non-typography fields.
|
Â
|
|
Â
|
|
Â
|
|
167 |
Â
if ( isset( $args['output'] ) && is_array( $args['output'] ) ) {
|
168 |
Â
foreach ( $args['output'] as $output ) {
|
169 |
+
|
170 |
Â
// If we don't have a typography-related output argument we can skip this.
|
171 |
+
if ( ! isset( $output['property'] ) || ! in_array( $output['property'], array( 'font-family', 'font-weight', 'font-subset', 'subset' ), true ) ) {
|
172 |
Â
continue;
|
173 |
Â
}
|
174 |
+
|
175 |
+
// Get the value.
|
176 |
Â
$value = Kirki_Values::get_sanitized_field_value( $args );
|
177 |
Â
|
178 |
+
if ( 'font-family' === $output['property'] ) {
|
Â
|
|
179 |
Â
if ( ! array_key_exists( $value, $this->fonts ) ) {
|
180 |
Â
$this->fonts[ $value ] = array();
|
181 |
Â
}
|
182 |
+
} elseif ( 'font-weight' === $output['property'] ) {
|
Â
|
|
Â
|
|
183 |
Â
foreach ( $this->fonts as $font => $variants ) {
|
184 |
+
if ( ! in_array( $value, $variants, true ) ) {
|
185 |
Â
$this->fonts[ $font ][] = $value;
|
186 |
Â
}
|
187 |
Â
}
|
188 |
+
} elseif ( 'font-subset' === $output['property'] || 'subset' === $output['property'] ) {
|
Â
|
|
Â
|
|
189 |
Â
if ( ! is_array( $value ) ) {
|
190 |
+
if ( ! in_array( $value, $this->subsets, true ) ) {
|
191 |
Â
$this->subsets[] = $value;
|
192 |
Â
}
|
193 |
Â
} else {
|
194 |
Â
foreach ( $value as $subset ) {
|
195 |
+
if ( ! in_array( $subset, $this->subsets, true ) ) {
|
196 |
Â
$this->subsets[] = $subset;
|
197 |
Â
}
|
198 |
Â
}
|
201 |
Â
}
|
202 |
Â
}
|
203 |
Â
}
|
Â
|
|
204 |
Â
}
|
205 |
Â
|
206 |
+
/**
|
207 |
+
* Determines the vbalidity of the selected font as well as its properties.
|
208 |
+
* This is vital to make sure that the google-font script that we'll generate later
|
209 |
+
* does not contain any invalid options.
|
210 |
+
*/
|
211 |
Â
private function process_fonts() {
|
212 |
+
|
213 |
+
// Early exit if font-family is empty.
|
214 |
Â
if ( empty( $this->fonts ) ) {
|
215 |
Â
return;
|
216 |
Â
}
|
217 |
+
|
218 |
+
// Get an array of all available google fonts.
|
219 |
Â
$google_fonts = Kirki_Fonts::get_google_fonts();
|
220 |
Â
|
221 |
Â
$valid_subsets = array();
|
222 |
Â
foreach ( $this->fonts as $font => $variants ) {
|
223 |
+
|
224 |
Â
// Determine if this is indeed a google font or not.
|
225 |
Â
// If it's not, then just remove it from the array.
|
226 |
Â
if ( ! array_key_exists( $font, $google_fonts ) ) {
|
227 |
Â
unset( $this->fonts[ $font ] );
|
228 |
Â
continue;
|
229 |
Â
}
|
230 |
+
|
231 |
+
// Get all valid font variants for this font.
|
232 |
Â
$font_variants = array();
|
233 |
Â
if ( isset( $google_fonts[ $font ]['variants'] ) ) {
|
234 |
Â
$font_variants = $google_fonts[ $font ]['variants'];
|
235 |
Â
}
|
236 |
Â
foreach ( $variants as $variant ) {
|
237 |
+
|
238 |
Â
// If this is not a valid variant for this font-family
|
239 |
Â
// then unset it and move on to the next one.
|
240 |
+
if ( ! in_array( $variant, $font_variants, true ) ) {
|
241 |
Â
$variant_key = array_search( $variant, $this->fonts[ $font ] );
|
242 |
Â
unset( $this->fonts[ $font ][ $variant_key ] );
|
243 |
Â
continue;
|
244 |
Â
}
|
245 |
Â
}
|
246 |
+
|
247 |
Â
// Check if the selected subsets exist, even in one of the selected fonts.
|
248 |
Â
// If they don't, then they have to be removed otherwise the link will fail.
|
249 |
Â
if ( isset( $google_fonts[ $font ]['subsets'] ) ) {
|
250 |
Â
foreach ( $this->subsets as $subset ) {
|
251 |
+
if ( in_array( $subset, $google_fonts[ $font ]['subsets'], true ) ) {
|
252 |
Â
$valid_subsets[] = $subset;
|
253 |
Â
}
|
254 |
Â
}
|
257 |
Â
$this->subsets = $valid_subsets;
|
258 |
Â
}
|
259 |
Â
|
260 |
+
/**
|
261 |
+
* Creates the google-fonts link.
|
262 |
+
*/
|
263 |
Â
private function create_link() {
|
264 |
+
|
265 |
Â
// If we don't have any fonts then we can exit.
|
266 |
Â
if ( empty( $this->fonts ) ) {
|
267 |
Â
return;
|
268 |
Â
}
|
269 |
+
|
270 |
+
// Get font-family + subsets.
|
271 |
Â
$link_fonts = array();
|
272 |
Â
foreach ( $this->fonts as $font => $variants ) {
|
273 |
Â
$variants = implode( ',', $variants );
|
278 |
Â
}
|
279 |
Â
$link_fonts[] = $link_font;
|
280 |
Â
}
|
Â
|
|
Â
|
|
281 |
Â
|
282 |
Â
if ( ! empty( $this->subsets ) ) {
|
283 |
Â
$this->subsets = array_unique( $this->subsets );
|
Â
|
|
284 |
Â
}
|
285 |
Â
|
286 |
+
$this->link = add_query_arg( array(
|
287 |
+
'family' => str_replace( '%2B', '+', urlencode( implode( '|', $link_fonts ) ) ),
|
288 |
+
'subset' => urlencode( implode( ',', $this->subsets ) ),
|
289 |
+
), 'https://fonts.googleapis.com/css' );
|
290 |
Â
|
291 |
+
}
|
292 |
Â
}
|
Â
|
|
293 |
Â
}
|
includes/class-kirki-fonts.php
CHANGED
@@ -1,15 +1,54 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
final class Kirki_Fonts {
|
6 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
7 |
Â
public static $mode = 'link';
|
8 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
9 |
Â
private static $instance = null;
|
10 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
11 |
Â
public static $google_fonts = null;
|
12 |
Â
|
Â
|
|
Â
|
|
Â
|
|
13 |
Â
private function __construct() {}
|
14 |
Â
|
15 |
Â
/**
|
@@ -44,8 +83,8 @@ if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
|
44 |
Â
*/
|
45 |
Â
public static function get_standard_fonts() {
|
46 |
Â
$i18n = Kirki_l10n::get_strings();
|
47 |
-
|
48 |
-
'serif'
|
49 |
Â
'label' => $i18n['serif'],
|
50 |
Â
'stack' => 'Georgia,Times,"Times New Roman",serif',
|
51 |
Â
),
|
@@ -57,7 +96,8 @@ if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
|
57 |
Â
'label' => $i18n['monospace'],
|
58 |
Â
'stack' => 'Monaco,"Lucida Sans Typewriter","Lucida Typewriter","Courier New",Courier,monospace',
|
59 |
Â
),
|
60 |
-
)
|
Â
|
|
61 |
Â
}
|
62 |
Â
|
63 |
Â
/**
|
@@ -108,11 +148,21 @@ if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
|
108 |
Â
}
|
109 |
Â
|
110 |
Â
/**
|
111 |
-
*
|
112 |
Â
* This is not functional, but it will prevent PHP Fatal errors.
|
Â
|
|
Â
|
|
Â
|
|
113 |
Â
*/
|
114 |
Â
public static function get_google_font_uri() {}
|
115 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
116 |
Â
public static function get_google_font_subsets() {
|
117 |
Â
$i18n = Kirki_l10n::get_strings();
|
118 |
Â
return array(
|
@@ -136,6 +186,13 @@ if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
|
136 |
Â
);
|
137 |
Â
}
|
138 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
139 |
Â
public static function get_all_variants() {
|
140 |
Â
$i18n = Kirki_l10n::get_strings();
|
141 |
Â
return array(
|
@@ -161,12 +218,24 @@ if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
|
161 |
Â
}
|
162 |
Â
|
163 |
Â
/**
|
164 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
165 |
Â
*/
|
166 |
Â
public static function is_google_font( $fontname ) {
|
167 |
Â
return ( array_key_exists( $fontname, self::$google_fonts ) );
|
168 |
Â
}
|
169 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
170 |
Â
public static function get_font_choices() {
|
171 |
Â
$fonts = self::get_all_fonts();
|
172 |
Â
$fonts_array = array();
|
@@ -175,7 +244,5 @@ if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
|
175 |
Â
}
|
176 |
Â
return $fonts_array;
|
177 |
Â
}
|
178 |
-
|
179 |
Â
}
|
180 |
-
|
181 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* A simple object containing properties for fonts.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Fonts' ) ) {
|
14 |
Â
|
15 |
+
/**
|
16 |
+
* The Kirki_Fonts object.
|
17 |
+
*/
|
18 |
Â
final class Kirki_Fonts {
|
19 |
Â
|
20 |
+
/**
|
21 |
+
* The mode we'll be using to add google fonts.
|
22 |
+
* This is a todo item, not yet functional.
|
23 |
+
*
|
24 |
+
* @static
|
25 |
+
* @todo
|
26 |
+
* @access public
|
27 |
+
* @var string
|
28 |
+
*/
|
29 |
Â
public static $mode = 'link';
|
30 |
Â
|
31 |
+
/**
|
32 |
+
* Holds a single instance of this object.
|
33 |
+
*
|
34 |
+
* @static
|
35 |
+
* @access private
|
36 |
+
* @var null|object
|
37 |
+
*/
|
38 |
Â
private static $instance = null;
|
39 |
Â
|
40 |
+
/**
|
41 |
+
* An array of our google fonts.
|
42 |
+
*
|
43 |
+
* @static
|
44 |
+
* @access public
|
45 |
+
* @var null|object
|
46 |
+
*/
|
47 |
Â
public static $google_fonts = null;
|
48 |
Â
|
49 |
+
/**
|
50 |
+
* The class constructor.
|
51 |
+
*/
|
52 |
Â
private function __construct() {}
|
53 |
Â
|
54 |
Â
/**
|
83 |
Â
*/
|
84 |
Â
public static function get_standard_fonts() {
|
85 |
Â
$i18n = Kirki_l10n::get_strings();
|
86 |
+
$standard_fonts = array(
|
87 |
+
'serif' => array(
|
88 |
Â
'label' => $i18n['serif'],
|
89 |
Â
'stack' => 'Georgia,Times,"Times New Roman",serif',
|
90 |
Â
),
|
96 |
Â
'label' => $i18n['monospace'],
|
97 |
Â
'stack' => 'Monaco,"Lucida Sans Typewriter","Lucida Typewriter","Courier New",Courier,monospace',
|
98 |
Â
),
|
99 |
+
);
|
100 |
+
return apply_filters( 'kirki/fonts/standard_fonts', $standard_fonts );
|
101 |
Â
}
|
102 |
Â
|
103 |
Â
/**
|
148 |
Â
}
|
149 |
Â
|
150 |
Â
/**
|
151 |
+
* Dummy function to avoid issues with backwards-compatibility.
|
152 |
Â
* This is not functional, but it will prevent PHP Fatal errors.
|
153 |
+
*
|
154 |
+
* @static
|
155 |
+
* @access public
|
156 |
Â
*/
|
157 |
Â
public static function get_google_font_uri() {}
|
158 |
Â
|
159 |
+
/**
|
160 |
+
* Returns an array of all available subsets.
|
161 |
+
*
|
162 |
+
* @static
|
163 |
+
* @access public
|
164 |
+
* @return array
|
165 |
+
*/
|
166 |
Â
public static function get_google_font_subsets() {
|
167 |
Â
$i18n = Kirki_l10n::get_strings();
|
168 |
Â
return array(
|
186 |
Â
);
|
187 |
Â
}
|
188 |
Â
|
189 |
+
/**
|
190 |
+
* Returns an array of all available variants.
|
191 |
+
*
|
192 |
+
* @static
|
193 |
+
* @access public
|
194 |
+
* @return array
|
195 |
+
*/
|
196 |
Â
public static function get_all_variants() {
|
197 |
Â
$i18n = Kirki_l10n::get_strings();
|
198 |
Â
return array(
|
218 |
Â
}
|
219 |
Â
|
220 |
Â
/**
|
221 |
+
* Determine if a font-name is a valid google font or not.
|
222 |
+
*
|
223 |
+
* @static
|
224 |
+
* @access public
|
225 |
+
* @param string $fontname The name of the font we want to check.
|
226 |
+
* @return bool
|
227 |
Â
*/
|
228 |
Â
public static function is_google_font( $fontname ) {
|
229 |
Â
return ( array_key_exists( $fontname, self::$google_fonts ) );
|
230 |
Â
}
|
231 |
Â
|
232 |
+
/**
|
233 |
+
* Gets available options for a font.
|
234 |
+
*
|
235 |
+
* @static
|
236 |
+
* @access public
|
237 |
+
* @return array
|
238 |
+
*/
|
239 |
Â
public static function get_font_choices() {
|
240 |
Â
$fonts = self::get_all_fonts();
|
241 |
Â
$fonts_array = array();
|
244 |
Â
}
|
245 |
Â
return $fonts_array;
|
246 |
Â
}
|
Â
|
|
247 |
Â
}
|
Â
|
|
248 |
Â
}
|
includes/class-kirki-helper.php
CHANGED
@@ -6,31 +6,37 @@
|
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
-
* @license http://opensource.org/licenses/
|
10 |
Â
* @since 1.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
-
// Exit if accessed directly
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Helper' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Helper {
|
20 |
Â
|
21 |
Â
/**
|
22 |
Â
* Recursive replace in arrays.
|
23 |
Â
*
|
24 |
-
* @
|
25 |
-
* @
|
26 |
-
*
|
Â
|
|
27 |
Â
* @return mixed
|
28 |
Â
*/
|
29 |
Â
public static function array_replace_recursive( $array, $array1 ) {
|
30 |
Â
if ( function_exists( 'array_replace_recursive' ) ) {
|
31 |
Â
return array_replace_recursive( $array, $array1 );
|
32 |
Â
}
|
33 |
-
|
Â
|
|
34 |
Â
$args = func_get_args();
|
35 |
Â
$array = $args[0];
|
36 |
Â
if ( ! is_array( $array ) ) {
|
@@ -46,16 +52,22 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
46 |
Â
}
|
47 |
Â
|
48 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
49 |
Â
* @return array
|
50 |
Â
*/
|
51 |
Â
public static function recurse( $array, $array1 ) {
|
52 |
Â
foreach ( $array1 as $key => $value ) {
|
53 |
-
//
|
54 |
Â
if ( ! isset( $array[ $key ] ) || ( isset( $array[ $key ] ) && ! is_array( $array[ $key ] ) ) ) {
|
55 |
Â
$array[ $key ] = array();
|
56 |
Â
}
|
57 |
Â
|
58 |
-
//
|
59 |
Â
if ( is_array( $value ) ) {
|
60 |
Â
$value = self::recurse( $array[ $key ], $value );
|
61 |
Â
}
|
@@ -78,8 +90,8 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
78 |
Â
/**
|
79 |
Â
* Returns the attachment object
|
80 |
Â
*
|
81 |
-
* @
|
82 |
-
* @return
|
83 |
Â
*/
|
84 |
Â
public static function get_image_id( $url ) {
|
85 |
Â
return url_to_postid( $url );
|
@@ -88,8 +100,8 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
88 |
Â
/**
|
89 |
Â
* Returns an array of the attachment's properties.
|
90 |
Â
*
|
91 |
-
* @
|
92 |
-
* @return
|
93 |
Â
*/
|
94 |
Â
public static function get_image_from_url( $url ) {
|
95 |
Â
|
@@ -106,14 +118,19 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
106 |
Â
}
|
107 |
Â
|
108 |
Â
/**
|
109 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
110 |
Â
*/
|
111 |
Â
public static function get_posts( $args ) {
|
112 |
Â
|
113 |
-
// Get the posts
|
114 |
Â
$posts = get_posts( $args );
|
115 |
Â
|
116 |
-
//
|
117 |
Â
$items = array();
|
118 |
Â
foreach ( $posts as $post ) {
|
119 |
Â
$items[ $post->ID ] = $post->post_title;
|
@@ -123,13 +140,21 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
123 |
Â
|
124 |
Â
}
|
125 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
126 |
Â
public static function get_taxonomies() {
|
127 |
Â
|
128 |
Â
$items = array();
|
129 |
Â
|
130 |
-
// Get the taxonomies
|
131 |
Â
$taxonomies = get_taxonomies( array( 'public' => true ) );
|
132 |
-
|
Â
|
|
133 |
Â
foreach ( $taxonomies as $taxonomy ) {
|
134 |
Â
$id = $taxonomy;
|
135 |
Â
$taxonomy = get_taxonomy( $taxonomy );
|
@@ -140,13 +165,21 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
140 |
Â
|
141 |
Â
}
|
142 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
143 |
Â
public static function get_post_types() {
|
144 |
Â
|
145 |
Â
$items = array();
|
146 |
Â
|
147 |
-
// Get the post types
|
148 |
Â
$post_types = get_post_types( array( 'public' => true ), 'objects' );
|
149 |
-
|
Â
|
|
150 |
Â
foreach ( $post_types as $post_type ) {
|
151 |
Â
$items[ $post_type->name ] = $post_type->labels->name;
|
152 |
Â
}
|
@@ -155,13 +188,22 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
155 |
Â
|
156 |
Â
}
|
157 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
158 |
Â
public static function get_terms( $taxonomies ) {
|
159 |
Â
|
160 |
Â
$items = array();
|
161 |
Â
|
162 |
-
// Get the post types
|
163 |
Â
$terms = get_terms( $taxonomies );
|
164 |
-
|
Â
|
|
165 |
Â
foreach ( $terms as $term ) {
|
166 |
Â
$items[ $term->term_id ] = $term->name;
|
167 |
Â
}
|
@@ -170,68 +212,333 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
170 |
Â
|
171 |
Â
}
|
172 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
173 |
Â
public static function get_material_design_colors( $context = false ) {
|
174 |
Â
|
175 |
Â
$colors = array(
|
176 |
Â
'primary' => array(
|
177 |
-
'#FFFFFF',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
178 |
Â
),
|
179 |
Â
'red' => array(
|
180 |
-
'#FFEBEE',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
181 |
Â
),
|
182 |
Â
'pink' => array(
|
183 |
-
'#FCE4EC',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
184 |
Â
),
|
185 |
Â
'purple' => array(
|
186 |
-
'#F3E5F5',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
187 |
Â
),
|
188 |
Â
'deep-purple' => array(
|
189 |
-
'#EDE7F6',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
190 |
Â
),
|
191 |
Â
'indigo' => array(
|
192 |
-
'#E8EAF6',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
193 |
Â
),
|
194 |
Â
'blue' => array(
|
195 |
-
'#E3F2FD',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
196 |
Â
),
|
197 |
Â
'light_blue' => array(
|
198 |
-
'#E1F5FE',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
199 |
Â
),
|
200 |
Â
'cyan' => array(
|
201 |
-
'#E0F7FA',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
202 |
Â
),
|
203 |
Â
'teal' => array(
|
204 |
-
'#E0F2F1',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
205 |
Â
),
|
206 |
Â
'green' => array(
|
207 |
-
'#E8F5E9',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
208 |
Â
),
|
209 |
Â
'light-green' => array(
|
210 |
-
'#F1F8E9',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
211 |
Â
),
|
212 |
Â
'lime' => array(
|
213 |
-
'#F9FBE7',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
214 |
Â
),
|
215 |
Â
'yellow' => array(
|
216 |
-
'#FFFDE7',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
217 |
Â
),
|
218 |
Â
'amber' => array(
|
219 |
-
'#FFF8E1',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
220 |
Â
),
|
221 |
Â
'orange' => array(
|
222 |
-
'#FFF3E0',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
223 |
Â
),
|
224 |
Â
'deep-orange' => array(
|
225 |
-
'#FBE9A7',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
226 |
Â
),
|
227 |
Â
'brown' => array(
|
228 |
-
'#EFEBE9',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
229 |
Â
),
|
230 |
Â
'grey' => array(
|
231 |
-
'#FAFAFA',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
232 |
Â
),
|
233 |
Â
'blue-grey' => array(
|
234 |
-
'#ECEFF1',
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
235 |
Â
),
|
236 |
Â
);
|
237 |
Â
|
@@ -251,16 +558,16 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
251 |
Â
case 'A200':
|
252 |
Â
case 'A400':
|
253 |
Â
case 'A700':
|
254 |
-
if ( 'A100'
|
255 |
Â
$key = 10;
|
256 |
Â
unset( $colors['grey'] );
|
257 |
-
} elseif ( 'A200'
|
258 |
Â
$key = 11;
|
259 |
Â
unset( $colors['grey'] );
|
260 |
-
} elseif ( 'A400'
|
261 |
Â
$key = 12;
|
262 |
Â
unset( $colors['grey'] );
|
263 |
-
} elseif ( 'A700'
|
264 |
Â
$key = 13;
|
265 |
Â
unset( $colors['grey'] );
|
266 |
Â
} else {
|
@@ -293,6 +600,13 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
293 |
Â
}
|
294 |
Â
}
|
295 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
296 |
Â
public static function get_dashicons() {
|
297 |
Â
|
298 |
Â
$admin_menu = array(
|
@@ -589,7 +903,5 @@ if ( ! class_exists( 'Kirki_Helper' ) ) {
|
|
589 |
Â
);
|
590 |
Â
|
591 |
Â
}
|
592 |
-
|
593 |
Â
}
|
594 |
-
|
595 |
Â
}
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
Â
* @since 1.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
+
// Exit if accessed directly.
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Helper' ) ) {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* A simple object containing static methods.
|
22 |
+
*/
|
23 |
Â
class Kirki_Helper {
|
24 |
Â
|
25 |
Â
/**
|
26 |
Â
* Recursive replace in arrays.
|
27 |
Â
*
|
28 |
+
* @static
|
29 |
+
* @access public
|
30 |
+
* @param array $array The first array.
|
31 |
+
* @param array $array1 The second array.
|
32 |
Â
* @return mixed
|
33 |
Â
*/
|
34 |
Â
public static function array_replace_recursive( $array, $array1 ) {
|
35 |
Â
if ( function_exists( 'array_replace_recursive' ) ) {
|
36 |
Â
return array_replace_recursive( $array, $array1 );
|
37 |
Â
}
|
38 |
+
|
39 |
+
// Handle the arguments, merge one by one.
|
40 |
Â
$args = func_get_args();
|
41 |
Â
$array = $args[0];
|
42 |
Â
if ( ! is_array( $array ) ) {
|
52 |
Â
}
|
53 |
Â
|
54 |
Â
/**
|
55 |
+
* Helper method to be used from the array_replace_recursive method.
|
56 |
+
*
|
57 |
+
* @static
|
58 |
+
* @access public
|
59 |
+
* @param array $array The first array.
|
60 |
+
* @param array $array1 The second array.
|
61 |
Â
* @return array
|
62 |
Â
*/
|
63 |
Â
public static function recurse( $array, $array1 ) {
|
64 |
Â
foreach ( $array1 as $key => $value ) {
|
65 |
+
// Create new key in $array, if it is empty or not an array.
|
66 |
Â
if ( ! isset( $array[ $key ] ) || ( isset( $array[ $key ] ) && ! is_array( $array[ $key ] ) ) ) {
|
67 |
Â
$array[ $key ] = array();
|
68 |
Â
}
|
69 |
Â
|
70 |
+
// Overwrite the value in the base array.
|
71 |
Â
if ( is_array( $value ) ) {
|
72 |
Â
$value = self::recurse( $array[ $key ], $value );
|
73 |
Â
}
|
90 |
Â
/**
|
91 |
Â
* Returns the attachment object
|
92 |
Â
*
|
93 |
+
* @param string $url URL to the image.
|
94 |
+
* @return int|string Numeric ID of the attachement.
|
95 |
Â
*/
|
96 |
Â
public static function get_image_id( $url ) {
|
97 |
Â
return url_to_postid( $url );
|
100 |
Â
/**
|
101 |
Â
* Returns an array of the attachment's properties.
|
102 |
Â
*
|
103 |
+
* @param string $url URL to the image.
|
104 |
+
* @return array
|
105 |
Â
*/
|
106 |
Â
public static function get_image_from_url( $url ) {
|
107 |
Â
|
118 |
Â
}
|
119 |
Â
|
120 |
Â
/**
|
121 |
+
* Get an array of posts.
|
122 |
+
*
|
123 |
+
* @static
|
124 |
+
* @access public
|
125 |
+
* @param array $args Define arguments for the get_posts function.
|
126 |
+
* @return array
|
127 |
Â
*/
|
128 |
Â
public static function get_posts( $args ) {
|
129 |
Â
|
130 |
+
// Get the posts.
|
131 |
Â
$posts = get_posts( $args );
|
132 |
Â
|
133 |
+
// Properly format the array.
|
134 |
Â
$items = array();
|
135 |
Â
foreach ( $posts as $post ) {
|
136 |
Â
$items[ $post->ID ] = $post->post_title;
|
140 |
Â
|
141 |
Â
}
|
142 |
Â
|
143 |
+
/**
|
144 |
+
* Get an array of publicly-querable taxonomies.
|
145 |
+
*
|
146 |
+
* @static
|
147 |
+
* @access public
|
148 |
+
* @return array
|
149 |
+
*/
|
150 |
Â
public static function get_taxonomies() {
|
151 |
Â
|
152 |
Â
$items = array();
|
153 |
Â
|
154 |
+
// Get the taxonomies.
|
155 |
Â
$taxonomies = get_taxonomies( array( 'public' => true ) );
|
156 |
+
|
157 |
+
// Build the array.
|
158 |
Â
foreach ( $taxonomies as $taxonomy ) {
|
159 |
Â
$id = $taxonomy;
|
160 |
Â
$taxonomy = get_taxonomy( $taxonomy );
|
165 |
Â
|
166 |
Â
}
|
167 |
Â
|
168 |
+
/**
|
169 |
+
* Get an array of publicly-querable post-types.
|
170 |
+
*
|
171 |
+
* @static
|
172 |
+
* @access public
|
173 |
+
* @return array
|
174 |
+
*/
|
175 |
Â
public static function get_post_types() {
|
176 |
Â
|
177 |
Â
$items = array();
|
178 |
Â
|
179 |
+
// Get the post types.
|
180 |
Â
$post_types = get_post_types( array( 'public' => true ), 'objects' );
|
181 |
+
|
182 |
+
// Build the array.
|
183 |
Â
foreach ( $post_types as $post_type ) {
|
184 |
Â
$items[ $post_type->name ] = $post_type->labels->name;
|
185 |
Â
}
|
188 |
Â
|
189 |
Â
}
|
190 |
Â
|
191 |
+
/**
|
192 |
+
* Get an array of terms from a taxonomy
|
193 |
+
*
|
194 |
+
* @static
|
195 |
+
* @access public
|
196 |
+
* @param string|array $taxonomies See https://developer.wordpress.org/reference/functions/get_terms/ for details.
|
197 |
+
* @return array
|
198 |
+
*/
|
199 |
Â
public static function get_terms( $taxonomies ) {
|
200 |
Â
|
201 |
Â
$items = array();
|
202 |
Â
|
203 |
+
// Get the post types.
|
204 |
Â
$terms = get_terms( $taxonomies );
|
205 |
+
|
206 |
+
// Build the array.
|
207 |
Â
foreach ( $terms as $term ) {
|
208 |
Â
$items[ $term->term_id ] = $term->name;
|
209 |
Â
}
|
212 |
Â
|
213 |
Â
}
|
214 |
Â
|
215 |
+
/**
|
216 |
+
* Gets an array of material-design colors.
|
217 |
+
*
|
218 |
+
* @static
|
219 |
+
* @access public
|
220 |
+
* @param false|string $context Allows us to get subsets of the palette.
|
221 |
+
* @return array
|
222 |
+
*/
|
223 |
Â
public static function get_material_design_colors( $context = false ) {
|
224 |
Â
|
225 |
Â
$colors = array(
|
226 |
Â
'primary' => array(
|
227 |
+
'#FFFFFF',
|
228 |
+
'#000000',
|
229 |
+
'#F44336',
|
230 |
+
'#E91E63',
|
231 |
+
'#9C27B0',
|
232 |
+
'#673AB7',
|
233 |
+
'#3F51B5',
|
234 |
+
'#2196F3',
|
235 |
+
'#03A9F4',
|
236 |
+
'#00BCD4',
|
237 |
+
'#009688',
|
238 |
+
'#4CAF50',
|
239 |
+
'#8BC34A',
|
240 |
+
'#CDDC39',
|
241 |
+
'#FFEB3B',
|
242 |
+
'#FFC107',
|
243 |
+
'#FF9800',
|
244 |
+
'#FF5722',
|
245 |
+
'#795548',
|
246 |
+
'#9E9E9E',
|
247 |
+
'#607D8B',
|
248 |
Â
),
|
249 |
Â
'red' => array(
|
250 |
+
'#FFEBEE',
|
251 |
+
'#FFCDD2',
|
252 |
+
'#EF9A9A',
|
253 |
+
'#E57373',
|
254 |
+
'#EF5350',
|
255 |
+
'#F44336',
|
256 |
+
'#E53935',
|
257 |
+
'#D32F2F',
|
258 |
+
'#C62828',
|
259 |
+
'#B71C1C',
|
260 |
+
'#FF8A80',
|
261 |
+
'#FF5252',
|
262 |
+
'#FF1744',
|
263 |
+
'#D50000',
|
264 |
Â
),
|
265 |
Â
'pink' => array(
|
266 |
+
'#FCE4EC',
|
267 |
+
'#F8BBD0',
|
268 |
+
'#F48FB1',
|
269 |
+
'#F06292',
|
270 |
+
'#EC407A',
|
271 |
+
'#E91E63',
|
272 |
+
'#D81B60',
|
273 |
+
'#C2185B',
|
274 |
+
'#AD1457',
|
275 |
+
'#880E4F',
|
276 |
+
'#FF80AB',
|
277 |
+
'#FF4081',
|
278 |
+
'#F50057',
|
279 |
+
'#C51162',
|
280 |
Â
),
|
281 |
Â
'purple' => array(
|
282 |
+
'#F3E5F5',
|
283 |
+
'#E1BEE7',
|
284 |
+
'#CE93D8',
|
285 |
+
'#BA68C8',
|
286 |
+
'#AB47BC',
|
287 |
+
'#9C27B0',
|
288 |
+
'#8E24AA',
|
289 |
+
'#7B1FA2',
|
290 |
+
'#6A1B9A',
|
291 |
+
'#4A148C',
|
292 |
+
'#EA80FC',
|
293 |
+
'#E040FB',
|
294 |
+
'#D500F9',
|
295 |
+
'#AA00FF',
|
296 |
Â
),
|
297 |
Â
'deep-purple' => array(
|
298 |
+
'#EDE7F6',
|
299 |
+
'#D1C4E9',
|
300 |
+
'#B39DDB',
|
301 |
+
'#9575CD',
|
302 |
+
'#7E57C2',
|
303 |
+
'#673AB7',
|
304 |
+
'#5E35B1',
|
305 |
+
'#512DA8',
|
306 |
+
'#4527A0',
|
307 |
+
'#311B92',
|
308 |
+
'#B388FF',
|
309 |
+
'#7C4DFF',
|
310 |
+
'#651FFF',
|
311 |
+
'#6200EA',
|
312 |
Â
),
|
313 |
Â
'indigo' => array(
|
314 |
+
'#E8EAF6',
|
315 |
+
'#C5CAE9',
|
316 |
+
'#9FA8DA',
|
317 |
+
'#7986CB',
|
318 |
+
'#5C6BC0',
|
319 |
+
'#3F51B5',
|
320 |
+
'#3949AB',
|
321 |
+
'#303F9F',
|
322 |
+
'#283593',
|
323 |
+
'#1A237E',
|
324 |
+
'#8C9EFF',
|
325 |
+
'#536DFE',
|
326 |
+
'#3D5AFE',
|
327 |
+
'#304FFE',
|
328 |
Â
),
|
329 |
Â
'blue' => array(
|
330 |
+
'#E3F2FD',
|
331 |
+
'#BBDEFB',
|
332 |
+
'#90CAF9',
|
333 |
+
'#64B5F6',
|
334 |
+
'#42A5F5',
|
335 |
+
'#2196F3',
|
336 |
+
'#1E88E5',
|
337 |
+
'#1976D2',
|
338 |
+
'#1565C0',
|
339 |
+
'#0D47A1',
|
340 |
+
'#82B1FF',
|
341 |
+
'#448AFF',
|
342 |
+
'#2979FF',
|
343 |
+
'#2962FF',
|
344 |
Â
),
|
345 |
Â
'light_blue' => array(
|
346 |
+
'#E1F5FE',
|
347 |
+
'#B3E5FC',
|
348 |
+
'#81D4fA',
|
349 |
+
'#4fC3F7',
|
350 |
+
'#29B6FC',
|
351 |
+
'#03A9F4',
|
352 |
+
'#039BE5',
|
353 |
+
'#0288D1',
|
354 |
+
'#0277BD',
|
355 |
+
'#01579B',
|
356 |
+
'#80D8FF',
|
357 |
+
'#40C4FF',
|
358 |
+
'#00B0FF',
|
359 |
+
'#0091EA',
|
360 |
Â
),
|
361 |
Â
'cyan' => array(
|
362 |
+
'#E0F7FA',
|
363 |
+
'#B2EBF2',
|
364 |
+
'#80DEEA',
|
365 |
+
'#4DD0E1',
|
366 |
+
'#26C6DA',
|
367 |
+
'#00BCD4',
|
368 |
+
'#00ACC1',
|
369 |
+
'#0097A7',
|
370 |
+
'#00838F',
|
371 |
+
'#006064',
|
372 |
+
'#84FFFF',
|
373 |
+
'#18FFFF',
|
374 |
+
'#00E5FF',
|
375 |
+
'#00B8D4',
|
376 |
Â
),
|
377 |
Â
'teal' => array(
|
378 |
+
'#E0F2F1',
|
379 |
+
'#B2DFDB',
|
380 |
+
'#80CBC4',
|
381 |
+
'#4DB6AC',
|
382 |
+
'#26A69A',
|
383 |
+
'#009688',
|
384 |
+
'#00897B',
|
385 |
+
'#00796B',
|
386 |
+
'#00695C',
|
387 |
+
'#004D40',
|
388 |
+
'#A7FFEB',
|
389 |
+
'#64FFDA',
|
390 |
+
'#1DE9B6',
|
391 |
+
'#00BFA5',
|
392 |
Â
),
|
393 |
Â
'green' => array(
|
394 |
+
'#E8F5E9',
|
395 |
+
'#C8E6C9',
|
396 |
+
'#A5D6A7',
|
397 |
+
'#81C784',
|
398 |
+
'#66BB6A',
|
399 |
+
'#4CAF50',
|
400 |
+
'#43A047',
|
401 |
+
'#388E3C',
|
402 |
+
'#2E7D32',
|
403 |
+
'#1B5E20',
|
404 |
+
'#B9F6CA',
|
405 |
+
'#69F0AE',
|
406 |
+
'#00E676',
|
407 |
+
'#00C853',
|
408 |
Â
),
|
409 |
Â
'light-green' => array(
|
410 |
+
'#F1F8E9',
|
411 |
+
'#DCEDC8',
|
412 |
+
'#C5E1A5',
|
413 |
+
'#AED581',
|
414 |
+
'#9CCC65',
|
415 |
+
'#8BC34A',
|
416 |
+
'#7CB342',
|
417 |
+
'#689F38',
|
418 |
+
'#558B2F',
|
419 |
+
'#33691E',
|
420 |
+
'#CCFF90',
|
421 |
+
'#B2FF59',
|
422 |
+
'#76FF03',
|
423 |
+
'#64DD17',
|
424 |
Â
),
|
425 |
Â
'lime' => array(
|
426 |
+
'#F9FBE7',
|
427 |
+
'#F0F4C3',
|
428 |
+
'#E6EE9C',
|
429 |
+
'#DCE775',
|
430 |
+
'#D4E157',
|
431 |
+
'#CDDC39',
|
432 |
+
'#C0CA33',
|
433 |
+
'#A4B42B',
|
434 |
+
'#9E9D24',
|
435 |
+
'#827717',
|
436 |
+
'#F4FF81',
|
437 |
+
'#EEFF41',
|
438 |
+
'#C6FF00',
|
439 |
+
'#AEEA00',
|
440 |
Â
),
|
441 |
Â
'yellow' => array(
|
442 |
+
'#FFFDE7',
|
443 |
+
'#FFF9C4',
|
444 |
+
'#FFF590',
|
445 |
+
'#FFF176',
|
446 |
+
'#FFEE58',
|
447 |
+
'#FFEB3B',
|
448 |
+
'#FDD835',
|
449 |
+
'#FBC02D',
|
450 |
+
'#F9A825',
|
451 |
+
'#F57F17',
|
452 |
+
'#FFFF82',
|
453 |
+
'#FFFF00',
|
454 |
+
'#FFEA00',
|
455 |
+
'#FFD600',
|
456 |
Â
),
|
457 |
Â
'amber' => array(
|
458 |
+
'#FFF8E1',
|
459 |
+
'#FFECB3',
|
460 |
+
'#FFE082',
|
461 |
+
'#FFD54F',
|
462 |
+
'#FFCA28',
|
463 |
+
'#FFC107',
|
464 |
+
'#FFB300',
|
465 |
+
'#FFA000',
|
466 |
+
'#FF8F00',
|
467 |
+
'#FF6F00',
|
468 |
+
'#FFE57F',
|
469 |
+
'#FFD740',
|
470 |
+
'#FFC400',
|
471 |
+
'#FFAB00',
|
472 |
Â
),
|
473 |
Â
'orange' => array(
|
474 |
+
'#FFF3E0',
|
475 |
+
'#FFE0B2',
|
476 |
+
'#FFCC80',
|
477 |
+
'#FFB74D',
|
478 |
+
'#FFA726',
|
479 |
+
'#FF9800',
|
480 |
+
'#FB8C00',
|
481 |
+
'#F57C00',
|
482 |
+
'#EF6C00',
|
483 |
+
'#E65100',
|
484 |
+
'#FFD180',
|
485 |
+
'#FFAB40',
|
486 |
+
'#FF9100',
|
487 |
+
'#FF6D00',
|
488 |
Â
),
|
489 |
Â
'deep-orange' => array(
|
490 |
+
'#FBE9A7',
|
491 |
+
'#FFCCBC',
|
492 |
+
'#FFAB91',
|
493 |
+
'#FF8A65',
|
494 |
+
'#FF7043',
|
495 |
+
'#FF5722',
|
496 |
+
'#F4511E',
|
497 |
+
'#E64A19',
|
498 |
+
'#D84315',
|
499 |
+
'#BF360C',
|
500 |
+
'#FF9E80',
|
501 |
+
'#FF6E40',
|
502 |
+
'#FF3D00',
|
503 |
+
'#DD2600',
|
504 |
Â
),
|
505 |
Â
'brown' => array(
|
506 |
+
'#EFEBE9',
|
507 |
+
'#D7CCC8',
|
508 |
+
'#BCAAA4',
|
509 |
+
'#A1887F',
|
510 |
+
'#8D6E63',
|
511 |
+
'#795548',
|
512 |
+
'#6D4C41',
|
513 |
+
'#5D4037',
|
514 |
+
'#4E342E',
|
515 |
+
'#3E2723',
|
516 |
Â
),
|
517 |
Â
'grey' => array(
|
518 |
+
'#FAFAFA',
|
519 |
+
'#F5F5F5',
|
520 |
+
'#EEEEEE',
|
521 |
+
'#E0E0E0',
|
522 |
+
'#BDBDBD',
|
523 |
+
'#9E9E9E',
|
524 |
+
'#757575',
|
525 |
+
'#616161',
|
526 |
+
'#424242',
|
527 |
+
'#212121',
|
528 |
+
'#000000',
|
529 |
+
'#ffffff',
|
530 |
Â
),
|
531 |
Â
'blue-grey' => array(
|
532 |
+
'#ECEFF1',
|
533 |
+
'#CFD8DC',
|
534 |
+
'#B0BBC5',
|
535 |
+
'#90A4AE',
|
536 |
+
'#78909C',
|
537 |
+
'#607D8B',
|
538 |
+
'#546E7A',
|
539 |
+
'#455A64',
|
540 |
+
'#37474F',
|
541 |
+
'#263238',
|
542 |
Â
),
|
543 |
Â
);
|
544 |
Â
|
558 |
Â
case 'A200':
|
559 |
Â
case 'A400':
|
560 |
Â
case 'A700':
|
561 |
+
if ( 'A100' === $context ) {
|
562 |
Â
$key = 10;
|
563 |
Â
unset( $colors['grey'] );
|
564 |
+
} elseif ( 'A200' === $context ) {
|
565 |
Â
$key = 11;
|
566 |
Â
unset( $colors['grey'] );
|
567 |
+
} elseif ( 'A400' === $context ) {
|
568 |
Â
$key = 12;
|
569 |
Â
unset( $colors['grey'] );
|
570 |
+
} elseif ( 'A700' === $context ) {
|
571 |
Â
$key = 13;
|
572 |
Â
unset( $colors['grey'] );
|
573 |
Â
} else {
|
600 |
Â
}
|
601 |
Â
}
|
602 |
Â
|
603 |
+
/**
|
604 |
+
* Get an array of all available dashicons.
|
605 |
+
*
|
606 |
+
* @static
|
607 |
+
* @access public
|
608 |
+
* @return array
|
609 |
+
*/
|
610 |
Â
public static function get_dashicons() {
|
611 |
Â
|
612 |
Â
$admin_menu = array(
|
903 |
Â
);
|
904 |
Â
|
905 |
Â
}
|
Â
|
|
906 |
Â
}
|
Â
|
|
907 |
Â
}
|
includes/class-kirki-init.php
CHANGED
@@ -11,6 +11,7 @@
|
|
11 |
Â
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Init' ) ) {
|
Â
|
|
14 |
Â
/**
|
15 |
Â
* Initialize Kirki
|
16 |
Â
*/
|
@@ -101,6 +102,7 @@ if ( ! class_exists( 'Kirki_Init' ) ) {
|
|
101 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Date_Control' );
|
102 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Dashicons_Control' );
|
103 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Dimension_Control' );
|
Â
|
|
104 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Number_Control' );
|
105 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Radio_Control' );
|
106 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Radio_Buttonset_Control' );
|
@@ -159,24 +161,19 @@ if ( ! class_exists( 'Kirki_Init' ) ) {
|
|
159 |
Â
if ( isset( $args['type'] ) && 'background' === $args['type'] ) {
|
160 |
Â
continue;
|
161 |
Â
}
|
162 |
-
|
163 |
-
|
164 |
-
*/
|
165 |
Â
new Kirki_Settings( $args );
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
* and any other tweaks that this field may require.
|
171 |
-
*/
|
172 |
Â
if ( $wp_customize ) {
|
173 |
-
|
174 |
-
|
175 |
-
*/
|
176 |
Â
new Kirki_Control( $args );
|
177 |
-
|
178 |
-
|
179 |
-
*/
|
180 |
Â
Kirki_Scripts_Tooltips::generate_script( $args );
|
181 |
Â
}
|
182 |
Â
}
|
11 |
Â
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Init' ) ) {
|
14 |
+
|
15 |
Â
/**
|
16 |
Â
* Initialize Kirki
|
17 |
Â
*/
|
102 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Date_Control' );
|
103 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Dashicons_Control' );
|
104 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Dimension_Control' );
|
105 |
+
$wp_customize->register_control_type( 'Kirki_Controls_Dropdown_Pages_Control' );
|
106 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Number_Control' );
|
107 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Radio_Control' );
|
108 |
Â
$wp_customize->register_control_type( 'Kirki_Controls_Radio_Buttonset_Control' );
|
161 |
Â
if ( isset( $args['type'] ) && 'background' === $args['type'] ) {
|
162 |
Â
continue;
|
163 |
Â
}
|
164 |
+
|
165 |
+
// Create the settings.
|
Â
|
|
166 |
Â
new Kirki_Settings( $args );
|
167 |
+
|
168 |
+
// Check if we're on the customizer.
|
169 |
+
// If we are, then we will create the controls, add the scripts needed for the customizer
|
170 |
+
// and any other tweaks that this field may require.
|
Â
|
|
Â
|
|
171 |
Â
if ( $wp_customize ) {
|
172 |
+
|
173 |
+
// Create the control.
|
Â
|
|
174 |
Â
new Kirki_Control( $args );
|
175 |
+
|
176 |
+
// Create the scripts for tooltips.
|
Â
|
|
177 |
Â
Kirki_Scripts_Tooltips::generate_script( $args );
|
178 |
Â
}
|
179 |
Â
}
|
includes/class-kirki-l10n.php
CHANGED
@@ -1,18 +1,47 @@
|
|
1 |
Â
<?php
|
2 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
3 |
Â
|
4 |
Â
if ( ! class_exists( 'Kirki_l10n' ) ) {
|
5 |
Â
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
class Kirki_l10n {
|
7 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
8 |
Â
protected $textdomain = 'kirki';
|
9 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
10 |
Â
public function __construct() {
|
11 |
Â
|
12 |
Â
add_action( 'plugins_loaded', array( $this, 'load_textdomain' ) );
|
13 |
Â
|
14 |
Â
}
|
15 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
16 |
Â
public function load_textdomain() {
|
17 |
Â
|
18 |
Â
if ( null !== $this->get_path() ) {
|
@@ -23,7 +52,10 @@ if ( ! class_exists( 'Kirki_l10n' ) ) {
|
|
23 |
Â
}
|
24 |
Â
|
25 |
Â
/**
|
26 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
*/
|
28 |
Â
protected function get_path() {
|
29 |
Â
$path_found = false;
|
@@ -44,6 +76,9 @@ if ( ! class_exists( 'Kirki_l10n' ) ) {
|
|
44 |
Â
}
|
45 |
Â
|
46 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
47 |
Â
* @return array
|
48 |
Â
*/
|
49 |
Â
protected function get_paths() {
|
@@ -60,7 +95,7 @@ if ( ! class_exists( 'Kirki_l10n' ) ) {
|
|
60 |
Â
*
|
61 |
Â
* @static
|
62 |
Â
* @access public
|
63 |
-
*
|
64 |
Â
* @return array
|
65 |
Â
*/
|
66 |
Â
public static function get_strings( $config_id = 'global' ) {
|
@@ -155,7 +190,8 @@ if ( ! class_exists( 'Kirki_l10n' ) ) {
|
|
155 |
Â
'ultra-bold' => esc_attr__( 'Ultra-Bold 900', 'kirki' ),
|
156 |
Â
'ultra-bold-italic' => esc_attr__( 'Ultra-Bold 900 Italic', 'kirki' ),
|
157 |
Â
'invalid-value' => esc_attr__( 'Invalid Value', 'kirki' ),
|
158 |
-
'add-new
|
Â
|
|
159 |
Â
'limit-rows' => esc_attr__( 'Limit: %s rows', 'kirki' ),
|
160 |
Â
'open-section' => esc_attr__( 'Press return or enter to open this section', 'kirki' ),
|
161 |
Â
'back' => esc_attr__( 'Back', 'kirki' ),
|
@@ -179,7 +215,5 @@ if ( ! class_exists( 'Kirki_l10n' ) ) {
|
|
179 |
Â
return apply_filters( 'kirki/' . $config_id . '/l10n', $translation_strings );
|
180 |
Â
|
181 |
Â
}
|
182 |
-
|
183 |
Â
}
|
184 |
-
|
185 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Internationalization helper.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_l10n' ) ) {
|
14 |
Â
|
15 |
+
/**
|
16 |
+
* Handles translations
|
17 |
+
*/
|
18 |
Â
class Kirki_l10n {
|
19 |
Â
|
20 |
+
/**
|
21 |
+
* The plugin textdomain
|
22 |
+
*
|
23 |
+
* @access protected
|
24 |
+
* @var string
|
25 |
+
*/
|
26 |
Â
protected $textdomain = 'kirki';
|
27 |
Â
|
28 |
+
/**
|
29 |
+
* The class constructor.
|
30 |
+
* Adds actions & filters to handle the rest of the methods.
|
31 |
+
*
|
32 |
+
* @access public
|
33 |
+
*/
|
34 |
Â
public function __construct() {
|
35 |
Â
|
36 |
Â
add_action( 'plugins_loaded', array( $this, 'load_textdomain' ) );
|
37 |
Â
|
38 |
Â
}
|
39 |
Â
|
40 |
+
/**
|
41 |
+
* Load the plugin textdomain
|
42 |
+
*
|
43 |
+
* @access public
|
44 |
+
*/
|
45 |
Â
public function load_textdomain() {
|
46 |
Â
|
47 |
Â
if ( null !== $this->get_path() ) {
|
52 |
Â
}
|
53 |
Â
|
54 |
Â
/**
|
55 |
+
* Gets the path to a translation file.
|
56 |
+
*
|
57 |
+
* @access protected
|
58 |
+
* @return string Absolute path to the translation file.
|
59 |
Â
*/
|
60 |
Â
protected function get_path() {
|
61 |
Â
$path_found = false;
|
76 |
Â
}
|
77 |
Â
|
78 |
Â
/**
|
79 |
+
* Returns an array of paths where translation files may be located.
|
80 |
+
*
|
81 |
+
* @access protected
|
82 |
Â
* @return array
|
83 |
Â
*/
|
84 |
Â
protected function get_paths() {
|
95 |
Â
*
|
96 |
Â
* @static
|
97 |
Â
* @access public
|
98 |
+
* @param string $config_id The config ID. See Kirki_Config.
|
99 |
Â
* @return array
|
100 |
Â
*/
|
101 |
Â
public static function get_strings( $config_id = 'global' ) {
|
190 |
Â
'ultra-bold' => esc_attr__( 'Ultra-Bold 900', 'kirki' ),
|
191 |
Â
'ultra-bold-italic' => esc_attr__( 'Ultra-Bold 900 Italic', 'kirki' ),
|
192 |
Â
'invalid-value' => esc_attr__( 'Invalid Value', 'kirki' ),
|
193 |
+
'add-new' => esc_attr__( 'Add new', 'kirki' ),
|
194 |
+
'row' => esc_attr__( 'row', 'kirki' ),
|
195 |
Â
'limit-rows' => esc_attr__( 'Limit: %s rows', 'kirki' ),
|
196 |
Â
'open-section' => esc_attr__( 'Press return or enter to open this section', 'kirki' ),
|
197 |
Â
'back' => esc_attr__( 'Back', 'kirki' ),
|
215 |
Â
return apply_filters( 'kirki/' . $config_id . '/l10n', $translation_strings );
|
216 |
Â
|
217 |
Â
}
|
Â
|
|
218 |
Â
}
|
Â
|
|
219 |
Â
}
|
includes/class-kirki-panel.php
CHANGED
@@ -1,11 +1,27 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Panel' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Panel {
|
6 |
Â
|
7 |
Â
/**
|
8 |
-
* An array of our panel types
|
Â
|
|
Â
|
|
Â
|
|
9 |
Â
*/
|
10 |
Â
private $panel_types = array(
|
11 |
Â
'default' => 'Kirki_Panels_Default_Panel',
|
@@ -13,9 +29,10 @@ if ( ! class_exists( 'Kirki_Panel' ) ) {
|
|
13 |
Â
);
|
14 |
Â
|
15 |
Â
/**
|
16 |
-
* The class constructor
|
17 |
Â
*
|
18 |
-
* @
|
Â
|
|
19 |
Â
*/
|
20 |
Â
public function __construct( $args ) {
|
21 |
Â
|
@@ -25,9 +42,9 @@ if ( ! class_exists( 'Kirki_Panel' ) ) {
|
|
25 |
Â
}
|
26 |
Â
|
27 |
Â
/**
|
28 |
-
* Add the panel using the Customizer API
|
29 |
Â
*
|
30 |
-
* @
|
31 |
Â
*/
|
32 |
Â
public function add_panel( $args ) {
|
33 |
Â
global $wp_customize;
|
@@ -38,9 +55,9 @@ if ( ! class_exists( 'Kirki_Panel' ) ) {
|
|
38 |
Â
$panel_classname = $this->panel_types[ $args['type'] ];
|
39 |
Â
|
40 |
Â
$wp_customize->add_panel( new $panel_classname( $wp_customize, sanitize_key( $args['id'] ), array(
|
41 |
-
'title' => $args['title'], //
|
42 |
Â
'priority' => absint( $args['priority'] ),
|
43 |
-
'description' => $args['description'], //
|
44 |
Â
'active_callback' => $args['active_callback'],
|
45 |
Â
) ) );
|
46 |
Â
|
@@ -49,9 +66,6 @@ if ( ! class_exists( 'Kirki_Panel' ) ) {
|
|
49 |
Â
$args['context'] = 'panel';
|
50 |
Â
Kirki_Scripts_Icons::generate_script( $args );
|
51 |
Â
}
|
52 |
-
|
53 |
Â
}
|
54 |
-
|
55 |
Â
}
|
56 |
-
|
57 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles panels added via the Kirki API.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Panel' ) ) {
|
14 |
Â
|
15 |
+
/**
|
16 |
+
* Each panel is a separate instance of the Kirki_Panel object.
|
17 |
+
*/
|
18 |
Â
class Kirki_Panel {
|
19 |
Â
|
20 |
Â
/**
|
21 |
+
* An array of our panel types.
|
22 |
+
*
|
23 |
+
* @access private
|
24 |
+
* @var array
|
25 |
Â
*/
|
26 |
Â
private $panel_types = array(
|
27 |
Â
'default' => 'Kirki_Panels_Default_Panel',
|
29 |
Â
);
|
30 |
Â
|
31 |
Â
/**
|
32 |
+
* The class constructor.
|
33 |
Â
*
|
34 |
+
* @access public
|
35 |
+
* @param array $args The panel arguments.
|
36 |
Â
*/
|
37 |
Â
public function __construct( $args ) {
|
38 |
Â
|
42 |
Â
}
|
43 |
Â
|
44 |
Â
/**
|
45 |
+
* Add the panel using the Customizer API.
|
46 |
Â
*
|
47 |
+
* @param array $args The panel arguments.
|
48 |
Â
*/
|
49 |
Â
public function add_panel( $args ) {
|
50 |
Â
global $wp_customize;
|
55 |
Â
$panel_classname = $this->panel_types[ $args['type'] ];
|
56 |
Â
|
57 |
Â
$wp_customize->add_panel( new $panel_classname( $wp_customize, sanitize_key( $args['id'] ), array(
|
58 |
+
'title' => $args['title'], // Already escaped in WP Core.
|
59 |
Â
'priority' => absint( $args['priority'] ),
|
60 |
+
'description' => $args['description'], // Already escaped in WP Core.
|
61 |
Â
'active_callback' => $args['active_callback'],
|
62 |
Â
) ) );
|
63 |
Â
|
66 |
Â
$args['context'] = 'panel';
|
67 |
Â
Kirki_Scripts_Icons::generate_script( $args );
|
68 |
Â
}
|
Â
|
|
69 |
Â
}
|
Â
|
|
70 |
Â
}
|
Â
|
|
71 |
Â
}
|
includes/class-kirki-sanitize-values.php
CHANGED
@@ -7,24 +7,34 @@
|
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
-
* @license http://opensource.org/licenses/
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
-
// Exit if accessed directly
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
class Kirki_Sanitize_Values {
|
22 |
Â
|
23 |
Â
/**
|
24 |
Â
* Fallback for non-existing methods.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
*/
|
26 |
Â
public static function __callStatic( $name, $arguments ) {
|
27 |
Â
error_log( "Kirki_Sanitize_Values::$name does not exist" );
|
Â
|
|
28 |
Â
}
|
29 |
Â
|
30 |
Â
/**
|
@@ -37,13 +47,17 @@ if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
|
37 |
Â
* @return bool Whether the checkbox is checked.
|
38 |
Â
*/
|
39 |
Â
public static function checkbox( $checked ) {
|
40 |
-
return ( ( isset( $checked ) && ( true == $checked || 'on'
|
41 |
Â
}
|
42 |
Â
|
43 |
Â
/**
|
44 |
-
* Sanitize number options
|
45 |
Â
*
|
Â
|
|
Â
|
|
46 |
Â
* @since 0.5
|
Â
|
|
Â
|
|
47 |
Â
*/
|
48 |
Â
public static function number( $value ) {
|
49 |
Â
return ( is_numeric( $value ) ) ? $value : intval( $value );
|
@@ -70,41 +84,52 @@ if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
|
70 |
Â
$page_id = absint( $page_id );
|
71 |
Â
|
72 |
Â
// If $page_id is an ID of a published page, return it; otherwise, return the default.
|
73 |
-
return ( 'publish'
|
74 |
Â
}
|
75 |
Â
|
76 |
Â
/**
|
77 |
-
* Sanitizes css dimensions
|
78 |
Â
*
|
Â
|
|
Â
|
|
79 |
Â
* @since 2.2.0
|
Â
|
|
80 |
Â
* @return string
|
81 |
Â
*/
|
82 |
Â
public static function css_dimension( $value ) {
|
83 |
-
|
Â
|
|
84 |
Â
$value = trim( $value );
|
85 |
-
|
86 |
-
|
Â
|
|
87 |
Â
$value = '50%';
|
88 |
Â
}
|
89 |
-
|
90 |
-
|
Â
|
|
91 |
Â
return '';
|
92 |
Â
}
|
93 |
-
|
94 |
-
|
Â
|
|
95 |
Â
return 'auto';
|
96 |
Â
}
|
Â
|
|
97 |
Â
// Return empty if there are no numbers in the value.
|
98 |
Â
if ( ! preg_match( '#[0-9]#' , $value ) ) {
|
99 |
Â
return '';
|
100 |
Â
}
|
101 |
-
|
Â
|
|
102 |
Â
if ( false !== strpos( $value, 'calc(' ) ) {
|
103 |
Â
return $value;
|
104 |
Â
}
|
105 |
-
|
Â
|
|
106 |
Â
$raw_value = self::filter_number( $value );
|
107 |
Â
$unit_used = '';
|
Â
|
|
108 |
Â
// An array of all valid CSS units. Their order was carefully chosen for this evaluation, don't mix it up!!!
|
109 |
Â
$units = array( 'rem', 'em', 'ex', '%', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ch', 'vh', 'vw', 'vmin', 'vmax' );
|
110 |
Â
foreach ( $units as $unit ) {
|
@@ -112,11 +137,22 @@ if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
|
112 |
Â
$unit_used = $unit;
|
113 |
Â
}
|
114 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
115 |
Â
return $raw_value . $unit_used;
|
116 |
Â
}
|
117 |
Â
|
118 |
Â
/**
|
119 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
120 |
Â
*/
|
121 |
Â
public static function filter_number( $value ) {
|
122 |
Â
return filter_var( $value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION );
|
@@ -125,9 +161,10 @@ if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
|
125 |
Â
/**
|
126 |
Â
* Sanitize sortable controls
|
127 |
Â
*
|
Â
|
|
128 |
Â
* @since 0.8.3
|
129 |
-
*
|
130 |
-
* @return
|
131 |
Â
*/
|
132 |
Â
public static function sortable( $value ) {
|
133 |
Â
if ( is_serialized( $value ) ) {
|
@@ -140,8 +177,9 @@ if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
|
140 |
Â
/**
|
141 |
Â
* Sanitize RGBA colors
|
142 |
Â
*
|
Â
|
|
143 |
Â
* @since 0.8.5
|
144 |
-
*
|
145 |
Â
* @return string
|
146 |
Â
*/
|
147 |
Â
public static function rgba( $value ) {
|
@@ -152,35 +190,36 @@ if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
|
152 |
Â
/**
|
153 |
Â
* Sanitize colors.
|
154 |
Â
*
|
Â
|
|
155 |
Â
* @since 0.8.5
|
Â
|
|
156 |
Â
* @return string
|
157 |
Â
*/
|
158 |
Â
public static function color( $value ) {
|
159 |
-
// If empty, return empty
|
160 |
-
if ( ''
|
161 |
Â
return '';
|
162 |
Â
}
|
163 |
-
// If transparent, return 'transparent'
|
164 |
-
if ( is_string( $value ) && 'transparent'
|
165 |
Â
return 'transparent';
|
166 |
Â
}
|
167 |
-
// Instantiate the object
|
168 |
Â
$color = ariColor::newColor( $value );
|
169 |
-
// Return a CSS value, using the auto-detected mode
|
170 |
Â
return $color->toCSS( $color->mode );
|
171 |
Â
}
|
172 |
Â
|
173 |
Â
/**
|
174 |
Â
* DOES NOT SANITIZE ANYTHING.
|
175 |
Â
*
|
Â
|
|
176 |
Â
* @since 0.5
|
177 |
-
*
|
178 |
-
* @return
|
179 |
Â
*/
|
180 |
Â
public static function unfiltered( $value ) {
|
181 |
Â
return $value;
|
182 |
Â
}
|
183 |
-
|
184 |
Â
}
|
185 |
-
|
186 |
Â
}
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Sanitize_Values' ) ) {
|
20 |
Â
|
21 |
+
/**
|
22 |
+
* A simple wrapper class for static methods.
|
23 |
+
*/
|
24 |
Â
class Kirki_Sanitize_Values {
|
25 |
Â
|
26 |
Â
/**
|
27 |
Â
* Fallback for non-existing methods.
|
28 |
+
*
|
29 |
+
* @static
|
30 |
+
* @access public
|
31 |
+
* @param string $name The method we're trying to access.
|
32 |
+
* @param mixed $arguments The arguments the method we're trying to call accepts.
|
33 |
+
* @return mixed The $arguments provided.
|
34 |
Â
*/
|
35 |
Â
public static function __callStatic( $name, $arguments ) {
|
36 |
Â
error_log( "Kirki_Sanitize_Values::$name does not exist" );
|
37 |
+
return $arguments;
|
38 |
Â
}
|
39 |
Â
|
40 |
Â
/**
|
47 |
Â
* @return bool Whether the checkbox is checked.
|
48 |
Â
*/
|
49 |
Â
public static function checkbox( $checked ) {
|
50 |
+
return ( ( isset( $checked ) && ( true == $checked || 'on' === $checked ) ) ? true : false );
|
51 |
Â
}
|
52 |
Â
|
53 |
Â
/**
|
54 |
+
* Sanitize number options.
|
55 |
Â
*
|
56 |
+
* @static
|
57 |
+
* @access public
|
58 |
Â
* @since 0.5
|
59 |
+
* @param int|float|double|string $value The value to be sanitized.
|
60 |
+
* @return int|float|double
|
61 |
Â
*/
|
62 |
Â
public static function number( $value ) {
|
63 |
Â
return ( is_numeric( $value ) ) ? $value : intval( $value );
|
84 |
Â
$page_id = absint( $page_id );
|
85 |
Â
|
86 |
Â
// If $page_id is an ID of a published page, return it; otherwise, return the default.
|
87 |
+
return ( 'publish' === get_post_status( $page_id ) ? $page_id : $setting->default );
|
88 |
Â
}
|
89 |
Â
|
90 |
Â
/**
|
91 |
+
* Sanitizes css dimensions.
|
92 |
Â
*
|
93 |
+
* @static
|
94 |
+
* @access public
|
95 |
Â
* @since 2.2.0
|
96 |
+
* @param string $value The value to be sanitized.
|
97 |
Â
* @return string
|
98 |
Â
*/
|
99 |
Â
public static function css_dimension( $value ) {
|
100 |
+
|
101 |
+
// Trim it.
|
102 |
Â
$value = trim( $value );
|
103 |
+
|
104 |
+
// If the value is round, then return 50%.
|
105 |
+
if ( 'round' === $value ) {
|
106 |
Â
$value = '50%';
|
107 |
Â
}
|
108 |
+
|
109 |
+
// If the value is empty, return empty.
|
110 |
+
if ( '' === $value ) {
|
111 |
Â
return '';
|
112 |
Â
}
|
113 |
+
|
114 |
+
// If auto, return auto.
|
115 |
+
if ( 'auto' === $value ) {
|
116 |
Â
return 'auto';
|
117 |
Â
}
|
118 |
+
|
119 |
Â
// Return empty if there are no numbers in the value.
|
120 |
Â
if ( ! preg_match( '#[0-9]#' , $value ) ) {
|
121 |
Â
return '';
|
122 |
Â
}
|
123 |
+
|
124 |
+
// If we're using calc() then return the value.
|
125 |
Â
if ( false !== strpos( $value, 'calc(' ) ) {
|
126 |
Â
return $value;
|
127 |
Â
}
|
128 |
+
|
129 |
+
// The raw value without the units.
|
130 |
Â
$raw_value = self::filter_number( $value );
|
131 |
Â
$unit_used = '';
|
132 |
+
|
133 |
Â
// An array of all valid CSS units. Their order was carefully chosen for this evaluation, don't mix it up!!!
|
134 |
Â
$units = array( 'rem', 'em', 'ex', '%', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ch', 'vh', 'vw', 'vmin', 'vmax' );
|
135 |
Â
foreach ( $units as $unit ) {
|
137 |
Â
$unit_used = $unit;
|
138 |
Â
}
|
139 |
Â
}
|
140 |
+
|
141 |
+
// Hack for rem values.
|
142 |
+
if ( 'em' === $unit_used && false !== strpos( $value, 'rem' ) ) {
|
143 |
+
$unit_used = 'rem';
|
144 |
+
}
|
145 |
+
|
146 |
Â
return $raw_value . $unit_used;
|
147 |
Â
}
|
148 |
Â
|
149 |
Â
/**
|
150 |
+
* Filters numeric values.
|
151 |
+
*
|
152 |
+
* @static
|
153 |
+
* @access public
|
154 |
+
* @param string $value The value to be sanitized.
|
155 |
+
* @return int|float
|
156 |
Â
*/
|
157 |
Â
public static function filter_number( $value ) {
|
158 |
Â
return filter_var( $value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION );
|
161 |
Â
/**
|
162 |
Â
* Sanitize sortable controls
|
163 |
Â
*
|
164 |
+
* @static
|
165 |
Â
* @since 0.8.3
|
166 |
+
* @param string|array $value The value to be sanitized.
|
167 |
+
* @return string
|
168 |
Â
*/
|
169 |
Â
public static function sortable( $value ) {
|
170 |
Â
if ( is_serialized( $value ) ) {
|
177 |
Â
/**
|
178 |
Â
* Sanitize RGBA colors
|
179 |
Â
*
|
180 |
+
* @static
|
181 |
Â
* @since 0.8.5
|
182 |
+
* @param string $value The value to be sanitized.
|
183 |
Â
* @return string
|
184 |
Â
*/
|
185 |
Â
public static function rgba( $value ) {
|
190 |
Â
/**
|
191 |
Â
* Sanitize colors.
|
192 |
Â
*
|
193 |
+
* @static
|
194 |
Â
* @since 0.8.5
|
195 |
+
* @param string $value The value to be sanitized.
|
196 |
Â
* @return string
|
197 |
Â
*/
|
198 |
Â
public static function color( $value ) {
|
199 |
+
// If the value is empty, then return empty.
|
200 |
+
if ( '' === $value ) {
|
201 |
Â
return '';
|
202 |
Â
}
|
203 |
+
// If transparent, then return 'transparent'.
|
204 |
+
if ( is_string( $value ) && 'transparent' === trim( $value ) ) {
|
205 |
Â
return 'transparent';
|
206 |
Â
}
|
207 |
+
// Instantiate the object.
|
208 |
Â
$color = ariColor::newColor( $value );
|
209 |
+
// Return a CSS value, using the auto-detected mode.
|
210 |
Â
return $color->toCSS( $color->mode );
|
211 |
Â
}
|
212 |
Â
|
213 |
Â
/**
|
214 |
Â
* DOES NOT SANITIZE ANYTHING.
|
215 |
Â
*
|
216 |
+
* @static
|
217 |
Â
* @since 0.5
|
218 |
+
* @param int|string|array $value The value to be sanitized.
|
219 |
+
* @return int|string|array
|
220 |
Â
*/
|
221 |
Â
public static function unfiltered( $value ) {
|
222 |
Â
return $value;
|
223 |
Â
}
|
Â
|
|
224 |
Â
}
|
Â
|
|
225 |
Â
}
|
includes/class-kirki-scripts-registry.php
CHANGED
@@ -6,25 +6,50 @@
|
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
-
* @license http://opensource.org/licenses/
|
10 |
Â
* @since 1.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
-
// Exit if accessed directly
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Scripts_Registry' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Scripts_Registry {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $dependencies;
|
22 |
-
|
23 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public $tooltips;
|
25 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
public $icons;
|
27 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public function __construct() {
|
29 |
Â
|
30 |
Â
$this->dependencies = new Kirki_Enqueue();
|
@@ -34,11 +59,14 @@ if ( ! class_exists( 'Kirki_Scripts_Registry' ) ) {
|
|
34 |
Â
}
|
35 |
Â
|
36 |
Â
/**
|
37 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
38 |
Â
*/
|
39 |
Â
public static function prepare( $script ) {
|
40 |
Â
return '<script>jQuery(document).ready(function($) { "use strict"; ' . $script . '});</script>';
|
41 |
Â
}
|
42 |
-
|
43 |
Â
}
|
44 |
Â
}
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
Â
* @since 1.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
+
// Exit if accessed directly.
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Scripts_Registry' ) ) {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Instantiates dependent classes
|
22 |
+
*/
|
23 |
Â
class Kirki_Scripts_Registry {
|
24 |
Â
|
25 |
+
/**
|
26 |
+
* Dependencies
|
27 |
+
*
|
28 |
+
* @access public
|
29 |
+
* @var object Kirki_Enqueue.
|
30 |
+
*/
|
31 |
Â
public $dependencies;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Tooltips
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
* @var object Kirki_Scripts_Tooltips.
|
38 |
+
*/
|
39 |
Â
public $tooltips;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Icons
|
43 |
+
*
|
44 |
+
* @access public
|
45 |
+
* @var object Kirki_Scripts_Icons.
|
46 |
+
*/
|
47 |
Â
public $icons;
|
48 |
Â
|
49 |
+
/**
|
50 |
+
* The main class constructor.
|
51 |
+
* Instantiates secondary classes.
|
52 |
+
*/
|
53 |
Â
public function __construct() {
|
54 |
Â
|
55 |
Â
$this->dependencies = new Kirki_Enqueue();
|
59 |
Â
}
|
60 |
Â
|
61 |
Â
/**
|
62 |
+
* Prepares a script for echoing.
|
63 |
+
* Wraps it in <script> and jQuery.
|
64 |
+
*
|
65 |
+
* @param string $script The contents of the script.
|
66 |
+
* @return string
|
67 |
Â
*/
|
68 |
Â
public static function prepare( $script ) {
|
69 |
Â
return '<script>jQuery(document).ready(function($) { "use strict"; ' . $script . '});</script>';
|
70 |
Â
}
|
Â
|
|
71 |
Â
}
|
72 |
Â
}
|
includes/class-kirki-section.php
CHANGED
@@ -1,11 +1,27 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Section' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Section {
|
6 |
Â
|
7 |
Â
/**
|
8 |
-
* An array of our section types
|
Â
|
|
Â
|
|
Â
|
|
9 |
Â
*/
|
10 |
Â
private $section_types = array(
|
11 |
Â
'default' => 'Kirki_Sections_Default_Section',
|
@@ -13,6 +29,12 @@ if ( ! class_exists( 'Kirki_Section' ) ) {
|
|
13 |
Â
'hover' => 'Kirki_Sections_Hover_Section',
|
14 |
Â
);
|
15 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
16 |
Â
public function __construct( $args ) {
|
17 |
Â
|
18 |
Â
$this->section_types = apply_filters( 'kirki/section_types', $this->section_types );
|
@@ -20,6 +42,12 @@ if ( ! class_exists( 'Kirki_Section' ) ) {
|
|
20 |
Â
|
21 |
Â
}
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function add_section( $args ) {
|
24 |
Â
|
25 |
Â
global $wp_customize;
|
@@ -30,10 +58,10 @@ if ( ! class_exists( 'Kirki_Section' ) ) {
|
|
30 |
Â
$section_classname = $this->section_types[ $args['type'] ];
|
31 |
Â
|
32 |
Â
$wp_customize->add_section( new $section_classname( $wp_customize, sanitize_key( $args['id'] ), array(
|
33 |
-
'title' => $args['title'], //
|
34 |
Â
'priority' => absint( $args['priority'] ),
|
35 |
Â
'panel' => sanitize_key( $args['panel'] ),
|
36 |
-
'description' => $args['description'], //
|
37 |
Â
'active_callback' => $args['active_callback'],
|
38 |
Â
) ) );
|
39 |
Â
|
@@ -41,9 +69,6 @@ if ( ! class_exists( 'Kirki_Section' ) ) {
|
|
41 |
Â
$args['context'] = 'section';
|
42 |
Â
Kirki_Scripts_Icons::generate_script( $args );
|
43 |
Â
}
|
44 |
-
|
45 |
Â
}
|
46 |
-
|
47 |
Â
}
|
48 |
-
|
49 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles sections created via the Kirki API.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Section' ) ) {
|
14 |
Â
|
15 |
+
/**
|
16 |
+
* Each section is a separate instrance of the Kirki_Section object.
|
17 |
+
*/
|
18 |
Â
class Kirki_Section {
|
19 |
Â
|
20 |
Â
/**
|
21 |
+
* An array of our section types.
|
22 |
+
*
|
23 |
+
* @access private
|
24 |
+
* @var array
|
25 |
Â
*/
|
26 |
Â
private $section_types = array(
|
27 |
Â
'default' => 'Kirki_Sections_Default_Section',
|
29 |
Â
'hover' => 'Kirki_Sections_Hover_Section',
|
30 |
Â
);
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* The object constructor.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
* @param array $args The section parameters.
|
37 |
+
*/
|
38 |
Â
public function __construct( $args ) {
|
39 |
Â
|
40 |
Â
$this->section_types = apply_filters( 'kirki/section_types', $this->section_types );
|
42 |
Â
|
43 |
Â
}
|
44 |
Â
|
45 |
+
/**
|
46 |
+
* Adds the section using the WordPress Customizer API.
|
47 |
+
*
|
48 |
+
* @access public
|
49 |
+
* @param array $args The section parameters.
|
50 |
+
*/
|
51 |
Â
public function add_section( $args ) {
|
52 |
Â
|
53 |
Â
global $wp_customize;
|
58 |
Â
$section_classname = $this->section_types[ $args['type'] ];
|
59 |
Â
|
60 |
Â
$wp_customize->add_section( new $section_classname( $wp_customize, sanitize_key( $args['id'] ), array(
|
61 |
+
'title' => $args['title'], // Already escaped in WP Core.
|
62 |
Â
'priority' => absint( $args['priority'] ),
|
63 |
Â
'panel' => sanitize_key( $args['panel'] ),
|
64 |
+
'description' => $args['description'], // Already escaped in WP Core.
|
65 |
Â
'active_callback' => $args['active_callback'],
|
66 |
Â
) ) );
|
67 |
Â
|
69 |
Â
$args['context'] = 'section';
|
70 |
Â
Kirki_Scripts_Icons::generate_script( $args );
|
71 |
Â
}
|
Â
|
|
72 |
Â
}
|
Â
|
|
73 |
Â
}
|
Â
|
|
74 |
Â
}
|
includes/class-kirki-selective-refresh.php
CHANGED
@@ -1,25 +1,23 @@
|
|
1 |
Â
<?php
|
2 |
-
|
3 |
Â
/**
|
4 |
-
*
|
5 |
-
|
6 |
-
'transport' => 'postMessage',
|
7 |
-
'partial_refresh' => array(
|
8 |
-
'header_site_title' => array(
|
9 |
-
'selector' => '.site-title a',
|
10 |
-
'render_callback' => function() {
|
11 |
-
return get_bloginfo( 'name', 'display' );
|
12 |
-
},
|
13 |
-
),
|
14 |
-
'document_title' => array(
|
15 |
-
'selector' => 'head > title',
|
16 |
-
'render_callback' => 'wp_get_document_title',
|
17 |
-
),
|
18 |
-
),
|
19 |
Â
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
*/
|
21 |
Â
class Kirki_Selective_Refresh {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function __construct() {
|
24 |
Â
add_action( 'customize_register', array( $this, 'register_partials' ), 99 );
|
25 |
Â
}
|
@@ -29,22 +27,22 @@ class Kirki_Selective_Refresh {
|
|
29 |
Â
* If that argument is found, then it starts parsing the array of arguments.
|
30 |
Â
* Registers a selective_refresh in the customizer for each one of them.
|
31 |
Â
*
|
32 |
-
* @param $wp_customize WP_Customize_Manager
|
33 |
Â
*/
|
34 |
-
public function register_partials(
|
35 |
Â
|
36 |
Â
// Abort if selective refresh is not available.
|
37 |
Â
if ( ! isset( $wp_customize->selective_refresh ) ) {
|
38 |
Â
return;
|
39 |
Â
}
|
40 |
Â
|
41 |
-
// Get an array of all fields
|
42 |
Â
$fields = Kirki::$fields;
|
43 |
Â
|
44 |
-
// Start parsing the fields
|
45 |
Â
foreach ( $fields as $field_id => $args ) {
|
46 |
Â
if ( isset( $args['partial_refresh'] ) ) {
|
47 |
-
// Start going through each item in the array of partial refreshes
|
48 |
Â
foreach ( $args['partial_refresh'] as $partial_refresh => $partial_refresh_args ) {
|
49 |
Â
// If we have all we need, create the selective refresh call.
|
50 |
Â
if ( isset( $partial_refresh_args['render_callback'] ) && isset( $partial_refresh_args['selector'] ) ) {
|
1 |
Â
<?php
|
Â
|
|
2 |
Â
/**
|
3 |
+
* Handles sections created via the Kirki API.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
4 |
Â
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Handle selective refreshes introduced in WordPress 4.5.
|
15 |
Â
*/
|
16 |
Â
class Kirki_Selective_Refresh {
|
17 |
Â
|
18 |
+
/**
|
19 |
+
* Adds any necessary actions & filters.
|
20 |
+
*/
|
21 |
Â
public function __construct() {
|
22 |
Â
add_action( 'customize_register', array( $this, 'register_partials' ), 99 );
|
23 |
Â
}
|
27 |
Â
* If that argument is found, then it starts parsing the array of arguments.
|
28 |
Â
* Registers a selective_refresh in the customizer for each one of them.
|
29 |
Â
*
|
30 |
+
* @param object $wp_customize WP_Customize_Manager.
|
31 |
Â
*/
|
32 |
+
public function register_partials( $wp_customize ) {
|
33 |
Â
|
34 |
Â
// Abort if selective refresh is not available.
|
35 |
Â
if ( ! isset( $wp_customize->selective_refresh ) ) {
|
36 |
Â
return;
|
37 |
Â
}
|
38 |
Â
|
39 |
+
// Get an array of all fields.
|
40 |
Â
$fields = Kirki::$fields;
|
41 |
Â
|
42 |
+
// Start parsing the fields.
|
43 |
Â
foreach ( $fields as $field_id => $args ) {
|
44 |
Â
if ( isset( $args['partial_refresh'] ) ) {
|
45 |
+
// Start going through each item in the array of partial refreshes.
|
46 |
Â
foreach ( $args['partial_refresh'] as $partial_refresh => $partial_refresh_args ) {
|
47 |
Â
// If we have all we need, create the selective refresh call.
|
48 |
Â
if ( isset( $partial_refresh_args['render_callback'] ) && isset( $partial_refresh_args['selector'] ) ) {
|
includes/class-kirki-settings.php
CHANGED
@@ -1,16 +1,33 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Settings' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Settings {
|
6 |
Â
|
7 |
Â
/**
|
Â
|
|
Â
|
|
8 |
Â
* @access protected
|
9 |
Â
* @var WP_Customize_Manager
|
10 |
Â
*/
|
11 |
Â
protected $wp_customize;
|
12 |
Â
|
13 |
Â
/**
|
Â
|
|
Â
|
|
14 |
Â
* @access protected
|
15 |
Â
* @var array
|
16 |
Â
*/
|
@@ -21,20 +38,20 @@ if ( ! class_exists( 'Kirki_Settings' ) ) {
|
|
21 |
Â
* Class constructor.
|
22 |
Â
*
|
23 |
Â
* @access public
|
24 |
-
* @param $args
|
25 |
Â
*/
|
26 |
Â
public function __construct( $args = array() ) {
|
27 |
Â
|
28 |
-
// Set the $wp_customize property
|
29 |
Â
global $wp_customize;
|
30 |
Â
if ( ! $wp_customize ) {
|
31 |
Â
return;
|
32 |
Â
}
|
33 |
Â
$this->wp_customize = $wp_customize;
|
34 |
Â
|
35 |
-
// Set the setting_types
|
36 |
Â
$this->set_setting_types();
|
37 |
-
// Add the settings
|
38 |
Â
$this->add_settings( $args );
|
39 |
Â
|
40 |
Â
}
|
@@ -46,11 +63,11 @@ if ( ! class_exists( 'Kirki_Settings' ) ) {
|
|
46 |
Â
* If not an array, then it just calls add_setting
|
47 |
Â
*
|
48 |
Â
* @access private
|
49 |
-
* @param $args
|
50 |
Â
*/
|
51 |
Â
final private function add_settings( $args = array() ) {
|
52 |
Â
|
53 |
-
// Get the classname we'll be using to create our setting(s)
|
54 |
Â
if ( ! isset( $args['type'] ) || ! array_key_exists( $args['type'], $this->setting_types ) ) {
|
55 |
Â
$args['type'] = 'default';
|
56 |
Â
}
|
@@ -59,7 +76,8 @@ if ( ! class_exists( 'Kirki_Settings' ) ) {
|
|
59 |
Â
// If settings are defined as an array, then we need to go through them
|
60 |
Â
// and call add_setting for each one of them separately.
|
61 |
Â
if ( isset( $args['settings'] ) && is_array( $args['settings'] ) ) {
|
62 |
-
|
Â
|
|
63 |
Â
if ( ! isset( $args['default'] ) || ! is_array( $args['default'] ) ) {
|
64 |
Â
$args['default'] = array();
|
65 |
Â
}
|
@@ -75,15 +93,15 @@ if ( ! class_exists( 'Kirki_Settings' ) ) {
|
|
75 |
Â
* This is where we're finally adding the setting to the Customizer.
|
76 |
Â
*
|
77 |
Â
* @access private
|
78 |
-
* @param $classname
|
79 |
-
*
|
80 |
-
* @param $setting
|
81 |
-
*
|
82 |
-
* @param
|
83 |
-
* @param $type
|
84 |
-
* @param $capability
|
85 |
-
* @param $transport
|
86 |
-
* @param
|
87 |
Â
*/
|
88 |
Â
final private function add_setting( $classname, $setting, $default, $type, $capability, $transport, $sanitize_callback ) {
|
89 |
Â
|
@@ -105,23 +123,19 @@ if ( ! class_exists( 'Kirki_Settings' ) ) {
|
|
105 |
Â
*/
|
106 |
Â
final private function set_setting_types() {
|
107 |
Â
|
108 |
-
// Apply the kirki/setting_types filter
|
109 |
Â
$this->setting_types = apply_filters( 'kirki/setting_types', array(
|
110 |
Â
'default' => 'Kirki_Settings_Default_Setting',
|
111 |
Â
'repeater' => 'Kirki_Settings_Repeater_Setting',
|
112 |
Â
) );
|
113 |
Â
|
114 |
-
// Make sure the defined classes actually exist
|
115 |
Â
foreach ( $this->setting_types as $key => $classname ) {
|
116 |
Â
|
117 |
Â
if ( ! class_exists( $classname ) ) {
|
118 |
Â
unset( $this->setting_types[ $key ] );
|
119 |
Â
}
|
120 |
-
|
121 |
Â
}
|
122 |
-
|
123 |
Â
}
|
124 |
-
|
125 |
Â
}
|
126 |
-
|
127 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles sections created via the Kirki API.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 1.0
|
11 |
+
*/
|
12 |
Â
|
13 |
Â
if ( ! class_exists( 'Kirki_Settings' ) ) {
|
14 |
Â
|
15 |
+
/**
|
16 |
+
* Each setting is a separate instance
|
17 |
+
*/
|
18 |
Â
class Kirki_Settings {
|
19 |
Â
|
20 |
Â
/**
|
21 |
+
* TYhe global $wp_customize object.
|
22 |
+
*
|
23 |
Â
* @access protected
|
24 |
Â
* @var WP_Customize_Manager
|
25 |
Â
*/
|
26 |
Â
protected $wp_customize;
|
27 |
Â
|
28 |
Â
/**
|
29 |
+
* The setting-stypes we're using.
|
30 |
+
*
|
31 |
Â
* @access protected
|
32 |
Â
* @var array
|
33 |
Â
*/
|
38 |
Â
* Class constructor.
|
39 |
Â
*
|
40 |
Â
* @access public
|
41 |
+
* @param array $args The field definition as sanitized in Kirki_Field.
|
42 |
Â
*/
|
43 |
Â
public function __construct( $args = array() ) {
|
44 |
Â
|
45 |
+
// Set the $wp_customize property.
|
46 |
Â
global $wp_customize;
|
47 |
Â
if ( ! $wp_customize ) {
|
48 |
Â
return;
|
49 |
Â
}
|
50 |
Â
$this->wp_customize = $wp_customize;
|
51 |
Â
|
52 |
+
// Set the setting_types.
|
53 |
Â
$this->set_setting_types();
|
54 |
+
// Add the settings.
|
55 |
Â
$this->add_settings( $args );
|
56 |
Â
|
57 |
Â
}
|
63 |
Â
* If not an array, then it just calls add_setting
|
64 |
Â
*
|
65 |
Â
* @access private
|
66 |
+
* @param array $args The field definition as sanitized in Kirki_Field.
|
67 |
Â
*/
|
68 |
Â
final private function add_settings( $args = array() ) {
|
69 |
Â
|
70 |
+
// Get the classname we'll be using to create our setting(s).
|
71 |
Â
if ( ! isset( $args['type'] ) || ! array_key_exists( $args['type'], $this->setting_types ) ) {
|
72 |
Â
$args['type'] = 'default';
|
73 |
Â
}
|
76 |
Â
// If settings are defined as an array, then we need to go through them
|
77 |
Â
// and call add_setting for each one of them separately.
|
78 |
Â
if ( isset( $args['settings'] ) && is_array( $args['settings'] ) ) {
|
79 |
+
|
80 |
+
// Make sure defaults have been defined.
|
81 |
Â
if ( ! isset( $args['default'] ) || ! is_array( $args['default'] ) ) {
|
82 |
Â
$args['default'] = array();
|
83 |
Â
}
|
93 |
Â
* This is where we're finally adding the setting to the Customizer.
|
94 |
Â
*
|
95 |
Â
* @access private
|
96 |
+
* @param string $classname The name of the class that will be used to create this setting.
|
97 |
+
* We're getting this from $this->setting_types.
|
98 |
+
* @param string $setting The setting-name.
|
99 |
+
* If settings is an array, then this method is called per-setting.
|
100 |
+
* @param string|array $default Default value for this setting.
|
101 |
+
* @param string $type The data type we're using. Valid options: theme_mod|option.
|
102 |
+
* @param string $capability @see https://codex.wordpress.org/Roles_and_Capabilities.
|
103 |
+
* @param string $transport Use refresh|postMessage.
|
104 |
+
* @param string|array $sanitize_callback A callable sanitization function or method.
|
105 |
Â
*/
|
106 |
Â
final private function add_setting( $classname, $setting, $default, $type, $capability, $transport, $sanitize_callback ) {
|
107 |
Â
|
123 |
Â
*/
|
124 |
Â
final private function set_setting_types() {
|
125 |
Â
|
126 |
+
// Apply the kirki/setting_types filter.
|
127 |
Â
$this->setting_types = apply_filters( 'kirki/setting_types', array(
|
128 |
Â
'default' => 'Kirki_Settings_Default_Setting',
|
129 |
Â
'repeater' => 'Kirki_Settings_Repeater_Setting',
|
130 |
Â
) );
|
131 |
Â
|
132 |
+
// Make sure the defined classes actually exist.
|
133 |
Â
foreach ( $this->setting_types as $key => $classname ) {
|
134 |
Â
|
135 |
Â
if ( ! class_exists( $classname ) ) {
|
136 |
Â
unset( $this->setting_types[ $key ] );
|
137 |
Â
}
|
Â
|
|
138 |
Â
}
|
Â
|
|
139 |
Â
}
|
Â
|
|
140 |
Â
}
|
Â
|
|
141 |
Â
}
|
includes/class-kirki-toolkit.php
CHANGED
@@ -6,19 +6,25 @@
|
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
-
* @license http://opensource.org/licenses/
|
10 |
Â
* @since 1.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
-
// Exit if accessed directly
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Toolkit' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
final class Kirki_Toolkit {
|
20 |
Â
|
21 |
Â
/**
|
Â
|
|
Â
|
|
22 |
Â
* @static
|
23 |
Â
* @access protected
|
24 |
Â
* @var object
|
@@ -26,19 +32,17 @@ if ( ! class_exists( 'Kirki_Toolkit' ) ) {
|
|
26 |
Â
protected static $instance = null;
|
27 |
Â
|
28 |
Â
/**
|
29 |
-
* Access the single instance of this class
|
30 |
Â
*
|
31 |
Â
* @static
|
32 |
Â
* @access public
|
33 |
-
* @return Kirki_Toolkit
|
34 |
Â
*/
|
35 |
Â
public static function get_instance() {
|
36 |
-
if ( null
|
37 |
Â
self::$instance = new self();
|
38 |
Â
}
|
39 |
Â
return self::$instance;
|
40 |
Â
}
|
41 |
-
|
42 |
Â
}
|
43 |
-
|
44 |
Â
}
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
Â
* @since 1.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
+
// Exit if accessed directly.
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Toolkit' ) ) {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Singleton class
|
22 |
+
*/
|
23 |
Â
final class Kirki_Toolkit {
|
24 |
Â
|
25 |
Â
/**
|
26 |
+
* Holds the one, true instance of this object.
|
27 |
+
*
|
28 |
Â
* @static
|
29 |
Â
* @access protected
|
30 |
Â
* @var object
|
32 |
Â
protected static $instance = null;
|
33 |
Â
|
34 |
Â
/**
|
35 |
+
* Access the single instance of this class.
|
36 |
Â
*
|
37 |
Â
* @static
|
38 |
Â
* @access public
|
39 |
+
* @return object Kirki_Toolkit.
|
40 |
Â
*/
|
41 |
Â
public static function get_instance() {
|
42 |
+
if ( null === self::$instance ) {
|
43 |
Â
self::$instance = new self();
|
44 |
Â
}
|
45 |
Â
return self::$instance;
|
46 |
Â
}
|
Â
|
|
47 |
Â
}
|
Â
|
|
48 |
Â
}
|
includes/class-kirki-values.php
CHANGED
@@ -1,75 +1,81 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Values' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
4 |
Â
class Kirki_Values {
|
5 |
Â
|
6 |
Â
/**
|
7 |
-
*
|
8 |
-
* @param $field_id string
|
9 |
Â
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
10 |
Â
* @return string|array
|
11 |
Â
*/
|
12 |
Â
public static function get_value( $config_id = '', $field_id = '' ) {
|
13 |
-
|
14 |
-
|
15 |
-
*/
|
16 |
Â
$value = '';
|
17 |
Â
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
*/
|
22 |
-
if ( ( '' == $field_id ) && '' != $config_id ) {
|
23 |
Â
$field_id = $config_id;
|
24 |
Â
$config_id = 'global';
|
25 |
Â
}
|
26 |
Â
|
27 |
-
|
28 |
-
|
29 |
-
*/
|
30 |
-
$config_id = ( '' == $config_id ) ? 'global' : $config_id;
|
31 |
Â
|
32 |
-
|
33 |
-
* fallback to 'global' if $config_id is not found
|
34 |
-
*/
|
35 |
Â
if ( ! isset( Kirki::$config[ $config_id ] ) ) {
|
36 |
Â
$config_id = 'global';
|
37 |
Â
}
|
38 |
Â
|
39 |
-
if ( 'theme_mod'
|
40 |
-
|
41 |
-
|
42 |
-
* so just get the value using get_theme_mod
|
43 |
-
*/
|
44 |
Â
$default_value = null;
|
45 |
Â
if ( isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ $field_id ]['default'] ) ) {
|
46 |
Â
$default_value = Kirki::$fields[ $field_id ]['default'];
|
47 |
Â
}
|
48 |
Â
$value = get_theme_mod( $field_id, $default_value );
|
49 |
Â
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
*/
|
54 |
-
if ( isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ $field_id ]['type'] ) && 'background' == Kirki::$fields[ $field_id ]['type'] ) {
|
55 |
Â
$value = array();
|
56 |
-
if ( null
|
57 |
Â
$default_value = array();
|
58 |
Â
}
|
59 |
Â
foreach ( $default_value as $property_key => $property_default ) {
|
60 |
Â
$value[ $property_key ] = get_theme_mod( $field_id . '_' . $property_key, $property_default );
|
61 |
Â
}
|
62 |
Â
}
|
Â
|
|
63 |
Â
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
/**
|
70 |
-
* Options are serialized as a single option in the db.
|
71 |
-
* We'll have to get the option and then get the item from the array.
|
72 |
-
*/
|
73 |
Â
$options = get_option( Kirki::$config[ $config_id ]['option_name'] );
|
74 |
Â
|
75 |
Â
if ( ! isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ Kirki::$config[ $config_id ]['option_name'] . '[' . $field_id . ']' ] ) ) {
|
@@ -77,10 +83,8 @@ if ( ! class_exists( 'Kirki_Values' ) ) {
|
|
77 |
Â
}
|
78 |
Â
$setting_modified = str_replace( ']', '', str_replace( Kirki::$config[ $config_id ]['option_name'] . '[', '', $field_id ) );
|
79 |
Â
|
80 |
-
|
81 |
-
|
82 |
-
*/
|
83 |
-
if ( 'background' == Kirki::$fields[ $field_id ]['type'] ) {
|
84 |
Â
$value = array();
|
85 |
Â
|
86 |
Â
foreach ( Kirki::$fields[ $field_id ]['default'] as $property => $property_default ) {
|
@@ -92,32 +96,25 @@ if ( ! class_exists( 'Kirki_Values' ) ) {
|
|
92 |
Â
}
|
93 |
Â
}
|
94 |
Â
} else {
|
95 |
-
|
96 |
-
|
97 |
-
*/
|
98 |
Â
$value = ( isset( $options[ $setting_modified ] ) ) ? $options[ $setting_modified ] : Kirki::$fields[ $field_id ]['default'];
|
99 |
Â
$value = maybe_unserialize( $value );
|
100 |
Â
}
|
101 |
-
|
102 |
Â
} else {
|
103 |
-
|
104 |
-
|
105 |
-
*/
|
106 |
Â
$value = get_option( $field_id, Kirki::$fields[ $field_id ]['default'] );
|
107 |
Â
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
*/
|
112 |
-
if ( 'background' == Kirki::$fields[ $field_id ]['type'] ) {
|
113 |
Â
$value = array();
|
114 |
Â
foreach ( Kirki::$fields[ $field_id ]['default'] as $property_key => $property_default ) {
|
115 |
Â
$value[ $property_key ] = get_option( $field_id . '_' . $property_key, $property_default );
|
116 |
Â
}
|
117 |
Â
}
|
118 |
-
|
119 |
Â
}
|
120 |
-
|
121 |
Â
}
|
122 |
Â
|
123 |
Â
return apply_filters( 'kirki/values/get_value', $value, $field_id );
|
@@ -125,19 +122,19 @@ if ( ! class_exists( 'Kirki_Values' ) ) {
|
|
125 |
Â
}
|
126 |
Â
|
127 |
Â
/**
|
128 |
-
*
|
129 |
Â
*
|
Â
|
|
Â
|
|
Â
|
|
130 |
Â
* @return string|array
|
131 |
Â
*/
|
132 |
Â
public static function get_sanitized_field_value( $field ) {
|
133 |
-
/**
|
134 |
-
* Get the value of this field
|
135 |
-
*/
|
136 |
Â
$value = $field['default'];
|
137 |
-
if ( isset( $field['option_type'] ) && 'theme_mod'
|
138 |
Â
$value = get_theme_mod( $field['settings'], $field['default'] );
|
139 |
-
} else if ( isset( $field['option_type'] ) && 'option'
|
140 |
-
if ( isset( $field['option_name'] ) && ''
|
141 |
Â
$all_values = get_option( $field['option_name'], array() );
|
142 |
Â
$sub_setting_id = str_replace( array( ']', $field['option_name'] . '[' ), '', $field['settings'] );
|
143 |
Â
if ( isset( $all_values[ $sub_setting_id ] ) ) {
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Hekoers to get the values of a field.
|
4 |
+
* WARNING: PLEASE DO NOT USE THESE.
|
5 |
+
* we only have these for backwards-compatibility purposes.
|
6 |
+
* please use get_option() & get_theme_mod() instead.
|
7 |
+
*
|
8 |
+
* @package Kirki
|
9 |
+
* @category Core
|
10 |
+
* @author Aristeides Stathopoulos
|
11 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
12 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
13 |
+
* @since 1.0
|
14 |
+
*/
|
15 |
Â
|
16 |
Â
if ( ! class_exists( 'Kirki_Values' ) ) {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Wrapper class for static methods.
|
20 |
+
*/
|
21 |
Â
class Kirki_Values {
|
22 |
Â
|
23 |
Â
/**
|
24 |
+
* Get the value of a field.
|
Â
|
|
25 |
Â
*
|
26 |
+
* @static
|
27 |
+
* @access public
|
28 |
+
* @param string $config_id The configuration ID. @see Kirki_Config.
|
29 |
+
* @param string $field_id The field ID.
|
30 |
Â
* @return string|array
|
31 |
Â
*/
|
32 |
Â
public static function get_value( $config_id = '', $field_id = '' ) {
|
33 |
+
|
34 |
+
// Make sure value is defined.
|
Â
|
|
35 |
Â
$value = '';
|
36 |
Â
|
37 |
+
// This allows us to skip the $config_id argument.
|
38 |
+
// If we skip adding a $config_id, use the 'global' configuration.
|
39 |
+
if ( ( '' === $field_id ) && '' !== $config_id ) {
|
Â
|
|
Â
|
|
40 |
Â
$field_id = $config_id;
|
41 |
Â
$config_id = 'global';
|
42 |
Â
}
|
43 |
Â
|
44 |
+
// If $config_id is empty, set it to 'global'.
|
45 |
+
$config_id = ( '' === $config_id ) ? 'global' : $config_id;
|
Â
|
|
Â
|
|
46 |
Â
|
47 |
+
// Fallback to 'global' if $config_id is not found.
|
Â
|
|
Â
|
|
48 |
Â
if ( ! isset( Kirki::$config[ $config_id ] ) ) {
|
49 |
Â
$config_id = 'global';
|
50 |
Â
}
|
51 |
Â
|
52 |
+
if ( 'theme_mod' === Kirki::$config[ $config_id ]['option_type'] ) {
|
53 |
+
|
54 |
+
// We're using theme_mods so just get the value using get_theme_mod.
|
Â
|
|
Â
|
|
55 |
Â
$default_value = null;
|
56 |
Â
if ( isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ $field_id ]['default'] ) ) {
|
57 |
Â
$default_value = Kirki::$fields[ $field_id ]['default'];
|
58 |
Â
}
|
59 |
Â
$value = get_theme_mod( $field_id, $default_value );
|
60 |
Â
|
61 |
+
// If the field is a background field, then get the sub-fields
|
62 |
+
// and return an array of the values.
|
63 |
+
if ( isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ $field_id ]['type'] ) && 'background' === Kirki::$fields[ $field_id ]['type'] ) {
|
Â
|
|
Â
|
|
64 |
Â
$value = array();
|
65 |
+
if ( null === $default_value ) {
|
66 |
Â
$default_value = array();
|
67 |
Â
}
|
68 |
Â
foreach ( $default_value as $property_key => $property_default ) {
|
69 |
Â
$value[ $property_key ] = get_theme_mod( $field_id . '_' . $property_key, $property_default );
|
70 |
Â
}
|
71 |
Â
}
|
72 |
+
} elseif ( 'option' === Kirki::$config[ $config_id ]['option_type'] ) {
|
73 |
Â
|
74 |
+
// We're using options.
|
75 |
+
if ( '' !== Kirki::$config[ $config_id ]['option_name'] ) {
|
76 |
+
|
77 |
+
// Options are serialized as a single option in the db.
|
78 |
+
// We'll have to get the option and then get the item from the array.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
79 |
Â
$options = get_option( Kirki::$config[ $config_id ]['option_name'] );
|
80 |
Â
|
81 |
Â
if ( ! isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ Kirki::$config[ $config_id ]['option_name'] . '[' . $field_id . ']' ] ) ) {
|
83 |
Â
}
|
84 |
Â
$setting_modified = str_replace( ']', '', str_replace( Kirki::$config[ $config_id ]['option_name'] . '[', '', $field_id ) );
|
85 |
Â
|
86 |
+
// If this is a background field, get the individual sub-fields and return an array.
|
87 |
+
if ( 'background' === Kirki::$fields[ $field_id ]['type'] ) {
|
Â
|
|
Â
|
|
88 |
Â
$value = array();
|
89 |
Â
|
90 |
Â
foreach ( Kirki::$fields[ $field_id ]['default'] as $property => $property_default ) {
|
96 |
Â
}
|
97 |
Â
}
|
98 |
Â
} else {
|
99 |
+
|
100 |
+
// This is not a background field so continue and get the value.
|
Â
|
|
101 |
Â
$value = ( isset( $options[ $setting_modified ] ) ) ? $options[ $setting_modified ] : Kirki::$fields[ $field_id ]['default'];
|
102 |
Â
$value = maybe_unserialize( $value );
|
103 |
Â
}
|
Â
|
|
104 |
Â
} else {
|
105 |
+
|
106 |
+
// Each option separately saved in the db.
|
Â
|
|
107 |
Â
$value = get_option( $field_id, Kirki::$fields[ $field_id ]['default'] );
|
108 |
Â
|
109 |
+
// If the field is a background field, then get the sub-fields.
|
110 |
+
// and return an array of the values.
|
111 |
+
if ( 'background' === Kirki::$fields[ $field_id ]['type'] ) {
|
Â
|
|
Â
|
|
112 |
Â
$value = array();
|
113 |
Â
foreach ( Kirki::$fields[ $field_id ]['default'] as $property_key => $property_default ) {
|
114 |
Â
$value[ $property_key ] = get_option( $field_id . '_' . $property_key, $property_default );
|
115 |
Â
}
|
116 |
Â
}
|
Â
|
|
117 |
Â
}
|
Â
|
|
118 |
Â
}
|
119 |
Â
|
120 |
Â
return apply_filters( 'kirki/values/get_value', $value, $field_id );
|
122 |
Â
}
|
123 |
Â
|
124 |
Â
/**
|
125 |
+
* Gets the value or fallsback to default.
|
126 |
Â
*
|
127 |
+
* @static
|
128 |
+
* @access public
|
129 |
+
* @param array $field The field aruments.
|
130 |
Â
* @return string|array
|
131 |
Â
*/
|
132 |
Â
public static function get_sanitized_field_value( $field ) {
|
Â
|
|
Â
|
|
Â
|
|
133 |
Â
$value = $field['default'];
|
134 |
+
if ( isset( $field['option_type'] ) && 'theme_mod' === $field['option_type'] ) {
|
135 |
Â
$value = get_theme_mod( $field['settings'], $field['default'] );
|
136 |
+
} else if ( isset( $field['option_type'] ) && 'option' === $field['option_type'] ) {
|
137 |
+
if ( isset( $field['option_name'] ) && '' !== $field['option_name'] ) {
|
138 |
Â
$all_values = get_option( $field['option_name'], array() );
|
139 |
Â
$sub_setting_id = str_replace( array( ']', $field['option_name'] . '[' ), '', $field['settings'] );
|
140 |
Â
if ( isset( $all_values[ $sub_setting_id ] ) ) {
|
includes/class-kirki.php
CHANGED
@@ -8,57 +8,117 @@
|
|
8 |
Â
* @category Core
|
9 |
Â
* @author Aristeides Stathopoulos
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
-
* @license http://opensource.org/licenses/
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
-
// Exit if accessed directly
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
class Kirki extends Kirki_Init {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public static $path;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public static $url;
|
25 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
public static $config = array();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public static $fields = array();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public static $panels = array();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
29 |
Â
public static $sections = array();
|
30 |
Â
|
31 |
Â
/**
|
32 |
Â
* Get the value of an option from the db.
|
33 |
Â
*
|
34 |
-
* @
|
35 |
-
* @
|
36 |
-
*
|
37 |
-
* @
|
38 |
-
*
|
39 |
Â
*/
|
40 |
Â
public static function get_option( $config_id = '', $field_id = '' ) {
|
Â
|
|
41 |
Â
return Kirki_Values::get_value( $config_id, $field_id );
|
Â
|
|
42 |
Â
}
|
43 |
Â
|
44 |
Â
/**
|
45 |
Â
* Sets the configuration options.
|
46 |
Â
*
|
47 |
-
* @
|
48 |
-
* @
|
49 |
-
* @param string $config_id
|
Â
|
|
50 |
Â
*/
|
51 |
Â
public static function add_config( $config_id, $args = array() ) {
|
Â
|
|
52 |
Â
$config = Kirki_Config::get_instance( $config_id, $args );
|
53 |
Â
$config_args = $config->get_config();
|
54 |
Â
self::$config[ $config_args['id'] ] = $config_args;
|
Â
|
|
55 |
Â
}
|
56 |
Â
|
57 |
Â
/**
|
58 |
-
* Create a new panel
|
59 |
Â
*
|
60 |
-
* @
|
61 |
-
* @
|
Â
|
|
Â
|
|
62 |
Â
*/
|
63 |
Â
public static function add_panel( $id = '', $args = array() ) {
|
64 |
Â
|
@@ -75,11 +135,12 @@ if ( ! class_exists( 'Kirki' ) ) {
|
|
75 |
Â
}
|
76 |
Â
|
77 |
Â
/**
|
78 |
-
* Create a new section
|
79 |
Â
*
|
80 |
-
* @
|
81 |
-
* @
|
82 |
-
* @param string $id
|
Â
|
|
83 |
Â
*/
|
84 |
Â
public static function add_section( $id, $args ) {
|
85 |
Â
|
@@ -97,12 +158,15 @@ if ( ! class_exists( 'Kirki' ) ) {
|
|
97 |
Â
}
|
98 |
Â
|
99 |
Â
/**
|
100 |
-
* Create a new field
|
101 |
Â
*
|
102 |
-
* @
|
103 |
-
* @
|
Â
|
|
Â
|
|
104 |
Â
*/
|
105 |
Â
public static function add_field( $config_id, $args ) {
|
Â
|
|
106 |
Â
if ( isset( $args['type'] ) ) {
|
107 |
Â
$str = str_replace( array( '-', '_' ), ' ', $args['type'] );
|
108 |
Â
$classname = 'Kirki_Field_' . str_replace( ' ', '_', ucwords( $str ) );
|
@@ -111,8 +175,9 @@ if ( ! class_exists( 'Kirki' ) ) {
|
|
111 |
Â
return;
|
112 |
Â
}
|
113 |
Â
}
|
Â
|
|
114 |
Â
new Kirki_Field( $config_id, $args );
|
115 |
-
}
|
116 |
Â
|
Â
|
|
117 |
Â
}
|
118 |
Â
}
|
8 |
Â
* @category Core
|
9 |
Â
* @author Aristeides Stathopoulos
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
+
// Exit if accessed directly.
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki' ) ) {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* This class acts as an interface.
|
24 |
+
* Developers may use this object to add configurations, fields, panels and sections.
|
25 |
+
* You can also access all available configurations, fields, panels and sections
|
26 |
+
* by accessing the object's static properties.
|
27 |
+
*/
|
28 |
Â
class Kirki extends Kirki_Init {
|
29 |
Â
|
30 |
+
/**
|
31 |
+
* Absolute path to the Kirki folder.
|
32 |
+
*
|
33 |
+
* @static
|
34 |
+
* @access public
|
35 |
+
* @var string
|
36 |
+
*/
|
37 |
Â
public static $path;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* URL to the Kirki folder.
|
41 |
+
*
|
42 |
+
* @static
|
43 |
+
* @access public
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
Â
public static $url;
|
47 |
Â
|
48 |
+
/**
|
49 |
+
* An array containing all configurations.
|
50 |
+
*
|
51 |
+
* @static
|
52 |
+
* @access public
|
53 |
+
* @var array
|
54 |
+
*/
|
55 |
Â
public static $config = array();
|
56 |
+
|
57 |
+
/**
|
58 |
+
* An array containing all fields.
|
59 |
+
*
|
60 |
+
* @static
|
61 |
+
* @access public
|
62 |
+
* @var array
|
63 |
+
*/
|
64 |
Â
public static $fields = array();
|
65 |
+
|
66 |
+
/**
|
67 |
+
* An array containing all panels.
|
68 |
+
*
|
69 |
+
* @static
|
70 |
+
* @access public
|
71 |
+
* @var array
|
72 |
+
*/
|
73 |
Â
public static $panels = array();
|
74 |
+
|
75 |
+
/**
|
76 |
+
* An array containing all sections.
|
77 |
+
*
|
78 |
+
* @static
|
79 |
+
* @access public
|
80 |
+
* @var array
|
81 |
+
*/
|
82 |
Â
public static $sections = array();
|
83 |
Â
|
84 |
Â
/**
|
85 |
Â
* Get the value of an option from the db.
|
86 |
Â
*
|
87 |
+
* @static
|
88 |
+
* @access public
|
89 |
+
* @param string $config_id The ID of the configuration corresponding to this field.
|
90 |
+
* @param string $field_id The field_id (defined as 'settings' in the field arguments).
|
91 |
+
* @return mixed The saved value of the field.
|
92 |
Â
*/
|
93 |
Â
public static function get_option( $config_id = '', $field_id = '' ) {
|
94 |
+
|
95 |
Â
return Kirki_Values::get_value( $config_id, $field_id );
|
96 |
+
|
97 |
Â
}
|
98 |
Â
|
99 |
Â
/**
|
100 |
Â
* Sets the configuration options.
|
101 |
Â
*
|
102 |
+
* @static
|
103 |
+
* @access public
|
104 |
+
* @param string $config_id The configuration ID.
|
105 |
+
* @param array $args The configuration options.
|
106 |
Â
*/
|
107 |
Â
public static function add_config( $config_id, $args = array() ) {
|
108 |
+
|
109 |
Â
$config = Kirki_Config::get_instance( $config_id, $args );
|
110 |
Â
$config_args = $config->get_config();
|
111 |
Â
self::$config[ $config_args['id'] ] = $config_args;
|
112 |
+
|
113 |
Â
}
|
114 |
Â
|
115 |
Â
/**
|
116 |
+
* Create a new panel.
|
117 |
Â
*
|
118 |
+
* @static
|
119 |
+
* @access public
|
120 |
+
* @param string $id The ID for this panel.
|
121 |
+
* @param array $args The panel arguments.
|
122 |
Â
*/
|
123 |
Â
public static function add_panel( $id = '', $args = array() ) {
|
124 |
Â
|
135 |
Â
}
|
136 |
Â
|
137 |
Â
/**
|
138 |
+
* Create a new section.
|
139 |
Â
*
|
140 |
+
* @static
|
141 |
+
* @access public
|
142 |
+
* @param string $id The ID for this section.
|
143 |
+
* @param array $args The section arguments.
|
144 |
Â
*/
|
145 |
Â
public static function add_section( $id, $args ) {
|
146 |
Â
|
158 |
Â
}
|
159 |
Â
|
160 |
Â
/**
|
161 |
+
* Create a new field.
|
162 |
Â
*
|
163 |
+
* @static
|
164 |
+
* @access public
|
165 |
+
* @param string $config_id The configuration ID for this field.
|
166 |
+
* @param array $args The field arguments.
|
167 |
Â
*/
|
168 |
Â
public static function add_field( $config_id, $args ) {
|
169 |
+
|
170 |
Â
if ( isset( $args['type'] ) ) {
|
171 |
Â
$str = str_replace( array( '-', '_' ), ' ', $args['type'] );
|
172 |
Â
$classname = 'Kirki_Field_' . str_replace( ' ', '_', ucwords( $str ) );
|
175 |
Â
return;
|
176 |
Â
}
|
177 |
Â
}
|
178 |
+
|
179 |
Â
new Kirki_Field( $config_id, $args );
|
Â
|
|
180 |
Â
|
181 |
+
}
|
182 |
Â
}
|
183 |
Â
}
|
includes/controls/class-kirki-controls-checkbox-control.php
CHANGED
@@ -1,35 +1,62 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
-
// Early exit if the class already exists
|
18 |
Â
if ( ! class_exists( 'Kirki_Controls_Checkbox_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Checkbox_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'kirki-checkbox';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function enqueue() {
|
24 |
Â
wp_enqueue_script( 'kirki-checkbox' );
|
25 |
Â
}
|
26 |
Â
|
27 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
<# if ( data.tooltip ) { #>
|
29 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
30 |
Â
<# } #>
|
31 |
Â
<label>
|
32 |
-
|
33 |
Â
{{ data.label }}
|
34 |
Â
<# if ( data.description ) { #>
|
35 |
Â
<span class="description customize-control-description">{{{ data.description }}}</span>
|
@@ -37,6 +64,5 @@ if ( ! class_exists( 'Kirki_Controls_Checkbox_Control' ) ) {
|
|
37 |
Â
</label>
|
38 |
Â
<?php
|
39 |
Â
}
|
40 |
-
|
41 |
Â
}
|
42 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: kirki-checkbox.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
Â
|
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Checkbox_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Creates a checkbox control in the customizer.
|
21 |
+
* This is an almost verbatim copy of WordPress core's implementation
|
22 |
+
* but we converted the template to use Underscore.js, and added the tooltip.
|
23 |
+
*/
|
24 |
Â
class Kirki_Controls_Checkbox_Control extends Kirki_Customize_Control {
|
25 |
Â
|
26 |
+
/**
|
27 |
+
* The control type.
|
28 |
+
*
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
Â
public $type = 'kirki-checkbox';
|
33 |
Â
|
34 |
+
/**
|
35 |
+
* Enqueue control related scripts/styles.
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
Â
public function enqueue() {
|
40 |
Â
wp_enqueue_script( 'kirki-checkbox' );
|
41 |
Â
}
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
45 |
+
*
|
46 |
+
* Class variables for this control class are available in the `data` JS object;
|
47 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
48 |
+
*
|
49 |
+
* @see WP_Customize_Control::print_template()
|
50 |
+
*
|
51 |
+
* @access protected
|
52 |
+
*/
|
53 |
+
protected function content_template() {
|
54 |
+
?>
|
55 |
Â
<# if ( data.tooltip ) { #>
|
56 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
57 |
Â
<# } #>
|
58 |
Â
<label>
|
59 |
+
<input type="checkbox" value="{{ data.value }}" {{{ data.link }}}<# if ( data.value ) { #> checked<# } #> />
|
60 |
Â
{{ data.label }}
|
61 |
Â
<# if ( data.description ) { #>
|
62 |
Â
<span class="description customize-control-description">{{{ data.description }}}</span>
|
64 |
Â
</label>
|
65 |
Â
<?php
|
66 |
Â
}
|
Â
|
|
67 |
Â
}
|
68 |
Â
}
|
includes/controls/class-kirki-controls-code-control.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* Creates a new custom control.
|
6 |
Â
* Custom controls accept raw HTML/JS.
|
@@ -8,21 +8,35 @@
|
|
8 |
Â
* @package Kirki
|
9 |
Â
* @subpackage Controls
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
-
* @license http://opensource.org/licenses/
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
-
// Exit if accessed directly
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Controls_Code_Control' ) ) {
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
class Kirki_Controls_Code_Control extends Kirki_Customize_Control {
|
23 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public $type = 'code';
|
25 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
public function to_json() {
|
27 |
Â
parent::to_json();
|
28 |
Â
if ( ! isset( $this->choices['language'] ) ) {
|
@@ -36,23 +50,28 @@ if ( ! class_exists( 'Kirki_Controls_Code_Control' ) ) {
|
|
36 |
Â
}
|
37 |
Â
}
|
38 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
39 |
Â
public function enqueue() {
|
40 |
Â
|
41 |
Â
wp_enqueue_script( 'kirki-code' );
|
42 |
Â
|
43 |
-
// Get the language
|
44 |
Â
$lang_file = '/assets/js/vendor/codemirror/mode/' . $this->choices['language'] . '/' . $this->choices['language'] . '.js';
|
45 |
Â
$language = 'css';
|
46 |
Â
if ( file_exists( Kirki::$path . $lang_file ) || ! file_exists( Kirki::$path . str_replace( '/', DIRECTORY_SEPARATOR, $lang_file ) ) ) {
|
47 |
Â
$language = $this->choices['language'];
|
48 |
Â
}
|
49 |
Â
|
50 |
-
//
|
51 |
Â
if ( 'html' == $language ) {
|
52 |
Â
$language = 'htmlmixed';
|
53 |
Â
}
|
54 |
Â
|
55 |
-
// Get the theme
|
56 |
Â
$theme_file = '/assets/js/vendor/codemirror/theme/' . $this->choices['theme'] . '.css';
|
57 |
Â
$theme = 'monokai';
|
58 |
Â
if ( file_exists( Kirki::$path . $theme_file ) || file_exists( Kirki::$path . str_replace( '/', DIRECTORY_SEPARATOR, $theme_file ) ) ) {
|
@@ -69,16 +88,27 @@ if ( ! class_exists( 'Kirki_Controls_Code_Control' ) ) {
|
|
69 |
Â
wp_enqueue_script( 'codemirror-language-css', trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/mode/css/css.js', array( 'jquery', 'codemirror' ) );
|
70 |
Â
wp_enqueue_script( 'codemirror-language-htmlmixed', trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/mode/htmlmixed/htmlmixed.js', array( 'jquery', 'codemirror', 'codemirror-multiplex', 'codemirror-language-xml', 'codemirror-language-javascript', 'codemirror-language-css' ) );
|
71 |
Â
} else {
|
72 |
-
// Add language script
|
73 |
Â
wp_enqueue_script( 'codemirror-language-' . $language, trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/mode/' . $language . '/' . $language . '.js', array( 'jquery', 'codemirror' ) );
|
74 |
Â
}
|
75 |
Â
|
76 |
-
// Add theme styles
|
77 |
Â
wp_enqueue_style( 'codemirror-theme-' . $theme, trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/theme/' . $theme . '.css' );
|
78 |
Â
|
79 |
Â
}
|
80 |
Â
|
81 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
82 |
Â
<# if ( data.tooltip ) { #>
|
83 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
84 |
Â
<# } #>
|
@@ -93,6 +123,5 @@ if ( ! class_exists( 'Kirki_Controls_Code_Control' ) ) {
|
|
93 |
Â
</label>
|
94 |
Â
<?php
|
95 |
Â
}
|
96 |
-
|
97 |
Â
}
|
98 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: code.
|
4 |
Â
*
|
5 |
Â
* Creates a new custom control.
|
6 |
Â
* Custom controls accept raw HTML/JS.
|
8 |
Â
* @package Kirki
|
9 |
Â
* @subpackage Controls
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
+
// Exit if accessed directly.
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Controls_Code_Control' ) ) {
|
21 |
Â
|
22 |
+
/**
|
23 |
+
* Adds a "code" control, using CodeMirror.
|
24 |
+
*/
|
25 |
Â
class Kirki_Controls_Code_Control extends Kirki_Customize_Control {
|
26 |
Â
|
27 |
+
/**
|
28 |
+
* The control type.
|
29 |
+
*
|
30 |
+
* @access public
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
Â
public $type = 'code';
|
34 |
Â
|
35 |
+
/**
|
36 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
37 |
+
*
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
Â
public function to_json() {
|
41 |
Â
parent::to_json();
|
42 |
Â
if ( ! isset( $this->choices['language'] ) ) {
|
50 |
Â
}
|
51 |
Â
}
|
52 |
Â
|
53 |
+
/**
|
54 |
+
* Enqueue control related scripts/styles.
|
55 |
+
*
|
56 |
+
* @access public
|
57 |
+
*/
|
58 |
Â
public function enqueue() {
|
59 |
Â
|
60 |
Â
wp_enqueue_script( 'kirki-code' );
|
61 |
Â
|
62 |
+
// Get the language.
|
63 |
Â
$lang_file = '/assets/js/vendor/codemirror/mode/' . $this->choices['language'] . '/' . $this->choices['language'] . '.js';
|
64 |
Â
$language = 'css';
|
65 |
Â
if ( file_exists( Kirki::$path . $lang_file ) || ! file_exists( Kirki::$path . str_replace( '/', DIRECTORY_SEPARATOR, $lang_file ) ) ) {
|
66 |
Â
$language = $this->choices['language'];
|
67 |
Â
}
|
68 |
Â
|
69 |
+
// Hack for 'html' mode.
|
70 |
Â
if ( 'html' == $language ) {
|
71 |
Â
$language = 'htmlmixed';
|
72 |
Â
}
|
73 |
Â
|
74 |
+
// Get the theme.
|
75 |
Â
$theme_file = '/assets/js/vendor/codemirror/theme/' . $this->choices['theme'] . '.css';
|
76 |
Â
$theme = 'monokai';
|
77 |
Â
if ( file_exists( Kirki::$path . $theme_file ) || file_exists( Kirki::$path . str_replace( '/', DIRECTORY_SEPARATOR, $theme_file ) ) ) {
|
88 |
Â
wp_enqueue_script( 'codemirror-language-css', trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/mode/css/css.js', array( 'jquery', 'codemirror' ) );
|
89 |
Â
wp_enqueue_script( 'codemirror-language-htmlmixed', trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/mode/htmlmixed/htmlmixed.js', array( 'jquery', 'codemirror', 'codemirror-multiplex', 'codemirror-language-xml', 'codemirror-language-javascript', 'codemirror-language-css' ) );
|
90 |
Â
} else {
|
91 |
+
// Add language script.
|
92 |
Â
wp_enqueue_script( 'codemirror-language-' . $language, trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/mode/' . $language . '/' . $language . '.js', array( 'jquery', 'codemirror' ) );
|
93 |
Â
}
|
94 |
Â
|
95 |
+
// Add theme styles.
|
96 |
Â
wp_enqueue_style( 'codemirror-theme-' . $theme, trailingslashit( Kirki::$url ) . 'assets/js/vendor/codemirror/theme/' . $theme . '.css' );
|
97 |
Â
|
98 |
Â
}
|
99 |
Â
|
100 |
+
/**
|
101 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
102 |
+
*
|
103 |
+
* Class variables for this control class are available in the `data` JS object;
|
104 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
105 |
+
*
|
106 |
+
* @see WP_Customize_Control::print_template()
|
107 |
+
*
|
108 |
+
* @access protected
|
109 |
+
*/
|
110 |
+
protected function content_template() {
|
111 |
+
?>
|
112 |
Â
<# if ( data.tooltip ) { #>
|
113 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
114 |
Â
<# } #>
|
123 |
Â
</label>
|
124 |
Â
<?php
|
125 |
Â
}
|
Â
|
|
126 |
Â
}
|
127 |
Â
}
|
includes/controls/class-kirki-controls-color-alpha-control.php
CHANGED
@@ -1,50 +1,77 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
* color-alpha
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Color_Alpha_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Color_Alpha_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'color-alpha';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $palette = true;
|
24 |
Â
|
25 |
-
public $default = '#FFFFFF';
|
26 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public function to_json() {
|
28 |
Â
parent::to_json();
|
29 |
Â
$this->json['palette'] = $this->palette;
|
30 |
Â
$this->choices['alpha'] = ( isset( $this->choices['alpha'] ) && $this->choices['alpha'] ) ? 'true' : 'false';
|
31 |
Â
}
|
32 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
public function enqueue() {
|
34 |
Â
wp_enqueue_script( 'kirki-color-alpha' );
|
35 |
Â
}
|
36 |
Â
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
Â
|
|
48 |
Â
<# if ( data.tooltip ) { #>
|
49 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
50 |
Â
<# } #>
|
@@ -59,7 +86,5 @@ if ( ! class_exists( 'Kirki_Controls_Color_Alpha_Control' ) ) {
|
|
59 |
Â
</label>
|
60 |
Â
<?php
|
61 |
Â
}
|
62 |
-
|
63 |
Â
}
|
64 |
-
|
65 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: color-alpha.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Color_Alpha_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Adds a color & color-alpha control
|
21 |
+
*
|
22 |
+
* @see https://github.com/23r9i0/wp-color-picker-alpha
|
23 |
+
*/
|
24 |
Â
class Kirki_Controls_Color_Alpha_Control extends Kirki_Customize_Control {
|
25 |
Â
|
26 |
+
/**
|
27 |
+
* The control type.
|
28 |
+
*
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
Â
public $type = 'color-alpha';
|
33 |
Â
|
34 |
+
/**
|
35 |
+
* Colorpicker palette
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
* @var bool
|
39 |
+
*/
|
40 |
Â
public $palette = true;
|
41 |
Â
|
Â
|
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
45 |
+
*
|
46 |
+
* @access public
|
47 |
+
*/
|
48 |
Â
public function to_json() {
|
49 |
Â
parent::to_json();
|
50 |
Â
$this->json['palette'] = $this->palette;
|
51 |
Â
$this->choices['alpha'] = ( isset( $this->choices['alpha'] ) && $this->choices['alpha'] ) ? 'true' : 'false';
|
52 |
Â
}
|
53 |
Â
|
54 |
+
/**
|
55 |
+
* Enqueue control related scripts/styles.
|
56 |
+
*
|
57 |
+
* @access public
|
58 |
+
*/
|
59 |
Â
public function enqueue() {
|
60 |
Â
wp_enqueue_script( 'kirki-color-alpha' );
|
61 |
Â
}
|
62 |
Â
|
63 |
+
/**
|
64 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
65 |
+
*
|
66 |
+
* Class variables for this control class are available in the `data` JS object;
|
67 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
68 |
+
*
|
69 |
+
* @see WP_Customize_Control::print_template()
|
70 |
+
*
|
71 |
+
* @access protected
|
72 |
+
*/
|
73 |
+
protected function content_template() {
|
74 |
+
?>
|
75 |
Â
<# if ( data.tooltip ) { #>
|
76 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
77 |
Â
<# } #>
|
86 |
Â
</label>
|
87 |
Â
<?php
|
88 |
Â
}
|
Â
|
|
89 |
Â
}
|
Â
|
|
90 |
Â
}
|
includes/controls/class-kirki-controls-color-palette-control.php
CHANGED
@@ -1,32 +1,52 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Color_Palette_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Color_Palette_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'color-palette';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function enqueue() {
|
24 |
Â
wp_enqueue_script( 'kirki-color-palette' );
|
25 |
Â
}
|
26 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public function to_json() {
|
28 |
Â
parent::to_json();
|
29 |
-
// If no palette has been defined, use Material Design Palette
|
30 |
Â
if ( ! isset( $this->json['choices']['colors'] ) || empty( $this->json['choices']['colors'] ) ) {
|
31 |
Â
$this->json['choices']['colors'] = Kirki_Helper::get_material_design_colors( 'primary' );
|
32 |
Â
}
|
@@ -35,7 +55,18 @@ if ( ! class_exists( 'Kirki_Controls_Color_Palette_Control' ) ) {
|
|
35 |
Â
}
|
36 |
Â
}
|
37 |
Â
|
38 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
39 |
Â
<# if ( data.tooltip ) { #>
|
40 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
41 |
Â
<# } #>
|
@@ -57,7 +88,5 @@ if ( ! class_exists( 'Kirki_Controls_Color_Palette_Control' ) ) {
|
|
57 |
Â
</div>
|
58 |
Â
<?php
|
59 |
Â
}
|
60 |
-
|
61 |
Â
}
|
62 |
-
|
63 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: color-palette.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.6
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Color_Palette_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Adds a color-palette control.
|
21 |
+
* This is essentially a radio control, styled as a palette.
|
22 |
+
*/
|
23 |
Â
class Kirki_Controls_Color_Palette_Control extends Kirki_Customize_Control {
|
24 |
Â
|
25 |
+
/**
|
26 |
+
* The control type.
|
27 |
+
*
|
28 |
+
* @access public
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
Â
public $type = 'color-palette';
|
32 |
Â
|
33 |
+
/**
|
34 |
+
* Enqueue control related scripts/styles.
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
*/
|
38 |
Â
public function enqueue() {
|
39 |
Â
wp_enqueue_script( 'kirki-color-palette' );
|
40 |
Â
}
|
41 |
Â
|
42 |
+
/**
|
43 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
44 |
+
*
|
45 |
+
* @access public
|
46 |
+
*/
|
47 |
Â
public function to_json() {
|
48 |
Â
parent::to_json();
|
49 |
+
// If no palette has been defined, use Material Design Palette.
|
50 |
Â
if ( ! isset( $this->json['choices']['colors'] ) || empty( $this->json['choices']['colors'] ) ) {
|
51 |
Â
$this->json['choices']['colors'] = Kirki_Helper::get_material_design_colors( 'primary' );
|
52 |
Â
}
|
55 |
Â
}
|
56 |
Â
}
|
57 |
Â
|
58 |
+
/**
|
59 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
60 |
+
*
|
61 |
+
* Class variables for this control class are available in the `data` JS object;
|
62 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
63 |
+
*
|
64 |
+
* @see WP_Customize_Control::print_template()
|
65 |
+
*
|
66 |
+
* @access protected
|
67 |
+
*/
|
68 |
+
protected function content_template() {
|
69 |
+
?>
|
70 |
Â
<# if ( data.tooltip ) { #>
|
71 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
72 |
Â
<# } #>
|
88 |
Â
</div>
|
89 |
Â
<?php
|
90 |
Â
}
|
Â
|
|
91 |
Â
}
|
Â
|
|
92 |
Â
}
|
includes/controls/class-kirki-controls-custom-control.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* Creates a new custom control.
|
6 |
Â
* Custom controls accept raw HTML/JS.
|
@@ -8,21 +8,42 @@
|
|
8 |
Â
* @package Kirki
|
9 |
Â
* @subpackage Controls
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
-
* @license http://opensource.org/licenses/
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
-
// Exit if accessed directly
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Controls_Custom_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
class Kirki_Controls_Custom_Control extends Kirki_Customize_Control {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $type = 'custom';
|
24 |
Â
|
25 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
<# if ( data.tooltip ) { #>
|
27 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
28 |
Â
<# } #>
|
@@ -47,6 +68,5 @@ if ( ! class_exists( 'Kirki_Controls_Custom_Control' ) ) {
|
|
47 |
Â
<?php
|
48 |
Â
|
49 |
Â
}
|
50 |
-
|
51 |
Â
}
|
52 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: custom.
|
4 |
Â
*
|
5 |
Â
* Creates a new custom control.
|
6 |
Â
* Custom controls accept raw HTML/JS.
|
8 |
Â
* @package Kirki
|
9 |
Â
* @subpackage Controls
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
+
// Exit if accessed directly.
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Controls_Custom_Control' ) ) {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* The "custom" control allows you to add any raw HTML.
|
24 |
+
*/
|
25 |
Â
class Kirki_Controls_Custom_Control extends Kirki_Customize_Control {
|
26 |
Â
|
27 |
+
/**
|
28 |
+
* The control type.
|
29 |
+
*
|
30 |
+
* @access public
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
Â
public $type = 'custom';
|
34 |
Â
|
35 |
+
/**
|
36 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
37 |
+
*
|
38 |
+
* Class variables for this control class are available in the `data` JS object;
|
39 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
40 |
+
*
|
41 |
+
* @see WP_Customize_Control::print_template()
|
42 |
+
*
|
43 |
+
* @access protected
|
44 |
+
*/
|
45 |
+
protected function content_template() {
|
46 |
+
?>
|
47 |
Â
<# if ( data.tooltip ) { #>
|
48 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
49 |
Â
<# } #>
|
68 |
Â
<?php
|
69 |
Â
|
70 |
Â
}
|
Â
|
|
71 |
Â
}
|
72 |
Â
}
|
includes/controls/class-kirki-controls-dashicons-control.php
CHANGED
@@ -1,35 +1,65 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 2.2.4
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Dashicons_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Dashicons_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'dashicons';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function to_json() {
|
24 |
Â
parent::to_json();
|
25 |
Â
$this->json['icons'] = Kirki_Helper::get_dashicons();
|
26 |
Â
}
|
27 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public function enqueue() {
|
29 |
Â
wp_enqueue_script( 'kirki-dashicons' );
|
30 |
Â
}
|
31 |
Â
|
32 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
<# if ( data.tooltip ) { #>
|
34 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
35 |
Â
<# } #>
|
@@ -163,7 +193,5 @@ if ( ! class_exists( 'Kirki_Controls_Dashicons_Control' ) ) {
|
|
163 |
Â
</div>
|
164 |
Â
<?php
|
165 |
Â
}
|
166 |
-
|
167 |
Â
}
|
168 |
-
|
169 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: dashicons.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 2.2.4
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Dashicons_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Dashicons control (modified radio).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Dashicons_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'dashicons';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function to_json() {
|
38 |
Â
parent::to_json();
|
39 |
Â
$this->json['icons'] = Kirki_Helper::get_dashicons();
|
40 |
Â
}
|
41 |
Â
|
42 |
+
/**
|
43 |
+
* Enqueue control related scripts/styles.
|
44 |
+
*
|
45 |
+
* @access public
|
46 |
+
*/
|
47 |
Â
public function enqueue() {
|
48 |
Â
wp_enqueue_script( 'kirki-dashicons' );
|
49 |
Â
}
|
50 |
Â
|
51 |
+
/**
|
52 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
53 |
+
*
|
54 |
+
* Class variables for this control class are available in the `data` JS object;
|
55 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
56 |
+
*
|
57 |
+
* @see WP_Customize_Control::print_template()
|
58 |
+
*
|
59 |
+
* @access protected
|
60 |
+
*/
|
61 |
+
protected function content_template() {
|
62 |
+
?>
|
63 |
Â
<# if ( data.tooltip ) { #>
|
64 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
65 |
Â
<# } #>
|
193 |
Â
</div>
|
194 |
Â
<?php
|
195 |
Â
}
|
Â
|
|
196 |
Â
}
|
Â
|
|
197 |
Â
}
|
includes/controls/class-kirki-controls-date-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since 2.
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Date_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Date_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'kirki-date';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-dashicons' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
@@ -40,6 +66,5 @@ if ( ! class_exists( 'Kirki_Controls_Date_Control' ) ) {
|
|
40 |
Â
</label>
|
41 |
Â
<?php
|
42 |
Â
}
|
43 |
-
|
44 |
Â
}
|
45 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: kirki-date.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Date_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* A simple date control, using jQuery UI.
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Date_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'kirki-date';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-dashicons' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
66 |
Â
</label>
|
67 |
Â
<?php
|
68 |
Â
}
|
Â
|
|
69 |
Â
}
|
70 |
Â
}
|
includes/controls/class-kirki-controls-dimension-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Dimension_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Dimension_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'dimension';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-dimension' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
@@ -41,6 +67,5 @@ if ( ! class_exists( 'Kirki_Controls_Dimension_Control' ) ) {
|
|
41 |
Â
</label>
|
42 |
Â
<?php
|
43 |
Â
}
|
44 |
-
|
45 |
Â
}
|
46 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: dimension
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Dimension_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* A text control with validation for CSS units.
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Dimension_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'dimension';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-dimension' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
67 |
Â
</label>
|
68 |
Â
<?php
|
69 |
Â
}
|
Â
|
|
70 |
Â
}
|
71 |
Â
}
|
includes/controls/class-kirki-controls-dropdown-pages-control.php
CHANGED
@@ -1,62 +1,94 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 2.2.8
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Dropdown_Pages_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Dropdown_Pages_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'dropdown-pages';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function enqueue() {
|
24 |
Â
wp_enqueue_script( 'kirki-dropdown-pages' );
|
25 |
Â
}
|
26 |
Â
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
31 |
Â
<label>
|
32 |
-
|
33 |
-
<span class="customize-control-title"
|
34 |
-
|
35 |
-
if (
|
36 |
-
<span class="description customize-control-description"
|
37 |
-
|
38 |
-
|
39 |
-
<?php
|
40 |
-
$l10n = Kirki_l10n::get_strings();
|
41 |
-
$dropdown = wp_dropdown_pages(
|
42 |
-
array(
|
43 |
-
'name' => '_customize-dropdown-pages-' . $this->id,
|
44 |
-
'echo' => 0,
|
45 |
-
'show_option_none' => $l10n['select-page'],
|
46 |
-
'option_none_value' => '0',
|
47 |
-
'selected' => $this->value(),
|
48 |
-
)
|
49 |
-
);
|
50 |
-
|
51 |
-
// Hackily add in the data link parameter.
|
52 |
-
$dropdown = str_replace( '<select', '<select ' . $this->get_link(), $dropdown );
|
53 |
-
echo $dropdown;
|
54 |
-
?>
|
55 |
Â
</label>
|
56 |
Â
<?php
|
57 |
-
|
58 |
Â
}
|
59 |
-
|
60 |
Â
}
|
61 |
-
|
62 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: dropdown-pages.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 2.2.8
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Dropdown_Pages_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* A copy of WordPress core's "dropdown-pages" control.
|
21 |
+
* The template has been converted to use Underscore.js
|
22 |
+
* and we added a tooltip.
|
23 |
+
*/
|
24 |
Â
class Kirki_Controls_Dropdown_Pages_Control extends Kirki_Customize_Control {
|
25 |
Â
|
26 |
+
/**
|
27 |
+
* The control type.
|
28 |
+
*
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
Â
public $type = 'dropdown-pages';
|
33 |
Â
|
34 |
+
/**
|
35 |
+
* Enqueue control related scripts/styles.
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
Â
public function enqueue() {
|
40 |
Â
wp_enqueue_script( 'kirki-dropdown-pages' );
|
41 |
Â
}
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
45 |
+
*
|
46 |
+
* @access public
|
47 |
+
*/
|
48 |
+
public function to_json() {
|
49 |
+
parent::to_json();
|
50 |
+
$l10n = Kirki_l10n::get_strings();
|
51 |
+
$dropdown = wp_dropdown_pages(
|
52 |
+
array(
|
53 |
+
'name' => '_customize-dropdown-pages-' . esc_attr( $this->id ),
|
54 |
+
'echo' => 0,
|
55 |
+
'show_option_none' => esc_attr( $l10n['select-page'] ),
|
56 |
+
'option_none_value' => '0',
|
57 |
+
'selected' => esc_attr( $this->value() ),
|
58 |
+
)
|
59 |
+
);
|
60 |
+
|
61 |
+
// Hackily add in the data link parameter.
|
62 |
+
$dropdown = str_replace( '<select', '<select ' . $this->get_link(), $dropdown );
|
63 |
+
|
64 |
+
$this->json['dropdown'] = $dropdown;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
69 |
+
*
|
70 |
+
* Class variables for this control class are available in the `data` JS object;
|
71 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
72 |
+
*
|
73 |
+
* @see WP_Customize_Control::print_template()
|
74 |
+
*
|
75 |
+
* @access protected
|
76 |
+
*/
|
77 |
+
protected function content_template() {
|
78 |
+
?>
|
79 |
+
<# if ( data.tooltip ) { #>
|
80 |
+
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
81 |
+
<# } #>
|
82 |
Â
<label>
|
83 |
+
<# if ( data.label ) { #>
|
84 |
+
<span class="customize-control-title">{{{ data.label }}}</span>
|
85 |
+
<# } #>
|
86 |
+
<# if ( data.description ) { #>
|
87 |
+
<span class="description customize-control-description">{{{ data.description }}}</span>
|
88 |
+
<# } #>
|
89 |
+
<div class="customize-control-content">{{{ data.dropdown }}}</div>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
90 |
Â
</label>
|
91 |
Â
<?php
|
Â
|
|
92 |
Â
}
|
Â
|
|
93 |
Â
}
|
Â
|
|
94 |
Â
}
|
includes/controls/class-kirki-controls-editor-control.php
CHANGED
@@ -1,31 +1,53 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* Creates a TinyMCE textarea.
|
6 |
Â
*
|
7 |
Â
* @package Kirki
|
8 |
Â
* @subpackage Controls
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
-
* @license http://opensource.org/licenses/
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
-
// Exit if accessed directly
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Controls_Editor_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
class Kirki_Controls_Editor_Control extends Kirki_Customize_Control {
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public $type = 'editor';
|
23 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public function enqueue() {
|
25 |
Â
wp_enqueue_script( 'kirki-editor' );
|
26 |
Â
}
|
27 |
Â
|
28 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
29 |
Â
<?php if ( '' != $this->tooltip ) : ?>
|
30 |
Â
<a href="#" class="tooltip hint--left" data-hint="<?php echo esc_html( $this->tooltip ); ?>"><span class='dashicons dashicons-info'></span></a>
|
31 |
Â
<?php endif; ?>
|
@@ -34,30 +56,31 @@ if ( ! class_exists( 'Kirki_Controls_Editor_Control' ) ) {
|
|
34 |
Â
<span class="customize-control-title">
|
35 |
Â
<?php echo esc_html( $this->label ); ?>
|
36 |
Â
</span>
|
37 |
-
<?php if ( ! empty( $this->description ) ) : ?>
|
38 |
-
<span class="description customize-control-description"><?php echo $this->description; ?></span>
|
39 |
-
<?php endif; ?>
|
40 |
-
<?php
|
41 |
-
$settings = array(
|
42 |
-
'textarea_name' => $this->id,
|
43 |
-
'teeny' => true,
|
44 |
-
);
|
45 |
-
add_filter( 'the_editor', array( $this, 'filter_editor_setting_link' ) );
|
46 |
-
wp_editor( html_entity_decode( wp_kses_post( $this->value() ) ), $this->id, $settings );
|
47 |
-
|
48 |
-
do_action( 'admin_footer' );
|
49 |
-
do_action( 'admin_print_footer_scripts' );
|
50 |
-
?>
|
51 |
Â
</label>
|
Â
|
|
Â
|
|
Â
|
|
52 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
53 |
Â
}
|
54 |
Â
|
55 |
Â
/**
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
56 |
Â
* @return string
|
57 |
Â
*/
|
58 |
Â
public function filter_editor_setting_link( $output ) {
|
59 |
Â
return preg_replace( '/<textarea/', '<textarea ' . $this->get_link(), $output, 1 );
|
60 |
Â
}
|
61 |
-
|
62 |
Â
}
|
63 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: editor.
|
4 |
Â
*
|
5 |
Â
* Creates a TinyMCE textarea.
|
6 |
Â
*
|
7 |
Â
* @package Kirki
|
8 |
Â
* @subpackage Controls
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Controls_Editor_Control' ) ) {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* A TinyMCE control.
|
23 |
+
*/
|
24 |
Â
class Kirki_Controls_Editor_Control extends Kirki_Customize_Control {
|
25 |
Â
|
26 |
+
/**
|
27 |
+
* The control type.
|
28 |
+
*
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
Â
public $type = 'editor';
|
33 |
Â
|
34 |
+
/**
|
35 |
+
* Enqueue control related scripts/styles.
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
Â
public function enqueue() {
|
40 |
Â
wp_enqueue_script( 'kirki-editor' );
|
41 |
Â
}
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* Render the control's content.
|
45 |
+
* Allows the content to be overriden without having to rewrite the wrapper in $this->render().
|
46 |
+
*
|
47 |
+
* @access protected
|
48 |
+
*/
|
49 |
+
protected function render_content() {
|
50 |
+
?>
|
51 |
Â
<?php if ( '' != $this->tooltip ) : ?>
|
52 |
Â
<a href="#" class="tooltip hint--left" data-hint="<?php echo esc_html( $this->tooltip ); ?>"><span class='dashicons dashicons-info'></span></a>
|
53 |
Â
<?php endif; ?>
|
56 |
Â
<span class="customize-control-title">
|
57 |
Â
<?php echo esc_html( $this->label ); ?>
|
58 |
Â
</span>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
59 |
Â
</label>
|
60 |
+
<?php if ( ! empty( $this->description ) ) : ?>
|
61 |
+
<span class="description customize-control-description"><?php echo wp_kses_post( $this->description ); ?></span>
|
62 |
+
<?php endif; ?>
|
63 |
Â
<?php
|
64 |
+
$settings = array(
|
65 |
+
'textarea_name' => $this->id,
|
66 |
+
'teeny' => true,
|
67 |
+
);
|
68 |
+
add_filter( 'the_editor', array( $this, 'filter_editor_setting_link' ) );
|
69 |
+
wp_editor( html_entity_decode( wp_kses_post( $this->value() ) ), $this->id, $settings );
|
70 |
+
|
71 |
+
do_action( 'admin_footer' );
|
72 |
+
do_action( 'admin_print_footer_scripts' );
|
73 |
Â
}
|
74 |
Â
|
75 |
Â
/**
|
76 |
+
* Used to add a unique ID to the textarea
|
77 |
+
*
|
78 |
+
* @access public
|
79 |
+
* @param string $output Used to filter the textarea and add the link.
|
80 |
Â
* @return string
|
81 |
Â
*/
|
82 |
Â
public function filter_editor_setting_link( $output ) {
|
83 |
Â
return preg_replace( '/<textarea/', '<textarea ' . $this->get_link(), $output, 1 );
|
84 |
Â
}
|
Â
|
|
85 |
Â
}
|
86 |
Â
}
|
includes/controls/class-kirki-controls-generic-control.php
CHANGED
@@ -1,29 +1,56 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Generic_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Generic_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'kirki-generic';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-generic' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
@@ -38,13 +65,22 @@ if ( ! class_exists( 'Kirki_Controls_Generic_Control' ) ) {
|
|
38 |
Â
<# if ( 'textarea' == data.choices['element'] ) { #>
|
39 |
Â
<textarea {{{ data.link }}} <# for ( key in data.choices ) { #> {{ key }}="{{ data.choices[ key ] }}"<# } #>>{{ data.value }}</textarea>
|
40 |
Â
<# } else { #>
|
41 |
-
<# var element = ( data.choices
|
42 |
-
<{{ element }}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
43 |
Â
<# } #>
|
44 |
Â
</div>
|
45 |
Â
</label>
|
46 |
Â
<?php
|
47 |
Â
}
|
48 |
-
|
49 |
Â
}
|
50 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: kirki-generic.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Generic_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* A generic and pretty abstract control.
|
21 |
+
* Allows for great manipulation using the field's "choices" argumnent.
|
22 |
+
*/
|
23 |
Â
class Kirki_Controls_Generic_Control extends Kirki_Customize_Control {
|
24 |
Â
|
25 |
+
/**
|
26 |
+
* The control type.
|
27 |
+
*
|
28 |
+
* @access public
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
Â
public $type = 'kirki-generic';
|
32 |
Â
|
33 |
+
/**
|
34 |
+
* Enqueue control related scripts/styles.
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
*/
|
38 |
Â
public function enqueue() {
|
39 |
Â
wp_enqueue_script( 'kirki-generic' );
|
40 |
Â
}
|
41 |
Â
|
42 |
+
/**
|
43 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
44 |
+
*
|
45 |
+
* Class variables for this control class are available in the `data` JS object;
|
46 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
47 |
+
*
|
48 |
+
* @see WP_Customize_Control::print_template()
|
49 |
+
*
|
50 |
+
* @access protected
|
51 |
+
*/
|
52 |
+
protected function content_template() {
|
53 |
+
?>
|
54 |
Â
<# if ( data.tooltip ) { #>
|
55 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
56 |
Â
<# } #>
|
65 |
Â
<# if ( 'textarea' == data.choices['element'] ) { #>
|
66 |
Â
<textarea {{{ data.link }}} <# for ( key in data.choices ) { #> {{ key }}="{{ data.choices[ key ] }}"<# } #>>{{ data.value }}</textarea>
|
67 |
Â
<# } else { #>
|
68 |
+
<# var element = ( data.choices.element ) ? data.choices.element : 'input'; #>
|
69 |
+
<{{ element }}
|
70 |
+
value="{{ data.value }}"
|
71 |
+
{{{ data.link }}}
|
72 |
+
<# for ( key in data.choices ) { #>
|
73 |
+
{{ key }}="{{ data.choices[ key ] }}"
|
74 |
+
<# } #>
|
75 |
+
<# if ( data.choices.content ) { #>
|
76 |
+
>{{{ data.choices.content }}}</{{ element }}>
|
77 |
+
<# } else { #>
|
78 |
+
/>
|
79 |
+
<# } #>
|
80 |
Â
<# } #>
|
81 |
Â
</div>
|
82 |
Â
</label>
|
83 |
Â
<?php
|
84 |
Â
}
|
Â
|
|
85 |
Â
}
|
86 |
Â
}
|
includes/controls/class-kirki-controls-multicheck-control.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* Multiple checkbox customize control class.
|
6 |
Â
* Props @ Justin Tadlock: http://justintadlock.com/archives/2015/05/26/multiple-checkbox-customizer-control
|
@@ -8,26 +8,51 @@
|
|
8 |
Â
* @package Kirki
|
9 |
Â
* @subpackage Controls
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
-
* @license http://opensource.org/licenses/
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
-
// Exit if accessed directly
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Controls_MultiCheck_Control' ) ) {
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
class Kirki_Controls_MultiCheck_Control extends Kirki_Customize_Control {
|
23 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public $type = 'multicheck';
|
25 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
public function enqueue() {
|
27 |
Â
wp_enqueue_script( 'kirki-multicheck' );
|
28 |
Â
}
|
29 |
Â
|
30 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
31 |
Â
|
32 |
Â
<# if ( ! data.choices ) { return; } #>
|
33 |
Â
|
@@ -53,8 +78,7 @@ if ( ! class_exists( 'Kirki_Controls_MultiCheck_Control' ) ) {
|
|
53 |
Â
</li>
|
54 |
Â
<# } #>
|
55 |
Â
</ul>
|
56 |
-
|
57 |
-
|
58 |
Â
}
|
59 |
-
|
60 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: multicheck.
|
4 |
Â
*
|
5 |
Â
* Multiple checkbox customize control class.
|
6 |
Â
* Props @ Justin Tadlock: http://justintadlock.com/archives/2015/05/26/multiple-checkbox-customizer-control
|
8 |
Â
* @package Kirki
|
9 |
Â
* @subpackage Controls
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
+
// Exit if accessed directly.
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Controls_MultiCheck_Control' ) ) {
|
21 |
Â
|
22 |
+
/**
|
23 |
+
* Adds a multicheck control.
|
24 |
+
*/
|
25 |
Â
class Kirki_Controls_MultiCheck_Control extends Kirki_Customize_Control {
|
26 |
Â
|
27 |
+
/**
|
28 |
+
* The control type.
|
29 |
+
*
|
30 |
+
* @access public
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
Â
public $type = 'multicheck';
|
34 |
Â
|
35 |
+
/**
|
36 |
+
* Enqueue control related scripts/styles.
|
37 |
+
*
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
Â
public function enqueue() {
|
41 |
Â
wp_enqueue_script( 'kirki-multicheck' );
|
42 |
Â
}
|
43 |
Â
|
44 |
+
/**
|
45 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
46 |
+
*
|
47 |
+
* Class variables for this control class are available in the `data` JS object;
|
48 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
49 |
+
*
|
50 |
+
* @see WP_Customize_Control::print_template()
|
51 |
+
*
|
52 |
+
* @access protected
|
53 |
+
*/
|
54 |
+
protected function content_template() {
|
55 |
+
?>
|
56 |
Â
|
57 |
Â
<# if ( ! data.choices ) { return; } #>
|
58 |
Â
|
78 |
Â
</li>
|
79 |
Â
<# } #>
|
80 |
Â
</ul>
|
81 |
+
<?php
|
82 |
+
}
|
83 |
Â
}
|
Â
|
|
84 |
Â
}
|
includes/controls/class-kirki-controls-multicolor-control.php
CHANGED
@@ -1,49 +1,73 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Multicolor_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Multicolor_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'multicolor';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $palette = true;
|
24 |
Â
|
25 |
-
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public function to_json() {
|
28 |
Â
parent::to_json();
|
29 |
Â
$this->json['palette'] = $this->palette;
|
30 |
Â
}
|
31 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
32 |
Â
public function enqueue() {
|
33 |
Â
wp_enqueue_script( 'kirki-multicolor' );
|
34 |
Â
}
|
35 |
Â
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
Â
|
|
47 |
Â
<# if ( data.tooltip ) { #>
|
48 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
49 |
Â
<# } #>
|
@@ -67,7 +91,5 @@ if ( ! class_exists( 'Kirki_Controls_Multicolor_Control' ) ) {
|
|
67 |
Â
<input type="hidden" value="" {{{ data.link }}} />
|
68 |
Â
<?php
|
69 |
Â
}
|
70 |
-
|
71 |
Â
}
|
72 |
-
|
73 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: multicolor.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Multicolor_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Multicolor control.
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Multicolor_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'multicolor';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Color Palette.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
* @var bool
|
37 |
+
*/
|
38 |
Â
public $palette = true;
|
39 |
Â
|
40 |
+
/**
|
41 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
42 |
+
*
|
43 |
+
* @access public
|
44 |
+
*/
|
45 |
Â
public function to_json() {
|
46 |
Â
parent::to_json();
|
47 |
Â
$this->json['palette'] = $this->palette;
|
48 |
Â
}
|
49 |
Â
|
50 |
+
/**
|
51 |
+
* Enqueue control related scripts/styles.
|
52 |
+
*
|
53 |
+
* @access public
|
54 |
+
*/
|
55 |
Â
public function enqueue() {
|
56 |
Â
wp_enqueue_script( 'kirki-multicolor' );
|
57 |
Â
}
|
58 |
Â
|
59 |
+
/**
|
60 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
61 |
+
*
|
62 |
+
* Class variables for this control class are available in the `data` JS object;
|
63 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
64 |
+
*
|
65 |
+
* @see WP_Customize_Control::print_template()
|
66 |
+
*
|
67 |
+
* @access protected
|
68 |
+
*/
|
69 |
+
protected function content_template() {
|
70 |
+
?>
|
71 |
Â
<# if ( data.tooltip ) { #>
|
72 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
73 |
Â
<# } #>
|
91 |
Â
<input type="hidden" value="" {{{ data.link }}} />
|
92 |
Â
<?php
|
93 |
Â
}
|
Â
|
|
94 |
Â
}
|
Â
|
|
95 |
Â
}
|
includes/controls/class-kirki-controls-number-control.php
CHANGED
@@ -1,32 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2015, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Number_Control' ) ) {
|
Â
|
|
18 |
Â
/**
|
19 |
Â
* Create a simple number control
|
20 |
Â
*/
|
21 |
Â
class Kirki_Controls_Number_Control extends Kirki_Customize_Control {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $type = 'number';
|
24 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public function enqueue() {
|
26 |
Â
wp_enqueue_script( 'kirki-number' );
|
27 |
Â
}
|
28 |
Â
|
29 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
<# if ( data.tooltip ) { #>
|
31 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
32 |
Â
<# } #>
|
@@ -43,6 +66,5 @@ if ( ! class_exists( 'Kirki_Controls_Number_Control' ) ) {
|
|
43 |
Â
</label>
|
44 |
Â
<?php
|
45 |
Â
}
|
46 |
-
|
47 |
Â
}
|
48 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: number.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2015, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Number_Control' ) ) {
|
18 |
+
|
19 |
Â
/**
|
20 |
Â
* Create a simple number control
|
21 |
Â
*/
|
22 |
Â
class Kirki_Controls_Number_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'number';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-number' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
66 |
Â
</label>
|
67 |
Â
<?php
|
68 |
Â
}
|
Â
|
|
69 |
Â
}
|
70 |
Â
}
|
includes/controls/class-kirki-controls-palette-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Palette_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Palette_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'palette';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-palette' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: palette.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Palette_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Palette control (modified radio).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Palette_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'palette';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-palette' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
includes/controls/class-kirki-controls-preset-control.php
CHANGED
@@ -1,32 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Preset_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Preset_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'preset';
|
21 |
Â
|
22 |
-
|
23 |
-
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public function enqueue() {
|
25 |
Â
wp_enqueue_script( 'kirki-preset' );
|
26 |
Â
}
|
27 |
Â
|
28 |
-
|
29 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
<# if ( ! data.choices ) return; #>
|
31 |
Â
<label>
|
32 |
Â
<# if ( data.label ) { #>
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: preset.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Preset_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Preset control (modified select).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Preset_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'preset';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-preset' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( ! data.choices ) return; #>
|
54 |
Â
<label>
|
55 |
Â
<# if ( data.label ) { #>
|
includes/controls/class-kirki-controls-radio-buttonset-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
* radio-buttonset
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Radio_Buttonset_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Radio_Buttonset_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'radio-buttonset';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-radio-buttonset' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
@@ -33,7 +59,7 @@ if ( ! class_exists( 'Kirki_Controls_Radio_Buttonset_Control' ) ) {
|
|
33 |
Â
<# if ( data.description ) { #>
|
34 |
Â
<span class="description customize-control-description">{{{ data.description }}}</span>
|
35 |
Â
<# } #>
|
36 |
-
<div id="input_
|
37 |
Â
<# for ( key in data.choices ) { #>
|
38 |
Â
<input class="switch-input" type="radio" value="{{ key }}" name="_customize-radio-{{{ data.id }}}" id="{{ data.id }}{{ key }}" {{{ data.link }}}<# if ( key === data.value ) { #> checked="checked" <# } #>>
|
39 |
Â
<label class="switch-label switch-label-<# if ( key === data.value ) { #>on <# } else { #>off<# } #>" for="{{ data.id }}{{ key }}">
|
@@ -44,6 +70,5 @@ if ( ! class_exists( 'Kirki_Controls_Radio_Buttonset_Control' ) ) {
|
|
44 |
Â
</div>
|
45 |
Â
<?php
|
46 |
Â
}
|
47 |
-
|
48 |
Â
}
|
49 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: radio-buttonset.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Radio_Buttonset_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Radio Buttonset control (modified radio)
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Radio_Buttonset_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'radio-buttonset';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-radio-buttonset' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
59 |
Â
<# if ( data.description ) { #>
|
60 |
Â
<span class="description customize-control-description">{{{ data.description }}}</span>
|
61 |
Â
<# } #>
|
62 |
+
<div id="input_{{ data.id }}" class="buttonset">
|
63 |
Â
<# for ( key in data.choices ) { #>
|
64 |
Â
<input class="switch-input" type="radio" value="{{ key }}" name="_customize-radio-{{{ data.id }}}" id="{{ data.id }}{{ key }}" {{{ data.link }}}<# if ( key === data.value ) { #> checked="checked" <# } #>>
|
65 |
Â
<label class="switch-label switch-label-<# if ( key === data.value ) { #>on <# } else { #>off<# } #>" for="{{ data.id }}{{ key }}">
|
70 |
Â
</div>
|
71 |
Â
<?php
|
72 |
Â
}
|
Â
|
|
73 |
Â
}
|
74 |
Â
}
|
includes/controls/class-kirki-controls-radio-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Radio_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Radio_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'kirki-radio';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-radio' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( ! data.choices ) { return; } #>
|
28 |
Â
|
29 |
Â
<# if ( data.tooltip ) { #>
|
@@ -48,6 +74,5 @@ if ( ! class_exists( 'Kirki_Controls_Radio_Control' ) ) {
|
|
48 |
Â
<# } #>
|
49 |
Â
<?php
|
50 |
Â
}
|
51 |
-
|
52 |
Â
}
|
53 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: kirki-radio.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Radio_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Radio control
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Radio_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'kirki-radio';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-radio' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( ! data.choices ) { return; } #>
|
54 |
Â
|
55 |
Â
<# if ( data.tooltip ) { #>
|
74 |
Â
<# } #>
|
75 |
Â
<?php
|
76 |
Â
}
|
Â
|
|
77 |
Â
}
|
78 |
Â
}
|
includes/controls/class-kirki-controls-radio-image-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
* radio-image
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Radio_Image_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Radio_Image_Control extends Kirki_Customize_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'radio-image';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-radio-image' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
@@ -47,6 +73,5 @@ if ( ! class_exists( 'Kirki_Controls_Radio_Image_Control' ) ) {
|
|
47 |
Â
</div>
|
48 |
Â
<?php
|
49 |
Â
}
|
50 |
-
|
51 |
Â
}
|
52 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: radio-image.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Radio_Image_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Radio Image control (modified radio).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Radio_Image_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'radio-image';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-radio-image' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
73 |
Â
</div>
|
74 |
Â
<?php
|
75 |
Â
}
|
Â
|
|
76 |
Â
}
|
77 |
Â
}
|
includes/controls/class-kirki-controls-repeater-control.php
CHANGED
@@ -1,48 +1,112 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Repeater_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'repeater';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $fields = array();
|
24 |
Â
|
25 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
protected $filtered_value = array();
|
27 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public function __construct( $manager, $id, $args = array() ) {
|
29 |
-
parent::__construct( $manager, $id, $args );
|
30 |
Â
|
31 |
Â
$l10n = Kirki_l10n::get_strings();
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
38 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
39 |
Â
}
|
40 |
Â
|
41 |
Â
if ( empty( $args['fields'] ) || ! is_array( $args['fields'] ) ) {
|
42 |
Â
$args['fields'] = array();
|
43 |
Â
}
|
44 |
Â
|
45 |
-
//An array to store keys of fields that need to be filtered
|
46 |
Â
$image_fields_to_filter = array();
|
47 |
Â
|
48 |
Â
foreach ( $args['fields'] as $key => $value ) {
|
@@ -55,48 +119,51 @@ if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
|
55 |
Â
}
|
56 |
Â
$args['fields'][ $key ]['id'] = $key;
|
57 |
Â
|
58 |
-
//
|
59 |
-
if ( isset( $value['type'] ) && ( 'image' === $value['type'] || 'cropped_image' === $value[
|
60 |
-
|
Â
|
|
61 |
Â
$image_fields_to_filter[ $key ] = true;
|
62 |
Â
}
|
63 |
Â
}
|
64 |
Â
|
65 |
Â
$this->fields = $args['fields'];
|
66 |
Â
|
67 |
-
// Now we are going to filter the fields
|
68 |
-
|
69 |
-
// First we create a copy of the value that would be used otherwise
|
70 |
Â
$this->filtered_value = $this->value();
|
71 |
Â
|
72 |
Â
if ( is_array( $this->filtered_value ) && ! empty( $this->filtered_value ) ) {
|
73 |
Â
|
74 |
-
// We iterate over the list of fields
|
75 |
Â
foreach ( $this->filtered_value as &$filtered_value_field ) {
|
76 |
Â
|
77 |
Â
if ( is_array( $filtered_value_field ) && ! empty( $filtered_value_field ) ) {
|
78 |
Â
|
79 |
-
// We iterate over the list of properties for this field
|
80 |
Â
foreach ( $filtered_value_field as $key => &$value ) {
|
81 |
Â
|
82 |
-
// We check if this field was marked as requiring extra filtering (in this case image,cropped_images)
|
83 |
-
if ( array_key_exists
|
84 |
Â
|
85 |
-
// What follows was made this way to preserve backward compatibility
|
86 |
-
// The repeater control use to store the URL for images instead of the attachment ID
|
87 |
-
|
88 |
-
// We check if the value look like an ID (otherwise it's probably a URL so don't filter it)
|
89 |
Â
if ( is_numeric( $value ) ) {
|
90 |
-
|
Â
|
|
91 |
Â
$attachment_id = (int) $value;
|
92 |
-
|
Â
|
|
93 |
Â
$url = wp_get_attachment_url( $attachment_id );
|
94 |
-
|
Â
|
|
95 |
Â
if ( $url ) {
|
96 |
-
|
97 |
-
|
Â
|
|
98 |
Â
'id' => $attachment_id,
|
99 |
-
'url' => $url
|
100 |
Â
);
|
101 |
Â
}
|
102 |
Â
}
|
@@ -107,39 +174,43 @@ if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
|
107 |
Â
}
|
108 |
Â
}
|
109 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
110 |
Â
public function to_json() {
|
111 |
Â
parent::to_json();
|
112 |
Â
|
113 |
Â
$fields = $this->fields;
|
114 |
Â
$i18n = Kirki_l10n::get_strings();
|
115 |
-
$default_image_button_labels = array(
|
116 |
-
'default' => $i18n['add-image'],
|
117 |
-
'remove' => $i18n['remove'],
|
118 |
-
'change' => $i18n['change-image'],
|
119 |
-
'placeholder' => $i18n['no-image-selected'],
|
120 |
-
);
|
121 |
-
|
122 |
-
foreach ( $fields as $key => $field ) {
|
123 |
-
if ( 'image' != $field['type'] && 'cropped_image' != $field['type'] ) {
|
124 |
-
continue;
|
125 |
-
}
|
126 |
-
|
127 |
-
$fields[ $key ]['buttonLabels'] = $default_image_button_labels;
|
128 |
-
}
|
129 |
Â
|
130 |
Â
$this->json['fields'] = $fields;
|
Â
|
|
131 |
Â
|
132 |
-
//
|
133 |
Â
if ( is_array( $this->filtered_value ) && ! empty( $this->filtered_value ) ) {
|
134 |
Â
$this->json['value'] = $this->filtered_value;
|
135 |
Â
}
|
136 |
Â
}
|
137 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
138 |
Â
public function enqueue() {
|
139 |
Â
wp_enqueue_script( 'kirki-repeater' );
|
140 |
Â
}
|
141 |
Â
|
142 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
143 |
Â
<?php $l10n = Kirki_l10n::get_strings(); ?>
|
144 |
Â
<?php if ( '' != $this->tooltip ) : ?>
|
145 |
Â
<a href="#" class="tooltip hint--left" data-hint="<?php echo esc_html( $this->tooltip ); ?>"><span class='dashicons dashicons-info'></span></a>
|
@@ -149,15 +220,15 @@ if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
|
149 |
Â
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
150 |
Â
<?php endif; ?>
|
151 |
Â
<?php if ( ! empty( $this->description ) ) : ?>
|
152 |
-
<span class="description customize-control-description"><?php echo $this->description; ?></span>
|
153 |
Â
<?php endif; ?>
|
154 |
-
<input type="hidden" <?php $this->input_attrs(); ?> value="" <?php echo $this->get_link(); ?> />
|
155 |
Â
</label>
|
156 |
Â
|
157 |
Â
<ul class="repeater-fields"></ul>
|
158 |
Â
|
159 |
Â
<?php if ( isset( $this->choices['limit'] ) ) : ?>
|
160 |
-
<p class="limit"><?php printf( $l10n['limit-rows'], $this->choices['limit'] ); ?></p>
|
161 |
Â
<?php endif; ?>
|
162 |
Â
<button class="button-secondary repeater-add"><?php echo esc_html( $this->button_label ); ?></button>
|
163 |
Â
|
@@ -167,8 +238,15 @@ if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
|
167 |
Â
|
168 |
Â
}
|
169 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
170 |
Â
public function repeater_js_template() {
|
171 |
Â
?>
|
Â
|
|
172 |
Â
<script type="text/html" class="customize-control-repeater-content">
|
173 |
Â
<# var field; var index = data['index']; #>
|
174 |
Â
|
@@ -176,160 +254,158 @@ if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
|
176 |
Â
<li class="repeater-row minimized" data-row="{{{ index }}}">
|
177 |
Â
|
178 |
Â
<div class="repeater-row-header">
|
179 |
-
<span class="repeater-row-
|
180 |
-
<
|
181 |
-
<span class="repeater-row-minimize"><i class="dashicons dashicons-arrow-up repeater-minimize"></i></span>
|
182 |
-
<span class="repeater-row-move"><i class="dashicons dashicons-sort repeater-move"></i></span>
|
183 |
Â
</div>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
184 |
Â
|
185 |
-
|
186 |
-
<# if ( ! data.hasOwnProperty( i ) ) continue; #>
|
187 |
-
<# field = data[i]; #>
|
188 |
-
<# if ( ! field.type ) continue; #>
|
189 |
Â
|
190 |
-
|
191 |
Â
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
<
|
200 |
-
|
201 |
-
<input type="{{field.type}}" name="" value="{{{ field.default }}}" data-field="{{{ field.id }}}">
|
202 |
-
</label>
|
203 |
Â
|
204 |
Â
<# } else if ( field.type === 'hidden' ) { #>
|
205 |
Â
|
206 |
Â
<input type="hidden" data-field="{{{ field.id }}}" <# if ( field.default ) { #> value="{{{ field.default }}}" <# } #> />
|
207 |
Â
|
208 |
-
|
209 |
-
|
210 |
-
<label>
|
211 |
-
<input type="checkbox" value="true" data-field="{{{ field.id }}}" <# if ( field.default ) { #> checked="checked" <# } #> />
|
212 |
-
<# if ( field.description ) { #>
|
213 |
-
{{ field.description }}
|
214 |
-
<# } #>
|
215 |
-
</label>
|
216 |
-
|
217 |
-
<# } else if ( field.type === 'select' ) { #>
|
218 |
Â
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
<# if ( field.description ) { #>
|
224 |
-
<span class="description customize-control-description">{{ field.description }}</span>
|
225 |
-
<# } #>
|
226 |
-
<select data-field="{{{ field.id }}}">
|
227 |
-
<# for ( i in field.choices ) { #>
|
228 |
-
<# if ( field.choices.hasOwnProperty( i ) ) { #>
|
229 |
-
<option value="{{{ i }}}" <# if ( field.default == i ) { #> selected="selected" <# } #>>{{ field.choices[i] }}</option>
|
230 |
-
<# } #>
|
231 |
Â
<# } #>
|
232 |
-
</
|
233 |
-
</label>
|
234 |
-
|
235 |
-
<# } else if ( field.type === 'radio' ) { #>
|
236 |
Â
|
237 |
-
|
238 |
-
<# if ( field.label ) { #>
|
239 |
-
<span class="customize-control-title">{{ field.label }}</span>
|
240 |
-
<# } #>
|
241 |
-
<# if ( field.description ) { #>
|
242 |
-
<span class="description customize-control-description">{{ field.description }}</span>
|
243 |
-
<# } #>
|
244 |
Â
|
245 |
-
|
246 |
-
<# if ( field.
|
247 |
-
<label>
|
248 |
-
<input type="radio" name="{{{ field.id }}}" data-field="{{{ field.id }}}" value="{{{ i }}}" <# if ( field.default == i ) { #> checked="checked" <# } #>> {{ field.choices[i] }} <br/>
|
249 |
-
</label>
|
250 |
Â
<# } #>
|
251 |
-
|
252 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
253 |
Â
|
254 |
-
|
255 |
Â
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
Â
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
<img src="{{ field.choices[i] }}">
|
269 |
Â
</label>
|
270 |
-
|
271 |
Â
<# } #>
|
272 |
-
|
273 |
-
</label>
|
274 |
Â
|
275 |
-
|
276 |
Â
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
Â
|
285 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
286 |
Â
|
287 |
-
<label>
|
288 |
Â
<# if ( field.label ) { #>
|
289 |
Â
<span class="customize-control-title">{{ field.label }}</span>
|
290 |
Â
<# } #>
|
291 |
Â
<# if ( field.description ) { #>
|
292 |
Â
<span class="description customize-control-description">{{ field.description }}</span>
|
293 |
Â
<# } #>
|
294 |
-
|
295 |
Â
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
<img src="{{{ field.default }}}">
|
302 |
Â
<# } #>
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
Â
|
308 |
-
|
309 |
-
<button type="button" class="button remove-button<# if ( ! field.default ) { #> hidden<# } #>">{{ field.buttonLabels.remove }}</button>
|
310 |
-
<button type="button" class="button upload-button" data-label="{{{ field.buttonLabels.default }}}" data-alt-label="{{{ field.buttonLabels.change }}}" >
|
311 |
Â
<# if ( field.default ) { #>
|
312 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
313 |
Â
<# } else { #>
|
314 |
-
|
315 |
Â
<# } #>
|
316 |
-
</
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
<
|
321 |
-
|
322 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
323 |
Â
|
324 |
-
|
325 |
Â
|
326 |
-
|
327 |
-
|
Â
|
|
Â
|
|
328 |
Â
</li>
|
329 |
Â
</script>
|
330 |
Â
<?php
|
331 |
Â
}
|
332 |
-
|
333 |
Â
}
|
334 |
-
|
335 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: repeater.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Repeater_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Repeater control
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Repeater_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'repeater';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* The fields that each container row will contain.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
* @var array
|
37 |
+
*/
|
38 |
Â
public $fields = array();
|
39 |
Â
|
40 |
+
/**
|
41 |
+
* Will store a filtered version of value for advenced fields (like images).
|
42 |
+
*
|
43 |
+
* @access protected
|
44 |
+
* @var array
|
45 |
+
*/
|
46 |
Â
protected $filtered_value = array();
|
47 |
Â
|
48 |
+
/**
|
49 |
+
* The row label
|
50 |
+
*
|
51 |
+
* @access public
|
52 |
+
* @var array
|
53 |
+
*/
|
54 |
+
public $row_label = array();
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Constructor.
|
58 |
+
* Supplied `$args` override class property defaults.
|
59 |
+
* If `$args['settings']` is not defined, use the $id as the setting ID.
|
60 |
+
*
|
61 |
+
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
|
62 |
+
* @param string $id Control ID.
|
63 |
+
* @param array $args {@see WP_Customize_Control::__construct}.
|
64 |
+
*/
|
65 |
Â
public function __construct( $manager, $id, $args = array() ) {
|
Â
|
|
66 |
Â
|
67 |
Â
$l10n = Kirki_l10n::get_strings();
|
68 |
+
|
69 |
+
parent::__construct( $manager, $id, $args );
|
70 |
+
|
71 |
+
// Set up defaults for row labels.
|
72 |
+
$this->row_label = array(
|
73 |
+
'type' => 'text',
|
74 |
+
'value' => $l10n['row'],
|
75 |
+
'field' => false,
|
76 |
+
);
|
77 |
+
|
78 |
+
// Validating args for row labels.
|
79 |
+
if ( isset( $args['row_label'] ) && is_array( $args['row_label'] ) && ! empty( $args['row_label'] ) ) {
|
80 |
+
|
81 |
+
// Validating row label type.
|
82 |
+
if ( isset( $args['row_label']['type'] ) && ( 'text' === $args['row_label']['type'] || 'field' === $args['row_label']['type'] ) ) {
|
83 |
+
$this->row_label['type'] = $args['row_label']['type'];
|
84 |
+
}
|
85 |
+
|
86 |
+
// Validating row label type.
|
87 |
+
if ( isset( $args['row_label']['value'] ) && ! empty( $args['row_label']['value'] ) ) {
|
88 |
+
$this->row_label['value'] = esc_attr( $args['row_label']['value'] );
|
89 |
Â
}
|
90 |
+
|
91 |
+
// Validating row label field.
|
92 |
+
if ( isset( $args['row_label']['field'] ) && ! empty( $args['row_label']['field'] ) && isset( $args['fields'][ esc_attr( $args['row_label']['field'] ) ] ) ) {
|
93 |
+
$this->row_label['field'] = esc_attr( $args['row_label']['field'] );
|
94 |
+
} else {
|
95 |
+
|
96 |
+
// If from field is not set correctly, making sure standard is set as the type.
|
97 |
+
$this->row_label['type'] = 'text';
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
if ( empty( $this->button_label ) ) {
|
102 |
+
$this->button_label = $l10n['add-new'].' '.$this->row_label['value'];
|
103 |
Â
}
|
104 |
Â
|
105 |
Â
if ( empty( $args['fields'] ) || ! is_array( $args['fields'] ) ) {
|
106 |
Â
$args['fields'] = array();
|
107 |
Â
}
|
108 |
Â
|
109 |
+
// An array to store keys of fields that need to be filtered.
|
110 |
Â
$image_fields_to_filter = array();
|
111 |
Â
|
112 |
Â
foreach ( $args['fields'] as $key => $value ) {
|
119 |
Â
}
|
120 |
Â
$args['fields'][ $key ]['id'] = $key;
|
121 |
Â
|
122 |
+
// We check if the filed is an image or a cropped_image.
|
123 |
+
if ( isset( $value['type'] ) && ( 'image' === $value['type'] || 'cropped_image' === $value['type'] ) ) {
|
124 |
+
|
125 |
+
// We add it to the list of fields that need some extra filtering/processing.
|
126 |
Â
$image_fields_to_filter[ $key ] = true;
|
127 |
Â
}
|
128 |
Â
}
|
129 |
Â
|
130 |
Â
$this->fields = $args['fields'];
|
131 |
Â
|
132 |
+
// Now we are going to filter the fields.
|
133 |
+
// First we create a copy of the value that would be used otherwise.
|
Â
|
|
134 |
Â
$this->filtered_value = $this->value();
|
135 |
Â
|
136 |
Â
if ( is_array( $this->filtered_value ) && ! empty( $this->filtered_value ) ) {
|
137 |
Â
|
138 |
+
// We iterate over the list of fields.
|
139 |
Â
foreach ( $this->filtered_value as &$filtered_value_field ) {
|
140 |
Â
|
141 |
Â
if ( is_array( $filtered_value_field ) && ! empty( $filtered_value_field ) ) {
|
142 |
Â
|
143 |
+
// We iterate over the list of properties for this field.
|
144 |
Â
foreach ( $filtered_value_field as $key => &$value ) {
|
145 |
Â
|
146 |
+
// We check if this field was marked as requiring extra filtering (in this case image, cropped_images).
|
147 |
+
if ( array_key_exists( $key, $image_fields_to_filter ) ) {
|
148 |
Â
|
149 |
+
// What follows was made this way to preserve backward compatibility.
|
150 |
+
// The repeater control use to store the URL for images instead of the attachment ID.
|
151 |
+
// We check if the value look like an ID (otherwise it's probably a URL so don't filter it).
|
Â
|
|
152 |
Â
if ( is_numeric( $value ) ) {
|
153 |
+
|
154 |
+
// "sanitize" the value.
|
155 |
Â
$attachment_id = (int) $value;
|
156 |
+
|
157 |
+
// Try to get the attachment_url.
|
158 |
Â
$url = wp_get_attachment_url( $attachment_id );
|
159 |
+
|
160 |
+
// If we got a URL.
|
161 |
Â
if ( $url ) {
|
162 |
+
|
163 |
+
// 'id' is needed for form hidden value, URL is needed to display the image.
|
164 |
+
$value = array(
|
165 |
Â
'id' => $attachment_id,
|
166 |
+
'url' => $url,
|
167 |
Â
);
|
168 |
Â
}
|
169 |
Â
}
|
174 |
Â
}
|
175 |
Â
}
|
176 |
Â
|
177 |
+
/**
|
178 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
179 |
+
*
|
180 |
+
* @access public
|
181 |
+
*/
|
182 |
Â
public function to_json() {
|
183 |
Â
parent::to_json();
|
184 |
Â
|
185 |
Â
$fields = $this->fields;
|
186 |
Â
$i18n = Kirki_l10n::get_strings();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
187 |
Â
|
188 |
Â
$this->json['fields'] = $fields;
|
189 |
+
$this->json['row_label'] = $this->row_label;
|
190 |
Â
|
191 |
+
// If filtered_value has been set and is not empty we use it instead of the actual value.
|
192 |
Â
if ( is_array( $this->filtered_value ) && ! empty( $this->filtered_value ) ) {
|
193 |
Â
$this->json['value'] = $this->filtered_value;
|
194 |
Â
}
|
195 |
Â
}
|
196 |
Â
|
197 |
+
/**
|
198 |
+
* Enqueue control related scripts/styles.
|
199 |
+
*
|
200 |
+
* @access public
|
201 |
+
*/
|
202 |
Â
public function enqueue() {
|
203 |
Â
wp_enqueue_script( 'kirki-repeater' );
|
204 |
Â
}
|
205 |
Â
|
206 |
+
/**
|
207 |
+
* Render the control's content.
|
208 |
+
* Allows the content to be overriden without having to rewrite the wrapper in $this->render().
|
209 |
+
*
|
210 |
+
* @access protected
|
211 |
+
*/
|
212 |
+
protected function render_content() {
|
213 |
+
?>
|
214 |
Â
<?php $l10n = Kirki_l10n::get_strings(); ?>
|
215 |
Â
<?php if ( '' != $this->tooltip ) : ?>
|
216 |
Â
<a href="#" class="tooltip hint--left" data-hint="<?php echo esc_html( $this->tooltip ); ?>"><span class='dashicons dashicons-info'></span></a>
|
220 |
Â
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
221 |
Â
<?php endif; ?>
|
222 |
Â
<?php if ( ! empty( $this->description ) ) : ?>
|
223 |
+
<span class="description customize-control-description"><?php echo wp_kses_post( $this->description ); ?></span>
|
224 |
Â
<?php endif; ?>
|
225 |
+
<input type="hidden" <?php $this->input_attrs(); ?> value="" <?php echo wp_kses_post( $this->get_link() ); ?> />
|
226 |
Â
</label>
|
227 |
Â
|
228 |
Â
<ul class="repeater-fields"></ul>
|
229 |
Â
|
230 |
Â
<?php if ( isset( $this->choices['limit'] ) ) : ?>
|
231 |
+
<p class="limit"><?php printf( esc_html( $l10n['limit-rows'] ), esc_html( $this->choices['limit'] ) ); ?></p>
|
232 |
Â
<?php endif; ?>
|
233 |
Â
<button class="button-secondary repeater-add"><?php echo esc_html( $this->button_label ); ?></button>
|
234 |
Â
|
238 |
Â
|
239 |
Â
}
|
240 |
Â
|
241 |
+
/**
|
242 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
243 |
+
* Class variables for this control class are available in the `data` JS object.
|
244 |
+
*
|
245 |
+
* @access public
|
246 |
+
*/
|
247 |
Â
public function repeater_js_template() {
|
248 |
Â
?>
|
249 |
+
<?php $l10n = Kirki_l10n::get_strings(); ?>
|
250 |
Â
<script type="text/html" class="customize-control-repeater-content">
|
251 |
Â
<# var field; var index = data['index']; #>
|
252 |
Â
|
254 |
Â
<li class="repeater-row minimized" data-row="{{{ index }}}">
|
255 |
Â
|
256 |
Â
<div class="repeater-row-header">
|
257 |
+
<span class="repeater-row-label"></span>
|
258 |
+
<i class="dashicons dashicons-arrow-down repeater-minimize"></i>
|
Â
|
|
Â
|
|
259 |
Â
</div>
|
260 |
+
<div class="repeater-row-content">
|
261 |
+
<# for ( i in data ) { #>
|
262 |
+
<# if ( ! data.hasOwnProperty( i ) ) continue; #>
|
263 |
+
<# field = data[i]; #>
|
264 |
+
<# if ( ! field.type ) continue; #>
|
265 |
Â
|
266 |
+
<div class="repeater-field repeater-field-{{{ field.type }}}">
|
Â
|
|
Â
|
|
Â
|
|
267 |
Â
|
268 |
+
<# if ( field.type === 'text' || field.type === 'url' || field.type === 'email' || field.type === 'tel' || field.type === 'date' ) { #>
|
269 |
Â
|
270 |
+
<label>
|
271 |
+
<# if ( field.label ) { #>
|
272 |
+
<span class="customize-control-title">{{ field.label }}</span>
|
273 |
+
<# } #>
|
274 |
+
<# if ( field.description ) { #>
|
275 |
+
<span class="description customize-control-description">{{ field.description }}</span>
|
276 |
+
<# } #>
|
277 |
+
<input type="{{field.type}}" name="" value="{{{ field.default }}}" data-field="{{{ field.id }}}">
|
278 |
+
</label>
|
Â
|
|
Â
|
|
279 |
Â
|
280 |
Â
<# } else if ( field.type === 'hidden' ) { #>
|
281 |
Â
|
282 |
Â
<input type="hidden" data-field="{{{ field.id }}}" <# if ( field.default ) { #> value="{{{ field.default }}}" <# } #> />
|
283 |
Â
|
284 |
+
<# } else if ( field.type === 'checkbox' ) { #>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
285 |
Â
|
286 |
+
<label>
|
287 |
+
<input type="checkbox" value="true" data-field="{{{ field.id }}}" <# if ( field.default ) { #> checked="checked" <# } #> />
|
288 |
+
<# if ( field.description ) { #>
|
289 |
+
{{ field.description }}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
290 |
Â
<# } #>
|
291 |
+
</label>
|
Â
|
|
Â
|
|
Â
|
|
292 |
Â
|
293 |
+
<# } else if ( field.type === 'select' ) { #>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
294 |
Â
|
295 |
+
<label>
|
296 |
+
<# if ( field.label ) { #>
|
297 |
+
<span class="customize-control-title">{{ field.label }}</span>
|
Â
|
|
Â
|
|
298 |
Â
<# } #>
|
299 |
+
<# if ( field.description ) { #>
|
300 |
+
<span class="description customize-control-description">{{ field.description }}</span>
|
301 |
+
<# } #>
|
302 |
+
<select data-field="{{{ field.id }}}">
|
303 |
+
<# for ( i in field.choices ) { #>
|
304 |
+
<# if ( field.choices.hasOwnProperty( i ) ) { #>
|
305 |
+
<option value="{{{ i }}}" <# if ( field.default == i ) { #> selected="selected" <# } #>>{{ field.choices[i] }}</option>
|
306 |
+
<# } #>
|
307 |
+
<# } #>
|
308 |
+
</select>
|
309 |
+
</label>
|
310 |
Â
|
311 |
+
<# } else if ( field.type === 'radio' ) { #>
|
312 |
Â
|
313 |
+
<label>
|
314 |
+
<# if ( field.label ) { #>
|
315 |
+
<span class="customize-control-title">{{ field.label }}</span>
|
316 |
+
<# } #>
|
317 |
+
<# if ( field.description ) { #>
|
318 |
+
<span class="description customize-control-description">{{ field.description }}</span>
|
319 |
+
<# } #>
|
320 |
Â
|
321 |
+
<# for ( i in field.choices ) { #>
|
322 |
+
<# if ( field.choices.hasOwnProperty( i ) ) { #>
|
323 |
+
<label>
|
324 |
+
<input type="radio" name="{{{ field.id }}}" data-field="{{{ field.id }}}" value="{{{ i }}}" <# if ( field.default == i ) { #> checked="checked" <# } #>> {{ field.choices[i] }} <br/>
|
Â
|
|
325 |
Â
</label>
|
326 |
+
<# } #>
|
327 |
Â
<# } #>
|
328 |
+
</label>
|
Â
|
|
329 |
Â
|
330 |
+
<# } else if ( field.type == 'radio-image' ) { #>
|
331 |
Â
|
332 |
+
<label>
|
333 |
+
<# if ( field.label ) { #>
|
334 |
+
<span class="customize-control-title">{{ field.label }}</span>
|
335 |
+
<# } #>
|
336 |
+
<# if ( field.description ) { #>
|
337 |
+
<span class="description customize-control-description">{{ field.description }}</span>
|
338 |
+
<# } #>
|
339 |
Â
|
340 |
+
<# for ( i in field.choices ) { #>
|
341 |
+
<# if ( field.choices.hasOwnProperty( i ) ) { #>
|
342 |
+
<input type="radio" id="{{{ field.id }}}_{{ index }}_{{{ i }}}" name="{{{ field.id }}}{{ index }}" data-field="{{{ field.id }}}" value="{{{ i }}}" <# if ( field.default == i ) { #> checked="checked" <# } #>>
|
343 |
+
<label for="{{{ field.id }}}_{{ index }}_{{{ i }}}">
|
344 |
+
<img src="{{ field.choices[i] }}">
|
345 |
+
</label>
|
346 |
+
</input>
|
347 |
+
<# } #>
|
348 |
+
<# } #>
|
349 |
+
</label>
|
350 |
+
|
351 |
+
<# } else if ( field.type == 'textarea' ) { #>
|
352 |
Â
|
Â
|
|
353 |
Â
<# if ( field.label ) { #>
|
354 |
Â
<span class="customize-control-title">{{ field.label }}</span>
|
355 |
Â
<# } #>
|
356 |
Â
<# if ( field.description ) { #>
|
357 |
Â
<span class="description customize-control-description">{{ field.description }}</span>
|
358 |
Â
<# } #>
|
359 |
+
<textarea rows="5" data-field="{{{ field.id }}}">{{ field.default }}</textarea>
|
360 |
Â
|
361 |
+
<# } else if ( field.type === 'image' || field.type === 'cropped_image' ) { #>
|
362 |
+
|
363 |
+
<label>
|
364 |
+
<# if ( field.label ) { #>
|
365 |
+
<span class="customize-control-title">{{ field.label }}</span>
|
Â
|
|
366 |
Â
<# } #>
|
367 |
+
<# if ( field.description ) { #>
|
368 |
+
<span class="description customize-control-description">{{ field.description }}</span>
|
369 |
+
<# } #>
|
370 |
+
</label>
|
371 |
Â
|
372 |
+
<figure class="kirki-image-attachment" data-placeholder="<?php esc_attr_e( $l10n['no-image-selected'] ); ?>" >
|
Â
|
|
Â
|
|
373 |
Â
<# if ( field.default ) { #>
|
374 |
+
<# if ( field.default.url ) { #>
|
375 |
+
<img src="{{{ field.default.url }}}">
|
376 |
+
<# } else { #>
|
377 |
+
<img src="{{{ field.default }}}">
|
378 |
+
<# } #>
|
379 |
Â
<# } else { #>
|
380 |
+
<?php esc_attr_e( $l10n['no-image-selected'] ); ?>
|
381 |
Â
<# } #>
|
382 |
+
</figure>
|
383 |
+
|
384 |
+
<div class="actions">
|
385 |
+
<button type="button" class="button remove-button<# if ( ! field.default ) { #> hidden<# } #>"><?php esc_attr_e( $l10n['remove'] ); ?></button>
|
386 |
+
<button type="button" class="button upload-button" data-label="<?php esc_attr_e( $l10n['add-image'] ); ?>" data-alt-label="<?php esc_attr_e( $l10n['change-image'] ); ?>" >
|
387 |
+
<# if ( field.default ) { #>
|
388 |
+
<?php esc_attr_e( $l10n['change-image'] ); ?>
|
389 |
+
<# } else { #>
|
390 |
+
<?php esc_attr_e( $l10n['add-image'] ); ?>
|
391 |
+
<# } #>
|
392 |
+
</button>
|
393 |
+
<# if ( field.default.id ) { #>
|
394 |
+
<input type="hidden" class="hidden-field" value="{{{ field.default.id }}}" data-field="{{{ field.id }}}" >
|
395 |
+
<# } else { #>
|
396 |
+
<input type="hidden" class="hidden-field" value="{{{ field.default }}}" data-field="{{{ field.id }}}" >
|
397 |
+
<# } #>
|
398 |
+
</div>
|
399 |
Â
|
400 |
+
<# } #>
|
401 |
Â
|
402 |
+
</div>
|
403 |
+
<# } #>
|
404 |
+
<button type="button" class="button-link repeater-row-remove"><?php esc_attr_e( $l10n['remove'] ); ?></button>
|
405 |
+
</div>
|
406 |
Â
</li>
|
407 |
Â
</script>
|
408 |
Â
<?php
|
409 |
Â
}
|
Â
|
|
410 |
Â
}
|
Â
|
|
411 |
Â
}
|
includes/controls/class-kirki-controls-select-control.php
CHANGED
@@ -1,38 +1,74 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Select_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Select_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'kirki-select';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $multiple = 1;
|
24 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public function to_json() {
|
26 |
Â
parent::to_json();
|
27 |
Â
$this->json['multiple'] = $this->multiple;
|
28 |
Â
}
|
29 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
public function enqueue() {
|
31 |
Â
wp_enqueue_script( 'kirki-select' );
|
32 |
Â
}
|
33 |
Â
|
34 |
-
|
35 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
36 |
Â
<# if ( ! data.choices ) return; #>
|
37 |
Â
<# if ( data.tooltip ) { #>
|
38 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
@@ -64,7 +100,5 @@ if ( ! class_exists( 'Kirki_Controls_Select_Control' ) ) {
|
|
64 |
Â
</label>
|
65 |
Â
<?php
|
66 |
Â
}
|
67 |
-
|
68 |
Â
}
|
69 |
-
|
70 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: kirki-select.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Select_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Select control.
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Select_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'kirki-select';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Maximum number of options the user will be able to select.
|
34 |
+
* Set to 1 for single-select.
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
* @var int
|
38 |
+
*/
|
39 |
Â
public $multiple = 1;
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
43 |
+
*
|
44 |
+
* @access public
|
45 |
+
*/
|
46 |
Â
public function to_json() {
|
47 |
Â
parent::to_json();
|
48 |
Â
$this->json['multiple'] = $this->multiple;
|
49 |
Â
}
|
50 |
Â
|
51 |
+
/**
|
52 |
+
* Enqueue control related scripts/styles.
|
53 |
+
*
|
54 |
+
* @access public
|
55 |
+
*/
|
56 |
Â
public function enqueue() {
|
57 |
Â
wp_enqueue_script( 'kirki-select' );
|
58 |
Â
}
|
59 |
Â
|
60 |
+
/**
|
61 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
62 |
+
*
|
63 |
+
* Class variables for this control class are available in the `data` JS object;
|
64 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
65 |
+
*
|
66 |
+
* @see WP_Customize_Control::print_template()
|
67 |
+
*
|
68 |
+
* @access protected
|
69 |
+
*/
|
70 |
+
protected function content_template() {
|
71 |
+
?>
|
72 |
Â
<# if ( ! data.choices ) return; #>
|
73 |
Â
<# if ( data.tooltip ) { #>
|
74 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
100 |
Â
</label>
|
101 |
Â
<?php
|
102 |
Â
}
|
Â
|
|
103 |
Â
}
|
Â
|
|
104 |
Â
}
|
includes/controls/class-kirki-controls-slider-control.php
CHANGED
@@ -1,27 +1,41 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* Creates a jQuery slider control.
|
6 |
Â
*
|
7 |
Â
* @package Kirki
|
8 |
Â
* @subpackage Controls
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
-
* @license http://opensource.org/licenses/
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
-
// Exit if accessed directly
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Controls_Slider_Control' ) ) {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
class Kirki_Controls_Slider_Control extends Kirki_Customize_Control {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $type = 'slider';
|
24 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public function to_json() {
|
26 |
Â
parent::to_json();
|
27 |
Â
$this->json['choices']['min'] = ( isset( $this->choices['min'] ) ) ? $this->choices['min'] : '0';
|
@@ -29,11 +43,27 @@ if ( ! class_exists( 'Kirki_Controls_Slider_Control' ) ) {
|
|
29 |
Â
$this->json['choices']['step'] = ( isset( $this->choices['step'] ) ) ? $this->choices['step'] : '1';
|
30 |
Â
}
|
31 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
32 |
Â
public function enqueue() {
|
33 |
Â
wp_enqueue_script( 'kirki-slider' );
|
34 |
Â
}
|
35 |
Â
|
36 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
37 |
Â
<# if ( data.tooltip ) { #>
|
38 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
39 |
Â
<# } #>
|
@@ -58,9 +88,6 @@ if ( ! class_exists( 'Kirki_Controls_Slider_Control' ) ) {
|
|
58 |
Â
</div>
|
59 |
Â
</label>
|
60 |
Â
<?php
|
61 |
-
|
62 |
Â
}
|
63 |
-
|
64 |
Â
}
|
65 |
-
|
66 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: slider.
|
4 |
Â
*
|
5 |
Â
* Creates a jQuery slider control.
|
6 |
Â
*
|
7 |
Â
* @package Kirki
|
8 |
Â
* @subpackage Controls
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Controls_Slider_Control' ) ) {
|
20 |
Â
|
21 |
+
/**
|
22 |
+
* Slider control (range).
|
23 |
+
*/
|
24 |
Â
class Kirki_Controls_Slider_Control extends Kirki_Customize_Control {
|
25 |
Â
|
26 |
+
/**
|
27 |
+
* The control type.
|
28 |
+
*
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
Â
public $type = 'slider';
|
33 |
Â
|
34 |
+
/**
|
35 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
Â
public function to_json() {
|
40 |
Â
parent::to_json();
|
41 |
Â
$this->json['choices']['min'] = ( isset( $this->choices['min'] ) ) ? $this->choices['min'] : '0';
|
43 |
Â
$this->json['choices']['step'] = ( isset( $this->choices['step'] ) ) ? $this->choices['step'] : '1';
|
44 |
Â
}
|
45 |
Â
|
46 |
+
/**
|
47 |
+
* Enqueue control related scripts/styles.
|
48 |
+
*
|
49 |
+
* @access public
|
50 |
+
*/
|
51 |
Â
public function enqueue() {
|
52 |
Â
wp_enqueue_script( 'kirki-slider' );
|
53 |
Â
}
|
54 |
Â
|
55 |
+
/**
|
56 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
57 |
+
*
|
58 |
+
* Class variables for this control class are available in the `data` JS object;
|
59 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
60 |
+
*
|
61 |
+
* @see WP_Customize_Control::print_template()
|
62 |
+
*
|
63 |
+
* @access protected
|
64 |
+
*/
|
65 |
+
protected function content_template() {
|
66 |
+
?>
|
67 |
Â
<# if ( data.tooltip ) { #>
|
68 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
69 |
Â
<# } #>
|
88 |
Â
</div>
|
89 |
Â
</label>
|
90 |
Â
<?php
|
Â
|
|
91 |
Â
}
|
Â
|
|
92 |
Â
}
|
Â
|
|
93 |
Â
}
|
includes/controls/class-kirki-controls-sortable-control.php
CHANGED
@@ -1,46 +1,73 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Sortable_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Sortable_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'sortable';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function __construct( $manager, $id, $args = array() ) {
|
24 |
Â
parent::__construct( $manager, $id, $args );
|
25 |
Â
add_filter( 'customize_sanitize_' . $id, array( $this, 'customize_sanitize' ) );
|
26 |
Â
}
|
27 |
Â
|
28 |
Â
/**
|
29 |
-
* Unserialize the setting before saving on DB
|
30 |
-
*
|
31 |
-
* @param $value Serialized settings
|
32 |
Â
*
|
33 |
-
* @
|
Â
|
|
34 |
Â
*/
|
35 |
Â
public function customize_sanitize( $value ) {
|
36 |
Â
$value = maybe_unserialize( $value );
|
37 |
Â
return $value;
|
38 |
Â
}
|
39 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
40 |
Â
public function enqueue() {
|
41 |
Â
wp_enqueue_script( 'kirki-sortable' );
|
42 |
Â
}
|
43 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
44 |
Â
public function to_json() {
|
45 |
Â
parent::to_json();
|
46 |
Â
|
@@ -67,7 +94,18 @@ if ( ! class_exists( 'Kirki_Controls_Sortable_Control' ) ) {
|
|
67 |
Â
|
68 |
Â
}
|
69 |
Â
|
70 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
71 |
Â
<# if ( ! data.choicesLength ) return; #>
|
72 |
Â
|
73 |
Â
<# if ( data.tooltip ) { #>
|
@@ -110,7 +148,5 @@ if ( ! class_exists( 'Kirki_Controls_Sortable_Control' ) ) {
|
|
110 |
Â
|
111 |
Â
<?php
|
112 |
Â
}
|
113 |
-
|
114 |
Â
}
|
115 |
-
|
116 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: sortable.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Sortable_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Sortable control (uses checkboxes).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Sortable_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'sortable';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Constructor.
|
34 |
+
* Supplied `$args` override class property defaults.
|
35 |
+
* If `$args['settings']` is not defined, use the $id as the setting ID.
|
36 |
+
*
|
37 |
+
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
|
38 |
+
* @param string $id Control ID.
|
39 |
+
* @param array $args {@see WP_Customize_Control::__construct}.
|
40 |
+
*/
|
41 |
Â
public function __construct( $manager, $id, $args = array() ) {
|
42 |
Â
parent::__construct( $manager, $id, $args );
|
43 |
Â
add_filter( 'customize_sanitize_' . $id, array( $this, 'customize_sanitize' ) );
|
44 |
Â
}
|
45 |
Â
|
46 |
Â
/**
|
47 |
+
* Unserialize the setting before saving on DB.
|
Â
|
|
Â
|
|
48 |
Â
*
|
49 |
+
* @param string $value Serialized settings.
|
50 |
+
* @return array
|
51 |
Â
*/
|
52 |
Â
public function customize_sanitize( $value ) {
|
53 |
Â
$value = maybe_unserialize( $value );
|
54 |
Â
return $value;
|
55 |
Â
}
|
56 |
Â
|
57 |
+
/**
|
58 |
+
* Enqueue control related scripts/styles.
|
59 |
+
*
|
60 |
+
* @access public
|
61 |
+
*/
|
62 |
Â
public function enqueue() {
|
63 |
Â
wp_enqueue_script( 'kirki-sortable' );
|
64 |
Â
}
|
65 |
Â
|
66 |
+
/**
|
67 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
68 |
+
*
|
69 |
+
* @access public
|
70 |
+
*/
|
71 |
Â
public function to_json() {
|
72 |
Â
parent::to_json();
|
73 |
Â
|
94 |
Â
|
95 |
Â
}
|
96 |
Â
|
97 |
+
/**
|
98 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
99 |
+
*
|
100 |
+
* Class variables for this control class are available in the `data` JS object;
|
101 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
102 |
+
*
|
103 |
+
* @see WP_Customize_Control::print_template()
|
104 |
+
*
|
105 |
+
* @access protected
|
106 |
+
*/
|
107 |
+
protected function content_template() {
|
108 |
+
?>
|
109 |
Â
<# if ( ! data.choicesLength ) return; #>
|
110 |
Â
|
111 |
Â
<# if ( data.tooltip ) { #>
|
148 |
Â
|
149 |
Â
<?php
|
150 |
Â
}
|
Â
|
|
151 |
Â
}
|
Â
|
|
152 |
Â
}
|
includes/controls/class-kirki-controls-spacing-control.php
CHANGED
@@ -1,25 +1,40 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Spacing_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Spacing_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'spacing';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function to_json() {
|
24 |
Â
parent::to_json();
|
25 |
Â
$this->json['choices'] = array();
|
@@ -40,11 +55,27 @@ if ( ! class_exists( 'Kirki_Controls_Spacing_Control' ) ) {
|
|
40 |
Â
}
|
41 |
Â
}
|
42 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
43 |
Â
public function enqueue() {
|
44 |
Â
wp_enqueue_script( 'kirki-spacing' );
|
45 |
Â
}
|
46 |
Â
|
47 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
48 |
Â
<# if ( data.tooltip ) { #>
|
49 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
50 |
Â
<# } #>
|
@@ -71,7 +102,5 @@ if ( ! class_exists( 'Kirki_Controls_Spacing_Control' ) ) {
|
|
71 |
Â
</label>
|
72 |
Â
<?php
|
73 |
Â
}
|
74 |
-
|
75 |
Â
}
|
76 |
-
|
77 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: spacing.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.1
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Spacing_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Spacing control.
|
21 |
+
* multiple checkboxes with CSS units validation.
|
22 |
+
*/
|
23 |
Â
class Kirki_Controls_Spacing_Control extends Kirki_Customize_Control {
|
24 |
Â
|
25 |
+
/**
|
26 |
+
* The control type.
|
27 |
+
*
|
28 |
+
* @access public
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
Â
public $type = 'spacing';
|
32 |
Â
|
33 |
+
/**
|
34 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
*/
|
38 |
Â
public function to_json() {
|
39 |
Â
parent::to_json();
|
40 |
Â
$this->json['choices'] = array();
|
55 |
Â
}
|
56 |
Â
}
|
57 |
Â
|
58 |
+
/**
|
59 |
+
* Enqueue control related scripts/styles.
|
60 |
+
*
|
61 |
+
* @access public
|
62 |
+
*/
|
63 |
Â
public function enqueue() {
|
64 |
Â
wp_enqueue_script( 'kirki-spacing' );
|
65 |
Â
}
|
66 |
Â
|
67 |
+
/**
|
68 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
69 |
+
*
|
70 |
+
* Class variables for this control class are available in the `data` JS object;
|
71 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
72 |
+
*
|
73 |
+
* @see WP_Customize_Control::print_template()
|
74 |
+
*
|
75 |
+
* @access protected
|
76 |
+
*/
|
77 |
+
protected function content_template() {
|
78 |
+
?>
|
79 |
Â
<# if ( data.tooltip ) { #>
|
80 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
81 |
Â
<# } #>
|
102 |
Â
</label>
|
103 |
Â
<?php
|
104 |
Â
}
|
Â
|
|
105 |
Â
}
|
Â
|
|
106 |
Â
}
|
includes/controls/class-kirki-controls-switch-control.php
CHANGED
@@ -1,25 +1,39 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Switch_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Switch_Control extends Kirki_Controls_Checkbox_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'switch';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function to_json() {
|
24 |
Â
parent::to_json();
|
25 |
Â
$i18n = Kirki_l10n::get_strings();
|
@@ -29,11 +43,27 @@ if ( ! class_exists( 'Kirki_Controls_Switch_Control' ) ) {
|
|
29 |
Â
$this->json['choices']['round'] = ( isset( $this->choices['round'] ) ) ? $this->choices['round'] : false;
|
30 |
Â
}
|
31 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
32 |
Â
public function enqueue() {
|
33 |
Â
wp_enqueue_script( 'kirki-switch' );
|
34 |
Â
}
|
35 |
Â
|
36 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
37 |
Â
<# if ( data.tooltip ) { #>
|
38 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
39 |
Â
<# } #>
|
@@ -64,7 +94,5 @@ if ( ! class_exists( 'Kirki_Controls_Switch_Control' ) ) {
|
|
64 |
Â
</div>
|
65 |
Â
<?php
|
66 |
Â
}
|
67 |
-
|
68 |
Â
}
|
69 |
-
|
70 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: switch.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Switch_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Switch control (modified checkbox).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Switch_Control extends Kirki_Controls_Checkbox_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'switch';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function to_json() {
|
38 |
Â
parent::to_json();
|
39 |
Â
$i18n = Kirki_l10n::get_strings();
|
43 |
Â
$this->json['choices']['round'] = ( isset( $this->choices['round'] ) ) ? $this->choices['round'] : false;
|
44 |
Â
}
|
45 |
Â
|
46 |
+
/**
|
47 |
+
* Enqueue control related scripts/styles.
|
48 |
+
*
|
49 |
+
* @access public
|
50 |
+
*/
|
51 |
Â
public function enqueue() {
|
52 |
Â
wp_enqueue_script( 'kirki-switch' );
|
53 |
Â
}
|
54 |
Â
|
55 |
+
/**
|
56 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
57 |
+
*
|
58 |
+
* Class variables for this control class are available in the `data` JS object;
|
59 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
60 |
+
*
|
61 |
+
* @see WP_Customize_Control::print_template()
|
62 |
+
*
|
63 |
+
* @access protected
|
64 |
+
*/
|
65 |
+
protected function content_template() {
|
66 |
+
?>
|
67 |
Â
<# if ( data.tooltip ) { #>
|
68 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
69 |
Â
<# } #>
|
94 |
Â
</div>
|
95 |
Â
<?php
|
96 |
Â
}
|
Â
|
|
97 |
Â
}
|
Â
|
|
98 |
Â
}
|
includes/controls/class-kirki-controls-toggle-control.php
CHANGED
@@ -1,29 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Toggle_Control' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
class Kirki_Controls_Toggle_Control extends Kirki_Controls_Checkbox_Control {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
public $type = 'toggle';
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public function enqueue() {
|
23 |
Â
wp_enqueue_script( 'kirki-toggle' );
|
24 |
Â
}
|
25 |
Â
|
26 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
<# if ( data.tooltip ) { #>
|
28 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
29 |
Â
<# } #>
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: toggle.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
Â
* @since 1.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Toggle_Control' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Toggle control (modified checkbox).
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Toggle_Control extends Kirki_Controls_Checkbox_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'toggle';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-toggle' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
43 |
+
*
|
44 |
+
* Class variables for this control class are available in the `data` JS object;
|
45 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
46 |
+
*
|
47 |
+
* @see WP_Customize_Control::print_template()
|
48 |
+
*
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
Â
<# if ( data.tooltip ) { #>
|
54 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
55 |
Â
<# } #>
|
includes/controls/class-kirki-controls-typography-control.php
CHANGED
@@ -1,29 +1,48 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Typography_Control' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Controls_Typography_Control extends Kirki_Customize_Control {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public $type = 'typography';
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public function enqueue() {
|
24 |
Â
wp_enqueue_script( 'kirki-typography' );
|
25 |
Â
}
|
26 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public function to_json() {
|
28 |
Â
parent::to_json();
|
29 |
Â
$this->add_values_backwards_compatibility();
|
@@ -40,9 +59,18 @@ if ( ! class_exists( 'Kirki_Controls_Typography_Control' ) ) {
|
|
40 |
Â
$this->json['default'] = wp_parse_args( $this->json['default'], $defaults );
|
41 |
Â
}
|
42 |
Â
|
43 |
-
|
44 |
-
|
45 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
46 |
Â
<# if ( data.tooltip ) { #>
|
47 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
48 |
Â
<# } #>
|
@@ -64,7 +92,7 @@ if ( ! class_exists( 'Kirki_Controls_Typography_Control' ) ) {
|
|
64 |
Â
<h5>{{ data.l10n['font-family'] }}</h5>
|
65 |
Â
<select id="kirki-typography-font-family-{{{ data.id }}}" placeholder="{{ data.i18n['select-font-family'] }}"></select>
|
66 |
Â
</div>
|
67 |
-
<div class="variant kirki-variant-wrapper">
|
68 |
Â
<h5>{{ data.l10n['variant'] }}</h5>
|
69 |
Â
<select class="variant" id="kirki-typography-variant-{{{ data.id }}}"></select>
|
70 |
Â
</div>
|
@@ -155,6 +183,13 @@ if ( ! class_exists( 'Kirki_Controls_Typography_Control' ) ) {
|
|
155 |
Â
<?php
|
156 |
Â
}
|
157 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
158 |
Â
protected function add_values_backwards_compatibility() {
|
159 |
Â
$value = $this->value();
|
160 |
Â
$old_values = array(
|
@@ -165,18 +200,18 @@ if ( ! class_exists( 'Kirki_Controls_Typography_Control' ) ) {
|
|
165 |
Â
'letter-spacing' => '',
|
166 |
Â
'color' => '',
|
167 |
Â
);
|
168 |
-
|
169 |
-
//
|
Â
|
|
170 |
Â
if ( '400' == $old_values['variant'] ) {
|
171 |
Â
$old_values['variant'] = 'regular';
|
172 |
Â
}
|
173 |
-
|
174 |
-
|
Â
|
|
175 |
Â
$value['letter-spacing'] .= 'px';
|
176 |
Â
}
|
177 |
Â
$this->json['value'] = wp_parse_args( $value, $old_values );
|
178 |
Â
}
|
179 |
-
|
180 |
Â
}
|
181 |
-
|
182 |
Â
}
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Customizer Control: typography.
|
4 |
Â
*
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Controls_Typography_Control' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Typography control.
|
21 |
+
*/
|
22 |
Â
class Kirki_Controls_Typography_Control extends Kirki_Customize_Control {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* The control type.
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
Â
public $type = 'typography';
|
31 |
Â
|
32 |
+
/**
|
33 |
+
* Enqueue control related scripts/styles.
|
34 |
+
*
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
Â
public function enqueue() {
|
38 |
Â
wp_enqueue_script( 'kirki-typography' );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* Refresh the parameters passed to the JavaScript via JSON.
|
43 |
+
*
|
44 |
+
* @access public
|
45 |
+
*/
|
46 |
Â
public function to_json() {
|
47 |
Â
parent::to_json();
|
48 |
Â
$this->add_values_backwards_compatibility();
|
59 |
Â
$this->json['default'] = wp_parse_args( $this->json['default'], $defaults );
|
60 |
Â
}
|
61 |
Â
|
62 |
+
/**
|
63 |
+
* An Underscore (JS) template for this control's content (but not its container).
|
64 |
+
*
|
65 |
+
* Class variables for this control class are available in the `data` JS object;
|
66 |
+
* export custom variables by overriding {@see Kirki_Customize_Control::to_json()}.
|
67 |
+
*
|
68 |
+
* @see WP_Customize_Control::print_template()
|
69 |
+
*
|
70 |
+
* @access protected
|
71 |
+
*/
|
72 |
+
protected function content_template() {
|
73 |
+
?>
|
74 |
Â
<# if ( data.tooltip ) { #>
|
75 |
Â
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
76 |
Â
<# } #>
|
92 |
Â
<h5>{{ data.l10n['font-family'] }}</h5>
|
93 |
Â
<select id="kirki-typography-font-family-{{{ data.id }}}" placeholder="{{ data.i18n['select-font-family'] }}"></select>
|
94 |
Â
</div>
|
95 |
+
<div class="variant hide-on-standard-fonts kirki-variant-wrapper">
|
96 |
Â
<h5>{{ data.l10n['variant'] }}</h5>
|
97 |
Â
<select class="variant" id="kirki-typography-variant-{{{ data.id }}}"></select>
|
98 |
Â
</div>
|
183 |
Â
<?php
|
184 |
Â
}
|
185 |
Â
|
186 |
+
/**
|
187 |
+
* Adds backwards-compatibility for values.
|
188 |
+
* Converts font-weight to variant
|
189 |
+
* Adds units to letter-spacing
|
190 |
+
*
|
191 |
+
* @access protected
|
192 |
+
*/
|
193 |
Â
protected function add_values_backwards_compatibility() {
|
194 |
Â
$value = $this->value();
|
195 |
Â
$old_values = array(
|
200 |
Â
'letter-spacing' => '',
|
201 |
Â
'color' => '',
|
202 |
Â
);
|
203 |
+
|
204 |
+
// Font-weight is now variant.
|
205 |
+
// All values are the same with the exception of 400 (becomes regular).
|
206 |
Â
if ( '400' == $old_values['variant'] ) {
|
207 |
Â
$old_values['variant'] = 'regular';
|
208 |
Â
}
|
209 |
+
|
210 |
+
// Letter spacing was in px, now it requires units.
|
211 |
+
if ( isset( $value['letter-spacing'] ) && is_numeric( $value['letter-spacing'] ) && $value['letter-spacing'] ) {
|
212 |
Â
$value['letter-spacing'] .= 'px';
|
213 |
Â
}
|
214 |
Â
$this->json['value'] = wp_parse_args( $value, $old_values );
|
215 |
Â
}
|
Â
|
|
216 |
Â
}
|
Â
|
|
217 |
Â
}
|
includes/deprecated.php
CHANGED
@@ -7,11 +7,11 @@
|
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
-
* @license http://opensource.org/licenses/
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
-
// Exit if accessed directly
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
@@ -56,9 +56,13 @@ if ( ! function_exists( 'kirki_get_brightness' ) ) {
|
|
56 |
Â
|
57 |
Â
/**
|
58 |
Â
* Class was deprecated in 2.2.7
|
Â
|
|
59 |
Â
* @see https://github.com/aristath/kirki/commit/101805fd689fa8828920b789347f13efc378b4a7
|
60 |
Â
*/
|
61 |
Â
if ( ! class_exists( 'Kirki_Colourlovers' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
62 |
Â
class Kirki_Colourlovers {
|
63 |
Â
public static function get_palettes( $palettes_nr = 5 ) {
|
64 |
Â
return array();
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
56 |
Â
|
57 |
Â
/**
|
58 |
Â
* Class was deprecated in 2.2.7
|
59 |
+
*
|
60 |
Â
* @see https://github.com/aristath/kirki/commit/101805fd689fa8828920b789347f13efc378b4a7
|
61 |
Â
*/
|
62 |
Â
if ( ! class_exists( 'Kirki_Colourlovers' ) ) {
|
63 |
+
/**
|
64 |
+
* Deprecated.
|
65 |
+
*/
|
66 |
Â
class Kirki_Colourlovers {
|
67 |
Â
public static function get_palettes( $palettes_nr = 5 ) {
|
68 |
Â
return array();
|
includes/dynamic-css.php
CHANGED
@@ -1,18 +1,23 @@
|
|
1 |
Â
<?php
|
2 |
-
|
3 |
Â
/**
|
4 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
*/
|
Â
|
|
Â
|
|
6 |
Â
if ( ! class_exists( 'Kirki' ) ) {
|
7 |
Â
die( 'File can\'t be accessed directly' );
|
8 |
Â
}
|
9 |
-
|
10 |
-
|
11 |
-
*/
|
12 |
Â
header( 'Content-Type: text/css' );
|
13 |
-
|
14 |
-
|
15 |
-
*/
|
16 |
Â
$configs = Kirki::$config;
|
17 |
Â
foreach ( $configs as $config_id => $args ) {
|
18 |
Â
if ( true === $args['disable_output'] ) {
|
@@ -20,5 +25,6 @@ foreach ( $configs as $config_id => $args ) {
|
|
20 |
Â
}
|
21 |
Â
|
22 |
Â
$styles = Kirki_Styles_Frontend::loop_controls( $config_id );
|
23 |
-
|
Â
|
|
24 |
Â
}
|
1 |
Â
<?php
|
Â
|
|
2 |
Â
/**
|
3 |
+
* Generates & echo the styles when using the AJAx method.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @category Core
|
7 |
+
* @author Aristeides Stathopoulos
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
Â
*/
|
11 |
+
|
12 |
+
// Do not allow directly accessing this file.
|
13 |
Â
if ( ! class_exists( 'Kirki' ) ) {
|
14 |
Â
die( 'File can\'t be accessed directly' );
|
15 |
Â
}
|
16 |
+
|
17 |
+
// Make sure we set the correct MIME type.
|
Â
|
|
18 |
Â
header( 'Content-Type: text/css' );
|
19 |
+
|
20 |
+
// Echo the styles.
|
Â
|
|
21 |
Â
$configs = Kirki::$config;
|
22 |
Â
foreach ( $configs as $config_id => $args ) {
|
23 |
Â
if ( true === $args['disable_output'] ) {
|
25 |
Â
}
|
26 |
Â
|
27 |
Â
$styles = Kirki_Styles_Frontend::loop_controls( $config_id );
|
28 |
+
$filtered_styles = apply_filters( 'kirki/' . $config_id . '/dynamic_css', $styles );
|
29 |
+
echo wp_kses_post( $filtered_styles );
|
30 |
Â
}
|
includes/field/class-kirki-field-checkbox.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Checkbox' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Checkbox extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -45,9 +57,6 @@ if ( ! class_exists( 'Kirki_Field_Checkbox' ) ) {
|
|
45 |
Â
if ( true === $this->default || 1 === $this->default ) {
|
46 |
Â
$this->default = '1';
|
47 |
Â
}
|
48 |
-
|
49 |
Â
}
|
50 |
-
|
51 |
Â
}
|
52 |
-
|
53 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Checkbox' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Checkbox extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
57 |
Â
if ( true === $this->default || 1 === $this->default ) {
|
58 |
Â
$this->default = '1';
|
59 |
Â
}
|
Â
|
|
60 |
Â
}
|
Â
|
|
61 |
Â
}
|
Â
|
|
62 |
Â
}
|
includes/field/class-kirki-field-code.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Code' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Code extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -33,7 +45,5 @@ if ( ! class_exists( 'Kirki_Field_Code' ) ) {
|
|
33 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'unfiltered' );
|
34 |
Â
|
35 |
Â
}
|
36 |
-
|
37 |
Â
}
|
38 |
-
|
39 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Code' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Code extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
45 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'unfiltered' );
|
46 |
Â
|
47 |
Â
}
|
Â
|
|
48 |
Â
}
|
Â
|
|
49 |
Â
}
|
includes/field/class-kirki-field-color-alpha.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Color_Alpha extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -44,7 +56,5 @@ if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
|
44 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'color' );
|
45 |
Â
|
46 |
Â
}
|
47 |
-
|
48 |
Â
}
|
49 |
-
|
50 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Color_Alpha extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
56 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'color' );
|
57 |
Â
|
58 |
Â
}
|
Â
|
|
59 |
Â
}
|
Â
|
|
60 |
Â
}
|
includes/field/class-kirki-field-color.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Color' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Color extends Kirki_Field_Color_Alpha {
|
6 |
Â
|
7 |
Â
/**
|
@@ -19,9 +31,6 @@ if ( ! class_exists( 'Kirki_Field_Color' ) ) {
|
|
19 |
Â
if ( false !== strpos( $this->default, 'rgba' ) ) {
|
20 |
Â
$this->choices['alpha'] = true;
|
21 |
Â
}
|
22 |
-
|
23 |
Â
}
|
24 |
-
|
25 |
Â
}
|
26 |
-
|
27 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Color' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Color extends Kirki_Field_Color_Alpha {
|
18 |
Â
|
19 |
Â
/**
|
31 |
Â
if ( false !== strpos( $this->default, 'rgba' ) ) {
|
32 |
Â
$this->choices['alpha'] = true;
|
33 |
Â
}
|
Â
|
|
34 |
Â
}
|
Â
|
|
35 |
Â
}
|
Â
|
|
36 |
Â
}
|
includes/field/class-kirki-field-custom.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Custom' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Custom extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -32,7 +44,5 @@ if ( ! class_exists( 'Kirki_Field_Custom' ) ) {
|
|
32 |
Â
$this->sanitize_callback = '__return_true';
|
33 |
Â
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
37 |
-
|
38 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Custom' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Custom extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
44 |
Â
$this->sanitize_callback = '__return_true';
|
45 |
Â
|
46 |
Â
}
|
Â
|
|
47 |
Â
}
|
Â
|
|
48 |
Â
}
|
includes/field/class-kirki-field-dashicons.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Dashicons' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Dashicons extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -32,7 +44,5 @@ if ( ! class_exists( 'Kirki_Field_Dashicons' ) ) {
|
|
32 |
Â
$this->sanitize_callback = 'esc_attr';
|
33 |
Â
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
37 |
-
|
38 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Dashicons' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Dashicons extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
44 |
Â
$this->sanitize_callback = 'esc_attr';
|
45 |
Â
|
46 |
Â
}
|
Â
|
|
47 |
Â
}
|
Â
|
|
48 |
Â
}
|
includes/field/class-kirki-field-date.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Date' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Date extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -30,7 +42,5 @@ if ( ! class_exists( 'Kirki_Field_Date' ) ) {
|
|
30 |
Â
$this->sanitize_callback = 'esc_textarea';
|
31 |
Â
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Date' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Date extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
42 |
Â
$this->sanitize_callback = 'esc_textarea';
|
43 |
Â
|
44 |
Â
}
|
Â
|
|
45 |
Â
}
|
Â
|
|
46 |
Â
}
|
includes/field/class-kirki-field-dropdown-pages.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Dropdown_Pages' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Dropdown_Pages extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -30,7 +42,5 @@ if ( ! class_exists( 'Kirki_Field_Dropdown_Pages' ) ) {
|
|
30 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'dropdown_pages' );
|
31 |
Â
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Dropdown_Pages' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Dropdown_Pages extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
42 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'dropdown_pages' );
|
43 |
Â
|
44 |
Â
}
|
Â
|
|
45 |
Â
}
|
Â
|
|
46 |
Â
}
|
includes/field/class-kirki-field-editor.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Editor' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Editor extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -30,6 +42,5 @@ if ( ! class_exists( 'Kirki_Field_Editor' ) ) {
|
|
30 |
Â
$this->sanitize_callback = 'wp_kses_post';
|
31 |
Â
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Editor' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Editor extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
42 |
Â
$this->sanitize_callback = 'wp_kses_post';
|
43 |
Â
|
44 |
Â
}
|
Â
|
|
45 |
Â
}
|
46 |
Â
}
|
includes/field/class-kirki-field-group-title.php
CHANGED
@@ -1,4 +1,13 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Group_Title' ) ) {
|
4 |
Â
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Group_Title' ) ) {
|
13 |
Â
|
includes/field/class-kirki-field-image.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Image' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Image extends Kirki_Field_Upload {}
|
6 |
Â
|
7 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Image' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Image extends Kirki_Field_Upload {}
|
18 |
Â
|
19 |
Â
}
|
includes/field/class-kirki-field-kirki-generic.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Kirki_Generic' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Kirki_Generic extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -47,7 +59,5 @@ if ( ! class_exists( 'Kirki_Field_Kirki_Generic' ) ) {
|
|
47 |
Â
$this->sanitize_callback = 'wp_kses_post';
|
48 |
Â
|
49 |
Â
}
|
50 |
-
|
51 |
Â
}
|
52 |
-
|
53 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Kirki_Generic' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Kirki_Generic extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
59 |
Â
$this->sanitize_callback = 'wp_kses_post';
|
60 |
Â
|
61 |
Â
}
|
Â
|
|
62 |
Â
}
|
Â
|
|
63 |
Â
}
|
includes/field/class-kirki-field-multicheck.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Multicheck' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Multicheck extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -33,6 +45,8 @@ if ( ! class_exists( 'Kirki_Field_Multicheck' ) ) {
|
|
33 |
Â
|
34 |
Â
/**
|
35 |
Â
* The sanitize method that will be used as a falback
|
Â
|
|
Â
|
|
36 |
Â
*/
|
37 |
Â
public function sanitize( $value ) {
|
38 |
Â
|
@@ -40,7 +54,5 @@ if ( ! class_exists( 'Kirki_Field_Multicheck' ) ) {
|
|
40 |
Â
return ( ! empty( $value ) ) ? array_map( 'sanitize_text_field', $value ) : array();
|
41 |
Â
|
42 |
Â
}
|
43 |
-
|
44 |
Â
}
|
45 |
-
|
46 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Multicheck' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Multicheck extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
45 |
Â
|
46 |
Â
/**
|
47 |
Â
* The sanitize method that will be used as a falback
|
48 |
+
*
|
49 |
+
* @param string|array $value The control's value.
|
50 |
Â
*/
|
51 |
Â
public function sanitize( $value ) {
|
52 |
Â
|
54 |
Â
return ( ! empty( $value ) ) ? array_map( 'sanitize_text_field', $value ) : array();
|
55 |
Â
|
56 |
Â
}
|
Â
|
|
57 |
Â
}
|
Â
|
|
58 |
Â
}
|
includes/field/class-kirki-field-multicolor.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Color_Alpha extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -22,15 +34,17 @@ if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
|
22 |
Â
*/
|
23 |
Â
protected function set_choices() {
|
24 |
Â
|
25 |
-
// Make sure choices are defined as an array
|
26 |
Â
if ( ! is_array( $this->choices ) ) {
|
27 |
Â
$this->choices = array();
|
28 |
Â
}
|
29 |
-
|
Â
|
|
30 |
Â
if ( ! isset( $this->choices['alpha'] ) ) {
|
31 |
Â
$this->choices['alpha'] = true;
|
32 |
Â
}
|
33 |
Â
$this->choices['alpha'] = (bool) $this->choices['alpha'];
|
Â
|
|
34 |
Â
// Make sure we have more than 2 colors, and we're using an integer.
|
35 |
Â
if ( ! isset( $this->choices['colors'] ) ) {
|
36 |
Â
$this->choices['colors'] = 2;
|
@@ -62,29 +76,39 @@ if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
|
62 |
Â
* @access protected
|
63 |
Â
*/
|
64 |
Â
protected function set_default() {
|
65 |
-
|
66 |
-
//
|
Â
|
|
67 |
Â
$this->set_choices();
|
68 |
-
|
Â
|
|
69 |
Â
$defaults = array_fill( 0, $this->choices['colors'], '#FFFFFF' );
|
70 |
-
|
Â
|
|
71 |
Â
if ( $this->choices['colors'] ) {
|
72 |
Â
$defaults = array_fill( 0, $this->choices['colors'], 'rgba(255,255,255,0)' );
|
73 |
Â
}
|
74 |
-
|
Â
|
|
75 |
Â
if ( ! is_array( $this->default ) ) {
|
76 |
Â
$this->default = array();
|
77 |
Â
}
|
78 |
-
|
Â
|
|
79 |
Â
$this->default = wp_parse_args( $this->default, $defaults );
|
Â
|
|
80 |
Â
}
|
81 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
82 |
Â
public function sanitize( $value ) {
|
83 |
Â
|
84 |
Â
return $value;
|
85 |
Â
|
86 |
Â
}
|
87 |
-
|
88 |
Â
}
|
89 |
-
|
90 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Color_Alpha' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Color_Alpha extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
34 |
Â
*/
|
35 |
Â
protected function set_choices() {
|
36 |
Â
|
37 |
+
// Make sure choices are defined as an array.
|
38 |
Â
if ( ! is_array( $this->choices ) ) {
|
39 |
Â
$this->choices = array();
|
40 |
Â
}
|
41 |
+
|
42 |
+
// Properly format the 'alpha' choice as a boolean.
|
43 |
Â
if ( ! isset( $this->choices['alpha'] ) ) {
|
44 |
Â
$this->choices['alpha'] = true;
|
45 |
Â
}
|
46 |
Â
$this->choices['alpha'] = (bool) $this->choices['alpha'];
|
47 |
+
|
48 |
Â
// Make sure we have more than 2 colors, and we're using an integer.
|
49 |
Â
if ( ! isset( $this->choices['colors'] ) ) {
|
50 |
Â
$this->choices['colors'] = 2;
|
76 |
Â
* @access protected
|
77 |
Â
*/
|
78 |
Â
protected function set_default() {
|
79 |
+
|
80 |
+
// Make sure we've already processed the set_choices() method.
|
81 |
+
// This way we know how many colors we're dealing with.
|
82 |
Â
$this->set_choices();
|
83 |
+
|
84 |
+
// Define a default array using #FFFFFF.
|
85 |
Â
$defaults = array_fill( 0, $this->choices['colors'], '#FFFFFF' );
|
86 |
+
|
87 |
+
// If we're using rgba, define default as rgba(255,255,255,0).
|
88 |
Â
if ( $this->choices['colors'] ) {
|
89 |
Â
$defaults = array_fill( 0, $this->choices['colors'], 'rgba(255,255,255,0)' );
|
90 |
Â
}
|
91 |
+
|
92 |
+
// Make sure defaults are defined as an array.
|
93 |
Â
if ( ! is_array( $this->default ) ) {
|
94 |
Â
$this->default = array();
|
95 |
Â
}
|
96 |
+
|
97 |
+
// Merge our arrays.
|
98 |
Â
$this->default = wp_parse_args( $this->default, $defaults );
|
99 |
+
|
100 |
Â
}
|
101 |
Â
|
102 |
+
/**
|
103 |
+
* The method that will be used as a `sanitize_callback`.
|
104 |
+
*
|
105 |
+
* @param array $value The value to be sanitized.
|
106 |
+
* @return array The value.
|
107 |
+
*/
|
108 |
Â
public function sanitize( $value ) {
|
109 |
Â
|
110 |
Â
return $value;
|
111 |
Â
|
112 |
Â
}
|
Â
|
|
113 |
Â
}
|
Â
|
|
114 |
Â
}
|
includes/field/class-kirki-field-number.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Number' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Number extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -30,7 +42,5 @@ if ( ! class_exists( 'Kirki_Field_Number' ) ) {
|
|
30 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'number' );
|
31 |
Â
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Number' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Number extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
42 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'number' );
|
43 |
Â
|
44 |
Â
}
|
Â
|
|
45 |
Â
}
|
Â
|
|
46 |
Â
}
|
includes/field/class-kirki-field-palette.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Palette' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Palette extends Kirki_Field_Radio {
|
6 |
Â
|
7 |
Â
/**
|
@@ -14,7 +26,5 @@ if ( ! class_exists( 'Kirki_Field_Palette' ) ) {
|
|
14 |
Â
$this->type = 'palette';
|
15 |
Â
|
16 |
Â
}
|
17 |
-
|
18 |
Â
}
|
19 |
-
|
20 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Palette' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Palette extends Kirki_Field_Radio {
|
18 |
Â
|
19 |
Â
/**
|
26 |
Â
$this->type = 'palette';
|
27 |
Â
|
28 |
Â
}
|
Â
|
|
29 |
Â
}
|
Â
|
|
30 |
Â
}
|
includes/field/class-kirki-field-preset.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Preset' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Preset extends Kirki_Field_Select {
|
6 |
Â
|
7 |
Â
/**
|
@@ -25,7 +37,5 @@ if ( ! class_exists( 'Kirki_Field_Preset' ) ) {
|
|
25 |
Â
$this->multiple = '1';
|
26 |
Â
|
27 |
Â
}
|
28 |
-
|
29 |
Â
}
|
30 |
-
|
31 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Preset' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Preset extends Kirki_Field_Select {
|
18 |
Â
|
19 |
Â
/**
|
37 |
Â
$this->multiple = '1';
|
38 |
Â
|
39 |
Â
}
|
Â
|
|
40 |
Â
}
|
Â
|
|
41 |
Â
}
|
includes/field/class-kirki-field-radio-buttonset.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Radio_Image' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Radio_Buttonset extends Kirki_Field_Radio {
|
6 |
Â
|
7 |
Â
/**
|
@@ -14,7 +26,5 @@ if ( ! class_exists( 'Kirki_Field_Radio_Image' ) ) {
|
|
14 |
Â
$this->type = 'radio-buttonset';
|
15 |
Â
|
16 |
Â
}
|
17 |
-
|
18 |
Â
}
|
19 |
-
|
20 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Radio_Image' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Radio_Buttonset extends Kirki_Field_Radio {
|
18 |
Â
|
19 |
Â
/**
|
26 |
Â
$this->type = 'radio-buttonset';
|
27 |
Â
|
28 |
Â
}
|
Â
|
|
29 |
Â
}
|
Â
|
|
30 |
Â
}
|
includes/field/class-kirki-field-radio-image.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Radio_Image' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Radio_Image extends Kirki_Field_Radio {
|
6 |
Â
|
7 |
Â
/**
|
@@ -14,7 +26,5 @@ if ( ! class_exists( 'Kirki_Field_Radio_Image' ) ) {
|
|
14 |
Â
$this->type = 'radio-image';
|
15 |
Â
|
16 |
Â
}
|
17 |
-
|
18 |
Â
}
|
19 |
-
|
20 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Radio_Image' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Radio_Image extends Kirki_Field_Radio {
|
18 |
Â
|
19 |
Â
/**
|
26 |
Â
$this->type = 'radio-image';
|
27 |
Â
|
28 |
Â
}
|
Â
|
|
29 |
Â
}
|
Â
|
|
30 |
Â
}
|
includes/field/class-kirki-field-radio.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Radio' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Radio extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -35,7 +47,5 @@ if ( ! class_exists( 'Kirki_Field_Radio' ) ) {
|
|
35 |
Â
$this->sanitize_callback = 'esc_attr';
|
36 |
Â
|
37 |
Â
}
|
38 |
-
|
39 |
Â
}
|
40 |
-
|
41 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Radio' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Radio extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
47 |
Â
$this->sanitize_callback = 'esc_attr';
|
48 |
Â
|
49 |
Â
}
|
Â
|
|
50 |
Â
}
|
Â
|
|
51 |
Â
}
|
includes/field/class-kirki-field-select.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Select' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Select extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -43,10 +55,11 @@ if ( ! class_exists( 'Kirki_Field_Select' ) ) {
|
|
43 |
Â
}
|
44 |
Â
|
45 |
Â
/**
|
46 |
-
* Sanitizes select control values
|
47 |
Â
*
|
48 |
Â
* @since 2.2.8
|
49 |
Â
* @access public
|
Â
|
|
50 |
Â
* @return string|array
|
51 |
Â
*/
|
52 |
Â
public function sanitize( $value ) {
|
@@ -60,7 +73,5 @@ if ( ! class_exists( 'Kirki_Field_Select' ) ) {
|
|
60 |
Â
return esc_attr( $value );
|
61 |
Â
|
62 |
Â
}
|
63 |
-
|
64 |
Â
}
|
65 |
-
|
66 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Select' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Select extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
55 |
Â
}
|
56 |
Â
|
57 |
Â
/**
|
58 |
+
* Sanitizes select control values.
|
59 |
Â
*
|
60 |
Â
* @since 2.2.8
|
61 |
Â
* @access public
|
62 |
+
* @param array $value The value.
|
63 |
Â
* @return string|array
|
64 |
Â
*/
|
65 |
Â
public function sanitize( $value ) {
|
73 |
Â
return esc_attr( $value );
|
74 |
Â
|
75 |
Â
}
|
Â
|
|
76 |
Â
}
|
Â
|
|
77 |
Â
}
|
includes/field/class-kirki-field-select2-multiple.php
CHANGED
@@ -1,4 +1,13 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Select2_Multiple' ) ) {
|
4 |
Â
|
@@ -19,7 +28,5 @@ if ( ! class_exists( 'Kirki_Field_Select2_Multiple' ) ) {
|
|
19 |
Â
$this->multiple = 999;
|
20 |
Â
|
21 |
Â
}
|
22 |
-
|
23 |
Â
}
|
24 |
-
|
25 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Select2_Multiple' ) ) {
|
13 |
Â
|
28 |
Â
$this->multiple = 999;
|
29 |
Â
|
30 |
Â
}
|
Â
|
|
31 |
Â
}
|
Â
|
|
32 |
Â
}
|
includes/field/class-kirki-field-select2.php
CHANGED
@@ -1,4 +1,13 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Select2' ) ) {
|
4 |
Â
/**
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Select2' ) ) {
|
13 |
Â
/**
|
includes/field/class-kirki-field-slider.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Slider' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Slider extends Kirki_Field_Number {
|
6 |
Â
|
7 |
Â
/**
|
@@ -30,7 +42,5 @@ if ( ! class_exists( 'Kirki_Field_Slider' ) ) {
|
|
30 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'number' );
|
31 |
Â
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Slider' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Slider extends Kirki_Field_Number {
|
18 |
Â
|
19 |
Â
/**
|
42 |
Â
$this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'number' );
|
43 |
Â
|
44 |
Â
}
|
Â
|
|
45 |
Â
}
|
Â
|
|
46 |
Â
}
|
includes/field/class-kirki-field-switch.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Switch' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Switch extends Kirki_Field_Checkbox {
|
6 |
Â
|
7 |
Â
/**
|
@@ -14,7 +26,5 @@ if ( ! class_exists( 'Kirki_Field_Switch' ) ) {
|
|
14 |
Â
$this->type = 'switch';
|
15 |
Â
|
16 |
Â
}
|
17 |
-
|
18 |
Â
}
|
19 |
-
|
20 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Switch' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Switch extends Kirki_Field_Checkbox {
|
18 |
Â
|
19 |
Â
/**
|
26 |
Â
$this->type = 'switch';
|
27 |
Â
|
28 |
Â
}
|
Â
|
|
29 |
Â
}
|
Â
|
|
30 |
Â
}
|
includes/field/class-kirki-field-text.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Text' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Text extends Kirki_Field_Kirki_Generic {
|
6 |
Â
|
7 |
Â
/**
|
@@ -34,7 +46,5 @@ if ( ! class_exists( 'Kirki_Field_Text' ) ) {
|
|
34 |
Â
$this->sanitize_callback = 'esc_textarea';
|
35 |
Â
|
36 |
Â
}
|
37 |
-
|
38 |
Â
}
|
39 |
-
|
40 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Text' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Text extends Kirki_Field_Kirki_Generic {
|
18 |
Â
|
19 |
Â
/**
|
46 |
Â
$this->sanitize_callback = 'esc_textarea';
|
47 |
Â
|
48 |
Â
}
|
Â
|
|
49 |
Â
}
|
Â
|
|
50 |
Â
}
|
includes/field/class-kirki-field-textarea.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Textarea' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Textarea extends Kirki_Field_Kirki_Generic {
|
6 |
Â
|
7 |
Â
/**
|
@@ -18,7 +30,5 @@ if ( ! class_exists( 'Kirki_Field_Textarea' ) ) {
|
|
18 |
Â
$this->choices['rows'] = '5';
|
19 |
Â
|
20 |
Â
}
|
21 |
-
|
22 |
Â
}
|
23 |
-
|
24 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Textarea' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Textarea extends Kirki_Field_Kirki_Generic {
|
18 |
Â
|
19 |
Â
/**
|
30 |
Â
$this->choices['rows'] = '5';
|
31 |
Â
|
32 |
Â
}
|
Â
|
|
33 |
Â
}
|
Â
|
|
34 |
Â
}
|
includes/field/class-kirki-field-toggle.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Toggle' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Toggle extends Kirki_Field_Checkbox {
|
6 |
Â
|
7 |
Â
/**
|
@@ -14,7 +26,5 @@ if ( ! class_exists( 'Kirki_Field_Toggle' ) ) {
|
|
14 |
Â
$this->type = 'toggle';
|
15 |
Â
|
16 |
Â
}
|
17 |
-
|
18 |
Â
}
|
19 |
-
|
20 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Toggle' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Toggle extends Kirki_Field_Checkbox {
|
18 |
Â
|
19 |
Â
/**
|
26 |
Â
$this->type = 'toggle';
|
27 |
Â
|
28 |
Â
}
|
Â
|
|
29 |
Â
}
|
Â
|
|
30 |
Â
}
|
includes/field/class-kirki-field-typography.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Typography' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Typography extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -35,17 +47,21 @@ if ( ! class_exists( 'Kirki_Field_Typography' ) ) {
|
|
35 |
Â
* Sanitizes typography controls
|
36 |
Â
*
|
37 |
Â
* @since 2.2.0
|
Â
|
|
38 |
Â
* @return array
|
39 |
Â
*/
|
40 |
Â
public static function sanitize( $value ) {
|
Â
|
|
41 |
Â
if ( ! is_array( $value ) ) {
|
42 |
Â
return array();
|
43 |
Â
}
|
44 |
-
|
Â
|
|
45 |
Â
if ( isset( $value['font-family'] ) ) {
|
46 |
Â
$value['font-family'] = esc_attr( $value['font-family'] );
|
47 |
Â
}
|
48 |
-
|
Â
|
|
49 |
Â
// We're adding checks for font-weight as well for backwards-compatibility
|
50 |
Â
// Versions 2.0 - 2.2 were using an integer font-weight.
|
51 |
Â
if ( isset( $value['variant'] ) || isset( $value['font-weight'] ) ) {
|
@@ -59,7 +75,8 @@ if ( ! class_exists( 'Kirki_Field_Typography' ) ) {
|
|
59 |
Â
$value['variant'] = 'regular';
|
60 |
Â
}
|
61 |
Â
}
|
62 |
-
|
Â
|
|
63 |
Â
if ( isset( $value['subset'] ) ) {
|
64 |
Â
$valid_subsets = Kirki_Fonts::get_google_font_subsets();
|
65 |
Â
$subsets_ok = array();
|
@@ -72,37 +89,43 @@ if ( ! class_exists( 'Kirki_Field_Typography' ) ) {
|
|
72 |
Â
$value['subsets'] = $subsets_ok;
|
73 |
Â
}
|
74 |
Â
}
|
75 |
-
|
Â
|
|
76 |
Â
if ( isset( $value['font-size'] ) && ! empty( $value['font-size'] ) ) {
|
77 |
Â
$value['font-size'] = Kirki_Sanitize_Values::css_dimension( $value['font-size'] );
|
78 |
-
if (
|
79 |
Â
$value['font-size'] .= 'px';
|
80 |
Â
}
|
81 |
Â
}
|
82 |
-
|
Â
|
|
83 |
Â
if ( isset( $value['line-height'] ) && ! empty( $value['line-height'] ) ) {
|
84 |
Â
$value['line-height'] = Kirki_Sanitize_Values::css_dimension( $value['line-height'] );
|
85 |
Â
}
|
86 |
-
|
Â
|
|
87 |
Â
if ( isset( $value['letter-spacing'] ) && ! empty( $value['letter-spacing'] ) ) {
|
88 |
Â
$value['letter-spacing'] = Kirki_Sanitize_Values::css_dimension( $value['letter-spacing'] );
|
89 |
-
if (
|
90 |
Â
$value['letter-spacing'] .= 'px';
|
91 |
Â
}
|
92 |
Â
}
|
93 |
-
|
Â
|
|
94 |
Â
if ( isset( $value['text-align'] ) && ! empty( $value['text-align'] ) ) {
|
95 |
Â
if ( ! in_array( $value['text-align'], array( 'inherit', 'left', 'center', 'right', 'justify' ) ) ) {
|
96 |
Â
$value['text-align'] = 'inherit';
|
97 |
Â
}
|
98 |
Â
}
|
99 |
-
|
Â
|
|
100 |
Â
if ( isset( $value['text-transform'] ) && ! empty( $value['text-transform'] ) ) {
|
101 |
Â
if ( ! in_array( $value['text-transform'], array( 'none', 'capitalize', 'uppercase', 'lowercase', 'initial', 'inherit' ) ) ) {
|
102 |
Â
$value['text-transform'] = 'none';
|
103 |
Â
}
|
104 |
Â
}
|
105 |
-
|
Â
|
|
106 |
Â
if ( isset( $value['color'] ) && ! empty( $value['color'] ) ) {
|
107 |
Â
$color = ariColor::newColor( $value['color'] );
|
108 |
Â
$value['color'] = $color->toCSS( 'hex' );
|
@@ -111,8 +134,5 @@ if ( ! class_exists( 'Kirki_Field_Typography' ) ) {
|
|
111 |
Â
return $value;
|
112 |
Â
|
113 |
Â
}
|
114 |
-
|
115 |
-
|
116 |
Â
}
|
117 |
-
|
118 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Typography' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Typography extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
47 |
Â
* Sanitizes typography controls
|
48 |
Â
*
|
49 |
Â
* @since 2.2.0
|
50 |
+
* @param array $value The value.
|
51 |
Â
* @return array
|
52 |
Â
*/
|
53 |
Â
public static function sanitize( $value ) {
|
54 |
+
|
55 |
Â
if ( ! is_array( $value ) ) {
|
56 |
Â
return array();
|
57 |
Â
}
|
58 |
+
|
59 |
+
// Escape the font-family.
|
60 |
Â
if ( isset( $value['font-family'] ) ) {
|
61 |
Â
$value['font-family'] = esc_attr( $value['font-family'] );
|
62 |
Â
}
|
63 |
+
|
64 |
+
// Make sure we're using a valid variant.
|
65 |
Â
// We're adding checks for font-weight as well for backwards-compatibility
|
66 |
Â
// Versions 2.0 - 2.2 were using an integer font-weight.
|
67 |
Â
if ( isset( $value['variant'] ) || isset( $value['font-weight'] ) ) {
|
75 |
Â
$value['variant'] = 'regular';
|
76 |
Â
}
|
77 |
Â
}
|
78 |
+
|
79 |
+
// Make sure we're using a valid subset.
|
80 |
Â
if ( isset( $value['subset'] ) ) {
|
81 |
Â
$valid_subsets = Kirki_Fonts::get_google_font_subsets();
|
82 |
Â
$subsets_ok = array();
|
89 |
Â
$value['subsets'] = $subsets_ok;
|
90 |
Â
}
|
91 |
Â
}
|
92 |
+
|
93 |
+
// Sanitize the font-size.
|
94 |
Â
if ( isset( $value['font-size'] ) && ! empty( $value['font-size'] ) ) {
|
95 |
Â
$value['font-size'] = Kirki_Sanitize_Values::css_dimension( $value['font-size'] );
|
96 |
+
if ( is_numeric( $value['font-size'] ) ) {
|
97 |
Â
$value['font-size'] .= 'px';
|
98 |
Â
}
|
99 |
Â
}
|
100 |
+
|
101 |
+
// Sanitize the line-height.
|
102 |
Â
if ( isset( $value['line-height'] ) && ! empty( $value['line-height'] ) ) {
|
103 |
Â
$value['line-height'] = Kirki_Sanitize_Values::css_dimension( $value['line-height'] );
|
104 |
Â
}
|
105 |
+
|
106 |
+
// Sanitize the letter-spacing.
|
107 |
Â
if ( isset( $value['letter-spacing'] ) && ! empty( $value['letter-spacing'] ) ) {
|
108 |
Â
$value['letter-spacing'] = Kirki_Sanitize_Values::css_dimension( $value['letter-spacing'] );
|
109 |
+
if ( is_numeric( $value['letter-spacing'] ) ) {
|
110 |
Â
$value['letter-spacing'] .= 'px';
|
111 |
Â
}
|
112 |
Â
}
|
113 |
+
|
114 |
+
// Sanitize the text-align.
|
115 |
Â
if ( isset( $value['text-align'] ) && ! empty( $value['text-align'] ) ) {
|
116 |
Â
if ( ! in_array( $value['text-align'], array( 'inherit', 'left', 'center', 'right', 'justify' ) ) ) {
|
117 |
Â
$value['text-align'] = 'inherit';
|
118 |
Â
}
|
119 |
Â
}
|
120 |
+
|
121 |
+
// Sanitize the text-transform.
|
122 |
Â
if ( isset( $value['text-transform'] ) && ! empty( $value['text-transform'] ) ) {
|
123 |
Â
if ( ! in_array( $value['text-transform'], array( 'none', 'capitalize', 'uppercase', 'lowercase', 'initial', 'inherit' ) ) ) {
|
124 |
Â
$value['text-transform'] = 'none';
|
125 |
Â
}
|
126 |
Â
}
|
127 |
+
|
128 |
+
// Sanitize the color.
|
129 |
Â
if ( isset( $value['color'] ) && ! empty( $value['color'] ) ) {
|
130 |
Â
$color = ariColor::newColor( $value['color'] );
|
131 |
Â
$value['color'] = $color->toCSS( 'hex' );
|
134 |
Â
return $value;
|
135 |
Â
|
136 |
Â
}
|
Â
|
|
Â
|
|
137 |
Â
}
|
Â
|
|
138 |
Â
}
|
includes/field/class-kirki-field-upload.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Field_Upload' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Field_Upload extends Kirki_Field {
|
6 |
Â
|
7 |
Â
/**
|
@@ -30,6 +42,5 @@ if ( ! class_exists( 'Kirki_Field_Upload' ) ) {
|
|
30 |
Â
$this->sanitize_callback = 'esc_url_raw';
|
31 |
Â
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Override field methods
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.7
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Field_Upload' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Field overrides.
|
16 |
+
*/
|
17 |
Â
class Kirki_Field_Upload extends Kirki_Field {
|
18 |
Â
|
19 |
Â
/**
|
42 |
Â
$this->sanitize_callback = 'esc_url_raw';
|
43 |
Â
|
44 |
Â
}
|
Â
|
|
45 |
Â
}
|
46 |
Â
}
|
includes/lib/class-aricolor.php
CHANGED
@@ -16,11 +16,11 @@
|
|
16 |
Â
* @category Core
|
17 |
Â
* @author Aristeides Stathopoulos
|
18 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
19 |
-
* @license http://opensource.org/licenses/
|
20 |
Â
* @since 1.0
|
21 |
Â
*/
|
22 |
Â
|
23 |
-
// Exit if accessed directly
|
24 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
25 |
Â
exit;
|
26 |
Â
}
|
16 |
Â
* @category Core
|
17 |
Â
* @author Aristeides Stathopoulos
|
18 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
19 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
20 |
Â
* @since 1.0
|
21 |
Â
*/
|
22 |
Â
|
23 |
+
// Exit if accessed directly.
|
24 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
25 |
Â
exit;
|
26 |
Â
}
|
includes/lib/class-kirki-color.php
CHANGED
@@ -7,25 +7,28 @@
|
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2015, Aristeides Stathopoulos
|
10 |
-
* @license http://opensource.org/licenses/
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
-
// Exit if accessed directly
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Color' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
final class Kirki_Color extends ariColor {
|
21 |
Â
|
22 |
Â
/**
|
23 |
Â
* A proxy for the sanitize_color method.
|
24 |
Â
*
|
25 |
-
* @param
|
26 |
-
* @param
|
27 |
-
*
|
28 |
-
* @return string The sanitized hex color.
|
29 |
Â
*/
|
30 |
Â
public static function sanitize_hex( $color = '#FFFFFF', $hash = true ) {
|
31 |
Â
if ( ! $hash ) {
|
@@ -37,8 +40,9 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
37 |
Â
/**
|
38 |
Â
* A proxy the sanitize_color method.
|
39 |
Â
*
|
40 |
-
* @
|
41 |
-
*
|
Â
|
|
42 |
Â
* @return string
|
43 |
Â
*/
|
44 |
Â
public static function sanitize_rgba( $color ) {
|
@@ -49,10 +53,11 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
49 |
Â
* Sanitize colors.
|
50 |
Â
* Determine if the current value is a hex or an rgba color and call the appropriate method.
|
51 |
Â
*
|
Â
|
|
Â
|
|
52 |
Â
* @since 0.8.5
|
53 |
-
*
|
54 |
-
* @param
|
55 |
-
*
|
56 |
Â
* @return string
|
57 |
Â
*/
|
58 |
Â
public static function sanitize_color( $color = '', $mode = 'auto' ) {
|
@@ -69,10 +74,11 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
69 |
Â
/**
|
70 |
Â
* Gets the rgb value of a color.
|
71 |
Â
*
|
72 |
-
* @
|
73 |
-
* @
|
74 |
-
*
|
75 |
-
* @
|
Â
|
|
76 |
Â
*/
|
77 |
Â
public static function get_rgb( $color, $implode = false ) {
|
78 |
Â
$obj = ariColor::newColor( $color );
|
@@ -83,22 +89,24 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
83 |
Â
}
|
84 |
Â
|
85 |
Â
/**
|
86 |
-
* A proxy for the sanitize_color method
|
87 |
-
*
|
88 |
-
* @param mixed
|
89 |
Â
*
|
90 |
-
* @
|
Â
|
|
Â
|
|
Â
|
|
91 |
Â
*/
|
92 |
Â
public static function rgba2hex( $color ) {
|
93 |
Â
return self::sanitize_color( $color, 'hex' );
|
94 |
Â
}
|
95 |
Â
|
96 |
Â
/**
|
97 |
-
* Get the alpha channel from an rgba color
|
98 |
Â
*
|
99 |
-
* @
|
100 |
-
*
|
101 |
-
* @
|
Â
|
|
102 |
Â
*/
|
103 |
Â
public static function get_alpha_from_rgba( $color ) {
|
104 |
Â
$obj = ariColor::newColor( $color );
|
@@ -108,10 +116,11 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
108 |
Â
/**
|
109 |
Â
* Gets the rgba value of the $color.
|
110 |
Â
*
|
111 |
-
* @
|
112 |
-
* @
|
113 |
-
*
|
114 |
-
* @
|
Â
|
|
115 |
Â
*/
|
116 |
Â
public static function get_rgba( $color = '#fff', $alpha = 1 ) {
|
117 |
Â
$obj = ariColor::newColor( $color );
|
@@ -119,14 +128,14 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
119 |
Â
return $obj->toCSS( 'rgba' );
|
120 |
Â
}
|
121 |
Â
// Make sure that opacity is properly formatted.
|
122 |
-
// Converts 1-100 values to 0-1
|
123 |
Â
if ( $alpha > 1 || $alpha < -1 ) {
|
124 |
-
//
|
125 |
Â
$alpha /= 100;
|
126 |
Â
}
|
127 |
-
//
|
128 |
Â
$alpha = abs( $alpha );
|
129 |
-
//
|
130 |
Â
if ( 1 < $alpha ) {
|
131 |
Â
$alpha = 1;
|
132 |
Â
}
|
@@ -137,9 +146,10 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
137 |
Â
/**
|
138 |
Â
* Strips the alpha value from an RGBA color string.
|
139 |
Â
*
|
140 |
-
* @
|
141 |
-
*
|
142 |
-
* @
|
Â
|
|
143 |
Â
*/
|
144 |
Â
public static function rgba_to_rgb( $color ) {
|
145 |
Â
$obj = ariColor::newColor( $color );
|
@@ -149,42 +159,53 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
149 |
Â
/**
|
150 |
Â
* Gets the brightness of the $hex color.
|
151 |
Â
*
|
152 |
-
* @
|
153 |
-
* @
|
Â
|
|
Â
|
|
154 |
Â
*/
|
155 |
Â
public static function get_brightness( $hex ) {
|
156 |
Â
$hex = self::sanitize_hex( $hex, false );
|
157 |
-
|
Â
|
|
158 |
Â
return intval( ( ( hexdec( substr( $hex, 0, 2 ) ) * 299 ) + ( hexdec( substr( $hex, 2, 2 ) ) * 587 ) + ( hexdec( substr( $hex, 4, 2 ) ) * 114 ) ) / 1000 );
|
159 |
Â
}
|
Â
|
|
160 |
Â
/**
|
161 |
Â
* Adjusts brightness of the $hex color.
|
162 |
Â
*
|
163 |
-
* @
|
164 |
-
* @
|
165 |
-
* @
|
Â
|
|
Â
|
|
166 |
Â
*/
|
167 |
Â
public static function adjust_brightness( $hex, $steps ) {
|
168 |
Â
$hex = self::sanitize_hex( $hex, false );
|
169 |
Â
$steps = max( -255, min( 255, $steps ) );
|
170 |
-
|
Â
|
|
171 |
Â
$red = max( 0, min( 255, hexdec( substr( $hex, 0, 2 ) ) + $steps ) );
|
172 |
Â
$green = max( 0, min( 255, hexdec( substr( $hex, 2, 2 ) ) + $steps ) );
|
173 |
Â
$blue = max( 0, min( 255, hexdec( substr( $hex, 4, 2 ) ) + $steps ) );
|
Â
|
|
174 |
Â
$red_hex = str_pad( dechex( $red ), 2, '0', STR_PAD_LEFT );
|
175 |
Â
$green_hex = str_pad( dechex( $green ), 2, '0', STR_PAD_LEFT );
|
176 |
Â
$blue_hex = str_pad( dechex( $blue ), 2, '0', STR_PAD_LEFT );
|
177 |
Â
return self::sanitize_hex( $red_hex . $green_hex . $blue_hex );
|
178 |
Â
}
|
Â
|
|
179 |
Â
/**
|
180 |
Â
* Mixes 2 hex colors.
|
181 |
-
*
|
182 |
-
* to be used it the mix. default is 50 (equal mix)
|
183 |
Â
*
|
184 |
-
* @
|
185 |
-
* @
|
186 |
-
* @param
|
187 |
-
* @
|
Â
|
|
Â
|
|
188 |
Â
*/
|
189 |
Â
public static function mix_colors( $hex1, $hex2, $percentage ) {
|
190 |
Â
$hex1 = self::sanitize_hex( $hex1, false );
|
@@ -197,21 +218,27 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
197 |
Â
$blue_hex = str_pad( dechex( $blue ), 2, '0', STR_PAD_LEFT );
|
198 |
Â
return self::sanitize_hex( $red_hex . $green_hex . $blue_hex );
|
199 |
Â
}
|
Â
|
|
200 |
Â
/**
|
201 |
-
* Convert hex color to hsv
|
202 |
Â
*
|
203 |
-
* @
|
204 |
-
* @
|
Â
|
|
Â
|
|
205 |
Â
*/
|
206 |
Â
public static function hex_to_hsv( $hex ) {
|
207 |
Â
$rgb = (array) (array) self::get_rgb( self::sanitize_hex( $hex, false ) );
|
208 |
Â
return self::rgb_to_hsv( $rgb );
|
209 |
Â
}
|
Â
|
|
210 |
Â
/**
|
211 |
-
* Convert hex color to hsv
|
212 |
Â
*
|
213 |
-
* @
|
214 |
-
* @
|
Â
|
|
Â
|
|
215 |
Â
*/
|
216 |
Â
public static function rgb_to_hsv( $color = array() ) {
|
217 |
Â
$var_r = ( $color[0] / 255 );
|
@@ -244,9 +271,16 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
244 |
Â
}
|
245 |
Â
return array( 'h' => round( $h, 2 ), 's' => round( $s, 2 ), 'v' => round( $v, 2 ) );
|
246 |
Â
}
|
247 |
-
|
Â
|
|
248 |
Â
* This is a very simple algorithm that works by summing up the differences between the three color components red, green and blue.
|
249 |
Â
* A value higher than 500 is recommended for good readability.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
250 |
Â
*/
|
251 |
Â
public static function color_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) {
|
252 |
Â
$color_1 = self::sanitize_hex( $color_1, false );
|
@@ -259,10 +293,17 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
259 |
Â
$color_diff = $r_diff + $g_diff + $b_diff;
|
260 |
Â
return $color_diff;
|
261 |
Â
}
|
262 |
-
|
Â
|
|
263 |
Â
* This function tries to compare the brightness of the colors.
|
264 |
Â
* A return value of more than 125 is recommended.
|
265 |
Â
* Combining it with the color_difference function above might make sense.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
266 |
Â
*/
|
267 |
Â
public static function brightness_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) {
|
268 |
Â
$color_1 = self::sanitize_hex( $color_1, false );
|
@@ -273,9 +314,16 @@ if ( ! class_exists( 'Kirki_Color' ) ) {
|
|
273 |
Â
$br_2 = ( 299 * $color_2_rgb[0] + 587 * $color_2_rgb[1] + 114 * $color_2_rgb[2] ) / 1000;
|
274 |
Â
return intval( abs( $br_1 - $br_2 ) );
|
275 |
Â
}
|
276 |
-
|
Â
|
|
277 |
Â
* Uses the luminosity to calculate the difference between the given colors.
|
278 |
Â
* The returned value should be bigger than 5 for best readability.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
279 |
Â
*/
|
280 |
Â
public static function lumosity_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) {
|
281 |
Â
$color_1 = self::sanitize_hex( $color_1, false );
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2015, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Color' ) ) {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Helper class for color manipulation.
|
23 |
+
*/
|
24 |
Â
final class Kirki_Color extends ariColor {
|
25 |
Â
|
26 |
Â
/**
|
27 |
Â
* A proxy for the sanitize_color method.
|
28 |
Â
*
|
29 |
+
* @param string|array $color The color.
|
30 |
+
* @param bool $hash Whether we want to include a hash (#) at the beginning or not.
|
31 |
+
* @return string The sanitized hex color.
|
Â
|
|
32 |
Â
*/
|
33 |
Â
public static function sanitize_hex( $color = '#FFFFFF', $hash = true ) {
|
34 |
Â
if ( ! $hash ) {
|
40 |
Â
/**
|
41 |
Â
* A proxy the sanitize_color method.
|
42 |
Â
*
|
43 |
+
* @static
|
44 |
+
* @access public
|
45 |
+
* @param string $color The color.
|
46 |
Â
* @return string
|
47 |
Â
*/
|
48 |
Â
public static function sanitize_rgba( $color ) {
|
53 |
Â
* Sanitize colors.
|
54 |
Â
* Determine if the current value is a hex or an rgba color and call the appropriate method.
|
55 |
Â
*
|
56 |
+
* @static
|
57 |
+
* @access public
|
58 |
Â
* @since 0.8.5
|
59 |
+
* @param string|array $color The color.
|
60 |
+
* @param string $mode The mode to be used.
|
Â
|
|
61 |
Â
* @return string
|
62 |
Â
*/
|
63 |
Â
public static function sanitize_color( $color = '', $mode = 'auto' ) {
|
74 |
Â
/**
|
75 |
Â
* Gets the rgb value of a color.
|
76 |
Â
*
|
77 |
+
* @static
|
78 |
+
* @access public
|
79 |
+
* @param string $color The color.
|
80 |
+
* @param boolean $implode Whether we want to implode the values or not.
|
81 |
+
* @return array|string
|
82 |
Â
*/
|
83 |
Â
public static function get_rgb( $color, $implode = false ) {
|
84 |
Â
$obj = ariColor::newColor( $color );
|
89 |
Â
}
|
90 |
Â
|
91 |
Â
/**
|
92 |
+
* A proxy for the sanitize_color method.
|
Â
|
|
Â
|
|
93 |
Â
*
|
94 |
+
* @static
|
95 |
+
* @access public
|
96 |
+
* @param string|array $color The color to convert.
|
97 |
+
* @return string The hex value of the color.
|
98 |
Â
*/
|
99 |
Â
public static function rgba2hex( $color ) {
|
100 |
Â
return self::sanitize_color( $color, 'hex' );
|
101 |
Â
}
|
102 |
Â
|
103 |
Â
/**
|
104 |
+
* Get the alpha channel from an rgba color.
|
105 |
Â
*
|
106 |
+
* @static
|
107 |
+
* @access public
|
108 |
+
* @param string $color The rgba color formatted like rgba(r,g,b,a).
|
109 |
+
* @return int|float The alpha value of the color.
|
110 |
Â
*/
|
111 |
Â
public static function get_alpha_from_rgba( $color ) {
|
112 |
Â
$obj = ariColor::newColor( $color );
|
116 |
Â
/**
|
117 |
Â
* Gets the rgba value of the $color.
|
118 |
Â
*
|
119 |
+
* @static
|
120 |
+
* @access public
|
121 |
+
* @param string $color The hex value of a color.
|
122 |
+
* @param int|float $alpha Opacity level (0-1).
|
123 |
+
* @return string
|
124 |
Â
*/
|
125 |
Â
public static function get_rgba( $color = '#fff', $alpha = 1 ) {
|
126 |
Â
$obj = ariColor::newColor( $color );
|
128 |
Â
return $obj->toCSS( 'rgba' );
|
129 |
Â
}
|
130 |
Â
// Make sure that opacity is properly formatted.
|
131 |
+
// Converts 1-100 values to 0-1.
|
132 |
Â
if ( $alpha > 1 || $alpha < -1 ) {
|
133 |
+
// Divide by 100.
|
134 |
Â
$alpha /= 100;
|
135 |
Â
}
|
136 |
+
// Get absolute value.
|
137 |
Â
$alpha = abs( $alpha );
|
138 |
+
// Max 1.
|
139 |
Â
if ( 1 < $alpha ) {
|
140 |
Â
$alpha = 1;
|
141 |
Â
}
|
146 |
Â
/**
|
147 |
Â
* Strips the alpha value from an RGBA color string.
|
148 |
Â
*
|
149 |
+
* @static
|
150 |
+
* @access public
|
151 |
+
* @param string $color The RGBA color string.
|
152 |
+
* @return string The corresponding RGB string.
|
153 |
Â
*/
|
154 |
Â
public static function rgba_to_rgb( $color ) {
|
155 |
Â
$obj = ariColor::newColor( $color );
|
159 |
Â
/**
|
160 |
Â
* Gets the brightness of the $hex color.
|
161 |
Â
*
|
162 |
+
* @static
|
163 |
+
* @access public
|
164 |
+
* @param string $hex The hex value of a color.
|
165 |
+
* @return int Value between 0 and 255.
|
166 |
Â
*/
|
167 |
Â
public static function get_brightness( $hex ) {
|
168 |
Â
$hex = self::sanitize_hex( $hex, false );
|
169 |
+
|
170 |
+
// Returns brightness value from 0 to 255.
|
171 |
Â
return intval( ( ( hexdec( substr( $hex, 0, 2 ) ) * 299 ) + ( hexdec( substr( $hex, 2, 2 ) ) * 587 ) + ( hexdec( substr( $hex, 4, 2 ) ) * 114 ) ) / 1000 );
|
172 |
Â
}
|
173 |
+
|
174 |
Â
/**
|
175 |
Â
* Adjusts brightness of the $hex color.
|
176 |
Â
*
|
177 |
+
* @static
|
178 |
+
* @access public
|
179 |
+
* @param string $hex The hex value of a color.
|
180 |
+
* @param integer $steps Should be between -255 and 255. Negative = darker, positive = lighter.
|
181 |
+
* @return string Returns hex color.
|
182 |
Â
*/
|
183 |
Â
public static function adjust_brightness( $hex, $steps ) {
|
184 |
Â
$hex = self::sanitize_hex( $hex, false );
|
185 |
Â
$steps = max( -255, min( 255, $steps ) );
|
186 |
+
|
187 |
+
// Adjust number of steps and keep it inside 0 to 255.
|
188 |
Â
$red = max( 0, min( 255, hexdec( substr( $hex, 0, 2 ) ) + $steps ) );
|
189 |
Â
$green = max( 0, min( 255, hexdec( substr( $hex, 2, 2 ) ) + $steps ) );
|
190 |
Â
$blue = max( 0, min( 255, hexdec( substr( $hex, 4, 2 ) ) + $steps ) );
|
191 |
+
|
192 |
Â
$red_hex = str_pad( dechex( $red ), 2, '0', STR_PAD_LEFT );
|
193 |
Â
$green_hex = str_pad( dechex( $green ), 2, '0', STR_PAD_LEFT );
|
194 |
Â
$blue_hex = str_pad( dechex( $blue ), 2, '0', STR_PAD_LEFT );
|
195 |
Â
return self::sanitize_hex( $red_hex . $green_hex . $blue_hex );
|
196 |
Â
}
|
197 |
+
|
198 |
Â
/**
|
199 |
Â
* Mixes 2 hex colors.
|
200 |
+
* The "percentage" variable is the percent of the first color.
|
201 |
+
* to be used it the mix. default is 50 (equal mix).
|
202 |
Â
*
|
203 |
+
* @static
|
204 |
+
* @access public
|
205 |
+
* @param string|false $hex1 Color.
|
206 |
+
* @param string|false $hex2 Color.
|
207 |
+
* @param int $percentage A value between 0 and 100.
|
208 |
+
* @return string Returns hex color.
|
209 |
Â
*/
|
210 |
Â
public static function mix_colors( $hex1, $hex2, $percentage ) {
|
211 |
Â
$hex1 = self::sanitize_hex( $hex1, false );
|
218 |
Â
$blue_hex = str_pad( dechex( $blue ), 2, '0', STR_PAD_LEFT );
|
219 |
Â
return self::sanitize_hex( $red_hex . $green_hex . $blue_hex );
|
220 |
Â
}
|
221 |
+
|
222 |
Â
/**
|
223 |
+
* Convert hex color to hsv.
|
224 |
Â
*
|
225 |
+
* @static
|
226 |
+
* @access public
|
227 |
+
* @param string $hex The hex value of color 1.
|
228 |
+
* @return array Returns array( 'h', 's', 'v' ).
|
229 |
Â
*/
|
230 |
Â
public static function hex_to_hsv( $hex ) {
|
231 |
Â
$rgb = (array) (array) self::get_rgb( self::sanitize_hex( $hex, false ) );
|
232 |
Â
return self::rgb_to_hsv( $rgb );
|
233 |
Â
}
|
234 |
+
|
235 |
Â
/**
|
236 |
+
* Convert hex color to hsv.
|
237 |
Â
*
|
238 |
+
* @static
|
239 |
+
* @access public
|
240 |
+
* @param string $color The rgb color to convert array( 'r', 'g', 'b' ).
|
241 |
+
* @return array Returns array( 'h', 's', 'v' ).
|
242 |
Â
*/
|
243 |
Â
public static function rgb_to_hsv( $color = array() ) {
|
244 |
Â
$var_r = ( $color[0] / 255 );
|
271 |
Â
}
|
272 |
Â
return array( 'h' => round( $h, 2 ), 's' => round( $s, 2 ), 'v' => round( $v, 2 ) );
|
273 |
Â
}
|
274 |
+
|
275 |
+
/**
|
276 |
Â
* This is a very simple algorithm that works by summing up the differences between the three color components red, green and blue.
|
277 |
Â
* A value higher than 500 is recommended for good readability.
|
278 |
+
*
|
279 |
+
* @static
|
280 |
+
* @access public
|
281 |
+
* @param string $color_1 The 1st color.
|
282 |
+
* @param string $color_2 The 2nd color.
|
283 |
+
* @return string
|
284 |
Â
*/
|
285 |
Â
public static function color_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) {
|
286 |
Â
$color_1 = self::sanitize_hex( $color_1, false );
|
293 |
Â
$color_diff = $r_diff + $g_diff + $b_diff;
|
294 |
Â
return $color_diff;
|
295 |
Â
}
|
296 |
+
|
297 |
+
/**
|
298 |
Â
* This function tries to compare the brightness of the colors.
|
299 |
Â
* A return value of more than 125 is recommended.
|
300 |
Â
* Combining it with the color_difference function above might make sense.
|
301 |
+
*
|
302 |
+
* @static
|
303 |
+
* @access public
|
304 |
+
* @param string $color_1 The 1st color.
|
305 |
+
* @param string $color_2 The 2nd color.
|
306 |
+
* @return string
|
307 |
Â
*/
|
308 |
Â
public static function brightness_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) {
|
309 |
Â
$color_1 = self::sanitize_hex( $color_1, false );
|
314 |
Â
$br_2 = ( 299 * $color_2_rgb[0] + 587 * $color_2_rgb[1] + 114 * $color_2_rgb[2] ) / 1000;
|
315 |
Â
return intval( abs( $br_1 - $br_2 ) );
|
316 |
Â
}
|
317 |
+
|
318 |
+
/**
|
319 |
Â
* Uses the luminosity to calculate the difference between the given colors.
|
320 |
Â
* The returned value should be bigger than 5 for best readability.
|
321 |
+
*
|
322 |
+
* @static
|
323 |
+
* @access public
|
324 |
+
* @param string $color_1 The 1st color.
|
325 |
+
* @param string $color_2 The 2nd color.
|
326 |
+
* @return string
|
327 |
Â
*/
|
328 |
Â
public static function lumosity_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) {
|
329 |
Â
$color_1 = self::sanitize_hex( $color_1, false );
|
includes/output/class-kirki-output.php
CHANGED
@@ -1,179 +1,207 @@
|
|
1 |
Â
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
* @var array
|
14 |
-
*/
|
15 |
-
protected $output = array();
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @access protected
|
19 |
-
* @var array
|
20 |
-
*/
|
21 |
-
protected $styles = array();
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @access protected
|
25 |
-
* @var string|array
|
26 |
-
*/
|
27 |
-
protected $value;
|
28 |
Â
|
29 |
Â
/**
|
30 |
-
*
|
31 |
-
*
|
32 |
-
* @access public
|
33 |
-
* @param $config_id string
|
34 |
-
* @param $output array
|
35 |
-
* @param $value string|array
|
36 |
Â
*/
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
45 |
Â
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
Â
|
|
Â
|
|
Â
|
|
60 |
Â
}
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
return str_replace( '$', $value, $output['value_pattern'] );
|
66 |
Â
}
|
67 |
-
}
|
68 |
Â
|
69 |
-
|
70 |
-
}
|
71 |
Â
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
92 |
Â
}
|
93 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
94 |
Â
}
|
95 |
-
|
96 |
-
continue;
|
97 |
-
}
|
98 |
Â
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
103 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
104 |
Â
|
105 |
-
$
|
106 |
-
$this->process_output( $output, $value );
|
107 |
Â
}
|
108 |
-
}
|
109 |
Â
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
122 |
Â
}
|
123 |
-
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
124 |
-
$output['prefix'] = ( isset( $output['prefix'] ) ) ? $output['prefix'] : '';
|
125 |
-
$output['units'] = ( isset( $output['units'] ) ) ? $output['units'] : '';
|
126 |
-
$output['suffix'] = ( isset( $output['suffix'] ) ) ? $output['suffix'] : '';
|
127 |
Â
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
protected function process_property_value( $property, $value ) {
|
142 |
-
$properties = apply_filters( 'kirki/' . $this->config_id . '/output/property-classnames', array(
|
143 |
-
'font-family' => 'Kirki_Output_Property_Font_Family',
|
144 |
-
'background-image' => 'Kirki_Output_Property_Background_Image',
|
145 |
-
'background-position' => 'Kirki_Output_Property_Background_Position',
|
146 |
-
) );
|
147 |
-
if ( array_key_exists( $property, $properties ) ) {
|
148 |
-
$classname = $properties[ $property ];
|
149 |
-
$obj = new $classname( $property, $value );
|
150 |
-
return $obj->get_value();
|
151 |
Â
}
|
152 |
-
return $value;
|
153 |
-
}
|
154 |
Â
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
protected function process_value( $value, $output ) {
|
164 |
-
if ( isset( $output['property'] ) ) {
|
165 |
-
return $this->process_property_value( $output['property'], $value );
|
166 |
Â
}
|
167 |
-
return $value;
|
168 |
-
}
|
169 |
-
|
170 |
-
/**
|
171 |
-
* Exploses the private $styles property to the world
|
172 |
-
*
|
173 |
-
* @access protected
|
174 |
-
* @return array
|
175 |
-
*/
|
176 |
-
public function get_styles() {
|
177 |
-
return $this->styles;
|
178 |
Â
}
|
179 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for fields.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
if ( ! class_exists( 'Kirki_Output' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
13 |
Â
|
14 |
Â
/**
|
15 |
+
* Handles field CSS output.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
16 |
Â
*/
|
17 |
+
class Kirki_Output {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* The Kirki configuration used in the field.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
protected $config_id = 'global';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* The field's `output` argument.
|
29 |
+
*
|
30 |
+
* @access protected
|
31 |
+
* @var array
|
32 |
+
*/
|
33 |
+
protected $output = array();
|
34 |
+
|
35 |
+
/**
|
36 |
+
* An array of the generated styles.
|
37 |
+
*
|
38 |
+
* @access protected
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
+
protected $styles = array();
|
42 |
+
|
43 |
+
/**
|
44 |
+
* The value.
|
45 |
+
*
|
46 |
+
* @access protected
|
47 |
+
* @var string|array
|
48 |
+
*/
|
49 |
+
protected $value;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* The class constructor.
|
53 |
+
*
|
54 |
+
* @access public
|
55 |
+
* @param string $config_id The config ID.
|
56 |
+
* @param array $output The output argument.
|
57 |
+
* @param string|array $value The value.
|
58 |
+
*/
|
59 |
+
public function __construct( $config_id, $output, $value ) {
|
60 |
+
|
61 |
+
$this->config_id = $config_id;
|
62 |
+
$this->value = $value;
|
63 |
+
$this->output = $output;
|
64 |
+
|
65 |
+
$this->parse_output();
|
66 |
+
}
|
67 |
Â
|
68 |
+
/**
|
69 |
+
* If we have a sanitize_callback defined, apply it to the value.
|
70 |
+
*
|
71 |
+
* @param array $output The output args.
|
72 |
+
* @param string|array $value The value.
|
73 |
+
*
|
74 |
+
* @return string|array
|
75 |
+
*/
|
76 |
+
protected function apply_sanitize_callback( $output, $value ) {
|
77 |
+
|
78 |
+
if ( isset( $output['sanitize_callback'] ) && null !== $output['sanitize_callback'] ) {
|
79 |
+
|
80 |
+
// If the sanitize_callback is invalid, return the value.
|
81 |
+
if ( ! is_callable( $output['sanitize_callback'] ) ) {
|
82 |
+
return $value;
|
83 |
+
}
|
84 |
+
return call_user_func( $output['sanitize_callback'], $this->value );
|
85 |
Â
}
|
86 |
+
if ( isset( $output['value_pattern'] ) && ! empty( $output['value_pattern'] ) ) {
|
87 |
+
if ( is_string( $output['value_pattern'] ) ) {
|
88 |
+
return str_replace( '$', $value, $output['value_pattern'] );
|
89 |
+
}
|
Â
|
|
90 |
Â
}
|
Â
|
|
91 |
Â
|
92 |
+
return $value;
|
Â
|
|
93 |
Â
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Parses the output arguments.
|
98 |
+
* Calls the process_output method for each of them.
|
99 |
+
*
|
100 |
+
* @access protected
|
101 |
+
*/
|
102 |
+
protected function parse_output() {
|
103 |
+
foreach ( $this->output as $output ) {
|
104 |
+
$skip = false;
|
105 |
+
|
106 |
+
// Apply any sanitization callbacks defined.
|
107 |
+
$value = $this->apply_sanitize_callback( $output, $this->value );
|
108 |
+
|
109 |
+
// No need to proceed this if the current value is the same as in the "exclude" value.
|
110 |
+
if ( isset( $output['exclude'] ) && false !== $output['exclude'] && is_array( $output['exclude'] ) ) {
|
111 |
+
foreach ( $output['exclude'] as $exclude ) {
|
112 |
+
if ( $skip ) {
|
113 |
+
continue;
|
114 |
+
}
|
115 |
+
|
116 |
+
// Skip for empty values, or if value is defined as excluded.
|
117 |
+
if ( empty( $value ) || $exclude == $value ) {
|
118 |
+
$skip = true;
|
119 |
+
}
|
120 |
Â
}
|
121 |
Â
}
|
122 |
+
if ( $skip ) {
|
123 |
+
continue;
|
124 |
+
}
|
125 |
+
|
126 |
+
if ( isset( $output['element'] ) && is_array( $output['element'] ) ) {
|
127 |
+
$output['element'] = array_unique( $output['element'] );
|
128 |
+
sort( $output['element'] );
|
129 |
+
$output['element'] = implode( ',', $output['element'] );
|
130 |
+
}
|
131 |
+
|
132 |
+
$value = $this->process_value( $value, $output );
|
133 |
+
$this->process_output( $output, $value );
|
134 |
Â
}
|
135 |
+
}
|
Â
|
|
Â
|
|
136 |
Â
|
137 |
+
/**
|
138 |
+
* Parses an output and creates the styles array for it.
|
139 |
+
*
|
140 |
+
* @access protected
|
141 |
+
* @param array $output The field output.
|
142 |
+
* @param string $value The value.
|
143 |
+
*
|
144 |
+
* @return void
|
145 |
+
*/
|
146 |
+
protected function process_output( $output, $value ) {
|
147 |
+
if ( ! isset( $output['element'] ) || ! isset( $output['property'] ) ) {
|
148 |
+
return;
|
149 |
Â
}
|
150 |
+
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
151 |
+
$output['prefix'] = ( isset( $output['prefix'] ) ) ? $output['prefix'] : '';
|
152 |
+
$output['units'] = ( isset( $output['units'] ) ) ? $output['units'] : '';
|
153 |
+
$output['suffix'] = ( isset( $output['suffix'] ) ) ? $output['suffix'] : '';
|
154 |
Â
|
155 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $output['prefix'] . $value . $output['units'] . $output['suffix'];
|
Â
|
|
156 |
Â
}
|
Â
|
|
157 |
Â
|
158 |
+
/**
|
159 |
+
* Some CSS properties are unique.
|
160 |
+
* We need to tweak the value to make everything works as expected.
|
161 |
+
*
|
162 |
+
* @access protected
|
163 |
+
* @param string $property The CSS property.
|
164 |
+
* @param string $value The value.
|
165 |
+
*
|
166 |
+
* @return array
|
167 |
+
*/
|
168 |
+
protected function process_property_value( $property, $value ) {
|
169 |
+
$properties = apply_filters( 'kirki/' . $this->config_id . '/output/property-classnames', array(
|
170 |
+
'font-family' => 'Kirki_Output_Property_Font_Family',
|
171 |
+
'background-image' => 'Kirki_Output_Property_Background_Image',
|
172 |
+
'background-position' => 'Kirki_Output_Property_Background_Position',
|
173 |
+
) );
|
174 |
+
if ( array_key_exists( $property, $properties ) ) {
|
175 |
+
$classname = $properties[ $property ];
|
176 |
+
$obj = new $classname( $property, $value );
|
177 |
+
return $obj->get_value();
|
178 |
+
}
|
179 |
+
return $value;
|
180 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
181 |
Â
|
182 |
+
/**
|
183 |
+
* Returns the value.
|
184 |
+
*
|
185 |
+
* @access protected
|
186 |
+
* @param string|array $value The value.
|
187 |
+
* @param array $output The field "output".
|
188 |
+
* @return string|array
|
189 |
+
*/
|
190 |
+
protected function process_value( $value, $output ) {
|
191 |
+
if ( isset( $output['property'] ) ) {
|
192 |
+
return $this->process_property_value( $output['property'], $value );
|
193 |
+
}
|
194 |
+
return $value;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
195 |
Â
}
|
Â
|
|
Â
|
|
196 |
Â
|
197 |
+
/**
|
198 |
+
* Exploses the private $styles property to the world
|
199 |
+
*
|
200 |
+
* @access protected
|
201 |
+
* @return array
|
202 |
+
*/
|
203 |
+
public function get_styles() {
|
204 |
+
return $this->styles;
|
Â
|
|
Â
|
|
Â
|
|
205 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
206 |
Â
}
|
207 |
Â
}
|
includes/output/field/class-kirki-output-field-multicolor.php
CHANGED
@@ -1,37 +1,57 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
class Kirki_Output_Field_Multicolor extends Kirki_Output {
|
4 |
-
|
5 |
-
protected function process_output( $output, $value ) {
|
6 |
-
|
7 |
-
foreach ( $value as $key => $sub_value ) {
|
8 |
-
|
9 |
-
// If "choice" is not defined, there's no reason to continue
|
10 |
-
if ( ! isset( $output['choice'] ) ) {
|
11 |
-
return;
|
12 |
-
}
|
13 |
-
|
14 |
-
// If "element" is not defined, there's no reason to continue
|
15 |
-
if ( ! isset( $output['element'] ) ) {
|
16 |
-
return;
|
17 |
-
}
|
18 |
-
|
19 |
-
// If the "choice" is not the same as the $key in our loop, there's no reason to proceed.
|
20 |
-
if ( $key != $output['choice'] ) {
|
21 |
-
return;
|
22 |
Â
}
|
23 |
-
|
24 |
-
// If "property" is not defined, fallback to "color".
|
25 |
-
$output['property'] = ( ! isset( $output['property'] ) || empty( $output['property'] ) ) ? 'color' : $output['property'] = 'color';
|
26 |
-
|
27 |
-
// If "media_query" is not defined, use "global".
|
28 |
-
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
29 |
-
|
30 |
-
// Create the styles
|
31 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $sub_value;
|
32 |
-
|
33 |
Â
}
|
34 |
-
|
35 |
Â
}
|
36 |
-
|
37 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for multicolor fields.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
if ( ! class_exists( 'Kirki_Output_Field_Multicolor' ) ) {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Output overrides.
|
16 |
+
*/
|
17 |
+
class Kirki_Output_Field_Multicolor extends Kirki_Output {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Processes a single item from the `output` array.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
* @param array $output The `output` item.
|
24 |
+
* @param array $value The field's value.
|
25 |
+
*/
|
26 |
+
protected function process_output( $output, $value ) {
|
27 |
+
|
28 |
+
foreach ( $value as $key => $sub_value ) {
|
29 |
+
|
30 |
+
// If "choice" is not defined, there's no reason to continue.
|
31 |
+
if ( ! isset( $output['choice'] ) ) {
|
32 |
+
continue;
|
33 |
+
}
|
34 |
+
|
35 |
+
// If "element" is not defined, there's no reason to continue.
|
36 |
+
if ( ! isset( $output['element'] ) ) {
|
37 |
+
continue;
|
38 |
+
}
|
39 |
+
|
40 |
+
// If the "choice" is not the same as the $key in our loop, there's no reason to proceed.
|
41 |
+
if ( $key != $output['choice'] ) {
|
42 |
+
continue;
|
43 |
+
}
|
44 |
+
|
45 |
+
// If "property" is not defined, fallback to "color".
|
46 |
+
$output['property'] = ( ! isset( $output['property'] ) || empty( $output['property'] ) ) ? 'color' : $output['property'] = 'color';
|
47 |
+
|
48 |
+
// If "media_query" is not defined, use "global".
|
49 |
+
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
50 |
+
|
51 |
+
// Create the styles.
|
52 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $sub_value;
|
53 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
54 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
55 |
Â
}
|
Â
|
|
56 |
Â
}
|
Â
|
|
57 |
Â
}
|
includes/output/field/class-kirki-output-field-spacing.php
CHANGED
@@ -1,21 +1,43 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
-
foreach ( $value as $key => $sub_value ) {
|
8 |
-
if ( ! isset( $output['property'] ) || empty( $output['property'] ) ) {
|
9 |
-
$property = $key;
|
10 |
-
} elseif ( false !== strpos( $output['property'], '%%' ) ) {
|
11 |
-
$property = str_replace( '%%', $key, $output['property'] );
|
12 |
-
} else {
|
13 |
-
$property = $output['property'] . '-' . $key;
|
14 |
Â
}
|
15 |
-
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
16 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ][ $property ] = $sub_value;
|
17 |
Â
}
|
18 |
-
|
19 |
Â
}
|
20 |
-
|
21 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for spacing fields.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Output_Field_Spacing' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Output overrides.
|
16 |
+
*/
|
17 |
+
class Kirki_Output_Field_Spacing extends Kirki_Output {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Processes a single item from the `output` array.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
* @param array $output The `output` item.
|
24 |
+
* @param array $value The field's value.
|
25 |
+
*/
|
26 |
+
protected function process_output( $output, $value ) {
|
27 |
+
|
28 |
+
foreach ( $value as $key => $sub_value ) {
|
29 |
+
|
30 |
+
if ( ! isset( $output['property'] ) || empty( $output['property'] ) ) {
|
31 |
+
$property = $key;
|
32 |
+
} elseif ( false !== strpos( $output['property'], '%%' ) ) {
|
33 |
+
$property = str_replace( '%%', $key, $output['property'] );
|
34 |
+
} else {
|
35 |
+
$property = $output['property'] . '-' . $key;
|
36 |
+
}
|
37 |
+
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
38 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ][ $property ] = $sub_value;
|
39 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
40 |
Â
}
|
Â
|
|
Â
|
|
41 |
Â
}
|
Â
|
|
42 |
Â
}
|
Â
|
|
43 |
Â
}
|
includes/output/field/class-kirki-output-field-typography.php
CHANGED
@@ -1,61 +1,90 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
6 |
-
|
7 |
-
|
Â
|
|
8 |
Â
|
9 |
-
|
10 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
11 |
Â
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
12 |
-
$
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
//
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
$
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
}
|
34 |
-
}
|
35 |
-
// Take care of font-size
|
36 |
-
if ( isset( $value['font-size'] ) && ! empty( $value['font-size'] ) ) {
|
37 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ]['font-size'] = $value['font-size'];
|
38 |
-
}
|
39 |
-
// Take care of line-height
|
40 |
-
if ( isset( $value['line-height'] ) && ! empty( $value['line-height'] ) ) {
|
41 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ]['line-height'] = $value['line-height'];
|
42 |
-
}
|
43 |
-
// Take care of letter-spacing
|
44 |
-
if ( isset( $value['letter-spacing'] ) && ! empty( $value['letter-spacing'] ) ) {
|
45 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ]['letter-spacing'] = $value['letter-spacing'];
|
46 |
-
}
|
47 |
-
// Take care of text-align
|
48 |
-
if ( isset( $value['text-align'] ) && ! empty( $value['text-align'] ) ) {
|
49 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ]['text-align'] = $value['text-align'];
|
50 |
-
}
|
51 |
-
// Take care of text-transform
|
52 |
-
if ( isset( $value['text-transform'] ) && ! empty( $value['text-transform'] ) ) {
|
53 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ]['text-transform'] = $value['text-transform'];
|
54 |
-
}
|
55 |
-
// Take care of color
|
56 |
-
if ( isset( $value['color'] ) && ! empty( $value['color'] ) ) {
|
57 |
-
$this->styles[ $output['media_query'] ][ $output['element'] ]['color'] = $value['color'];
|
58 |
Â
}
|
59 |
Â
}
|
60 |
-
|
61 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for typography fields.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Output_Field_Typography' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Output overrides.
|
16 |
+
*/
|
17 |
+
class Kirki_Output_Field_Typography extends Kirki_Output {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Processes a single item from the `output` array.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
* @param array $output The `output` item.
|
24 |
+
* @param array $value The field's value.
|
25 |
+
*/
|
26 |
+
protected function process_output( $output, $value ) {
|
27 |
Â
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
28 |
+
$output['element'] = ( isset( $output['element'] ) ) ? $output['element'] : 'body';
|
29 |
+
|
30 |
+
// Take care of font-families.
|
31 |
+
if ( isset( $value['font-family'] ) && ! empty( $value['font-family'] ) ) {
|
32 |
+
$output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global';
|
33 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['font-family'] = $this->process_property_value( 'font-family', $value['font-family'] );
|
34 |
+
}
|
35 |
+
|
36 |
+
// Add support for the older font-weight parameter.
|
37 |
+
// This has been deprecated so the code below is just to add some backwards-compatibility.
|
38 |
+
// Once a user visits their customizer and make changes to their typography,
|
39 |
+
// new values are saved and this one is no longer used.
|
40 |
+
if ( isset( $value['font-weight'] ) && ! empty( $value['font-weight'] ) ) {
|
41 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['font-weight'] = $value['font-weight'];
|
42 |
+
}
|
43 |
+
|
44 |
+
// Take care of variants.
|
45 |
+
if ( isset( $value['variant'] ) && ! empty( $value['variant'] ) ) {
|
46 |
+
|
47 |
+
// Get the font_weight.
|
48 |
+
$font_weight = str_replace( 'italic', '', $value['variant'] );
|
49 |
+
$font_weight = ( in_array( $font_weight, array( '', 'regular' ) ) ) ? '400' : $font_weight;
|
50 |
+
|
51 |
+
// Is this italic?
|
52 |
+
$is_italic = ( false !== strpos( $value['variant'], 'italic' ) );
|
53 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['font-weight'] = $font_weight;
|
54 |
+
if ( $is_italic ) {
|
55 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['font-style'] = 'italic';
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
// Take care of font-size.
|
60 |
+
if ( isset( $value['font-size'] ) && ! empty( $value['font-size'] ) ) {
|
61 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['font-size'] = $value['font-size'];
|
62 |
+
}
|
63 |
+
|
64 |
+
// Take care of line-height.
|
65 |
+
if ( isset( $value['line-height'] ) && ! empty( $value['line-height'] ) ) {
|
66 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['line-height'] = $value['line-height'];
|
67 |
+
}
|
68 |
+
|
69 |
+
// Take care of letter-spacing.
|
70 |
+
if ( isset( $value['letter-spacing'] ) && ! empty( $value['letter-spacing'] ) ) {
|
71 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['letter-spacing'] = $value['letter-spacing'];
|
72 |
+
}
|
73 |
+
|
74 |
+
// Take care of text-align.
|
75 |
+
if ( isset( $value['text-align'] ) && ! empty( $value['text-align'] ) ) {
|
76 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['text-align'] = $value['text-align'];
|
77 |
+
}
|
78 |
+
|
79 |
+
// Take care of text-transform.
|
80 |
+
if ( isset( $value['text-transform'] ) && ! empty( $value['text-transform'] ) ) {
|
81 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['text-transform'] = $value['text-transform'];
|
82 |
+
}
|
83 |
+
|
84 |
+
// Take care of color.
|
85 |
+
if ( isset( $value['color'] ) && ! empty( $value['color'] ) ) {
|
86 |
+
$this->styles[ $output['media_query'] ][ $output['element'] ]['color'] = $value['color'];
|
87 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
88 |
Â
}
|
89 |
Â
}
|
Â
|
|
90 |
Â
}
|
includes/output/property/class-kirki-output-property-background-image.php
CHANGED
@@ -1,16 +1,34 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
-
|
8 |
-
|
9 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
10 |
Â
}
|
11 |
-
$this->value = 'url("' . $this->value . '")';
|
12 |
Â
}
|
13 |
-
|
14 |
Â
}
|
15 |
-
|
16 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for background-image.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Output_Property_Background_Image' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Output overrides.
|
16 |
+
*/
|
17 |
+
class Kirki_Output_Property_Background_Image extends Kirki_Output_Property {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Modifies the value.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
*/
|
24 |
+
protected function process_value() {
|
25 |
+
|
26 |
+
if ( false === strrpos( $this->value, 'url(' ) ) {
|
27 |
+
if ( empty( $this->value ) ) {
|
28 |
+
return;
|
29 |
+
}
|
30 |
+
$this->value = 'url("' . $this->value . '")';
|
31 |
Â
}
|
Â
|
|
32 |
Â
}
|
Â
|
|
33 |
Â
}
|
Â
|
|
34 |
Â
}
|
includes/output/property/class-kirki-output-property-background-position.php
CHANGED
@@ -1,52 +1,75 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
if ( false !== strpos( $this->value, 'calc' ) ) {
|
10 |
-
return;
|
11 |
-
}
|
12 |
-
// If the value is initial or inherit, we don't need to do anything.
|
13 |
-
// Just exit.
|
14 |
-
if ( 'initial' == $this->value || 'inherit' == $this->value ) {
|
15 |
-
return;
|
16 |
-
}
|
17 |
Â
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
Â
|
|
23 |
Â
|
24 |
-
$
|
25 |
-
$y = trim( $xy[1] );
|
26 |
Â
|
27 |
-
// If
|
28 |
-
|
29 |
-
|
Â
|
|
30 |
Â
}
|
31 |
-
|
32 |
-
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
}
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
if ( false !== strpos( $this->value,
|
40 |
-
$
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
41 |
Â
}
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
48 |
Â
}
|
49 |
-
$this->value = $x . ' ' . $y;
|
50 |
Â
}
|
51 |
-
|
52 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for background-position.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Output_Property_Background_Position' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Output overrides.
|
16 |
+
*/
|
17 |
+
class Kirki_Output_Property_Background_Position extends Kirki_Output_Property {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Modifies the value.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
*/
|
24 |
+
protected function process_value() {
|
25 |
Â
|
26 |
+
$this->value = trim( $this->value );
|
Â
|
|
27 |
Â
|
28 |
+
// If you use calc() there, I suppose you know what you're doing.
|
29 |
+
// No need to process this any further, just exit.
|
30 |
+
if ( false !== strpos( $this->value, 'calc' ) ) {
|
31 |
+
return;
|
32 |
Â
}
|
33 |
+
|
34 |
+
// If the value is initial or inherit, we don't need to do anything.
|
35 |
+
// Just exit.
|
36 |
+
if ( 'initial' == $this->value || 'inherit' == $this->value ) {
|
37 |
+
return;
|
38 |
Â
}
|
39 |
+
|
40 |
+
$x_dimensions = array( 'left', 'center', 'right' );
|
41 |
+
$y_dimensions = array( 'top', 'center', 'bottom' );
|
42 |
+
|
43 |
+
// If there's a space, we have an X and a Y value.
|
44 |
+
if ( false !== strpos( $this->value, ' ' ) ) {
|
45 |
+
$xy = explode( ' ', $this->value );
|
46 |
+
|
47 |
+
$x = trim( $xy[0] );
|
48 |
+
$y = trim( $xy[1] );
|
49 |
+
|
50 |
+
// If x is not left/center/right, we need to sanitize it.
|
51 |
+
if ( ! in_array( $x, $x_dimensions ) ) {
|
52 |
+
$x = Kirki_Sanitize_Values::css_dimension( $x );
|
53 |
+
}
|
54 |
+
if ( ! in_array( $y, $y_dimensions ) ) {
|
55 |
+
$y = Kirki_Sanitize_Values::css_dimension( $y );
|
56 |
+
}
|
57 |
+
$this->value = $x . ' ' . $y;
|
58 |
+
return;
|
59 |
Â
}
|
60 |
+
$x = 'center';
|
61 |
+
foreach ( $x_dimensions as $x_dimension ) {
|
62 |
+
if ( false !== strpos( $this->value, $x_dimension ) ) {
|
63 |
+
$x = $x_dimension;
|
64 |
+
}
|
65 |
Â
}
|
66 |
+
$y = 'center';
|
67 |
+
foreach ( $y_dimensions as $y_dimension ) {
|
68 |
+
if ( false !== strpos( $this->value, $y_dimension ) ) {
|
69 |
+
$y = $y_dimension;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
$this->value = $x . ' ' . $y;
|
73 |
Â
}
|
Â
|
|
74 |
Â
}
|
Â
|
|
75 |
Â
}
|
includes/output/property/class-kirki-output-property-font-family.php
CHANGED
@@ -1,38 +1,55 @@
|
|
1 |
Â
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
}
|
24 |
Â
}
|
25 |
-
}
|
26 |
-
|
27 |
-
} else {
|
28 |
Â
|
29 |
-
|
30 |
-
|
31 |
-
|
Â
|
|
32 |
Â
}
|
33 |
-
|
34 |
Â
}
|
35 |
-
|
36 |
Â
}
|
37 |
-
|
38 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS output for font-family.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
if ( ! class_exists( 'Kirki_Output_Property_Font_Family' ) ) {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Output overrides.
|
16 |
+
*/
|
17 |
+
class Kirki_Output_Property_Font_Family extends Kirki_Output_Property {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Modifies the value.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
*/
|
24 |
+
protected function process_value() {
|
25 |
+
|
26 |
+
$google_fonts_array = Kirki_Fonts::get_google_fonts();
|
27 |
+
$backup_fonts = Kirki_Fonts::get_backup_fonts();
|
28 |
+
|
29 |
+
// Hack for standard fonts.
|
30 |
+
$this->value = str_replace( '"', '"', $this->value );
|
31 |
+
|
32 |
+
// Add backup font.
|
33 |
+
if ( Kirki_Fonts::is_google_font( $this->value ) ) {
|
34 |
+
|
35 |
+
if ( isset( $google_fonts_array[ $this->value ] ) && isset( $google_fonts_array[ $this->value ]['category'] ) ) {
|
36 |
+
if ( isset( $backup_fonts[ $google_fonts_array[ $this->value ]['category'] ] ) ) {
|
37 |
+
|
38 |
+
// Add double quotes if needed.
|
39 |
+
if ( false !== strpos( $this->value, ' ' ) && false === strpos( $this->value, '"' ) ) {
|
40 |
+
$this->value = '"' . $this->value . '", ' . $backup_fonts[ $google_fonts_array[ $this->value ]['category'] ];
|
41 |
+
} else {
|
42 |
+
$this->value .= ', ' . $backup_fonts[ $google_fonts_array[ $this->value ]['category'] ];
|
43 |
+
}
|
44 |
Â
}
|
45 |
Â
}
|
46 |
+
} else {
|
Â
|
|
Â
|
|
47 |
Â
|
48 |
+
// Add double quotes if needed.
|
49 |
+
if ( false !== strpos( $this->value, ' ' ) && false === strpos( $this->value, '"' ) ) {
|
50 |
+
$this->value = '"' . $this->value . '"';
|
51 |
+
}
|
52 |
Â
}
|
Â
|
|
53 |
Â
}
|
Â
|
|
54 |
Â
}
|
Â
|
|
55 |
Â
}
|
includes/output/property/class-kirki-output-property.php
CHANGED
@@ -1,22 +1,67 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
6 |
-
|
Â
|
|
Â
|
|
7 |
Â
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
Â
|
|
Â
|
|
13 |
Â
|
14 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
15 |
Â
|
16 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
17 |
Â
|
18 |
-
|
19 |
-
|
20 |
-
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Handles CSS properties.
|
4 |
+
* Extend this class in order to handle exceptions.
|
5 |
+
*
|
6 |
+
* @package Kirki
|
7 |
+
* @subpackage Controls
|
8 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 2.2.0
|
11 |
+
*/
|
12 |
Â
|
13 |
+
if ( ! class_exists( 'Kirki_Output_Property' ) ) {
|
14 |
Â
|
15 |
+
/**
|
16 |
+
* Output for CSS properties.
|
17 |
+
*/
|
18 |
+
class Kirki_Output_Property {
|
19 |
Â
|
20 |
+
/**
|
21 |
+
* The property we're modifying.
|
22 |
+
*
|
23 |
+
* @access protected
|
24 |
+
* @var string
|
25 |
+
*/
|
26 |
+
protected $property;
|
27 |
Â
|
28 |
+
/**
|
29 |
+
* The value
|
30 |
+
*
|
31 |
+
* @access protected
|
32 |
+
* @var string|array
|
33 |
+
*/
|
34 |
+
protected $value;
|
35 |
Â
|
36 |
+
/**
|
37 |
+
* Constructor.
|
38 |
+
*
|
39 |
+
* @access public
|
40 |
+
* @param string $property The CSS property we're modifying.
|
41 |
+
* @param mixed $value The value.
|
42 |
+
*/
|
43 |
+
public function __construct( $property, $value ) {
|
44 |
+
$this->property = $property;
|
45 |
+
$this->value = $value;
|
46 |
+
$this->process_value();
|
47 |
+
}
|
48 |
Â
|
49 |
+
/**
|
50 |
+
* Modifies the value.
|
51 |
+
*
|
52 |
+
* @access protected
|
53 |
+
*/
|
54 |
+
protected function process_value() {
|
55 |
Â
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Gets the value.
|
60 |
+
*
|
61 |
+
* @access protected
|
62 |
+
*/
|
63 |
+
public function get_value() {
|
64 |
+
return $this->value;
|
65 |
+
}
|
66 |
+
}
|
67 |
Â
}
|
includes/panels/class-kirki-panels-default-panel.php
CHANGED
@@ -1,7 +1,29 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* The default panel.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Panels_Default_Panel' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Default Panel.
|
16 |
+
*/
|
17 |
+
class Kirki_Panels_Default_Panel extends WP_Customize_Panel {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* The panel type.
|
21 |
+
*
|
22 |
+
* @access public
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $type = 'kirki-default';
|
26 |
+
|
27 |
+
}
|
28 |
Â
|
29 |
Â
}
|
includes/panels/class-kirki-panels-expanded-panel.php
CHANGED
@@ -1,29 +1,66 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
14 |
Â
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
</div>
|
25 |
-
|
26 |
-
|
27 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
}
|
29 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* An expanded panel.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Panels_Expanded_Panel' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Expanded Panel.
|
16 |
+
*/
|
17 |
+
class Kirki_Panels_Expanded_Panel extends WP_Customize_Panel {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* The panel type.
|
21 |
+
*
|
22 |
+
* @access public
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $type = 'kirki-expanded';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* An Underscore (JS) template for rendering this panel's container.
|
29 |
+
* Class variables for this panel class are available in the `data` JS object;
|
30 |
+
* export custom variables by overriding WP_Customize_Panel::json().
|
31 |
+
*
|
32 |
+
* @see WP_Customize_Panel::print_template()
|
33 |
+
* @access protected
|
34 |
+
*/
|
35 |
+
protected function render_template() {
|
36 |
+
?>
|
37 |
+
<li id="accordion-panel-{{ data.id }}" class="control-section control-panel control-panel-{{ data.type }}">
|
38 |
+
<ul class="accordion-sub-container control-panel-content"></ul>
|
39 |
+
</li>
|
40 |
+
<?php
|
41 |
+
}
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* An Underscore (JS) template for this panel's content (but not its container).
|
45 |
+
* Class variables for this panel class are available in the `data` JS object;
|
46 |
+
* export custom variables by overriding WP_Customize_Panel::json().
|
47 |
+
*
|
48 |
+
* @see WP_Customize_Panel::print_template()
|
49 |
+
* @access protected
|
50 |
+
*/
|
51 |
+
protected function content_template() {
|
52 |
+
?>
|
53 |
+
<li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
|
54 |
+
<div class="accordion-section-title">
|
55 |
+
<strong class="panel-title">{{ data.title }}</strong>
|
56 |
Â
</div>
|
57 |
+
<# if ( data.description ) { #>
|
58 |
+
<div class="description customize-panel-description">
|
59 |
+
{{{ data.description }}}
|
60 |
+
</div>
|
61 |
+
<# } #>
|
62 |
+
</li>
|
63 |
+
<?php
|
64 |
+
}
|
65 |
Â
}
|
66 |
Â
}
|
includes/scripts/class-kirki-scripts-icons.php
CHANGED
@@ -6,27 +6,37 @@
|
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
-
* @license http://opensource.org/licenses/
|
10 |
-
* @since
|
11 |
Â
*/
|
12 |
Â
|
13 |
-
// Exit if accessed directly
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Scripts_Icons' ) ) {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
class Kirki_Scripts_Icons {
|
21 |
Â
|
22 |
Â
/**
|
23 |
-
* string.
|
24 |
Â
* The script generated for ALL fields
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
*/
|
26 |
Â
public static $icons_script = '';
|
Â
|
|
27 |
Â
/**
|
28 |
-
* boolean.
|
29 |
Â
* Whether the script has already been added to the customizer or not.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
*/
|
31 |
Â
public static $script_added = false;
|
32 |
Â
|
@@ -41,7 +51,9 @@ if ( ! class_exists( 'Kirki_Scripts_Icons' ) ) {
|
|
41 |
Â
* This works on a per-field basis.
|
42 |
Â
* Once created, the script is added to the $icons_script property.
|
43 |
Â
*
|
44 |
-
* @
|
Â
|
|
Â
|
|
45 |
Â
* @return void
|
46 |
Â
*/
|
47 |
Â
public static function generate_script( $args = array() ) {
|
@@ -53,6 +65,7 @@ if ( ! class_exists( 'Kirki_Scripts_Icons' ) ) {
|
|
53 |
Â
if ( ! isset( $args['icon'] ) || '' == $args['icon'] ) {
|
54 |
Â
return;
|
55 |
Â
}
|
Â
|
|
56 |
Â
/**
|
57 |
Â
* If this is not a panel or section
|
58 |
Â
* then no need to proceed.
|
@@ -60,6 +73,7 @@ if ( ! class_exists( 'Kirki_Scripts_Icons' ) ) {
|
|
60 |
Â
if ( ! isset( $args['context'] ) || ! in_array( $args['context'], array( 'panel', 'section' ) ) ) {
|
61 |
Â
return;
|
62 |
Â
}
|
Â
|
|
63 |
Â
/**
|
64 |
Â
* If the panel or section ID is not defined
|
65 |
Â
* then early exit.
|
@@ -83,15 +97,12 @@ if ( ! class_exists( 'Kirki_Scripts_Icons' ) ) {
|
|
83 |
Â
|
84 |
Â
/**
|
85 |
Â
* Format the script in a way that will be compatible with WordPress.
|
86 |
-
*
|
87 |
-
* @return void (echoes the script)
|
88 |
Â
*/
|
89 |
Â
public function enqueue_script() {
|
90 |
Â
if ( ! self::$script_added && '' != self::$icons_script ) {
|
91 |
Â
self::$script_added = true;
|
92 |
-
echo '<script>jQuery(document).ready(function($) { "use strict"; ' . self::$icons_script . '});</script>';
|
93 |
Â
}
|
94 |
Â
}
|
95 |
-
|
96 |
Â
}
|
97 |
Â
}
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 2.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
+
// Exit if accessed directly.
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Scripts_Icons' ) ) {
|
19 |
Â
|
20 |
+
/**
|
21 |
+
* Adds scripts for icons in sections & panels.
|
22 |
+
*/
|
23 |
Â
class Kirki_Scripts_Icons {
|
24 |
Â
|
25 |
Â
/**
|
Â
|
|
26 |
Â
* The script generated for ALL fields
|
27 |
+
*
|
28 |
+
* @static
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
Â
*/
|
32 |
Â
public static $icons_script = '';
|
33 |
+
|
34 |
Â
/**
|
Â
|
|
35 |
Â
* Whether the script has already been added to the customizer or not.
|
36 |
+
*
|
37 |
+
* @static
|
38 |
+
* @access public
|
39 |
+
* @var bool
|
40 |
Â
*/
|
41 |
Â
public static $script_added = false;
|
42 |
Â
|
51 |
Â
* This works on a per-field basis.
|
52 |
Â
* Once created, the script is added to the $icons_script property.
|
53 |
Â
*
|
54 |
+
* @static
|
55 |
+
* @access public
|
56 |
+
* @param array $args The field definition.
|
57 |
Â
* @return void
|
58 |
Â
*/
|
59 |
Â
public static function generate_script( $args = array() ) {
|
65 |
Â
if ( ! isset( $args['icon'] ) || '' == $args['icon'] ) {
|
66 |
Â
return;
|
67 |
Â
}
|
68 |
+
|
69 |
Â
/**
|
70 |
Â
* If this is not a panel or section
|
71 |
Â
* then no need to proceed.
|
73 |
Â
if ( ! isset( $args['context'] ) || ! in_array( $args['context'], array( 'panel', 'section' ) ) ) {
|
74 |
Â
return;
|
75 |
Â
}
|
76 |
+
|
77 |
Â
/**
|
78 |
Â
* If the panel or section ID is not defined
|
79 |
Â
* then early exit.
|
97 |
Â
|
98 |
Â
/**
|
99 |
Â
* Format the script in a way that will be compatible with WordPress.
|
Â
|
|
Â
|
|
100 |
Â
*/
|
101 |
Â
public function enqueue_script() {
|
102 |
Â
if ( ! self::$script_added && '' != self::$icons_script ) {
|
103 |
Â
self::$script_added = true;
|
104 |
+
echo '<script>jQuery(document).ready(function($) { "use strict"; ' . wp_kses_post( self::$icons_script ) . '});</script>';
|
105 |
Â
}
|
106 |
Â
}
|
Â
|
|
107 |
Â
}
|
108 |
Â
}
|
includes/scripts/class-kirki-scripts-loading.php
CHANGED
@@ -1,24 +1,39 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Scripts_Loading' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Scripts_Loading {
|
6 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
7 |
Â
public function __construct() {
|
8 |
Â
global $wp_customize;
|
9 |
Â
if ( ! $wp_customize ) {
|
10 |
Â
return;
|
11 |
Â
}
|
12 |
-
|
13 |
-
|
14 |
-
*/
|
15 |
Â
$config = apply_filters( 'kirki/config', array() );
|
16 |
Â
if ( isset( $config['disable_loader'] ) && true === $config['disable_loader'] ) {
|
17 |
Â
return;
|
18 |
Â
}
|
19 |
-
|
20 |
-
|
21 |
-
*/
|
22 |
Â
add_action( 'wp_footer', array( $this, 'add_loader_to_footer' ) );
|
23 |
Â
add_action( 'wp_head', array( $this, 'add_loader_styles_to_header' ), 99 );
|
24 |
Â
$this->remove_default_loading_styles();
|
@@ -26,15 +41,24 @@ if ( ! class_exists( 'Kirki_Scripts_Loading' ) ) {
|
|
26 |
Â
|
27 |
Â
/**
|
28 |
Â
* Adds a custom "loading" div $ its styles when changes are made to the customizer.
|
Â
|
|
Â
|
|
29 |
Â
*/
|
30 |
-
public function add_loader_to_footer() {
|
Â
|
|
31 |
Â
<div class="kirki-customizer-loading-wrapper">
|
32 |
Â
<span class="kirki-customizer-loading"></span>
|
33 |
Â
</div>
|
34 |
Â
<?php
|
35 |
Â
}
|
36 |
Â
|
37 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
38 |
Â
<style>
|
39 |
Â
body.wp-customizer-unloading {
|
40 |
Â
opacity: 1;
|
@@ -57,7 +81,7 @@ if ( ! class_exists( 'Kirki_Scripts_Loading' ) ) {
|
|
57 |
Â
opacity: 0;
|
58 |
Â
-webkit-transition: opacity 0.5s;
|
59 |
Â
transition: opacity 0.5s;
|
60 |
-
background-image: url("<?php echo Kirki::$url; ?>/assets/images/kirki-logo.svg");
|
61 |
Â
background-repeat: no-repeat;
|
62 |
Â
background-position: center center;
|
63 |
Â
}
|
@@ -99,11 +123,14 @@ if ( ! class_exists( 'Kirki_Scripts_Loading' ) ) {
|
|
99 |
Â
<?php
|
100 |
Â
}
|
101 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
102 |
Â
public function remove_default_loading_styles() {
|
103 |
Â
global $wp_customize;
|
104 |
Â
remove_action( 'wp_head', array( $wp_customize, 'customize_preview_loading_style' ) );
|
105 |
Â
}
|
106 |
-
|
107 |
Â
}
|
108 |
-
|
109 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Adds a custom loading icon when the previewer refreshes.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Scripts_Loading' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Modifies the loading overlay.
|
16 |
+
*/
|
17 |
Â
class Kirki_Scripts_Loading {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Constructor.
|
21 |
+
*
|
22 |
+
* @access public
|
23 |
+
*/
|
24 |
Â
public function __construct() {
|
25 |
Â
global $wp_customize;
|
26 |
Â
if ( ! $wp_customize ) {
|
27 |
Â
return;
|
28 |
Â
}
|
29 |
+
|
30 |
+
// Allow disabling the custom loader using the kirki/config filter.
|
Â
|
|
31 |
Â
$config = apply_filters( 'kirki/config', array() );
|
32 |
Â
if ( isset( $config['disable_loader'] ) && true === $config['disable_loader'] ) {
|
33 |
Â
return;
|
34 |
Â
}
|
35 |
+
|
36 |
+
// Add the "loading" icon.
|
Â
|
|
37 |
Â
add_action( 'wp_footer', array( $this, 'add_loader_to_footer' ) );
|
38 |
Â
add_action( 'wp_head', array( $this, 'add_loader_styles_to_header' ), 99 );
|
39 |
Â
$this->remove_default_loading_styles();
|
41 |
Â
|
42 |
Â
/**
|
43 |
Â
* Adds a custom "loading" div $ its styles when changes are made to the customizer.
|
44 |
+
*
|
45 |
+
* @access public
|
46 |
Â
*/
|
47 |
+
public function add_loader_to_footer() {
|
48 |
+
?>
|
49 |
Â
<div class="kirki-customizer-loading-wrapper">
|
50 |
Â
<span class="kirki-customizer-loading"></span>
|
51 |
Â
</div>
|
52 |
Â
<?php
|
53 |
Â
}
|
54 |
Â
|
55 |
+
/**
|
56 |
+
* Adds the loader CSS to our `<head>`.
|
57 |
+
*
|
58 |
+
* @access public
|
59 |
+
*/
|
60 |
+
public function add_loader_styles_to_header() {
|
61 |
+
?>
|
62 |
Â
<style>
|
63 |
Â
body.wp-customizer-unloading {
|
64 |
Â
opacity: 1;
|
81 |
Â
opacity: 0;
|
82 |
Â
-webkit-transition: opacity 0.5s;
|
83 |
Â
transition: opacity 0.5s;
|
84 |
+
background-image: url("<?php echo esc_url_raw( Kirki::$url ); ?>/assets/images/kirki-logo.svg");
|
85 |
Â
background-repeat: no-repeat;
|
86 |
Â
background-position: center center;
|
87 |
Â
}
|
123 |
Â
<?php
|
124 |
Â
}
|
125 |
Â
|
126 |
+
/**
|
127 |
+
* Removes the default loader styles from WP Core.
|
128 |
+
*
|
129 |
+
* @access public
|
130 |
+
*/
|
131 |
Â
public function remove_default_loading_styles() {
|
132 |
Â
global $wp_customize;
|
133 |
Â
remove_action( 'wp_head', array( $wp_customize, 'customize_preview_loading_style' ) );
|
134 |
Â
}
|
Â
|
|
135 |
Â
}
|
Â
|
|
136 |
Â
}
|
includes/scripts/class-kirki-scripts-tooltips.php
CHANGED
@@ -6,27 +6,37 @@
|
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
-
* @license http://opensource.org/licenses/
|
10 |
-
* @since
|
11 |
Â
*/
|
12 |
Â
|
13 |
-
// Exit if accessed directly
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Scripts_Tooltips' ) ) {
|
19 |
Â
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
class Kirki_Scripts_Tooltips {
|
21 |
Â
|
22 |
Â
/**
|
23 |
-
* string.
|
24 |
Â
* The script generated for ALL fields
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
*/
|
26 |
Â
public static $tooltip_script = '';
|
Â
|
|
27 |
Â
/**
|
28 |
-
* boolean.
|
29 |
Â
* Whether the script has already been added to the customizer or not.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
*/
|
31 |
Â
public static $script_added = false;
|
32 |
Â
|
@@ -42,7 +52,7 @@ if ( ! class_exists( 'Kirki_Scripts_Tooltips' ) ) {
|
|
42 |
Â
* This works on a per-field basis.
|
43 |
Â
* Once created, the script is added to the $tooltip_script property.
|
44 |
Â
*
|
45 |
-
* @param array
|
46 |
Â
* @return void
|
47 |
Â
*/
|
48 |
Â
public static function generate_script( $args = array() ) {
|
@@ -101,16 +111,12 @@ if ( ! class_exists( 'Kirki_Scripts_Tooltips' ) ) {
|
|
101 |
Â
|
102 |
Â
/**
|
103 |
Â
* Format the script in a way that will be compatible with WordPress.
|
104 |
-
*
|
105 |
-
* @return void (echoes the script)
|
106 |
Â
*/
|
107 |
Â
public function enqueue_script() {
|
108 |
Â
if ( ! self::$script_added && '' != self::$tooltip_script ) {
|
109 |
Â
self::$script_added = true;
|
110 |
-
echo '<script>jQuery(document).ready(function($) { "use strict"; ' . self::$tooltip_script . '});</script>';
|
111 |
Â
}
|
112 |
Â
}
|
113 |
-
|
114 |
Â
}
|
115 |
-
|
116 |
Â
}
|
6 |
Â
* @category Core
|
7 |
Â
* @author Aristeides Stathopoulos
|
8 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
9 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
10 |
+
* @since 2.0
|
11 |
Â
*/
|
12 |
Â
|
13 |
+
// Exit if accessed directly.
|
14 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
Â
exit;
|
16 |
Â
}
|
17 |
Â
|
18 |
Â
if ( ! class_exists( 'Kirki_Scripts_Tooltips' ) ) {
|
19 |
Â
|
20 |
+
/**
|
21 |
+
* Adds script for tooltips.
|
22 |
+
*/
|
23 |
Â
class Kirki_Scripts_Tooltips {
|
24 |
Â
|
25 |
Â
/**
|
Â
|
|
26 |
Â
* The script generated for ALL fields
|
27 |
+
*
|
28 |
+
* @static
|
29 |
+
* @access public
|
30 |
+
* @var string
|
31 |
Â
*/
|
32 |
Â
public static $tooltip_script = '';
|
33 |
+
|
34 |
Â
/**
|
Â
|
|
35 |
Â
* Whether the script has already been added to the customizer or not.
|
36 |
+
*
|
37 |
+
* @static
|
38 |
+
* @access public
|
39 |
+
* @var bool
|
40 |
Â
*/
|
41 |
Â
public static $script_added = false;
|
42 |
Â
|
52 |
Â
* This works on a per-field basis.
|
53 |
Â
* Once created, the script is added to the $tooltip_script property.
|
54 |
Â
*
|
55 |
+
* @param array $args The field definition.
|
56 |
Â
* @return void
|
57 |
Â
*/
|
58 |
Â
public static function generate_script( $args = array() ) {
|
111 |
Â
|
112 |
Â
/**
|
113 |
Â
* Format the script in a way that will be compatible with WordPress.
|
Â
|
|
Â
|
|
114 |
Â
*/
|
115 |
Â
public function enqueue_script() {
|
116 |
Â
if ( ! self::$script_added && '' != self::$tooltip_script ) {
|
117 |
Â
self::$script_added = true;
|
118 |
+
echo '<script>jQuery(document).ready(function($) { "use strict"; ' . wp_kses_post( self::$tooltip_script ) . '});</script>';
|
119 |
Â
}
|
120 |
Â
}
|
Â
|
|
121 |
Â
}
|
Â
|
|
122 |
Â
}
|
includes/sections/class-kirki-sections-default-section.php
CHANGED
@@ -1,52 +1,70 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
-
|
5 |
-
public $type = 'kirki-default';
|
6 |
Â
|
7 |
Â
/**
|
8 |
-
*
|
9 |
-
*
|
10 |
-
* Class variables for this section class are available in the `data` JS object;
|
11 |
-
* export custom variables by overriding WP_Customize_Section::json().
|
12 |
-
*
|
13 |
-
* @since 4.3.0
|
14 |
-
* @access protected
|
15 |
-
*
|
16 |
-
* @see WP_Customize_Section::print_template()
|
17 |
Â
*/
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
45 |
Â
</div>
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
51 |
Â
}
|
52 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* The default section.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Sections_Default_Section' ) ) {
|
Â
|
|
Â
|
|
13 |
Â
|
14 |
Â
/**
|
15 |
+
* Default Section.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
16 |
Â
*/
|
17 |
+
class Kirki_Sections_Default_Section extends WP_Customize_Section {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* The section type.
|
21 |
+
*
|
22 |
+
* @access public
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $type = 'kirki-default';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* An Underscore (JS) template for rendering this section.
|
29 |
+
*
|
30 |
+
* Class variables for this section class are available in the `data` JS object;
|
31 |
+
* export custom variables by overriding WP_Customize_Section::json().
|
32 |
+
*
|
33 |
+
* @access protected
|
34 |
+
*/
|
35 |
+
protected function render_template() {
|
36 |
+
$l10n = Kirki_l10n::get_strings();
|
37 |
+
?>
|
38 |
+
<li id="accordion-section-{{ data.id }}" class="accordion-section control-section control-section-{{ data.type }}">
|
39 |
+
<h3 class="accordion-section-title" tabindex="0">
|
40 |
+
{{ data.title }}
|
41 |
+
<span class="screen-reader-text"><?php echo esc_html( $l10n['open-section'] ); ?></span>
|
42 |
+
</h3>
|
43 |
+
<ul class="accordion-section-content">
|
44 |
+
<li class="customize-section-description-container">
|
45 |
+
<div class="customize-section-title">
|
46 |
+
<button class="customize-section-back" tabindex="-1">
|
47 |
+
<span class="screen-reader-text"><?php echo esc_html( $l10n['back'] ); ?></span>
|
48 |
+
</button>
|
49 |
+
<h3>
|
50 |
+
<span class="customize-action">
|
51 |
+
{{{ data.customizeAction }}}
|
52 |
+
</span>
|
53 |
+
{{ data.title }}
|
54 |
+
<a href="#" class="kirki-reset-section" data-reset-section-id="{{ data.id }}">
|
55 |
+
<?php echo wp_kses_post( $l10n['reset-with-icon'] ); ?>
|
56 |
+
</a>
|
57 |
+
</h3>
|
58 |
Â
</div>
|
59 |
+
<# if ( data.description ) { #>
|
60 |
+
<div class="description customize-section-description">
|
61 |
+
{{{ data.description }}}
|
62 |
+
</div>
|
63 |
+
<# } #>
|
64 |
+
</li>
|
65 |
+
</ul>
|
66 |
+
</li>
|
67 |
+
<?php
|
68 |
+
}
|
69 |
Â
}
|
70 |
Â
}
|
includes/sections/class-kirki-sections-expanded-section.php
CHANGED
@@ -1,27 +1,56 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
</div>
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
}
|
27 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* An expanded section.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Sections_Expanded_Section' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Expanded Section.
|
16 |
+
*/
|
17 |
+
class Kirki_Sections_Expanded_Section extends WP_Customize_Section {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* The section type.
|
21 |
+
*
|
22 |
+
* @access public
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $type = 'kirki-expanded';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* An Underscore (JS) template for rendering this section.
|
29 |
+
*
|
30 |
+
* Class variables for this section class are available in the `data` JS object;
|
31 |
+
* export custom variables by overriding WP_Customize_Section::json().
|
32 |
+
*
|
33 |
+
* @access protected
|
34 |
+
*/
|
35 |
+
protected function render_template() {
|
36 |
+
?>
|
37 |
+
<li id="accordion-section-{{ data.id }}" class="accordion-section control-section control-section-{{ data.type }}">
|
38 |
+
<ul class="accordion-section-content">
|
39 |
+
<li class="customize-section-description-container">
|
40 |
+
<div class="customize-section-title">
|
41 |
+
<h3>
|
42 |
+
{{ data.title }}
|
43 |
+
</h3>
|
44 |
Â
</div>
|
45 |
+
<# if ( data.description ) { #>
|
46 |
+
<div class="description customize-section-description">
|
47 |
+
{{{ data.description }}}
|
48 |
+
</div>
|
49 |
+
<# } #>
|
50 |
+
</li>
|
51 |
+
</ul>
|
52 |
+
</li>
|
53 |
+
<?php
|
54 |
+
}
|
55 |
Â
}
|
56 |
Â
}
|
includes/sections/class-kirki-sections-hover-section.php
CHANGED
@@ -1,37 +1,66 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
-
|
4 |
Â
|
5 |
-
|
Â
|
|
Â
|
|
Â
|
|
6 |
Â
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
</div>
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
36 |
Â
}
|
37 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Hover sections.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
+
if ( ! class_exists( 'Kirki_Sections_Hover_Section' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Hover Section.
|
16 |
+
*/
|
17 |
+
class Kirki_Sections_Hover_Section extends WP_Customize_Section {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* The section type.
|
21 |
+
*
|
22 |
+
* @access public
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $type = 'kirki-hover';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* An Underscore (JS) template for rendering this section.
|
29 |
+
*
|
30 |
+
* Class variables for this section class are available in the `data` JS object;
|
31 |
+
* export custom variables by overriding WP_Customize_Section::json().
|
32 |
+
*
|
33 |
+
* @access protected
|
34 |
+
*/
|
35 |
+
protected function render_template() {
|
36 |
+
?>
|
37 |
+
<li id="accordion-section-{{ data.id }}" class="accordion-section control-section control-section-{{ data.type }}">
|
38 |
+
<h3 class="accordion-section-title" tabindex="0">
|
39 |
+
{{ data.title }}
|
40 |
+
<span class="screen-reader-text"><?php esc_html_e( 'Press return or enter to open this section', 'kirki' ); ?></span>
|
41 |
+
</h3>
|
42 |
+
<ul class="accordion-section-content">
|
43 |
+
<li class="customize-section-description-container">
|
44 |
+
<div class="customize-section-title">
|
45 |
+
<button class="customize-section-back" tabindex="-1">
|
46 |
+
<span class="screen-reader-text"><?php esc_html_e( 'Back', 'kirki' ); ?></span>
|
47 |
+
</button>
|
48 |
+
<h3>
|
49 |
+
<span class="customize-action">
|
50 |
+
{{{ data.customizeAction }}}
|
51 |
+
</span>
|
52 |
+
{{ data.title }}
|
53 |
+
</h3>
|
54 |
Â
</div>
|
55 |
+
<# if ( data.description ) { #>
|
56 |
+
<div class="description customize-section-description">
|
57 |
+
{{{ data.description }}}
|
58 |
+
</div>
|
59 |
+
<# } #>
|
60 |
+
</li>
|
61 |
+
</ul>
|
62 |
+
</li>
|
63 |
+
<?php
|
64 |
+
}
|
65 |
Â
}
|
66 |
Â
}
|
includes/settings/class-kirki-settings-default-setting.php
CHANGED
@@ -1,7 +1,19 @@
|
|
1 |
Â
<?php
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
2 |
Â
|
3 |
Â
if ( ! class_exists( 'Kirki_Settings_Default_Setting' ) ) {
|
4 |
Â
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
class Kirki_Settings_Default_Setting extends WP_Customize_Setting {}
|
6 |
Â
|
7 |
Â
}
|
1 |
Â
<?php
|
2 |
+
/**
|
3 |
+
* Default settings class.
|
4 |
+
*
|
5 |
+
* @package Kirki
|
6 |
+
* @subpackage Controls
|
7 |
+
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.0
|
10 |
+
*/
|
11 |
Â
|
12 |
Â
if ( ! class_exists( 'Kirki_Settings_Default_Setting' ) ) {
|
13 |
Â
|
14 |
+
/**
|
15 |
+
* Default Settings
|
16 |
+
*/
|
17 |
Â
class Kirki_Settings_Default_Setting extends WP_Customize_Setting {}
|
18 |
Â
|
19 |
Â
}
|
includes/settings/class-kirki-settings-repeater-setting.php
CHANGED
@@ -5,26 +5,45 @@
|
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
-
* @license http://opensource.org/licenses/
|
9 |
-
* @since
|
10 |
Â
*/
|
11 |
Â
|
12 |
-
// Exit if accessed directly
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Settings_Repeater_Setting' ) ) {
|
18 |
Â
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
class Kirki_Settings_Repeater_Setting extends WP_Customize_Setting {
|
20 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
public function __construct( $manager, $id, $args = array() ) {
|
22 |
Â
parent::__construct( $manager, $id, $args );
|
23 |
Â
|
24 |
-
// Will onvert the setting from JSON to array. Must be triggered very soon
|
25 |
Â
add_filter( "customize_sanitize_{$this->id}", array( $this, 'sanitize_repeater_setting' ), 10, 1 );
|
26 |
Â
}
|
27 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public function value() {
|
29 |
Â
$value = parent::value();
|
30 |
Â
if ( ! is_array( $value ) ) {
|
@@ -35,10 +54,10 @@ if ( ! class_exists( 'Kirki_Settings_Repeater_Setting' ) ) {
|
|
35 |
Â
}
|
36 |
Â
|
37 |
Â
/**
|
38 |
-
* Convert the JSON encoded setting coming from Customizer to an Array
|
39 |
-
*
|
40 |
-
* @param $value URL Encoded JSON Value
|
41 |
Â
*
|
Â
|
|
Â
|
|
42 |
Â
* @return array
|
43 |
Â
*/
|
44 |
Â
public function sanitize_repeater_setting( $value ) {
|
@@ -48,7 +67,7 @@ if ( ! class_exists( 'Kirki_Settings_Repeater_Setting' ) ) {
|
|
48 |
Â
}
|
49 |
Â
$sanitized = ( empty( $value ) || ! is_array( $value ) ) ? array() : $value;
|
50 |
Â
|
51 |
-
// Make sure that every row is an array, not an object
|
52 |
Â
foreach ( $sanitized as $key => $_value ) {
|
53 |
Â
if ( empty( $_value ) ) {
|
54 |
Â
unset( $sanitized[ $key ] );
|
@@ -57,13 +76,11 @@ if ( ! class_exists( 'Kirki_Settings_Repeater_Setting' ) ) {
|
|
57 |
Â
}
|
58 |
Â
}
|
59 |
Â
|
60 |
-
// Reindex array
|
61 |
Â
$sanitized = array_values( $sanitized );
|
62 |
Â
|
63 |
Â
return $sanitized;
|
64 |
Â
|
65 |
Â
}
|
66 |
-
|
67 |
Â
}
|
68 |
-
|
69 |
Â
}
|
5 |
Â
* @package Kirki
|
6 |
Â
* @subpackage Controls
|
7 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
8 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
9 |
+
* @since 2.0
|
10 |
Â
*/
|
11 |
Â
|
12 |
+
// Exit if accessed directly.
|
13 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
Â
exit;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
if ( ! class_exists( 'Kirki_Settings_Repeater_Setting' ) ) {
|
18 |
Â
|
19 |
+
/**
|
20 |
+
* Repeater Settings.
|
21 |
+
*/
|
22 |
Â
class Kirki_Settings_Repeater_Setting extends WP_Customize_Setting {
|
23 |
Â
|
24 |
+
/**
|
25 |
+
* Constructor.
|
26 |
+
*
|
27 |
+
* Any supplied $args override class property defaults.
|
28 |
+
*
|
29 |
+
* @access public
|
30 |
+
* @param WP_Customize_Manager $manager The WordPress WP_Customize_Manager object.
|
31 |
+
* @param string $id A specific ID of the setting. Can be a theme mod or option name.
|
32 |
+
* @param array $args Setting arguments.
|
33 |
+
*/
|
34 |
Â
public function __construct( $manager, $id, $args = array() ) {
|
35 |
Â
parent::__construct( $manager, $id, $args );
|
36 |
Â
|
37 |
+
// Will onvert the setting from JSON to array. Must be triggered very soon.
|
38 |
Â
add_filter( "customize_sanitize_{$this->id}", array( $this, 'sanitize_repeater_setting' ), 10, 1 );
|
39 |
Â
}
|
40 |
Â
|
41 |
+
/**
|
42 |
+
* Fetch the value of the setting.
|
43 |
+
*
|
44 |
+
* @access public
|
45 |
+
* @return mixed The value.
|
46 |
+
*/
|
47 |
Â
public function value() {
|
48 |
Â
$value = parent::value();
|
49 |
Â
if ( ! is_array( $value ) ) {
|
54 |
Â
}
|
55 |
Â
|
56 |
Â
/**
|
57 |
+
* Convert the JSON encoded setting coming from Customizer to an Array.
|
Â
|
|
Â
|
|
58 |
Â
*
|
59 |
+
* @access public
|
60 |
+
* @param string $value URL Encoded JSON Value.
|
61 |
Â
* @return array
|
62 |
Â
*/
|
63 |
Â
public function sanitize_repeater_setting( $value ) {
|
67 |
Â
}
|
68 |
Â
$sanitized = ( empty( $value ) || ! is_array( $value ) ) ? array() : $value;
|
69 |
Â
|
70 |
+
// Make sure that every row is an array, not an object.
|
71 |
Â
foreach ( $sanitized as $key => $_value ) {
|
72 |
Â
if ( empty( $_value ) ) {
|
73 |
Â
unset( $sanitized[ $key ] );
|
76 |
Â
}
|
77 |
Â
}
|
78 |
Â
|
79 |
+
// Reindex array.
|
80 |
Â
$sanitized = array_values( $sanitized );
|
81 |
Â
|
82 |
Â
return $sanitized;
|
83 |
Â
|
84 |
Â
}
|
Â
|
|
85 |
Â
}
|
Â
|
|
86 |
Â
}
|
includes/styles/class-kirki-styles-customizer.php
CHANGED
@@ -9,62 +9,146 @@
|
|
9 |
Â
* @category Core
|
10 |
Â
* @author Aristeides Stathopoulos
|
11 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
12 |
-
* @license http://opensource.org/licenses/
|
13 |
Â
* @since 1.0
|
14 |
Â
*/
|
15 |
Â
|
16 |
-
// Exit if accessed directly
|
17 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
18 |
Â
exit;
|
19 |
Â
}
|
20 |
Â
|
21 |
Â
if ( ! class_exists( 'Kirki_Styles_Customizer' ) ) {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
class Kirki_Styles_Customizer {
|
24 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public $color_back = false;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
public $color_font = false;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public $color_accent;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public $border_color;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
29 |
Â
public $buttons_color;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
public $controls_color;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
31 |
Â
public $arrows_color;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
32 |
Â
public $color_accent_text;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
public $section_background_color;
|
34 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
35 |
Â
public $process = false;
|
36 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
37 |
Â
public function __construct() {
|
38 |
Â
add_action( 'customize_controls_print_styles', array( $this, 'customizer_styles' ), 99 );
|
39 |
Â
}
|
40 |
Â
|
41 |
Â
/**
|
42 |
Â
* Enqueue the stylesheets required.
|
Â
|
|
Â
|
|
43 |
Â
*/
|
44 |
Â
public function customizer_styles() {
|
45 |
Â
wp_enqueue_style( 'kirki-customizer-css', trailingslashit( Kirki::$url ) . 'assets/css/customizer.css', null );
|
46 |
Â
wp_add_inline_style( 'kirki-customizer-css', $this->custom_css() );
|
47 |
Â
}
|
48 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
49 |
Â
public function get_colors() {
|
50 |
Â
|
51 |
Â
$config = apply_filters( 'kirki/config', array() );
|
52 |
Â
|
53 |
-
// No need to proceed if we haven't set any colors
|
54 |
Â
if ( ! isset( $config['color_back'] ) && ! isset( $config['color_accent'] ) ) {
|
55 |
Â
return;
|
56 |
Â
}
|
57 |
Â
if ( ! $config['color_back'] && ! $config['color_accent'] ) {
|
58 |
Â
return;
|
59 |
Â
}
|
60 |
-
//
|
61 |
Â
$this->process = true;
|
62 |
-
// Calculate the accent color
|
63 |
Â
if ( isset( $config['color_accent'] ) ) {
|
64 |
Â
$this->color_accent = Kirki_Color::sanitize_hex( $config['color_accent'] );
|
65 |
Â
}
|
66 |
Â
|
67 |
-
// Calculate the background & font colors
|
68 |
Â
if ( isset( $config['color_back'] ) ) {
|
69 |
Â
$this->color_back = Kirki_Color::sanitize_hex( $config['color_back'] );
|
70 |
Â
$this->color_font = ( 170 > Kirki_Color::get_brightness( $this->color_back ) ) ? '#f2f2f2' : '#222';
|
@@ -83,7 +167,9 @@ if ( ! class_exists( 'Kirki_Styles_Customizer' ) ) {
|
|
83 |
Â
|
84 |
Â
|
85 |
Â
/**
|
86 |
-
* Add custom CSS rules to the head, applying our custom styles
|
Â
|
|
Â
|
|
87 |
Â
*/
|
88 |
Â
public function custom_css() {
|
89 |
Â
|
@@ -99,12 +185,15 @@ if ( ! class_exists( 'Kirki_Styles_Customizer' ) ) {
|
|
99 |
Â
}
|
100 |
Â
|
101 |
Â
/**
|
102 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
103 |
Â
*/
|
104 |
Â
public function replace_placeholders( $styles ) {
|
105 |
-
|
106 |
-
|
107 |
-
*/
|
108 |
Â
$replacements = array(
|
109 |
Â
'COLOR_BACK' => $this->color_back,
|
110 |
Â
'COLOR_ACCENT_TEXT' => $this->color_accent_text,
|
@@ -124,41 +213,38 @@ if ( ! class_exists( 'Kirki_Styles_Customizer' ) ) {
|
|
124 |
Â
|
125 |
Â
}
|
126 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
127 |
Â
public function include_stylesheets() {
|
128 |
Â
|
129 |
Â
$config = apply_filters( 'kirki/config', array() );
|
130 |
Â
$styles = '';
|
131 |
Â
|
132 |
-
|
133 |
-
* Include the width CSS if necessary
|
134 |
-
*/
|
135 |
Â
if ( isset( $config['width'] ) ) {
|
136 |
Â
$path = wp_normalize_path( Kirki::$path . '/assets/css/customizer-dynamic-css-width.php' );
|
137 |
Â
$styles .= include $path;
|
138 |
-
|
139 |
-
|
140 |
-
*/
|
141 |
Â
$styles = str_replace( 'WIDTH', $config['width'], $styles );
|
142 |
Â
}
|
143 |
Â
|
144 |
-
|
145 |
-
* Include the color modifications CSS if necessary
|
146 |
-
*/
|
147 |
Â
if ( false !== $this->color_back && false !== $this->color_font ) {
|
148 |
Â
$path = wp_normalize_path( Kirki::$path . '/assets/css/customizer-dynamic-css-colors.php' );
|
149 |
Â
$styles .= include $path;
|
150 |
Â
}
|
151 |
Â
|
152 |
-
|
153 |
-
* Include generic CSS for controls
|
154 |
-
*/
|
155 |
Â
$path = wp_normalize_path( Kirki::$path . '/assets/css/customizer-dynamic-css.php' );
|
156 |
Â
$styles .= include $path;
|
157 |
Â
|
158 |
Â
return $styles;
|
159 |
Â
|
160 |
Â
}
|
161 |
-
|
162 |
Â
}
|
163 |
-
|
164 |
Â
}
|
9 |
Â
* @category Core
|
10 |
Â
* @author Aristeides Stathopoulos
|
11 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
12 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
13 |
Â
* @since 1.0
|
14 |
Â
*/
|
15 |
Â
|
16 |
+
// Exit if accessed directly.
|
17 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
18 |
Â
exit;
|
19 |
Â
}
|
20 |
Â
|
21 |
Â
if ( ! class_exists( 'Kirki_Styles_Customizer' ) ) {
|
22 |
Â
|
23 |
+
/**
|
24 |
+
* Adds styles to the customizer.
|
25 |
+
*/
|
26 |
Â
class Kirki_Styles_Customizer {
|
27 |
Â
|
28 |
+
/**
|
29 |
+
* Background Color.
|
30 |
+
*
|
31 |
+
* @access public
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
Â
public $color_back = false;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Font Color.
|
38 |
+
*
|
39 |
+
* @access public
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
Â
public $color_font = false;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Accent Color.
|
46 |
+
*
|
47 |
+
* @access public
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
Â
public $color_accent;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Border Color.
|
54 |
+
*
|
55 |
+
* @access public
|
56 |
+
* @var string
|
57 |
+
*/
|
58 |
Â
public $border_color;
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Buttons Color.
|
62 |
+
*
|
63 |
+
* @access public
|
64 |
+
* @var string
|
65 |
+
*/
|
66 |
Â
public $buttons_color;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Controls Color.
|
70 |
+
*
|
71 |
+
* @access public
|
72 |
+
* @var string
|
73 |
+
*/
|
74 |
Â
public $controls_color;
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Arrows Color.
|
78 |
+
*
|
79 |
+
* @access public
|
80 |
+
* @var string
|
81 |
+
*/
|
82 |
Â
public $arrows_color;
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Accent text Color.
|
86 |
+
*
|
87 |
+
* @access public
|
88 |
+
* @var string
|
89 |
+
*/
|
90 |
Â
public $color_accent_text;
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Section Background Color.
|
94 |
+
*
|
95 |
+
* @access public
|
96 |
+
* @var string
|
97 |
+
*/
|
98 |
Â
public $section_background_color;
|
99 |
Â
|
100 |
+
/**
|
101 |
+
* Have we already processed styling?
|
102 |
+
*
|
103 |
+
* @access public
|
104 |
+
* @var bool
|
105 |
+
*/
|
106 |
Â
public $process = false;
|
107 |
Â
|
108 |
+
/**
|
109 |
+
* Constructor.
|
110 |
+
*
|
111 |
+
* @access public
|
112 |
+
*/
|
113 |
Â
public function __construct() {
|
114 |
Â
add_action( 'customize_controls_print_styles', array( $this, 'customizer_styles' ), 99 );
|
115 |
Â
}
|
116 |
Â
|
117 |
Â
/**
|
118 |
Â
* Enqueue the stylesheets required.
|
119 |
+
*
|
120 |
+
* @access public
|
121 |
Â
*/
|
122 |
Â
public function customizer_styles() {
|
123 |
Â
wp_enqueue_style( 'kirki-customizer-css', trailingslashit( Kirki::$url ) . 'assets/css/customizer.css', null );
|
124 |
Â
wp_add_inline_style( 'kirki-customizer-css', $this->custom_css() );
|
125 |
Â
}
|
126 |
Â
|
127 |
+
/**
|
128 |
+
* Gets the colors used.
|
129 |
+
*
|
130 |
+
* @access public
|
131 |
+
* @return null|void
|
132 |
+
*/
|
133 |
Â
public function get_colors() {
|
134 |
Â
|
135 |
Â
$config = apply_filters( 'kirki/config', array() );
|
136 |
Â
|
137 |
+
// No need to proceed if we haven't set any colors.
|
138 |
Â
if ( ! isset( $config['color_back'] ) && ! isset( $config['color_accent'] ) ) {
|
139 |
Â
return;
|
140 |
Â
}
|
141 |
Â
if ( ! $config['color_back'] && ! $config['color_accent'] ) {
|
142 |
Â
return;
|
143 |
Â
}
|
144 |
+
// Set the $process to true.
|
145 |
Â
$this->process = true;
|
146 |
+
// Calculate the accent color.
|
147 |
Â
if ( isset( $config['color_accent'] ) ) {
|
148 |
Â
$this->color_accent = Kirki_Color::sanitize_hex( $config['color_accent'] );
|
149 |
Â
}
|
150 |
Â
|
151 |
+
// Calculate the background & font colors.
|
152 |
Â
if ( isset( $config['color_back'] ) ) {
|
153 |
Â
$this->color_back = Kirki_Color::sanitize_hex( $config['color_back'] );
|
154 |
Â
$this->color_font = ( 170 > Kirki_Color::get_brightness( $this->color_back ) ) ? '#f2f2f2' : '#222';
|
167 |
Â
|
168 |
Â
|
169 |
Â
/**
|
170 |
+
* Add custom CSS rules to the head, applying our custom styles.
|
171 |
+
*
|
172 |
+
* @access public
|
173 |
Â
*/
|
174 |
Â
public function custom_css() {
|
175 |
Â
|
185 |
Â
}
|
186 |
Â
|
187 |
Â
/**
|
188 |
+
* Replaces CSS placefolders with our settings.
|
189 |
+
*
|
190 |
+
* @access public
|
191 |
+
* @param string $styles The CSS.
|
192 |
+
* @return string
|
193 |
Â
*/
|
194 |
Â
public function replace_placeholders( $styles ) {
|
195 |
+
|
196 |
+
// Replace CSS placeholders with actual values.
|
Â
|
|
197 |
Â
$replacements = array(
|
198 |
Â
'COLOR_BACK' => $this->color_back,
|
199 |
Â
'COLOR_ACCENT_TEXT' => $this->color_accent_text,
|
213 |
Â
|
214 |
Â
}
|
215 |
Â
|
216 |
+
/**
|
217 |
+
* Get the stylesheets.
|
218 |
+
*
|
219 |
+
* @access public
|
220 |
+
* @return string
|
221 |
+
*/
|
222 |
Â
public function include_stylesheets() {
|
223 |
Â
|
224 |
Â
$config = apply_filters( 'kirki/config', array() );
|
225 |
Â
$styles = '';
|
226 |
Â
|
227 |
+
// Include the width CSS if necessary.
|
Â
|
|
Â
|
|
228 |
Â
if ( isset( $config['width'] ) ) {
|
229 |
Â
$path = wp_normalize_path( Kirki::$path . '/assets/css/customizer-dynamic-css-width.php' );
|
230 |
Â
$styles .= include $path;
|
231 |
+
|
232 |
+
// Replace width placeholder with actual value.
|
Â
|
|
233 |
Â
$styles = str_replace( 'WIDTH', $config['width'], $styles );
|
234 |
Â
}
|
235 |
Â
|
236 |
+
// Include the color modifications CSS if necessary.
|
Â
|
|
Â
|
|
237 |
Â
if ( false !== $this->color_back && false !== $this->color_font ) {
|
238 |
Â
$path = wp_normalize_path( Kirki::$path . '/assets/css/customizer-dynamic-css-colors.php' );
|
239 |
Â
$styles .= include $path;
|
240 |
Â
}
|
241 |
Â
|
242 |
+
// Include generic CSS for controls.
|
Â
|
|
Â
|
|
243 |
Â
$path = wp_normalize_path( Kirki::$path . '/assets/css/customizer-dynamic-css.php' );
|
244 |
Â
$styles .= include $path;
|
245 |
Â
|
246 |
Â
return $styles;
|
247 |
Â
|
248 |
Â
}
|
Â
|
|
249 |
Â
}
|
Â
|
|
250 |
Â
}
|
includes/styles/class-kirki-styles-frontend.php
CHANGED
@@ -8,22 +8,43 @@
|
|
8 |
Â
* @category Core
|
9 |
Â
* @author Aristeides Stathopoulos
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
-
* @license http://opensource.org/licenses/
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
-
// Exit if accessed directly
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Styles_Frontend' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
21 |
Â
class Kirki_Styles_Frontend {
|
22 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
public $processed = false;
|
24 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public static $css_array = array();
|
26 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public function __construct() {
|
28 |
Â
|
29 |
Â
Kirki_Fonts_Google::get_instance();
|
@@ -37,21 +58,15 @@ if ( ! class_exists( 'Kirki_Styles_Frontend' ) ) {
|
|
37 |
Â
return;
|
38 |
Â
}
|
39 |
Â
|
40 |
-
|
41 |
-
// * If we are in the customizer, load CSS using inline-styles.
|
42 |
-
// * If we are in the frontend AND $config['inline_css'] == false
|
43 |
-
// * Then load dynamic CSS using AJAX.
|
44 |
-
// */
|
45 |
-
// if ( ! $wp_customize && ( isset( $config['inline_css'] ) && false == $config['inline_css'] ) ) {
|
46 |
-
// add_action( 'wp_enqueue_scripts', array( $this, 'frontend_styles' ), $priority );
|
47 |
-
// add_action( 'wp_ajax_kirki_dynamic_css', array( $this, 'ajax_dynamic_css' ) );
|
48 |
-
// add_action( 'wp_ajax_nopriv_kirki_dynamic_css', array( $this, 'ajax_dynamic_css' ) );
|
49 |
-
// } else {
|
50 |
-
add_action( 'wp_enqueue_scripts', array( $this, 'inline_dynamic_css' ), $priority );
|
51 |
-
// }
|
52 |
Â
|
53 |
Â
}
|
54 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
55 |
Â
public function inline_dynamic_css() {
|
56 |
Â
$configs = Kirki::$config;
|
57 |
Â
if ( ! $this->processed ) {
|
@@ -70,17 +85,31 @@ if ( ! class_exists( 'Kirki_Styles_Frontend' ) ) {
|
|
70 |
Â
}
|
71 |
Â
}
|
72 |
Â
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
81 |
Â
|
82 |
Â
/**
|
83 |
-
*
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
84 |
Â
*/
|
85 |
Â
public static function loop_controls( $config_id ) {
|
86 |
Â
|
@@ -98,21 +127,38 @@ if ( ! class_exists( 'Kirki_Styles_Frontend' ) ) {
|
|
98 |
Â
|
99 |
Â
foreach ( $fields as $field ) {
|
100 |
Â
|
101 |
-
// Only process fields that belong to $config_id
|
102 |
Â
if ( $config_id != $field['kirki_config'] ) {
|
103 |
Â
continue;
|
104 |
Â
}
|
105 |
Â
|
106 |
-
// Only continue if
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
107 |
Â
if ( isset( $field['output'] ) && ! empty( $field['output'] ) && 'background' != $field['type'] ) {
|
108 |
Â
$css = Kirki_Helper::array_replace_recursive( $css, Kirki_Styles_Output_CSS::css( $field ) );
|
109 |
-
|
Â
|
|
110 |
Â
if ( isset( self::$css_array[ $config_id ] ) && ! empty( self::$css_array[ $config_id ] ) ) {
|
111 |
Â
Kirki_Helper::array_replace_recursive( $css, self::$css_array[ $config_id ] );
|
112 |
Â
}
|
113 |
-
|
114 |
Â
}
|
115 |
-
|
116 |
Â
}
|
117 |
Â
|
118 |
Â
if ( is_array( $css ) ) {
|
@@ -122,6 +168,5 @@ if ( ! class_exists( 'Kirki_Styles_Frontend' ) ) {
|
|
122 |
Â
return;
|
123 |
Â
|
124 |
Â
}
|
125 |
-
|
126 |
Â
}
|
127 |
Â
}
|
8 |
Â
* @category Core
|
9 |
Â
* @author Aristeides Stathopoulos
|
10 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
11 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
12 |
Â
* @since 1.0
|
13 |
Â
*/
|
14 |
Â
|
15 |
+
// Exit if accessed directly.
|
16 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
Â
exit;
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
if ( ! class_exists( 'Kirki_Styles_Frontend' ) ) {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Applies field-generated styles to the frontend.
|
24 |
+
*/
|
25 |
Â
class Kirki_Styles_Frontend {
|
26 |
Â
|
27 |
+
/**
|
28 |
+
* Whether we've already processed this or not.
|
29 |
+
*
|
30 |
+
* @access public
|
31 |
+
* @var bool
|
32 |
+
*/
|
33 |
Â
public $processed = false;
|
34 |
Â
|
35 |
+
/**
|
36 |
+
* The CSS array
|
37 |
+
*
|
38 |
+
* @access public
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
Â
public static $css_array = array();
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* Constructor
|
45 |
+
*
|
46 |
+
* @access public
|
47 |
+
*/
|
48 |
Â
public function __construct() {
|
49 |
Â
|
50 |
Â
Kirki_Fonts_Google::get_instance();
|
58 |
Â
return;
|
59 |
Â
}
|
60 |
Â
|
61 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'inline_dynamic_css' ), $priority );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
62 |
Â
|
63 |
Â
}
|
64 |
Â
|
65 |
+
/**
|
66 |
+
* Adds inline styles.
|
67 |
+
*
|
68 |
+
* @access public
|
69 |
+
*/
|
70 |
Â
public function inline_dynamic_css() {
|
71 |
Â
$configs = Kirki::$config;
|
72 |
Â
if ( ! $this->processed ) {
|
85 |
Â
}
|
86 |
Â
}
|
87 |
Â
|
88 |
+
/**
|
89 |
+
* Get the dynamic-css.php file
|
90 |
+
*
|
91 |
+
* @access public
|
92 |
+
*/
|
93 |
+
public function ajax_dynamic_css() {
|
94 |
+
require( Kirki::$path . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'dynamic-css.php' );
|
95 |
+
exit;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Enqueues the ajax stylesheet.
|
100 |
+
*
|
101 |
+
* @access public
|
102 |
+
*/
|
103 |
+
public function frontend_styles() {
|
104 |
+
wp_enqueue_style( 'kirki-styles-php', admin_url( 'admin-ajax.php' ) . '?action=kirki_dynamic_css', null, null );
|
105 |
+
}
|
106 |
Â
|
107 |
Â
/**
|
108 |
+
* Loop through all fields and create an array of style definitions.
|
109 |
+
*
|
110 |
+
* @static
|
111 |
+
* @access public
|
112 |
+
* @param string $config_id The configuration ID.
|
113 |
Â
*/
|
114 |
Â
public static function loop_controls( $config_id ) {
|
115 |
Â
|
127 |
Â
|
128 |
Â
foreach ( $fields as $field ) {
|
129 |
Â
|
130 |
+
// Only process fields that belong to $config_id.
|
131 |
Â
if ( $config_id != $field['kirki_config'] ) {
|
132 |
Â
continue;
|
133 |
Â
}
|
134 |
Â
|
135 |
+
// Only continue if field dependencies are met.
|
136 |
+
if ( ! empty( $field['required'] ) ) {
|
137 |
+
$valid = true;
|
138 |
+
|
139 |
+
foreach ( $field['required'] as $requirement ) {
|
140 |
+
if ( isset( $requirement['setting'] ) && isset( $requirement['value'] ) && isset( $requirement['operator'] ) ) {
|
141 |
+
$controller_value = Kirki::get_option( $requirement['setting'] );
|
142 |
+
if ( ! Kirki_Active_Callback::compare( $controller_value, $requirement['value'], $requirement['operator'] ) ) {
|
143 |
+
$valid = false;
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
if ( ! $valid ) {
|
149 |
+
continue;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
// Only continue if $field['output'] is set.
|
154 |
Â
if ( isset( $field['output'] ) && ! empty( $field['output'] ) && 'background' != $field['type'] ) {
|
155 |
Â
$css = Kirki_Helper::array_replace_recursive( $css, Kirki_Styles_Output_CSS::css( $field ) );
|
156 |
+
|
157 |
+
// Add the globals.
|
158 |
Â
if ( isset( self::$css_array[ $config_id ] ) && ! empty( self::$css_array[ $config_id ] ) ) {
|
159 |
Â
Kirki_Helper::array_replace_recursive( $css, self::$css_array[ $config_id ] );
|
160 |
Â
}
|
Â
|
|
161 |
Â
}
|
Â
|
|
162 |
Â
}
|
163 |
Â
|
164 |
Â
if ( is_array( $css ) ) {
|
168 |
Â
return;
|
169 |
Â
|
170 |
Â
}
|
Â
|
|
171 |
Â
}
|
172 |
Â
}
|
includes/styles/class-kirki-styles-output-css.php
CHANGED
@@ -7,31 +7,110 @@
|
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
-
* @license http://opensource.org/licenses/
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
-
// Exit if accessed directly
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
20 |
Â
final class Kirki_Styles_Output_CSS {
|
21 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
22 |
Â
public static $instance = null;
|
23 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
24 |
Â
public static $settings = null;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
25 |
Â
public static $output = array();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
26 |
Â
public static $callback = null;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
27 |
Â
public static $option_name = null;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
public static $field_type = null;
|
29 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
30 |
Â
public static $google_fonts = null;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
31 |
Â
public static $backup_fonts = null;
|
32 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
public static $css;
|
34 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
35 |
Â
public static $value = null;
|
36 |
Â
|
37 |
Â
/**
|
@@ -59,19 +138,16 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
59 |
Â
}
|
60 |
Â
|
61 |
Â
/**
|
62 |
-
*
|
63 |
-
*
|
64 |
-
* @var string the setting ID.
|
65 |
-
* @var string theme_mod / option
|
66 |
-
* @var array an array of arrays of the output arguments.
|
67 |
-
* @var mixed a callable function.
|
68 |
Â
*
|
Â
|
|
Â
|
|
Â
|
|
69 |
Â
* @return array
|
70 |
Â
*/
|
71 |
Â
public static function css( $field ) {
|
72 |
-
|
73 |
-
|
74 |
-
*/
|
75 |
Â
self::$settings = $field['settings'];
|
76 |
Â
self::$callback = $field['sanitize_callback'];
|
77 |
Â
self::$field_type = $field['type'];
|
@@ -84,14 +160,11 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
84 |
Â
),
|
85 |
Â
);
|
86 |
Â
}
|
87 |
-
|
88 |
-
|
89 |
-
*/
|
90 |
Â
self::$value = Kirki_Values::get_sanitized_field_value( $field );
|
91 |
Â
|
92 |
-
|
93 |
-
* Find the class that will handle the outpout for this field
|
94 |
-
*/
|
95 |
Â
$classname = 'Kirki_Output';
|
96 |
Â
$field_output_classes = apply_filters( 'kirki/' . $field['kirki_config'] . '/output/control-classnames', array(
|
97 |
Â
'spacing' => 'Kirki_Output_Field_Spacing',
|
@@ -107,16 +180,16 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
107 |
Â
}
|
108 |
Â
|
109 |
Â
/**
|
110 |
-
* Gets the array of generated styles and creates the minimized, inline CSS
|
111 |
Â
*
|
112 |
-
* @
|
113 |
-
* @
|
Â
|
|
Â
|
|
114 |
Â
*/
|
115 |
Â
public static function styles_parse( $css = array() ) {
|
116 |
Â
|
117 |
-
|
118 |
-
* Process the array of CSS properties and produce the final CSS
|
119 |
-
*/
|
120 |
Â
$final_css = '';
|
121 |
Â
if ( ! is_array( $css ) || empty( $css ) ) {
|
122 |
Â
return '';
|
@@ -139,8 +212,8 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
139 |
Â
/**
|
140 |
Â
* Add prefixes if necessary.
|
141 |
Â
*
|
142 |
-
* @param $css array
|
143 |
-
* @return
|
144 |
Â
*/
|
145 |
Â
public static function add_prefixes( $css ) {
|
146 |
Â
|
@@ -148,9 +221,8 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
148 |
Â
foreach ( $css as $media_query => $elements ) {
|
149 |
Â
foreach ( $elements as $element => $style_array ) {
|
150 |
Â
foreach ( $style_array as $property => $value ) {
|
151 |
-
|
152 |
-
|
153 |
-
*/
|
154 |
Â
if ( is_string( $property ) && in_array( $property, array(
|
155 |
Â
'border-radius',
|
156 |
Â
'box-shadow',
|
@@ -164,9 +236,8 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
164 |
Â
$css[ $media_query ][ $element ][ '-webkit-' . $property ] = $value;
|
165 |
Â
$css[ $media_query ][ $element ][ '-moz-' . $property ] = $value;
|
166 |
Â
}
|
167 |
-
|
168 |
-
|
169 |
-
*/
|
170 |
Â
if ( is_string( $property ) && in_array( $property, array(
|
171 |
Â
'transform',
|
172 |
Â
'background-size',
|
@@ -184,6 +255,5 @@ if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
|
184 |
Â
return $css;
|
185 |
Â
|
186 |
Â
}
|
187 |
-
|
188 |
Â
}
|
189 |
Â
}
|
7 |
Â
* @category Core
|
8 |
Â
* @author Aristeides Stathopoulos
|
9 |
Â
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
|
10 |
+
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
|
11 |
Â
* @since 1.0
|
12 |
Â
*/
|
13 |
Â
|
14 |
+
// Exit if accessed directly.
|
15 |
Â
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
Â
exit;
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
if ( ! class_exists( 'Kirki_Styles_Output_CSS' ) ) {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Handles CSS output.
|
23 |
+
*/
|
24 |
Â
final class Kirki_Styles_Output_CSS {
|
25 |
Â
|
26 |
+
/**
|
27 |
+
* The instance of this class (singleton pattern).
|
28 |
+
*
|
29 |
+
* @static
|
30 |
+
* @access public
|
31 |
+
* @var null|object
|
32 |
+
*/
|
33 |
Â
public static $instance = null;
|
34 |
Â
|
35 |
+
/**
|
36 |
+
* Settings.
|
37 |
+
*
|
38 |
+
* @static
|
39 |
+
* @access public
|
40 |
+
* @var null|string|array
|
41 |
+
*/
|
42 |
Â
public static $settings = null;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Output.
|
46 |
+
*
|
47 |
+
* @static
|
48 |
+
* @access public
|
49 |
+
* @var array
|
50 |
+
*/
|
51 |
Â
public static $output = array();
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Callback.
|
55 |
+
*
|
56 |
+
* @static
|
57 |
+
* @access public
|
58 |
+
* @var null|string|array
|
59 |
+
*/
|
60 |
Â
public static $callback = null;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Option Name.
|
64 |
+
*
|
65 |
+
* @static
|
66 |
+
* @access public
|
67 |
+
* @var null|string
|
68 |
+
*/
|
69 |
Â
public static $option_name = null;
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Field Type.
|
73 |
+
*
|
74 |
+
* @static
|
75 |
+
* @access public
|
76 |
+
* @var string
|
77 |
+
*/
|
78 |
Â
public static $field_type = null;
|
79 |
Â
|
80 |
+
/**
|
81 |
+
* Google Fonts
|
82 |
+
*
|
83 |
+
* @static
|
84 |
+
* @access public
|
85 |
+
* @var array
|
86 |
+
*/
|
87 |
Â
public static $google_fonts = null;
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Standard Fonts
|
91 |
+
*
|
92 |
+
* @static
|
93 |
+
* @access public
|
94 |
+
* @var array
|
95 |
+
*/
|
96 |
Â
public static $backup_fonts = null;
|
97 |
Â
|
98 |
+
/**
|
99 |
+
* CSS
|
100 |
+
*
|
101 |
+
* @static
|
102 |
+
* @access public
|
103 |
+
* @var string
|
104 |
+
*/
|
105 |
Â
public static $css;
|
106 |
Â
|
107 |
+
/**
|
108 |
+
* Value
|
109 |
+
*
|
110 |
+
* @static
|
111 |
+
* @access public
|
112 |
+
* @var mixed
|
113 |
+
*/
|
114 |
Â
public static $value = null;
|
115 |
Â
|
116 |
Â
/**
|
138 |
Â
}
|
139 |
Â
|
140 |
Â
/**
|
141 |
+
* Get the CSS for a field.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
142 |
Â
*
|
143 |
+
* @static
|
144 |
+
* @access public
|
145 |
+
* @param array $field The field.
|
146 |
Â
* @return array
|
147 |
Â
*/
|
148 |
Â
public static function css( $field ) {
|
149 |
+
|
150 |
+
// Set class vars.
|
Â
|
|
151 |
Â
self::$settings = $field['settings'];
|
152 |
Â
self::$callback = $field['sanitize_callback'];
|
153 |
Â
self::$field_type = $field['type'];
|
160 |
Â
),
|
161 |
Â
);
|
162 |
Â
}
|
163 |
+
|
164 |
+
// Get the value of this field.
|
Â
|
|
165 |
Â
self::$value = Kirki_Values::get_sanitized_field_value( $field );
|
166 |
Â
|
167 |
+
// Find the class that will handle the outpout for this field.
|
Â
|
|
Â
|
|
168 |
Â
$classname = 'Kirki_Output';
|
169 |
Â
$field_output_classes = apply_filters( 'kirki/' . $field['kirki_config'] . '/output/control-classnames', array(
|
170 |
Â
'spacing' => 'Kirki_Output_Field_Spacing',
|
180 |
Â
}
|
181 |
Â
|
182 |
Â
/**
|
183 |
+
* Gets the array of generated styles and creates the minimized, inline CSS.
|
184 |
Â
*
|
185 |
+
* @static
|
186 |
+
* @access public
|
187 |
+
* @param array $css The CSS definitions array.
|
188 |
+
* @return string The generated CSS.
|
189 |
Â
*/
|
190 |
Â
public static function styles_parse( $css = array() ) {
|
191 |
Â
|
192 |
+
// Process the array of CSS properties and produce the final CSS.
|
Â
|
|
Â
|
|
193 |
Â
$final_css = '';
|
194 |
Â
if ( ! is_array( $css ) || empty( $css ) ) {
|
195 |
Â
return '';
|
212 |
Â
/**
|
213 |
Â
* Add prefixes if necessary.
|
214 |
Â
*
|
215 |
+
* @param array $css The CSS definitions array.
|
216 |
+
* @return array
|
217 |
Â
*/
|
218 |
Â
public static function add_prefixes( $css ) {
|
219 |
Â
|
221 |
Â
foreach ( $css as $media_query => $elements ) {
|
222 |
Â
foreach ( $elements as $element => $style_array ) {
|
223 |
Â
foreach ( $style_array as $property => $value ) {
|
224 |
+
|
225 |
+
// Add -webkit-* and -mod-*.
|
Â
|
|
226 |
Â
if ( is_string( $property ) && in_array( $property, array(
|
227 |
Â
'border-radius',
|
228 |
Â
'box-shadow',
|
236 |
Â
$css[ $media_query ][ $element ][ '-webkit-' . $property ] = $value;
|
237 |
Â
$css[ $media_query ][ $element ][ '-moz-' . $property ] = $value;
|
238 |
Â
}
|
239 |
+
|
240 |
+
// Add -ms-* and -o-*.
|
Â
|
|
241 |
Â
if ( is_string( $property ) && in_array( $property, array(
|
242 |
Â
'transform',
|
243 |
Â
'background-size',
|
255 |
Â
return $css;
|
256 |
Â
|
257 |
Â
}
|
Â
|
|
258 |
Â
}
|
259 |
Â
}
|
includes/webfonts.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
Â
<?php
|
2 |
Â
|
3 |
-
return array("kind" => "webfonts#webfontList", "items" => array(array("kind" => "webfonts#webfont", "family" => "ABeeZee", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/abeezee/v9/mE5BOuZKGln_Ex0uYKpIaw.ttf", "italic" => "http://fonts.gstatic.com/s/abeezee/v9/kpplLynmYgP0YtlJA3atRw.ttf")), array("kind" => "webfonts#webfont", "family" => "Abel", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/abel/v6/RpUKfqNxoyNe_ka23bzQ2A.ttf")), array("kind" => "webfonts#webfont", "family" => "Abril Fatface", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/abrilfatface/v8/X1g_KwGeBV3ajZIXQ9VnDojjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Aclonica", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aclonica/v6/M6pHZMPwK3DiBSlo3jwAKQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Acme", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/acme/v5/-J6XNtAHPZBEbsifCdBt-g.ttf")), array("kind" => "webfonts#webfont", "family" => "Actor", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/actor/v6/ugMf40CrRK6Jf6Yz_xNSmQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Adamina", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/adamina/v8/RUQfOodOMiVVYqFZcSlT9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Advent Pro", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "latin", "greek"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/adventpro/v4/87-JOpSUecTG50PBYK4ysi3USBnSvpkopQaUR-2r7iU.ttf", "200" => "http://fonts.gstatic.com/s/adventpro/v4/URTSSjIp0Wr-GrjxFdFWnGeudeTO44zf-ht3k-KNzwg.ttf", "300" => "http://fonts.gstatic.com/s/adventpro/v4/sJaBfJYSFgoB80OL1_66m0eOrDcLawS7-ssYqLr2Xp4.ttf", "500" => "http://fonts.gstatic.com/s/adventpro/v4/7kBth2-rT8tP40RmMMXMLJp-63r6doWhTEbsfBIRJ7A.ttf", "600" => "http://fonts.gstatic.com/s/adventpro/v4/3Jo-2maCzv2QLzQBzaKHV_pTEJqju4Hz1txDWij77d4.ttf", "700" => "http://fonts.gstatic.com/s/adventpro/v4/M4I6QiICt-ey_wZTpR2gKwJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/adventpro/v4/1NxMBeKVcNNH2H46AUR3wfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aguafina Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aguafinascript/v5/65g7cgMtMGnNlNyq_Z6CvMxLhO8OSNnfAp53LK1_iRs.ttf")), array("kind" => "webfonts#webfont", "family" => "Akronim", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/akronim/v5/qA0L2CSArk3tuOWE1AR1DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aladin", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aladin/v5/PyuJ5cVHkduO0j5fAMKvAA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aldrich", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aldrich/v6/kMMW1S56gFx7RP_mW1g-Eg.ttf")), array("kind" => "webfonts#webfont", "family" => "Alef", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("hebrew", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/alef/v6/VDgZJhEwudtOzOFQpZ8MEA.ttf", "regular" => "http://fonts.gstatic.com/s/alef/v6/ENvZ_P0HBDQxNZYCQO0lUA.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/alegreya/v7/5oZtdI5-wQwgAFrd9erCsaCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/alegreya/v7/oQeMxX-vxGImzDgX6nxA7KCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/alegreya/v7/62J3atXd6bvMU4qO_ca-eA.ttf", "italic" => "http://fonts.gstatic.com/s/alegreya/v7/cbshnQGxwmlHBjUil7DaIfesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreya/v7/IWi8e5bpnqhMRsZKTcTUWgJKKGfqHaYFsRG-T3ceEVo.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreya/v7/-L71QLH_XqgYWaI1GbOVhp0EAVxt0G0biEntp43Qt6E.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya SC", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUq3e1Pd76Vl7zRpE7NLJQ7XU.ttf", "900" => "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUqyenaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/alegreyasc/v6/3ozeFnTbygMK6PfHh8B-iqCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/alegreyasc/v6/GOqmv3FLsJ2r6ZALMZVBmkeOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6c_zJjSACmk0BRPxQqhnNLU.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6U_yTOUGsoC54csJe1b-IRw.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya Sans", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PJFGFO4uyVFMfB6LZsii7kI.ttf", "300" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acB1LjARzAvdqa1uQC32v70.ttf", "500" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aQqQmZ7VjhwksfpNVG0pqGc.ttf", "700" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aVCbmAUID8LN-q3pJpOk3Ys.ttf", "800" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acxnD5BewVtRRHHljCwR2bM.ttf", "900" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aW42xlVP-j5dagE7-AU2zwg.ttf", "100italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/gRkSP2lBpqoMTVxg7DmVn2cDnjsrnI9_xJ-5gnBaHsE.ttf", "300italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CnfqlVoxTUFFx1C8tBqmbcg.ttf", "regular" => "http://fonts.gstatic.com/s/alegreyasans/v3/KYNzioYhDai7mTMnx_gDgn8f0n03UdmQgF_CLvNR2vg.ttf", "italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PD4G9C9ttb0Oz5Cvf0qOitE.ttf", "500italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9Cs7DCVO6wo6i5LKIyZDzK40.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CpF66r9C4AnxxlBlGd7xY4g.ttf", "800italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CicOAJ_9MkLPbDmrtXDPbIU.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9ChRaDUI9aE8-k7PrIG2iiuo.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya Sans SC", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kVnzStfdnFU-MXbO84aBs_M.ttf", "300" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46-1IqtfxJspFjzJp0SaQRcI.ttf", "500" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46_hHTluI57wqxl55RvSYo3s.ttf", "700" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR4600aId5t1FC-xZ8nmpa_XLk.ttf", "800" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46wQgSHD3Lo1Mif2Wkk5swWA.ttf", "900" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR461Rf9EWUSEX_PR1d_gLKfpM.ttf", "100italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/qG3gA9iy5RpXMH4crZboqqakMVR0XlJhO7VdJ8yYvA4.ttf", "300italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0CnTKaH808trtzttbEg4yVA.ttf", "regular" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/6kgb6ZvOagoVIRZyl8XV-EklWX-XdLVn1WTiuGuvKIU.ttf", "italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kTfqo69HNOlCNZvbwAmUtiA.ttf", "500italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0NqVvxKdFVwqwzilqfVd39U.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IBYn3VD6xMEnodOh8pnFw4.ttf", "800italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0HStmCm6Rs90XeztCALm0H8.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IvtwEfTCJoOJugANj-jWDI.ttf")), array("kind" => "webfonts#webfont", "family" => "Alex Brush", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alexbrush/v6/ooh3KJFbKJSUoIRWfiu8o_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Alfa Slab One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alfaslabone/v5/Qx6FPcitRwTC_k88tLPc-Yjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Alice", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alice/v7/wZTAfivekBqIg-rk63nFvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Alike", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alike/v8/Ho8YpRKNk_202fwDiGNIyw.ttf")), array("kind" => "webfonts#webfont", "family" => "Alike Angular", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alikeangular/v6/OpeCu4xxI3qO1C7CZcJtPT3XH2uEnVI__ynTBvNyki8.ttf")), array("kind" => "webfonts#webfont", "family" => "Allan", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/allan/v7/zSxQiwo7wgnr7KkMXhSiag.ttf", "regular" => "http://fonts.gstatic.com/s/allan/v7/T3lemhgZmLQkQI2Qc2bQHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Allerta", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/allerta/v7/s9FOEuiJFTNbMe06ifzV8g.ttf")), array("kind" => "webfonts#webfont", "family" => "Allerta Stencil", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/allertastencil/v7/CdSZfRtHbQrBohqmzSdDYFf2eT4jUldwg_9fgfY_tHc.ttf")), array("kind" => "webfonts#webfont", "family" => "Allura", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/allura/v4/4hcqgZanyuJ2gMYWffIR6A.ttf")), array("kind" => "webfonts#webfont", "family" => "Almendra", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/almendra/v8/ZpLdQMj7Q2AFio4nNO6A76CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/almendra/v8/PDpbB-ZF7deXAAEYPkQOeg.ttf", "italic" => "http://fonts.gstatic.com/s/almendra/v8/CNWLyiDucqVKVgr4EMidi_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/almendra/v8/-tXHKMcnn6FqrhJV3l1e3QJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Almendra Display", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/almendradisplay/v6/2Zuu97WJ_ez-87yz5Ai8fF6uyC_qD11hrFQ6EGgTJWI.ttf")), array("kind" => "webfonts#webfont", "family" => "Almendra SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/almendrasc/v6/IuiLd8Fm9I6raSalxMoWeaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Amarante", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/amarante/v4/2dQHjIBWSpydit5zkJZnOw.ttf")), array("kind" => "webfonts#webfont", "family" => "Amaranth", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/amaranth/v6/j5OFHqadfxyLnQRxFeox6qCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/amaranth/v6/7VcBog22JBHsHXHdnnycTA.ttf", "italic" => "http://fonts.gstatic.com/s/amaranth/v6/UrJlRY9LcVERJSvggsdBqPesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/amaranth/v6/BHyuYFj9nqLFNvOvGh0xTwJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Amatic SC", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/amaticsc/v8/IDnkRTPGcrSVo50UyYNK7y3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/amaticsc/v8/MldbRWLFytvqxU1y81xSVg.ttf")), array("kind" => "webfonts#webfont", "family" => "Amethysta", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/amethysta/v4/1jEo9tOFIJDolAUpBnWbnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Amiri", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "arabic"), "version" => "v7", "lastModified" => "2015-04-07", "files" => array("700" => "http://fonts.gstatic.com/s/amiri/v7/WQsR_moz-FNqVwGYgptqiA.ttf", "regular" => "http://fonts.gstatic.com/s/amiri/v7/ATARrPmSew75SlpOw2YABQ.ttf", "italic" => "http://fonts.gstatic.com/s/amiri/v7/3t1yTQlLUXBw8htrqlXBrw.ttf", "700italic" => "http://fonts.gstatic.com/s/amiri/v7/uF8aNEyD0bxMeTBg9bFDSPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Amita", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-03", "files" => array("700" => "http://fonts.gstatic.com/s/amita/v1/cIYA2Lzp7l2pcGsqpUidBg.ttf", "regular" => "http://fonts.gstatic.com/s/amita/v1/RhdhGBXSJqkHo6g7miTEcQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Anaheim", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anaheim/v4/t-z8aXHMpgI2gjN_rIflKA.ttf")), array("kind" => "webfonts#webfont", "family" => "Andada", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/andada/v7/rSFaDqNNQBRw3y19MB5Y4w.ttf")), array("kind" => "webfonts#webfont", "family" => "Andika", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/andika/v7/oe-ag1G0lcqZ3IXfeEgaGg.ttf")), array("kind" => "webfonts#webfont", "family" => "Angkor", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/angkor/v8/DLpLgIS-8F10ecwKqCm95Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Annie Use Your Telescope", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/annieuseyourtelescope/v6/2cuiO5VmaR09C8SLGEQjGqbp7mtG8sPlcZvOaO8HBak.ttf")), array("kind" => "webfonts#webfont", "family" => "Anonymous Pro", "category" => "monospace", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/anonymouspro/v8/WDf5lZYgdmmKhO8E1AQud--Cz_5MeePnXDAcLNWyBME.ttf", "regular" => "http://fonts.gstatic.com/s/anonymouspro/v8/Zhfjj_gat3waL4JSju74E-V_5zh5b-_HiooIRUBwn1A.ttf", "italic" => "http://fonts.gstatic.com/s/anonymouspro/v8/q0u6LFHwttnT_69euiDbWKwIsuKDCXG0NQm7BvAgx-c.ttf", "700italic" => "http://fonts.gstatic.com/s/anonymouspro/v8/_fVr_XGln-cetWSUc-JpfA1LL9bfs7wyIp6F8OC9RxA.ttf")), array("kind" => "webfonts#webfont", "family" => "Antic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/antic/v7/hEa8XCNM7tXGzD0Uk0AipA.ttf")), array("kind" => "webfonts#webfont", "family" => "Antic Didone", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anticdidone/v4/r3nJcTDuOluOL6LGDV1vRy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Antic Slab", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anticslab/v4/PSbJCTKkAS7skPdkd7AKEvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Anton", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anton/v7/XIbCenm-W0IRHWYIh7CGUQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Arapey", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arapey/v5/dqu823lrSYn8T2gApTdslA.ttf", "italic" => "http://fonts.gstatic.com/s/arapey/v5/pY-Xi5JNBpaWxy2tZhEm5A.ttf")), array("kind" => "webfonts#webfont", "family" => "Arbutus", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arbutus/v5/Go_hurxoUsn5MnqNVQgodQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Arbutus Slab", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arbutusslab/v4/6k3Yp6iS9l4jRIpynA8qMy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Architects Daughter", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/architectsdaughter/v6/RXTgOOQ9AAtaVOHxx0IUBMCy0EhZjHzu-y0e6uLf4Fg.ttf")), array("kind" => "webfonts#webfont", "family" => "Archivo Black", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/archivoblack/v4/WoAoVT7K3k7hHfxKbvB6B51XQG8isOYYJhPIYAyrESQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Archivo Narrow", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/archivonarrow/v5/M__Wu4PAmHf4YZvQM8tWsMLtdzs3iyjn_YuT226ZsLU.ttf", "regular" => "http://fonts.gstatic.com/s/archivonarrow/v5/DsLzC9scoPnrGiwYYMQXppTvAuddT2xDMbdz0mdLyZY.ttf", "italic" => "http://fonts.gstatic.com/s/archivonarrow/v5/vqsrtPCpTU3tJlKfuXP5zUpmlyBQEFfdE6dERLXdQGQ.ttf", "700italic" => "http://fonts.gstatic.com/s/archivonarrow/v5/wG6O733y5zHl4EKCOh8rSTg5KB8MNJ4uPAETq9naQO8.ttf")), array("kind" => "webfonts#webfont", "family" => "Arimo", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "hebrew", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/arimo/v9/ZItXugREyvV9LnbY_gxAmw.ttf", "regular" => "http://fonts.gstatic.com/s/arimo/v9/Gpeo80g-5ji2CcyXWnzh7g.ttf", "italic" => "http://fonts.gstatic.com/s/arimo/v9/_OdGbnX2-qQ96C4OjhyuPw.ttf", "700italic" => "http://fonts.gstatic.com/s/arimo/v9/__nOLWqmeXdhfr0g7GaFePesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Arizonia", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arizonia/v6/yzJqkHZqryZBTM7RKYV9Wg.ttf")), array("kind" => "webfonts#webfont", "family" => "Armata", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/armata/v6/1H8FwGgIRrbYtxSfXhOHlQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Artifika", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/artifika/v6/Ekfp4H4QG7D-WsABDOyj8g.ttf")), array("kind" => "webfonts#webfont", "family" => "Arvo", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/arvo/v9/OB3FDST7U38u3OjPK_vvRQ.ttf", "regular" => "http://fonts.gstatic.com/s/arvo/v9/vvWPwz-PlZEwjOOIKqoZzA.ttf", "italic" => "http://fonts.gstatic.com/s/arvo/v9/id5a4BCjbenl5Gkqonw_Rw.ttf", "700italic" => "http://fonts.gstatic.com/s/arvo/v9/Hvl2MuWoXLaCy2v6MD4Yvw.ttf")), array("kind" => "webfonts#webfont", "family" => "Arya", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-05-21", "files" => array("700" => "http://fonts.gstatic.com/s/arya/v1/N13tgOvG7VTXawiI-fJiQA.ttf", "regular" => "http://fonts.gstatic.com/s/arya/v1/xEVqtU3v8QLospHKpDaYEw.ttf")), array("kind" => "webfonts#webfont", "family" => "Asap", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/asap/v4/o5RUA7SsJ80M8oDFBnrDbg.ttf", "regular" => "http://fonts.gstatic.com/s/asap/v4/2lf-1MDR8tsTpEtvJmr2hA.ttf", "italic" => "http://fonts.gstatic.com/s/asap/v4/mwxNHf8QS8gNWCAMwkJNIg.ttf", "700italic" => "http://fonts.gstatic.com/s/asap/v4/_rZz9y2oXc09jT5T6BexLQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Asar", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("regular" => "http://fonts.gstatic.com/s/asar/v1/mSmn3H5CcMA84CZ586X7WQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Asset", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/asset/v6/hfPmqY-JzuR1lULlQf9iTg.ttf")), array("kind" => "webfonts#webfont", "family" => "Astloch", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/astloch/v6/aPkhM2tL-tz1jX6aX2rvo_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/astloch/v6/fmbitVmHYLQP7MGPuFgpag.ttf")), array("kind" => "webfonts#webfont", "family" => "Asul", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/asul/v5/uO8uNmxaq87-DdPmkEg5Gg.ttf", "regular" => "http://fonts.gstatic.com/s/asul/v5/9qpsNR_OOwyOYyo2N0IbBw.ttf")), array("kind" => "webfonts#webfont", "family" => "Atomic Age", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/atomicage/v7/WvBMe4FxANIKpo6Oi0mVJ_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aubrey", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aubrey/v8/zo9w8klO8bmOQIMajQ2aTA.ttf")), array("kind" => "webfonts#webfont", "family" => "Audiowide", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/audiowide/v4/yGcwRZB6VmoYhPUYT-mEow.ttf")), array("kind" => "webfonts#webfont", "family" => "Autour One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/autourone/v4/2xmQBcg7FN72jaQRFZPIDvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Average", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/average/v4/aHUibBqdDbVYl5FM48pxyQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Average Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/averagesans/v4/dnU3R-5A_43y5bIyLztPsS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Gruesa Libre", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/averiagruesalibre/v4/10vbZTOoN6T8D-nvDzwRFyXcKHuZXlCN8VkWHpkUzKM.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Libre", "category" => "display", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XacQoVhARpoaILP7amxE_8g.ttf", "700" => "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XUD2ttfZwueP-QU272T9-k4.ttf", "300italic" => "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkina0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/averialibre/v4/rYVgHZZQICWnhjguGsBspC3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/averialibre/v4/1etzuoNxVHR8F533EkD1WfMZXuCXbOrAvx5R0IT5Oyo.ttf", "700italic" => "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkvAs9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Sans Libre", "category" => "display", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V4CP_KG_g80s1KXiBtJHoNc.ttf", "700" => "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V8QwVOrz1y5GihpZmtKLhlI.ttf", "300italic" => "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88YuyGu4JqttndUh4gRKxic0.ttf", "regular" => "http://fonts.gstatic.com/s/averiasanslibre/v4/yRJpjT39KxACO9F31mj_LqV8_KRn4epKAjTFK1s1fsg.ttf", "italic" => "http://fonts.gstatic.com/s/averiasanslibre/v4/COEzR_NPBSUOl3pFwPbPoCZU2HnUZT1xVKaIrHDioao.ttf", "700italic" => "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88bXy1DXgmJcVtKjM5UWamMs.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Serif Libre", "category" => "display", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8SmC4gFJ2PHmfdVKEd_5S9M.ttf", "700" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8Q50KV5TaOVolur4zV2iZsg.ttf", "300italic" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCG2okl0bU63CauowU4iApig.ttf", "regular" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/fdtF30xa_Erw0zAzOoG4BZqY66i8AUyI16fGqw0iAew.ttf", "italic" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/o9qhvK9iT5iDWfyhQUe-6Ru_b0bTq5iipbJ9hhgHJ6U.ttf", "700italic" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCNxohRXP4tNDqG3X4Hqn21k.ttf")), array("kind" => "webfonts#webfont", "family" => "Bad Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("cyrillic", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/badscript/v5/cRyUs0nJ2eMQFHwBsZNRXfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Balthazar", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/balthazar/v5/WgbaSIs6dJAGXJ0qbz2xlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Bangers", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bangers/v8/WAffdge5w99Xif-DLeqmcA.ttf")), array("kind" => "webfonts#webfont", "family" => "Basic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/basic/v6/hNII2mS5Dxw5C0u_m3mXgA.ttf")), array("kind" => "webfonts#webfont", "family" => "Battambang", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/battambang/v9/dezbRtMzfzAA99DmrCYRMgJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/battambang/v9/MzrUfQLefYum5vVGM3EZVPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Baumans", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/baumans/v5/o0bFdPW1H5kd5saqqOcoVg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bayon", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/bayon/v8/yTubusjTnpNRZwA4_50iVw.ttf")), array("kind" => "webfonts#webfont", "family" => "Belgrano", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/belgrano/v6/iq8DUa2s7g6WRCeMiFrmtQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Belleza", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/belleza/v4/wchA3BWJlVqvIcSeNZyXew.ttf")), array("kind" => "webfonts#webfont", "family" => "BenchNine", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/benchnine/v4/ah9xtUy9wLQ3qnWa2p-piS3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/benchnine/v4/qZpi6ZVZg3L2RL_xoBLxWS3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/benchnine/v4/h3OAlYqU3aOeNkuXgH2Q2w.ttf")), array("kind" => "webfonts#webfont", "family" => "Bentham", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bentham/v6/5-Mo8Fe7yg5tzV0GlQIuzQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Berkshire Swash", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/berkshireswash/v4/4RZJjVRPjYnC2939hKCAimKfbtsIjCZP_edQljX9gR0.ttf")), array("kind" => "webfonts#webfont", "family" => "Bevan", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bevan/v7/Rtg3zDsCeQiaJ_Qno22OJA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bigelow Rules", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bigelowrules/v4/FEJCPLwo07FS-6SK6Al50X8f0n03UdmQgF_CLvNR2vg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bigshot One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bigshotone/v6/wSyZjBNTWDQHnvWE2jt6j6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Bilbo", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bilbo/v6/-ty-lPs5H7OIucWbnpFrkA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bilbo Swash Caps", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bilboswashcaps/v7/UB_-crLvhx-PwGKW1oosDmYeFSdnSpRYv5h9gpdlD1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Biryani", "category" => "sans-serif", "variants" => array("200", "300", "regular", "600", "700", "800", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-04-22", "files" => array("200" => "http://fonts.gstatic.com/s/biryani/v1/Xx38YzyTFF8n6mRS1Yd88vesZW2xOQ-xsNqO47m55DA.ttf", "300" => "http://fonts.gstatic.com/s/biryani/v1/u-bneRbizmFMd0VQp5Ze6vesZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/biryani/v1/1EdcPCVxBR2txgjrza6_YPesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/biryani/v1/qN2MTZ0j1sKSCtfXLB2dR_esZW2xOQ-xsNqO47m55DA.ttf", "800" => "http://fonts.gstatic.com/s/biryani/v1/DJyziS7FEy441v22InYdevesZW2xOQ-xsNqO47m55DA.ttf", "900" => "http://fonts.gstatic.com/s/biryani/v1/trcLkrIut0lM_PPSyQfAMPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/biryani/v1/W7bfR8-IY76Xz0QoB8L2xw.ttf")), array("kind" => "webfonts#webfont", "family" => "Bitter", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/bitter/v7/4dUtr_4BvHuoRU35suyOAg.ttf", "regular" => "http://fonts.gstatic.com/s/bitter/v7/w_BNdJvVZDRmqy5aSfB2kQ.ttf", "italic" => "http://fonts.gstatic.com/s/bitter/v7/TC0FZEVzXQIGgzmRfKPZbA.ttf")), array("kind" => "webfonts#webfont", "family" => "Black Ops One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/blackopsone/v7/2XW-DmDsGbDLE372KrMW1Yjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Bokor", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/bokor/v8/uAKdo0A85WW23Gs6mcbw7A.ttf")), array("kind" => "webfonts#webfont", "family" => "Bonbon", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bonbon/v7/IW3u1yzG1knyW5oz0s9_6Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Boogaloo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/boogaloo/v6/4Wu1tvFMoB80fSu8qLgQfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Bowlby One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bowlbyone/v7/eKpHjHfjoxM2bX36YNucefesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bowlby One SC", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bowlbyonesc/v8/8ZkeXftTuzKBtmxOYXoRedDkZCMxWJecxjvKm2f8MJw.ttf")), array("kind" => "webfonts#webfont", "family" => "Brawler", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/brawler/v6/3gfSw6imxQnQxweVITqUrg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bree Serif", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/breeserif/v5/5h9crBVIrvZqgf34FHcnEfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bubblegum Sans", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bubblegumsans/v5/Y9iTUUNz6lbl6TrvV4iwsytnKWgpfO2iSkLzTz-AABg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bubbler One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bubblerone/v4/e8S0qevkZAFaBybtt_SU4qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Buda", "category" => "display", "variants" => array("300"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/buda/v6/hLtAmNUmEMJH2yx7NGUjnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Buenard", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/buenard/v7/yUlGE115dGr7O9w9FlP3UvesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/buenard/v7/NSpMPGKAUgrLrlstYVvIXQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Butcherman", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/butcherman/v7/bxiJmD567sPBVpJsT0XR0vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Butterfly Kids", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/butterflykids/v4/J4NTF5M25htqeTffYImtlUZaDk62iwTBnbnvwSjZciA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cabin", "category" => "sans-serif", "variants" => array("regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/cabin/v8/HgsCQ-k3_Z_uQ86aFolNBg.ttf", "600" => "http://fonts.gstatic.com/s/cabin/v8/eUDAvKhBtmTCkeVBsFk34A.ttf", "700" => "http://fonts.gstatic.com/s/cabin/v8/4EKhProuY1hq_WCAomq9Dg.ttf", "regular" => "http://fonts.gstatic.com/s/cabin/v8/XeuAFYo2xAPHxZGBbQtHhA.ttf", "italic" => "http://fonts.gstatic.com/s/cabin/v8/0tJ9k3DI5xC4GBgs1E_Jxw.ttf", "500italic" => "http://fonts.gstatic.com/s/cabin/v8/50sjhrGE0njyO-7mGDhGP_esZW2xOQ-xsNqO47m55DA.ttf", "600italic" => "http://fonts.gstatic.com/s/cabin/v8/sFQpQDBd3G2om0Nl5dD2CvesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/cabin/v8/K83QKi8MOKLEqj6bgZ7LrfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cabin Condensed", "category" => "sans-serif", "variants" => array("regular", "500", "600", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgEARL_-ABKXdjsJSPT0lc2Bk.ttf", "600" => "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgELS5sSASxc8z4EQTQj7DCAI.ttf", "700" => "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgEMAWgzcA047xWLixhLCofl8.ttf", "regular" => "http://fonts.gstatic.com/s/cabincondensed/v7/B0txb0blf2N29WdYPJjMSiQPsWWoiv__AzYJ9Zzn9II.ttf")), array("kind" => "webfonts#webfont", "family" => "Cabin Sketch", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cabinsketch/v8/ki3SSN5HMOO0-IOLOj069ED2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/cabinsketch/v8/d9fijO34zQajqQvl3YHRCS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Caesar Dressing", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/caesardressing/v5/2T_WzBgE2Xz3FsyJMq34T9gR43u4FvCuJwIfF5Zxl6Y.ttf")), array("kind" => "webfonts#webfont", "family" => "Cagliostro", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cagliostro/v5/i85oXbtdSatNEzss99bpj_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Calligraffitti", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/calligraffitti/v7/vLVN2Y-z65rVu1R7lWdvyDXz_orj3gX0_NzfmYulrko.ttf")), array("kind" => "webfonts#webfont", "family" => "Cambay", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cambay/v1/jw9niBxa04eEhnSwTWCEgw.ttf", "regular" => "http://fonts.gstatic.com/s/cambay/v1/etU9Bab4VuhzS-OKsb1VXg.ttf", "italic" => "http://fonts.gstatic.com/s/cambay/v1/ZEz9yNqpEOgejaw1rBhugQ.ttf", "700italic" => "http://fonts.gstatic.com/s/cambay/v1/j-5v_uUr0NXTumWN0siOiaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cambo", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cambo/v5/PnwpRuTdkYCf8qk4ajmNRA.ttf")), array("kind" => "webfonts#webfont", "family" => "Candal", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/candal/v6/x44dDW28zK7GR1gGDBmj9g.ttf")), array("kind" => "webfonts#webfont", "family" => "Cantarell", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cantarell/v6/Yir4ZDsCn4g1kWopdg-ehC3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/cantarell/v6/p5ydP_uWQ5lsFzcP_XVMEw.ttf", "italic" => "http://fonts.gstatic.com/s/cantarell/v6/DTCLtOSqP-7dgM-V_xKUjqCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/cantarell/v6/weehrwMeZBXb0QyrWnRwFXe1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Cantata One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-03-22", "files" => array("regular" => "http://fonts.gstatic.com/s/cantataone/v6/-a5FDvnBqaBMDaGgZYnEfqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cantora One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cantoraone/v5/oI-DS62RbHI8ZREjp73ehqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Capriola", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/capriola/v4/JxXPlkdzWwF9Cwelbvi9jA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cardo", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin-ext", "greek-ext", "latin", "greek"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cardo/v8/lQN30weILimrKvp8rZhF1w.ttf", "regular" => "http://fonts.gstatic.com/s/cardo/v8/jbkF2_R0FKUEZTq5dwSknQ.ttf", "italic" => "http://fonts.gstatic.com/s/cardo/v8/pcv4Np9tUkq0YREYUcEEJQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Carme", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carme/v7/08E0NP1eRBEyFRUadmMfgA.ttf")), array("kind" => "webfonts#webfont", "family" => "Carrois Gothic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carroisgothic/v4/GCgb7bssGpwp7V5ynxmWy2x3d0cwUleGuRTmCYfCUaM.ttf")), array("kind" => "webfonts#webfont", "family" => "Carrois Gothic SC", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carroisgothicsc/v4/bVp4nhwFIXU-r3LqUR8DSJTdPW1ioadGi2uRiKgJVCY.ttf")), array("kind" => "webfonts#webfont", "family" => "Carter One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carterone/v8/5X_LFvdbcB7OBG7hBgZ7fPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Catamaran", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700", "800", "900"), "subsets" => array("latin-ext", "tamil", "latin"), "version" => "v1", "lastModified" => "2015-08-06", "files" => array("100" => "http://fonts.gstatic.com/s/catamaran/v1/ilWHBiy0krUPdlmYxDuqC6CWcynf_cDxXwCLxiixG1c.ttf", "200" => "http://fonts.gstatic.com/s/catamaran/v1/hFc-HKSsGk6M-psujei1MC3USBnSvpkopQaUR-2r7iU.ttf", "300" => "http://fonts.gstatic.com/s/catamaran/v1/Aaag4ccR7Oh_4eai-jbrYC3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/catamaran/v1/83WSX3F86qsvj1Z4EI0tQi3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/catamaran/v1/a9PlHHnuBWiGGk0TwuFKTi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/catamaran/v1/PpgVtUHUdnBZYNpnzGbScy3USBnSvpkopQaUR-2r7iU.ttf", "800" => "http://fonts.gstatic.com/s/catamaran/v1/6VjB_uSfn3DZ93IQv58CmC3USBnSvpkopQaUR-2r7iU.ttf", "900" => "http://fonts.gstatic.com/s/catamaran/v1/5ys9TqpQc9Q6gHqbSox6py3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/catamaran/v1/MdNkM-DU8f6R-25Nxpr_XA.ttf")), array("kind" => "webfonts#webfont", "family" => "Caudex", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "greek-ext", "latin", "greek"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/caudex/v6/PetCI4GyQ5Q3LiOzUu_mMg.ttf", "regular" => "http://fonts.gstatic.com/s/caudex/v6/PWEexiHLDmQbn2b1OPZWfg.ttf", "italic" => "http://fonts.gstatic.com/s/caudex/v6/XjMZF6XCisvV3qapD4oJdw.ttf", "700italic" => "http://fonts.gstatic.com/s/caudex/v6/yT8YeHLjaJvQXlUEYOA8gqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Caveat", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-10-05", "files" => array("700" => "http://fonts.gstatic.com/s/caveat/v1/LkaFtQENGJry2eUMwGRTeA.ttf", "regular" => "http://fonts.gstatic.com/s/caveat/v1/8I23b6N-6rRVbh-C_Vx3yA.ttf")), array("kind" => "webfonts#webfont", "family" => "Caveat Brush", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-10-05", "files" => array("regular" => "http://fonts.gstatic.com/s/caveatbrush/v1/_d7bgsk3hfC4DXnUEeYKsy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Cedarville Cursive", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cedarvillecursive/v7/cuCe6HrkcqrWTWTUE7dw-41zwq9-z_Lf44CzRAA0d0Y.ttf")), array("kind" => "webfonts#webfont", "family" => "Ceviche One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/cevicheone/v7/WOaXIMBD4VYMy39MsobJhKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Changa One", "category" => "display", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/changaone/v9/dr4qjce4W3kxFrZRkVD87fesZW2xOQ-xsNqO47m55DA.ttf", "italic" => "http://fonts.gstatic.com/s/changaone/v9/wJVQlUs1lAZel-WdTo2U9y3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Chango", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chango/v5/3W3AeMMtRTH08t5qLOjBmg.ttf")), array("kind" => "webfonts#webfont", "family" => "Chau Philomene One", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chauphilomeneone/v4/KKc5egCL-a2fFVoOA2x6tBFi5dxgSTdxqnMJgWkBJcg.ttf", "italic" => "http://fonts.gstatic.com/s/chauphilomeneone/v4/eJj1PY_iN4KiIuyOvtMHJP6uyLkxyiC4WcYA74sfquE.ttf")), array("kind" => "webfonts#webfont", "family" => "Chela One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/chelaone/v5/h5O0dEnpnIq6jQnWxZybrA.ttf")), array("kind" => "webfonts#webfont", "family" => "Chelsea Market", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chelseamarket/v4/qSdzwh2A4BbNemy78sJLfAAI1i8fIftCBXsBF2v9UMI.ttf")), array("kind" => "webfonts#webfont", "family" => "Chenla", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/chenla/v9/aLNpdAUDq2MZbWz2U1a16g.ttf")), array("kind" => "webfonts#webfont", "family" => "Cherry Cream Soda", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cherrycreamsoda/v6/OrD-AUnFcZeeKa6F_c0_WxOiHiuAPYA9ry3O1RG2XIU.ttf")), array("kind" => "webfonts#webfont", "family" => "Cherry Swash", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cherryswash/v4/-CfyMyQqfucZPQNB0nvYyED2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/cherryswash/v4/HqOk7C7J1TZ5i3L-ejF0vi3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Chewy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chewy/v7/hcDN5cvQdIu6Bx4mg_TSyw.ttf")), array("kind" => "webfonts#webfont", "family" => "Chicle", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chicle/v5/xg4q57Ut9ZmyFwLp51JLgg.ttf")), array("kind" => "webfonts#webfont", "family" => "Chivo", "category" => "sans-serif", "variants" => array("regular", "italic", "900", "900italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/chivo/v7/JAdkiWd46QCW4vOsj3dzTA.ttf", "regular" => "http://fonts.gstatic.com/s/chivo/v7/L88PEuzS9eRfHRZhAPhZyw.ttf", "italic" => "http://fonts.gstatic.com/s/chivo/v7/Oe3-Q-a2kBzPnhHck_baMg.ttf", "900italic" => "http://fonts.gstatic.com/s/chivo/v7/LoszYnE86q2wJEOjCigBQ_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Chonburi", "category" => "display", "variants" => array("regular"), "subsets" => array("vietnamese", "thai", "latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-08-06", "files" => array("regular" => "http://fonts.gstatic.com/s/chonburi/v1/jd9PfbW0x_8Myt_XeUxvSQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Cinzel", "category" => "serif", "variants" => array("regular", "700", "900"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cinzel/v4/nYcFQ6_3pf_6YDrOFjBR8Q.ttf", "900" => "http://fonts.gstatic.com/s/cinzel/v4/FTBj72ozM2cEOSxiVsRb3A.ttf", "regular" => "http://fonts.gstatic.com/s/cinzel/v4/GF7dy_Nc-a6EaHYSyGd-EA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cinzel Decorative", "category" => "display", "variants" => array("regular", "700", "900"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F95-YYVDmZkJErg0zgx9XuZI.ttf", "900" => "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F97Khqbv0zQZa0g-9HOXAalU.ttf", "regular" => "http://fonts.gstatic.com/s/cinzeldecorative/v4/fmgK7oaJJIXAkhd9798yQgT5USbJx2F82lQbogPy2bY.ttf")), array("kind" => "webfonts#webfont", "family" => "Clicker Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/clickerscript/v4/Zupmk8XwADjufGxWB9KThBnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Coda", "category" => "display", "variants" => array("regular", "800"), "subsets" => array("latin-ext", "latin"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("800" => "http://fonts.gstatic.com/s/coda/v11/6ZIw0sbALY0KTMWllZB3hQ.ttf", "regular" => "http://fonts.gstatic.com/s/coda/v11/yHDvulhg-P-p2KRgRrnUYw.ttf")), array("kind" => "webfonts#webfont", "family" => "Coda Caption", "category" => "sans-serif", "variants" => array("800"), "subsets" => array("latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("800" => "http://fonts.gstatic.com/s/codacaption/v9/YDl6urZh-DUFhiMBTgAnz_qsay_1ZmRGmC8pVRdIfAg.ttf")), array("kind" => "webfonts#webfont", "family" => "Codystar", "category" => "display", "variants" => array("300", "regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/codystar/v4/EVaUzfJkcb8Zqx9kzQLXqqCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/codystar/v4/EN-CPFKYowSI7SuR7-0cZA.ttf")), array("kind" => "webfonts#webfont", "family" => "Combo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/combo/v5/Nab98KjR3JZSSPGtzLyXNw.ttf")), array("kind" => "webfonts#webfont", "family" => "Comfortaa", "category" => "display", "variants" => array("300", "regular", "700"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/comfortaa/v7/r_tUZNl0G8xCoOmp_JkSCi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/comfortaa/v7/fND5XPYKrF2tQDwwfWZJIy3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/comfortaa/v7/lZx6C1VViPgSOhCBUP7hXA.ttf")), array("kind" => "webfonts#webfont", "family" => "Coming Soon", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/comingsoon/v6/Yz2z3IAe2HSQAOWsSG8COKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Concert One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/concertone/v7/N5IWCIGhUNdPZn_efTxKN6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Condiment", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/condiment/v4/CstmdiPpgFSV0FUNL5LrJA.ttf")), array("kind" => "webfonts#webfont", "family" => "Content", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/content/v8/7PivP8Zvs2qn6F6aNbSQe_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/content/v8/l8qaLjygvOkDEU2G6-cjfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Contrail One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/contrailone/v6/b41KxjgiyqX-hkggANDU6C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Convergence", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/convergence/v5/eykrGz1NN_YpQmkAZjW-qKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cookie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cookie/v7/HxeUC62y_YdDbiFlze357A.ttf")), array("kind" => "webfonts#webfont", "family" => "Copse", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/copse/v6/wikLrtPGjZDvZ5w2i5HLWg.ttf")), array("kind" => "webfonts#webfont", "family" => "Corben", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/corben/v9/lirJaFSQWdGQuV--fksg5g.ttf", "regular" => "http://fonts.gstatic.com/s/corben/v9/tTysMZkt-j8Y5yhkgsoajQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Courgette", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/courgette/v4/2YO0EYtyE9HUPLZprahpZA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cousine", "category" => "monospace", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "hebrew", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cousine/v10/FXEOnNUcCzhdtoBxiq-lovesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/cousine/v10/GYX4bPXObJNJo63QJEUnLg.ttf", "italic" => "http://fonts.gstatic.com/s/cousine/v10/1WtIuajLoo8vjVwsrZ3eOg.ttf", "700italic" => "http://fonts.gstatic.com/s/cousine/v10/y_AZ5Sz-FwL1lux2xLSTZS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Coustard", "category" => "serif", "variants" => array("regular", "900"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/coustard/v6/W02OCWO6OfMUHz6aVyegQ6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/coustard/v6/iO2Rs5PmqAEAXoU3SkMVBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Covered By Your Grace", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/coveredbyyourgrace/v6/6ozZp4BPlrbDRWPe3EBGA6CVUMdvnk-GcAiZQrX9Gek.ttf")), array("kind" => "webfonts#webfont", "family" => "Crafty Girls", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/craftygirls/v5/0Sv8UWFFdhQmesHL32H8oy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Creepster", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/creepster/v5/0vdr5kWJ6aJlOg5JvxnXzQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Crete Round", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/creteround/v5/B8EwN421qqOCCT8vOH4wJ6CWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/creteround/v5/5xAt7XK2vkUdjhGtt98unUeOrDcLawS7-ssYqLr2Xp4.ttf")), array("kind" => "webfonts#webfont", "family" => "Crimson Text", "category" => "serif", "variants" => array("regular", "italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("600" => "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I2v8CylhIUtwUiYO7Z2wXbE.ttf", "700" => "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I0D2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/crimsontext/v6/3IFMwfRa07i-auYR-B-zNS3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/crimsontext/v6/a5QZnvmn5amyNI-t2BMkWPMZXuCXbOrAvx5R0IT5Oyo.ttf", "600italic" => "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDIR-5-urNOGAobhAyctHvW8.ttf", "700italic" => "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDPAs9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Croissant One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/croissantone/v4/mPjsOObnC77fp1cvZlOfIYjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Crushed", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/crushed/v6/aHwSejs3Kt0Lg95u7j32jA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cuprum", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cuprum/v7/6tl3_FkDeXSD72oEHuJh4w.ttf", "regular" => "http://fonts.gstatic.com/s/cuprum/v7/JgXs0F_UiaEdAS74msmFNg.ttf", "italic" => "http://fonts.gstatic.com/s/cuprum/v7/cLEz0KV6OxInnktSzpk58g.ttf", "700italic" => "http://fonts.gstatic.com/s/cuprum/v7/bnkXaBfoYvaJ75axRPSwVKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cutive", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cutive/v8/G2bW-ImyOCwKxBkLyz39YQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Cutive Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cutivemono/v4/ncWQtFVKcSs8OW798v30k6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Damion", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/damion/v6/13XtECwKxhD_VrOqXL4SiA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dancing Script", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/dancingscript/v6/KGBfwabt0ZRLA5W1ywjowb_dAmXiKjTPGCuO6G2MbfA.ttf", "regular" => "http://fonts.gstatic.com/s/dancingscript/v6/DK0eTGXiZjN6yA8zAEyM2RnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Dangrek", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/dangrek/v8/LOaFhBT-EHNxZjV8DAW_ew.ttf")), array("kind" => "webfonts#webfont", "family" => "Dawning of a New Day", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dawningofanewday/v7/JiDsRhiKZt8uz3NJ5xA06gXLnohmOYWQZqo_sW8GLTk.ttf")), array("kind" => "webfonts#webfont", "family" => "Days One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/daysone/v6/kzwZjNhc1iabMsrc_hKBIA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dekko", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/dekko/v2/AKtgABKC1rUxgIgS-bpojw.ttf")), array("kind" => "webfonts#webfont", "family" => "Delius", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/delius/v6/TQA163qafki2-gV-B6F_ag.ttf")), array("kind" => "webfonts#webfont", "family" => "Delius Swash Caps", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/deliusswashcaps/v8/uXyrEUnoWApxIOICunRq7yIrxb5zDVgU2N3VzXm7zq4.ttf")), array("kind" => "webfonts#webfont", "family" => "Delius Unicase", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/deliusunicase/v9/7FTMTITcb4dxUp99FAdTqNy5weKXdcrx-wE0cgECMq8.ttf", "regular" => "http://fonts.gstatic.com/s/deliusunicase/v9/b2sKujV3Q48RV2PQ0k1vqu6rPKfVZo7L2bERcf0BDns.ttf")), array("kind" => "webfonts#webfont", "family" => "Della Respira", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dellarespira/v4/F4E6Lo_IZ6L9AJCcbqtDVeDcg5akpSnIcsPhLOFv7l8.ttf")), array("kind" => "webfonts#webfont", "family" => "Denk One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/denkone/v4/TdXOeA4eA_hEx4W8Sh9wPw.ttf")), array("kind" => "webfonts#webfont", "family" => "Devonshire", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/devonshire/v5/I3ct_2t12SYizP8ZC-KFi_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dhurjati", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dhurjati/v4/uV6jO5e2iFMbGB0z79Cy5g.ttf")), array("kind" => "webfonts#webfont", "family" => "Didact Gothic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/didactgothic/v7/v8_72sD3DYMKyM0dn3LtWotBLojGU5Qdl8-5NL4v70w.ttf")), array("kind" => "webfonts#webfont", "family" => "Diplomata", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-03-23", "files" => array("regular" => "http://fonts.gstatic.com/s/diplomata/v8/u-ByBiKgN6rTMA36H3kcKg.ttf")), array("kind" => "webfonts#webfont", "family" => "Diplomata SC", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/diplomatasc/v5/JdVwAwfE1a_pahXjk5qpNi3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Domine", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/domine/v4/phBcG1ZbQFxUIt18hPVxnw.ttf", "regular" => "http://fonts.gstatic.com/s/domine/v4/wfVIgamVFjMNQAEWurCiHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Donegal One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/donegalone/v4/6kN4-fDxz7T9s5U61HwfF6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Doppio One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/doppioone/v4/WHZ3HJQotpk_4aSMNBo_t_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dorsa", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dorsa/v7/wCc3cUe6XrmG2LQE6GlIrw.ttf")), array("kind" => "webfonts#webfont", "family" => "Dosis", "category" => "sans-serif", "variants" => array("200", "300", "regular", "500", "600", "700", "800"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/dosis/v4/ztftab0r6hcd7AeurUGrSQ.ttf", "300" => "http://fonts.gstatic.com/s/dosis/v4/awIB6L0h5mb0plIKorXmuA.ttf", "500" => "http://fonts.gstatic.com/s/dosis/v4/ruEXDOFMxDPGnjCBKRqdAQ.ttf", "600" => "http://fonts.gstatic.com/s/dosis/v4/KNAswRNwm3tfONddYyidxg.ttf", "700" => "http://fonts.gstatic.com/s/dosis/v4/AEEAj0ONidK8NQQMBBlSig.ttf", "800" => "http://fonts.gstatic.com/s/dosis/v4/nlrKd8E69vvUU39XGsvR7Q.ttf", "regular" => "http://fonts.gstatic.com/s/dosis/v4/rJRlixu-w0JZ1MyhJpao_Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Dr Sugiyama", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/drsugiyama/v5/S5Yx3MIckgoyHhhS4C9Tv6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Droid Sans", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/droidsans/v6/EFpQQyG9GqCrobXxL-KRMQJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/droidsans/v6/rS9BT6-asrfjpkcV3DXf__esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Droid Sans Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/droidsansmono/v7/ns-m2xQYezAtqh7ai59hJcwD6PD0c3_abh9zHKQtbGU.ttf")), array("kind" => "webfonts#webfont", "family" => "Droid Serif", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/droidserif/v6/QQt14e8dY39u-eYBZmppwXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/droidserif/v6/DgAtPy6rIVa2Zx3Xh9KaNaCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/droidserif/v6/cj2hUnSRBhwmSPr9kS5890eOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/droidserif/v6/c92rD_x0V1LslSFt3-QEps_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Duru Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/durusans/v9/xn7iYH8xwmSyTvEV_HOxTw.ttf")), array("kind" => "webfonts#webfont", "family" => "Dynalight", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dynalight/v5/-CWsIe8OUDWTIHjSAh41kA.ttf")), array("kind" => "webfonts#webfont", "family" => "EB Garamond", "category" => "serif", "variants" => array("regular"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ebgaramond/v7/CDR0kuiFK7I1OZ2hSdR7G6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Eagle Lake", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/eaglelake/v4/ZKlYin7caemhx9eSg6RvPfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Eater", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/eater/v5/gm6f3OmYEdbs3lPQtUfBkA.ttf")), array("kind" => "webfonts#webfont", "family" => "Economica", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/economica/v4/UK4l2VEpwjv3gdcwbwXE9C3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/economica/v4/G4rJRujzZbq9Nxngu9l3hg.ttf", "italic" => "http://fonts.gstatic.com/s/economica/v4/p5O9AVeUqx_n35xQRinNYaCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/economica/v4/ac5dlUsedQ03RqGOeay-3Xe1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Eczar", "category" => "serif", "variants" => array("regular", "500", "600", "700", "800"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v4", "lastModified" => "2016-02-24", "files" => array("500" => "http://fonts.gstatic.com/s/eczar/v4/Ooe4KaPp2594tF8TbMfdlQ.ttf", "600" => "http://fonts.gstatic.com/s/eczar/v4/IjQsWW0bmgkZ6lnN72cnTQ.ttf", "700" => "http://fonts.gstatic.com/s/eczar/v4/ELC8RVXfBMb3VuuHtMwBOA.ttf", "800" => "http://fonts.gstatic.com/s/eczar/v4/9Uyt6nTZLx_Qj5_WRah-iQ.ttf", "regular" => "http://fonts.gstatic.com/s/eczar/v4/uKZcAQ5JBBs1UbeXFRbBRg.ttf")), array("kind" => "webfonts#webfont", "family" => "Ek Mukta", "category" => "sans-serif", "variants" => array("200", "300", "regular", "500", "600", "700", "800"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/ekmukta/v7/crtkNHh5JcM3VJKG0E-B36CWcynf_cDxXwCLxiixG1c.ttf", "300" => "http://fonts.gstatic.com/s/ekmukta/v7/mpaAv7CIyk0VnZlqSneVxKCWcynf_cDxXwCLxiixG1c.ttf", "500" => "http://fonts.gstatic.com/s/ekmukta/v7/PZ1y2MstFczWvBlFSgzMyaCWcynf_cDxXwCLxiixG1c.ttf", "600" => "http://fonts.gstatic.com/s/ekmukta/v7/Z5Mfzeu6M3emakcJO2QeTqCWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/ekmukta/v7/4ugcOGR28Jn-oBIn0-qLYaCWcynf_cDxXwCLxiixG1c.ttf", "800" => "http://fonts.gstatic.com/s/ekmukta/v7/O68TH5OjEhVmn9_gIrcfS6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/ekmukta/v7/aFcjXdC5jyJ1p8w54wIIrg.ttf")), array("kind" => "webfonts#webfont", "family" => "Electrolize", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/electrolize/v5/yFVu5iokC-nt4B1Cyfxb9aCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Elsie", "category" => "display", "variants" => array("regular", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/elsie/v5/1t-9f0N2NFYwAgN7oaISqg.ttf", "regular" => "http://fonts.gstatic.com/s/elsie/v5/gwspePauE45BJu6Ok1QrfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Elsie Swash Caps", "category" => "display", "variants" => array("regular", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/elsieswashcaps/v4/iZnus9qif0tR5pGaDv5zdKoKBWBozTtxi30NfZDOXXU.ttf", "regular" => "http://fonts.gstatic.com/s/elsieswashcaps/v4/9L3hIJMPCf6sxCltnxd6X2YeFSdnSpRYv5h9gpdlD1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Emblema One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/emblemaone/v5/7IlBUjBWPIiw7cr_O2IfSaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Emilys Candy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/emilyscandy/v4/PofLVm6v1SwZGOzC8s-I3S3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Engagement", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/engagement/v5/4Uz0Jii7oVPcaFRYmbpU6vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Englebert", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/englebert/v4/sll38iOvOuarDTYBchlP3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Enriqueta", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/enriqueta/v5/I27Pb-wEGH2ajLYP0QrtSC3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/enriqueta/v5/_p90TrIwR1SC-vDKtmrv6A.ttf")), array("kind" => "webfonts#webfont", "family" => "Erica One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/ericaone/v7/cIBnH2VAqQMIGYAcE4ufvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Esteban", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/esteban/v4/ESyhLgqDDyK5JcFPp2svDw.ttf")), array("kind" => "webfonts#webfont", "family" => "Euphoria Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/euphoriascript/v4/c4XB4Iijj_NvSsCF4I0O2MxLhO8OSNnfAp53LK1_iRs.ttf")), array("kind" => "webfonts#webfont", "family" => "Ewert", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ewert/v4/Em8hrzuzSbfHcTVqMjbAQg.ttf")), array("kind" => "webfonts#webfont", "family" => "Exo", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/exo/v4/RI7A9uwjRmPbVp0n8e-Jvg.ttf", "200" => "http://fonts.gstatic.com/s/exo/v4/F8OfC_swrRRxpFt-tlXZQg.ttf", "300" => "http://fonts.gstatic.com/s/exo/v4/SBrN7TKUqgGUvfxqHqsnNw.ttf", "500" => "http://fonts.gstatic.com/s/exo/v4/jCg6DmGGXt_OVyp5ofQHPw.ttf", "600" => "http://fonts.gstatic.com/s/exo/v4/q_SG5kXUmOcIvFpgtdZnlw.ttf", "700" => "http://fonts.gstatic.com/s/exo/v4/3_jwsL4v9uHjl5Q37G57mw.ttf", "800" => "http://fonts.gstatic.com/s/exo/v4/yLPuxBuV0lzqibRJyooOJg.ttf", "900" => "http://fonts.gstatic.com/s/exo/v4/97d0nd6Yv4-SA_X92xAuZA.ttf", "100italic" => "http://fonts.gstatic.com/s/exo/v4/qtGyZZlWb2EEvby3ZPosxw.ttf", "200italic" => "http://fonts.gstatic.com/s/exo/v4/fr4HBfXHYiIngW2_bhlgRw.ttf", "300italic" => "http://fonts.gstatic.com/s/exo/v4/3gmiLjBegIfcDLISjTGA1g.ttf", "regular" => "http://fonts.gstatic.com/s/exo/v4/eUEzTFueNXRVhbt4PEB8kQ.ttf", "italic" => "http://fonts.gstatic.com/s/exo/v4/cfgolWisMSURhpQeVHl_NA.ttf", "500italic" => "http://fonts.gstatic.com/s/exo/v4/lo5eTdCNJZQVN08p8RnzAQ.ttf", "600italic" => "http://fonts.gstatic.com/s/exo/v4/0cExa8K_pxS2lTuMr68XUA.ttf", "700italic" => "http://fonts.gstatic.com/s/exo/v4/0me55yJIxd5vyQ9bF7SsiA.ttf", "800italic" => "http://fonts.gstatic.com/s/exo/v4/n3LejeKVj_8gtZq5fIgNYw.ttf", "900italic" => "http://fonts.gstatic.com/s/exo/v4/JHTkQVhzyLtkY13Ye95TJQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Exo 2", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/exo2/v3/oVOtQy53isv97g4UhBUDqg.ttf", "200" => "http://fonts.gstatic.com/s/exo2/v3/qa-Ci2pBwJdCxciE1ErifQ.ttf", "300" => "http://fonts.gstatic.com/s/exo2/v3/nLUBdz_lHHoVIPor05Byhw.ttf", "500" => "http://fonts.gstatic.com/s/exo2/v3/oM0rzUuPqVJpW-VEIpuW5w.ttf", "600" => "http://fonts.gstatic.com/s/exo2/v3/YnSn3HsyvyI1feGSdRMYqA.ttf", "700" => "http://fonts.gstatic.com/s/exo2/v3/2DiK4XkdTckfTk6we73-bQ.ttf", "800" => "http://fonts.gstatic.com/s/exo2/v3/IVYl_7dJruOg8zKRpC8Hrw.ttf", "900" => "http://fonts.gstatic.com/s/exo2/v3/e8csG8Wnu87AF6uCndkFRQ.ttf", "100italic" => "http://fonts.gstatic.com/s/exo2/v3/LNYVgsJcaCxoKFHmd4AZcg.ttf", "200italic" => "http://fonts.gstatic.com/s/exo2/v3/DCrVxDVvS69n50O-5erZVvesZW2xOQ-xsNqO47m55DA.ttf", "300italic" => "http://fonts.gstatic.com/s/exo2/v3/iSy9VTeUTiqiurQg2ywtu_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/exo2/v3/Pf_kZuIH5c5WKVkQUaeSWQ.ttf", "italic" => "http://fonts.gstatic.com/s/exo2/v3/xxA5ZscX9sTU6U0lZJUlYA.ttf", "500italic" => "http://fonts.gstatic.com/s/exo2/v3/amzRVCB-gipwdihZZ2LtT_esZW2xOQ-xsNqO47m55DA.ttf", "600italic" => "http://fonts.gstatic.com/s/exo2/v3/Vmo58BiptGwfVFb0teU5gPesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/exo2/v3/Sdo-zW-4_--pDkTg6bYrY_esZW2xOQ-xsNqO47m55DA.ttf", "800italic" => "http://fonts.gstatic.com/s/exo2/v3/p0TA6KeOz1o4rySEbvUxI_esZW2xOQ-xsNqO47m55DA.ttf", "900italic" => "http://fonts.gstatic.com/s/exo2/v3/KPhsGCoT2-7Uj6pMlRscH_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Expletus Sans", "category" => "display", "variants" => array("regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwAqQmZ7VjhwksfpNVG0pqGc.ttf", "600" => "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwCvj1tU7IJMS3CS9kCx2B3U.ttf", "700" => "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwFCbmAUID8LN-q3pJpOk3Ys.ttf", "regular" => "http://fonts.gstatic.com/s/expletussans/v9/gegTSDBDs5le3g6uxU1ZsX8f0n03UdmQgF_CLvNR2vg.ttf", "italic" => "http://fonts.gstatic.com/s/expletussans/v9/Y-erXmY0b6DU_i2Qu0hTJj4G9C9ttb0Oz5Cvf0qOitE.ttf", "500italic" => "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW87DCVO6wo6i5LKIyZDzK40.ttf", "600italic" => "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW8yKH23ZS6zCKOFHG0e_4JE.ttf", "700italic" => "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW5F66r9C4AnxxlBlGd7xY4g.ttf")), array("kind" => "webfonts#webfont", "family" => "Fanwood Text", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fanwoodtext/v6/hDNDHUlsSb8bgnEmDp4T_i3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/fanwoodtext/v6/0J3SBbkMZqBV-3iGxs5E9_MZXuCXbOrAvx5R0IT5Oyo.ttf")), array("kind" => "webfonts#webfont", "family" => "Fascinate", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fascinate/v5/ZE0637WWkBPKt1AmFaqD3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Fascinate Inline", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fascinateinline/v6/lRguYfMfWArflkm5aOQ5QJmp8DTZ6iHear7UV05iykg.ttf")), array("kind" => "webfonts#webfont", "family" => "Faster One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fasterone/v6/YxTOW2sf56uxD1T7byP5K_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Fasthand", "category" => "serif", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v7", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/fasthand/v7/6XAagHH_KmpZL67wTvsETQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Fauna One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/faunaone/v4/8kL-wpAPofcAMELI_5NRnQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Federant", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/federant/v8/tddZFSiGvxICNOGra0i5aA.ttf")), array("kind" => "webfonts#webfont", "family" => "Federo", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/federo/v8/JPhe1S2tujeyaR79gXBLeQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Felipa", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/felipa/v4/SeyfyFZY7abAQXGrOIYnYg.ttf")), array("kind" => "webfonts#webfont", "family" => "Fenix", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fenix/v4/Ak8wR3VSlAN7VN_eMeJj7Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Finger Paint", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fingerpaint/v4/m_ZRbiY-aPb13R3DWPBGXy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fira Mono", "category" => "monospace", "variants" => array("regular", "700"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek", "cyrillic-ext"), "version" => "v3", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/firamono/v3/l24Wph3FsyKAbJ8dfExTZy3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/firamono/v3/WQOm1D4RO-yvA9q9trJc8g.ttf")), array("kind" => "webfonts#webfont", "family" => "Fira Sans", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek", "cyrillic-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/firasans/v5/VTBnrK42EiOBncVyQXZ7jy3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/firasans/v5/zM2u8V3CuPVwAAXFQcDi4C3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/firasans/v5/DugPdSljmOTocZOR2CItOi3USBnSvpkopQaUR-2r7iU.ttf", "300italic" => "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTS9-WlPSxbfiI49GsXo3q0g.ttf", "regular" => "http://fonts.gstatic.com/s/firasans/v5/nsT0isDy56OkSX99sFQbXw.ttf", "italic" => "http://fonts.gstatic.com/s/firasans/v5/cPT_2ddmoxsUuMtQqa8zGqCWcynf_cDxXwCLxiixG1c.ttf", "500italic" => "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTcCNfqCYlB_eIx7H1TVXe60.ttf", "700italic" => "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTXe1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fjalla One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fjallaone/v4/3b7vWCfOZsU53vMa8LWsf_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Fjord One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fjordone/v5/R_YHK8au2uFPw5tNu5N7zw.ttf")), array("kind" => "webfonts#webfont", "family" => "Flamenco", "category" => "display", "variants" => array("300", "regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/flamenco/v6/x9iI5CogvuZVCGoRHwXuo6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/flamenco/v6/HC0ugfLLgt26I5_BWD1PZA.ttf")), array("kind" => "webfonts#webfont", "family" => "Flavors", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/flavors/v5/SPJi5QclATvon8ExcKGRvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Fondamento", "category" => "handwriting", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fondamento/v5/6LWXcjT1B7bnWluAOSNfMPesZW2xOQ-xsNqO47m55DA.ttf", "italic" => "http://fonts.gstatic.com/s/fondamento/v5/y6TmwhSbZ8rYq7OTFyo7OS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fontdiner Swanky", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fontdinerswanky/v6/8_GxIO5ixMtn5P6COsF3TlBjMPLzPAFJwRBn-s1U7kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Forum", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/forum/v7/MZUpsq1VfLrqv8eSDcbrrQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Francois One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/francoisone/v9/bYbkq2nU2TSx4SwFbz5sCC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Freckle Face", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/freckleface/v4/7-B8j9BPJgazdHIGqPNv8y3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fredericka the Great", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/frederickathegreat/v5/7Es8Lxoku-e5eOZWpxw18nrnet6gXN1McwdQxS1dVrI.ttf")), array("kind" => "webfonts#webfont", "family" => "Fredoka One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fredokaone/v4/QKfwXi-z-KtJAlnO2ethYqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Freehand", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/freehand/v8/uEBQxvA0lnn_BrD6krlxMw.ttf")), array("kind" => "webfonts#webfont", "family" => "Fresca", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fresca/v5/2q7Qm9sCo1tWvVgSDVWNIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Frijole", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/frijole/v5/L2MfZse-2gCascuD-nLhWg.ttf")), array("kind" => "webfonts#webfont", "family" => "Fruktur", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fruktur/v8/PnQvfEi1LssAvhJsCwH__w.ttf")), array("kind" => "webfonts#webfont", "family" => "Fugaz One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fugazone/v6/5tteVDCwxsr8-5RuSiRWOw.ttf")), array("kind" => "webfonts#webfont", "family" => "GFS Didot", "category" => "serif", "variants" => array("regular"), "subsets" => array("greek"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gfsdidot/v6/jQKxZy2RU-h9tkPZcRVluA.ttf")), array("kind" => "webfonts#webfont", "family" => "GFS Neohellenic", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/7HwjPQa7qNiOsnUce2h4448_BwCLZY3eDSV6kppAwI8.ttf", "regular" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/B4xRqbn-tANVqVgamMsSDiayCZa0z7CpFzlkqoCHztc.ttf", "italic" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/KnaWrO4awITAqigQIIYXKkCTdomiyJpIzPbEbIES3rU.ttf", "700italic" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/FwWjoX6XqT-szJFyqsu_GYFF0fM4h-krcpQk7emtCpE.ttf")), array("kind" => "webfonts#webfont", "family" => "Gabriela", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gabriela/v4/B-2ZfbAO3HDrxqV6lR5tdA.ttf")), array("kind" => "webfonts#webfont", "family" => "Gafata", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gafata/v5/aTFqlki_3Dc3geo-FxHTvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Galdeano", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/galdeano/v6/ZKFMQI6HxEG1jOT0UGSZUg.ttf")), array("kind" => "webfonts#webfont", "family" => "Galindo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/galindo/v4/2lafAS_ZEfB33OJryhXDUg.ttf")), array("kind" => "webfonts#webfont", "family" => "Gentium Basic", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gentiumbasic/v8/2qL6yulgGf0wwgOp-UqGyLNuTeOOLg3nUymsEEGmdO0.ttf", "regular" => "http://fonts.gstatic.com/s/gentiumbasic/v8/KCktj43blvLkhOTolFn-MYtBLojGU5Qdl8-5NL4v70w.ttf", "italic" => "http://fonts.gstatic.com/s/gentiumbasic/v8/qoFz4NSMaYC2UmsMAG3lyTj3mvXnCeAk09uTtmkJGRc.ttf", "700italic" => "http://fonts.gstatic.com/s/gentiumbasic/v8/8N9-c_aQDJ8LbI1NGVMrwtswO1vWwP9exiF8s0wqW10.ttf")), array("kind" => "webfonts#webfont", "family" => "Gentium Book Basic", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/T2vUYmWzlqUtgLYdlemGnaWESMHIjnSjm9UUxYtEOko.ttf", "regular" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/IRFxB2matTxrjZt6a3FUnrWDjKAyldGEr6eEi2MBNeY.ttf", "italic" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/qHqW2lwKO8-uTfIkh8FsUfXfjMwrYnmPVsQth2IcAPY.ttf", "700italic" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/632u7TMIoFDWQYUaHFUp5PA2A9KyRZEkn4TZVuhsWRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Geo", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/geo/v8/mJuJYk5Pww84B4uHAQ1XaA.ttf", "italic" => "http://fonts.gstatic.com/s/geo/v8/8_r1wToF7nPdDuX1qxel6Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Geostar", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/geostar/v6/A8WQbhQbpYx3GWWaShJ9GA.ttf")), array("kind" => "webfonts#webfont", "family" => "Geostar Fill", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/geostarfill/v6/Y5ovXPPOHYTfQzK2aM-hui3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Germania One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/germaniaone/v4/3_6AyUql_-FbDi1e68jHdC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Gidugu", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gidugu/v3/Ey6Eq3hrT6MM58iFItFcgw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gilda Display", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gildadisplay/v4/8yAVUZLLZ3wb7dSsjix0CADHmap7fRWINAsw8-RaxNg.ttf")), array("kind" => "webfonts#webfont", "family" => "Give You Glory", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/giveyouglory/v6/DFEWZFgGmfseyIdGRJAxuBwwkpSPZdvjnMtysdqprfI.ttf")), array("kind" => "webfonts#webfont", "family" => "Glass Antiqua", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/glassantiqua/v4/0yLrXKplgdUDIMz5TnCHNODcg5akpSnIcsPhLOFv7l8.ttf")), array("kind" => "webfonts#webfont", "family" => "Glegoo", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/glegoo/v5/TlLolbauH0-0Aiz1LUH5og.ttf", "regular" => "http://fonts.gstatic.com/s/glegoo/v5/2tf-h3n2A_SNYXEO0C8bKw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gloria Hallelujah", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gloriahallelujah/v8/CA1k7SlXcY5kvI81M_R28Q3RdPdyebSUyJECJouPsvA.ttf")), array("kind" => "webfonts#webfont", "family" => "Goblin One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/goblinone/v6/331XtzoXgpVEvNTVcBJ_C_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Gochi Hand", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gochihand/v7/KT1-WxgHsittJ34_20IfAPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Gorditas", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gorditas/v4/6-XCeknmxaon8AUqVkMnHaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/gorditas/v4/uMgZhXUyH6qNGF3QsjQT5Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Goudy Bookletter 1911", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/goudybookletter1911/v6/l5lwlGTN3pEY5Bf-rQEuIIjNDsyURsIKu4GSfvSE4mA.ttf")), array("kind" => "webfonts#webfont", "family" => "Graduate", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/graduate/v4/JpAmYLHqcIh9_Ff35HHwiA.ttf")), array("kind" => "webfonts#webfont", "family" => "Grand Hotel", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/grandhotel/v4/C_A8HiFZjXPpnMt38XnK7qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Gravitas One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gravitasone/v6/nBHdBv6zVNU8MtP6w9FwTS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Great Vibes", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/greatvibes/v4/4Mi5RG_9LjQYrTU55GN_L6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Griffy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/griffy/v4/vWkyYGBSyE5xjnShNtJtzw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gruppo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gruppo/v7/pS_JM0cK_piBZve-lfUq9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Gudea", "category" => "sans-serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gudea/v4/lsip4aiWhJ9bx172Y9FN_w.ttf", "regular" => "http://fonts.gstatic.com/s/gudea/v4/S-4QqBlkMPiiA3jNeCR5yw.ttf", "italic" => "http://fonts.gstatic.com/s/gudea/v4/7mNgsGw_vfS-uUgRVXNDSw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gurajada", "category" => "serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gurajada/v4/6Adfkl4PCRyq6XTENACEyA.ttf")), array("kind" => "webfonts#webfont", "family" => "Habibi", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/habibi/v5/YYyqXF6pWpL7kmKgS_2iUA.ttf")), array("kind" => "webfonts#webfont", "family" => "Halant", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2016-03-14", "files" => array("300" => "http://fonts.gstatic.com/s/halant/v2/dM3ItAOWNNod_Cf3MnLlEg.ttf", "500" => "http://fonts.gstatic.com/s/halant/v2/tlsNj3K-hJKtiirTDtUbkQ.ttf", "600" => "http://fonts.gstatic.com/s/halant/v2/zNR2WvI_V8o652vIZp3X4Q.ttf", "700" => "http://fonts.gstatic.com/s/halant/v2/D9FN7OH89AuCmZDLHbPQfA.ttf", "regular" => "http://fonts.gstatic.com/s/halant/v2/rEs7Jk3SVyt3cTx6DoTu1w.ttf")), array("kind" => "webfonts#webfont", "family" => "Hammersmith One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hammersmithone/v7/FWNn6ITYqL6or7ZTmBxRhjjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Hanalei", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hanalei/v6/Sx8vVMBnXSQyK6Cn0CBJ3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Hanalei Fill", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hanaleifill/v5/5uPeWLnaDdtm4UBG26Ds6C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Handlee", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/handlee/v5/6OfkXkyC0E5NZN80ED8u3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Hanuman", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/hanuman/v9/lzzXZ2l84x88giDrbfq76vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/hanuman/v9/hRhwOGGmElJSl6KSPvEnOQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Happy Monkey", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/happymonkey/v5/c2o0ps8nkBmaOYctqBq1rS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Headland One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/headlandone/v4/iGmBeOvQGfq9DSbjJ8jDVy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Henny Penny", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hennypenny/v4/XRgo3ogXyi3tpsFfjImRF6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Herr Von Muellerhoff", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/herrvonmuellerhoff/v6/mmy24EUmk4tjm4gAEjUd7NLGIYrUsBdh-JWHYgiDiMU.ttf")), array("kind" => "webfonts#webfont", "family" => "Hind", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/hind/v5/qa346Adgv9kPDXoD1my4kA.ttf", "500" => "http://fonts.gstatic.com/s/hind/v5/2cs8RCVcYtiv4iNDH1UsQQ.ttf", "600" => "http://fonts.gstatic.com/s/hind/v5/TUKUmFMXSoxloBP1ni08oA.ttf", "700" => "http://fonts.gstatic.com/s/hind/v5/cXJJavLdUbCfjxlsA6DqTw.ttf", "regular" => "http://fonts.gstatic.com/s/hind/v5/mktFHh5Z5P9YjGKSslSUtA.ttf")), array("kind" => "webfonts#webfont", "family" => "Hind Siliguri", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("bengali", "latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-09-09", "files" => array("300" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJnzoJ52uD-1fmXmi8u0n_zsc.ttf", "500" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJn__2zpxNHQ3utWt_82o9dAo.ttf", "600" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJn-x91FDzFvnud68bXrNkpDA.ttf", "700" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJn6iiXuG_rGcOxkuidirlnJE.ttf", "regular" => "http://fonts.gstatic.com/s/hindsiliguri/v1/f2eEi2pbIa8eBfNwpUl0Am_MnNA9OgK8I1F23mNWOpE.ttf")), array("kind" => "webfonts#webfont", "family" => "Hind Vadodara", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "latin", "gujarati"), "version" => "v1", "lastModified" => "2015-09-09", "files" => array("300" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTbDwfZ__Dotj_J8NiWv76DQ.ttf", "500" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTZzEKvFIU9WyojfbAkhDb6c.ttf", "600" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTfgXs2VXrZsRiQ1c96pXZKI.ttf", "700" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTYGjoH95IEFGA7BjhXnx_eg.ttf", "regular" => "http://fonts.gstatic.com/s/hindvadodara/v1/9c6KKeibr6NtFqknnNxZB-Dcg5akpSnIcsPhLOFv7l8.ttf")), array("kind" => "webfonts#webfont", "family" => "Holtwood One SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/holtwoodonesc/v7/sToOq3cIxbfnhbEkgYNuBbAgSRh1LpJXlLfl8IbsmHg.ttf")), array("kind" => "webfonts#webfont", "family" => "Homemade Apple", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/homemadeapple/v6/yg3UMEsefgZ8IHz_ryz86BiPOmFWYV1WlrJkRafc4c0.ttf")), array("kind" => "webfonts#webfont", "family" => "Homenaje", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/homenaje/v5/v0YBU0iBRrGdVjDNQILxtA.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell DW Pica", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldwpica/v6/W81bfaWiUicLSPbJhW-ATsA5qm663gJGVdtpamafG5A.ttf", "italic" => "http://fonts.gstatic.com/s/imfelldwpica/v6/alQJ8SK5aSOZVaelYoyT4PL2asmh5DlYQYCosKo6yQs.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell DW Pica SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldwpicasc/v6/xBKKJV4z2KsrtQnmjGO17JZ9RBdEL0H9o5qzT1Rtof4.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Double Pica", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldoublepica/v6/yN1wY_01BkQnO0LYAhXdUol14jEdVOhEmvtCMCVwYak.ttf", "italic" => "http://fonts.gstatic.com/s/imfelldoublepica/v6/64odUh2hAw8D9dkFKTlWYq0AWwkgdQfsRHec8TYi4mI.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Double Pica SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldoublepicasc/v6/jkrUtrLFpMw4ZazhfkKsGwc4LoC4OJUqLw9omnT3VOU.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell English", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellenglish/v6/xwIisCqGFi8pff-oa9uSVHGNmx1fDm-u2eBJHQkdrmk.ttf", "italic" => "http://fonts.gstatic.com/s/imfellenglish/v6/Z3cnIAI_L3XTRfz4JuZKbuewladMPCWTthtMv9cPS-c.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell English SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellenglishsc/v6/h3Tn6yWfw4b5qaLD1RWvz5ATixNthKRRR1XVH3rJNiw.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell French Canon", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/iKB0WL1BagSpNPz3NLMdsJ3V2FNpBrlLSvqUnERhBP8.ttf", "italic" => "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/owCuNQkLLFW7TBBPJbMnhRa-QL94KdW80H29tcyld2A.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell French Canon SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellfrenchcanonsc/v6/kA3bS19-tQbeT_iG32EZmaiyyzHwYrAbmNulTz423iM.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Great Primer", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellgreatprimer/v6/AL8ALGNthei20f9Cu3e93rgeX3ROgtTz44CitKAxzKI.ttf", "italic" => "http://fonts.gstatic.com/s/imfellgreatprimer/v6/1a-artkXMVg682r7TTxVY1_YG2SFv8Ma7CxRl1S3o7g.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Great Primer SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellgreatprimersc/v6/A313vRj97hMMGFjt6rgSJtRg-ciw1Y27JeXb2Zv4lZQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Iceberg", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/iceberg/v4/p2XVm4M-N0AOEEOymFKC5w.ttf")), array("kind" => "webfonts#webfont", "family" => "Iceland", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/iceland/v5/kq3uTMGgvzWGNi39B_WxGA.ttf")), array("kind" => "webfonts#webfont", "family" => "Imprima", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imprima/v4/eRjquWLjwLGnTEhLH7u3kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Inconsolata", "category" => "monospace", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v12", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/inconsolata/v12/AIed271kqQlcIRSOnQH0yXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/inconsolata/v12/7bMKuoy6Nh0ft0SHnIGMuaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Inder", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/inder/v5/C38TwecLTfKxIHDc_Adcrw.ttf")), array("kind" => "webfonts#webfont", "family" => "Indie Flower", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/indieflower/v8/10JVD_humAd5zP2yrFqw6i3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Inika", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/inika/v4/bl3ZoTyrWsFun2zYbsgJrA.ttf", "regular" => "http://fonts.gstatic.com/s/inika/v4/eZCrULQGaIxkrRoGz_DjhQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Inknut Antiqua", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700", "800", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIg6hmPNSXwHGnJQCeQHKUMo.ttf", "500" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIiYCDvi1XFzRnTV7qUFsNgk.ttf", "600" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIjLEgY6PI0GrY6L00mykcEQ.ttf", "700" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIlRhfXn9P4_QueZ7VkUHUNc.ttf", "800" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVInARjXVu2t2krcNTHiCb1qY.ttf", "900" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIrTsNy1JrFNT1qKy8j7W3CU.ttf", "regular" => "http://fonts.gstatic.com/s/inknutantiqua/v1/VlmmTfOrxr3HfcnhMueX9arFJ4O13IHVxZbM6yoslpo.ttf")), array("kind" => "webfonts#webfont", "family" => "Irish Grover", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/irishgrover/v6/kUp7uUPooL-KsLGzeVJbBC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Istok Web", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/istokweb/v10/2koEo4AKFSvK4B52O_Mwai3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/istokweb/v10/RYLSjEXQ0nNtLLc4n7--dQ.ttf", "italic" => "http://fonts.gstatic.com/s/istokweb/v10/kvcT2SlTjmGbC3YlZxmrl6CWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/istokweb/v10/ycQ3g52ELrh3o_HYCNNUw3e1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Italiana", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/italiana/v4/dt95fkCSTOF-c6QNjwSycA.ttf")), array("kind" => "webfonts#webfont", "family" => "Italianno", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/italianno/v6/HsyHnLpKf8uP7aMpDQHZmg.ttf")), array("kind" => "webfonts#webfont", "family" => "Itim", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("vietnamese", "thai", "latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-08-06", "files" => array("regular" => "http://fonts.gstatic.com/s/itim/v1/HHV9WK2x5lUkc5bxMXG8Tw.ttf")), array("kind" => "webfonts#webfont", "family" => "Jacques Francois", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jacquesfrancois/v4/_-0XWPQIW6tOzTHg4KaJ_M13D_4KM32Q4UmTSjpuNGQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Jacques Francois Shadow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jacquesfrancoisshadow/v4/V14y0H3vq56fY9SV4OL_FASt0D_oLVawA8L8b9iKjbs.ttf")), array("kind" => "webfonts#webfont", "family" => "Jaldi", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2015-06-10", "files" => array("700" => "http://fonts.gstatic.com/s/jaldi/v2/OIbtgjjEp3aVWtjF6WY8mA.ttf", "regular" => "http://fonts.gstatic.com/s/jaldi/v2/x1vR-bPW9a1EB-BUVqttCw.ttf")), array("kind" => "webfonts#webfont", "family" => "Jim Nightshade", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jimnightshade/v4/_n43lYHXVWNgXegdYRIK9CF1W_bo0EdycfH0kHciIic.ttf")), array("kind" => "webfonts#webfont", "family" => "Jockey One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jockeyone/v6/cAucnOZLvFo07w2AbufBCfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Jolly Lodger", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jollylodger/v4/RX8HnkBgaEKQSHQyP9itiS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Josefin Sans", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d8SVQ0giZ-l_NELu3lgGyYw.ttf", "300" => "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z6cQoVhARpoaILP7amxE_8g.ttf", "600" => "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z2v8CylhIUtwUiYO7Z2wXbE.ttf", "700" => "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z0D2ttfZwueP-QU272T9-k4.ttf", "100italic" => "http://fonts.gstatic.com/s/josefinsans/v9/s7-P1gqRNRNn-YWdOYnAOXXcj1rQwlNLIS625o-SrL0.ttf", "300italic" => "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33Gyna0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/josefinsans/v9/xgzbb53t8j-Mo-vYa23n5i3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d_MZXuCXbOrAvx5R0IT5Oyo.ttf", "600italic" => "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G4R-5-urNOGAobhAyctHvW8.ttf", "700italic" => "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G_As9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Josefin Slab", "category" => "serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUsSVQ0giZ-l_NELu3lgGyYw.ttf", "300" => "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2KcQoVhARpoaILP7amxE_8g.ttf", "600" => "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2Gv8CylhIUtwUiYO7Z2wXbE.ttf", "700" => "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2ED2ttfZwueP-QU272T9-k4.ttf", "100italic" => "http://fonts.gstatic.com/s/josefinslab/v6/8BjDChqLgBF3RJKfwHIYh3Xcj1rQwlNLIS625o-SrL0.ttf", "300italic" => "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJulyyna0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/josefinslab/v6/46aYWdgz-1oFX11flmyEfS3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUvMZXuCXbOrAvx5R0IT5Oyo.ttf", "600italic" => "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly4R-5-urNOGAobhAyctHvW8.ttf", "700italic" => "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly_As9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Joti One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jotione/v4/P3r_Th0ESHJdzunsvWgUfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Judson", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/judson/v9/he4a2LwiPJc7r8x0oKCKiA.ttf", "regular" => "http://fonts.gstatic.com/s/judson/v9/znM1AAs0eytUaJzf1CrYZQ.ttf", "italic" => "http://fonts.gstatic.com/s/judson/v9/GVqQW9P52ygW-ySq-CLwAA.ttf")), array("kind" => "webfonts#webfont", "family" => "Julee", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/julee/v6/CAib-jsUsSO8SvVRnE9fHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Julius Sans One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/juliussansone/v5/iU65JP9acQHPDLkdalCF7jjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Junge", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/junge/v4/j4IXCXtxrw9qIBheercp3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Jura", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/jura/v7/Rqx_xy1UnN0C7wD3FUSyPQ.ttf", "500" => "http://fonts.gstatic.com/s/jura/v7/16xhfjHCiaLj3tsqqgmtGg.ttf", "600" => "http://fonts.gstatic.com/s/jura/v7/iwseduOwJSdY8wQ1Y6CJdA.ttf", "regular" => "http://fonts.gstatic.com/s/jura/v7/YAWMwF3sN0KCbynMq-Yr_Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Just Another Hand", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/justanotherhand/v7/fKV8XYuRNNagXr38eqbRf99BnJIEGrvoojniP57E51c.ttf")), array("kind" => "webfonts#webfont", "family" => "Just Me Again Down Here", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/justmeagaindownhere/v8/sN06iTc9ITubLTgXoG-kc3M9eVLpVTSK6TqZTIgBrWQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Kadwa", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/kadwa/v1/NFPZaBfekj_Io-7vUMz4Ww.ttf", "regular" => "http://fonts.gstatic.com/s/kadwa/v1/VwEN8oKGqaa0ug9kRpvSSg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kalam", "category" => "handwriting", "variants" => array("300", "regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/kalam/v7/MgQQlk1SgPEHdlkWMNh7Jg.ttf", "700" => "http://fonts.gstatic.com/s/kalam/v7/95nLItUGyWtNLZjSckluLQ.ttf", "regular" => "http://fonts.gstatic.com/s/kalam/v7/hNEJkp2K-aql7e5WQish4Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Kameron", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/kameron/v7/rabVVbzlflqvmXJUFlKnu_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/kameron/v7/9r8HYhqDSwcq9WMjupL82A.ttf")), array("kind" => "webfonts#webfont", "family" => "Kanit", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("vietnamese", "thai", "latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-12-10", "files" => array("100" => "http://fonts.gstatic.com/s/kanit/v1/CYl4qOK-NWwZp3iTKW1eIA.ttf", "200" => "http://fonts.gstatic.com/s/kanit/v1/wfLWkj1C4tYl7MoiFWS3bA.ttf", "300" => "http://fonts.gstatic.com/s/kanit/v1/SM5qHynYGdOmMKEwGUFIPA.ttf", "500" => "http://fonts.gstatic.com/s/kanit/v1/GxoU_USIJyIy8WIcYSUO2g.ttf", "600" => "http://fonts.gstatic.com/s/kanit/v1/n_qoIVxojeQY0D1pvoNDhA.ttf", "700" => "http://fonts.gstatic.com/s/kanit/v1/kEGmYvO8My36j5ILmbUPRg.ttf", "800" => "http://fonts.gstatic.com/s/kanit/v1/YTp-zAuKXxwnA1YnJIF1rg.ttf", "900" => "http://fonts.gstatic.com/s/kanit/v1/1NIEkusi3bG3GgO9Hor3fQ.ttf", "100italic" => "http://fonts.gstatic.com/s/kanit/v1/NLNtc56MpXmHl1yOrop8oQ.ttf", "200italic" => "http://fonts.gstatic.com/s/kanit/v1/D8gkrAAM2bvNJ-1i4ot-1_esZW2xOQ-xsNqO47m55DA.ttf", "300italic" => "http://fonts.gstatic.com/s/kanit/v1/IePislKOKy3Bqfpb9V5VM_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/kanit/v1/L6VKvM17ZmevDynOiw7H9w.ttf", "italic" => "http://fonts.gstatic.com/s/kanit/v1/sHLq5U0-T0oSMTnwTKgv-A.ttf", "500italic" => "http://fonts.gstatic.com/s/kanit/v1/hrCiWCaNv9AaF0mDY1F2zPesZW2xOQ-xsNqO47m55DA.ttf", "600italic" => "http://fonts.gstatic.com/s/kanit/v1/9BkP85yRDoVayTWQwdGLqPesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/kanit/v1/WNo3ZZ9xtOZJknNlvHAFWfesZW2xOQ-xsNqO47m55DA.ttf", "800italic" => "http://fonts.gstatic.com/s/kanit/v1/qiTGrW5sCa9UQp841fWjc_esZW2xOQ-xsNqO47m55DA.ttf", "900italic" => "http://fonts.gstatic.com/s/kanit/v1/ogN5dFD1r4BfxNV4Nb-TXfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Kantumruy", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("khmer"), "version" => "v3", "lastModified" => "2015-04-03", "files" => array("300" => "http://fonts.gstatic.com/s/kantumruy/v3/ERRwQE0WG5uanaZWmOFXNi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/kantumruy/v3/gie_zErpGf_rNzs920C2Ji3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/kantumruy/v3/kQfXNYElQxr5dS8FyjD39Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Karla", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/karla/v5/JS501sZLxZ4zraLQdncOUA.ttf", "regular" => "http://fonts.gstatic.com/s/karla/v5/78UgGRwJFkhqaoFimqoKpQ.ttf", "italic" => "http://fonts.gstatic.com/s/karla/v5/51UBKly9RQOnOkj95ZwEFw.ttf", "700italic" => "http://fonts.gstatic.com/s/karla/v5/3YDyi09gQjCRh-5-SVhTTvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Karma", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/karma/v5/lH6ijJnguWR2Sz7tEl6MQQ.ttf", "500" => "http://fonts.gstatic.com/s/karma/v5/9YGjxi6Hcvz2Kh-rzO_cAw.ttf", "600" => "http://fonts.gstatic.com/s/karma/v5/h_CVzXXtqSxjfS2sIwaejA.ttf", "700" => "http://fonts.gstatic.com/s/karma/v5/smuSM08oApsQPPVYbHd1CA.ttf", "regular" => "http://fonts.gstatic.com/s/karma/v5/wvqTxAGBUrTqU0urTEoPIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Kaushan Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kaushanscript/v4/qx1LSqts-NtiKcLw4N03IBnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Kavoon", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/kavoon/v5/382m-6baKXqJFQjEgobt6Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Kdam Thmor", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v3", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/kdamthmor/v3/otCdP6UU-VBIrBfVDWBQJ_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Keania One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/keaniaone/v4/PACrDKZWngXzgo-ucl6buvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Kelly Slab", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kellyslab/v6/F_2oS1e9XdYx1MAi8XEVefesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Kenia", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kenia/v8/OLM9-XfITK9PsTLKbGBrwg.ttf")), array("kind" => "webfonts#webfont", "family" => "Khand", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/khand/v4/072zRl4OU9Pinjjkg174LA.ttf", "500" => "http://fonts.gstatic.com/s/khand/v4/46_p-SqtuMe56nxQdteWxg.ttf", "600" => "http://fonts.gstatic.com/s/khand/v4/zggGWYIiPJyMTgkfxP_kaA.ttf", "700" => "http://fonts.gstatic.com/s/khand/v4/0I0UWaN-X5QBmfexpXKhqg.ttf", "regular" => "http://fonts.gstatic.com/s/khand/v4/HdLdTNFqNIDGJZl1ZEj84w.ttf")), array("kind" => "webfonts#webfont", "family" => "Khmer", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/khmer/v9/vWaBJIbaQuBNz02ALIKJ3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Khula", "category" => "sans-serif", "variants" => array("300", "regular", "600", "700", "800"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/khula/v1/_1LySU5Upq-sc4OZ1b_GIw.ttf", "600" => "http://fonts.gstatic.com/s/khula/v1/4ZH86Hce-aeFDaedTnbkbg.ttf", "700" => "http://fonts.gstatic.com/s/khula/v1/UGVExGl-Jjs-YPpGv-MZ6w.ttf", "800" => "http://fonts.gstatic.com/s/khula/v1/Sccp_oOo8FWgbx5smie7xQ.ttf", "regular" => "http://fonts.gstatic.com/s/khula/v1/izcPIFyCSd16XI1Ak_Wk7Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Kite One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kiteone/v4/8ojWmgUc97m0f_i6sTqLoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Knewave", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/knewave/v5/KGHM4XWr4iKnBMqzZLkPBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kotta One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kottaone/v4/AB2Q7hVw6niJYDgLvFXu5w.ttf")), array("kind" => "webfonts#webfont", "family" => "Koulen", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v10", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/koulen/v10/AAYOK8RSRO7FTskTzFuzNw.ttf")), array("kind" => "webfonts#webfont", "family" => "Kranky", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kranky/v6/C8dxxTS99-fZ84vWk8SDrg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kreon", "category" => "serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/kreon/v9/HKtJRiq5C2zbq5N1IX32sA.ttf", "700" => "http://fonts.gstatic.com/s/kreon/v9/jh0dSmaPodjxISiblIUTkw.ttf", "regular" => "http://fonts.gstatic.com/s/kreon/v9/zA_IZt0u0S3cvHJu-n1oEg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kristi", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kristi/v7/aRsgBQrkQkMlu4UPSnJyOQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Krona One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kronaone/v4/zcQj4ljqTo166AdourlF9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Kurale", "category" => "serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-05-14", "files" => array("regular" => "http://fonts.gstatic.com/s/kurale/v1/rxeyIcvQlT4XAWwNbXFCfw.ttf")), array("kind" => "webfonts#webfont", "family" => "La Belle Aurore", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/labelleaurore/v7/Irdbc4ASuUoWDjd_Wc3md123K2iuuhwZgaKapkyRTY8.ttf")), array("kind" => "webfonts#webfont", "family" => "Laila", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2016-03-14", "files" => array("300" => "http://fonts.gstatic.com/s/laila/v2/bLbIVEZF3IWSZ-in72GJvA.ttf", "500" => "http://fonts.gstatic.com/s/laila/v2/tkf8VtFvW9g3VsxQCA6WOQ.ttf", "600" => "http://fonts.gstatic.com/s/laila/v2/3EMP2L6JRQ4GaHIxCldCeA.ttf", "700" => "http://fonts.gstatic.com/s/laila/v2/R7P4z1xjcjecmjZ9GyhqHQ.ttf", "regular" => "http://fonts.gstatic.com/s/laila/v2/6iYor3edprH7360qtBGoag.ttf")), array("kind" => "webfonts#webfont", "family" => "Lakki Reddy", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lakkireddy/v3/Q5EpFa91FjW37t0FCnedaKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Lancelot", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lancelot/v6/XMT7T_oo_MQUGAnU2v-sdA.ttf")), array("kind" => "webfonts#webfont", "family" => "Lateef", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "arabic"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lateef/v10/PAsKCgi1qc7XPwvzo_I-DQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Lato", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/lato/v11/Upp-ka9rLQmHYCsFgwL-eg.ttf", "300" => "http://fonts.gstatic.com/s/lato/v11/Ja02qOppOVq9jeRjWekbHg.ttf", "700" => "http://fonts.gstatic.com/s/lato/v11/iX_QxBBZLhNj5JHlTzHQzg.ttf", "900" => "http://fonts.gstatic.com/s/lato/v11/8TPEV6NbYWZlNsXjbYVv7w.ttf", "100italic" => "http://fonts.gstatic.com/s/lato/v11/zLegi10uS_9-fnUDISl0KA.ttf", "300italic" => "http://fonts.gstatic.com/s/lato/v11/dVebFcn7EV7wAKwgYestUg.ttf", "regular" => "http://fonts.gstatic.com/s/lato/v11/h7rISIcQapZBpei-sXwIwg.ttf", "italic" => "http://fonts.gstatic.com/s/lato/v11/P_dJOFJylV3A870UIOtr0w.ttf", "700italic" => "http://fonts.gstatic.com/s/lato/v11/WFcZakHrrCKeUJxHA4T_gw.ttf", "900italic" => "http://fonts.gstatic.com/s/lato/v11/draWperrI7n2xi35Cl08fA.ttf")), array("kind" => "webfonts#webfont", "family" => "League Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/leaguescript/v7/wnRFLvfabWK_DauqppD6vSeUSrabuTpOsMEiRLtKwk0.ttf")), array("kind" => "webfonts#webfont", "family" => "Leckerli One", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/leckerlione/v7/S2Y_iLrItTu8kIJTkS7DrC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ledger", "category" => "serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ledger/v4/G432jp-tahOfWHbCYkI0jw.ttf")), array("kind" => "webfonts#webfont", "family" => "Lekton", "category" => "sans-serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lekton/v7/WZw-uL8WTkx3SBVfTlevXQ.ttf", "regular" => "http://fonts.gstatic.com/s/lekton/v7/r483JYmxf5PjIm4jVAm8Yg.ttf", "italic" => "http://fonts.gstatic.com/s/lekton/v7/_UbDIPBA1wDqSbhp-OED7A.ttf")), array("kind" => "webfonts#webfont", "family" => "Lemon", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lemon/v5/wed1nNu4LNSu-3RoRVUhUw.ttf")), array("kind" => "webfonts#webfont", "family" => "Libre Baskerville", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/librebaskerville/v4/kH7K4InNTm7mmOXXjrA5v-xuswJKUVpBRfYFpz0W3Iw.ttf", "regular" => "http://fonts.gstatic.com/s/librebaskerville/v4/pR0sBQVcY0JZc_ciXjFsKyyZRYCSvpCzQKuMWnP5NDY.ttf", "italic" => "http://fonts.gstatic.com/s/librebaskerville/v4/QHIOz1iKF3bIEzRdDFaf5QnhapNS5Oi8FPrBRDLbsW4.ttf")), array("kind" => "webfonts#webfont", "family" => "Life Savers", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lifesavers/v6/THQKqChyYUm97rNPVFdGGXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/lifesavers/v6/g49cUDk4Y1P0G5NMkMAm7qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Lilita One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lilitaone/v4/vTxJQjbNV6BCBHx8sGDCVvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Lily Script One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lilyscriptone/v4/uPWsLVW8uiXqIBnE8ZwGPDjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Limelight", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/limelight/v7/5dTfN6igsXjLjOy8QQShcg.ttf")), array("kind" => "webfonts#webfont", "family" => "Linden Hill", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lindenhill/v6/UgsC0txqd-E1yjvjutwm_KCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/lindenhill/v6/OcS3bZcu8vJvIDH8Zic83keOrDcLawS7-ssYqLr2Xp4.ttf")), array("kind" => "webfonts#webfont", "family" => "Lobster", "category" => "display", "variants" => array("regular"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "latin"), "version" => "v16", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lobster/v16/9LpJGtNuM1D8FAZ2BkJH2Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Lobster Two", "category" => "display", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lobstertwo/v8/bmdxOflBqMqjEC0-kGsIiHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/lobstertwo/v8/xb9aY4w9ceh8JRzobID1naCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/lobstertwo/v8/Ul_16MSbfayQv1I4QhLEoEeOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/lobstertwo/v8/LEkN2_no_6kFvRfiBZ8xpM_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Outline", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinaoutline/v5/lls08GOa1eT74p072l1AWJmp8DTZ6iHear7UV05iykg.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Shadow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinashadow/v4/dNYuzPS_7eYgXFJBzMoKdbw6Z3rVA5KDSi7aQxS92Nk.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Sketch", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinasketch/v4/p7Ai06aT1Ycp_D2fyE3z69d6z_uhFGnpCOifUY1fJQo.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Solid", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinasolid/v4/yysorIEiYSBb0ylZjg791MR125CwGqh8XBqkBzea0LA.ttf")), array("kind" => "webfonts#webfont", "family" => "Lora", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lora/v9/enKND5SfzQKkggBA_VnT1A.ttf", "regular" => "http://fonts.gstatic.com/s/lora/v9/aXJ7KVIGcejEy1abawZazg.ttf", "italic" => "http://fonts.gstatic.com/s/lora/v9/AN2EZaj2tFRpyveuNn9BOg.ttf", "700italic" => "http://fonts.gstatic.com/s/lora/v9/ivs9j3kYU65pR9QD9YFdzQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Love Ya Like A Sister", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/loveyalikeasister/v7/LzkxWS-af0Br2Sk_YgSJY-ad1xEP8DQfgfY8MH9aBUg.ttf")), array("kind" => "webfonts#webfont", "family" => "Loved by the King", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lovedbytheking/v6/wg03xD4cWigj4YDufLBSr8io2AFEwwMpu7y5KyiyAJc.ttf")), array("kind" => "webfonts#webfont", "family" => "Lovers Quarrel", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/loversquarrel/v4/gipdZ8b7pKb89MzQLAtJHLHLxci2ElvNEmOB303HLk0.ttf")), array("kind" => "webfonts#webfont", "family" => "Luckiest Guy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/luckiestguy/v6/5718gH8nDy3hFVihOpkY5C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Lusitana", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lusitana/v4/GWtZyUsONxgkdl3Mc1P7FKCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/lusitana/v4/l1h9VDomkwbdzbPdmLcUIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Lustria", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lustria/v4/gXAk0s4ai0X-TAOhYzZd1w.ttf")), array("kind" => "webfonts#webfont", "family" => "Macondo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/macondo/v5/G6yPNUscRPQ8ufBXs_8yRQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Macondo Swash Caps", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/macondoswashcaps/v4/SsSR706z-MlvEH7_LS6JAPkkgYRHs6GSG949m-K6x2k.ttf")), array("kind" => "webfonts#webfont", "family" => "Magra", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/magra/v4/6fOM5sq5cIn8D0RjX8Lztw.ttf", "regular" => "http://fonts.gstatic.com/s/magra/v4/hoZ13bwCXBxuGZqAudgc5A.ttf")), array("kind" => "webfonts#webfont", "family" => "Maiden Orange", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/maidenorange/v6/ZhKIA2SPisEwdhW7g0RUWojjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Mako", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mako/v7/z5zSLmfPlv1uTVAdmJBLXg.ttf")), array("kind" => "webfonts#webfont", "family" => "Mallanna", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mallanna/v4/krCTa-CfMbtxqF0689CbuQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Mandali", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mandali/v4/0lF8yJ7fkyjXuqtSi5bWbQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Marcellus", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marcellus/v4/UjiLZzumxWC9whJ86UtaYw.ttf")), array("kind" => "webfonts#webfont", "family" => "Marcellus SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marcellussc/v4/_jugwxhkkynrvsfrxVx8gS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Marck Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marckscript/v7/O_D1NAZVOFOobLbVtW3bci3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Margarine", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/margarine/v5/DJnJwIrcO_cGkjSzY3MERw.ttf")), array("kind" => "webfonts#webfont", "family" => "Marko One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/markoone/v6/hpP7j861sOAco43iDc4n4w.ttf")), array("kind" => "webfonts#webfont", "family" => "Marmelad", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marmelad/v6/jI0_FBlSOIRLL0ePWOhOwQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Martel", "category" => "serif", "variants" => array("200", "300", "regular", "600", "700", "800", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-04-22", "files" => array("200" => "http://fonts.gstatic.com/s/martel/v1/_wfGdswZbat7P4tupHLA1w.ttf", "300" => "http://fonts.gstatic.com/s/martel/v1/SghoV2F2VPdVU3P0a4fa9w.ttf", "600" => "http://fonts.gstatic.com/s/martel/v1/Kt9uPhH1PvUwuZ5Y6zuAMQ.ttf", "700" => "http://fonts.gstatic.com/s/martel/v1/4OzIiKB5wE36xXL2U0vzWQ.ttf", "800" => "http://fonts.gstatic.com/s/martel/v1/RVF8drcQoRkRL7l_ZkpTlQ.ttf", "900" => "http://fonts.gstatic.com/s/martel/v1/iS0YUpFJoiLRlnyl40rpEA.ttf", "regular" => "http://fonts.gstatic.com/s/martel/v1/9ALu5czkaaf5zsYk6GJEnQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Martel Sans", "category" => "sans-serif", "variants" => array("200", "300", "regular", "600", "700", "800", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2015-12-08", "files" => array("200" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQEnzyIngrzGjGh22wPb6cGM.ttf", "300" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQC9-WlPSxbfiI49GsXo3q0g.ttf", "600" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQJZ7xm-Bj30Bj2KNdXDzSZg.ttf", "700" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "800" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQA89PwPrYLaRFJ-HNCU9NbA.ttf", "900" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQCenaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/martelsans/v2/91c8DPDZncMc0RFfhmc2RqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Marvel", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/marvel/v6/WrHDBL1RupWGo2UcdgxB3Q.ttf", "regular" => "http://fonts.gstatic.com/s/marvel/v6/Fg1dO8tWVb-MlyqhsbXEkg.ttf", "italic" => "http://fonts.gstatic.com/s/marvel/v6/HzyjFB-oR5usrc7Lxz9g8w.ttf", "700italic" => "http://fonts.gstatic.com/s/marvel/v6/Gzf5NT09Y6xskdQRj2kz1qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Mate", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mate/v5/ooFviPcJ6hZP5bAE71Cawg.ttf", "italic" => "http://fonts.gstatic.com/s/mate/v5/5XwW6_cbisGvCX5qmNiqfA.ttf")), array("kind" => "webfonts#webfont", "family" => "Mate SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/matesc/v5/-YkIT2TZoPZF6pawKzDpWw.ttf")), array("kind" => "webfonts#webfont", "family" => "Maven Pro", "category" => "sans-serif", "variants" => array("regular", "500", "700", "900"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/mavenpro/v7/SQVfzoJBbj9t3aVcmbspRi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/mavenpro/v7/uDssvmXgp7Nj3i336k_dSi3USBnSvpkopQaUR-2r7iU.ttf", "900" => "http://fonts.gstatic.com/s/mavenpro/v7/-91TwiFzqeL1F7Kh91APwS3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/mavenpro/v7/sqPJIFG4gqsjl-0q_46Gbw.ttf")), array("kind" => "webfonts#webfont", "family" => "McLaren", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mclaren/v4/OprvTGxaiINBKW_1_U0eoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Meddon", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2015-08-12", "files" => array("regular" => "http://fonts.gstatic.com/s/meddon/v9/f8zJO98uu2EtSj9p7ci9RA.ttf")), array("kind" => "webfonts#webfont", "family" => "MedievalSharp", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/medievalsharp/v8/85X_PjV6tftJ0-rX7KYQkOe45sJkivqprK7VkUlzfg0.ttf")), array("kind" => "webfonts#webfont", "family" => "Medula One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/medulaone/v6/AasPgDQak81dsTGQHc5zUPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Megrim", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/megrim/v7/e-9jVUC9lv1zxaFQARuftw.ttf")), array("kind" => "webfonts#webfont", "family" => "Meie Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/meiescript/v4/oTIWE5MmPye-rCyVp_6KEqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Merienda", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/merienda/v4/GlwcvRLlgiVE2MBFQ4r0sKCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/merienda/v4/MYY6Og1qZlOQtPW2G95Y3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Merienda One", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/meriendaone/v7/bCA-uDdUx6nTO8SjzCLXvS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Merriweather", "category" => "serif", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/merriweather/v11/ZvcMqxEwPfh2qDWBPxn6nqcQoVhARpoaILP7amxE_8g.ttf", "700" => "http://fonts.gstatic.com/s/merriweather/v11/ZvcMqxEwPfh2qDWBPxn6nkD2ttfZwueP-QU272T9-k4.ttf", "900" => "http://fonts.gstatic.com/s/merriweather/v11/ZvcMqxEwPfh2qDWBPxn6nqObDOjC3UL77puoeHsE3fw.ttf", "300italic" => "http://fonts.gstatic.com/s/merriweather/v11/EYh7Vl4ywhowqULgRdYwICna0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/merriweather/v11/RFda8w1V0eDZheqfcyQ4EC3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/merriweather/v11/So5lHxHT37p2SS4-t60SlPMZXuCXbOrAvx5R0IT5Oyo.ttf", "700italic" => "http://fonts.gstatic.com/s/merriweather/v11/EYh7Vl4ywhowqULgRdYwIPAs9-1nE9qOqhChW0m4nDE.ttf", "900italic" => "http://fonts.gstatic.com/s/merriweather/v11/EYh7Vl4ywhowqULgRdYwIBd0_s6jQr9r5s5OZYvtzBY.ttf")), array("kind" => "webfonts#webfont", "family" => "Merriweather Sans", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic", "800", "800italic"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/merriweathersans/v7/6LmGj5dOJopQKEkt88Gowan5N8K-_DP0e9e_v51obXQ.ttf", "700" => "http://fonts.gstatic.com/s/merriweathersans/v7/6LmGj5dOJopQKEkt88GowbqxG25nQNOioCZSK4sU-CA.ttf", "800" => "http://fonts.gstatic.com/s/merriweathersans/v7/6LmGj5dOJopQKEkt88GowYufzO2zUYSj5LqoJ3UGkco.ttf", "300italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/nAqt4hiqwq3tzCecpgPmVdytE4nGXk2hYD5nJ740tBw.ttf", "regular" => "http://fonts.gstatic.com/s/merriweathersans/v7/AKu1CjQ4qnV8MUltkAX3sOAj_ty82iuwwDTNEYXGiyQ.ttf", "italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/3Mz4hOHzs2npRMG3B1ascZ32VBCoA_HLsn85tSWZmdo.ttf", "700italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/nAqt4hiqwq3tzCecpgPmVbuqAJxizi8Dk_SK5et7kMg.ttf", "800italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/nAqt4hiqwq3tzCecpgPmVdDmPrYMy3aZO4LmnZsxTQw.ttf")), array("kind" => "webfonts#webfont", "family" => "Metal", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/metal/v9/zA3UOP13ooQcxjv04BZX5g.ttf")), array("kind" => "webfonts#webfont", "family" => "Metal Mania", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/metalmania/v6/isriV_rAUgj6bPWPN6l9QKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Metamorphous", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/metamorphous/v6/wGqUKXRinIYggz-BTRU9ei3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Metrophobic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/metrophobic/v6/SaglWZWCrrv_D17u1i4v_aCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Michroma", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/michroma/v7/0c2XrW81_QsiKV8T9thumA.ttf")), array("kind" => "webfonts#webfont", "family" => "Milonga", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/milonga/v4/dzNdIUSTGFmy2ahovDRcWg.ttf")), array("kind" => "webfonts#webfont", "family" => "Miltonian", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/miltonian/v9/Z4HrYZyqm0BnNNzcCUfzoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Miltonian Tattoo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/miltoniantattoo/v10/1oU_8OGYwW46eh02YHydn2uk0YtI6thZkz1Hmh-odwg.ttf")), array("kind" => "webfonts#webfont", "family" => "Miniver", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/miniver/v5/4yTQohOH_cWKRS5laRFhYg.ttf")), array("kind" => "webfonts#webfont", "family" => "Miss Fajardose", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/missfajardose/v6/WcXjlQPKn6nBfr8LY3ktNu6rPKfVZo7L2bERcf0BDns.ttf")), array("kind" => "webfonts#webfont", "family" => "Modak", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/modak/v1/lMsN0QIKid-pCPvL0hH4nw.ttf")), array("kind" => "webfonts#webfont", "family" => "Modern Antiqua", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/modernantiqua/v6/8qX_tr6Xzy4t9fvZDXPkh6rFJ4O13IHVxZbM6yoslpo.ttf")), array("kind" => "webfonts#webfont", "family" => "Molengo", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/molengo/v7/jcjgeGuzv83I55AzOTpXNQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Molle", "category" => "handwriting", "variants" => array("italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("italic" => "http://fonts.gstatic.com/s/molle/v4/9XTdCsjPXifLqo5et-YoGA.ttf")), array("kind" => "webfonts#webfont", "family" => "Monda", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/monda/v4/EVOzZUyc_j1w2GuTgTAW1g.ttf", "regular" => "http://fonts.gstatic.com/s/monda/v4/qFMHZ9zvR6B_gnoIgosPrw.ttf")), array("kind" => "webfonts#webfont", "family" => "Monofett", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/monofett/v6/C6K5L799Rgxzg2brgOaqAw.ttf")), array("kind" => "webfonts#webfont", "family" => "Monoton", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/monoton/v6/aCz8ja_bE4dg-7agSvExdw.ttf")), array("kind" => "webfonts#webfont", "family" => "Monsieur La Doulaise", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/monsieurladoulaise/v5/IMAdMj6Eq9jZ46CPctFtMKP61oAqTJXlx5ZVOBmcPdM.ttf")), array("kind" => "webfonts#webfont", "family" => "Montaga", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/montaga/v4/PwTwUboiD-M4-mFjZfJs2A.ttf")), array("kind" => "webfonts#webfont", "family" => "Montez", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/montez/v6/kx58rLOWQQLGFM4pDHv5Ng.ttf")), array("kind" => "webfonts#webfont", "family" => "Montserrat", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/montserrat/v6/IQHow_FEYlDC4Gzy_m8fcgJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/montserrat/v6/Kqy6-utIpx_30Xzecmeo8_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Montserrat Alternates", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/montserratalternates/v4/YENqOGAVzwIHjYNjmKuAZpeqBKvsAhm-s2I4RVSXFfc.ttf", "regular" => "http://fonts.gstatic.com/s/montserratalternates/v4/z2n1Sjxk9souK3HCtdHuklPuEVRGaG9GCQnmM16YWq0.ttf")), array("kind" => "webfonts#webfont", "family" => "Montserrat Subrayada", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/montserratsubrayada/v4/wf-IKpsHcfm0C9uaz9IeGJvEcF1LWArDbGWgKZSH9go.ttf", "regular" => "http://fonts.gstatic.com/s/montserratsubrayada/v4/nzoCWCz0e9c7Mr2Gl8bbgrJymm6ilkk9f0nDA_sC_qk.ttf")), array("kind" => "webfonts#webfont", "family" => "Moul", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/moul/v8/Kb0ALQnfyXawP1a_P_gpTQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Moulpali", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/moulpali/v9/diD74BprGhmVkJoerKmrKA.ttf")), array("kind" => "webfonts#webfont", "family" => "Mountains of Christmas", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/mountainsofchristmas/v8/PymufKtHszoLrY0uiAYKNM9cPTbSBTrQyTa5TWAe3vE.ttf", "regular" => "http://fonts.gstatic.com/s/mountainsofchristmas/v8/dVGBFPwd6G44IWDbQtPew2Auds3jz1Fxb61CgfaGDr4.ttf")), array("kind" => "webfonts#webfont", "family" => "Mouse Memoirs", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mousememoirs/v4/NBFaaJFux_j0AQbAsW3QeH8f0n03UdmQgF_CLvNR2vg.ttf")), array("kind" => "webfonts#webfont", "family" => "Mr Bedfort", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrbedfort/v5/81bGgHTRikLs_puEGshl7_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Mr Dafoe", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrdafoe/v5/s32Q1S6ZkT7EaX53mUirvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Mr De Haviland", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrdehaviland/v5/fD8y4L6PJ4vqDk7z8Y8e27v4lrhng1lzu7-weKO6cw8.ttf")), array("kind" => "webfonts#webfont", "family" => "Mrs Saint Delafield", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrssaintdelafield/v4/vuWagfFT7bj9lFtZOFBwmjHMBelqWf3tJeGyts2SmKU.ttf")), array("kind" => "webfonts#webfont", "family" => "Mrs Sheppards", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrssheppards/v5/2WFsWMV3VUeCz6UVH7UjCn8f0n03UdmQgF_CLvNR2vg.ttf")), array("kind" => "webfonts#webfont", "family" => "Muli", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/muli/v7/VJw4F3ZHRAZ7Hmg3nQu5YQ.ttf", "300italic" => "http://fonts.gstatic.com/s/muli/v7/s-NKMCru8HiyjEt0ZDoBoA.ttf", "regular" => "http://fonts.gstatic.com/s/muli/v7/KJiP6KznxbALQgfJcDdPAw.ttf", "italic" => "http://fonts.gstatic.com/s/muli/v7/Cg0K_IWANs9xkNoxV7H1_w.ttf")), array("kind" => "webfonts#webfont", "family" => "Mystery Quest", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mysteryquest/v4/467jJvg0c7HgucvBB9PLDyeUSrabuTpOsMEiRLtKwk0.ttf")), array("kind" => "webfonts#webfont", "family" => "NTR", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ntr/v4/e7H4ZLtGfVOYyOupo6T12g.ttf")), array("kind" => "webfonts#webfont", "family" => "Neucha", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("cyrillic", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/neucha/v8/bijdhB-TzQdtpl0ykhGh4Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Neuton", "category" => "serif", "variants" => array("200", "300", "regular", "italic", "700", "800"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/neuton/v8/DA3Mkew3XqSkPpi1f4tJow.ttf", "300" => "http://fonts.gstatic.com/s/neuton/v8/xrc_aZ2hx-gdeV0mlY8Vww.ttf", "700" => "http://fonts.gstatic.com/s/neuton/v8/gnWpkWY7DirkKiovncYrfg.ttf", "800" => "http://fonts.gstatic.com/s/neuton/v8/XPzBQV4lY6enLxQG9cF1jw.ttf", "regular" => "http://fonts.gstatic.com/s/neuton/v8/9R-MGIOQUdjAVeB6nE6PcQ.ttf", "italic" => "http://fonts.gstatic.com/s/neuton/v8/uVMT3JOB5BNFi3lgPp6kEg.ttf")), array("kind" => "webfonts#webfont", "family" => "New Rocker", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/newrocker/v5/EFUWzHJedEkpW399zYOHofesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "News Cycle", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v13", "lastModified" => "2015-04-16", "files" => array("700" => "http://fonts.gstatic.com/s/newscycle/v13/G28Ny31cr5orMqEQy6ljtwJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/newscycle/v13/xyMAr8VfiUzIOvS1abHJO_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Niconne", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/niconne/v6/ZA-mFw2QNXodx5y7kfELBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Nixie One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/nixieone/v7/h6kQfmzm0Shdnp3eswRaqQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nobile", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/nobile/v7/9p6M-Yrg_r_QPmSD1skrOg.ttf", "regular" => "http://fonts.gstatic.com/s/nobile/v7/lC_lPi1ddtN38iXTCRh6ow.ttf", "italic" => "http://fonts.gstatic.com/s/nobile/v7/vGmrpKzWQQSrb-PR6FWBIA.ttf", "700italic" => "http://fonts.gstatic.com/s/nobile/v7/oQ1eYPaXV638N03KvsNvyKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Nokora", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/nokora/v9/QMqqa4QEOhQpiig3cAPmbQ.ttf", "regular" => "http://fonts.gstatic.com/s/nokora/v9/dRyz1JfnyKPNaRcBNX9F9A.ttf")), array("kind" => "webfonts#webfont", "family" => "Norican", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/norican/v4/SHnSqhYAWG5sZTWcPzEHig.ttf")), array("kind" => "webfonts#webfont", "family" => "Nosifer", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/nosifer/v5/7eJGoIuHRrtcG00j6CptSA.ttf")), array("kind" => "webfonts#webfont", "family" => "Nothing You Could Do", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/nothingyoucoulddo/v6/jpk1K3jbJoyoK0XKaSyQAf-TpkXjXYGWiJZAEtBRjPU.ttf")), array("kind" => "webfonts#webfont", "family" => "Noticia Text", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/noticiatext/v6/pEko-RqEtp45bE2P80AAKUD2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/noticiatext/v6/wdyV6x3eKpdeUPQ7BJ5uUC3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/noticiatext/v6/dAuxVpkYE_Q_IwIm6elsKPMZXuCXbOrAvx5R0IT5Oyo.ttf", "700italic" => "http://fonts.gstatic.com/s/noticiatext/v6/-rQ7V8ARjf28_b7kRa0JuvAs9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Noto Sans", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "devanagari", "latin", "greek", "cyrillic-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/notosans/v6/PIbvSEyHEdL91QLOQRnZ1y3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/notosans/v6/0Ue9FiUJwVhi4NGfHJS5uA.ttf", "italic" => "http://fonts.gstatic.com/s/notosans/v6/dLcNKMgJ1H5RVoZFraDz0qCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/notosans/v6/9Z3uUWMRR7crzm1TjRicDne1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Noto Serif", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/notoserif/v4/lJAvZoKA5NttpPc9yc6lPQJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/notoserif/v4/zW6mc7bC1CWw8dH0yxY8JfesZW2xOQ-xsNqO47m55DA.ttf", "italic" => "http://fonts.gstatic.com/s/notoserif/v4/HQXBIwLHsOJCNEQeX9kNzy3USBnSvpkopQaUR-2r7iU.ttf", "700italic" => "http://fonts.gstatic.com/s/notoserif/v4/Wreg0Be4tcFGM2t6VWytvED2ttfZwueP-QU272T9-k4.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Cut", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novacut/v8/6q12jWcBvj0KO2cMRP97tA.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Flat", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaflat/v8/pK7a0CoGzI684qe_XSHBqQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin", "greek"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novamono/v7/6-SChr5ZIaaasJFBkgrLNw.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Oval", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaoval/v8/VuukVpKP8BwUf8o9W5LYQQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Round", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaround/v8/7-cK3Ari_8XYYFgVMxVhDvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Script", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novascript/v8/dEvxQDLgx1M1TKY-NmBWYaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Slim", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaslim/v8/rPYXC81_VL2EW-4CzBX65g.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Square", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novasquare/v8/BcBzXoaDzYX78rquGXVuSqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Numans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/numans/v6/g5snI2p6OEjjTNmTHyBdiQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nunito", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/nunito/v7/zXQvrWBJqUooM7Xv98MrQw.ttf", "700" => "http://fonts.gstatic.com/s/nunito/v7/aEdlqgMuYbpe4U3TnqOQMA.ttf", "regular" => "http://fonts.gstatic.com/s/nunito/v7/ySZTeT3IuzJj0GK6uGpbBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Odor Mean Chey", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/odormeanchey/v8/GK3E7EjPoBkeZhYshGFo0eVKG8sq4NyGgdteJLvqLDs.ttf")), array("kind" => "webfonts#webfont", "family" => "Offside", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/offside/v4/v0C913SB8wqQUvcu1faUqw.ttf")), array("kind" => "webfonts#webfont", "family" => "Old Standard TT", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/oldstandardtt/v7/5Ywdce7XEbTSbxs__4X1_HJqbZqK7TdZ58X80Q_Lw8Y.ttf", "regular" => "http://fonts.gstatic.com/s/oldstandardtt/v7/n6RTCDcIPWSE8UNBa4k-DLcB5jyhm1VsHs65c3QNDr0.ttf", "italic" => "http://fonts.gstatic.com/s/oldstandardtt/v7/QQT_AUSp4AV4dpJfIN7U5PWrQzeMtsHf8QsWQ2cZg3c.ttf")), array("kind" => "webfonts#webfont", "family" => "Oldenburg", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oldenburg/v4/dqA_M_uoCVXZbCO-oKBTnQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Oleo Script", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/oleoscript/v5/hudNQFKFl98JdNnlo363fne1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/oleoscript/v5/21stZcmPyzbQVXtmGegyqKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Oleo Script Swash Caps", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/HMO3ftxA9AU5floml9c755reFYaXZ4zuJXJ8fr8OO1g.ttf", "regular" => "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/vdWhGqsBUAP-FF3NOYTe4iMF4kXAPemmyaDpMXQ31P0.ttf")), array("kind" => "webfonts#webfont", "family" => "Open Sans", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic", "800", "800italic"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v13", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTS3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzC3USBnSvpkopQaUR-2r7iU.ttf", "800" => "http://fonts.gstatic.com/s/opensans/v13/EInbV5DfGHOiMmvb1Xr-hi3USBnSvpkopQaUR-2r7iU.ttf", "300italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxi9-WlPSxbfiI49GsXo3q0g.ttf", "regular" => "http://fonts.gstatic.com/s/opensans/v13/IgZJs4-7SA1XX_edsoXWog.ttf", "italic" => "http://fonts.gstatic.com/s/opensans/v13/O4NhV7_qs9r9seTo7fnsVKCWcynf_cDxXwCLxiixG1c.ttf", "600italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxpZ7xm-Bj30Bj2KNdXDzSZg.ttf", "700italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxne1Pd76Vl7zRpE7NLJQ7XU.ttf", "800italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxg89PwPrYLaRFJ-HNCU9NbA.ttf")), array("kind" => "webfonts#webfont", "family" => "Open Sans Condensed", "category" => "sans-serif", "variants" => array("300", "300italic", "700"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xEMwSSh38KQVJx4ABtsZTnA.ttf", "700" => "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xBEM87DM3yorPOrvA-vB930.ttf", "300italic" => "http://fonts.gstatic.com/s/opensanscondensed/v10/jIXlqT1WKafUSwj6s9AzV4_LkTZ_uhAwfmGJ084hlvM.ttf")), array("kind" => "webfonts#webfont", "family" => "Oranienbaum", "category" => "serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oranienbaum/v5/M98jYwCSn0PaFhXXgviCoaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Orbitron", "category" => "sans-serif", "variants" => array("regular", "500", "700", "900"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/orbitron/v7/p-y_ffzMdo5JN_7ia0vYEqCWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/orbitron/v7/PS9_6SLkY1Y6OgPO3APr6qCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/orbitron/v7/2I3-8i9hT294TE_pyjy9SaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/orbitron/v7/DY8swouAZjR3RaUPRf0HDQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Oregano", "category" => "display", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oregano/v4/UiLhqNixVv2EpjRoBG6axA.ttf", "italic" => "http://fonts.gstatic.com/s/oregano/v4/_iwqGEht6XsAuEaCbYG64Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Orienta", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/orienta/v4/_NKSk93mMs0xsqtfjCsB3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Original Surfer", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/originalsurfer/v5/gdHw6HpSIN4D6Xt7pi1-qIkEz33TDwAZczo_6fY7eg0.ttf")), array("kind" => "webfonts#webfont", "family" => "Oswald", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/oswald/v10/y3tZpCdiRD4oNRRYFcAR5Q.ttf", "700" => "http://fonts.gstatic.com/s/oswald/v10/7wj8ldV_5Ti37rHa0m1DDw.ttf", "regular" => "http://fonts.gstatic.com/s/oswald/v10/uLEd2g2vJglLPfsBF91DCg.ttf")), array("kind" => "webfonts#webfont", "family" => "Over the Rainbow", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/overtherainbow/v7/6gp-gkpI2kie2dHQQLM2jQBdxkZd83xOSx-PAQ2QmiI.ttf")), array("kind" => "webfonts#webfont", "family" => "Overlock", "category" => "display", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/overlock/v5/Fexr8SqXM8Bm_gEVUA7AKaCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/overlock/v5/YPJCVTT8ZbG3899l_-KIGqCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/overlock/v5/Z8oYsGi88-E1cUB8YBFMAg.ttf", "italic" => "http://fonts.gstatic.com/s/overlock/v5/rq6EacukHROOBrFrK_zF6_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/overlock/v5/wFWnYgeXKYBks6gEUwYnfAJKKGfqHaYFsRG-T3ceEVo.ttf", "900italic" => "http://fonts.gstatic.com/s/overlock/v5/iOZhxT2zlg7W5ij_lb-oDp0EAVxt0G0biEntp43Qt6E.ttf")), array("kind" => "webfonts#webfont", "family" => "Overlock SC", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/overlocksc/v5/8D7HYDsvS_g1GhBnlHzgzaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Ovo", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ovo/v7/mFg27dimu3s9t09qjCwB1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Oxygen", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/oxygen/v5/lZ31r0bR1Bzt_DfGZu1S8A.ttf", "700" => "http://fonts.gstatic.com/s/oxygen/v5/yLqkmDwuNtt5pSqsJmhyrg.ttf", "regular" => "http://fonts.gstatic.com/s/oxygen/v5/uhoyAE7XlQL22abzQieHjw.ttf")), array("kind" => "webfonts#webfont", "family" => "Oxygen Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oxygenmono/v4/DigTu7k4b7OmM8ubt1Qza6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ptmono/v4/QUbM8H9yJK5NhpQ0REO6Wg.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Sans", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptsans/v8/F51BEgHuR0tYHxF0bD4vwvesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/ptsans/v8/UFoEz2uiuMypUGZL1NKoeg.ttf", "italic" => "http://fonts.gstatic.com/s/ptsans/v8/yls9EYWOd496wiu7qzfgNg.ttf", "700italic" => "http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Sans Caption", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptsanscaption/v9/Q-gJrFokeE7JydPpxASt25tc0eyfI4QDEsobEEpk_hA.ttf", "regular" => "http://fonts.gstatic.com/s/ptsanscaption/v9/OXYTDOzBcXU8MTNBvBHeSW8by34Z3mUMtM-o4y-SHCY.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Sans Narrow", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptsansnarrow/v7/Q_pTky3Sc3ubRibGToTAYsLtdzs3iyjn_YuT226ZsLU.ttf", "regular" => "http://fonts.gstatic.com/s/ptsansnarrow/v7/UyYrYy3ltEffJV9QueSi4ZTvAuddT2xDMbdz0mdLyZY.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Serif", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptserif/v8/kyZw18tqQ5if-_wpmxxOeKCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/ptserif/v8/sAo427rn3-QL9sWCbMZXhA.ttf", "italic" => "http://fonts.gstatic.com/s/ptserif/v8/9khWhKzhpkH0OkNnBKS3n_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9QJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Serif Caption", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("cyrillic", "latin-ext", "latin", "cyrillic-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ptserifcaption/v8/7xkFOeTxxO1GMC1suOUYWVsRioCqs5fohhaYel24W3k.ttf", "italic" => "http://fonts.gstatic.com/s/ptserifcaption/v8/0kfPsmrmTSgiec7u_Wa0DB1mqvzPHelJwRcF_s_EUM0.ttf")), array("kind" => "webfonts#webfont", "family" => "Pacifico", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pacifico/v7/GIrpeRY1r5CzbfL8r182lw.ttf")), array("kind" => "webfonts#webfont", "family" => "Palanquin", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/palanquin/v1/Hu0eGDVGK_g4saUFu6AK3KCWcynf_cDxXwCLxiixG1c.ttf", "200" => "http://fonts.gstatic.com/s/palanquin/v1/pqXYXD7-VI5ezTjeqQOcyC3USBnSvpkopQaUR-2r7iU.ttf", "300" => "http://fonts.gstatic.com/s/palanquin/v1/c0-J5OCAagpFCKkKraz-Ey3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/palanquin/v1/wLvvkEcZMKy95afLWh2EfC3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/palanquin/v1/405UIAv95_yZkCECrH6y-i3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/palanquin/v1/-UtkePo3NFvxEN3rGCtTvi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/palanquin/v1/xCwBUoAEV0kzCDwerAZ0Aw.ttf")), array("kind" => "webfonts#webfont", "family" => "Palanquin Dark", "category" => "sans-serif", "variants" => array("regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-maMZTo-EwKMRQt3RWHocLi0.ttf", "600" => "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-mVNxaunw8i4Gywrk2SigRnk.ttf", "700" => "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-mWToair6W0TEE44XrlfKbiM.ttf", "regular" => "http://fonts.gstatic.com/s/palanquindark/v1/PamTqrrgbBh_M3702w39rOfChn3JSg5yz_Q_xmrKQN0.ttf")), array("kind" => "webfonts#webfont", "family" => "Paprika", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/paprika/v4/b-VpyoRSieBdB5BPJVF8HQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Parisienne", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/parisienne/v4/TW74B5QISJNx9moxGlmJfvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Passero One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/passeroone/v8/Yc-7nH5deCCv9Ed0MMnAQqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Passion One", "category" => "display", "variants" => array("regular", "700", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ne1Pd76Vl7zRpE7NLJQ7XU.ttf", "900" => "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ienaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/passionone/v6/1UIK1tg3bKJ4J3o35M4heqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Pathway Gothic One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pathwaygothicone/v4/Lqv9ztoTUV8Q0FmQZzPqaA6A6xIYD7vYcYDop1i-K-c.ttf")), array("kind" => "webfonts#webfont", "family" => "Patrick Hand", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/patrickhand/v10/9BG3JJgt_HlF3NpEUehL0C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Patrick Hand SC", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/patrickhandsc/v4/OYFWCgfCR-7uHIovjUZXsbAgSRh1LpJXlLfl8IbsmHg.ttf")), array("kind" => "webfonts#webfont", "family" => "Patua One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/patuaone/v6/njZwotTYjswR4qdhsW-kJw.ttf")), array("kind" => "webfonts#webfont", "family" => "Paytone One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/paytoneone/v8/3WCxC7JAJjQHQVoIE0ZwvqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Peddana", "category" => "serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/peddana/v4/zaSZuj_GhmC8AOTugOROnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Peralta", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/peralta/v4/cTJX5KEuc0GKRU9NXSm-8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Permanent Marker", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/permanentmarker/v5/9vYsg5VgPHKK8SXYbf3sMol14xj5tdg9OHF8w4E7StQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Petit Formal Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/petitformalscript/v4/OEZwr2-ovBsq2n3ACCKoEvVPl2Gjtxj0D6F7QLy1VQc.ttf")), array("kind" => "webfonts#webfont", "family" => "Petrona", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/petrona/v5/nnQwxlP6dhrGovYEFtemTg.ttf")), array("kind" => "webfonts#webfont", "family" => "Philosopher", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/philosopher/v7/napvkewXG9Gqby5vwGHICHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/philosopher/v7/oZLTrB9jmJsyV0u_T0TKEaCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/philosopher/v7/_9Hnc_gz9k7Qq6uKaeHKmUeOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/philosopher/v7/PuKlryTcvTj7-qZWfLCFIM_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Piedra", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/piedra/v5/owf-AvEEyAj9LJ2tVZ_3Mw.ttf")), array("kind" => "webfonts#webfont", "family" => "Pinyon Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pinyonscript/v6/TzghnhfCn7TuE73f-CBQ0CeUSrabuTpOsMEiRLtKwk0.ttf")), array("kind" => "webfonts#webfont", "family" => "Pirata One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pirataone/v4/WnbD86B4vB2ckYcL7oxuhvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Plaster", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/plaster/v7/O4QG9Z5116CXyfJdR9zxLw.ttf")), array("kind" => "webfonts#webfont", "family" => "Play", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/play/v7/crPhg6I0alLI-MpB3vW-zw.ttf", "regular" => "http://fonts.gstatic.com/s/play/v7/GWvfObW8LhtsOX333MCpBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Playball", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/playball/v6/3hOFiQm_EUzycTpcN9uz4w.ttf")), array("kind" => "webfonts#webfont", "family" => "Playfair Display", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgICsv6SrURqJprbhH_C1Mw8w.ttf", "900" => "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgIKqwMe2wjvZrAR44M0BJZ48.ttf", "regular" => "http://fonts.gstatic.com/s/playfairdisplay/v10/2NBgzUtEeyB-Xtpr9bm1CV6uyC_qD11hrFQ6EGgTJWI.ttf", "italic" => "http://fonts.gstatic.com/s/playfairdisplay/v10/9MkijrV-dEJ0-_NWV7E6NzMsbnvDNEBX25F5HWk9AhI.ttf", "700italic" => "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDECsYW3XoOVcYyYdp9NzzS9E.ttf", "900italic" => "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDEC0JfJ4xmm7j1kL6D7mPxrA.ttf")), array("kind" => "webfonts#webfont", "family" => "Playfair Display SC", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/5ggqGkvWJU_TtW2W8cEubA-Amcyomnuy4WsCiPxGHjw.ttf", "900" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/5ggqGkvWJU_TtW2W8cEubKXL3C32k275YmX_AcBPZ7w.ttf", "regular" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/G0-tvBxd4eQRdwFKB8dRkcpjYTDWIvcAwAccqeW9uNM.ttf", "italic" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/myuYiFR-4NTrUT4w6TKls2klJsJYggW8rlNoTOTuau0.ttf", "700italic" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/6X0OQrQhEEnPo56RalREX4krgPi80XvBcbTwmz-rgmU.ttf", "900italic" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/6X0OQrQhEEnPo56RalREX8Zag2q3ssKz8uH1RU4a9gs.ttf")), array("kind" => "webfonts#webfont", "family" => "Podkova", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/podkova/v8/SqW4aa8m_KVrOgYSydQ33vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/podkova/v8/eylljyGVfB8ZUQjYY3WZRQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Poiret One", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/poiretone/v4/dWcYed048E5gHGDIt8i1CPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Poller One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pollerone/v6/dkctmDlTPcZ6boC8662RA_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Poly", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/poly/v7/bcMAuiacS2qkd54BcwW6_Q.ttf", "italic" => "http://fonts.gstatic.com/s/poly/v7/Zkx-eIlZSjKUrPGYhV5PeA.ttf")), array("kind" => "webfonts#webfont", "family" => "Pompiere", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pompiere/v6/o_va2p9CD5JfmFohAkGZIA.ttf")), array("kind" => "webfonts#webfont", "family" => "Pontano Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pontanosans/v4/gTHiwyxi6S7iiHpqAoiE3C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Poppins", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/poppins/v1/VIeViZ2fPtYBt3B2fQZplvesZW2xOQ-xsNqO47m55DA.ttf", "500" => "http://fonts.gstatic.com/s/poppins/v1/4WGKlFyjcmCFVl8pRsgZ9vesZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/poppins/v1/-zOABrCWORC3lyDh-ajNnPesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/poppins/v1/8JitanEsk5aDh7mDYs-fYfesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/poppins/v1/hlvAxH6aIdOjWlLzgm0jqg.ttf")), array("kind" => "webfonts#webfont", "family" => "Port Lligat Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/portlligatsans/v5/CUEdhRk7oC7up0p6t0g4P6mASEpx5X0ZpsuJOuvfOGA.ttf")), array("kind" => "webfonts#webfont", "family" => "Port Lligat Slab", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/portlligatslab/v5/CUEdhRk7oC7up0p6t0g4PxLSPACXvawUYCBEnHsOe30.ttf")), array("kind" => "webfonts#webfont", "family" => "Pragati Narrow", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2015-06-10", "files" => array("700" => "http://fonts.gstatic.com/s/pragatinarrow/v2/DnSI1zRkc0CY-hI5SC3q3MLtdzs3iyjn_YuT226ZsLU.ttf", "regular" => "http://fonts.gstatic.com/s/pragatinarrow/v2/HzG2TfC862qPNsZsV_djPpTvAuddT2xDMbdz0mdLyZY.ttf")), array("kind" => "webfonts#webfont", "family" => "Prata", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/prata/v6/3gmx8r842loRRm9iQkCDGg.ttf")), array("kind" => "webfonts#webfont", "family" => "Preahvihear", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/preahvihear/v8/82tDI-xTc53CxxOzEG4hDaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Press Start 2P", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin", "greek"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pressstart2p/v4/8Lg6LX8-ntOHUQnvQ0E7o1jfl3W46Sz5gOkEVhcFWF4.ttf")), array("kind" => "webfonts#webfont", "family" => "Princess Sofia", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/princesssofia/v4/8g5l8r9BM0t1QsXLTajDe-wjmA7ie-lFcByzHGRhCIg.ttf")), array("kind" => "webfonts#webfont", "family" => "Prociono", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/prociono/v6/43ZYDHWogdFeNBWTl6ksmw.ttf")), array("kind" => "webfonts#webfont", "family" => "Prosto One", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/prostoone/v5/bsqnAElAqk9kX7eABTRFJPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Puritan", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/puritan/v8/pJS2SdwI0SCiVnO0iQSFT_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/puritan/v8/wv_RtgVBSCn-or2MC0n4Kg.ttf", "italic" => "http://fonts.gstatic.com/s/puritan/v8/BqZX8Tp200LeMv1KlzXgLQ.ttf", "700italic" => "http://fonts.gstatic.com/s/puritan/v8/rFG3XkMJL75nUNZwCEIJqC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Purple Purse", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/purplepurse/v5/Q5heFUrdmei9axbMITxxxS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Quando", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-03-22", "files" => array("regular" => "http://fonts.gstatic.com/s/quando/v5/03nDiEZuO2-h3xvtG6UmHg.ttf")), array("kind" => "webfonts#webfont", "family" => "Quantico", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/quantico/v5/OVZZzjcZ3Hkq2ojVcUtDjaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/quantico/v5/pwSnP8Xpaix2rIz99HrSlQ.ttf", "italic" => "http://fonts.gstatic.com/s/quantico/v5/KQhDd2OsZi6HiITUeFQ2U_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/quantico/v5/HeCYRcZbdRso3ZUu01ELbQJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Quattrocento", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/quattrocento/v7/Uvi-cRwyvqFpl9j3oT2mqkD2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/quattrocento/v7/WZDISdyil4HsmirlOdBRFC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Quattrocento Sans", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/quattrocentosans/v8/tXSgPxDl7Lk8Zr_5qX8FIbqxG25nQNOioCZSK4sU-CA.ttf", "regular" => "http://fonts.gstatic.com/s/quattrocentosans/v8/efd6FGWWGX5Z3ztwLBrG9eAj_ty82iuwwDTNEYXGiyQ.ttf", "italic" => "http://fonts.gstatic.com/s/quattrocentosans/v8/8PXYbvM__bjl0rBnKiByg532VBCoA_HLsn85tSWZmdo.ttf", "700italic" => "http://fonts.gstatic.com/s/quattrocentosans/v8/8N1PdXpbG6RtFvTjl-5E7buqAJxizi8Dk_SK5et7kMg.ttf")), array("kind" => "webfonts#webfont", "family" => "Questrial", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/questrial/v6/MoHHaw_WwNs_hd9ob1zTVw.ttf")), array("kind" => "webfonts#webfont", "family" => "Quicksand", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/quicksand/v5/qhfoJiLu10kFjChCCTvGlC3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/quicksand/v5/32nyIRHyCu6iqEka_hbKsi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/quicksand/v5/Ngv3fIJjKB7sD-bTUGIFCA.ttf")), array("kind" => "webfonts#webfont", "family" => "Quintessential", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/quintessential/v4/mmk6ioesnTrEky_Zb92E5s02lXbtMOtZWfuxKeMZO8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Qwigley", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/qwigley/v6/aDqxws-KubFID85TZHFouw.ttf")), array("kind" => "webfonts#webfont", "family" => "Racing Sans One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/racingsansone/v4/1r3DpWaCiT7y3PD4KgkNyDjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Radley", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/radley/v9/FgE9di09a-mXGzAIyI6Q9Q.ttf", "italic" => "http://fonts.gstatic.com/s/radley/v9/Z_JcACuPAOO2f9kzQcGRug.ttf")), array("kind" => "webfonts#webfont", "family" => "Rajdhani", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/rajdhani/v5/9pItuEhQZVGdq8spnHTku6CWcynf_cDxXwCLxiixG1c.ttf", "500" => "http://fonts.gstatic.com/s/rajdhani/v5/nd_5ZpVwm710HcLual0fBqCWcynf_cDxXwCLxiixG1c.ttf", "600" => "http://fonts.gstatic.com/s/rajdhani/v5/5fnmZahByDeTtgxIiqbJSaCWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/rajdhani/v5/UBK6d2Hg7X7wYLlF92aXW6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/rajdhani/v5/Wfy5zp4PGFAFS7-Wetehzw.ttf")), array("kind" => "webfonts#webfont", "family" => "Raleway", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/raleway/v10/UDfD6oxBaBnmFJwQ7XAFNw.ttf", "200" => "http://fonts.gstatic.com/s/raleway/v10/LAQwev4hdCtYkOYX4Oc7nPesZW2xOQ-xsNqO47m55DA.ttf", "300" => "http://fonts.gstatic.com/s/raleway/v10/2VvSZU2kb4DZwFfRM4fLQPesZW2xOQ-xsNqO47m55DA.ttf", "500" => "http://fonts.gstatic.com/s/raleway/v10/348gn6PEmbLDWlHbbV15d_esZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/raleway/v10/M7no6oPkwKYJkedjB1wqEvesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/raleway/v10/VGEV9-DrblisWOWLbK-1XPesZW2xOQ-xsNqO47m55DA.ttf", "800" => "http://fonts.gstatic.com/s/raleway/v10/mMh0JrsYMXcLO69jgJwpUvesZW2xOQ-xsNqO47m55DA.ttf", "900" => "http://fonts.gstatic.com/s/raleway/v10/ajQQGcDBLcyLpaUfD76UuPesZW2xOQ-xsNqO47m55DA.ttf", "100italic" => "http://fonts.gstatic.com/s/raleway/v10/hUpHtml6IPNuUR-FwVi2UKCWcynf_cDxXwCLxiixG1c.ttf", "200italic" => "http://fonts.gstatic.com/s/raleway/v10/N2DIbZG4399cPGfifZUEQi3USBnSvpkopQaUR-2r7iU.ttf", "300italic" => "http://fonts.gstatic.com/s/raleway/v10/TVSB8ogXDKMcnAAJ5CqrUi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/raleway/v10/_dCzxpXzIS3sL-gdJWAP8A.ttf", "italic" => "http://fonts.gstatic.com/s/raleway/v10/utU2m1gdZSfuQpArSy5Dbw.ttf", "500italic" => "http://fonts.gstatic.com/s/raleway/v10/S7vGLZZ40c85SJgiptJGVy3USBnSvpkopQaUR-2r7iU.ttf", "600italic" => "http://fonts.gstatic.com/s/raleway/v10/OY22yoG8EJ3IN_muVWm29C3USBnSvpkopQaUR-2r7iU.ttf", "700italic" => "http://fonts.gstatic.com/s/raleway/v10/lFxvRPuGFG5ktd7P0WRwKi3USBnSvpkopQaUR-2r7iU.ttf", "800italic" => "http://fonts.gstatic.com/s/raleway/v10/us4LjTCmlYgh3W8CKujEJi3USBnSvpkopQaUR-2r7iU.ttf", "900italic" => "http://fonts.gstatic.com/s/raleway/v10/oY2RadnkHfshu5f0FLsgVS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Raleway Dots", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ralewaydots/v4/lhLgmWCRcyz-QXo8LCzTfC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ramabhadra", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ramabhadra/v5/JyhxLXRVQChLDGADS_c5MPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ramaraja", "category" => "serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ramaraja/v1/XIqzxFapVczstBedHdQTiw.ttf")), array("kind" => "webfonts#webfont", "family" => "Rambla", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/rambla/v4/C5VZH8BxQKmnBuoC00UPpw.ttf", "regular" => "http://fonts.gstatic.com/s/rambla/v4/YaTmpvm5gFg_ShJKTQmdzg.ttf", "italic" => "http://fonts.gstatic.com/s/rambla/v4/mhUgsKmp0qw3uATdDDAuwA.ttf", "700italic" => "http://fonts.gstatic.com/s/rambla/v4/ziMzUZya6QahrKONSI1TzqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Rammetto One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rammettoone/v5/mh0uQ1tV8QgSx9v_KyEYPC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ranchers", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ranchers/v4/9ya8CZYhqT66VERfjQ7eLA.ttf")), array("kind" => "webfonts#webfont", "family" => "Rancho", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rancho/v6/ekp3-4QykC4--6KaslRgHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ranga", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ranga/v1/h8G_gEUH7vHKH-NkjAs34A.ttf", "regular" => "http://fonts.gstatic.com/s/ranga/v1/xpW6zFTNzY1JykoBIqE1Zg.ttf")), array("kind" => "webfonts#webfont", "family" => "Rationale", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rationale/v7/7M2eN-di0NGLQse7HzJRfg.ttf")), array("kind" => "webfonts#webfont", "family" => "Ravi Prakash", "category" => "display", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/raviprakash/v3/8EzbM7Rymjk25jWeHxbO6C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Redressed", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/redressed/v6/3aZ5sTBppH3oSm5SabegtA.ttf")), array("kind" => "webfonts#webfont", "family" => "Reenie Beanie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/reeniebeanie/v7/ljpKc6CdXusL1cnGUSamX4jjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Revalia", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/revalia/v4/1TKw66fF5_poiL0Ktgo4_A.ttf")), array("kind" => "webfonts#webfont", "family" => "Rhodium Libre", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-03", "files" => array("regular" => "http://fonts.gstatic.com/s/rhodiumlibre/v1/Vxr7A4-xE2zsBDDI8BcseIjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Ribeye", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ribeye/v5/e5w3VE8HnWBln4Ll6lUj3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Ribeye Marrow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ribeyemarrow/v6/q7cBSA-4ErAXBCDFPrhlY0cTNmV93fYG7UKgsLQNQWs.ttf")), array("kind" => "webfonts#webfont", "family" => "Righteous", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/righteous/v5/0nRRWM_gCGCt2S-BCfN8WQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Risque", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/risque/v4/92RnElGnl8yHP97-KV3Fyg.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "900", "900italic"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v15", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/roboto/v15/7MygqTe2zs9YkP0adA9QQQ.ttf", "300" => "http://fonts.gstatic.com/s/roboto/v15/dtpHsbgPEm2lVWciJZ0P-A.ttf", "500" => "http://fonts.gstatic.com/s/roboto/v15/Uxzkqj-MIMWle-XP2pDNAA.ttf", "700" => "http://fonts.gstatic.com/s/roboto/v15/bdHGHleUa-ndQCOrdpfxfw.ttf", "900" => "http://fonts.gstatic.com/s/roboto/v15/H1vB34nOKWXqzKotq25pcg.ttf", "100italic" => "http://fonts.gstatic.com/s/roboto/v15/T1xnudodhcgwXCmZQ490TPesZW2xOQ-xsNqO47m55DA.ttf", "300italic" => "http://fonts.gstatic.com/s/roboto/v15/iE8HhaRzdhPxC93dOdA056CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/roboto/v15/W5F8_SL0XFawnjxHGsZjJA.ttf", "italic" => "http://fonts.gstatic.com/s/roboto/v15/hcKoSgxdnKlbH5dlTwKbow.ttf", "500italic" => "http://fonts.gstatic.com/s/roboto/v15/daIfzbEw-lbjMyv4rMUUTqCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/roboto/v15/owYYXKukxFDFjr0ZO8NXh6CWcynf_cDxXwCLxiixG1c.ttf", "900italic" => "http://fonts.gstatic.com/s/roboto/v15/b9PWBSMHrT2zM5FgUdtu0aCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto Condensed", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v13", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/robotocondensed/v13/b9QBgL0iMZfDSpmcXcE8nJRhFVcex_hajThhFkHyhYk.ttf", "700" => "http://fonts.gstatic.com/s/robotocondensed/v13/b9QBgL0iMZfDSpmcXcE8nPOYkGiSOYDq_T7HbIOV1hA.ttf", "300italic" => "http://fonts.gstatic.com/s/robotocondensed/v13/mg0cGfGRUERshzBlvqxeAPYa9bgCHecWXGgisnodcS0.ttf", "regular" => "http://fonts.gstatic.com/s/robotocondensed/v13/Zd2E9abXLFGSr9G3YK2MsKDbm6fPDOZJsR8PmdG62gY.ttf", "italic" => "http://fonts.gstatic.com/s/robotocondensed/v13/BP5K8ZAJv9qEbmuFp8RpJY_eiqgTfYGaH0bJiUDZ5GA.ttf", "700italic" => "http://fonts.gstatic.com/s/robotocondensed/v13/mg0cGfGRUERshzBlvqxeAE2zk2RGRC3SlyyLLQfjS_8.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto Mono", "category" => "monospace", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v4", "lastModified" => "2015-05-28", "files" => array("100" => "http://fonts.gstatic.com/s/robotomono/v4/aOIeRp72J9_Hp_8KwQ9M-YAWxXGWZ3yJw6KhWS7MxOk.ttf", "300" => "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fzy9-WlPSxbfiI49GsXo3q0g.ttf", "500" => "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fz8CNfqCYlB_eIx7H1TVXe60.ttf", "700" => "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fz3e1Pd76Vl7zRpE7NLJQ7XU.ttf", "100italic" => "http://fonts.gstatic.com/s/robotomono/v4/rqQ1zSE-ZGCKVZgew-A9dgyDtfpXZi-8rXUZYR4dumU.ttf", "300italic" => "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA2o9eWDfYYxG3A176Zl7aIg.ttf", "regular" => "http://fonts.gstatic.com/s/robotomono/v4/eJ4cxQe85Lo39t-LVoKa26CWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/robotomono/v4/mE0EPT_93c7f86_WQexR3EeOrDcLawS7-ssYqLr2Xp4.ttf", "500italic" => "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA2nWRcJAYo5PSCx8UfGMHCI.ttf", "700italic" => "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA8_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto Slab", "category" => "serif", "variants" => array("100", "300", "regular", "700"), "subsets" => array("vietnamese", "cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/robotoslab/v6/MEz38VLIFL-t46JUtkIEgIAWxXGWZ3yJw6KhWS7MxOk.ttf", "300" => "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJS9-WlPSxbfiI49GsXo3q0g.ttf", "700" => "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/robotoslab/v6/3__ulTNA7unv0UtplybPiqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Rochester", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rochester/v6/bnj8tmQBiOkdji_G_yvypg.ttf")), array("kind" => "webfonts#webfont", "family" => "Rock Salt", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rocksalt/v6/Zy7JF9h9WbhD9V3SFMQ1UQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Rokkitt", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v10", "lastModified" => "2016-02-24", "files" => array("700" => "http://fonts.gstatic.com/s/rokkitt/v10/gxlo-sr3rPmvgSixYog_ofesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/rokkitt/v10/GMA7Z_ToF8uSvpZAgnp_VQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Romanesco", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/romanesco/v5/2udIjUrpK_CPzYSxRVzD4Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Ropa Sans", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ropasans/v5/Gba7ZzVBuhg6nX_AoSwlkQ.ttf", "italic" => "http://fonts.gstatic.com/s/ropasans/v5/V1zbhZQscNrh63dy5Jk2nqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Rosario", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/rosario/v11/nrS6PJvDWN42RP4TFWccd_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/rosario/v11/bL-cEh8dXtDupB2WccA2LA.ttf", "italic" => "http://fonts.gstatic.com/s/rosario/v11/pkflNy18HEuVVx4EOjeb_Q.ttf", "700italic" => "http://fonts.gstatic.com/s/rosario/v11/EOgFX2Va5VGrkhn_eDpIRS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Rosarivo", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rosarivo/v4/EmPiINK0qyqc7KSsNjJamA.ttf", "italic" => "http://fonts.gstatic.com/s/rosarivo/v4/u3VuWsWQlX1pDqsbz4paNPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Rouge Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rougescript/v5/AgXDSqZJmy12qS0ixjs6Vy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Rozha One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v2", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rozhaone/v2/PyrMHQ6lucEIxwKmhqsX8A.ttf")), array("kind" => "webfonts#webfont", "family" => "Rubik", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "900", "900italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v1", "lastModified" => "2015-07-22", "files" => array("300" => "http://fonts.gstatic.com/s/rubik/v1/o1vXYO8YwDpErHEAPAxpOg.ttf", "500" => "http://fonts.gstatic.com/s/rubik/v1/D4HihERG27s-BJrQ4dvkbw.ttf", "700" => "http://fonts.gstatic.com/s/rubik/v1/m1GGHcpLe6Mb0_sAyjXE4g.ttf", "900" => "http://fonts.gstatic.com/s/rubik/v1/mOHfPRl5uP4vw7-5-dbnng.ttf", "300italic" => "http://fonts.gstatic.com/s/rubik/v1/NyXDvUhvZLSWiVfGa5KM-vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/rubik/v1/4sMyW_teKWHB3K8Hm-Il6A.ttf", "italic" => "http://fonts.gstatic.com/s/rubik/v1/elD65ddI0qvNcCh42b1Iqg.ttf", "500italic" => "http://fonts.gstatic.com/s/rubik/v1/0hcxMdoMbXtHiEM1ebdN6PesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/rubik/v1/R4g_rs714cUXVZcdnRdHw_esZW2xOQ-xsNqO47m55DA.ttf", "900italic" => "http://fonts.gstatic.com/s/rubik/v1/HH1b7kBbwInqlw8OQxRE5vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Rubik Mono One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rubikmonoone/v5/e_cupPtD4BrZzotubJD7UbAREgn5xbW23GEXXnhMQ5Y.ttf")), array("kind" => "webfonts#webfont", "family" => "Rubik One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rubikone/v4/Zs6TtctNRSIR8T5PO018rQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruda", "category" => "sans-serif", "variants" => array("regular", "700", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ruda/v7/JABOu1SYOHcGXVejUq4w6g.ttf", "900" => "http://fonts.gstatic.com/s/ruda/v7/Uzusv-enCjoIrznlJJaBRw.ttf", "regular" => "http://fonts.gstatic.com/s/ruda/v7/jPEIPB7DM2DNK_uBGv2HGw.ttf")), array("kind" => "webfonts#webfont", "family" => "Rufina", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/rufina/v4/D0RUjXFr55y4MVZY2Ww_RA.ttf", "regular" => "http://fonts.gstatic.com/s/rufina/v4/s9IFr_fIemiohfZS-ZRDbQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruge Boogie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rugeboogie/v7/U-TTmltL8aENLVIqYbI5QaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruluko", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ruluko/v4/lv4cMwJtrx_dzmlK5SDc1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Rum Raisin", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rumraisin/v4/kDiL-ntDOEq26B7kYM7cx_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruslan Display", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ruslandisplay/v7/SREdhlyLNUfU1VssRBfs3rgH88D3l9N4auRNHrNS708.ttf")), array("kind" => "webfonts#webfont", "family" => "Russo One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/russoone/v5/zfwxZ--UhUc7FVfgT21PRQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruthie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ruthie/v6/vJ2LorukHSbWYoEs5juivg.ttf")), array("kind" => "webfonts#webfont", "family" => "Rye", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rye/v4/VUrJlpPpSZxspl3w_yNOrQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sacramento", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sacramento/v4/_kv-qycSHMNdhjiv0Kj7BvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sahitya", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/sahitya/v1/Zm5hNvMwUyN3tC4GMkH1l_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/sahitya/v1/wQWULcDbZqljdTfjOUtDvw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sail", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/sail/v7/iuEoG6kt-bePGvtdpL0GUQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Salsa", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/salsa/v6/BnpUCBmYdvggScEPs5JbpA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sanchez", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sanchez/v4/BEL8ao-E2LJ5eHPLB2UAiw.ttf", "italic" => "http://fonts.gstatic.com/s/sanchez/v4/iSrhkWLexUZzDeNxNEHtzA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sancreek", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sancreek/v7/8ZacBMraWMvHly4IJI3esw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sansita One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sansitaone/v6/xWqf68oB50JXqGIRR0h2hqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Sarala", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/sarala/v1/hpc9cz8KYsazwq2In_oJYw.ttf", "regular" => "http://fonts.gstatic.com/s/sarala/v1/ohip9lixCHoBab7hTtgLnw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sarina", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sarina/v5/XYtRfaSknHIU3NHdfTdXoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sarpanch", "category" => "sans-serif", "variants" => array("regular", "500", "600", "700", "800", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/sarpanch/v1/Ov7BxSrFSZYrfuJxL1LzQaCWcynf_cDxXwCLxiixG1c.ttf", "600" => "http://fonts.gstatic.com/s/sarpanch/v1/WTnP2wnc0qSbUaaDG-2OQ6CWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/sarpanch/v1/57kYsSpovYmFaEt2hsZhv6CWcynf_cDxXwCLxiixG1c.ttf", "800" => "http://fonts.gstatic.com/s/sarpanch/v1/OKyqPLjdnuVghR-1TV6RzaCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/sarpanch/v1/JhYc2cr6kqWTo_P0vfvJR6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/sarpanch/v1/YMBZdT27b6O5a1DADbAGSg.ttf")), array("kind" => "webfonts#webfont", "family" => "Satisfy", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/satisfy/v6/PRlyepkd-JCGHiN8e9WV2w.ttf")), array("kind" => "webfonts#webfont", "family" => "Scada", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/scada/v4/t6XNWdMdVWUz93EuRVmifQ.ttf", "regular" => "http://fonts.gstatic.com/s/scada/v4/iZNC3ZEYwe3je6H-28d5Ug.ttf", "italic" => "http://fonts.gstatic.com/s/scada/v4/PCGyLT1qNawkOUQ3uHFhBw.ttf", "700italic" => "http://fonts.gstatic.com/s/scada/v4/kLrBIf7V4mDMwcd_Yw7-D_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Scheherazade", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "arabic"), "version" => "v11", "lastModified" => "2015-08-26", "files" => array("700" => "http://fonts.gstatic.com/s/scheherazade/v11/C1wtT46acJkQxc6mPHwvHED2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/scheherazade/v11/AuKlqGWzUC-8XqMOmsqXiy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Schoolbell", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/schoolbell/v6/95-3djEuubb3cJx-6E7j4vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Seaweed Script", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/seaweedscript/v4/eorWAPpOvvWrPw5IHwE60BnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Sevillana", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sevillana/v4/6m1Nh35oP7YEt00U80Smiw.ttf")), array("kind" => "webfonts#webfont", "family" => "Seymour One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/seymourone/v4/HrdG2AEG_870Xb7xBVv6C6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Shadows Into Light", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shadowsintolight/v6/clhLqOv7MXn459PTh0gXYAW_5bEze-iLRNvGrRpJsfM.ttf")), array("kind" => "webfonts#webfont", "family" => "Shadows Into Light Two", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shadowsintolighttwo/v4/gDxHeefcXIo-lOuZFCn2xVQrZk-Pga5KeEE_oZjkQjQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Shanti", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shanti/v8/lc4nG_JG6Q-2FQSOMMhb_w.ttf")), array("kind" => "webfonts#webfont", "family" => "Share", "category" => "display", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/share/v5/XrU8e7a1YKurguyY2azk1Q.ttf", "regular" => "http://fonts.gstatic.com/s/share/v5/1ytD7zSb_-g9I2GG67vmVw.ttf", "italic" => "http://fonts.gstatic.com/s/share/v5/a9YGdQWFRlNJ0zClJVaY3Q.ttf", "700italic" => "http://fonts.gstatic.com/s/share/v5/A992-bLVYwAflKu6iaznufesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Share Tech", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sharetech/v4/Dq3DuZ5_0SW3oEfAWFpen_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Share Tech Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sharetechmono/v5/RQxK-3RA0Lnf3gnnnNrAscwD6PD0c3_abh9zHKQtbGU.ttf")), array("kind" => "webfonts#webfont", "family" => "Shojumaru", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shojumaru/v4/WP8cxonzQQVAoI3RJQ2wug.ttf")), array("kind" => "webfonts#webfont", "family" => "Short Stack", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shortstack/v6/v4dXPI0Rm8XN9gk4SDdqlqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Siemreap", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/siemreap/v9/JSK-mOIsXwxo-zE9XDDl_g.ttf")), array("kind" => "webfonts#webfont", "family" => "Sigmar One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sigmarone/v6/oh_5NxD5JBZksdo2EntKefesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Signika", "category" => "sans-serif", "variants" => array("300", "regular", "600", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/signika/v6/0wDPonOzsYeEo-1KO78w4fesZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/signika/v6/lQMOF6NUN2ooR7WvB7tADvesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/signika/v6/lEcnfPBICWJPv5BbVNnFJPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/signika/v6/WvDswbww0oAtvBg2l1L-9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Signika Negative", "category" => "sans-serif", "variants" => array("300", "regular", "600", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FjYFXpUPtCmIEFDvjUnLLaI.ttf", "600" => "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FrKLaDJM01OezSVA2R_O3qI.ttf", "700" => "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FpYzPxtVvobH1w3hEppR8WI.ttf", "regular" => "http://fonts.gstatic.com/s/signikanegative/v5/Z-Q1hzbY8uAo3TpTyPFMXVM1lnCWMnren5_v6047e5A.ttf")), array("kind" => "webfonts#webfont", "family" => "Simonetta", "category" => "display", "variants" => array("regular", "italic", "900", "900italic"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/simonetta/v5/22EwvvJ2r1VwVCxit5LcVi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/simonetta/v5/fN8puNuahBo4EYMQgp12Yg.ttf", "italic" => "http://fonts.gstatic.com/s/simonetta/v5/ynxQ3FqfF_Nziwy3T9ZwL6CWcynf_cDxXwCLxiixG1c.ttf", "900italic" => "http://fonts.gstatic.com/s/simonetta/v5/WUXOpCgBZaRPrWtMCpeKoienaqEuufTBk9XMKnKmgDA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sintony", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/sintony/v4/zVXQB1wqJn6PE4dWXoYpvPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/sintony/v4/IDhCijoIMev2L6Lg5QsduQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sirin Stencil", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sirinstencil/v5/pRpLdo0SawzO7MoBpvowsImg74kgS1F7KeR8rWhYwkU.ttf")), array("kind" => "webfonts#webfont", "family" => "Six Caps", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sixcaps/v7/_XeDnO0HOV8Er9u97If1tQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Skranji", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/skranji/v4/Lcrhg-fviVkxiEgoadsI1vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/skranji/v4/jnOLPS0iZmDL7dfWnW3nIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Slabo 13px", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/slabo13px/v3/jPGWFTjRXfCSzy0qd1nqdvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Slabo 27px", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/slabo27px/v3/gC0o8B9eU21EafNkXlRAfPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Slackey", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/slackey/v6/evRIMNhGVCRJvCPv4kteeA.ttf")), array("kind" => "webfonts#webfont", "family" => "Smokum", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/smokum/v6/8YP4BuAcy97X8WfdKfxVRw.ttf")), array("kind" => "webfonts#webfont", "family" => "Smythe", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/smythe/v7/yACD1gy_MpbB9Ft42fUvYw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sniglet", "category" => "display", "variants" => array("regular", "800"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("800" => "http://fonts.gstatic.com/s/sniglet/v7/NLF91nBmcEfkBgcEWbHFa_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/sniglet/v7/XWhyQLHH4SpCVsHRPRgu9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Snippet", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/snippet/v6/eUcYMLq2GtHZovLlQH_9kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Snowburst One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/snowburstone/v4/zSQzKOPukXRux2oTqfYJjIjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Sofadi One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sofadione/v4/nirf4G12IcJ6KI8Eoj119fesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sofia", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sofia/v5/Imnvx0Ag9r6iDBFUY5_RaQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sonsie One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sonsieone/v5/KSP7xT1OSy0q2ob6RQOTWPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sorts Mill Goudy", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sortsmillgoudy/v6/JzRrPKdwEnE8F1TDmDLMUlIL2Qjg-Xlsg_fhGbe2P5U.ttf", "italic" => "http://fonts.gstatic.com/s/sortsmillgoudy/v6/UUu1lKiy4hRmBWk599VL1TYNkCNSzLyoucKmbTguvr0.ttf")), array("kind" => "webfonts#webfont", "family" => "Source Code Pro", "category" => "monospace", "variants" => array("200", "300", "regular", "500", "600", "700", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqaXvKVW_haheDNrHjziJZVk.ttf", "300" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqVP7R5lD_au4SZC6Ks_vyWs.ttf", "500" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqX63uKwMO11Of4rJWV582wg.ttf", "600" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqeiMeWyi5E_-XkTgB5psiDg.ttf", "700" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqfgXsetDviZcdR5OzC1KPcw.ttf", "900" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqRA_awHl7mXRjE_LQVochcU.ttf", "regular" => "http://fonts.gstatic.com/s/sourcecodepro/v6/mrl8jkM18OlOQN8JLgasD9Rl0pGnog23EMYRrBmUzJQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Source Sans Pro", "category" => "sans-serif", "variants" => array("200", "200italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic", "900", "900italic"), "subsets" => array("vietnamese", "latin-ext", "latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGKXvKVW_haheDNrHjziJZVk.ttf", "300" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGFP7R5lD_au4SZC6Ks_vyWs.ttf", "600" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGOiMeWyi5E_-XkTgB5psiDg.ttf", "700" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPgXsetDviZcdR5OzC1KPcw.ttf", "900" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGBA_awHl7mXRjE_LQVochcU.ttf", "200italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6OptKU7UIBg2hLM7eMTU8bI.ttf", "300italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6DUpNKoQAsDux-Todp8f29w.ttf", "regular" => "http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlNRl0pGnog23EMYRrBmUzJQ.ttf", "italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/M2Jd71oPJhLKp0zdtTvoMwRX4TIfMQQEXLu74GftruE.ttf", "600italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6Pp6lGoTTgjlW0sC4r900Co.ttf", "700italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6LVT4locI09aamSzFGQlDMY.ttf", "900italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6A0NcF6HPGWR298uWIdxWv0.ttf")), array("kind" => "webfonts#webfont", "family" => "Source Serif Pro", "category" => "serif", "variants" => array("regular", "600", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("600" => "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarGi4cQnvCGV11m1KlXh97aQ.ttf", "700" => "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarEkpYHRvxGNSCrR82n_RDNk.ttf", "regular" => "http://fonts.gstatic.com/s/sourceserifpro/v4/CeUM4np2c42DV49nanp55YGL0S0YDpKs5GpLtZIQ0m4.ttf")), array("kind" => "webfonts#webfont", "family" => "Special Elite", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/specialelite/v6/9-wW4zu3WNoD5Fjka35Jm4jjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Spicy Rice", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/spicyrice/v5/WGCtz7cLoggXARPi9OGD6_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Spinnaker", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/spinnaker/v8/MQdIXivKITpjROUdiN6Jgg.ttf")), array("kind" => "webfonts#webfont", "family" => "Spirax", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/spirax/v5/IOKqhk-Ccl7y31yDsePPkw.ttf")), array("kind" => "webfonts#webfont", "family" => "Squada One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/squadaone/v5/3tzGuaJdD65cZVgfQzN8uvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sree Krushnadevaraya", "category" => "serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sreekrushnadevaraya/v4/CdsXmnHyEqVl1ahzOh5qnzjDZVem5Eb4d0dXjXa0F_Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Stalemate", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stalemate/v4/wQLCnG0qB6mOu2Wit2dt_w.ttf")), array("kind" => "webfonts#webfont", "family" => "Stalinist One", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stalinistone/v8/MQpS-WezM9W4Dd7D3B7I-UT7eZ8.ttf")), array("kind" => "webfonts#webfont", "family" => "Stardos Stencil", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/stardosstencil/v6/h4ExtgvoXhPtv9Ieqd-XC81wDCbBgmIo8UyjIhmkeSM.ttf", "regular" => "http://fonts.gstatic.com/s/stardosstencil/v6/ygEOyTW9a6u4fi4OXEZeTFf2eT4jUldwg_9fgfY_tHc.ttf")), array("kind" => "webfonts#webfont", "family" => "Stint Ultra Condensed", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stintultracondensed/v5/8DqLK6-YSClFZt3u3EgOUYelbRYnLTTQA1Z5cVLnsI4.ttf")), array("kind" => "webfonts#webfont", "family" => "Stint Ultra Expanded", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stintultraexpanded/v4/FeigX-wDDgHMCKuhekhedQ7dxr0N5HY0cZKknTIL6n4.ttf")), array("kind" => "webfonts#webfont", "family" => "Stoke", "category" => "serif", "variants" => array("300", "regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/stoke/v6/Sell9475FOS8jUqQsfFsUQ.ttf", "regular" => "http://fonts.gstatic.com/s/stoke/v6/A7qJNoqOm2d6o1E6e0yUFg.ttf")), array("kind" => "webfonts#webfont", "family" => "Strait", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/strait/v4/m4W73ViNmProETY2ybc-Bg.ttf")), array("kind" => "webfonts#webfont", "family" => "Sue Ellen Francisco", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sueellenfrancisco/v7/TwHX4vSxMUnJUdEz1JIgrhzazJzPVbGl8jnf1tisRz4.ttf")), array("kind" => "webfonts#webfont", "family" => "Sumana", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-05-04", "files" => array("700" => "http://fonts.gstatic.com/s/sumana/v1/8AcM-KAproitONSBBHj3sQ.ttf", "regular" => "http://fonts.gstatic.com/s/sumana/v1/wgdl__wAK7pzliiWs0Nlog.ttf")), array("kind" => "webfonts#webfont", "family" => "Sunshiney", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sunshiney/v6/kaWOb4pGbwNijM7CkxK1sQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Supermercado One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/supermercadoone/v6/kMGPVTNFiFEp1U274uBMb4mm5hmSKNFf3C5YoMa-lrM.ttf")), array("kind" => "webfonts#webfont", "family" => "Sura", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/sura/v1/Z5bXQaFGmoWicN1WlcncxA.ttf", "regular" => "http://fonts.gstatic.com/s/sura/v1/jznKrhTH5NezYxb0-Q5zzA.ttf")), array("kind" => "webfonts#webfont", "family" => "Suranna", "category" => "serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/suranna/v4/PYmfr6TQeTqZ-r8HnPM-kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Suravaram", "category" => "serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/suravaram/v3/G4dPee4pel_w2HqzavW4MA.ttf")), array("kind" => "webfonts#webfont", "family" => "Suwannaphum", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/suwannaphum/v9/1jIPOyXied3T79GCnSlCN6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Swanky and Moo Moo", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/swankyandmoomoo/v6/orVNZ9kDeE3lWp3U3YELu9DVLKqNC3_XMNHhr8S94FU.ttf")), array("kind" => "webfonts#webfont", "family" => "Syncopate", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/syncopate/v7/S5z8ixiOoC4WJ1im6jAlYC3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/syncopate/v7/RQVwO52fAH6MI764EcaYtw.ttf")), array("kind" => "webfonts#webfont", "family" => "Tangerine", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/tangerine/v7/UkFsr-RwJB_d2l9fIWsx3i3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/tangerine/v7/DTPeM3IROhnkz7aYG2a9sA.ttf")), array("kind" => "webfonts#webfont", "family" => "Taprom", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/taprom/v8/-KByU3BaUsyIvQs79qFObg.ttf")), array("kind" => "webfonts#webfont", "family" => "Tauri", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tauri/v4/XIWeYJDXNqiVNej0zEqtGg.ttf")), array("kind" => "webfonts#webfont", "family" => "Teko", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/teko/v5/OobFGE9eo24rcBpN6zXDaQ.ttf", "500" => "http://fonts.gstatic.com/s/teko/v5/FQ0duU7gWM4cSaImOfAjBA.ttf", "600" => "http://fonts.gstatic.com/s/teko/v5/QDx_i8H-TZ1IK1JEVrqwEQ.ttf", "700" => "http://fonts.gstatic.com/s/teko/v5/xKfTxe_SWpH4xU75vmvylA.ttf", "regular" => "http://fonts.gstatic.com/s/teko/v5/UtekqODEqZXSN2L-njejpA.ttf")), array("kind" => "webfonts#webfont", "family" => "Telex", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/telex/v4/24-3xP9ywYeHOcFU3iGk8A.ttf")), array("kind" => "webfonts#webfont", "family" => "Tenali Ramakrishna", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tenaliramakrishna/v3/M0nTmDqv2M7AGoGh-c946BZak5pSBHqWX6uyVMiMFoA.ttf")), array("kind" => "webfonts#webfont", "family" => "Tenor Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tenorsans/v7/dUBulmjNJJInvK5vL7O9yfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Text Me One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/textmeone/v4/9em_3ckd_P5PQkP4aDyDLqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "The Girl Next Door", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/thegirlnextdoor/v7/cWRA4JVGeEcHGcPl5hmX7kzo0nFFoM60ux_D9BUymX4.ttf")), array("kind" => "webfonts#webfont", "family" => "Tienne", "category" => "serif", "variants" => array("regular", "700", "900"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/tienne/v8/JvoCDOlyOSEyYGRwCyfs3g.ttf", "900" => "http://fonts.gstatic.com/s/tienne/v8/FBano5T521OWexj2iRYLMw.ttf", "regular" => "http://fonts.gstatic.com/s/tienne/v8/-IIfDl701C0z7-fy2kmGvA.ttf")), array("kind" => "webfonts#webfont", "family" => "Tillana", "category" => "handwriting", "variants" => array("regular", "500", "600", "700", "800"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/tillana/v1/gqdUngSIcY9tSla5eCZky_esZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/tillana/v1/fqon6-r15hy8M1cyiYfQBvesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/tillana/v1/jGARMTxLrMerzTCpGBpMffesZW2xOQ-xsNqO47m55DA.ttf", "800" => "http://fonts.gstatic.com/s/tillana/v1/pmTtNH_Ibktj5Cyc1XrP6vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/tillana/v1/zN0D-jDPsr1HzU3VRFLY5g.ttf")), array("kind" => "webfonts#webfont", "family" => "Timmana", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("telugu", "latin"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/timmana/v1/T25SicsJUJkc2s2sbBsDnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Tinos", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("vietnamese", "cyrillic", "hebrew", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/tinos/v9/vHXfhX8jZuQruowfon93yQ.ttf", "regular" => "http://fonts.gstatic.com/s/tinos/v9/EqpUbkVmutfwZ0PjpoGwCg.ttf", "italic" => "http://fonts.gstatic.com/s/tinos/v9/slfyzlasCr9vTsaP4lUh9A.ttf", "700italic" => "http://fonts.gstatic.com/s/tinos/v9/M6kfzvDMM0CdxdraoFpG6vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Titan One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/titanone/v4/FbvpRvzfV_oipS0De3iAZg.ttf")), array("kind" => "webfonts#webfont", "family" => "Titillium Web", "category" => "sans-serif", "variants" => array("200", "200italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wprzOdCrLccoxq42eaxM802O0.ttf", "300" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr9ZAkYT8DuUZELiKLwMGWAo.ttf", "600" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr28K9dEd5Ue-HTQrlA7E2xQ.ttf", "700" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr2-6tpSbB9YhmWtmd1_gi_U.ttf", "900" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr7L0GmZLri-m-nfoo0Vul4Y.ttf", "200italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPj4N98U-66ThNJvtgddRfBE.ttf", "300italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPrfzCkqg7ORZlRf2cc4mXu8.ttf", "regular" => "http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcTyagQBwYgYywpS70xNq8SQ.ttf", "italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/r9OmwyQxrgzUAhaLET_KO-ixohbIP6lHkU-1Mgq95cY.ttf", "600italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPgOhzTSndyK8UWja2yJjKLc.ttf", "700italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPio3LEw-4MM8Ao2j9wPOfpw.ttf")), array("kind" => "webfonts#webfont", "family" => "Trade Winds", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tradewinds/v5/sDOCVgAxw6PEUi2xdMsoDaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Trocchi", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/trocchi/v4/uldNPaKrUGVeGCVsmacLwA.ttf")), array("kind" => "webfonts#webfont", "family" => "Trochut", "category" => "display", "variants" => array("regular", "italic", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/trochut/v4/lWqNOv6ISR8ehNzGLFLnJ_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/trochut/v4/6Y65B0x-2JsnYt16OH5omw.ttf", "italic" => "http://fonts.gstatic.com/s/trochut/v4/pczUwr4ZFvC79TgNO5cZng.ttf")), array("kind" => "webfonts#webfont", "family" => "Trykker", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/trykker/v5/YiVrVJpBFN7I1l_CWk6yYQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Tulpen One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tulpenone/v6/lwcTfVIEVxpZLZlWzR5baPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ubuntu", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/ubuntu/v9/7-wH0j2QCTHKgp7vLh9-sQ.ttf", "500" => "http://fonts.gstatic.com/s/ubuntu/v9/bMbHEMwSUmkzcK2x_74QbA.ttf", "700" => "http://fonts.gstatic.com/s/ubuntu/v9/B7BtHjNYwAp3HgLNagENOQ.ttf", "300italic" => "http://fonts.gstatic.com/s/ubuntu/v9/j-TYDdXcC_eQzhhp386SjaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/ubuntu/v9/lhhB5ZCwEkBRbHMSnYuKyA.ttf", "italic" => "http://fonts.gstatic.com/s/ubuntu/v9/b9hP8wd30SygxZjGGk4DCQ.ttf", "500italic" => "http://fonts.gstatic.com/s/ubuntu/v9/NWdMogIO7U6AtEM4dDdf_aCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/ubuntu/v9/pqisLQoeO9YTDCNnlQ9bf6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Ubuntu Condensed", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ubuntucondensed/v7/DBCt-NXN57MTAFjitYxdrKDbm6fPDOZJsR8PmdG62gY.ttf")), array("kind" => "webfonts#webfont", "family" => "Ubuntu Mono", "category" => "monospace", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("cyrillic", "latin-ext", "greek-ext", "latin", "greek", "cyrillic-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ubuntumono/v6/ceqTZGKHipo8pJj4molytne1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/ubuntumono/v6/EgeuS9OtEmA0y_JRo03MQaCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/ubuntumono/v6/KAKuHXAHZOeECOWAHsRKA0eOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/ubuntumono/v6/n_d8tv_JOIiYyMXR4eaV9c_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ultra", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ultra/v8/OW8uXkOstRADuhEmGOFQLA.ttf")), array("kind" => "webfonts#webfont", "family" => "Uncial Antiqua", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/uncialantiqua/v4/F-leefDiFwQXsyd6eaSllqrFJ4O13IHVxZbM6yoslpo.ttf")), array("kind" => "webfonts#webfont", "family" => "Underdog", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/underdog/v5/gBv9yjez_-5PnTprHWq0ig.ttf")), array("kind" => "webfonts#webfont", "family" => "Unica One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unicaone/v4/KbYKlhWMDpatWViqDkNQgA.ttf")), array("kind" => "webfonts#webfont", "family" => "UnifrakturCook", "category" => "display", "variants" => array("700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/unifrakturcook/v8/ASwh69ykD8iaoYijVEU6RrWZkcsCTHKV51zmcUsafQ0.ttf")), array("kind" => "webfonts#webfont", "family" => "UnifrakturMaguntia", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unifrakturmaguntia/v7/7KWy3ymCVR_xfAvvcIXm3-kdNg30GQauG_DE-tMYtWk.ttf")), array("kind" => "webfonts#webfont", "family" => "Unkempt", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/unkempt/v7/V7H-GCl9bgwGwqFqTTgDHvesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/unkempt/v7/NLLBeNSspr0RGs71R5LHWA.ttf")), array("kind" => "webfonts#webfont", "family" => "Unlock", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unlock/v6/rXEQzK7uIAlhoyoAEiMy1w.ttf")), array("kind" => "webfonts#webfont", "family" => "Unna", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unna/v8/UAS0AM7AmbdCNY_80xyAZQ.ttf")), array("kind" => "webfonts#webfont", "family" => "VT323", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vt323/v7/ITU2YQfM073o1iYK3nSOmQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Vampiro One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vampiroone/v7/OVDs4gY4WpS5u3Qd1gXRW6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Varela", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/varela/v7/ON7qs0cKUUixhhDFXlZUjw.ttf")), array("kind" => "webfonts#webfont", "family" => "Varela Round", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/varelaround/v6/APH4jr0uSos5wiut5cpjri3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Vast Shadow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vastshadow/v6/io4hqKX3ibiqQQjYfW0-h6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Vesper Libre", "category" => "serif", "variants" => array("regular", "500", "700", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v7", "lastModified" => "2015-06-03", "files" => array("500" => "http://fonts.gstatic.com/s/vesperlibre/v7/0liLgNkygqH6EOtsVjZDsZMQuUSAwdHsY8ov_6tk1oA.ttf", "700" => "http://fonts.gstatic.com/s/vesperlibre/v7/0liLgNkygqH6EOtsVjZDsUD2ttfZwueP-QU272T9-k4.ttf", "900" => "http://fonts.gstatic.com/s/vesperlibre/v7/0liLgNkygqH6EOtsVjZDsaObDOjC3UL77puoeHsE3fw.ttf", "regular" => "http://fonts.gstatic.com/s/vesperlibre/v7/Cg-TeZFsqV8BaOcoVwzu2C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Vibur", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vibur/v7/xB9aKsUbJo68XP0bAg2iLw.ttf")), array("kind" => "webfonts#webfont", "family" => "Vidaloka", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vidaloka/v8/C6Nul0ogKUWkx356rrt9RA.ttf")), array("kind" => "webfonts#webfont", "family" => "Viga", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/viga/v5/uD87gDbhS7frHLX4uL6agg.ttf")), array("kind" => "webfonts#webfont", "family" => "Voces", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/voces/v5/QoBH6g6yKgNIgvL8A2aE2Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Volkhov", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/volkhov/v8/L8PbKS-kEoLHm7nP--NCzPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/volkhov/v8/MDIZAofe1T_J3un5Kgo8zg.ttf", "italic" => "http://fonts.gstatic.com/s/volkhov/v8/1rTjmztKEpbkKH06JwF8Yw.ttf", "700italic" => "http://fonts.gstatic.com/s/volkhov/v8/W6oG0QDDjCgj0gmsHE520C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Vollkorn", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/vollkorn/v6/gOwQjJVGXlDOONC12hVoBqCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/vollkorn/v6/IiexqYAeh8uII223thYx3w.ttf", "italic" => "http://fonts.gstatic.com/s/vollkorn/v6/UuIzosgR1ovBhJFdwVp3fvesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/vollkorn/v6/KNiAlx6phRqXCwnZZG51JAJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Voltaire", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/voltaire/v6/WvqBzaGEBbRV-hrahwO2cA.ttf")), array("kind" => "webfonts#webfont", "family" => "Waiting for the Sunrise", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/waitingforthesunrise/v7/eNfH7kLpF1PZWpsetF-ha9TChrNgrDiT3Zy6yGf3FnM.ttf")), array("kind" => "webfonts#webfont", "family" => "Wallpoet", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wallpoet/v8/hmum4WuBN4A0Z_7367NDIg.ttf")), array("kind" => "webfonts#webfont", "family" => "Walter Turncoat", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/walterturncoat/v6/sG9su5g4GXy1KP73cU3hvQplL2YwNeota48DxFlGDUo.ttf")), array("kind" => "webfonts#webfont", "family" => "Warnes", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/warnes/v6/MXG7_Phj4YpzAXxKGItuBw.ttf")), array("kind" => "webfonts#webfont", "family" => "Wellfleet", "category" => "display", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wellfleet/v4/J5tOx72iFRPgHYpbK9J4XQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Wendy One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin-ext", "latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wendyone/v4/R8CJT2oDXdMk_ZtuHTxoxw.ttf")), array("kind" => "webfonts#webfont", "family" => "Wire One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wireone/v7/sRLhaQOQpWnvXwIx0CycQw.ttf")), array("kind" => "webfonts#webfont", "family" => "Work Sans", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700", "800", "900"), "subsets" => array("latin-ext", "latin"), "version" => "v2", "lastModified" => "2015-12-08", "files" => array("100" => "http://fonts.gstatic.com/s/worksans/v2/ZAhtNqLaAViKjGLajtuwWaCWcynf_cDxXwCLxiixG1c.ttf", "200" => "http://fonts.gstatic.com/s/worksans/v2/u_mYNr_qYP37m7vgvmIYZy3USBnSvpkopQaUR-2r7iU.ttf", "300" => "http://fonts.gstatic.com/s/worksans/v2/FD_Udbezj8EHXbdsqLUply3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/worksans/v2/Nbre-U_bp6Xktt8cpgwaJC3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/worksans/v2/z9rX03Xuz9ZNHTMg1_ghGS3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/worksans/v2/4udXuXg54JlPEP5iKO5AmS3USBnSvpkopQaUR-2r7iU.ttf", "800" => "http://fonts.gstatic.com/s/worksans/v2/IQh-ap2Uqs7kl1YINeeEGi3USBnSvpkopQaUR-2r7iU.ttf", "900" => "http://fonts.gstatic.com/s/worksans/v2/Hjn0acvjHfjY_vAK9Uc6gi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/worksans/v2/zVvigUiMvx7JVEnrJgc-5Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Yanone Kaffeesatz", "category" => "sans-serif", "variants" => array("200", "300", "regular", "700"), "subsets" => array("latin-ext", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRbq92v6XxU4pSv06GI0NsGc.ttf", "300" => "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRZlIwXPiNoNT_wxzJ2t3mTE.ttf", "700" => "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRf2R4S6PlKaGXWPfWpHpcl0.ttf", "regular" => "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/YDAoLskQQ5MOAgvHUQCcLdXn3cHbFGWU4T2HrSN6JF4.ttf")), array("kind" => "webfonts#webfont", "family" => "Yantramanav", "category" => "sans-serif", "variants" => array("100", "300", "regular", "500", "700", "900"), "subsets" => array("latin-ext", "devanagari", "latin"), "version" => "v1", "lastModified" => "2015-06-03", "files" => array("100" => "http://fonts.gstatic.com/s/yantramanav/v1/Rs1I2PF4Z8GAb6qjgvr8wIAWxXGWZ3yJw6KhWS7MxOk.ttf", "300" => "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bC9-WlPSxbfiI49GsXo3q0g.ttf", "500" => "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bMCNfqCYlB_eIx7H1TVXe60.ttf", "700" => "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "900" => "http://fonts.gstatic.com/s/yantramanav/v1/HSfbC4Z8I8BZ00wiXeA5bCenaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/yantramanav/v1/FwdziO-qWAO8pZg8e376kaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Yellowtail", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/yellowtail/v6/HLrU6lhCTjXfLZ7X60LcB_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Yeseva One", "category" => "display", "variants" => array("regular"), "subsets" => array("cyrillic", "latin-ext", "latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/yesevaone/v10/eenQQxvpzSA80JmisGcgX_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Yesteryear", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/yesteryear/v5/dv09hP_ZrdjVOfZQXKXuZvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Zeyada", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/zeyada/v6/hmonmGYYFwqTZQfG2nRswQ.ttf"))));
|
1 |
Â
<?php
|
2 |
Â
|
3 |
+
return array("kind" => "webfonts#webfontList", "items" => array(array("kind" => "webfonts#webfont", "family" => "ABeeZee", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/abeezee/v9/mE5BOuZKGln_Ex0uYKpIaw.ttf", "italic" => "http://fonts.gstatic.com/s/abeezee/v9/kpplLynmYgP0YtlJA3atRw.ttf")), array("kind" => "webfonts#webfont", "family" => "Abel", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/abel/v6/RpUKfqNxoyNe_ka23bzQ2A.ttf")), array("kind" => "webfonts#webfont", "family" => "Abril Fatface", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/abrilfatface/v8/X1g_KwGeBV3ajZIXQ9VnDojjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Aclonica", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aclonica/v6/M6pHZMPwK3DiBSlo3jwAKQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Acme", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/acme/v5/-J6XNtAHPZBEbsifCdBt-g.ttf")), array("kind" => "webfonts#webfont", "family" => "Actor", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/actor/v6/ugMf40CrRK6Jf6Yz_xNSmQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Adamina", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/adamina/v8/RUQfOodOMiVVYqFZcSlT9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Advent Pro", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700"), "subsets" => array("greek", "latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/adventpro/v4/87-JOpSUecTG50PBYK4ysi3USBnSvpkopQaUR-2r7iU.ttf", "200" => "http://fonts.gstatic.com/s/adventpro/v4/URTSSjIp0Wr-GrjxFdFWnGeudeTO44zf-ht3k-KNzwg.ttf", "300" => "http://fonts.gstatic.com/s/adventpro/v4/sJaBfJYSFgoB80OL1_66m0eOrDcLawS7-ssYqLr2Xp4.ttf", "500" => "http://fonts.gstatic.com/s/adventpro/v4/7kBth2-rT8tP40RmMMXMLJp-63r6doWhTEbsfBIRJ7A.ttf", "600" => "http://fonts.gstatic.com/s/adventpro/v4/3Jo-2maCzv2QLzQBzaKHV_pTEJqju4Hz1txDWij77d4.ttf", "700" => "http://fonts.gstatic.com/s/adventpro/v4/M4I6QiICt-ey_wZTpR2gKwJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/adventpro/v4/1NxMBeKVcNNH2H46AUR3wfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aguafina Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aguafinascript/v5/65g7cgMtMGnNlNyq_Z6CvMxLhO8OSNnfAp53LK1_iRs.ttf")), array("kind" => "webfonts#webfont", "family" => "Akronim", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/akronim/v5/qA0L2CSArk3tuOWE1AR1DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aladin", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aladin/v5/PyuJ5cVHkduO0j5fAMKvAA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aldrich", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aldrich/v6/kMMW1S56gFx7RP_mW1g-Eg.ttf")), array("kind" => "webfonts#webfont", "family" => "Alef", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "hebrew"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/alef/v6/VDgZJhEwudtOzOFQpZ8MEA.ttf", "regular" => "http://fonts.gstatic.com/s/alef/v6/ENvZ_P0HBDQxNZYCQO0lUA.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/alegreya/v7/5oZtdI5-wQwgAFrd9erCsaCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/alegreya/v7/oQeMxX-vxGImzDgX6nxA7KCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/alegreya/v7/62J3atXd6bvMU4qO_ca-eA.ttf", "italic" => "http://fonts.gstatic.com/s/alegreya/v7/cbshnQGxwmlHBjUil7DaIfesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreya/v7/IWi8e5bpnqhMRsZKTcTUWgJKKGfqHaYFsRG-T3ceEVo.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreya/v7/-L71QLH_XqgYWaI1GbOVhp0EAVxt0G0biEntp43Qt6E.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya SC", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUq3e1Pd76Vl7zRpE7NLJQ7XU.ttf", "900" => "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUqyenaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/alegreyasc/v6/3ozeFnTbygMK6PfHh8B-iqCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/alegreyasc/v6/GOqmv3FLsJ2r6ZALMZVBmkeOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6c_zJjSACmk0BRPxQqhnNLU.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6U_yTOUGsoC54csJe1b-IRw.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya Sans", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PJFGFO4uyVFMfB6LZsii7kI.ttf", "300" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acB1LjARzAvdqa1uQC32v70.ttf", "500" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aQqQmZ7VjhwksfpNVG0pqGc.ttf", "700" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aVCbmAUID8LN-q3pJpOk3Ys.ttf", "800" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acxnD5BewVtRRHHljCwR2bM.ttf", "900" => "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aW42xlVP-j5dagE7-AU2zwg.ttf", "100italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/gRkSP2lBpqoMTVxg7DmVn2cDnjsrnI9_xJ-5gnBaHsE.ttf", "300italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CnfqlVoxTUFFx1C8tBqmbcg.ttf", "regular" => "http://fonts.gstatic.com/s/alegreyasans/v3/KYNzioYhDai7mTMnx_gDgn8f0n03UdmQgF_CLvNR2vg.ttf", "italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PD4G9C9ttb0Oz5Cvf0qOitE.ttf", "500italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9Cs7DCVO6wo6i5LKIyZDzK40.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CpF66r9C4AnxxlBlGd7xY4g.ttf", "800italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CicOAJ_9MkLPbDmrtXDPbIU.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9ChRaDUI9aE8-k7PrIG2iiuo.ttf")), array("kind" => "webfonts#webfont", "family" => "Alegreya Sans SC", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kVnzStfdnFU-MXbO84aBs_M.ttf", "300" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46-1IqtfxJspFjzJp0SaQRcI.ttf", "500" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46_hHTluI57wqxl55RvSYo3s.ttf", "700" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR4600aId5t1FC-xZ8nmpa_XLk.ttf", "800" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46wQgSHD3Lo1Mif2Wkk5swWA.ttf", "900" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR461Rf9EWUSEX_PR1d_gLKfpM.ttf", "100italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/qG3gA9iy5RpXMH4crZboqqakMVR0XlJhO7VdJ8yYvA4.ttf", "300italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0CnTKaH808trtzttbEg4yVA.ttf", "regular" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/6kgb6ZvOagoVIRZyl8XV-EklWX-XdLVn1WTiuGuvKIU.ttf", "italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kTfqo69HNOlCNZvbwAmUtiA.ttf", "500italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0NqVvxKdFVwqwzilqfVd39U.ttf", "700italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IBYn3VD6xMEnodOh8pnFw4.ttf", "800italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0HStmCm6Rs90XeztCALm0H8.ttf", "900italic" => "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IvtwEfTCJoOJugANj-jWDI.ttf")), array("kind" => "webfonts#webfont", "family" => "Alex Brush", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alexbrush/v6/ooh3KJFbKJSUoIRWfiu8o_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Alfa Slab One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alfaslabone/v5/Qx6FPcitRwTC_k88tLPc-Yjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Alice", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alice/v7/wZTAfivekBqIg-rk63nFvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Alike", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alike/v8/Ho8YpRKNk_202fwDiGNIyw.ttf")), array("kind" => "webfonts#webfont", "family" => "Alike Angular", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/alikeangular/v6/OpeCu4xxI3qO1C7CZcJtPT3XH2uEnVI__ynTBvNyki8.ttf")), array("kind" => "webfonts#webfont", "family" => "Allan", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/allan/v7/zSxQiwo7wgnr7KkMXhSiag.ttf", "regular" => "http://fonts.gstatic.com/s/allan/v7/T3lemhgZmLQkQI2Qc2bQHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Allerta", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/allerta/v7/s9FOEuiJFTNbMe06ifzV8g.ttf")), array("kind" => "webfonts#webfont", "family" => "Allerta Stencil", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/allertastencil/v7/CdSZfRtHbQrBohqmzSdDYFf2eT4jUldwg_9fgfY_tHc.ttf")), array("kind" => "webfonts#webfont", "family" => "Allura", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/allura/v4/4hcqgZanyuJ2gMYWffIR6A.ttf")), array("kind" => "webfonts#webfont", "family" => "Almendra", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/almendra/v8/ZpLdQMj7Q2AFio4nNO6A76CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/almendra/v8/PDpbB-ZF7deXAAEYPkQOeg.ttf", "italic" => "http://fonts.gstatic.com/s/almendra/v8/CNWLyiDucqVKVgr4EMidi_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/almendra/v8/-tXHKMcnn6FqrhJV3l1e3QJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Almendra Display", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/almendradisplay/v6/2Zuu97WJ_ez-87yz5Ai8fF6uyC_qD11hrFQ6EGgTJWI.ttf")), array("kind" => "webfonts#webfont", "family" => "Almendra SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/almendrasc/v6/IuiLd8Fm9I6raSalxMoWeaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Amarante", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/amarante/v4/2dQHjIBWSpydit5zkJZnOw.ttf")), array("kind" => "webfonts#webfont", "family" => "Amaranth", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/amaranth/v6/j5OFHqadfxyLnQRxFeox6qCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/amaranth/v6/7VcBog22JBHsHXHdnnycTA.ttf", "italic" => "http://fonts.gstatic.com/s/amaranth/v6/UrJlRY9LcVERJSvggsdBqPesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/amaranth/v6/BHyuYFj9nqLFNvOvGh0xTwJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Amatic SC", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/amaticsc/v8/IDnkRTPGcrSVo50UyYNK7y3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/amaticsc/v8/MldbRWLFytvqxU1y81xSVg.ttf")), array("kind" => "webfonts#webfont", "family" => "Amethysta", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/amethysta/v4/1jEo9tOFIJDolAUpBnWbnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Amiri", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "arabic"), "version" => "v7", "lastModified" => "2015-04-07", "files" => array("700" => "http://fonts.gstatic.com/s/amiri/v7/WQsR_moz-FNqVwGYgptqiA.ttf", "regular" => "http://fonts.gstatic.com/s/amiri/v7/ATARrPmSew75SlpOw2YABQ.ttf", "italic" => "http://fonts.gstatic.com/s/amiri/v7/3t1yTQlLUXBw8htrqlXBrw.ttf", "700italic" => "http://fonts.gstatic.com/s/amiri/v7/uF8aNEyD0bxMeTBg9bFDSPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Amita", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-06-03", "files" => array("700" => "http://fonts.gstatic.com/s/amita/v1/cIYA2Lzp7l2pcGsqpUidBg.ttf", "regular" => "http://fonts.gstatic.com/s/amita/v1/RhdhGBXSJqkHo6g7miTEcQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Anaheim", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anaheim/v4/t-z8aXHMpgI2gjN_rIflKA.ttf")), array("kind" => "webfonts#webfont", "family" => "Andada", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/andada/v7/rSFaDqNNQBRw3y19MB5Y4w.ttf")), array("kind" => "webfonts#webfont", "family" => "Andika", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic", "vietnamese"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/andika/v7/oe-ag1G0lcqZ3IXfeEgaGg.ttf")), array("kind" => "webfonts#webfont", "family" => "Angkor", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/angkor/v8/DLpLgIS-8F10ecwKqCm95Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Annie Use Your Telescope", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/annieuseyourtelescope/v6/2cuiO5VmaR09C8SLGEQjGqbp7mtG8sPlcZvOaO8HBak.ttf")), array("kind" => "webfonts#webfont", "family" => "Anonymous Pro", "category" => "monospace", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "latin-ext", "cyrillic"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/anonymouspro/v8/WDf5lZYgdmmKhO8E1AQud--Cz_5MeePnXDAcLNWyBME.ttf", "regular" => "http://fonts.gstatic.com/s/anonymouspro/v8/Zhfjj_gat3waL4JSju74E-V_5zh5b-_HiooIRUBwn1A.ttf", "italic" => "http://fonts.gstatic.com/s/anonymouspro/v8/q0u6LFHwttnT_69euiDbWKwIsuKDCXG0NQm7BvAgx-c.ttf", "700italic" => "http://fonts.gstatic.com/s/anonymouspro/v8/_fVr_XGln-cetWSUc-JpfA1LL9bfs7wyIp6F8OC9RxA.ttf")), array("kind" => "webfonts#webfont", "family" => "Antic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/antic/v7/hEa8XCNM7tXGzD0Uk0AipA.ttf")), array("kind" => "webfonts#webfont", "family" => "Antic Didone", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anticdidone/v4/r3nJcTDuOluOL6LGDV1vRy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Antic Slab", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anticslab/v4/PSbJCTKkAS7skPdkd7AKEvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Anton", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/anton/v7/XIbCenm-W0IRHWYIh7CGUQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Arapey", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arapey/v5/dqu823lrSYn8T2gApTdslA.ttf", "italic" => "http://fonts.gstatic.com/s/arapey/v5/pY-Xi5JNBpaWxy2tZhEm5A.ttf")), array("kind" => "webfonts#webfont", "family" => "Arbutus", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arbutus/v5/Go_hurxoUsn5MnqNVQgodQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Arbutus Slab", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arbutusslab/v4/6k3Yp6iS9l4jRIpynA8qMy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Architects Daughter", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/architectsdaughter/v6/RXTgOOQ9AAtaVOHxx0IUBMCy0EhZjHzu-y0e6uLf4Fg.ttf")), array("kind" => "webfonts#webfont", "family" => "Archivo Black", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/archivoblack/v4/WoAoVT7K3k7hHfxKbvB6B51XQG8isOYYJhPIYAyrESQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Archivo Narrow", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/archivonarrow/v5/M__Wu4PAmHf4YZvQM8tWsMLtdzs3iyjn_YuT226ZsLU.ttf", "regular" => "http://fonts.gstatic.com/s/archivonarrow/v5/DsLzC9scoPnrGiwYYMQXppTvAuddT2xDMbdz0mdLyZY.ttf", "italic" => "http://fonts.gstatic.com/s/archivonarrow/v5/vqsrtPCpTU3tJlKfuXP5zUpmlyBQEFfdE6dERLXdQGQ.ttf", "700italic" => "http://fonts.gstatic.com/s/archivonarrow/v5/wG6O733y5zHl4EKCOh8rSTg5KB8MNJ4uPAETq9naQO8.ttf")), array("kind" => "webfonts#webfont", "family" => "Arimo", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "hebrew", "greek-ext", "vietnamese"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/arimo/v9/ZItXugREyvV9LnbY_gxAmw.ttf", "regular" => "http://fonts.gstatic.com/s/arimo/v9/Gpeo80g-5ji2CcyXWnzh7g.ttf", "italic" => "http://fonts.gstatic.com/s/arimo/v9/_OdGbnX2-qQ96C4OjhyuPw.ttf", "700italic" => "http://fonts.gstatic.com/s/arimo/v9/__nOLWqmeXdhfr0g7GaFePesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Arizonia", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/arizonia/v6/yzJqkHZqryZBTM7RKYV9Wg.ttf")), array("kind" => "webfonts#webfont", "family" => "Armata", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/armata/v6/1H8FwGgIRrbYtxSfXhOHlQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Artifika", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/artifika/v6/Ekfp4H4QG7D-WsABDOyj8g.ttf")), array("kind" => "webfonts#webfont", "family" => "Arvo", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/arvo/v9/OB3FDST7U38u3OjPK_vvRQ.ttf", "regular" => "http://fonts.gstatic.com/s/arvo/v9/vvWPwz-PlZEwjOOIKqoZzA.ttf", "italic" => "http://fonts.gstatic.com/s/arvo/v9/id5a4BCjbenl5Gkqonw_Rw.ttf", "700italic" => "http://fonts.gstatic.com/s/arvo/v9/Hvl2MuWoXLaCy2v6MD4Yvw.ttf")), array("kind" => "webfonts#webfont", "family" => "Arya", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-05-21", "files" => array("700" => "http://fonts.gstatic.com/s/arya/v1/N13tgOvG7VTXawiI-fJiQA.ttf", "regular" => "http://fonts.gstatic.com/s/arya/v1/xEVqtU3v8QLospHKpDaYEw.ttf")), array("kind" => "webfonts#webfont", "family" => "Asap", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/asap/v4/o5RUA7SsJ80M8oDFBnrDbg.ttf", "regular" => "http://fonts.gstatic.com/s/asap/v4/2lf-1MDR8tsTpEtvJmr2hA.ttf", "italic" => "http://fonts.gstatic.com/s/asap/v4/mwxNHf8QS8gNWCAMwkJNIg.ttf", "700italic" => "http://fonts.gstatic.com/s/asap/v4/_rZz9y2oXc09jT5T6BexLQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Asar", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("regular" => "http://fonts.gstatic.com/s/asar/v1/mSmn3H5CcMA84CZ586X7WQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Asset", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/asset/v6/hfPmqY-JzuR1lULlQf9iTg.ttf")), array("kind" => "webfonts#webfont", "family" => "Astloch", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/astloch/v6/aPkhM2tL-tz1jX6aX2rvo_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/astloch/v6/fmbitVmHYLQP7MGPuFgpag.ttf")), array("kind" => "webfonts#webfont", "family" => "Asul", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/asul/v5/uO8uNmxaq87-DdPmkEg5Gg.ttf", "regular" => "http://fonts.gstatic.com/s/asul/v5/9qpsNR_OOwyOYyo2N0IbBw.ttf")), array("kind" => "webfonts#webfont", "family" => "Atomic Age", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/atomicage/v7/WvBMe4FxANIKpo6Oi0mVJ_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Aubrey", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/aubrey/v8/zo9w8klO8bmOQIMajQ2aTA.ttf")), array("kind" => "webfonts#webfont", "family" => "Audiowide", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/audiowide/v4/yGcwRZB6VmoYhPUYT-mEow.ttf")), array("kind" => "webfonts#webfont", "family" => "Autour One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/autourone/v4/2xmQBcg7FN72jaQRFZPIDvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Average", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/average/v4/aHUibBqdDbVYl5FM48pxyQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Average Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/averagesans/v4/dnU3R-5A_43y5bIyLztPsS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Gruesa Libre", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/averiagruesalibre/v4/10vbZTOoN6T8D-nvDzwRFyXcKHuZXlCN8VkWHpkUzKM.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Libre", "category" => "display", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XacQoVhARpoaILP7amxE_8g.ttf", "700" => "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XUD2ttfZwueP-QU272T9-k4.ttf", "300italic" => "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkina0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/averialibre/v4/rYVgHZZQICWnhjguGsBspC3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/averialibre/v4/1etzuoNxVHR8F533EkD1WfMZXuCXbOrAvx5R0IT5Oyo.ttf", "700italic" => "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkvAs9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Sans Libre", "category" => "display", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V4CP_KG_g80s1KXiBtJHoNc.ttf", "700" => "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V8QwVOrz1y5GihpZmtKLhlI.ttf", "300italic" => "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88YuyGu4JqttndUh4gRKxic0.ttf", "regular" => "http://fonts.gstatic.com/s/averiasanslibre/v4/yRJpjT39KxACO9F31mj_LqV8_KRn4epKAjTFK1s1fsg.ttf", "italic" => "http://fonts.gstatic.com/s/averiasanslibre/v4/COEzR_NPBSUOl3pFwPbPoCZU2HnUZT1xVKaIrHDioao.ttf", "700italic" => "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88bXy1DXgmJcVtKjM5UWamMs.ttf")), array("kind" => "webfonts#webfont", "family" => "Averia Serif Libre", "category" => "display", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8SmC4gFJ2PHmfdVKEd_5S9M.ttf", "700" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8Q50KV5TaOVolur4zV2iZsg.ttf", "300italic" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCG2okl0bU63CauowU4iApig.ttf", "regular" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/fdtF30xa_Erw0zAzOoG4BZqY66i8AUyI16fGqw0iAew.ttf", "italic" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/o9qhvK9iT5iDWfyhQUe-6Ru_b0bTq5iipbJ9hhgHJ6U.ttf", "700italic" => "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCNxohRXP4tNDqG3X4Hqn21k.ttf")), array("kind" => "webfonts#webfont", "family" => "Bad Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/badscript/v5/cRyUs0nJ2eMQFHwBsZNRXfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Balthazar", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/balthazar/v5/WgbaSIs6dJAGXJ0qbz2xlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Bangers", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bangers/v8/WAffdge5w99Xif-DLeqmcA.ttf")), array("kind" => "webfonts#webfont", "family" => "Basic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/basic/v6/hNII2mS5Dxw5C0u_m3mXgA.ttf")), array("kind" => "webfonts#webfont", "family" => "Battambang", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/battambang/v9/dezbRtMzfzAA99DmrCYRMgJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/battambang/v9/MzrUfQLefYum5vVGM3EZVPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Baumans", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/baumans/v5/o0bFdPW1H5kd5saqqOcoVg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bayon", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/bayon/v8/yTubusjTnpNRZwA4_50iVw.ttf")), array("kind" => "webfonts#webfont", "family" => "Belgrano", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/belgrano/v6/iq8DUa2s7g6WRCeMiFrmtQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Belleza", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/belleza/v4/wchA3BWJlVqvIcSeNZyXew.ttf")), array("kind" => "webfonts#webfont", "family" => "BenchNine", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/benchnine/v4/ah9xtUy9wLQ3qnWa2p-piS3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/benchnine/v4/qZpi6ZVZg3L2RL_xoBLxWS3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/benchnine/v4/h3OAlYqU3aOeNkuXgH2Q2w.ttf")), array("kind" => "webfonts#webfont", "family" => "Bentham", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bentham/v6/5-Mo8Fe7yg5tzV0GlQIuzQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Berkshire Swash", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/berkshireswash/v4/4RZJjVRPjYnC2939hKCAimKfbtsIjCZP_edQljX9gR0.ttf")), array("kind" => "webfonts#webfont", "family" => "Bevan", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bevan/v7/Rtg3zDsCeQiaJ_Qno22OJA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bigelow Rules", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bigelowrules/v4/FEJCPLwo07FS-6SK6Al50X8f0n03UdmQgF_CLvNR2vg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bigshot One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bigshotone/v6/wSyZjBNTWDQHnvWE2jt6j6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Bilbo", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bilbo/v6/-ty-lPs5H7OIucWbnpFrkA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bilbo Swash Caps", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bilboswashcaps/v7/UB_-crLvhx-PwGKW1oosDmYeFSdnSpRYv5h9gpdlD1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Biryani", "category" => "sans-serif", "variants" => array("200", "300", "regular", "600", "700", "800", "900"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-04-22", "files" => array("200" => "http://fonts.gstatic.com/s/biryani/v1/Xx38YzyTFF8n6mRS1Yd88vesZW2xOQ-xsNqO47m55DA.ttf", "300" => "http://fonts.gstatic.com/s/biryani/v1/u-bneRbizmFMd0VQp5Ze6vesZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/biryani/v1/1EdcPCVxBR2txgjrza6_YPesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/biryani/v1/qN2MTZ0j1sKSCtfXLB2dR_esZW2xOQ-xsNqO47m55DA.ttf", "800" => "http://fonts.gstatic.com/s/biryani/v1/DJyziS7FEy441v22InYdevesZW2xOQ-xsNqO47m55DA.ttf", "900" => "http://fonts.gstatic.com/s/biryani/v1/trcLkrIut0lM_PPSyQfAMPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/biryani/v1/W7bfR8-IY76Xz0QoB8L2xw.ttf")), array("kind" => "webfonts#webfont", "family" => "Bitter", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/bitter/v7/4dUtr_4BvHuoRU35suyOAg.ttf", "regular" => "http://fonts.gstatic.com/s/bitter/v7/w_BNdJvVZDRmqy5aSfB2kQ.ttf", "italic" => "http://fonts.gstatic.com/s/bitter/v7/TC0FZEVzXQIGgzmRfKPZbA.ttf")), array("kind" => "webfonts#webfont", "family" => "Black Ops One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/blackopsone/v7/2XW-DmDsGbDLE372KrMW1Yjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Bokor", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/bokor/v8/uAKdo0A85WW23Gs6mcbw7A.ttf")), array("kind" => "webfonts#webfont", "family" => "Bonbon", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bonbon/v7/IW3u1yzG1knyW5oz0s9_6Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Boogaloo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/boogaloo/v6/4Wu1tvFMoB80fSu8qLgQfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Bowlby One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bowlbyone/v7/eKpHjHfjoxM2bX36YNucefesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bowlby One SC", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bowlbyonesc/v8/8ZkeXftTuzKBtmxOYXoRedDkZCMxWJecxjvKm2f8MJw.ttf")), array("kind" => "webfonts#webfont", "family" => "Brawler", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/brawler/v6/3gfSw6imxQnQxweVITqUrg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bree Serif", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/breeserif/v5/5h9crBVIrvZqgf34FHcnEfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Bubblegum Sans", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bubblegumsans/v5/Y9iTUUNz6lbl6TrvV4iwsytnKWgpfO2iSkLzTz-AABg.ttf")), array("kind" => "webfonts#webfont", "family" => "Bubbler One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/bubblerone/v4/e8S0qevkZAFaBybtt_SU4qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Buda", "category" => "display", "variants" => array("300"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/buda/v6/hLtAmNUmEMJH2yx7NGUjnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Buenard", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/buenard/v7/yUlGE115dGr7O9w9FlP3UvesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/buenard/v7/NSpMPGKAUgrLrlstYVvIXQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Butcherman", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/butcherman/v7/bxiJmD567sPBVpJsT0XR0vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Butterfly Kids", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/butterflykids/v4/J4NTF5M25htqeTffYImtlUZaDk62iwTBnbnvwSjZciA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cabin", "category" => "sans-serif", "variants" => array("regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/cabin/v8/HgsCQ-k3_Z_uQ86aFolNBg.ttf", "600" => "http://fonts.gstatic.com/s/cabin/v8/eUDAvKhBtmTCkeVBsFk34A.ttf", "700" => "http://fonts.gstatic.com/s/cabin/v8/4EKhProuY1hq_WCAomq9Dg.ttf", "regular" => "http://fonts.gstatic.com/s/cabin/v8/XeuAFYo2xAPHxZGBbQtHhA.ttf", "italic" => "http://fonts.gstatic.com/s/cabin/v8/0tJ9k3DI5xC4GBgs1E_Jxw.ttf", "500italic" => "http://fonts.gstatic.com/s/cabin/v8/50sjhrGE0njyO-7mGDhGP_esZW2xOQ-xsNqO47m55DA.ttf", "600italic" => "http://fonts.gstatic.com/s/cabin/v8/sFQpQDBd3G2om0Nl5dD2CvesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/cabin/v8/K83QKi8MOKLEqj6bgZ7LrfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cabin Condensed", "category" => "sans-serif", "variants" => array("regular", "500", "600", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgEARL_-ABKXdjsJSPT0lc2Bk.ttf", "600" => "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgELS5sSASxc8z4EQTQj7DCAI.ttf", "700" => "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgEMAWgzcA047xWLixhLCofl8.ttf", "regular" => "http://fonts.gstatic.com/s/cabincondensed/v7/B0txb0blf2N29WdYPJjMSiQPsWWoiv__AzYJ9Zzn9II.ttf")), array("kind" => "webfonts#webfont", "family" => "Cabin Sketch", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cabinsketch/v8/ki3SSN5HMOO0-IOLOj069ED2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/cabinsketch/v8/d9fijO34zQajqQvl3YHRCS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Caesar Dressing", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/caesardressing/v5/2T_WzBgE2Xz3FsyJMq34T9gR43u4FvCuJwIfF5Zxl6Y.ttf")), array("kind" => "webfonts#webfont", "family" => "Cagliostro", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cagliostro/v5/i85oXbtdSatNEzss99bpj_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Calligraffitti", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/calligraffitti/v7/vLVN2Y-z65rVu1R7lWdvyDXz_orj3gX0_NzfmYulrko.ttf")), array("kind" => "webfonts#webfont", "family" => "Cambay", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cambay/v1/jw9niBxa04eEhnSwTWCEgw.ttf", "regular" => "http://fonts.gstatic.com/s/cambay/v1/etU9Bab4VuhzS-OKsb1VXg.ttf", "italic" => "http://fonts.gstatic.com/s/cambay/v1/ZEz9yNqpEOgejaw1rBhugQ.ttf", "700italic" => "http://fonts.gstatic.com/s/cambay/v1/j-5v_uUr0NXTumWN0siOiaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cambo", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cambo/v5/PnwpRuTdkYCf8qk4ajmNRA.ttf")), array("kind" => "webfonts#webfont", "family" => "Candal", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/candal/v6/x44dDW28zK7GR1gGDBmj9g.ttf")), array("kind" => "webfonts#webfont", "family" => "Cantarell", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cantarell/v6/Yir4ZDsCn4g1kWopdg-ehC3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/cantarell/v6/p5ydP_uWQ5lsFzcP_XVMEw.ttf", "italic" => "http://fonts.gstatic.com/s/cantarell/v6/DTCLtOSqP-7dgM-V_xKUjqCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/cantarell/v6/weehrwMeZBXb0QyrWnRwFXe1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Cantata One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-03-22", "files" => array("regular" => "http://fonts.gstatic.com/s/cantataone/v6/-a5FDvnBqaBMDaGgZYnEfqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cantora One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cantoraone/v5/oI-DS62RbHI8ZREjp73ehqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Capriola", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/capriola/v4/JxXPlkdzWwF9Cwelbvi9jA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cardo", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("greek", "latin", "latin-ext", "greek-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cardo/v8/lQN30weILimrKvp8rZhF1w.ttf", "regular" => "http://fonts.gstatic.com/s/cardo/v8/jbkF2_R0FKUEZTq5dwSknQ.ttf", "italic" => "http://fonts.gstatic.com/s/cardo/v8/pcv4Np9tUkq0YREYUcEEJQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Carme", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carme/v7/08E0NP1eRBEyFRUadmMfgA.ttf")), array("kind" => "webfonts#webfont", "family" => "Carrois Gothic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carroisgothic/v4/GCgb7bssGpwp7V5ynxmWy2x3d0cwUleGuRTmCYfCUaM.ttf")), array("kind" => "webfonts#webfont", "family" => "Carrois Gothic SC", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carroisgothicsc/v4/bVp4nhwFIXU-r3LqUR8DSJTdPW1ioadGi2uRiKgJVCY.ttf")), array("kind" => "webfonts#webfont", "family" => "Carter One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/carterone/v8/5X_LFvdbcB7OBG7hBgZ7fPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Catamaran", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700", "800", "900"), "subsets" => array("latin", "tamil", "latin-ext"), "version" => "v1", "lastModified" => "2015-08-06", "files" => array("100" => "http://fonts.gstatic.com/s/catamaran/v1/ilWHBiy0krUPdlmYxDuqC6CWcynf_cDxXwCLxiixG1c.ttf", "200" => "http://fonts.gstatic.com/s/catamaran/v1/hFc-HKSsGk6M-psujei1MC3USBnSvpkopQaUR-2r7iU.ttf", "300" => "http://fonts.gstatic.com/s/catamaran/v1/Aaag4ccR7Oh_4eai-jbrYC3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/catamaran/v1/83WSX3F86qsvj1Z4EI0tQi3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/catamaran/v1/a9PlHHnuBWiGGk0TwuFKTi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/catamaran/v1/PpgVtUHUdnBZYNpnzGbScy3USBnSvpkopQaUR-2r7iU.ttf", "800" => "http://fonts.gstatic.com/s/catamaran/v1/6VjB_uSfn3DZ93IQv58CmC3USBnSvpkopQaUR-2r7iU.ttf", "900" => "http://fonts.gstatic.com/s/catamaran/v1/5ys9TqpQc9Q6gHqbSox6py3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/catamaran/v1/MdNkM-DU8f6R-25Nxpr_XA.ttf")), array("kind" => "webfonts#webfont", "family" => "Caudex", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "latin-ext", "greek-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/caudex/v6/PetCI4GyQ5Q3LiOzUu_mMg.ttf", "regular" => "http://fonts.gstatic.com/s/caudex/v6/PWEexiHLDmQbn2b1OPZWfg.ttf", "italic" => "http://fonts.gstatic.com/s/caudex/v6/XjMZF6XCisvV3qapD4oJdw.ttf", "700italic" => "http://fonts.gstatic.com/s/caudex/v6/yT8YeHLjaJvQXlUEYOA8gqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Caveat", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v1", "lastModified" => "2015-10-05", "files" => array("700" => "http://fonts.gstatic.com/s/caveat/v1/LkaFtQENGJry2eUMwGRTeA.ttf", "regular" => "http://fonts.gstatic.com/s/caveat/v1/8I23b6N-6rRVbh-C_Vx3yA.ttf")), array("kind" => "webfonts#webfont", "family" => "Caveat Brush", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v1", "lastModified" => "2015-10-05", "files" => array("regular" => "http://fonts.gstatic.com/s/caveatbrush/v1/_d7bgsk3hfC4DXnUEeYKsy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Cedarville Cursive", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cedarvillecursive/v7/cuCe6HrkcqrWTWTUE7dw-41zwq9-z_Lf44CzRAA0d0Y.ttf")), array("kind" => "webfonts#webfont", "family" => "Ceviche One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/cevicheone/v7/WOaXIMBD4VYMy39MsobJhKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Changa One", "category" => "display", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/changaone/v9/dr4qjce4W3kxFrZRkVD87fesZW2xOQ-xsNqO47m55DA.ttf", "italic" => "http://fonts.gstatic.com/s/changaone/v9/wJVQlUs1lAZel-WdTo2U9y3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Chango", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chango/v5/3W3AeMMtRTH08t5qLOjBmg.ttf")), array("kind" => "webfonts#webfont", "family" => "Chau Philomene One", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chauphilomeneone/v4/KKc5egCL-a2fFVoOA2x6tBFi5dxgSTdxqnMJgWkBJcg.ttf", "italic" => "http://fonts.gstatic.com/s/chauphilomeneone/v4/eJj1PY_iN4KiIuyOvtMHJP6uyLkxyiC4WcYA74sfquE.ttf")), array("kind" => "webfonts#webfont", "family" => "Chela One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/chelaone/v5/h5O0dEnpnIq6jQnWxZybrA.ttf")), array("kind" => "webfonts#webfont", "family" => "Chelsea Market", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chelseamarket/v4/qSdzwh2A4BbNemy78sJLfAAI1i8fIftCBXsBF2v9UMI.ttf")), array("kind" => "webfonts#webfont", "family" => "Chenla", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/chenla/v9/aLNpdAUDq2MZbWz2U1a16g.ttf")), array("kind" => "webfonts#webfont", "family" => "Cherry Cream Soda", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cherrycreamsoda/v6/OrD-AUnFcZeeKa6F_c0_WxOiHiuAPYA9ry3O1RG2XIU.ttf")), array("kind" => "webfonts#webfont", "family" => "Cherry Swash", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cherryswash/v4/-CfyMyQqfucZPQNB0nvYyED2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/cherryswash/v4/HqOk7C7J1TZ5i3L-ejF0vi3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Chewy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chewy/v7/hcDN5cvQdIu6Bx4mg_TSyw.ttf")), array("kind" => "webfonts#webfont", "family" => "Chicle", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/chicle/v5/xg4q57Ut9ZmyFwLp51JLgg.ttf")), array("kind" => "webfonts#webfont", "family" => "Chivo", "category" => "sans-serif", "variants" => array("regular", "italic", "900", "900italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/chivo/v7/JAdkiWd46QCW4vOsj3dzTA.ttf", "regular" => "http://fonts.gstatic.com/s/chivo/v7/L88PEuzS9eRfHRZhAPhZyw.ttf", "italic" => "http://fonts.gstatic.com/s/chivo/v7/Oe3-Q-a2kBzPnhHck_baMg.ttf", "900italic" => "http://fonts.gstatic.com/s/chivo/v7/LoszYnE86q2wJEOjCigBQ_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Chonburi", "category" => "display", "variants" => array("regular"), "subsets" => array("thai", "latin", "latin-ext", "vietnamese"), "version" => "v1", "lastModified" => "2015-08-06", "files" => array("regular" => "http://fonts.gstatic.com/s/chonburi/v1/jd9PfbW0x_8Myt_XeUxvSQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Cinzel", "category" => "serif", "variants" => array("regular", "700", "900"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cinzel/v4/nYcFQ6_3pf_6YDrOFjBR8Q.ttf", "900" => "http://fonts.gstatic.com/s/cinzel/v4/FTBj72ozM2cEOSxiVsRb3A.ttf", "regular" => "http://fonts.gstatic.com/s/cinzel/v4/GF7dy_Nc-a6EaHYSyGd-EA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cinzel Decorative", "category" => "display", "variants" => array("regular", "700", "900"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F95-YYVDmZkJErg0zgx9XuZI.ttf", "900" => "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F97Khqbv0zQZa0g-9HOXAalU.ttf", "regular" => "http://fonts.gstatic.com/s/cinzeldecorative/v4/fmgK7oaJJIXAkhd9798yQgT5USbJx2F82lQbogPy2bY.ttf")), array("kind" => "webfonts#webfont", "family" => "Clicker Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/clickerscript/v4/Zupmk8XwADjufGxWB9KThBnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Coda", "category" => "display", "variants" => array("regular", "800"), "subsets" => array("latin", "latin-ext"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("800" => "http://fonts.gstatic.com/s/coda/v11/6ZIw0sbALY0KTMWllZB3hQ.ttf", "regular" => "http://fonts.gstatic.com/s/coda/v11/yHDvulhg-P-p2KRgRrnUYw.ttf")), array("kind" => "webfonts#webfont", "family" => "Coda Caption", "category" => "sans-serif", "variants" => array("800"), "subsets" => array("latin", "latin-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("800" => "http://fonts.gstatic.com/s/codacaption/v9/YDl6urZh-DUFhiMBTgAnz_qsay_1ZmRGmC8pVRdIfAg.ttf")), array("kind" => "webfonts#webfont", "family" => "Codystar", "category" => "display", "variants" => array("300", "regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/codystar/v4/EVaUzfJkcb8Zqx9kzQLXqqCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/codystar/v4/EN-CPFKYowSI7SuR7-0cZA.ttf")), array("kind" => "webfonts#webfont", "family" => "Combo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/combo/v5/Nab98KjR3JZSSPGtzLyXNw.ttf")), array("kind" => "webfonts#webfont", "family" => "Comfortaa", "category" => "display", "variants" => array("300", "regular", "700"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/comfortaa/v7/r_tUZNl0G8xCoOmp_JkSCi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/comfortaa/v7/fND5XPYKrF2tQDwwfWZJIy3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/comfortaa/v7/lZx6C1VViPgSOhCBUP7hXA.ttf")), array("kind" => "webfonts#webfont", "family" => "Coming Soon", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/comingsoon/v6/Yz2z3IAe2HSQAOWsSG8COKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Concert One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/concertone/v7/N5IWCIGhUNdPZn_efTxKN6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Condiment", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/condiment/v4/CstmdiPpgFSV0FUNL5LrJA.ttf")), array("kind" => "webfonts#webfont", "family" => "Content", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/content/v8/7PivP8Zvs2qn6F6aNbSQe_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/content/v8/l8qaLjygvOkDEU2G6-cjfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Contrail One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/contrailone/v6/b41KxjgiyqX-hkggANDU6C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Convergence", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/convergence/v5/eykrGz1NN_YpQmkAZjW-qKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cookie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cookie/v7/HxeUC62y_YdDbiFlze357A.ttf")), array("kind" => "webfonts#webfont", "family" => "Copse", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/copse/v6/wikLrtPGjZDvZ5w2i5HLWg.ttf")), array("kind" => "webfonts#webfont", "family" => "Corben", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/corben/v9/lirJaFSQWdGQuV--fksg5g.ttf", "regular" => "http://fonts.gstatic.com/s/corben/v9/tTysMZkt-j8Y5yhkgsoajQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Courgette", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/courgette/v4/2YO0EYtyE9HUPLZprahpZA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cousine", "category" => "monospace", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "hebrew", "greek-ext", "vietnamese"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cousine/v10/FXEOnNUcCzhdtoBxiq-lovesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/cousine/v10/GYX4bPXObJNJo63QJEUnLg.ttf", "italic" => "http://fonts.gstatic.com/s/cousine/v10/1WtIuajLoo8vjVwsrZ3eOg.ttf", "700italic" => "http://fonts.gstatic.com/s/cousine/v10/y_AZ5Sz-FwL1lux2xLSTZS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Coustard", "category" => "serif", "variants" => array("regular", "900"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/coustard/v6/W02OCWO6OfMUHz6aVyegQ6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/coustard/v6/iO2Rs5PmqAEAXoU3SkMVBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Covered By Your Grace", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/coveredbyyourgrace/v6/6ozZp4BPlrbDRWPe3EBGA6CVUMdvnk-GcAiZQrX9Gek.ttf")), array("kind" => "webfonts#webfont", "family" => "Crafty Girls", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/craftygirls/v5/0Sv8UWFFdhQmesHL32H8oy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Creepster", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/creepster/v5/0vdr5kWJ6aJlOg5JvxnXzQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Crete Round", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/creteround/v5/B8EwN421qqOCCT8vOH4wJ6CWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/creteround/v5/5xAt7XK2vkUdjhGtt98unUeOrDcLawS7-ssYqLr2Xp4.ttf")), array("kind" => "webfonts#webfont", "family" => "Crimson Text", "category" => "serif", "variants" => array("regular", "italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("600" => "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I2v8CylhIUtwUiYO7Z2wXbE.ttf", "700" => "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I0D2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/crimsontext/v6/3IFMwfRa07i-auYR-B-zNS3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/crimsontext/v6/a5QZnvmn5amyNI-t2BMkWPMZXuCXbOrAvx5R0IT5Oyo.ttf", "600italic" => "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDIR-5-urNOGAobhAyctHvW8.ttf", "700italic" => "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDPAs9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Croissant One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/croissantone/v4/mPjsOObnC77fp1cvZlOfIYjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Crushed", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/crushed/v6/aHwSejs3Kt0Lg95u7j32jA.ttf")), array("kind" => "webfonts#webfont", "family" => "Cuprum", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/cuprum/v7/6tl3_FkDeXSD72oEHuJh4w.ttf", "regular" => "http://fonts.gstatic.com/s/cuprum/v7/JgXs0F_UiaEdAS74msmFNg.ttf", "italic" => "http://fonts.gstatic.com/s/cuprum/v7/cLEz0KV6OxInnktSzpk58g.ttf", "700italic" => "http://fonts.gstatic.com/s/cuprum/v7/bnkXaBfoYvaJ75axRPSwVKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Cutive", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cutive/v8/G2bW-ImyOCwKxBkLyz39YQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Cutive Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/cutivemono/v4/ncWQtFVKcSs8OW798v30k6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Damion", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/damion/v6/13XtECwKxhD_VrOqXL4SiA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dancing Script", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/dancingscript/v6/KGBfwabt0ZRLA5W1ywjowb_dAmXiKjTPGCuO6G2MbfA.ttf", "regular" => "http://fonts.gstatic.com/s/dancingscript/v6/DK0eTGXiZjN6yA8zAEyM2RnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Dangrek", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/dangrek/v8/LOaFhBT-EHNxZjV8DAW_ew.ttf")), array("kind" => "webfonts#webfont", "family" => "Dawning of a New Day", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dawningofanewday/v7/JiDsRhiKZt8uz3NJ5xA06gXLnohmOYWQZqo_sW8GLTk.ttf")), array("kind" => "webfonts#webfont", "family" => "Days One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/daysone/v6/kzwZjNhc1iabMsrc_hKBIA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dekko", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/dekko/v2/AKtgABKC1rUxgIgS-bpojw.ttf")), array("kind" => "webfonts#webfont", "family" => "Delius", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/delius/v6/TQA163qafki2-gV-B6F_ag.ttf")), array("kind" => "webfonts#webfont", "family" => "Delius Swash Caps", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/deliusswashcaps/v8/uXyrEUnoWApxIOICunRq7yIrxb5zDVgU2N3VzXm7zq4.ttf")), array("kind" => "webfonts#webfont", "family" => "Delius Unicase", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/deliusunicase/v9/7FTMTITcb4dxUp99FAdTqNy5weKXdcrx-wE0cgECMq8.ttf", "regular" => "http://fonts.gstatic.com/s/deliusunicase/v9/b2sKujV3Q48RV2PQ0k1vqu6rPKfVZo7L2bERcf0BDns.ttf")), array("kind" => "webfonts#webfont", "family" => "Della Respira", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dellarespira/v4/F4E6Lo_IZ6L9AJCcbqtDVeDcg5akpSnIcsPhLOFv7l8.ttf")), array("kind" => "webfonts#webfont", "family" => "Denk One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/denkone/v4/TdXOeA4eA_hEx4W8Sh9wPw.ttf")), array("kind" => "webfonts#webfont", "family" => "Devonshire", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/devonshire/v5/I3ct_2t12SYizP8ZC-KFi_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dhurjati", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dhurjati/v4/uV6jO5e2iFMbGB0z79Cy5g.ttf")), array("kind" => "webfonts#webfont", "family" => "Didact Gothic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/didactgothic/v7/v8_72sD3DYMKyM0dn3LtWotBLojGU5Qdl8-5NL4v70w.ttf")), array("kind" => "webfonts#webfont", "family" => "Diplomata", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-03-23", "files" => array("regular" => "http://fonts.gstatic.com/s/diplomata/v8/u-ByBiKgN6rTMA36H3kcKg.ttf")), array("kind" => "webfonts#webfont", "family" => "Diplomata SC", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/diplomatasc/v5/JdVwAwfE1a_pahXjk5qpNi3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Domine", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/domine/v4/phBcG1ZbQFxUIt18hPVxnw.ttf", "regular" => "http://fonts.gstatic.com/s/domine/v4/wfVIgamVFjMNQAEWurCiHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Donegal One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/donegalone/v4/6kN4-fDxz7T9s5U61HwfF6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Doppio One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/doppioone/v4/WHZ3HJQotpk_4aSMNBo_t_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Dorsa", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dorsa/v7/wCc3cUe6XrmG2LQE6GlIrw.ttf")), array("kind" => "webfonts#webfont", "family" => "Dosis", "category" => "sans-serif", "variants" => array("200", "300", "regular", "500", "600", "700", "800"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/dosis/v4/ztftab0r6hcd7AeurUGrSQ.ttf", "300" => "http://fonts.gstatic.com/s/dosis/v4/awIB6L0h5mb0plIKorXmuA.ttf", "500" => "http://fonts.gstatic.com/s/dosis/v4/ruEXDOFMxDPGnjCBKRqdAQ.ttf", "600" => "http://fonts.gstatic.com/s/dosis/v4/KNAswRNwm3tfONddYyidxg.ttf", "700" => "http://fonts.gstatic.com/s/dosis/v4/AEEAj0ONidK8NQQMBBlSig.ttf", "800" => "http://fonts.gstatic.com/s/dosis/v4/nlrKd8E69vvUU39XGsvR7Q.ttf", "regular" => "http://fonts.gstatic.com/s/dosis/v4/rJRlixu-w0JZ1MyhJpao_Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Dr Sugiyama", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/drsugiyama/v5/S5Yx3MIckgoyHhhS4C9Tv6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Droid Sans", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/droidsans/v6/EFpQQyG9GqCrobXxL-KRMQJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/droidsans/v6/rS9BT6-asrfjpkcV3DXf__esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Droid Sans Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/droidsansmono/v7/ns-m2xQYezAtqh7ai59hJcwD6PD0c3_abh9zHKQtbGU.ttf")), array("kind" => "webfonts#webfont", "family" => "Droid Serif", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/droidserif/v6/QQt14e8dY39u-eYBZmppwXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/droidserif/v6/DgAtPy6rIVa2Zx3Xh9KaNaCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/droidserif/v6/cj2hUnSRBhwmSPr9kS5890eOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/droidserif/v6/c92rD_x0V1LslSFt3-QEps_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Duru Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/durusans/v9/xn7iYH8xwmSyTvEV_HOxTw.ttf")), array("kind" => "webfonts#webfont", "family" => "Dynalight", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/dynalight/v5/-CWsIe8OUDWTIHjSAh41kA.ttf")), array("kind" => "webfonts#webfont", "family" => "EB Garamond", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic", "vietnamese"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ebgaramond/v7/CDR0kuiFK7I1OZ2hSdR7G6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Eagle Lake", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/eaglelake/v4/ZKlYin7caemhx9eSg6RvPfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Eater", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/eater/v5/gm6f3OmYEdbs3lPQtUfBkA.ttf")), array("kind" => "webfonts#webfont", "family" => "Economica", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/economica/v4/UK4l2VEpwjv3gdcwbwXE9C3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/economica/v4/G4rJRujzZbq9Nxngu9l3hg.ttf", "italic" => "http://fonts.gstatic.com/s/economica/v4/p5O9AVeUqx_n35xQRinNYaCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/economica/v4/ac5dlUsedQ03RqGOeay-3Xe1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Eczar", "category" => "serif", "variants" => array("regular", "500", "600", "700", "800"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-24", "files" => array("500" => "http://fonts.gstatic.com/s/eczar/v4/Ooe4KaPp2594tF8TbMfdlQ.ttf", "600" => "http://fonts.gstatic.com/s/eczar/v4/IjQsWW0bmgkZ6lnN72cnTQ.ttf", "700" => "http://fonts.gstatic.com/s/eczar/v4/ELC8RVXfBMb3VuuHtMwBOA.ttf", "800" => "http://fonts.gstatic.com/s/eczar/v4/9Uyt6nTZLx_Qj5_WRah-iQ.ttf", "regular" => "http://fonts.gstatic.com/s/eczar/v4/uKZcAQ5JBBs1UbeXFRbBRg.ttf")), array("kind" => "webfonts#webfont", "family" => "Ek Mukta", "category" => "sans-serif", "variants" => array("200", "300", "regular", "500", "600", "700", "800"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/ekmukta/v7/crtkNHh5JcM3VJKG0E-B36CWcynf_cDxXwCLxiixG1c.ttf", "300" => "http://fonts.gstatic.com/s/ekmukta/v7/mpaAv7CIyk0VnZlqSneVxKCWcynf_cDxXwCLxiixG1c.ttf", "500" => "http://fonts.gstatic.com/s/ekmukta/v7/PZ1y2MstFczWvBlFSgzMyaCWcynf_cDxXwCLxiixG1c.ttf", "600" => "http://fonts.gstatic.com/s/ekmukta/v7/Z5Mfzeu6M3emakcJO2QeTqCWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/ekmukta/v7/4ugcOGR28Jn-oBIn0-qLYaCWcynf_cDxXwCLxiixG1c.ttf", "800" => "http://fonts.gstatic.com/s/ekmukta/v7/O68TH5OjEhVmn9_gIrcfS6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/ekmukta/v7/aFcjXdC5jyJ1p8w54wIIrg.ttf")), array("kind" => "webfonts#webfont", "family" => "Electrolize", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/electrolize/v5/yFVu5iokC-nt4B1Cyfxb9aCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Elsie", "category" => "display", "variants" => array("regular", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/elsie/v5/1t-9f0N2NFYwAgN7oaISqg.ttf", "regular" => "http://fonts.gstatic.com/s/elsie/v5/gwspePauE45BJu6Ok1QrfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Elsie Swash Caps", "category" => "display", "variants" => array("regular", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/elsieswashcaps/v4/iZnus9qif0tR5pGaDv5zdKoKBWBozTtxi30NfZDOXXU.ttf", "regular" => "http://fonts.gstatic.com/s/elsieswashcaps/v4/9L3hIJMPCf6sxCltnxd6X2YeFSdnSpRYv5h9gpdlD1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Emblema One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/emblemaone/v5/7IlBUjBWPIiw7cr_O2IfSaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Emilys Candy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/emilyscandy/v4/PofLVm6v1SwZGOzC8s-I3S3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Engagement", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/engagement/v5/4Uz0Jii7oVPcaFRYmbpU6vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Englebert", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/englebert/v4/sll38iOvOuarDTYBchlP3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Enriqueta", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/enriqueta/v5/I27Pb-wEGH2ajLYP0QrtSC3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/enriqueta/v5/_p90TrIwR1SC-vDKtmrv6A.ttf")), array("kind" => "webfonts#webfont", "family" => "Erica One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/ericaone/v7/cIBnH2VAqQMIGYAcE4ufvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Esteban", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/esteban/v4/ESyhLgqDDyK5JcFPp2svDw.ttf")), array("kind" => "webfonts#webfont", "family" => "Euphoria Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/euphoriascript/v4/c4XB4Iijj_NvSsCF4I0O2MxLhO8OSNnfAp53LK1_iRs.ttf")), array("kind" => "webfonts#webfont", "family" => "Ewert", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ewert/v4/Em8hrzuzSbfHcTVqMjbAQg.ttf")), array("kind" => "webfonts#webfont", "family" => "Exo", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/exo/v4/RI7A9uwjRmPbVp0n8e-Jvg.ttf", "200" => "http://fonts.gstatic.com/s/exo/v4/F8OfC_swrRRxpFt-tlXZQg.ttf", "300" => "http://fonts.gstatic.com/s/exo/v4/SBrN7TKUqgGUvfxqHqsnNw.ttf", "500" => "http://fonts.gstatic.com/s/exo/v4/jCg6DmGGXt_OVyp5ofQHPw.ttf", "600" => "http://fonts.gstatic.com/s/exo/v4/q_SG5kXUmOcIvFpgtdZnlw.ttf", "700" => "http://fonts.gstatic.com/s/exo/v4/3_jwsL4v9uHjl5Q37G57mw.ttf", "800" => "http://fonts.gstatic.com/s/exo/v4/yLPuxBuV0lzqibRJyooOJg.ttf", "900" => "http://fonts.gstatic.com/s/exo/v4/97d0nd6Yv4-SA_X92xAuZA.ttf", "100italic" => "http://fonts.gstatic.com/s/exo/v4/qtGyZZlWb2EEvby3ZPosxw.ttf", "200italic" => "http://fonts.gstatic.com/s/exo/v4/fr4HBfXHYiIngW2_bhlgRw.ttf", "300italic" => "http://fonts.gstatic.com/s/exo/v4/3gmiLjBegIfcDLISjTGA1g.ttf", "regular" => "http://fonts.gstatic.com/s/exo/v4/eUEzTFueNXRVhbt4PEB8kQ.ttf", "italic" => "http://fonts.gstatic.com/s/exo/v4/cfgolWisMSURhpQeVHl_NA.ttf", "500italic" => "http://fonts.gstatic.com/s/exo/v4/lo5eTdCNJZQVN08p8RnzAQ.ttf", "600italic" => "http://fonts.gstatic.com/s/exo/v4/0cExa8K_pxS2lTuMr68XUA.ttf", "700italic" => "http://fonts.gstatic.com/s/exo/v4/0me55yJIxd5vyQ9bF7SsiA.ttf", "800italic" => "http://fonts.gstatic.com/s/exo/v4/n3LejeKVj_8gtZq5fIgNYw.ttf", "900italic" => "http://fonts.gstatic.com/s/exo/v4/JHTkQVhzyLtkY13Ye95TJQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Exo 2", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/exo2/v3/oVOtQy53isv97g4UhBUDqg.ttf", "200" => "http://fonts.gstatic.com/s/exo2/v3/qa-Ci2pBwJdCxciE1ErifQ.ttf", "300" => "http://fonts.gstatic.com/s/exo2/v3/nLUBdz_lHHoVIPor05Byhw.ttf", "500" => "http://fonts.gstatic.com/s/exo2/v3/oM0rzUuPqVJpW-VEIpuW5w.ttf", "600" => "http://fonts.gstatic.com/s/exo2/v3/YnSn3HsyvyI1feGSdRMYqA.ttf", "700" => "http://fonts.gstatic.com/s/exo2/v3/2DiK4XkdTckfTk6we73-bQ.ttf", "800" => "http://fonts.gstatic.com/s/exo2/v3/IVYl_7dJruOg8zKRpC8Hrw.ttf", "900" => "http://fonts.gstatic.com/s/exo2/v3/e8csG8Wnu87AF6uCndkFRQ.ttf", "100italic" => "http://fonts.gstatic.com/s/exo2/v3/LNYVgsJcaCxoKFHmd4AZcg.ttf", "200italic" => "http://fonts.gstatic.com/s/exo2/v3/DCrVxDVvS69n50O-5erZVvesZW2xOQ-xsNqO47m55DA.ttf", "300italic" => "http://fonts.gstatic.com/s/exo2/v3/iSy9VTeUTiqiurQg2ywtu_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/exo2/v3/Pf_kZuIH5c5WKVkQUaeSWQ.ttf", "italic" => "http://fonts.gstatic.com/s/exo2/v3/xxA5ZscX9sTU6U0lZJUlYA.ttf", "500italic" => "http://fonts.gstatic.com/s/exo2/v3/amzRVCB-gipwdihZZ2LtT_esZW2xOQ-xsNqO47m55DA.ttf", "600italic" => "http://fonts.gstatic.com/s/exo2/v3/Vmo58BiptGwfVFb0teU5gPesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/exo2/v3/Sdo-zW-4_--pDkTg6bYrY_esZW2xOQ-xsNqO47m55DA.ttf", "800italic" => "http://fonts.gstatic.com/s/exo2/v3/p0TA6KeOz1o4rySEbvUxI_esZW2xOQ-xsNqO47m55DA.ttf", "900italic" => "http://fonts.gstatic.com/s/exo2/v3/KPhsGCoT2-7Uj6pMlRscH_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Expletus Sans", "category" => "display", "variants" => array("regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwAqQmZ7VjhwksfpNVG0pqGc.ttf", "600" => "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwCvj1tU7IJMS3CS9kCx2B3U.ttf", "700" => "http://fonts.gstatic.com/s/expletussans/v9/cl6rhMY77Ilk8lB_uYRRwFCbmAUID8LN-q3pJpOk3Ys.ttf", "regular" => "http://fonts.gstatic.com/s/expletussans/v9/gegTSDBDs5le3g6uxU1ZsX8f0n03UdmQgF_CLvNR2vg.ttf", "italic" => "http://fonts.gstatic.com/s/expletussans/v9/Y-erXmY0b6DU_i2Qu0hTJj4G9C9ttb0Oz5Cvf0qOitE.ttf", "500italic" => "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW87DCVO6wo6i5LKIyZDzK40.ttf", "600italic" => "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW8yKH23ZS6zCKOFHG0e_4JE.ttf", "700italic" => "http://fonts.gstatic.com/s/expletussans/v9/sRBNtc46w65uJE451UYmW5F66r9C4AnxxlBlGd7xY4g.ttf")), array("kind" => "webfonts#webfont", "family" => "Fanwood Text", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fanwoodtext/v6/hDNDHUlsSb8bgnEmDp4T_i3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/fanwoodtext/v6/0J3SBbkMZqBV-3iGxs5E9_MZXuCXbOrAvx5R0IT5Oyo.ttf")), array("kind" => "webfonts#webfont", "family" => "Fascinate", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fascinate/v5/ZE0637WWkBPKt1AmFaqD3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Fascinate Inline", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fascinateinline/v6/lRguYfMfWArflkm5aOQ5QJmp8DTZ6iHear7UV05iykg.ttf")), array("kind" => "webfonts#webfont", "family" => "Faster One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fasterone/v6/YxTOW2sf56uxD1T7byP5K_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Fasthand", "category" => "serif", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v7", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/fasthand/v7/6XAagHH_KmpZL67wTvsETQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Fauna One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/faunaone/v4/8kL-wpAPofcAMELI_5NRnQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Federant", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/federant/v8/tddZFSiGvxICNOGra0i5aA.ttf")), array("kind" => "webfonts#webfont", "family" => "Federo", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/federo/v8/JPhe1S2tujeyaR79gXBLeQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Felipa", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/felipa/v4/SeyfyFZY7abAQXGrOIYnYg.ttf")), array("kind" => "webfonts#webfont", "family" => "Fenix", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fenix/v4/Ak8wR3VSlAN7VN_eMeJj7Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Finger Paint", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fingerpaint/v4/m_ZRbiY-aPb13R3DWPBGXy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fira Mono", "category" => "monospace", "variants" => array("regular", "700"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v3", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/firamono/v3/l24Wph3FsyKAbJ8dfExTZy3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/firamono/v3/WQOm1D4RO-yvA9q9trJc8g.ttf")), array("kind" => "webfonts#webfont", "family" => "Fira Sans", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/firasans/v5/VTBnrK42EiOBncVyQXZ7jy3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/firasans/v5/zM2u8V3CuPVwAAXFQcDi4C3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/firasans/v5/DugPdSljmOTocZOR2CItOi3USBnSvpkopQaUR-2r7iU.ttf", "300italic" => "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTS9-WlPSxbfiI49GsXo3q0g.ttf", "regular" => "http://fonts.gstatic.com/s/firasans/v5/nsT0isDy56OkSX99sFQbXw.ttf", "italic" => "http://fonts.gstatic.com/s/firasans/v5/cPT_2ddmoxsUuMtQqa8zGqCWcynf_cDxXwCLxiixG1c.ttf", "500italic" => "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTcCNfqCYlB_eIx7H1TVXe60.ttf", "700italic" => "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTXe1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fjalla One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fjallaone/v4/3b7vWCfOZsU53vMa8LWsf_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Fjord One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fjordone/v5/R_YHK8au2uFPw5tNu5N7zw.ttf")), array("kind" => "webfonts#webfont", "family" => "Flamenco", "category" => "display", "variants" => array("300", "regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/flamenco/v6/x9iI5CogvuZVCGoRHwXuo6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/flamenco/v6/HC0ugfLLgt26I5_BWD1PZA.ttf")), array("kind" => "webfonts#webfont", "family" => "Flavors", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/flavors/v5/SPJi5QclATvon8ExcKGRvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Fondamento", "category" => "handwriting", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fondamento/v5/6LWXcjT1B7bnWluAOSNfMPesZW2xOQ-xsNqO47m55DA.ttf", "italic" => "http://fonts.gstatic.com/s/fondamento/v5/y6TmwhSbZ8rYq7OTFyo7OS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fontdiner Swanky", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fontdinerswanky/v6/8_GxIO5ixMtn5P6COsF3TlBjMPLzPAFJwRBn-s1U7kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Forum", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/forum/v7/MZUpsq1VfLrqv8eSDcbrrQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Francois One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/francoisone/v9/bYbkq2nU2TSx4SwFbz5sCC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Freckle Face", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/freckleface/v4/7-B8j9BPJgazdHIGqPNv8y3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Fredericka the Great", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/frederickathegreat/v5/7Es8Lxoku-e5eOZWpxw18nrnet6gXN1McwdQxS1dVrI.ttf")), array("kind" => "webfonts#webfont", "family" => "Fredoka One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fredokaone/v4/QKfwXi-z-KtJAlnO2ethYqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Freehand", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/freehand/v8/uEBQxvA0lnn_BrD6krlxMw.ttf")), array("kind" => "webfonts#webfont", "family" => "Fresca", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fresca/v5/2q7Qm9sCo1tWvVgSDVWNIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Frijole", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/frijole/v5/L2MfZse-2gCascuD-nLhWg.ttf")), array("kind" => "webfonts#webfont", "family" => "Fruktur", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fruktur/v8/PnQvfEi1LssAvhJsCwH__w.ttf")), array("kind" => "webfonts#webfont", "family" => "Fugaz One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/fugazone/v6/5tteVDCwxsr8-5RuSiRWOw.ttf")), array("kind" => "webfonts#webfont", "family" => "GFS Didot", "category" => "serif", "variants" => array("regular"), "subsets" => array("greek"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gfsdidot/v6/jQKxZy2RU-h9tkPZcRVluA.ttf")), array("kind" => "webfonts#webfont", "family" => "GFS Neohellenic", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/7HwjPQa7qNiOsnUce2h4448_BwCLZY3eDSV6kppAwI8.ttf", "regular" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/B4xRqbn-tANVqVgamMsSDiayCZa0z7CpFzlkqoCHztc.ttf", "italic" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/KnaWrO4awITAqigQIIYXKkCTdomiyJpIzPbEbIES3rU.ttf", "700italic" => "http://fonts.gstatic.com/s/gfsneohellenic/v7/FwWjoX6XqT-szJFyqsu_GYFF0fM4h-krcpQk7emtCpE.ttf")), array("kind" => "webfonts#webfont", "family" => "Gabriela", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gabriela/v4/B-2ZfbAO3HDrxqV6lR5tdA.ttf")), array("kind" => "webfonts#webfont", "family" => "Gafata", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gafata/v5/aTFqlki_3Dc3geo-FxHTvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Galdeano", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/galdeano/v6/ZKFMQI6HxEG1jOT0UGSZUg.ttf")), array("kind" => "webfonts#webfont", "family" => "Galindo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/galindo/v4/2lafAS_ZEfB33OJryhXDUg.ttf")), array("kind" => "webfonts#webfont", "family" => "Gentium Basic", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gentiumbasic/v8/2qL6yulgGf0wwgOp-UqGyLNuTeOOLg3nUymsEEGmdO0.ttf", "regular" => "http://fonts.gstatic.com/s/gentiumbasic/v8/KCktj43blvLkhOTolFn-MYtBLojGU5Qdl8-5NL4v70w.ttf", "italic" => "http://fonts.gstatic.com/s/gentiumbasic/v8/qoFz4NSMaYC2UmsMAG3lyTj3mvXnCeAk09uTtmkJGRc.ttf", "700italic" => "http://fonts.gstatic.com/s/gentiumbasic/v8/8N9-c_aQDJ8LbI1NGVMrwtswO1vWwP9exiF8s0wqW10.ttf")), array("kind" => "webfonts#webfont", "family" => "Gentium Book Basic", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/T2vUYmWzlqUtgLYdlemGnaWESMHIjnSjm9UUxYtEOko.ttf", "regular" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/IRFxB2matTxrjZt6a3FUnrWDjKAyldGEr6eEi2MBNeY.ttf", "italic" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/qHqW2lwKO8-uTfIkh8FsUfXfjMwrYnmPVsQth2IcAPY.ttf", "700italic" => "http://fonts.gstatic.com/s/gentiumbookbasic/v7/632u7TMIoFDWQYUaHFUp5PA2A9KyRZEkn4TZVuhsWRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Geo", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/geo/v8/mJuJYk5Pww84B4uHAQ1XaA.ttf", "italic" => "http://fonts.gstatic.com/s/geo/v8/8_r1wToF7nPdDuX1qxel6Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Geostar", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/geostar/v6/A8WQbhQbpYx3GWWaShJ9GA.ttf")), array("kind" => "webfonts#webfont", "family" => "Geostar Fill", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/geostarfill/v6/Y5ovXPPOHYTfQzK2aM-hui3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Germania One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/germaniaone/v4/3_6AyUql_-FbDi1e68jHdC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Gidugu", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gidugu/v3/Ey6Eq3hrT6MM58iFItFcgw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gilda Display", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gildadisplay/v4/8yAVUZLLZ3wb7dSsjix0CADHmap7fRWINAsw8-RaxNg.ttf")), array("kind" => "webfonts#webfont", "family" => "Give You Glory", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/giveyouglory/v6/DFEWZFgGmfseyIdGRJAxuBwwkpSPZdvjnMtysdqprfI.ttf")), array("kind" => "webfonts#webfont", "family" => "Glass Antiqua", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/glassantiqua/v4/0yLrXKplgdUDIMz5TnCHNODcg5akpSnIcsPhLOFv7l8.ttf")), array("kind" => "webfonts#webfont", "family" => "Glegoo", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/glegoo/v5/TlLolbauH0-0Aiz1LUH5og.ttf", "regular" => "http://fonts.gstatic.com/s/glegoo/v5/2tf-h3n2A_SNYXEO0C8bKw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gloria Hallelujah", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gloriahallelujah/v8/CA1k7SlXcY5kvI81M_R28Q3RdPdyebSUyJECJouPsvA.ttf")), array("kind" => "webfonts#webfont", "family" => "Goblin One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/goblinone/v6/331XtzoXgpVEvNTVcBJ_C_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Gochi Hand", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gochihand/v7/KT1-WxgHsittJ34_20IfAPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Gorditas", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gorditas/v4/6-XCeknmxaon8AUqVkMnHaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/gorditas/v4/uMgZhXUyH6qNGF3QsjQT5Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Goudy Bookletter 1911", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/goudybookletter1911/v6/l5lwlGTN3pEY5Bf-rQEuIIjNDsyURsIKu4GSfvSE4mA.ttf")), array("kind" => "webfonts#webfont", "family" => "Graduate", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/graduate/v4/JpAmYLHqcIh9_Ff35HHwiA.ttf")), array("kind" => "webfonts#webfont", "family" => "Grand Hotel", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/grandhotel/v4/C_A8HiFZjXPpnMt38XnK7qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Gravitas One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gravitasone/v6/nBHdBv6zVNU8MtP6w9FwTS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Great Vibes", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/greatvibes/v4/4Mi5RG_9LjQYrTU55GN_L6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Griffy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/griffy/v4/vWkyYGBSyE5xjnShNtJtzw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gruppo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gruppo/v7/pS_JM0cK_piBZve-lfUq9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Gudea", "category" => "sans-serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/gudea/v4/lsip4aiWhJ9bx172Y9FN_w.ttf", "regular" => "http://fonts.gstatic.com/s/gudea/v4/S-4QqBlkMPiiA3jNeCR5yw.ttf", "italic" => "http://fonts.gstatic.com/s/gudea/v4/7mNgsGw_vfS-uUgRVXNDSw.ttf")), array("kind" => "webfonts#webfont", "family" => "Gurajada", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/gurajada/v4/6Adfkl4PCRyq6XTENACEyA.ttf")), array("kind" => "webfonts#webfont", "family" => "Habibi", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/habibi/v5/YYyqXF6pWpL7kmKgS_2iUA.ttf")), array("kind" => "webfonts#webfont", "family" => "Halant", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2016-03-14", "files" => array("300" => "http://fonts.gstatic.com/s/halant/v2/dM3ItAOWNNod_Cf3MnLlEg.ttf", "500" => "http://fonts.gstatic.com/s/halant/v2/tlsNj3K-hJKtiirTDtUbkQ.ttf", "600" => "http://fonts.gstatic.com/s/halant/v2/zNR2WvI_V8o652vIZp3X4Q.ttf", "700" => "http://fonts.gstatic.com/s/halant/v2/D9FN7OH89AuCmZDLHbPQfA.ttf", "regular" => "http://fonts.gstatic.com/s/halant/v2/rEs7Jk3SVyt3cTx6DoTu1w.ttf")), array("kind" => "webfonts#webfont", "family" => "Hammersmith One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hammersmithone/v7/FWNn6ITYqL6or7ZTmBxRhjjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Hanalei", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hanalei/v6/Sx8vVMBnXSQyK6Cn0CBJ3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Hanalei Fill", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hanaleifill/v5/5uPeWLnaDdtm4UBG26Ds6C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Handlee", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/handlee/v5/6OfkXkyC0E5NZN80ED8u3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Hanuman", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/hanuman/v9/lzzXZ2l84x88giDrbfq76vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/hanuman/v9/hRhwOGGmElJSl6KSPvEnOQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Happy Monkey", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/happymonkey/v5/c2o0ps8nkBmaOYctqBq1rS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Headland One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/headlandone/v4/iGmBeOvQGfq9DSbjJ8jDVy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Henny Penny", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/hennypenny/v4/XRgo3ogXyi3tpsFfjImRF6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Herr Von Muellerhoff", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/herrvonmuellerhoff/v6/mmy24EUmk4tjm4gAEjUd7NLGIYrUsBdh-JWHYgiDiMU.ttf")), array("kind" => "webfonts#webfont", "family" => "Hind", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/hind/v5/qa346Adgv9kPDXoD1my4kA.ttf", "500" => "http://fonts.gstatic.com/s/hind/v5/2cs8RCVcYtiv4iNDH1UsQQ.ttf", "600" => "http://fonts.gstatic.com/s/hind/v5/TUKUmFMXSoxloBP1ni08oA.ttf", "700" => "http://fonts.gstatic.com/s/hind/v5/cXJJavLdUbCfjxlsA6DqTw.ttf", "regular" => "http://fonts.gstatic.com/s/hind/v5/mktFHh5Z5P9YjGKSslSUtA.ttf")), array("kind" => "webfonts#webfont", "family" => "Hind Siliguri", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("bengali", "latin", "latin-ext"), "version" => "v1", "lastModified" => "2015-09-09", "files" => array("300" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJnzoJ52uD-1fmXmi8u0n_zsc.ttf", "500" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJn__2zpxNHQ3utWt_82o9dAo.ttf", "600" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJn-x91FDzFvnud68bXrNkpDA.ttf", "700" => "http://fonts.gstatic.com/s/hindsiliguri/v1/fBpmjMpv5Rh6S25yVfWJn6iiXuG_rGcOxkuidirlnJE.ttf", "regular" => "http://fonts.gstatic.com/s/hindsiliguri/v1/f2eEi2pbIa8eBfNwpUl0Am_MnNA9OgK8I1F23mNWOpE.ttf")), array("kind" => "webfonts#webfont", "family" => "Hind Vadodara", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("gujarati", "latin", "latin-ext"), "version" => "v1", "lastModified" => "2015-09-09", "files" => array("300" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTbDwfZ__Dotj_J8NiWv76DQ.ttf", "500" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTZzEKvFIU9WyojfbAkhDb6c.ttf", "600" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTfgXs2VXrZsRiQ1c96pXZKI.ttf", "700" => "http://fonts.gstatic.com/s/hindvadodara/v1/KrZ6f_YevRawHvh0qDBkTYGjoH95IEFGA7BjhXnx_eg.ttf", "regular" => "http://fonts.gstatic.com/s/hindvadodara/v1/9c6KKeibr6NtFqknnNxZB-Dcg5akpSnIcsPhLOFv7l8.ttf")), array("kind" => "webfonts#webfont", "family" => "Holtwood One SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/holtwoodonesc/v7/sToOq3cIxbfnhbEkgYNuBbAgSRh1LpJXlLfl8IbsmHg.ttf")), array("kind" => "webfonts#webfont", "family" => "Homemade Apple", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/homemadeapple/v6/yg3UMEsefgZ8IHz_ryz86BiPOmFWYV1WlrJkRafc4c0.ttf")), array("kind" => "webfonts#webfont", "family" => "Homenaje", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/homenaje/v5/v0YBU0iBRrGdVjDNQILxtA.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell DW Pica", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldwpica/v6/W81bfaWiUicLSPbJhW-ATsA5qm663gJGVdtpamafG5A.ttf", "italic" => "http://fonts.gstatic.com/s/imfelldwpica/v6/alQJ8SK5aSOZVaelYoyT4PL2asmh5DlYQYCosKo6yQs.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell DW Pica SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldwpicasc/v6/xBKKJV4z2KsrtQnmjGO17JZ9RBdEL0H9o5qzT1Rtof4.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Double Pica", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldoublepica/v6/yN1wY_01BkQnO0LYAhXdUol14jEdVOhEmvtCMCVwYak.ttf", "italic" => "http://fonts.gstatic.com/s/imfelldoublepica/v6/64odUh2hAw8D9dkFKTlWYq0AWwkgdQfsRHec8TYi4mI.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Double Pica SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfelldoublepicasc/v6/jkrUtrLFpMw4ZazhfkKsGwc4LoC4OJUqLw9omnT3VOU.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell English", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellenglish/v6/xwIisCqGFi8pff-oa9uSVHGNmx1fDm-u2eBJHQkdrmk.ttf", "italic" => "http://fonts.gstatic.com/s/imfellenglish/v6/Z3cnIAI_L3XTRfz4JuZKbuewladMPCWTthtMv9cPS-c.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell English SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellenglishsc/v6/h3Tn6yWfw4b5qaLD1RWvz5ATixNthKRRR1XVH3rJNiw.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell French Canon", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/iKB0WL1BagSpNPz3NLMdsJ3V2FNpBrlLSvqUnERhBP8.ttf", "italic" => "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/owCuNQkLLFW7TBBPJbMnhRa-QL94KdW80H29tcyld2A.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell French Canon SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellfrenchcanonsc/v6/kA3bS19-tQbeT_iG32EZmaiyyzHwYrAbmNulTz423iM.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Great Primer", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellgreatprimer/v6/AL8ALGNthei20f9Cu3e93rgeX3ROgtTz44CitKAxzKI.ttf", "italic" => "http://fonts.gstatic.com/s/imfellgreatprimer/v6/1a-artkXMVg682r7TTxVY1_YG2SFv8Ma7CxRl1S3o7g.ttf")), array("kind" => "webfonts#webfont", "family" => "IM Fell Great Primer SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imfellgreatprimersc/v6/A313vRj97hMMGFjt6rgSJtRg-ciw1Y27JeXb2Zv4lZQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Iceberg", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/iceberg/v4/p2XVm4M-N0AOEEOymFKC5w.ttf")), array("kind" => "webfonts#webfont", "family" => "Iceland", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/iceland/v5/kq3uTMGgvzWGNi39B_WxGA.ttf")), array("kind" => "webfonts#webfont", "family" => "Imprima", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/imprima/v4/eRjquWLjwLGnTEhLH7u3kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Inconsolata", "category" => "monospace", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v12", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/inconsolata/v12/AIed271kqQlcIRSOnQH0yXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/inconsolata/v12/7bMKuoy6Nh0ft0SHnIGMuaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Inder", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/inder/v5/C38TwecLTfKxIHDc_Adcrw.ttf")), array("kind" => "webfonts#webfont", "family" => "Indie Flower", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/indieflower/v8/10JVD_humAd5zP2yrFqw6i3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Inika", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/inika/v4/bl3ZoTyrWsFun2zYbsgJrA.ttf", "regular" => "http://fonts.gstatic.com/s/inika/v4/eZCrULQGaIxkrRoGz_DjhQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Inknut Antiqua", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700", "800", "900"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIg6hmPNSXwHGnJQCeQHKUMo.ttf", "500" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIiYCDvi1XFzRnTV7qUFsNgk.ttf", "600" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIjLEgY6PI0GrY6L00mykcEQ.ttf", "700" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIlRhfXn9P4_QueZ7VkUHUNc.ttf", "800" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVInARjXVu2t2krcNTHiCb1qY.ttf", "900" => "http://fonts.gstatic.com/s/inknutantiqua/v1/CagoW52rBcslcXzHh6tVIrTsNy1JrFNT1qKy8j7W3CU.ttf", "regular" => "http://fonts.gstatic.com/s/inknutantiqua/v1/VlmmTfOrxr3HfcnhMueX9arFJ4O13IHVxZbM6yoslpo.ttf")), array("kind" => "webfonts#webfont", "family" => "Irish Grover", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/irishgrover/v6/kUp7uUPooL-KsLGzeVJbBC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Istok Web", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/istokweb/v10/2koEo4AKFSvK4B52O_Mwai3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/istokweb/v10/RYLSjEXQ0nNtLLc4n7--dQ.ttf", "italic" => "http://fonts.gstatic.com/s/istokweb/v10/kvcT2SlTjmGbC3YlZxmrl6CWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/istokweb/v10/ycQ3g52ELrh3o_HYCNNUw3e1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Italiana", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/italiana/v4/dt95fkCSTOF-c6QNjwSycA.ttf")), array("kind" => "webfonts#webfont", "family" => "Italianno", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/italianno/v6/HsyHnLpKf8uP7aMpDQHZmg.ttf")), array("kind" => "webfonts#webfont", "family" => "Itim", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("thai", "latin", "latin-ext", "vietnamese"), "version" => "v1", "lastModified" => "2015-08-06", "files" => array("regular" => "http://fonts.gstatic.com/s/itim/v1/HHV9WK2x5lUkc5bxMXG8Tw.ttf")), array("kind" => "webfonts#webfont", "family" => "Jacques Francois", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jacquesfrancois/v4/_-0XWPQIW6tOzTHg4KaJ_M13D_4KM32Q4UmTSjpuNGQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Jacques Francois Shadow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jacquesfrancoisshadow/v4/V14y0H3vq56fY9SV4OL_FASt0D_oLVawA8L8b9iKjbs.ttf")), array("kind" => "webfonts#webfont", "family" => "Jaldi", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2015-06-10", "files" => array("700" => "http://fonts.gstatic.com/s/jaldi/v2/OIbtgjjEp3aVWtjF6WY8mA.ttf", "regular" => "http://fonts.gstatic.com/s/jaldi/v2/x1vR-bPW9a1EB-BUVqttCw.ttf")), array("kind" => "webfonts#webfont", "family" => "Jim Nightshade", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jimnightshade/v4/_n43lYHXVWNgXegdYRIK9CF1W_bo0EdycfH0kHciIic.ttf")), array("kind" => "webfonts#webfont", "family" => "Jockey One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jockeyone/v6/cAucnOZLvFo07w2AbufBCfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Jolly Lodger", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jollylodger/v4/RX8HnkBgaEKQSHQyP9itiS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Josefin Sans", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d8SVQ0giZ-l_NELu3lgGyYw.ttf", "300" => "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z6cQoVhARpoaILP7amxE_8g.ttf", "600" => "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z2v8CylhIUtwUiYO7Z2wXbE.ttf", "700" => "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z0D2ttfZwueP-QU272T9-k4.ttf", "100italic" => "http://fonts.gstatic.com/s/josefinsans/v9/s7-P1gqRNRNn-YWdOYnAOXXcj1rQwlNLIS625o-SrL0.ttf", "300italic" => "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33Gyna0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/josefinsans/v9/xgzbb53t8j-Mo-vYa23n5i3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d_MZXuCXbOrAvx5R0IT5Oyo.ttf", "600italic" => "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G4R-5-urNOGAobhAyctHvW8.ttf", "700italic" => "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G_As9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Josefin Slab", "category" => "serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUsSVQ0giZ-l_NELu3lgGyYw.ttf", "300" => "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2KcQoVhARpoaILP7amxE_8g.ttf", "600" => "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2Gv8CylhIUtwUiYO7Z2wXbE.ttf", "700" => "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2ED2ttfZwueP-QU272T9-k4.ttf", "100italic" => "http://fonts.gstatic.com/s/josefinslab/v6/8BjDChqLgBF3RJKfwHIYh3Xcj1rQwlNLIS625o-SrL0.ttf", "300italic" => "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJulyyna0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/josefinslab/v6/46aYWdgz-1oFX11flmyEfS3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUvMZXuCXbOrAvx5R0IT5Oyo.ttf", "600italic" => "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly4R-5-urNOGAobhAyctHvW8.ttf", "700italic" => "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly_As9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Joti One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/jotione/v4/P3r_Th0ESHJdzunsvWgUfQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Judson", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/judson/v9/he4a2LwiPJc7r8x0oKCKiA.ttf", "regular" => "http://fonts.gstatic.com/s/judson/v9/znM1AAs0eytUaJzf1CrYZQ.ttf", "italic" => "http://fonts.gstatic.com/s/judson/v9/GVqQW9P52ygW-ySq-CLwAA.ttf")), array("kind" => "webfonts#webfont", "family" => "Julee", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/julee/v6/CAib-jsUsSO8SvVRnE9fHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Julius Sans One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/juliussansone/v5/iU65JP9acQHPDLkdalCF7jjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Junge", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/junge/v4/j4IXCXtxrw9qIBheercp3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Jura", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/jura/v7/Rqx_xy1UnN0C7wD3FUSyPQ.ttf", "500" => "http://fonts.gstatic.com/s/jura/v7/16xhfjHCiaLj3tsqqgmtGg.ttf", "600" => "http://fonts.gstatic.com/s/jura/v7/iwseduOwJSdY8wQ1Y6CJdA.ttf", "regular" => "http://fonts.gstatic.com/s/jura/v7/YAWMwF3sN0KCbynMq-Yr_Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Just Another Hand", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/justanotherhand/v7/fKV8XYuRNNagXr38eqbRf99BnJIEGrvoojniP57E51c.ttf")), array("kind" => "webfonts#webfont", "family" => "Just Me Again Down Here", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/justmeagaindownhere/v8/sN06iTc9ITubLTgXoG-kc3M9eVLpVTSK6TqZTIgBrWQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Kadwa", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/kadwa/v1/NFPZaBfekj_Io-7vUMz4Ww.ttf", "regular" => "http://fonts.gstatic.com/s/kadwa/v1/VwEN8oKGqaa0ug9kRpvSSg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kalam", "category" => "handwriting", "variants" => array("300", "regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/kalam/v7/MgQQlk1SgPEHdlkWMNh7Jg.ttf", "700" => "http://fonts.gstatic.com/s/kalam/v7/95nLItUGyWtNLZjSckluLQ.ttf", "regular" => "http://fonts.gstatic.com/s/kalam/v7/hNEJkp2K-aql7e5WQish4Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Kameron", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/kameron/v7/rabVVbzlflqvmXJUFlKnu_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/kameron/v7/9r8HYhqDSwcq9WMjupL82A.ttf")), array("kind" => "webfonts#webfont", "family" => "Kanit", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("thai", "latin", "latin-ext", "vietnamese"), "version" => "v1", "lastModified" => "2015-12-10", "files" => array("100" => "http://fonts.gstatic.com/s/kanit/v1/CYl4qOK-NWwZp3iTKW1eIA.ttf", "200" => "http://fonts.gstatic.com/s/kanit/v1/wfLWkj1C4tYl7MoiFWS3bA.ttf", "300" => "http://fonts.gstatic.com/s/kanit/v1/SM5qHynYGdOmMKEwGUFIPA.ttf", "500" => "http://fonts.gstatic.com/s/kanit/v1/GxoU_USIJyIy8WIcYSUO2g.ttf", "600" => "http://fonts.gstatic.com/s/kanit/v1/n_qoIVxojeQY0D1pvoNDhA.ttf", "700" => "http://fonts.gstatic.com/s/kanit/v1/kEGmYvO8My36j5ILmbUPRg.ttf", "800" => "http://fonts.gstatic.com/s/kanit/v1/YTp-zAuKXxwnA1YnJIF1rg.ttf", "900" => "http://fonts.gstatic.com/s/kanit/v1/1NIEkusi3bG3GgO9Hor3fQ.ttf", "100italic" => "http://fonts.gstatic.com/s/kanit/v1/NLNtc56MpXmHl1yOrop8oQ.ttf", "200italic" => "http://fonts.gstatic.com/s/kanit/v1/D8gkrAAM2bvNJ-1i4ot-1_esZW2xOQ-xsNqO47m55DA.ttf", "300italic" => "http://fonts.gstatic.com/s/kanit/v1/IePislKOKy3Bqfpb9V5VM_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/kanit/v1/L6VKvM17ZmevDynOiw7H9w.ttf", "italic" => "http://fonts.gstatic.com/s/kanit/v1/sHLq5U0-T0oSMTnwTKgv-A.ttf", "500italic" => "http://fonts.gstatic.com/s/kanit/v1/hrCiWCaNv9AaF0mDY1F2zPesZW2xOQ-xsNqO47m55DA.ttf", "600italic" => "http://fonts.gstatic.com/s/kanit/v1/9BkP85yRDoVayTWQwdGLqPesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/kanit/v1/WNo3ZZ9xtOZJknNlvHAFWfesZW2xOQ-xsNqO47m55DA.ttf", "800italic" => "http://fonts.gstatic.com/s/kanit/v1/qiTGrW5sCa9UQp841fWjc_esZW2xOQ-xsNqO47m55DA.ttf", "900italic" => "http://fonts.gstatic.com/s/kanit/v1/ogN5dFD1r4BfxNV4Nb-TXfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Kantumruy", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("khmer"), "version" => "v3", "lastModified" => "2015-04-03", "files" => array("300" => "http://fonts.gstatic.com/s/kantumruy/v3/ERRwQE0WG5uanaZWmOFXNi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/kantumruy/v3/gie_zErpGf_rNzs920C2Ji3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/kantumruy/v3/kQfXNYElQxr5dS8FyjD39Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Karla", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/karla/v5/JS501sZLxZ4zraLQdncOUA.ttf", "regular" => "http://fonts.gstatic.com/s/karla/v5/78UgGRwJFkhqaoFimqoKpQ.ttf", "italic" => "http://fonts.gstatic.com/s/karla/v5/51UBKly9RQOnOkj95ZwEFw.ttf", "700italic" => "http://fonts.gstatic.com/s/karla/v5/3YDyi09gQjCRh-5-SVhTTvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Karma", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/karma/v5/lH6ijJnguWR2Sz7tEl6MQQ.ttf", "500" => "http://fonts.gstatic.com/s/karma/v5/9YGjxi6Hcvz2Kh-rzO_cAw.ttf", "600" => "http://fonts.gstatic.com/s/karma/v5/h_CVzXXtqSxjfS2sIwaejA.ttf", "700" => "http://fonts.gstatic.com/s/karma/v5/smuSM08oApsQPPVYbHd1CA.ttf", "regular" => "http://fonts.gstatic.com/s/karma/v5/wvqTxAGBUrTqU0urTEoPIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Kaushan Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kaushanscript/v4/qx1LSqts-NtiKcLw4N03IBnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Kavoon", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/kavoon/v5/382m-6baKXqJFQjEgobt6Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Kdam Thmor", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v3", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/kdamthmor/v3/otCdP6UU-VBIrBfVDWBQJ_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Keania One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/keaniaone/v4/PACrDKZWngXzgo-ucl6buvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Kelly Slab", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kellyslab/v6/F_2oS1e9XdYx1MAi8XEVefesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Kenia", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kenia/v8/OLM9-XfITK9PsTLKbGBrwg.ttf")), array("kind" => "webfonts#webfont", "family" => "Khand", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/khand/v4/072zRl4OU9Pinjjkg174LA.ttf", "500" => "http://fonts.gstatic.com/s/khand/v4/46_p-SqtuMe56nxQdteWxg.ttf", "600" => "http://fonts.gstatic.com/s/khand/v4/zggGWYIiPJyMTgkfxP_kaA.ttf", "700" => "http://fonts.gstatic.com/s/khand/v4/0I0UWaN-X5QBmfexpXKhqg.ttf", "regular" => "http://fonts.gstatic.com/s/khand/v4/HdLdTNFqNIDGJZl1ZEj84w.ttf")), array("kind" => "webfonts#webfont", "family" => "Khmer", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/khmer/v9/vWaBJIbaQuBNz02ALIKJ3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Khula", "category" => "sans-serif", "variants" => array("300", "regular", "600", "700", "800"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/khula/v1/_1LySU5Upq-sc4OZ1b_GIw.ttf", "600" => "http://fonts.gstatic.com/s/khula/v1/4ZH86Hce-aeFDaedTnbkbg.ttf", "700" => "http://fonts.gstatic.com/s/khula/v1/UGVExGl-Jjs-YPpGv-MZ6w.ttf", "800" => "http://fonts.gstatic.com/s/khula/v1/Sccp_oOo8FWgbx5smie7xQ.ttf", "regular" => "http://fonts.gstatic.com/s/khula/v1/izcPIFyCSd16XI1Ak_Wk7Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Kite One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kiteone/v4/8ojWmgUc97m0f_i6sTqLoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Knewave", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/knewave/v5/KGHM4XWr4iKnBMqzZLkPBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kotta One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kottaone/v4/AB2Q7hVw6niJYDgLvFXu5w.ttf")), array("kind" => "webfonts#webfont", "family" => "Koulen", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v10", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/koulen/v10/AAYOK8RSRO7FTskTzFuzNw.ttf")), array("kind" => "webfonts#webfont", "family" => "Kranky", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kranky/v6/C8dxxTS99-fZ84vWk8SDrg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kreon", "category" => "serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/kreon/v9/HKtJRiq5C2zbq5N1IX32sA.ttf", "700" => "http://fonts.gstatic.com/s/kreon/v9/jh0dSmaPodjxISiblIUTkw.ttf", "regular" => "http://fonts.gstatic.com/s/kreon/v9/zA_IZt0u0S3cvHJu-n1oEg.ttf")), array("kind" => "webfonts#webfont", "family" => "Kristi", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kristi/v7/aRsgBQrkQkMlu4UPSnJyOQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Krona One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/kronaone/v4/zcQj4ljqTo166AdourlF9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Kurale", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "devanagari", "latin-ext", "cyrillic"), "version" => "v1", "lastModified" => "2015-05-14", "files" => array("regular" => "http://fonts.gstatic.com/s/kurale/v1/rxeyIcvQlT4XAWwNbXFCfw.ttf")), array("kind" => "webfonts#webfont", "family" => "La Belle Aurore", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/labelleaurore/v7/Irdbc4ASuUoWDjd_Wc3md123K2iuuhwZgaKapkyRTY8.ttf")), array("kind" => "webfonts#webfont", "family" => "Laila", "category" => "serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2016-03-14", "files" => array("300" => "http://fonts.gstatic.com/s/laila/v2/bLbIVEZF3IWSZ-in72GJvA.ttf", "500" => "http://fonts.gstatic.com/s/laila/v2/tkf8VtFvW9g3VsxQCA6WOQ.ttf", "600" => "http://fonts.gstatic.com/s/laila/v2/3EMP2L6JRQ4GaHIxCldCeA.ttf", "700" => "http://fonts.gstatic.com/s/laila/v2/R7P4z1xjcjecmjZ9GyhqHQ.ttf", "regular" => "http://fonts.gstatic.com/s/laila/v2/6iYor3edprH7360qtBGoag.ttf")), array("kind" => "webfonts#webfont", "family" => "Lakki Reddy", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lakkireddy/v3/Q5EpFa91FjW37t0FCnedaKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Lancelot", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lancelot/v6/XMT7T_oo_MQUGAnU2v-sdA.ttf")), array("kind" => "webfonts#webfont", "family" => "Lateef", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "arabic"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lateef/v10/PAsKCgi1qc7XPwvzo_I-DQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Lato", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/lato/v11/Upp-ka9rLQmHYCsFgwL-eg.ttf", "300" => "http://fonts.gstatic.com/s/lato/v11/Ja02qOppOVq9jeRjWekbHg.ttf", "700" => "http://fonts.gstatic.com/s/lato/v11/iX_QxBBZLhNj5JHlTzHQzg.ttf", "900" => "http://fonts.gstatic.com/s/lato/v11/8TPEV6NbYWZlNsXjbYVv7w.ttf", "100italic" => "http://fonts.gstatic.com/s/lato/v11/zLegi10uS_9-fnUDISl0KA.ttf", "300italic" => "http://fonts.gstatic.com/s/lato/v11/dVebFcn7EV7wAKwgYestUg.ttf", "regular" => "http://fonts.gstatic.com/s/lato/v11/h7rISIcQapZBpei-sXwIwg.ttf", "italic" => "http://fonts.gstatic.com/s/lato/v11/P_dJOFJylV3A870UIOtr0w.ttf", "700italic" => "http://fonts.gstatic.com/s/lato/v11/WFcZakHrrCKeUJxHA4T_gw.ttf", "900italic" => "http://fonts.gstatic.com/s/lato/v11/draWperrI7n2xi35Cl08fA.ttf")), array("kind" => "webfonts#webfont", "family" => "League Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/leaguescript/v7/wnRFLvfabWK_DauqppD6vSeUSrabuTpOsMEiRLtKwk0.ttf")), array("kind" => "webfonts#webfont", "family" => "Leckerli One", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/leckerlione/v7/S2Y_iLrItTu8kIJTkS7DrC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ledger", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ledger/v4/G432jp-tahOfWHbCYkI0jw.ttf")), array("kind" => "webfonts#webfont", "family" => "Lekton", "category" => "sans-serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lekton/v7/WZw-uL8WTkx3SBVfTlevXQ.ttf", "regular" => "http://fonts.gstatic.com/s/lekton/v7/r483JYmxf5PjIm4jVAm8Yg.ttf", "italic" => "http://fonts.gstatic.com/s/lekton/v7/_UbDIPBA1wDqSbhp-OED7A.ttf")), array("kind" => "webfonts#webfont", "family" => "Lemon", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lemon/v5/wed1nNu4LNSu-3RoRVUhUw.ttf")), array("kind" => "webfonts#webfont", "family" => "Libre Baskerville", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/librebaskerville/v4/kH7K4InNTm7mmOXXjrA5v-xuswJKUVpBRfYFpz0W3Iw.ttf", "regular" => "http://fonts.gstatic.com/s/librebaskerville/v4/pR0sBQVcY0JZc_ciXjFsKyyZRYCSvpCzQKuMWnP5NDY.ttf", "italic" => "http://fonts.gstatic.com/s/librebaskerville/v4/QHIOz1iKF3bIEzRdDFaf5QnhapNS5Oi8FPrBRDLbsW4.ttf")), array("kind" => "webfonts#webfont", "family" => "Life Savers", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lifesavers/v6/THQKqChyYUm97rNPVFdGGXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/lifesavers/v6/g49cUDk4Y1P0G5NMkMAm7qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Lilita One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lilitaone/v4/vTxJQjbNV6BCBHx8sGDCVvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Lily Script One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lilyscriptone/v4/uPWsLVW8uiXqIBnE8ZwGPDjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Limelight", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/limelight/v7/5dTfN6igsXjLjOy8QQShcg.ttf")), array("kind" => "webfonts#webfont", "family" => "Linden Hill", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lindenhill/v6/UgsC0txqd-E1yjvjutwm_KCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/lindenhill/v6/OcS3bZcu8vJvIDH8Zic83keOrDcLawS7-ssYqLr2Xp4.ttf")), array("kind" => "webfonts#webfont", "family" => "Lobster", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic", "vietnamese"), "version" => "v16", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lobster/v16/9LpJGtNuM1D8FAZ2BkJH2Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Lobster Two", "category" => "display", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lobstertwo/v8/bmdxOflBqMqjEC0-kGsIiHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/lobstertwo/v8/xb9aY4w9ceh8JRzobID1naCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/lobstertwo/v8/Ul_16MSbfayQv1I4QhLEoEeOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/lobstertwo/v8/LEkN2_no_6kFvRfiBZ8xpM_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Outline", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinaoutline/v5/lls08GOa1eT74p072l1AWJmp8DTZ6iHear7UV05iykg.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Shadow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinashadow/v4/dNYuzPS_7eYgXFJBzMoKdbw6Z3rVA5KDSi7aQxS92Nk.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Sketch", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinasketch/v4/p7Ai06aT1Ycp_D2fyE3z69d6z_uhFGnpCOifUY1fJQo.ttf")), array("kind" => "webfonts#webfont", "family" => "Londrina Solid", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/londrinasolid/v4/yysorIEiYSBb0ylZjg791MR125CwGqh8XBqkBzea0LA.ttf")), array("kind" => "webfonts#webfont", "family" => "Lora", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lora/v9/enKND5SfzQKkggBA_VnT1A.ttf", "regular" => "http://fonts.gstatic.com/s/lora/v9/aXJ7KVIGcejEy1abawZazg.ttf", "italic" => "http://fonts.gstatic.com/s/lora/v9/AN2EZaj2tFRpyveuNn9BOg.ttf", "700italic" => "http://fonts.gstatic.com/s/lora/v9/ivs9j3kYU65pR9QD9YFdzQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Love Ya Like A Sister", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/loveyalikeasister/v7/LzkxWS-af0Br2Sk_YgSJY-ad1xEP8DQfgfY8MH9aBUg.ttf")), array("kind" => "webfonts#webfont", "family" => "Loved by the King", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lovedbytheking/v6/wg03xD4cWigj4YDufLBSr8io2AFEwwMpu7y5KyiyAJc.ttf")), array("kind" => "webfonts#webfont", "family" => "Lovers Quarrel", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/loversquarrel/v4/gipdZ8b7pKb89MzQLAtJHLHLxci2ElvNEmOB303HLk0.ttf")), array("kind" => "webfonts#webfont", "family" => "Luckiest Guy", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/luckiestguy/v6/5718gH8nDy3hFVihOpkY5C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Lusitana", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/lusitana/v4/GWtZyUsONxgkdl3Mc1P7FKCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/lusitana/v4/l1h9VDomkwbdzbPdmLcUIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Lustria", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/lustria/v4/gXAk0s4ai0X-TAOhYzZd1w.ttf")), array("kind" => "webfonts#webfont", "family" => "Macondo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/macondo/v5/G6yPNUscRPQ8ufBXs_8yRQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Macondo Swash Caps", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/macondoswashcaps/v4/SsSR706z-MlvEH7_LS6JAPkkgYRHs6GSG949m-K6x2k.ttf")), array("kind" => "webfonts#webfont", "family" => "Magra", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/magra/v4/6fOM5sq5cIn8D0RjX8Lztw.ttf", "regular" => "http://fonts.gstatic.com/s/magra/v4/hoZ13bwCXBxuGZqAudgc5A.ttf")), array("kind" => "webfonts#webfont", "family" => "Maiden Orange", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/maidenorange/v6/ZhKIA2SPisEwdhW7g0RUWojjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Mako", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mako/v7/z5zSLmfPlv1uTVAdmJBLXg.ttf")), array("kind" => "webfonts#webfont", "family" => "Mallanna", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mallanna/v4/krCTa-CfMbtxqF0689CbuQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Mandali", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mandali/v4/0lF8yJ7fkyjXuqtSi5bWbQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Marcellus", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marcellus/v4/UjiLZzumxWC9whJ86UtaYw.ttf")), array("kind" => "webfonts#webfont", "family" => "Marcellus SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marcellussc/v4/_jugwxhkkynrvsfrxVx8gS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Marck Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marckscript/v7/O_D1NAZVOFOobLbVtW3bci3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Margarine", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/margarine/v5/DJnJwIrcO_cGkjSzY3MERw.ttf")), array("kind" => "webfonts#webfont", "family" => "Marko One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/markoone/v6/hpP7j861sOAco43iDc4n4w.ttf")), array("kind" => "webfonts#webfont", "family" => "Marmelad", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/marmelad/v6/jI0_FBlSOIRLL0ePWOhOwQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Martel", "category" => "serif", "variants" => array("200", "300", "regular", "600", "700", "800", "900"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-04-22", "files" => array("200" => "http://fonts.gstatic.com/s/martel/v1/_wfGdswZbat7P4tupHLA1w.ttf", "300" => "http://fonts.gstatic.com/s/martel/v1/SghoV2F2VPdVU3P0a4fa9w.ttf", "600" => "http://fonts.gstatic.com/s/martel/v1/Kt9uPhH1PvUwuZ5Y6zuAMQ.ttf", "700" => "http://fonts.gstatic.com/s/martel/v1/4OzIiKB5wE36xXL2U0vzWQ.ttf", "800" => "http://fonts.gstatic.com/s/martel/v1/RVF8drcQoRkRL7l_ZkpTlQ.ttf", "900" => "http://fonts.gstatic.com/s/martel/v1/iS0YUpFJoiLRlnyl40rpEA.ttf", "regular" => "http://fonts.gstatic.com/s/martel/v1/9ALu5czkaaf5zsYk6GJEnQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Martel Sans", "category" => "sans-serif", "variants" => array("200", "300", "regular", "600", "700", "800", "900"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2015-12-08", "files" => array("200" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQEnzyIngrzGjGh22wPb6cGM.ttf", "300" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQC9-WlPSxbfiI49GsXo3q0g.ttf", "600" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQJZ7xm-Bj30Bj2KNdXDzSZg.ttf", "700" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "800" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQA89PwPrYLaRFJ-HNCU9NbA.ttf", "900" => "http://fonts.gstatic.com/s/martelsans/v2/7ajme85aKKx_SCWF59ImQCenaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/martelsans/v2/91c8DPDZncMc0RFfhmc2RqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Marvel", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/marvel/v6/WrHDBL1RupWGo2UcdgxB3Q.ttf", "regular" => "http://fonts.gstatic.com/s/marvel/v6/Fg1dO8tWVb-MlyqhsbXEkg.ttf", "italic" => "http://fonts.gstatic.com/s/marvel/v6/HzyjFB-oR5usrc7Lxz9g8w.ttf", "700italic" => "http://fonts.gstatic.com/s/marvel/v6/Gzf5NT09Y6xskdQRj2kz1qCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Mate", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mate/v5/ooFviPcJ6hZP5bAE71Cawg.ttf", "italic" => "http://fonts.gstatic.com/s/mate/v5/5XwW6_cbisGvCX5qmNiqfA.ttf")), array("kind" => "webfonts#webfont", "family" => "Mate SC", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/matesc/v5/-YkIT2TZoPZF6pawKzDpWw.ttf")), array("kind" => "webfonts#webfont", "family" => "Maven Pro", "category" => "sans-serif", "variants" => array("regular", "500", "700", "900"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/mavenpro/v7/SQVfzoJBbj9t3aVcmbspRi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/mavenpro/v7/uDssvmXgp7Nj3i336k_dSi3USBnSvpkopQaUR-2r7iU.ttf", "900" => "http://fonts.gstatic.com/s/mavenpro/v7/-91TwiFzqeL1F7Kh91APwS3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/mavenpro/v7/sqPJIFG4gqsjl-0q_46Gbw.ttf")), array("kind" => "webfonts#webfont", "family" => "McLaren", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mclaren/v4/OprvTGxaiINBKW_1_U0eoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Meddon", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2015-08-12", "files" => array("regular" => "http://fonts.gstatic.com/s/meddon/v9/f8zJO98uu2EtSj9p7ci9RA.ttf")), array("kind" => "webfonts#webfont", "family" => "MedievalSharp", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/medievalsharp/v8/85X_PjV6tftJ0-rX7KYQkOe45sJkivqprK7VkUlzfg0.ttf")), array("kind" => "webfonts#webfont", "family" => "Medula One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/medulaone/v6/AasPgDQak81dsTGQHc5zUPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Megrim", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/megrim/v7/e-9jVUC9lv1zxaFQARuftw.ttf")), array("kind" => "webfonts#webfont", "family" => "Meie Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/meiescript/v4/oTIWE5MmPye-rCyVp_6KEqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Merienda", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/merienda/v4/GlwcvRLlgiVE2MBFQ4r0sKCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/merienda/v4/MYY6Og1qZlOQtPW2G95Y3A.ttf")), array("kind" => "webfonts#webfont", "family" => "Merienda One", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/meriendaone/v7/bCA-uDdUx6nTO8SjzCLXvS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Merriweather", "category" => "serif", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/merriweather/v11/ZvcMqxEwPfh2qDWBPxn6nqcQoVhARpoaILP7amxE_8g.ttf", "700" => "http://fonts.gstatic.com/s/merriweather/v11/ZvcMqxEwPfh2qDWBPxn6nkD2ttfZwueP-QU272T9-k4.ttf", "900" => "http://fonts.gstatic.com/s/merriweather/v11/ZvcMqxEwPfh2qDWBPxn6nqObDOjC3UL77puoeHsE3fw.ttf", "300italic" => "http://fonts.gstatic.com/s/merriweather/v11/EYh7Vl4ywhowqULgRdYwICna0FLWfcB-J_SAYmcAXaI.ttf", "regular" => "http://fonts.gstatic.com/s/merriweather/v11/RFda8w1V0eDZheqfcyQ4EC3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/merriweather/v11/So5lHxHT37p2SS4-t60SlPMZXuCXbOrAvx5R0IT5Oyo.ttf", "700italic" => "http://fonts.gstatic.com/s/merriweather/v11/EYh7Vl4ywhowqULgRdYwIPAs9-1nE9qOqhChW0m4nDE.ttf", "900italic" => "http://fonts.gstatic.com/s/merriweather/v11/EYh7Vl4ywhowqULgRdYwIBd0_s6jQr9r5s5OZYvtzBY.ttf")), array("kind" => "webfonts#webfont", "family" => "Merriweather Sans", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic", "800", "800italic"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/merriweathersans/v7/6LmGj5dOJopQKEkt88Gowan5N8K-_DP0e9e_v51obXQ.ttf", "700" => "http://fonts.gstatic.com/s/merriweathersans/v7/6LmGj5dOJopQKEkt88GowbqxG25nQNOioCZSK4sU-CA.ttf", "800" => "http://fonts.gstatic.com/s/merriweathersans/v7/6LmGj5dOJopQKEkt88GowYufzO2zUYSj5LqoJ3UGkco.ttf", "300italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/nAqt4hiqwq3tzCecpgPmVdytE4nGXk2hYD5nJ740tBw.ttf", "regular" => "http://fonts.gstatic.com/s/merriweathersans/v7/AKu1CjQ4qnV8MUltkAX3sOAj_ty82iuwwDTNEYXGiyQ.ttf", "italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/3Mz4hOHzs2npRMG3B1ascZ32VBCoA_HLsn85tSWZmdo.ttf", "700italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/nAqt4hiqwq3tzCecpgPmVbuqAJxizi8Dk_SK5et7kMg.ttf", "800italic" => "http://fonts.gstatic.com/s/merriweathersans/v7/nAqt4hiqwq3tzCecpgPmVdDmPrYMy3aZO4LmnZsxTQw.ttf")), array("kind" => "webfonts#webfont", "family" => "Metal", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/metal/v9/zA3UOP13ooQcxjv04BZX5g.ttf")), array("kind" => "webfonts#webfont", "family" => "Metal Mania", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/metalmania/v6/isriV_rAUgj6bPWPN6l9QKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Metamorphous", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/metamorphous/v6/wGqUKXRinIYggz-BTRU9ei3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Metrophobic", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/metrophobic/v6/SaglWZWCrrv_D17u1i4v_aCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Michroma", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/michroma/v7/0c2XrW81_QsiKV8T9thumA.ttf")), array("kind" => "webfonts#webfont", "family" => "Milonga", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/milonga/v4/dzNdIUSTGFmy2ahovDRcWg.ttf")), array("kind" => "webfonts#webfont", "family" => "Miltonian", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/miltonian/v9/Z4HrYZyqm0BnNNzcCUfzoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Miltonian Tattoo", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/miltoniantattoo/v10/1oU_8OGYwW46eh02YHydn2uk0YtI6thZkz1Hmh-odwg.ttf")), array("kind" => "webfonts#webfont", "family" => "Miniver", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/miniver/v5/4yTQohOH_cWKRS5laRFhYg.ttf")), array("kind" => "webfonts#webfont", "family" => "Miss Fajardose", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/missfajardose/v6/WcXjlQPKn6nBfr8LY3ktNu6rPKfVZo7L2bERcf0BDns.ttf")), array("kind" => "webfonts#webfont", "family" => "Modak", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/modak/v1/lMsN0QIKid-pCPvL0hH4nw.ttf")), array("kind" => "webfonts#webfont", "family" => "Modern Antiqua", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/modernantiqua/v6/8qX_tr6Xzy4t9fvZDXPkh6rFJ4O13IHVxZbM6yoslpo.ttf")), array("kind" => "webfonts#webfont", "family" => "Molengo", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/molengo/v7/jcjgeGuzv83I55AzOTpXNQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Molle", "category" => "handwriting", "variants" => array("italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("italic" => "http://fonts.gstatic.com/s/molle/v4/9XTdCsjPXifLqo5et-YoGA.ttf")), array("kind" => "webfonts#webfont", "family" => "Monda", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/monda/v4/EVOzZUyc_j1w2GuTgTAW1g.ttf", "regular" => "http://fonts.gstatic.com/s/monda/v4/qFMHZ9zvR6B_gnoIgosPrw.ttf")), array("kind" => "webfonts#webfont", "family" => "Monofett", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/monofett/v6/C6K5L799Rgxzg2brgOaqAw.ttf")), array("kind" => "webfonts#webfont", "family" => "Monoton", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/monoton/v6/aCz8ja_bE4dg-7agSvExdw.ttf")), array("kind" => "webfonts#webfont", "family" => "Monsieur La Doulaise", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/monsieurladoulaise/v5/IMAdMj6Eq9jZ46CPctFtMKP61oAqTJXlx5ZVOBmcPdM.ttf")), array("kind" => "webfonts#webfont", "family" => "Montaga", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/montaga/v4/PwTwUboiD-M4-mFjZfJs2A.ttf")), array("kind" => "webfonts#webfont", "family" => "Montez", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/montez/v6/kx58rLOWQQLGFM4pDHv5Ng.ttf")), array("kind" => "webfonts#webfont", "family" => "Montserrat", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/montserrat/v6/IQHow_FEYlDC4Gzy_m8fcgJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/montserrat/v6/Kqy6-utIpx_30Xzecmeo8_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Montserrat Alternates", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/montserratalternates/v4/YENqOGAVzwIHjYNjmKuAZpeqBKvsAhm-s2I4RVSXFfc.ttf", "regular" => "http://fonts.gstatic.com/s/montserratalternates/v4/z2n1Sjxk9souK3HCtdHuklPuEVRGaG9GCQnmM16YWq0.ttf")), array("kind" => "webfonts#webfont", "family" => "Montserrat Subrayada", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/montserratsubrayada/v4/wf-IKpsHcfm0C9uaz9IeGJvEcF1LWArDbGWgKZSH9go.ttf", "regular" => "http://fonts.gstatic.com/s/montserratsubrayada/v4/nzoCWCz0e9c7Mr2Gl8bbgrJymm6ilkk9f0nDA_sC_qk.ttf")), array("kind" => "webfonts#webfont", "family" => "Moul", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/moul/v8/Kb0ALQnfyXawP1a_P_gpTQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Moulpali", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/moulpali/v9/diD74BprGhmVkJoerKmrKA.ttf")), array("kind" => "webfonts#webfont", "family" => "Mountains of Christmas", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/mountainsofchristmas/v8/PymufKtHszoLrY0uiAYKNM9cPTbSBTrQyTa5TWAe3vE.ttf", "regular" => "http://fonts.gstatic.com/s/mountainsofchristmas/v8/dVGBFPwd6G44IWDbQtPew2Auds3jz1Fxb61CgfaGDr4.ttf")), array("kind" => "webfonts#webfont", "family" => "Mouse Memoirs", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mousememoirs/v4/NBFaaJFux_j0AQbAsW3QeH8f0n03UdmQgF_CLvNR2vg.ttf")), array("kind" => "webfonts#webfont", "family" => "Mr Bedfort", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrbedfort/v5/81bGgHTRikLs_puEGshl7_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Mr Dafoe", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrdafoe/v5/s32Q1S6ZkT7EaX53mUirvQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Mr De Haviland", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrdehaviland/v5/fD8y4L6PJ4vqDk7z8Y8e27v4lrhng1lzu7-weKO6cw8.ttf")), array("kind" => "webfonts#webfont", "family" => "Mrs Saint Delafield", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrssaintdelafield/v4/vuWagfFT7bj9lFtZOFBwmjHMBelqWf3tJeGyts2SmKU.ttf")), array("kind" => "webfonts#webfont", "family" => "Mrs Sheppards", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mrssheppards/v5/2WFsWMV3VUeCz6UVH7UjCn8f0n03UdmQgF_CLvNR2vg.ttf")), array("kind" => "webfonts#webfont", "family" => "Muli", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/muli/v7/VJw4F3ZHRAZ7Hmg3nQu5YQ.ttf", "300italic" => "http://fonts.gstatic.com/s/muli/v7/s-NKMCru8HiyjEt0ZDoBoA.ttf", "regular" => "http://fonts.gstatic.com/s/muli/v7/KJiP6KznxbALQgfJcDdPAw.ttf", "italic" => "http://fonts.gstatic.com/s/muli/v7/Cg0K_IWANs9xkNoxV7H1_w.ttf")), array("kind" => "webfonts#webfont", "family" => "Mystery Quest", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/mysteryquest/v4/467jJvg0c7HgucvBB9PLDyeUSrabuTpOsMEiRLtKwk0.ttf")), array("kind" => "webfonts#webfont", "family" => "NTR", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ntr/v4/e7H4ZLtGfVOYyOupo6T12g.ttf")), array("kind" => "webfonts#webfont", "family" => "Neucha", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "cyrillic"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/neucha/v8/bijdhB-TzQdtpl0ykhGh4Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Neuton", "category" => "serif", "variants" => array("200", "300", "regular", "italic", "700", "800"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/neuton/v8/DA3Mkew3XqSkPpi1f4tJow.ttf", "300" => "http://fonts.gstatic.com/s/neuton/v8/xrc_aZ2hx-gdeV0mlY8Vww.ttf", "700" => "http://fonts.gstatic.com/s/neuton/v8/gnWpkWY7DirkKiovncYrfg.ttf", "800" => "http://fonts.gstatic.com/s/neuton/v8/XPzBQV4lY6enLxQG9cF1jw.ttf", "regular" => "http://fonts.gstatic.com/s/neuton/v8/9R-MGIOQUdjAVeB6nE6PcQ.ttf", "italic" => "http://fonts.gstatic.com/s/neuton/v8/uVMT3JOB5BNFi3lgPp6kEg.ttf")), array("kind" => "webfonts#webfont", "family" => "New Rocker", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/newrocker/v5/EFUWzHJedEkpW399zYOHofesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "News Cycle", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v13", "lastModified" => "2015-04-16", "files" => array("700" => "http://fonts.gstatic.com/s/newscycle/v13/G28Ny31cr5orMqEQy6ljtwJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/newscycle/v13/xyMAr8VfiUzIOvS1abHJO_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Niconne", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/niconne/v6/ZA-mFw2QNXodx5y7kfELBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Nixie One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/nixieone/v7/h6kQfmzm0Shdnp3eswRaqQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nobile", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/nobile/v7/9p6M-Yrg_r_QPmSD1skrOg.ttf", "regular" => "http://fonts.gstatic.com/s/nobile/v7/lC_lPi1ddtN38iXTCRh6ow.ttf", "italic" => "http://fonts.gstatic.com/s/nobile/v7/vGmrpKzWQQSrb-PR6FWBIA.ttf", "700italic" => "http://fonts.gstatic.com/s/nobile/v7/oQ1eYPaXV638N03KvsNvyKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Nokora", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("700" => "http://fonts.gstatic.com/s/nokora/v9/QMqqa4QEOhQpiig3cAPmbQ.ttf", "regular" => "http://fonts.gstatic.com/s/nokora/v9/dRyz1JfnyKPNaRcBNX9F9A.ttf")), array("kind" => "webfonts#webfont", "family" => "Norican", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/norican/v4/SHnSqhYAWG5sZTWcPzEHig.ttf")), array("kind" => "webfonts#webfont", "family" => "Nosifer", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/nosifer/v5/7eJGoIuHRrtcG00j6CptSA.ttf")), array("kind" => "webfonts#webfont", "family" => "Nothing You Could Do", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/nothingyoucoulddo/v6/jpk1K3jbJoyoK0XKaSyQAf-TpkXjXYGWiJZAEtBRjPU.ttf")), array("kind" => "webfonts#webfont", "family" => "Noticia Text", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/noticiatext/v6/pEko-RqEtp45bE2P80AAKUD2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/noticiatext/v6/wdyV6x3eKpdeUPQ7BJ5uUC3USBnSvpkopQaUR-2r7iU.ttf", "italic" => "http://fonts.gstatic.com/s/noticiatext/v6/dAuxVpkYE_Q_IwIm6elsKPMZXuCXbOrAvx5R0IT5Oyo.ttf", "700italic" => "http://fonts.gstatic.com/s/noticiatext/v6/-rQ7V8ARjf28_b7kRa0JuvAs9-1nE9qOqhChW0m4nDE.ttf")), array("kind" => "webfonts#webfont", "family" => "Noto Sans", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "devanagari", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/notosans/v6/PIbvSEyHEdL91QLOQRnZ1y3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/notosans/v6/0Ue9FiUJwVhi4NGfHJS5uA.ttf", "italic" => "http://fonts.gstatic.com/s/notosans/v6/dLcNKMgJ1H5RVoZFraDz0qCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/notosans/v6/9Z3uUWMRR7crzm1TjRicDne1Pd76Vl7zRpE7NLJQ7XU.ttf")), array("kind" => "webfonts#webfont", "family" => "Noto Serif", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/notoserif/v4/lJAvZoKA5NttpPc9yc6lPQJKKGfqHaYFsRG-T3ceEVo.ttf", "regular" => "http://fonts.gstatic.com/s/notoserif/v4/zW6mc7bC1CWw8dH0yxY8JfesZW2xOQ-xsNqO47m55DA.ttf", "italic" => "http://fonts.gstatic.com/s/notoserif/v4/HQXBIwLHsOJCNEQeX9kNzy3USBnSvpkopQaUR-2r7iU.ttf", "700italic" => "http://fonts.gstatic.com/s/notoserif/v4/Wreg0Be4tcFGM2t6VWytvED2ttfZwueP-QU272T9-k4.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Cut", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novacut/v8/6q12jWcBvj0KO2cMRP97tA.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Flat", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaflat/v8/pK7a0CoGzI684qe_XSHBqQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("greek", "latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novamono/v7/6-SChr5ZIaaasJFBkgrLNw.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Oval", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaoval/v8/VuukVpKP8BwUf8o9W5LYQQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Round", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaround/v8/7-cK3Ari_8XYYFgVMxVhDvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Script", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novascript/v8/dEvxQDLgx1M1TKY-NmBWYaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Slim", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novaslim/v8/rPYXC81_VL2EW-4CzBX65g.ttf")), array("kind" => "webfonts#webfont", "family" => "Nova Square", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/novasquare/v8/BcBzXoaDzYX78rquGXVuSqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Numans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/numans/v6/g5snI2p6OEjjTNmTHyBdiQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Nunito", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/nunito/v7/zXQvrWBJqUooM7Xv98MrQw.ttf", "700" => "http://fonts.gstatic.com/s/nunito/v7/aEdlqgMuYbpe4U3TnqOQMA.ttf", "regular" => "http://fonts.gstatic.com/s/nunito/v7/ySZTeT3IuzJj0GK6uGpbBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Odor Mean Chey", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/odormeanchey/v8/GK3E7EjPoBkeZhYshGFo0eVKG8sq4NyGgdteJLvqLDs.ttf")), array("kind" => "webfonts#webfont", "family" => "Offside", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/offside/v4/v0C913SB8wqQUvcu1faUqw.ttf")), array("kind" => "webfonts#webfont", "family" => "Old Standard TT", "category" => "serif", "variants" => array("regular", "italic", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/oldstandardtt/v7/5Ywdce7XEbTSbxs__4X1_HJqbZqK7TdZ58X80Q_Lw8Y.ttf", "regular" => "http://fonts.gstatic.com/s/oldstandardtt/v7/n6RTCDcIPWSE8UNBa4k-DLcB5jyhm1VsHs65c3QNDr0.ttf", "italic" => "http://fonts.gstatic.com/s/oldstandardtt/v7/QQT_AUSp4AV4dpJfIN7U5PWrQzeMtsHf8QsWQ2cZg3c.ttf")), array("kind" => "webfonts#webfont", "family" => "Oldenburg", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oldenburg/v4/dqA_M_uoCVXZbCO-oKBTnQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Oleo Script", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/oleoscript/v5/hudNQFKFl98JdNnlo363fne1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/oleoscript/v5/21stZcmPyzbQVXtmGegyqKCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Oleo Script Swash Caps", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/HMO3ftxA9AU5floml9c755reFYaXZ4zuJXJ8fr8OO1g.ttf", "regular" => "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/vdWhGqsBUAP-FF3NOYTe4iMF4kXAPemmyaDpMXQ31P0.ttf")), array("kind" => "webfonts#webfont", "family" => "Open Sans", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic", "800", "800italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v13", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTS3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSi3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzC3USBnSvpkopQaUR-2r7iU.ttf", "800" => "http://fonts.gstatic.com/s/opensans/v13/EInbV5DfGHOiMmvb1Xr-hi3USBnSvpkopQaUR-2r7iU.ttf", "300italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxi9-WlPSxbfiI49GsXo3q0g.ttf", "regular" => "http://fonts.gstatic.com/s/opensans/v13/IgZJs4-7SA1XX_edsoXWog.ttf", "italic" => "http://fonts.gstatic.com/s/opensans/v13/O4NhV7_qs9r9seTo7fnsVKCWcynf_cDxXwCLxiixG1c.ttf", "600italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxpZ7xm-Bj30Bj2KNdXDzSZg.ttf", "700italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxne1Pd76Vl7zRpE7NLJQ7XU.ttf", "800italic" => "http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxg89PwPrYLaRFJ-HNCU9NbA.ttf")), array("kind" => "webfonts#webfont", "family" => "Open Sans Condensed", "category" => "sans-serif", "variants" => array("300", "300italic", "700"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xEMwSSh38KQVJx4ABtsZTnA.ttf", "700" => "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xBEM87DM3yorPOrvA-vB930.ttf", "300italic" => "http://fonts.gstatic.com/s/opensanscondensed/v10/jIXlqT1WKafUSwj6s9AzV4_LkTZ_uhAwfmGJ084hlvM.ttf")), array("kind" => "webfonts#webfont", "family" => "Oranienbaum", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oranienbaum/v5/M98jYwCSn0PaFhXXgviCoaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Orbitron", "category" => "sans-serif", "variants" => array("regular", "500", "700", "900"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/orbitron/v7/p-y_ffzMdo5JN_7ia0vYEqCWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/orbitron/v7/PS9_6SLkY1Y6OgPO3APr6qCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/orbitron/v7/2I3-8i9hT294TE_pyjy9SaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/orbitron/v7/DY8swouAZjR3RaUPRf0HDQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Oregano", "category" => "display", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oregano/v4/UiLhqNixVv2EpjRoBG6axA.ttf", "italic" => "http://fonts.gstatic.com/s/oregano/v4/_iwqGEht6XsAuEaCbYG64Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Orienta", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/orienta/v4/_NKSk93mMs0xsqtfjCsB3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Original Surfer", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/originalsurfer/v5/gdHw6HpSIN4D6Xt7pi1-qIkEz33TDwAZczo_6fY7eg0.ttf")), array("kind" => "webfonts#webfont", "family" => "Oswald", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/oswald/v10/y3tZpCdiRD4oNRRYFcAR5Q.ttf", "700" => "http://fonts.gstatic.com/s/oswald/v10/7wj8ldV_5Ti37rHa0m1DDw.ttf", "regular" => "http://fonts.gstatic.com/s/oswald/v10/uLEd2g2vJglLPfsBF91DCg.ttf")), array("kind" => "webfonts#webfont", "family" => "Over the Rainbow", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/overtherainbow/v7/6gp-gkpI2kie2dHQQLM2jQBdxkZd83xOSx-PAQ2QmiI.ttf")), array("kind" => "webfonts#webfont", "family" => "Overlock", "category" => "display", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/overlock/v5/Fexr8SqXM8Bm_gEVUA7AKaCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/overlock/v5/YPJCVTT8ZbG3899l_-KIGqCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/overlock/v5/Z8oYsGi88-E1cUB8YBFMAg.ttf", "italic" => "http://fonts.gstatic.com/s/overlock/v5/rq6EacukHROOBrFrK_zF6_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/overlock/v5/wFWnYgeXKYBks6gEUwYnfAJKKGfqHaYFsRG-T3ceEVo.ttf", "900italic" => "http://fonts.gstatic.com/s/overlock/v5/iOZhxT2zlg7W5ij_lb-oDp0EAVxt0G0biEntp43Qt6E.ttf")), array("kind" => "webfonts#webfont", "family" => "Overlock SC", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/overlocksc/v5/8D7HYDsvS_g1GhBnlHzgzaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Ovo", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ovo/v7/mFg27dimu3s9t09qjCwB1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Oxygen", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/oxygen/v5/lZ31r0bR1Bzt_DfGZu1S8A.ttf", "700" => "http://fonts.gstatic.com/s/oxygen/v5/yLqkmDwuNtt5pSqsJmhyrg.ttf", "regular" => "http://fonts.gstatic.com/s/oxygen/v5/uhoyAE7XlQL22abzQieHjw.ttf")), array("kind" => "webfonts#webfont", "family" => "Oxygen Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/oxygenmono/v4/DigTu7k4b7OmM8ubt1Qza6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ptmono/v4/QUbM8H9yJK5NhpQ0REO6Wg.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Sans", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptsans/v8/F51BEgHuR0tYHxF0bD4vwvesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/ptsans/v8/UFoEz2uiuMypUGZL1NKoeg.ttf", "italic" => "http://fonts.gstatic.com/s/ptsans/v8/yls9EYWOd496wiu7qzfgNg.ttf", "700italic" => "http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Sans Caption", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptsanscaption/v9/Q-gJrFokeE7JydPpxASt25tc0eyfI4QDEsobEEpk_hA.ttf", "regular" => "http://fonts.gstatic.com/s/ptsanscaption/v9/OXYTDOzBcXU8MTNBvBHeSW8by34Z3mUMtM-o4y-SHCY.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Sans Narrow", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptsansnarrow/v7/Q_pTky3Sc3ubRibGToTAYsLtdzs3iyjn_YuT226ZsLU.ttf", "regular" => "http://fonts.gstatic.com/s/ptsansnarrow/v7/UyYrYy3ltEffJV9QueSi4ZTvAuddT2xDMbdz0mdLyZY.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Serif", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ptserif/v8/kyZw18tqQ5if-_wpmxxOeKCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/ptserif/v8/sAo427rn3-QL9sWCbMZXhA.ttf", "italic" => "http://fonts.gstatic.com/s/ptserif/v8/9khWhKzhpkH0OkNnBKS3n_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9QJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "PT Serif Caption", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ptserifcaption/v8/7xkFOeTxxO1GMC1suOUYWVsRioCqs5fohhaYel24W3k.ttf", "italic" => "http://fonts.gstatic.com/s/ptserifcaption/v8/0kfPsmrmTSgiec7u_Wa0DB1mqvzPHelJwRcF_s_EUM0.ttf")), array("kind" => "webfonts#webfont", "family" => "Pacifico", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pacifico/v7/GIrpeRY1r5CzbfL8r182lw.ttf")), array("kind" => "webfonts#webfont", "family" => "Palanquin", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/palanquin/v1/Hu0eGDVGK_g4saUFu6AK3KCWcynf_cDxXwCLxiixG1c.ttf", "200" => "http://fonts.gstatic.com/s/palanquin/v1/pqXYXD7-VI5ezTjeqQOcyC3USBnSvpkopQaUR-2r7iU.ttf", "300" => "http://fonts.gstatic.com/s/palanquin/v1/c0-J5OCAagpFCKkKraz-Ey3USBnSvpkopQaUR-2r7iU.ttf", "500" => "http://fonts.gstatic.com/s/palanquin/v1/wLvvkEcZMKy95afLWh2EfC3USBnSvpkopQaUR-2r7iU.ttf", "600" => "http://fonts.gstatic.com/s/palanquin/v1/405UIAv95_yZkCECrH6y-i3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/palanquin/v1/-UtkePo3NFvxEN3rGCtTvi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/palanquin/v1/xCwBUoAEV0kzCDwerAZ0Aw.ttf")), array("kind" => "webfonts#webfont", "family" => "Palanquin Dark", "category" => "sans-serif", "variants" => array("regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-maMZTo-EwKMRQt3RWHocLi0.ttf", "600" => "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-mVNxaunw8i4Gywrk2SigRnk.ttf", "700" => "http://fonts.gstatic.com/s/palanquindark/v1/iXyBGf5UbFUu6BG8hOY-mWToair6W0TEE44XrlfKbiM.ttf", "regular" => "http://fonts.gstatic.com/s/palanquindark/v1/PamTqrrgbBh_M3702w39rOfChn3JSg5yz_Q_xmrKQN0.ttf")), array("kind" => "webfonts#webfont", "family" => "Paprika", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/paprika/v4/b-VpyoRSieBdB5BPJVF8HQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Parisienne", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/parisienne/v4/TW74B5QISJNx9moxGlmJfvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Passero One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/passeroone/v8/Yc-7nH5deCCv9Ed0MMnAQqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Passion One", "category" => "display", "variants" => array("regular", "700", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ne1Pd76Vl7zRpE7NLJQ7XU.ttf", "900" => "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ienaqEuufTBk9XMKnKmgDA.ttf", "regular" => "http://fonts.gstatic.com/s/passionone/v6/1UIK1tg3bKJ4J3o35M4heqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Pathway Gothic One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pathwaygothicone/v4/Lqv9ztoTUV8Q0FmQZzPqaA6A6xIYD7vYcYDop1i-K-c.ttf")), array("kind" => "webfonts#webfont", "family" => "Patrick Hand", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/patrickhand/v10/9BG3JJgt_HlF3NpEUehL0C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Patrick Hand SC", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/patrickhandsc/v4/OYFWCgfCR-7uHIovjUZXsbAgSRh1LpJXlLfl8IbsmHg.ttf")), array("kind" => "webfonts#webfont", "family" => "Patua One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/patuaone/v6/njZwotTYjswR4qdhsW-kJw.ttf")), array("kind" => "webfonts#webfont", "family" => "Paytone One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/paytoneone/v8/3WCxC7JAJjQHQVoIE0ZwvqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Peddana", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/peddana/v4/zaSZuj_GhmC8AOTugOROnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Peralta", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/peralta/v4/cTJX5KEuc0GKRU9NXSm-8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Permanent Marker", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/permanentmarker/v5/9vYsg5VgPHKK8SXYbf3sMol14xj5tdg9OHF8w4E7StQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Petit Formal Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/petitformalscript/v4/OEZwr2-ovBsq2n3ACCKoEvVPl2Gjtxj0D6F7QLy1VQc.ttf")), array("kind" => "webfonts#webfont", "family" => "Petrona", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/petrona/v5/nnQwxlP6dhrGovYEFtemTg.ttf")), array("kind" => "webfonts#webfont", "family" => "Philosopher", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/philosopher/v7/napvkewXG9Gqby5vwGHICHe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/philosopher/v7/oZLTrB9jmJsyV0u_T0TKEaCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/philosopher/v7/_9Hnc_gz9k7Qq6uKaeHKmUeOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/philosopher/v7/PuKlryTcvTj7-qZWfLCFIM_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Piedra", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/piedra/v5/owf-AvEEyAj9LJ2tVZ_3Mw.ttf")), array("kind" => "webfonts#webfont", "family" => "Pinyon Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pinyonscript/v6/TzghnhfCn7TuE73f-CBQ0CeUSrabuTpOsMEiRLtKwk0.ttf")), array("kind" => "webfonts#webfont", "family" => "Pirata One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pirataone/v4/WnbD86B4vB2ckYcL7oxuhvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Plaster", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/plaster/v7/O4QG9Z5116CXyfJdR9zxLw.ttf")), array("kind" => "webfonts#webfont", "family" => "Play", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/play/v7/crPhg6I0alLI-MpB3vW-zw.ttf", "regular" => "http://fonts.gstatic.com/s/play/v7/GWvfObW8LhtsOX333MCpBg.ttf")), array("kind" => "webfonts#webfont", "family" => "Playball", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/playball/v6/3hOFiQm_EUzycTpcN9uz4w.ttf")), array("kind" => "webfonts#webfont", "family" => "Playfair Display", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgICsv6SrURqJprbhH_C1Mw8w.ttf", "900" => "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgIKqwMe2wjvZrAR44M0BJZ48.ttf", "regular" => "http://fonts.gstatic.com/s/playfairdisplay/v10/2NBgzUtEeyB-Xtpr9bm1CV6uyC_qD11hrFQ6EGgTJWI.ttf", "italic" => "http://fonts.gstatic.com/s/playfairdisplay/v10/9MkijrV-dEJ0-_NWV7E6NzMsbnvDNEBX25F5HWk9AhI.ttf", "700italic" => "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDECsYW3XoOVcYyYdp9NzzS9E.ttf", "900italic" => "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDEC0JfJ4xmm7j1kL6D7mPxrA.ttf")), array("kind" => "webfonts#webfont", "family" => "Playfair Display SC", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/5ggqGkvWJU_TtW2W8cEubA-Amcyomnuy4WsCiPxGHjw.ttf", "900" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/5ggqGkvWJU_TtW2W8cEubKXL3C32k275YmX_AcBPZ7w.ttf", "regular" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/G0-tvBxd4eQRdwFKB8dRkcpjYTDWIvcAwAccqeW9uNM.ttf", "italic" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/myuYiFR-4NTrUT4w6TKls2klJsJYggW8rlNoTOTuau0.ttf", "700italic" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/6X0OQrQhEEnPo56RalREX4krgPi80XvBcbTwmz-rgmU.ttf", "900italic" => "http://fonts.gstatic.com/s/playfairdisplaysc/v5/6X0OQrQhEEnPo56RalREX8Zag2q3ssKz8uH1RU4a9gs.ttf")), array("kind" => "webfonts#webfont", "family" => "Podkova", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/podkova/v8/SqW4aa8m_KVrOgYSydQ33vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/podkova/v8/eylljyGVfB8ZUQjYY3WZRQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Poiret One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/poiretone/v4/dWcYed048E5gHGDIt8i1CPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Poller One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pollerone/v6/dkctmDlTPcZ6boC8662RA_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Poly", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/poly/v7/bcMAuiacS2qkd54BcwW6_Q.ttf", "italic" => "http://fonts.gstatic.com/s/poly/v7/Zkx-eIlZSjKUrPGYhV5PeA.ttf")), array("kind" => "webfonts#webfont", "family" => "Pompiere", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pompiere/v6/o_va2p9CD5JfmFohAkGZIA.ttf")), array("kind" => "webfonts#webfont", "family" => "Pontano Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pontanosans/v4/gTHiwyxi6S7iiHpqAoiE3C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Poppins", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/poppins/v1/VIeViZ2fPtYBt3B2fQZplvesZW2xOQ-xsNqO47m55DA.ttf", "500" => "http://fonts.gstatic.com/s/poppins/v1/4WGKlFyjcmCFVl8pRsgZ9vesZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/poppins/v1/-zOABrCWORC3lyDh-ajNnPesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/poppins/v1/8JitanEsk5aDh7mDYs-fYfesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/poppins/v1/hlvAxH6aIdOjWlLzgm0jqg.ttf")), array("kind" => "webfonts#webfont", "family" => "Port Lligat Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/portlligatsans/v5/CUEdhRk7oC7up0p6t0g4P6mASEpx5X0ZpsuJOuvfOGA.ttf")), array("kind" => "webfonts#webfont", "family" => "Port Lligat Slab", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/portlligatslab/v5/CUEdhRk7oC7up0p6t0g4PxLSPACXvawUYCBEnHsOe30.ttf")), array("kind" => "webfonts#webfont", "family" => "Pragati Narrow", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2015-06-10", "files" => array("700" => "http://fonts.gstatic.com/s/pragatinarrow/v2/DnSI1zRkc0CY-hI5SC3q3MLtdzs3iyjn_YuT226ZsLU.ttf", "regular" => "http://fonts.gstatic.com/s/pragatinarrow/v2/HzG2TfC862qPNsZsV_djPpTvAuddT2xDMbdz0mdLyZY.ttf")), array("kind" => "webfonts#webfont", "family" => "Prata", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/prata/v6/3gmx8r842loRRm9iQkCDGg.ttf")), array("kind" => "webfonts#webfont", "family" => "Preahvihear", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/preahvihear/v8/82tDI-xTc53CxxOzEG4hDaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Press Start 2P", "category" => "display", "variants" => array("regular"), "subsets" => array("greek", "latin", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/pressstart2p/v4/8Lg6LX8-ntOHUQnvQ0E7o1jfl3W46Sz5gOkEVhcFWF4.ttf")), array("kind" => "webfonts#webfont", "family" => "Princess Sofia", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/princesssofia/v4/8g5l8r9BM0t1QsXLTajDe-wjmA7ie-lFcByzHGRhCIg.ttf")), array("kind" => "webfonts#webfont", "family" => "Prociono", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/prociono/v6/43ZYDHWogdFeNBWTl6ksmw.ttf")), array("kind" => "webfonts#webfont", "family" => "Prosto One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/prostoone/v5/bsqnAElAqk9kX7eABTRFJPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Puritan", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/puritan/v8/pJS2SdwI0SCiVnO0iQSFT_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/puritan/v8/wv_RtgVBSCn-or2MC0n4Kg.ttf", "italic" => "http://fonts.gstatic.com/s/puritan/v8/BqZX8Tp200LeMv1KlzXgLQ.ttf", "700italic" => "http://fonts.gstatic.com/s/puritan/v8/rFG3XkMJL75nUNZwCEIJqC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Purple Purse", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/purplepurse/v5/Q5heFUrdmei9axbMITxxxS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Quando", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-03-22", "files" => array("regular" => "http://fonts.gstatic.com/s/quando/v5/03nDiEZuO2-h3xvtG6UmHg.ttf")), array("kind" => "webfonts#webfont", "family" => "Quantico", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/quantico/v5/OVZZzjcZ3Hkq2ojVcUtDjaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/quantico/v5/pwSnP8Xpaix2rIz99HrSlQ.ttf", "italic" => "http://fonts.gstatic.com/s/quantico/v5/KQhDd2OsZi6HiITUeFQ2U_esZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/quantico/v5/HeCYRcZbdRso3ZUu01ELbQJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Quattrocento", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/quattrocento/v7/Uvi-cRwyvqFpl9j3oT2mqkD2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/quattrocento/v7/WZDISdyil4HsmirlOdBRFC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Quattrocento Sans", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/quattrocentosans/v8/tXSgPxDl7Lk8Zr_5qX8FIbqxG25nQNOioCZSK4sU-CA.ttf", "regular" => "http://fonts.gstatic.com/s/quattrocentosans/v8/efd6FGWWGX5Z3ztwLBrG9eAj_ty82iuwwDTNEYXGiyQ.ttf", "italic" => "http://fonts.gstatic.com/s/quattrocentosans/v8/8PXYbvM__bjl0rBnKiByg532VBCoA_HLsn85tSWZmdo.ttf", "700italic" => "http://fonts.gstatic.com/s/quattrocentosans/v8/8N1PdXpbG6RtFvTjl-5E7buqAJxizi8Dk_SK5et7kMg.ttf")), array("kind" => "webfonts#webfont", "family" => "Questrial", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/questrial/v6/MoHHaw_WwNs_hd9ob1zTVw.ttf")), array("kind" => "webfonts#webfont", "family" => "Quicksand", "category" => "sans-serif", "variants" => array("300", "regular", "700"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/quicksand/v5/qhfoJiLu10kFjChCCTvGlC3USBnSvpkopQaUR-2r7iU.ttf", "700" => "http://fonts.gstatic.com/s/quicksand/v5/32nyIRHyCu6iqEka_hbKsi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/quicksand/v5/Ngv3fIJjKB7sD-bTUGIFCA.ttf")), array("kind" => "webfonts#webfont", "family" => "Quintessential", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/quintessential/v4/mmk6ioesnTrEky_Zb92E5s02lXbtMOtZWfuxKeMZO8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Qwigley", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/qwigley/v6/aDqxws-KubFID85TZHFouw.ttf")), array("kind" => "webfonts#webfont", "family" => "Racing Sans One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/racingsansone/v4/1r3DpWaCiT7y3PD4KgkNyDjVlsJB_M_Q_LtZxsoxvlw.ttf")), array("kind" => "webfonts#webfont", "family" => "Radley", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/radley/v9/FgE9di09a-mXGzAIyI6Q9Q.ttf", "italic" => "http://fonts.gstatic.com/s/radley/v9/Z_JcACuPAOO2f9kzQcGRug.ttf")), array("kind" => "webfonts#webfont", "family" => "Rajdhani", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/rajdhani/v5/9pItuEhQZVGdq8spnHTku6CWcynf_cDxXwCLxiixG1c.ttf", "500" => "http://fonts.gstatic.com/s/rajdhani/v5/nd_5ZpVwm710HcLual0fBqCWcynf_cDxXwCLxiixG1c.ttf", "600" => "http://fonts.gstatic.com/s/rajdhani/v5/5fnmZahByDeTtgxIiqbJSaCWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/rajdhani/v5/UBK6d2Hg7X7wYLlF92aXW6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/rajdhani/v5/Wfy5zp4PGFAFS7-Wetehzw.ttf")), array("kind" => "webfonts#webfont", "family" => "Raleway", "category" => "sans-serif", "variants" => array("100", "100italic", "200", "200italic", "300", "300italic", "regular", "italic", "500", "500italic", "600", "600italic", "700", "700italic", "800", "800italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v10", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/raleway/v10/UDfD6oxBaBnmFJwQ7XAFNw.ttf", "200" => "http://fonts.gstatic.com/s/raleway/v10/LAQwev4hdCtYkOYX4Oc7nPesZW2xOQ-xsNqO47m55DA.ttf", "300" => "http://fonts.gstatic.com/s/raleway/v10/2VvSZU2kb4DZwFfRM4fLQPesZW2xOQ-xsNqO47m55DA.ttf", "500" => "http://fonts.gstatic.com/s/raleway/v10/348gn6PEmbLDWlHbbV15d_esZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/raleway/v10/M7no6oPkwKYJkedjB1wqEvesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/raleway/v10/VGEV9-DrblisWOWLbK-1XPesZW2xOQ-xsNqO47m55DA.ttf", "800" => "http://fonts.gstatic.com/s/raleway/v10/mMh0JrsYMXcLO69jgJwpUvesZW2xOQ-xsNqO47m55DA.ttf", "900" => "http://fonts.gstatic.com/s/raleway/v10/ajQQGcDBLcyLpaUfD76UuPesZW2xOQ-xsNqO47m55DA.ttf", "100italic" => "http://fonts.gstatic.com/s/raleway/v10/hUpHtml6IPNuUR-FwVi2UKCWcynf_cDxXwCLxiixG1c.ttf", "200italic" => "http://fonts.gstatic.com/s/raleway/v10/N2DIbZG4399cPGfifZUEQi3USBnSvpkopQaUR-2r7iU.ttf", "300italic" => "http://fonts.gstatic.com/s/raleway/v10/TVSB8ogXDKMcnAAJ5CqrUi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/raleway/v10/_dCzxpXzIS3sL-gdJWAP8A.ttf", "italic" => "http://fonts.gstatic.com/s/raleway/v10/utU2m1gdZSfuQpArSy5Dbw.ttf", "500italic" => "http://fonts.gstatic.com/s/raleway/v10/S7vGLZZ40c85SJgiptJGVy3USBnSvpkopQaUR-2r7iU.ttf", "600italic" => "http://fonts.gstatic.com/s/raleway/v10/OY22yoG8EJ3IN_muVWm29C3USBnSvpkopQaUR-2r7iU.ttf", "700italic" => "http://fonts.gstatic.com/s/raleway/v10/lFxvRPuGFG5ktd7P0WRwKi3USBnSvpkopQaUR-2r7iU.ttf", "800italic" => "http://fonts.gstatic.com/s/raleway/v10/us4LjTCmlYgh3W8CKujEJi3USBnSvpkopQaUR-2r7iU.ttf", "900italic" => "http://fonts.gstatic.com/s/raleway/v10/oY2RadnkHfshu5f0FLsgVS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Raleway Dots", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ralewaydots/v4/lhLgmWCRcyz-QXo8LCzTfC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ramabhadra", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ramabhadra/v5/JyhxLXRVQChLDGADS_c5MPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ramaraja", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ramaraja/v1/XIqzxFapVczstBedHdQTiw.ttf")), array("kind" => "webfonts#webfont", "family" => "Rambla", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/rambla/v4/C5VZH8BxQKmnBuoC00UPpw.ttf", "regular" => "http://fonts.gstatic.com/s/rambla/v4/YaTmpvm5gFg_ShJKTQmdzg.ttf", "italic" => "http://fonts.gstatic.com/s/rambla/v4/mhUgsKmp0qw3uATdDDAuwA.ttf", "700italic" => "http://fonts.gstatic.com/s/rambla/v4/ziMzUZya6QahrKONSI1TzqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Rammetto One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rammettoone/v5/mh0uQ1tV8QgSx9v_KyEYPC3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ranchers", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ranchers/v4/9ya8CZYhqT66VERfjQ7eLA.ttf")), array("kind" => "webfonts#webfont", "family" => "Rancho", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rancho/v6/ekp3-4QykC4--6KaslRgHA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ranga", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ranga/v1/h8G_gEUH7vHKH-NkjAs34A.ttf", "regular" => "http://fonts.gstatic.com/s/ranga/v1/xpW6zFTNzY1JykoBIqE1Zg.ttf")), array("kind" => "webfonts#webfont", "family" => "Rationale", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rationale/v7/7M2eN-di0NGLQse7HzJRfg.ttf")), array("kind" => "webfonts#webfont", "family" => "Ravi Prakash", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/raviprakash/v3/8EzbM7Rymjk25jWeHxbO6C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Redressed", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/redressed/v6/3aZ5sTBppH3oSm5SabegtA.ttf")), array("kind" => "webfonts#webfont", "family" => "Reenie Beanie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/reeniebeanie/v7/ljpKc6CdXusL1cnGUSamX4jjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Revalia", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/revalia/v4/1TKw66fF5_poiL0Ktgo4_A.ttf")), array("kind" => "webfonts#webfont", "family" => "Rhodium Libre", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-06-03", "files" => array("regular" => "http://fonts.gstatic.com/s/rhodiumlibre/v1/Vxr7A4-xE2zsBDDI8BcseIjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Ribeye", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ribeye/v5/e5w3VE8HnWBln4Ll6lUj3Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Ribeye Marrow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ribeyemarrow/v6/q7cBSA-4ErAXBCDFPrhlY0cTNmV93fYG7UKgsLQNQWs.ttf")), array("kind" => "webfonts#webfont", "family" => "Righteous", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/righteous/v5/0nRRWM_gCGCt2S-BCfN8WQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Risque", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/risque/v4/92RnElGnl8yHP97-KV3Fyg.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto", "category" => "sans-serif", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "900", "900italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v15", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/roboto/v15/7MygqTe2zs9YkP0adA9QQQ.ttf", "300" => "http://fonts.gstatic.com/s/roboto/v15/dtpHsbgPEm2lVWciJZ0P-A.ttf", "500" => "http://fonts.gstatic.com/s/roboto/v15/Uxzkqj-MIMWle-XP2pDNAA.ttf", "700" => "http://fonts.gstatic.com/s/roboto/v15/bdHGHleUa-ndQCOrdpfxfw.ttf", "900" => "http://fonts.gstatic.com/s/roboto/v15/H1vB34nOKWXqzKotq25pcg.ttf", "100italic" => "http://fonts.gstatic.com/s/roboto/v15/T1xnudodhcgwXCmZQ490TPesZW2xOQ-xsNqO47m55DA.ttf", "300italic" => "http://fonts.gstatic.com/s/roboto/v15/iE8HhaRzdhPxC93dOdA056CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/roboto/v15/W5F8_SL0XFawnjxHGsZjJA.ttf", "italic" => "http://fonts.gstatic.com/s/roboto/v15/hcKoSgxdnKlbH5dlTwKbow.ttf", "500italic" => "http://fonts.gstatic.com/s/roboto/v15/daIfzbEw-lbjMyv4rMUUTqCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/roboto/v15/owYYXKukxFDFjr0ZO8NXh6CWcynf_cDxXwCLxiixG1c.ttf", "900italic" => "http://fonts.gstatic.com/s/roboto/v15/b9PWBSMHrT2zM5FgUdtu0aCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto Condensed", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v13", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/robotocondensed/v13/b9QBgL0iMZfDSpmcXcE8nJRhFVcex_hajThhFkHyhYk.ttf", "700" => "http://fonts.gstatic.com/s/robotocondensed/v13/b9QBgL0iMZfDSpmcXcE8nPOYkGiSOYDq_T7HbIOV1hA.ttf", "300italic" => "http://fonts.gstatic.com/s/robotocondensed/v13/mg0cGfGRUERshzBlvqxeAPYa9bgCHecWXGgisnodcS0.ttf", "regular" => "http://fonts.gstatic.com/s/robotocondensed/v13/Zd2E9abXLFGSr9G3YK2MsKDbm6fPDOZJsR8PmdG62gY.ttf", "italic" => "http://fonts.gstatic.com/s/robotocondensed/v13/BP5K8ZAJv9qEbmuFp8RpJY_eiqgTfYGaH0bJiUDZ5GA.ttf", "700italic" => "http://fonts.gstatic.com/s/robotocondensed/v13/mg0cGfGRUERshzBlvqxeAE2zk2RGRC3SlyyLLQfjS_8.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto Mono", "category" => "monospace", "variants" => array("100", "100italic", "300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v4", "lastModified" => "2015-05-28", "files" => array("100" => "http://fonts.gstatic.com/s/robotomono/v4/aOIeRp72J9_Hp_8KwQ9M-YAWxXGWZ3yJw6KhWS7MxOk.ttf", "300" => "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fzy9-WlPSxbfiI49GsXo3q0g.ttf", "500" => "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fz8CNfqCYlB_eIx7H1TVXe60.ttf", "700" => "http://fonts.gstatic.com/s/robotomono/v4/N4duVc9C58uwPiY8_59Fz3e1Pd76Vl7zRpE7NLJQ7XU.ttf", "100italic" => "http://fonts.gstatic.com/s/robotomono/v4/rqQ1zSE-ZGCKVZgew-A9dgyDtfpXZi-8rXUZYR4dumU.ttf", "300italic" => "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA2o9eWDfYYxG3A176Zl7aIg.ttf", "regular" => "http://fonts.gstatic.com/s/robotomono/v4/eJ4cxQe85Lo39t-LVoKa26CWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/robotomono/v4/mE0EPT_93c7f86_WQexR3EeOrDcLawS7-ssYqLr2Xp4.ttf", "500italic" => "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA2nWRcJAYo5PSCx8UfGMHCI.ttf", "700italic" => "http://fonts.gstatic.com/s/robotomono/v4/1OsMuiiO6FCF2x67vzDKA8_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Roboto Slab", "category" => "serif", "variants" => array("100", "300", "regular", "700"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext", "vietnamese"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("100" => "http://fonts.gstatic.com/s/robotoslab/v6/MEz38VLIFL-t46JUtkIEgIAWxXGWZ3yJw6KhWS7MxOk.ttf", "300" => "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJS9-WlPSxbfiI49GsXo3q0g.ttf", "700" => "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJXe1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/robotoslab/v6/3__ulTNA7unv0UtplybPiqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Rochester", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rochester/v6/bnj8tmQBiOkdji_G_yvypg.ttf")), array("kind" => "webfonts#webfont", "family" => "Rock Salt", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rocksalt/v6/Zy7JF9h9WbhD9V3SFMQ1UQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Rokkitt", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v10", "lastModified" => "2016-02-24", "files" => array("700" => "http://fonts.gstatic.com/s/rokkitt/v10/gxlo-sr3rPmvgSixYog_ofesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/rokkitt/v10/GMA7Z_ToF8uSvpZAgnp_VQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Romanesco", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/romanesco/v5/2udIjUrpK_CPzYSxRVzD4Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Ropa Sans", "category" => "sans-serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ropasans/v5/Gba7ZzVBuhg6nX_AoSwlkQ.ttf", "italic" => "http://fonts.gstatic.com/s/ropasans/v5/V1zbhZQscNrh63dy5Jk2nqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Rosario", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v11", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/rosario/v11/nrS6PJvDWN42RP4TFWccd_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/rosario/v11/bL-cEh8dXtDupB2WccA2LA.ttf", "italic" => "http://fonts.gstatic.com/s/rosario/v11/pkflNy18HEuVVx4EOjeb_Q.ttf", "700italic" => "http://fonts.gstatic.com/s/rosario/v11/EOgFX2Va5VGrkhn_eDpIRS3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Rosarivo", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rosarivo/v4/EmPiINK0qyqc7KSsNjJamA.ttf", "italic" => "http://fonts.gstatic.com/s/rosarivo/v4/u3VuWsWQlX1pDqsbz4paNPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Rouge Script", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rougescript/v5/AgXDSqZJmy12qS0ixjs6Vy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Rozha One", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v2", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rozhaone/v2/PyrMHQ6lucEIxwKmhqsX8A.ttf")), array("kind" => "webfonts#webfont", "family" => "Rubik", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v1", "lastModified" => "2015-07-22", "files" => array("300" => "http://fonts.gstatic.com/s/rubik/v1/o1vXYO8YwDpErHEAPAxpOg.ttf", "500" => "http://fonts.gstatic.com/s/rubik/v1/D4HihERG27s-BJrQ4dvkbw.ttf", "700" => "http://fonts.gstatic.com/s/rubik/v1/m1GGHcpLe6Mb0_sAyjXE4g.ttf", "900" => "http://fonts.gstatic.com/s/rubik/v1/mOHfPRl5uP4vw7-5-dbnng.ttf", "300italic" => "http://fonts.gstatic.com/s/rubik/v1/NyXDvUhvZLSWiVfGa5KM-vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/rubik/v1/4sMyW_teKWHB3K8Hm-Il6A.ttf", "italic" => "http://fonts.gstatic.com/s/rubik/v1/elD65ddI0qvNcCh42b1Iqg.ttf", "500italic" => "http://fonts.gstatic.com/s/rubik/v1/0hcxMdoMbXtHiEM1ebdN6PesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/rubik/v1/R4g_rs714cUXVZcdnRdHw_esZW2xOQ-xsNqO47m55DA.ttf", "900italic" => "http://fonts.gstatic.com/s/rubik/v1/HH1b7kBbwInqlw8OQxRE5vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Rubik Mono One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rubikmonoone/v5/e_cupPtD4BrZzotubJD7UbAREgn5xbW23GEXXnhMQ5Y.ttf")), array("kind" => "webfonts#webfont", "family" => "Rubik One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rubikone/v4/Zs6TtctNRSIR8T5PO018rQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruda", "category" => "sans-serif", "variants" => array("regular", "700", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ruda/v7/JABOu1SYOHcGXVejUq4w6g.ttf", "900" => "http://fonts.gstatic.com/s/ruda/v7/Uzusv-enCjoIrznlJJaBRw.ttf", "regular" => "http://fonts.gstatic.com/s/ruda/v7/jPEIPB7DM2DNK_uBGv2HGw.ttf")), array("kind" => "webfonts#webfont", "family" => "Rufina", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/rufina/v4/D0RUjXFr55y4MVZY2Ww_RA.ttf", "regular" => "http://fonts.gstatic.com/s/rufina/v4/s9IFr_fIemiohfZS-ZRDbQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruge Boogie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rugeboogie/v7/U-TTmltL8aENLVIqYbI5QaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruluko", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ruluko/v4/lv4cMwJtrx_dzmlK5SDc1g.ttf")), array("kind" => "webfonts#webfont", "family" => "Rum Raisin", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rumraisin/v4/kDiL-ntDOEq26B7kYM7cx_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruslan Display", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ruslandisplay/v7/SREdhlyLNUfU1VssRBfs3rgH88D3l9N4auRNHrNS708.ttf")), array("kind" => "webfonts#webfont", "family" => "Russo One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/russoone/v5/zfwxZ--UhUc7FVfgT21PRQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Ruthie", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ruthie/v6/vJ2LorukHSbWYoEs5juivg.ttf")), array("kind" => "webfonts#webfont", "family" => "Rye", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/rye/v4/VUrJlpPpSZxspl3w_yNOrQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sacramento", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sacramento/v4/_kv-qycSHMNdhjiv0Kj7BvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sahitya", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/sahitya/v1/Zm5hNvMwUyN3tC4GMkH1l_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/sahitya/v1/wQWULcDbZqljdTfjOUtDvw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sail", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-24", "files" => array("regular" => "http://fonts.gstatic.com/s/sail/v7/iuEoG6kt-bePGvtdpL0GUQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Salsa", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/salsa/v6/BnpUCBmYdvggScEPs5JbpA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sanchez", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sanchez/v4/BEL8ao-E2LJ5eHPLB2UAiw.ttf", "italic" => "http://fonts.gstatic.com/s/sanchez/v4/iSrhkWLexUZzDeNxNEHtzA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sancreek", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sancreek/v7/8ZacBMraWMvHly4IJI3esw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sansita One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sansitaone/v6/xWqf68oB50JXqGIRR0h2hqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Sarala", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/sarala/v1/hpc9cz8KYsazwq2In_oJYw.ttf", "regular" => "http://fonts.gstatic.com/s/sarala/v1/ohip9lixCHoBab7hTtgLnw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sarina", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sarina/v5/XYtRfaSknHIU3NHdfTdXoQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sarpanch", "category" => "sans-serif", "variants" => array("regular", "500", "600", "700", "800", "900"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/sarpanch/v1/Ov7BxSrFSZYrfuJxL1LzQaCWcynf_cDxXwCLxiixG1c.ttf", "600" => "http://fonts.gstatic.com/s/sarpanch/v1/WTnP2wnc0qSbUaaDG-2OQ6CWcynf_cDxXwCLxiixG1c.ttf", "700" => "http://fonts.gstatic.com/s/sarpanch/v1/57kYsSpovYmFaEt2hsZhv6CWcynf_cDxXwCLxiixG1c.ttf", "800" => "http://fonts.gstatic.com/s/sarpanch/v1/OKyqPLjdnuVghR-1TV6RzaCWcynf_cDxXwCLxiixG1c.ttf", "900" => "http://fonts.gstatic.com/s/sarpanch/v1/JhYc2cr6kqWTo_P0vfvJR6CWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/sarpanch/v1/YMBZdT27b6O5a1DADbAGSg.ttf")), array("kind" => "webfonts#webfont", "family" => "Satisfy", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/satisfy/v6/PRlyepkd-JCGHiN8e9WV2w.ttf")), array("kind" => "webfonts#webfont", "family" => "Scada", "category" => "sans-serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/scada/v4/t6XNWdMdVWUz93EuRVmifQ.ttf", "regular" => "http://fonts.gstatic.com/s/scada/v4/iZNC3ZEYwe3je6H-28d5Ug.ttf", "italic" => "http://fonts.gstatic.com/s/scada/v4/PCGyLT1qNawkOUQ3uHFhBw.ttf", "700italic" => "http://fonts.gstatic.com/s/scada/v4/kLrBIf7V4mDMwcd_Yw7-D_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Scheherazade", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "arabic"), "version" => "v11", "lastModified" => "2015-08-26", "files" => array("700" => "http://fonts.gstatic.com/s/scheherazade/v11/C1wtT46acJkQxc6mPHwvHED2ttfZwueP-QU272T9-k4.ttf", "regular" => "http://fonts.gstatic.com/s/scheherazade/v11/AuKlqGWzUC-8XqMOmsqXiy3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Schoolbell", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/schoolbell/v6/95-3djEuubb3cJx-6E7j4vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Seaweed Script", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/seaweedscript/v4/eorWAPpOvvWrPw5IHwE60BnpV0hQCek3EmWnCPrvGRM.ttf")), array("kind" => "webfonts#webfont", "family" => "Sevillana", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sevillana/v4/6m1Nh35oP7YEt00U80Smiw.ttf")), array("kind" => "webfonts#webfont", "family" => "Seymour One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/seymourone/v4/HrdG2AEG_870Xb7xBVv6C6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Shadows Into Light", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shadowsintolight/v6/clhLqOv7MXn459PTh0gXYAW_5bEze-iLRNvGrRpJsfM.ttf")), array("kind" => "webfonts#webfont", "family" => "Shadows Into Light Two", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shadowsintolighttwo/v4/gDxHeefcXIo-lOuZFCn2xVQrZk-Pga5KeEE_oZjkQjQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Shanti", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shanti/v8/lc4nG_JG6Q-2FQSOMMhb_w.ttf")), array("kind" => "webfonts#webfont", "family" => "Share", "category" => "display", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/share/v5/XrU8e7a1YKurguyY2azk1Q.ttf", "regular" => "http://fonts.gstatic.com/s/share/v5/1ytD7zSb_-g9I2GG67vmVw.ttf", "italic" => "http://fonts.gstatic.com/s/share/v5/a9YGdQWFRlNJ0zClJVaY3Q.ttf", "700italic" => "http://fonts.gstatic.com/s/share/v5/A992-bLVYwAflKu6iaznufesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Share Tech", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sharetech/v4/Dq3DuZ5_0SW3oEfAWFpen_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Share Tech Mono", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sharetechmono/v5/RQxK-3RA0Lnf3gnnnNrAscwD6PD0c3_abh9zHKQtbGU.ttf")), array("kind" => "webfonts#webfont", "family" => "Shojumaru", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shojumaru/v4/WP8cxonzQQVAoI3RJQ2wug.ttf")), array("kind" => "webfonts#webfont", "family" => "Short Stack", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/shortstack/v6/v4dXPI0Rm8XN9gk4SDdqlqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Siemreap", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/siemreap/v9/JSK-mOIsXwxo-zE9XDDl_g.ttf")), array("kind" => "webfonts#webfont", "family" => "Sigmar One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sigmarone/v6/oh_5NxD5JBZksdo2EntKefesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Signika", "category" => "sans-serif", "variants" => array("300", "regular", "600", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/signika/v6/0wDPonOzsYeEo-1KO78w4fesZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/signika/v6/lQMOF6NUN2ooR7WvB7tADvesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/signika/v6/lEcnfPBICWJPv5BbVNnFJPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/signika/v6/WvDswbww0oAtvBg2l1L-9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Signika Negative", "category" => "sans-serif", "variants" => array("300", "regular", "600", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FjYFXpUPtCmIEFDvjUnLLaI.ttf", "600" => "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FrKLaDJM01OezSVA2R_O3qI.ttf", "700" => "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FpYzPxtVvobH1w3hEppR8WI.ttf", "regular" => "http://fonts.gstatic.com/s/signikanegative/v5/Z-Q1hzbY8uAo3TpTyPFMXVM1lnCWMnren5_v6047e5A.ttf")), array("kind" => "webfonts#webfont", "family" => "Simonetta", "category" => "display", "variants" => array("regular", "italic", "900", "900italic"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("900" => "http://fonts.gstatic.com/s/simonetta/v5/22EwvvJ2r1VwVCxit5LcVi3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/simonetta/v5/fN8puNuahBo4EYMQgp12Yg.ttf", "italic" => "http://fonts.gstatic.com/s/simonetta/v5/ynxQ3FqfF_Nziwy3T9ZwL6CWcynf_cDxXwCLxiixG1c.ttf", "900italic" => "http://fonts.gstatic.com/s/simonetta/v5/WUXOpCgBZaRPrWtMCpeKoienaqEuufTBk9XMKnKmgDA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sintony", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/sintony/v4/zVXQB1wqJn6PE4dWXoYpvPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/sintony/v4/IDhCijoIMev2L6Lg5QsduQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sirin Stencil", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sirinstencil/v5/pRpLdo0SawzO7MoBpvowsImg74kgS1F7KeR8rWhYwkU.ttf")), array("kind" => "webfonts#webfont", "family" => "Six Caps", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sixcaps/v7/_XeDnO0HOV8Er9u97If1tQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Skranji", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/skranji/v4/Lcrhg-fviVkxiEgoadsI1vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/skranji/v4/jnOLPS0iZmDL7dfWnW3nIw.ttf")), array("kind" => "webfonts#webfont", "family" => "Slabo 13px", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/slabo13px/v3/jPGWFTjRXfCSzy0qd1nqdvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Slabo 27px", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/slabo27px/v3/gC0o8B9eU21EafNkXlRAfPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Slackey", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/slackey/v6/evRIMNhGVCRJvCPv4kteeA.ttf")), array("kind" => "webfonts#webfont", "family" => "Smokum", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/smokum/v6/8YP4BuAcy97X8WfdKfxVRw.ttf")), array("kind" => "webfonts#webfont", "family" => "Smythe", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/smythe/v7/yACD1gy_MpbB9Ft42fUvYw.ttf")), array("kind" => "webfonts#webfont", "family" => "Sniglet", "category" => "display", "variants" => array("regular", "800"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("800" => "http://fonts.gstatic.com/s/sniglet/v7/NLF91nBmcEfkBgcEWbHFa_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/sniglet/v7/XWhyQLHH4SpCVsHRPRgu9w.ttf")), array("kind" => "webfonts#webfont", "family" => "Snippet", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/snippet/v6/eUcYMLq2GtHZovLlQH_9kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Snowburst One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/snowburstone/v4/zSQzKOPukXRux2oTqfYJjIjjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Sofadi One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sofadione/v4/nirf4G12IcJ6KI8Eoj119fesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sofia", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sofia/v5/Imnvx0Ag9r6iDBFUY5_RaQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Sonsie One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sonsieone/v5/KSP7xT1OSy0q2ob6RQOTWPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sorts Mill Goudy", "category" => "serif", "variants" => array("regular", "italic"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sortsmillgoudy/v6/JzRrPKdwEnE8F1TDmDLMUlIL2Qjg-Xlsg_fhGbe2P5U.ttf", "italic" => "http://fonts.gstatic.com/s/sortsmillgoudy/v6/UUu1lKiy4hRmBWk599VL1TYNkCNSzLyoucKmbTguvr0.ttf")), array("kind" => "webfonts#webfont", "family" => "Source Code Pro", "category" => "monospace", "variants" => array("200", "300", "regular", "500", "600", "700", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqaXvKVW_haheDNrHjziJZVk.ttf", "300" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqVP7R5lD_au4SZC6Ks_vyWs.ttf", "500" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqX63uKwMO11Of4rJWV582wg.ttf", "600" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqeiMeWyi5E_-XkTgB5psiDg.ttf", "700" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqfgXsetDviZcdR5OzC1KPcw.ttf", "900" => "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqRA_awHl7mXRjE_LQVochcU.ttf", "regular" => "http://fonts.gstatic.com/s/sourcecodepro/v6/mrl8jkM18OlOQN8JLgasD9Rl0pGnog23EMYRrBmUzJQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Source Sans Pro", "category" => "sans-serif", "variants" => array("200", "200italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic", "900", "900italic"), "subsets" => array("latin", "latin-ext", "vietnamese"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGKXvKVW_haheDNrHjziJZVk.ttf", "300" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGFP7R5lD_au4SZC6Ks_vyWs.ttf", "600" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGOiMeWyi5E_-XkTgB5psiDg.ttf", "700" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPgXsetDviZcdR5OzC1KPcw.ttf", "900" => "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGBA_awHl7mXRjE_LQVochcU.ttf", "200italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6OptKU7UIBg2hLM7eMTU8bI.ttf", "300italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6DUpNKoQAsDux-Todp8f29w.ttf", "regular" => "http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlNRl0pGnog23EMYRrBmUzJQ.ttf", "italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/M2Jd71oPJhLKp0zdtTvoMwRX4TIfMQQEXLu74GftruE.ttf", "600italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6Pp6lGoTTgjlW0sC4r900Co.ttf", "700italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6LVT4locI09aamSzFGQlDMY.ttf", "900italic" => "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6A0NcF6HPGWR298uWIdxWv0.ttf")), array("kind" => "webfonts#webfont", "family" => "Source Serif Pro", "category" => "serif", "variants" => array("regular", "600", "700"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("600" => "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarGi4cQnvCGV11m1KlXh97aQ.ttf", "700" => "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarEkpYHRvxGNSCrR82n_RDNk.ttf", "regular" => "http://fonts.gstatic.com/s/sourceserifpro/v4/CeUM4np2c42DV49nanp55YGL0S0YDpKs5GpLtZIQ0m4.ttf")), array("kind" => "webfonts#webfont", "family" => "Special Elite", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/specialelite/v6/9-wW4zu3WNoD5Fjka35Jm4jjx0o0jr6fNXxPgYh_a8Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Spicy Rice", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/spicyrice/v5/WGCtz7cLoggXARPi9OGD6_esZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Spinnaker", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/spinnaker/v8/MQdIXivKITpjROUdiN6Jgg.ttf")), array("kind" => "webfonts#webfont", "family" => "Spirax", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/spirax/v5/IOKqhk-Ccl7y31yDsePPkw.ttf")), array("kind" => "webfonts#webfont", "family" => "Squada One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/squadaone/v5/3tzGuaJdD65cZVgfQzN8uvesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Sree Krushnadevaraya", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sreekrushnadevaraya/v4/CdsXmnHyEqVl1ahzOh5qnzjDZVem5Eb4d0dXjXa0F_Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Stalemate", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stalemate/v4/wQLCnG0qB6mOu2Wit2dt_w.ttf")), array("kind" => "webfonts#webfont", "family" => "Stalinist One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stalinistone/v8/MQpS-WezM9W4Dd7D3B7I-UT7eZ8.ttf")), array("kind" => "webfonts#webfont", "family" => "Stardos Stencil", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/stardosstencil/v6/h4ExtgvoXhPtv9Ieqd-XC81wDCbBgmIo8UyjIhmkeSM.ttf", "regular" => "http://fonts.gstatic.com/s/stardosstencil/v6/ygEOyTW9a6u4fi4OXEZeTFf2eT4jUldwg_9fgfY_tHc.ttf")), array("kind" => "webfonts#webfont", "family" => "Stint Ultra Condensed", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stintultracondensed/v5/8DqLK6-YSClFZt3u3EgOUYelbRYnLTTQA1Z5cVLnsI4.ttf")), array("kind" => "webfonts#webfont", "family" => "Stint Ultra Expanded", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/stintultraexpanded/v4/FeigX-wDDgHMCKuhekhedQ7dxr0N5HY0cZKknTIL6n4.ttf")), array("kind" => "webfonts#webfont", "family" => "Stoke", "category" => "serif", "variants" => array("300", "regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/stoke/v6/Sell9475FOS8jUqQsfFsUQ.ttf", "regular" => "http://fonts.gstatic.com/s/stoke/v6/A7qJNoqOm2d6o1E6e0yUFg.ttf")), array("kind" => "webfonts#webfont", "family" => "Strait", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/strait/v4/m4W73ViNmProETY2ybc-Bg.ttf")), array("kind" => "webfonts#webfont", "family" => "Sue Ellen Francisco", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sueellenfrancisco/v7/TwHX4vSxMUnJUdEz1JIgrhzazJzPVbGl8jnf1tisRz4.ttf")), array("kind" => "webfonts#webfont", "family" => "Sumana", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-05-04", "files" => array("700" => "http://fonts.gstatic.com/s/sumana/v1/8AcM-KAproitONSBBHj3sQ.ttf", "regular" => "http://fonts.gstatic.com/s/sumana/v1/wgdl__wAK7pzliiWs0Nlog.ttf")), array("kind" => "webfonts#webfont", "family" => "Sunshiney", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/sunshiney/v6/kaWOb4pGbwNijM7CkxK1sQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Supermercado One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/supermercadoone/v6/kMGPVTNFiFEp1U274uBMb4mm5hmSKNFf3C5YoMa-lrM.ttf")), array("kind" => "webfonts#webfont", "family" => "Sura", "category" => "serif", "variants" => array("regular", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2015-06-17", "files" => array("700" => "http://fonts.gstatic.com/s/sura/v1/Z5bXQaFGmoWicN1WlcncxA.ttf", "regular" => "http://fonts.gstatic.com/s/sura/v1/jznKrhTH5NezYxb0-Q5zzA.ttf")), array("kind" => "webfonts#webfont", "family" => "Suranna", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/suranna/v4/PYmfr6TQeTqZ-r8HnPM-kA.ttf")), array("kind" => "webfonts#webfont", "family" => "Suravaram", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/suravaram/v3/G4dPee4pel_w2HqzavW4MA.ttf")), array("kind" => "webfonts#webfont", "family" => "Suwannaphum", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v9", "lastModified" => "2015-04-06", "files" => array("regular" => "http://fonts.gstatic.com/s/suwannaphum/v9/1jIPOyXied3T79GCnSlCN6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Swanky and Moo Moo", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/swankyandmoomoo/v6/orVNZ9kDeE3lWp3U3YELu9DVLKqNC3_XMNHhr8S94FU.ttf")), array("kind" => "webfonts#webfont", "family" => "Syncopate", "category" => "sans-serif", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/syncopate/v7/S5z8ixiOoC4WJ1im6jAlYC3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/syncopate/v7/RQVwO52fAH6MI764EcaYtw.ttf")), array("kind" => "webfonts#webfont", "family" => "Tangerine", "category" => "handwriting", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/tangerine/v7/UkFsr-RwJB_d2l9fIWsx3i3USBnSvpkopQaUR-2r7iU.ttf", "regular" => "http://fonts.gstatic.com/s/tangerine/v7/DTPeM3IROhnkz7aYG2a9sA.ttf")), array("kind" => "webfonts#webfont", "family" => "Taprom", "category" => "display", "variants" => array("regular"), "subsets" => array("khmer"), "version" => "v8", "lastModified" => "2015-04-03", "files" => array("regular" => "http://fonts.gstatic.com/s/taprom/v8/-KByU3BaUsyIvQs79qFObg.ttf")), array("kind" => "webfonts#webfont", "family" => "Tauri", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tauri/v4/XIWeYJDXNqiVNej0zEqtGg.ttf")), array("kind" => "webfonts#webfont", "family" => "Teko", "category" => "sans-serif", "variants" => array("300", "regular", "500", "600", "700"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/teko/v5/OobFGE9eo24rcBpN6zXDaQ.ttf", "500" => "http://fonts.gstatic.com/s/teko/v5/FQ0duU7gWM4cSaImOfAjBA.ttf", "600" => "http://fonts.gstatic.com/s/teko/v5/QDx_i8H-TZ1IK1JEVrqwEQ.ttf", "700" => "http://fonts.gstatic.com/s/teko/v5/xKfTxe_SWpH4xU75vmvylA.ttf", "regular" => "http://fonts.gstatic.com/s/teko/v5/UtekqODEqZXSN2L-njejpA.ttf")), array("kind" => "webfonts#webfont", "family" => "Telex", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/telex/v4/24-3xP9ywYeHOcFU3iGk8A.ttf")), array("kind" => "webfonts#webfont", "family" => "Tenali Ramakrishna", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v3", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tenaliramakrishna/v3/M0nTmDqv2M7AGoGh-c946BZak5pSBHqWX6uyVMiMFoA.ttf")), array("kind" => "webfonts#webfont", "family" => "Tenor Sans", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tenorsans/v7/dUBulmjNJJInvK5vL7O9yfesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Text Me One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/textmeone/v4/9em_3ckd_P5PQkP4aDyDLqCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "The Girl Next Door", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/thegirlnextdoor/v7/cWRA4JVGeEcHGcPl5hmX7kzo0nFFoM60ux_D9BUymX4.ttf")), array("kind" => "webfonts#webfont", "family" => "Tienne", "category" => "serif", "variants" => array("regular", "700", "900"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/tienne/v8/JvoCDOlyOSEyYGRwCyfs3g.ttf", "900" => "http://fonts.gstatic.com/s/tienne/v8/FBano5T521OWexj2iRYLMw.ttf", "regular" => "http://fonts.gstatic.com/s/tienne/v8/-IIfDl701C0z7-fy2kmGvA.ttf")), array("kind" => "webfonts#webfont", "family" => "Tillana", "category" => "handwriting", "variants" => array("regular", "500", "600", "700", "800"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("500" => "http://fonts.gstatic.com/s/tillana/v1/gqdUngSIcY9tSla5eCZky_esZW2xOQ-xsNqO47m55DA.ttf", "600" => "http://fonts.gstatic.com/s/tillana/v1/fqon6-r15hy8M1cyiYfQBvesZW2xOQ-xsNqO47m55DA.ttf", "700" => "http://fonts.gstatic.com/s/tillana/v1/jGARMTxLrMerzTCpGBpMffesZW2xOQ-xsNqO47m55DA.ttf", "800" => "http://fonts.gstatic.com/s/tillana/v1/pmTtNH_Ibktj5Cyc1XrP6vesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/tillana/v1/zN0D-jDPsr1HzU3VRFLY5g.ttf")), array("kind" => "webfonts#webfont", "family" => "Timmana", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "telugu"), "version" => "v1", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/timmana/v1/T25SicsJUJkc2s2sbBsDnA.ttf")), array("kind" => "webfonts#webfont", "family" => "Tinos", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "hebrew", "greek-ext", "vietnamese"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/tinos/v9/vHXfhX8jZuQruowfon93yQ.ttf", "regular" => "http://fonts.gstatic.com/s/tinos/v9/EqpUbkVmutfwZ0PjpoGwCg.ttf", "italic" => "http://fonts.gstatic.com/s/tinos/v9/slfyzlasCr9vTsaP4lUh9A.ttf", "700italic" => "http://fonts.gstatic.com/s/tinos/v9/M6kfzvDMM0CdxdraoFpG6vesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Titan One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/titanone/v4/FbvpRvzfV_oipS0De3iAZg.ttf")), array("kind" => "webfonts#webfont", "family" => "Titillium Web", "category" => "sans-serif", "variants" => array("200", "200italic", "300", "300italic", "regular", "italic", "600", "600italic", "700", "700italic", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("200" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wprzOdCrLccoxq42eaxM802O0.ttf", "300" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr9ZAkYT8DuUZELiKLwMGWAo.ttf", "600" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr28K9dEd5Ue-HTQrlA7E2xQ.ttf", "700" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr2-6tpSbB9YhmWtmd1_gi_U.ttf", "900" => "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr7L0GmZLri-m-nfoo0Vul4Y.ttf", "200italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPj4N98U-66ThNJvtgddRfBE.ttf", "300italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPrfzCkqg7ORZlRf2cc4mXu8.ttf", "regular" => "http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcTyagQBwYgYywpS70xNq8SQ.ttf", "italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/r9OmwyQxrgzUAhaLET_KO-ixohbIP6lHkU-1Mgq95cY.ttf", "600italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPgOhzTSndyK8UWja2yJjKLc.ttf", "700italic" => "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPio3LEw-4MM8Ao2j9wPOfpw.ttf")), array("kind" => "webfonts#webfont", "family" => "Trade Winds", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tradewinds/v5/sDOCVgAxw6PEUi2xdMsoDaCWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Trocchi", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/trocchi/v4/uldNPaKrUGVeGCVsmacLwA.ttf")), array("kind" => "webfonts#webfont", "family" => "Trochut", "category" => "display", "variants" => array("regular", "italic", "700"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/trochut/v4/lWqNOv6ISR8ehNzGLFLnJ_esZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/trochut/v4/6Y65B0x-2JsnYt16OH5omw.ttf", "italic" => "http://fonts.gstatic.com/s/trochut/v4/pczUwr4ZFvC79TgNO5cZng.ttf")), array("kind" => "webfonts#webfont", "family" => "Trykker", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/trykker/v5/YiVrVJpBFN7I1l_CWk6yYQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Tulpen One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/tulpenone/v6/lwcTfVIEVxpZLZlWzR5baPesZW2xOQ-xsNqO47m55DA.ttf")), array("kind" => "webfonts#webfont", "family" => "Ubuntu", "category" => "sans-serif", "variants" => array("300", "300italic", "regular", "italic", "500", "500italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext"), "version" => "v9", "lastModified" => "2016-02-23", "files" => array("300" => "http://fonts.gstatic.com/s/ubuntu/v9/7-wH0j2QCTHKgp7vLh9-sQ.ttf", "500" => "http://fonts.gstatic.com/s/ubuntu/v9/bMbHEMwSUmkzcK2x_74QbA.ttf", "700" => "http://fonts.gstatic.com/s/ubuntu/v9/B7BtHjNYwAp3HgLNagENOQ.ttf", "300italic" => "http://fonts.gstatic.com/s/ubuntu/v9/j-TYDdXcC_eQzhhp386SjaCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/ubuntu/v9/lhhB5ZCwEkBRbHMSnYuKyA.ttf", "italic" => "http://fonts.gstatic.com/s/ubuntu/v9/b9hP8wd30SygxZjGGk4DCQ.ttf", "500italic" => "http://fonts.gstatic.com/s/ubuntu/v9/NWdMogIO7U6AtEM4dDdf_aCWcynf_cDxXwCLxiixG1c.ttf", "700italic" => "http://fonts.gstatic.com/s/ubuntu/v9/pqisLQoeO9YTDCNnlQ9bf6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Ubuntu Condensed", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ubuntucondensed/v7/DBCt-NXN57MTAFjitYxdrKDbm6fPDOZJsR8PmdG62gY.ttf")), array("kind" => "webfonts#webfont", "family" => "Ubuntu Mono", "category" => "monospace", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("greek", "latin", "cyrillic-ext", "latin-ext", "cyrillic", "greek-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/ubuntumono/v6/ceqTZGKHipo8pJj4molytne1Pd76Vl7zRpE7NLJQ7XU.ttf", "regular" => "http://fonts.gstatic.com/s/ubuntumono/v6/EgeuS9OtEmA0y_JRo03MQaCWcynf_cDxXwCLxiixG1c.ttf", "italic" => "http://fonts.gstatic.com/s/ubuntumono/v6/KAKuHXAHZOeECOWAHsRKA0eOrDcLawS7-ssYqLr2Xp4.ttf", "700italic" => "http://fonts.gstatic.com/s/ubuntumono/v6/n_d8tv_JOIiYyMXR4eaV9c_zJjSACmk0BRPxQqhnNLU.ttf")), array("kind" => "webfonts#webfont", "family" => "Ultra", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/ultra/v8/OW8uXkOstRADuhEmGOFQLA.ttf")), array("kind" => "webfonts#webfont", "family" => "Uncial Antiqua", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/uncialantiqua/v4/F-leefDiFwQXsyd6eaSllqrFJ4O13IHVxZbM6yoslpo.ttf")), array("kind" => "webfonts#webfont", "family" => "Underdog", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext", "cyrillic"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/underdog/v5/gBv9yjez_-5PnTprHWq0ig.ttf")), array("kind" => "webfonts#webfont", "family" => "Unica One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unicaone/v4/KbYKlhWMDpatWViqDkNQgA.ttf")), array("kind" => "webfonts#webfont", "family" => "UnifrakturCook", "category" => "display", "variants" => array("700"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/unifrakturcook/v8/ASwh69ykD8iaoYijVEU6RrWZkcsCTHKV51zmcUsafQ0.ttf")), array("kind" => "webfonts#webfont", "family" => "UnifrakturMaguntia", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unifrakturmaguntia/v7/7KWy3ymCVR_xfAvvcIXm3-kdNg30GQauG_DE-tMYtWk.ttf")), array("kind" => "webfonts#webfont", "family" => "Unkempt", "category" => "display", "variants" => array("regular", "700"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/unkempt/v7/V7H-GCl9bgwGwqFqTTgDHvesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/unkempt/v7/NLLBeNSspr0RGs71R5LHWA.ttf")), array("kind" => "webfonts#webfont", "family" => "Unlock", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unlock/v6/rXEQzK7uIAlhoyoAEiMy1w.ttf")), array("kind" => "webfonts#webfont", "family" => "Unna", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/unna/v8/UAS0AM7AmbdCNY_80xyAZQ.ttf")), array("kind" => "webfonts#webfont", "family" => "VT323", "category" => "monospace", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vt323/v7/ITU2YQfM073o1iYK3nSOmQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Vampiro One", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vampiroone/v7/OVDs4gY4WpS5u3Qd1gXRW6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Varela", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/varela/v7/ON7qs0cKUUixhhDFXlZUjw.ttf")), array("kind" => "webfonts#webfont", "family" => "Varela Round", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/varelaround/v6/APH4jr0uSos5wiut5cpjri3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Vast Shadow", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vastshadow/v6/io4hqKX3ibiqQQjYfW0-h6CWcynf_cDxXwCLxiixG1c.ttf")), array("kind" => "webfonts#webfont", "family" => "Vesper Libre", "category" => "serif", "variants" => array("regular", "500", "700", "900"), "subsets" => array("latin", "devanagari", "latin-ext"), "version" => "v7", "lastModified" => "2015-06-03", "files" => array("500" => "http://fonts.gstatic.com/s/vesperlibre/v7/0liLgNkygqH6EOtsVjZDsZMQuUSAwdHsY8ov_6tk1oA.ttf", "700" => "http://fonts.gstatic.com/s/vesperlibre/v7/0liLgNkygqH6EOtsVjZDsUD2ttfZwueP-QU272T9-k4.ttf", "900" => "http://fonts.gstatic.com/s/vesperlibre/v7/0liLgNkygqH6EOtsVjZDsaObDOjC3UL77puoeHsE3fw.ttf", "regular" => "http://fonts.gstatic.com/s/vesperlibre/v7/Cg-TeZFsqV8BaOcoVwzu2C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Vibur", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vibur/v7/xB9aKsUbJo68XP0bAg2iLw.ttf")), array("kind" => "webfonts#webfont", "family" => "Vidaloka", "category" => "serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/vidaloka/v8/C6Nul0ogKUWkx356rrt9RA.ttf")), array("kind" => "webfonts#webfont", "family" => "Viga", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/viga/v5/uD87gDbhS7frHLX4uL6agg.ttf")), array("kind" => "webfonts#webfont", "family" => "Voces", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v5", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/voces/v5/QoBH6g6yKgNIgvL8A2aE2Q.ttf")), array("kind" => "webfonts#webfont", "family" => "Volkhov", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/volkhov/v8/L8PbKS-kEoLHm7nP--NCzPesZW2xOQ-xsNqO47m55DA.ttf", "regular" => "http://fonts.gstatic.com/s/volkhov/v8/MDIZAofe1T_J3un5Kgo8zg.ttf", "italic" => "http://fonts.gstatic.com/s/volkhov/v8/1rTjmztKEpbkKH06JwF8Yw.ttf", "700italic" => "http://fonts.gstatic.com/s/volkhov/v8/W6oG0QDDjCgj0gmsHE520C3USBnSvpkopQaUR-2r7iU.ttf")), array("kind" => "webfonts#webfont", "family" => "Vollkorn", "category" => "serif", "variants" => array("regular", "italic", "700", "700italic"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("700" => "http://fonts.gstatic.com/s/vollkorn/v6/gOwQjJVGXlDOONC12hVoBqCWcynf_cDxXwCLxiixG1c.ttf", "regular" => "http://fonts.gstatic.com/s/vollkorn/v6/IiexqYAeh8uII223thYx3w.ttf", "italic" => "http://fonts.gstatic.com/s/vollkorn/v6/UuIzosgR1ovBhJFdwVp3fvesZW2xOQ-xsNqO47m55DA.ttf", "700italic" => "http://fonts.gstatic.com/s/vollkorn/v6/KNiAlx6phRqXCwnZZG51JAJKKGfqHaYFsRG-T3ceEVo.ttf")), array("kind" => "webfonts#webfont", "family" => "Voltaire", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/voltaire/v6/WvqBzaGEBbRV-hrahwO2cA.ttf")), array("kind" => "webfonts#webfont", "family" => "Waiting for the Sunrise", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/waitingforthesunrise/v7/eNfH7kLpF1PZWpsetF-ha9TChrNgrDiT3Zy6yGf3FnM.ttf")), array("kind" => "webfonts#webfont", "family" => "Wallpoet", "category" => "display", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v8", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wallpoet/v8/hmum4WuBN4A0Z_7367NDIg.ttf")), array("kind" => "webfonts#webfont", "family" => "Walter Turncoat", "category" => "handwriting", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/walterturncoat/v6/sG9su5g4GXy1KP73cU3hvQplL2YwNeota48DxFlGDUo.ttf")), array("kind" => "webfonts#webfont", "family" => "Warnes", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v6", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/warnes/v6/MXG7_Phj4YpzAXxKGItuBw.ttf")), array("kind" => "webfonts#webfont", "family" => "Wellfleet", "category" => "display", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wellfleet/v4/J5tOx72iFRPgHYpbK9J4XQ.ttf")), array("kind" => "webfonts#webfont", "family" => "Wendy One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin", "latin-ext"), "version" => "v4", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wendyone/v4/R8CJT2oDXdMk_ZtuHTxoxw.ttf")), array("kind" => "webfonts#webfont", "family" => "Wire One", "category" => "sans-serif", "variants" => array("regular"), "subsets" => array("latin"), "version" => "v7", "lastModified" => "2016-02-23", "files" => array("regular" => "http://fonts.gstatic.com/s/wireone/v7/sRLhaQOQpWnvXwIx0CycQw.ttf")), array("kind" => "webfonts#webfont", "family" => "Work Sans", "category" => "sans-serif", "variants" => array("100", "200", "300", "regular", "500", "600", "700", "800", "900"), "subsets" => array("latin", "latin-ext"), "version" => "v2", "lastModified" => "2015-12-08", "files" => array("100" => "http://fonts.gstatic.com/s/worksans/v2/ZAhtNqLaAViKjGLajtuwWaCWcynf_cDxXwCLxiixG1c.ttf", "200" =>
|