From 2391c18baebb36ef6333f63159ed83572177b13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Mon, 23 Sep 2024 20:15:18 +0800 Subject: [PATCH] feat: v3.7.0 --- Service/Monitor.php | 26 +- Service/Setting.php | 488 +++-- Service/Super.php | 101 +- assets/css/setting.css | 241 +-- composer.json | 4 +- composer.lock | 46 +- framework/assets/css/style-rtl.min.css | 1 + framework/assets/css/style.min.css | 1 + framework/assets/images/checkerboard.png | Bin 0 -> 2340 bytes framework/assets/images/wp-logo.svg | 1 + framework/assets/images/wp-plugin-logo.svg | 1 + framework/assets/js/main.min.js | 2 + framework/assets/js/plugins.min.js | 2 + framework/classes/abstract.class.php | 195 ++ framework/classes/admin-options.class.php | 667 +++++++ framework/classes/fields.class.php | 405 +++++ framework/classes/setup.class.php | 800 ++++++++ framework/fields/accordion/accordion.php | 64 + framework/fields/background/background.php | 340 ++++ framework/fields/backup/backup.php | 38 + framework/fields/border/border.php | 176 ++ framework/fields/button_set/button_set.php | 67 + framework/fields/callback/callback.php | 31 + framework/fields/checkbox/checkbox.php | 101 ++ framework/fields/code_editor/code_editor.php | 58 + framework/fields/color/color.php | 52 + framework/fields/color_group/color_group.php | 42 + framework/fields/content/content.php | 28 + framework/fields/date/date.php | 64 + framework/fields/datetime/datetime.php | 61 + framework/fields/dimensions/dimensions.php | 101 ++ framework/fields/fieldset/fieldset.php | 41 + framework/fields/gallery/gallery.php | 52 + framework/fields/group/group.php | 164 ++ framework/fields/heading/heading.php | 24 + framework/fields/icon/fa4-icons.php | 12 + framework/fields/icon/fa5-icons.php | 12 + framework/fields/icon/icon.php | 71 + .../fields/image_select/image_select.php | 79 + framework/fields/index.php | 1 + framework/fields/link/link.php | 82 + framework/fields/link_color/link_color.php | 91 + framework/fields/map/map.php | 98 + framework/fields/media/media.php | 96 + framework/fields/notice/notice.php | 26 + framework/fields/number/number.php | 63 + framework/fields/palette/palette.php | 58 + framework/fields/radio/radio.php | 93 + framework/fields/repeater/repeater.php | 108 ++ framework/fields/select/select.php | 132 ++ framework/fields/slider/slider.php | 78 + framework/fields/sortable/sortable.php | 87 + framework/fields/sorter/sorter.php | 76 + framework/fields/spacing/spacing.php | 171 ++ framework/fields/spinner/spinner.php | 70 + framework/fields/subheading/subheading.php | 24 + framework/fields/submessage/submessage.php | 26 + framework/fields/switcher/switcher.php | 40 + framework/fields/tabbed/tabbed.php | 64 + framework/fields/text/text.php | 30 + framework/fields/textarea/textarea.php | 58 + framework/fields/typography/google-fonts.php | 1607 +++++++++++++++++ framework/fields/typography/typography.php | 544 ++++++ framework/fields/upload/upload.php | 61 + framework/fields/wp_editor/wp_editor.php | 107 ++ framework/functions/actions.php | 190 ++ framework/functions/customize.php | 142 ++ framework/functions/helpers.php | 58 + framework/functions/sanitize.php | 29 + framework/functions/validate.php | 152 ++ framework/functions/walker.php | 28 + framework/index.php | 1 + framework/languages/zh_CN.mo | Bin 0 -> 8354 bytes framework/languages/zh_CN.po | 672 +++++++ helpers.php | 18 +- wp-china-yes.php | 4 +- 76 files changed, 9491 insertions(+), 353 deletions(-) create mode 100644 framework/assets/css/style-rtl.min.css create mode 100644 framework/assets/css/style.min.css create mode 100644 framework/assets/images/checkerboard.png create mode 100644 framework/assets/images/wp-logo.svg create mode 100644 framework/assets/images/wp-plugin-logo.svg create mode 100644 framework/assets/js/main.min.js create mode 100644 framework/assets/js/plugins.min.js create mode 100644 framework/classes/abstract.class.php create mode 100644 framework/classes/admin-options.class.php create mode 100644 framework/classes/fields.class.php create mode 100644 framework/classes/setup.class.php create mode 100644 framework/fields/accordion/accordion.php create mode 100644 framework/fields/background/background.php create mode 100644 framework/fields/backup/backup.php create mode 100644 framework/fields/border/border.php create mode 100644 framework/fields/button_set/button_set.php create mode 100644 framework/fields/callback/callback.php create mode 100644 framework/fields/checkbox/checkbox.php create mode 100644 framework/fields/code_editor/code_editor.php create mode 100644 framework/fields/color/color.php create mode 100644 framework/fields/color_group/color_group.php create mode 100644 framework/fields/content/content.php create mode 100644 framework/fields/date/date.php create mode 100644 framework/fields/datetime/datetime.php create mode 100644 framework/fields/dimensions/dimensions.php create mode 100644 framework/fields/fieldset/fieldset.php create mode 100644 framework/fields/gallery/gallery.php create mode 100644 framework/fields/group/group.php create mode 100644 framework/fields/heading/heading.php create mode 100644 framework/fields/icon/fa4-icons.php create mode 100644 framework/fields/icon/fa5-icons.php create mode 100644 framework/fields/icon/icon.php create mode 100644 framework/fields/image_select/image_select.php create mode 100644 framework/fields/index.php create mode 100644 framework/fields/link/link.php create mode 100644 framework/fields/link_color/link_color.php create mode 100644 framework/fields/map/map.php create mode 100644 framework/fields/media/media.php create mode 100644 framework/fields/notice/notice.php create mode 100644 framework/fields/number/number.php create mode 100644 framework/fields/palette/palette.php create mode 100644 framework/fields/radio/radio.php create mode 100644 framework/fields/repeater/repeater.php create mode 100644 framework/fields/select/select.php create mode 100644 framework/fields/slider/slider.php create mode 100644 framework/fields/sortable/sortable.php create mode 100644 framework/fields/sorter/sorter.php create mode 100644 framework/fields/spacing/spacing.php create mode 100644 framework/fields/spinner/spinner.php create mode 100644 framework/fields/subheading/subheading.php create mode 100644 framework/fields/submessage/submessage.php create mode 100644 framework/fields/switcher/switcher.php create mode 100644 framework/fields/tabbed/tabbed.php create mode 100644 framework/fields/text/text.php create mode 100644 framework/fields/textarea/textarea.php create mode 100644 framework/fields/typography/google-fonts.php create mode 100644 framework/fields/typography/typography.php create mode 100644 framework/fields/upload/upload.php create mode 100644 framework/fields/wp_editor/wp_editor.php create mode 100644 framework/functions/actions.php create mode 100644 framework/functions/customize.php create mode 100644 framework/functions/helpers.php create mode 100644 framework/functions/sanitize.php create mode 100644 framework/functions/validate.php create mode 100644 framework/functions/walker.php create mode 100644 framework/index.php create mode 100644 framework/languages/zh_CN.mo create mode 100644 framework/languages/zh_CN.po diff --git a/Service/Monitor.php b/Service/Monitor.php index 1f867f7..bcdecb4 100644 --- a/Service/Monitor.php +++ b/Service/Monitor.php @@ -37,7 +37,7 @@ class Monitor { * 初始化 */ public function init() { - if ( $this->settings['monitor'] != 'on' ) { + if ( $this->settings['monitor'] ) { return; } // 检查应用市场可用性 @@ -104,51 +104,51 @@ class Monitor { */ public function maybe_check_admincdn() { // 后台加速 - if ( ! empty( $this->settings['admincdn']['admin'] ) ) { + if ( in_array( 'admin', $this->settings['admincdn'] ) ) { $response = wp_remote_get( 'https://wpstatic.admincdn.com/6.4.3/wp-includes/js/wp-sanitize.min.js' ); if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { - unset( $this->settings['admincdn']['admin'] ); + $this->settings['admincdn'] = array_values( array_diff( $this->settings['admincdn'], [ 'admin' ] ) ); $this->update_settings(); } } // 前台加速 - if ( ! empty( $this->settings['admincdn']['frontend'] ) ) { + if ( in_array( 'frontend', $this->settings['admincdn'] ) ) { $url = network_site_url( '/wp-includes/js/wp-sanitize.min.js' ); $response = wp_remote_get( 'https://public.admincdn.com/' . $url ); if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { - unset( $this->settings['admincdn']['frontend'] ); + $this->settings['admincdn'] = array_values( array_diff( $this->settings['admincdn'], [ 'frontend' ] ) ); $this->update_settings(); } } // Google 字体 - if ( ! empty( $this->settings['admincdn']['googlefonts'] ) ) { + if ( in_array( 'googlefonts', $this->settings['admincdn'] ) ) { $response = wp_remote_get( 'https://googlefonts.admincdn.com/css?family=Roboto:400,700' ); if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { - unset( $this->settings['admincdn']['googlefonts'] ); + $this->settings['admincdn'] = array_values( array_diff( $this->settings['admincdn'], [ 'googlefonts' ] ) ); $this->update_settings(); } } // Google 前端公共库 - if ( ! empty( $this->settings['admincdn']['googleajax'] ) ) { + if ( in_array( 'googleajax', $this->settings['admincdn'] ) ) { $response = wp_remote_get( 'https://googleajax.admincdn.com/ajax/libs/jquery/3.7.1/jquery.slim.min.js' ); if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { - unset( $this->settings['admincdn']['googleajax'] ); + $this->settings['admincdn'] = array_values( array_diff( $this->settings['admincdn'], [ 'googleajax' ] ) ); $this->update_settings(); } } // CDNJS 前端公共库 - if ( ! empty( $this->settings['admincdn']['cdnjs'] ) ) { + if ( in_array( 'cdnjs', $this->settings['admincdn'] ) ) { $response = wp_remote_get( 'https://cdnjs.admincdn.com/jquery/3.7.1/jquery.slim.min.js' ); if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { - unset( $this->settings['admincdn']['cdnjs'] ); + $this->settings['admincdn'] = array_values( array_diff( $this->settings['admincdn'], [ 'cdnjs' ] ) ); $this->update_settings(); } } // jsDelivr 公共库 - if ( ! empty( $this->settings['admincdn']['jsdelivr'] ) ) { + if ( in_array( 'jsdelivr', $this->settings['admincdn'] ) ) { $response = wp_remote_get( 'https://jsd.admincdn.com/npm/jquery@3.7.1/dist/jquery.slim.min.js' ); if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { - unset( $this->settings['admincdn']['jsdelivr'] ); + $this->settings['admincdn'] = array_values( array_diff( $this->settings['admincdn'], [ 'jsdelivr' ] ) ); $this->update_settings(); } } diff --git a/Service/Setting.php b/Service/Setting.php index c64c782..f85ecbf 100644 --- a/Service/Setting.php +++ b/Service/Setting.php @@ -4,7 +4,8 @@ namespace WenPai\ChinaYes\Service; defined( 'ABSPATH' ) || exit; -use TheTNB\Setting\API; +use WP_CHINA_YES; +use function WenPai\ChinaYes\get_settings; /** * Class Setting @@ -12,115 +13,375 @@ use TheTNB\Setting\API; * @package WenPai\ChinaYes\Service */ class Setting { - private $setting_api; + private $prefix = 'wp_china_yes'; + private $settings; public function __construct() { - $this->setting_api = new API(); - add_action( 'admin_init', [ $this, 'admin_init' ] ); + $this->settings = get_settings(); + add_filter( 'wp_china_yes_enqueue_assets', '__return_true' ); + add_filter( 'wp_china_yes_fa4', '__return_true' ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_assets' ] ); add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu', [ $this, 'admin_menu' ] ); + self::admin_init(); } /** * 挂载设置项 */ public function admin_init() { + WP_CHINA_YES::createOptions( $this->prefix, [ + 'framework_title' => sprintf( '%s v%s', $this->settings['custom_name'], CHINA_YES_VERSION ), + 'menu_hidden' => $this->settings['hide'], + 'menu_title' => $this->settings['custom_name'], + 'menu_slug' => 'wp-china-yes', + 'menu_type' => 'submenu', + 'menu_parent' => is_multisite() ? 'settings.php' : 'options-general.php', + 'show_bar_menu' => false, + 'show_sub_menu' => false, + 'show_search' => false, + 'show_reset_section' => false, + 'footer_text' => sprintf( '%s 设置', $this->settings['custom_name'] ), + 'theme' => 'light', + 'enqueue_webfont' => false, + 'async_webfont' => true, + 'database' => is_multisite() ? 'network' : '', + ] ); - $sections = [ - [ - 'id' => 'wp_china_yes', - 'title' => __( '设置', 'wp-china-yes' ) - ] - ]; - - $fields = [ - 'wp_china_yes' => [ + WP_CHINA_YES::createSection( $this->prefix, [ + 'title' => '加速设置', + 'icon' => 'fa fa-rocket', + 'fields' => [ [ - 'name' => 'store', - 'label' => __( '应用市场', 'wp-china-yes' ), - 'desc' => __( '官方加速源(WPMirror)直接从 .org 反代至大陆分发;文派开源(WenPai.org)中国境内自建托管仓库,同时集成文派翻译平台。', - 'wp-china-yes' ), - 'type' => 'radio', - 'default' => 'wenpai', - 'options' => [ + 'id' => 'store', + 'type' => 'radio', + 'title' => __( '应用市场', 'wp-china-yes' ), + 'inline' => true, + 'options' => [ 'proxy' => '官方镜像', 'wenpai' => '文派开源', 'off' => '不启用' - ] + ], + 'default' => 'wenpai', + 'subtitle' => '是否启用市场加速', + 'desc' => __( '官方加速源(WPMirror)直接从 .org 反代至大陆分发;文派开源(WenPai.org)中国境内自建托管仓库,同时集成文派翻译平台', + 'wp-china-yes' ), ], [ - 'name' => 'admincdn', - 'label' => __( '萌芽加速', 'wp-china-yes' ), - 'desc' => __( '萌芽加速(adminCDN)将 WordPress 依赖的静态文件切换为公共资源,加快网站访问速度。您可按需启用需要加速的项目,更多细节控制和功能,请关注 adminCDN 项目。', - 'wp-china-yes' ), - 'type' => 'multicheck', - 'default' => [ - 'admin' => 'admin', - ], - 'options' => [ + 'id' => 'admincdn', + 'type' => 'checkbox', + 'title' => __( '萌芽加速', 'wp-china-yes' ), + 'inline' => true, + 'options' => [ 'admin' => '后台加速', 'frontend' => '前台加速', 'googlefonts' => 'Google 字体', 'googleajax' => 'Google 前端公共库', 'cdnjs' => 'CDNJS 前端公共库', - 'jsdelivr' => 'jsDelivr 公共库', - ] + 'jsdelivr' => 'jsDelivr 公共库' + ], + 'default' => [ + 'admin' => 'admin', + ], + 'subtitle' => '是否启用萌芽加速', + 'desc' => __( '萌芽加速(adminCDN)将 WordPress 依赖的静态文件切换为公共资源,加快网站访问速度。您可按需启用需要加速的项目,更多细节控制和功能,请关注 adminCDN 项目', + 'wp-china-yes' ), ], [ - 'name' => 'cravatar', - 'label' => __( '初认头像', 'wp-china-yes' ), - 'desc' => __( '初认头像(Cravatar)Gravatar 在中国的完美替代方案,您可以在 Cravatar.com 上传头像,更多选项请安装 WPAavatar 插件。(任何开发者均可在自己的产品中集成该服务,不局限于 WordPress)', - 'wp-china-yes' ), - 'type' => 'radio', - 'default' => 'cn', - 'options' => [ + 'id' => 'cravatar', + 'type' => 'radio', + 'title' => __( '初认头像', 'wp-china-yes' ), + 'inline' => true, + 'options' => [ 'cn' => '默认线路', 'global' => '国际线路', - 'weavatar' => '备用源(WeAvatar)', + 'weavatar' => '备用源(WeAvatar.com)', 'off' => '不启用' - ] + ], + 'default' => 'cn', + 'subtitle' => '是否启用头像加速', + 'desc' => __( '初认头像(Cravatar)Gravatar 在中国的完美替代方案,您可以在 Cravatar.com 上传头像,更多选项请安装 WPAavatar 插件。(任何开发者均可在自己的产品中集成该服务,不局限于 WordPress)', + 'wp-china-yes' ), + ], + ], + ] ); + + WP_CHINA_YES::createSection( $this->prefix, [ + 'title' => '文风字体', + 'icon' => 'fa fa-font', + 'fields' => [ + [ + 'id' => 'windfonts', + 'type' => 'radio', + 'title' => __( '文风字体', 'wp-china-yes' ), + 'inline' => true, + 'options' => [ + 'on' => '全局启用', + 'frontend' => '前台启用', + 'optimize' => '本机字体', + 'off' => '不启用', + ], + 'default' => 'off', + 'subtitle' => '是否启用文风字体定制', + 'desc' => __( '文风字体(Windfonts)为您的网站增添无限活力。专为中文网页设计,旨在提升用户阅读体验和视觉享受', + 'wp-china-yes' ), ], [ - 'name' => 'windfonts', - 'label' => __( '文风字体', 'wp-china-yes' ), - 'desc' => __( '文风字体(Windfonts)为您的网页渲染中文字体并对主题、插件内的字体进行加速;优化模式可优化浏览器字体调用。', - 'wp-china-yes' ), - 'type' => 'radio', - 'default' => 'off', - 'options' => [ - 'optimize' => '优化模式', - 'off' => '不启用', - ] + 'id' => 'windfonts_list', + 'type' => 'group', + 'title' => '字体列表', + 'subtitle' => '使用的文风字体列表', + 'desc' => '支持添加多个文风字体,并配置应用元素、字体权重大小', + 'button_title' => '添加字体', + 'accordion_title_number' => true, + 'dependency' => [ + 'windfonts', + 'any', + 'on,frontend', + ], + 'fields' => [ + [ + 'id' => 'family', + 'type' => 'text', + 'title' => __( '字体家族', 'wp-china-yes' ), + 'subtitle' => '字体家族名称', + 'desc' => __( '填入从文风字体获取的字体家族名称', + 'wp-china-yes' ), + 'default' => 'wenfeng-syhtcjk', + ], + [ + 'id' => 'css', + 'type' => 'text', + 'title' => __( '字体链接', 'wp-china-yes' ), + 'subtitle' => '字体 CSS 链接', + 'desc' => __( '填入从文风字体获取的字体 CSS 链接', + 'wp-china-yes' ), + 'default' => 'https://cn.windfonts.com/wenfeng/fonts/syhtcjk/regular/web/index.css', + 'validate' => 'csf_validate_url', + ], + [ + 'id' => 'weight', + 'type' => 'number', + 'title' => __( '字体字重', 'wp-china-yes' ), + 'subtitle' => '字体字重大小', + 'desc' => __( '设置字体权重大小(字体粗细)', + 'wp-china-yes' ), + 'default' => 400, + 'attributes' => [ + 'min' => 100, + 'max' => 1000, + 'step' => 10, + ], + 'validate' => 'csf_validate_numeric', + ], + [ + 'id' => 'style', + 'type' => 'select', + 'title' => __( '字体样式', 'wp-china-yes' ), + 'subtitle' => '字体样式选择', + 'options' => [ + 'normal' => '正常', + 'italic' => '斜体', + 'oblique' => '倾斜', + ], + 'desc' => __( '设置字体样式(正常、斜体、倾斜)', + 'wp-china-yes' ), + ], + [ + 'id' => 'selector', + 'type' => 'textarea', + 'title' => __( '字体应用', 'wp-china-yes' ), + 'subtitle' => '字体应用元素', + 'desc' => __( '设置字体应用的元素(CSS 选择器)', + 'wp-china-yes' ), + 'default' => 'a,p,h1,h2,h3,h4,h5,h6,ul,ol,li,button,blockquote,pre,code,table,th,td,div:not([class*="star"]),label,b,i:not([class]),em,small,strong,sub,sup,ins,del,mark,abbr,dfn,span:not([class*="icon"])', + 'sanitize' => false, + ], + [ + 'id' => 'enable', + 'type' => 'switcher', + 'title' => __( '启用字体', 'wp-china-yes' ), + 'subtitle' => '是否启用该字体', + 'default' => true, + ], + ], ], [ - 'name' => 'adblock', - 'label' => __( '广告拦截', 'wp-china-yes' ), - 'desc' => __( '文派叶子🍃(WP-China-Yes)独家特色功能,让您拥有清爽整洁的 WordPress 后台,清除各类常用插件侵入式后台广告、通知及无用信息;启用后若存在异常拦截,请切换为手动模式,查看可优化插件列表。', - 'wp-china-yes' ), - 'type' => 'radio', - 'default' => 'off', - 'options' => [ - 'off' => '即将上线', - ] + 'type' => 'content', + 'content' => '默认适配规则跟随插件更新,插件更新后可删除字体重新添加以获取最新适配规则', ], + ], + ] ); + + WP_CHINA_YES::createSection( $this->prefix, [ + 'title' => '广告屏蔽', + 'icon' => 'fa fa-ban', + 'fields' => [ [ - 'name' => 'monitor', - 'label' => __( '自动监控', 'wp-china-yes' ), - 'desc' => __( '文派叶子🍃(WP-China-Yes)支持自动监控各加速节点可用性,当节点不可用时自动切换至可用节点或关闭加速,以保证您的网站正常访问。', - 'wp-china-yes' ), - 'type' => 'radio', - 'default' => 'on', - 'options' => [ + 'id' => 'adblock', + 'type' => 'radio', + 'title' => __( '广告屏蔽', 'wp-china-yes' ), + 'inline' => true, + 'options' => [ 'on' => '启用', 'off' => '不启用', - ] + ], + 'default' => 'off', + 'subtitle' => '是否启用后台广告屏蔽', + 'desc' => __( '文派叶子🍃(WP-China-Yes)独家特色功能,让您拥有清爽整洁的 WordPress 后台,清除各类常用插件侵入式后台广告、通知及无用信息', + 'wp-china-yes' ), ], - ] - ]; + [ + 'id' => 'adblock_rule', + 'type' => 'group', + 'title' => '规则列表', + 'subtitle' => '使用的广告屏蔽规则列表', + 'desc' => '支持添加多条广告屏蔽规则', + 'button_title' => '添加规则', + 'accordion_title_number' => true, + 'dependency' => [ + 'adblock', + 'any', + 'on', + ], + 'fields' => [ + [ + 'id' => 'name', + 'type' => 'text', + 'title' => __( '规则名称', 'wp-china-yes' ), + 'subtitle' => '自定义规则名称', + 'desc' => __( '自定义规则名称,方便识别', + 'wp-china-yes' ), + 'default' => '默认规则', + ], + [ + 'id' => 'selector', + 'type' => 'textarea', + 'title' => __( '应用元素', 'wp-china-yes' ), + 'subtitle' => '规则应用元素', + 'desc' => __( '设置规则应用的广告元素(CSS 选择器)', + 'wp-china-yes' ), + 'default' => '.wpseo_content_wrapper #sidebar-container, .yoast_premium_upsell, #wpseo-local-seo-upsell, .yoast-settings-section-upsell, #rank_math_review_plugin_notice, #bwp-get-social, .bwp-button-paypal, #bwp-sidebar-right, .tjcc-custom-css #postbox-container-1, .settings_page_wpcustomtaxfilterinadmin #postbox-container-1, #duplicate-post-notice #newsletter-subscribe-form, div[id^="dnh-wrm"], .notice-info.dst-notice, #googleanalytics_terms_notice, .fw-brz-dismiss, div.elementor-message[data-notice_id="elementor_dev_promote"], .notice-success.wpcf7r-notice, .dc-text__block.disable__comment__alert, #ws_sidebar_pro_ad, .pa-new-feature-notice, #redux-connect-message, .frash-notice-email, .frash-notice-rate, #smush-box-pro-features, #wp-smush-bulk-smush-upsell-row, #easy-updates-manager-dashnotice, #metaslider-optin-notice, #extendifysdk_announcement, .ml-discount-ad, .mo-admin-notice, .post-smtp-donation, div[data-dismissible="notice-owa-sale-forever"], .neve-notice-upsell, #pagelayer_promo, #simple-custom-post-order-epsilon-review-notice, .sfsi_new_prmium_follw, div.fs-slug-the-events-calendar[data-id="connect_account"], .tribe-notice-event-tickets-install, div.notice[data-notice="webp-converter-for-media"], .webpLoader__popup.webpPopup, .put-dismiss-notice, .wp-mail-smtp-review-notice, #wp-mail-smtp-pro-banner, body div.promotion.fs-notice, .analytify-review-thumbnail, .analytify-review-notice, .jitm-banner.is-upgrade-premium, div[data-name*="wbcr_factory_notice_adverts"], .sui-subscription-notice, #sui-cross-sell-footer, .sui-cross-sell-modules, .forminator-rating-notice, .sui-dashboard-upsell-upsell, .anwp-post-grid__rate, .cff-settings-cta, .cff-header-upgrade-notice, .cff_notice.cff_review_notice_step_1, .cff_get_pro_highlight, .aal-install-elementor, #ws_sidebar_pro_ad, .bold-timeline-lite-feedback-notice-wrapper, #elementskit-lite-go-pro-noti2ce, #elementskit-lite-_plugin_rating_msg_used_in_day, .yarpp-review-notice, #prli_review_notice, #webdados_invoicexpress_nag, #vc_license-activation-notice, .villatheme-dashboard.updated, #njt-FileBird-review, .notice[data-dismissible="pro_release_notice"], #thwvsf_review_request_notice, .wpdeveloper-review-notice, div[data-notice_type="tinvwl-user-review"], div[data-notice_type="tinvwl-user-premium"], #sg-backup-review-wrapper, .notice-wpmet-jhanda-getgenie-cross-promo, .notice-getgenie-go-pro-noti2ce, .notice-wpmet-jhanda-Summer2023, .thwcfd-review-wrapper, .woo-permalink-manager-banner, div.notice.bundle-notice, div.notice[data-dismissible="notice-owa-upgrade-forever"], .wpsm-acc-r-review-notice, .wpsm_ac_h_i, .edac-review-notice, .notice-iworks-rate, #monterinsights-admin-menu-tooltip, .monsterinsights-floating-bar, #monterinsights-admin-menu-tooltip, .exactmetrics-floating-bar, #metform-unsupported-metform-pro-version, .lwptocRate, .wpsm-tabs-b-review-notice, .quadlayers_woocommerce-direct-checkout_notice_delay, .iworks-rate-notice, #metform-_plugin_rating_msg_used_in_day, [id^="wpmet-jhanda-"], #wpmet-stories, #ti-optml-notice-helper, .menu-icon-dashboard-notice, .catch-bells-admin-notice, .wpdt-bundles-notice, .td-admin-web-services, .cf-plugin-popup, .wpzinc-review-media-library-organizer, .oxi-image-notice', + 'sanitize' => false, + ], + [ + 'id' => 'enable', + 'type' => 'switcher', + 'title' => __( '启用规则', 'wp-china-yes' ), + 'subtitle' => '是否启用该规则', + 'default' => true, + ], + ], + ], + [ + 'type' => 'content', + 'content' => '默认屏蔽规则跟随插件更新,插件更新后可删除规则重新添加以获取最新屏蔽规则', + ], + ], + ] ); - $this->setting_api->set_sections( $sections ); - $this->setting_api->set_fields( $fields ); - $this->setting_api->admin_init(); + WP_CHINA_YES::createSection( $this->prefix, [ + 'title' => '其他设置', + 'icon' => 'fa fa-cogs', + 'fields' => [ + [ + 'id' => 'monitor', + 'type' => 'switcher', + 'default' => true, + 'title' => '节点监控', + 'subtitle' => '自动监控加速节点可用性', + 'desc' => __( '文派叶子🍃(WP-China-Yes)支持自动监控各加速节点可用性,当节点不可用时自动切换至可用节点或关闭加速,以保证您的网站正常访问', + 'wp-china-yes' ), + ], + [ + 'id' => 'hide', + 'type' => 'switcher', + 'default' => false, + 'title' => '隐藏设置', + 'subtitle' => '隐藏插件设置入口', + 'desc' => __( '如果您不希望让客户知道本站启用了文派叶子🍃(WP-China-Yes)插件及服务,可开启此选项', + 'wp-china-yes' ), + ], + [ + 'id' => 'custom_name', + 'type' => 'text', + 'title' => '品牌白标', + 'subtitle' => '自定义插件显示品牌名', + 'desc' => __( '专为 WordPress 建站服务商和代理机构提供的自定义品牌功能,输入您的品牌词启用后生效', + 'wp-china-yes' ), + 'default' => "WP-China-Yes", + ], + [ + 'type' => 'content', + 'content' => '启用隐藏设置前请务必保存当前设置页面 URL,否则您将无法再次进入插件设置页面', + ], + ], + ] ); + + WP_CHINA_YES::createSection( $this->prefix, [ + 'title' => '关于插件', + 'icon' => 'fa fa-info-circle', + 'fields' => [ + [ + 'type' => 'heading', + 'content' => '将您的 WordPress 接入本土生态体系,这将为您提供一个更贴近中国人使用习惯的 WordPress', + ], + [ + 'type' => 'submessage', + 'content' => '100% 开源代码,一起参与文派(WordPress)软件国产化进程,打造属于您自己的开源自助建站程序', + ], + [ + 'type' => 'subheading', + 'content' => '项目简介', + ], + [ + 'type' => 'content', + 'content' => '文派叶子 🍃(WP-China-Yes)是一款不可多得的 WordPress 系统底层优化和生态基础设施软件。项目起源于 2019 年,专为解决困扰了中国互联网数十年的特色问题而存在。此为文派开源(WenPai.org)的一部分', + ], + [ + 'type' => 'subheading', + 'content' => '赞助商', + ], + [ + 'type' => 'content', + 'content' => + << + + + + + + + + + + + +HTML, + ], + [ + 'type' => 'subheading', + 'content' => '开发者 & 贡献者', + ], + [ + 'type' => 'content', + 'content' => + <<孙锡源 | +耗子 | +Yulinn | +赵丰 | +jialong Dong | +TigerKK | +xianyu125 | +ElliotHughes | +诗语 | +莫蒂奇 | +薇晓朵 +HTML, + ] + ], + ] ); } /** @@ -137,15 +398,6 @@ class Setting { * 挂载设置页面 */ public function admin_menu() { - // 后台设置 - add_submenu_page( - is_multisite() ? 'settings.php' : 'options-general.php', - esc_html__( 'WP-China-Yes', 'wp-china-yes' ), - esc_html__( 'WP-China-Yes', 'wp-china-yes' ), - is_multisite() ? 'manage_network_options' : 'manage_options', - 'wp-china-yes', - [ $this, 'setting_page' ] - ); // 插件页设置 add_filter( 'plugin_action_links', function ( $links, $file ) { if ( 'wp-china-yes/wp-china-yes.php' !== $file ) { @@ -159,76 +411,4 @@ class Setting { return $links; }, 10, 2 ); } - - /** - * 设置页面模版 - */ - public function setting_page() { - echo << -
-

文派叶子🍃(WP-China-Yes)

-
-

将您的 WordPress 接入本土生态体系,这将为您提供一个更贴近中国人使用习惯的 WordPress。

-

100% 开源代码,一起参与文派(WordPress)软件国产化进程,打造属于您自己的开源自助建站程序。

- -
-
-HTML; - $this->setting_api->show_navigation(); - $this->setting_api->show_forms(); - - echo << -

提示:插件会定期检查节点可用性,并在节点不可用时自动切换至可用节点,以保证您的网站正常访问。如您发现设置项被自动切换,可重新设置或关闭自动监控功能。

-

帮助:您可以随时在此处调整个性化设置以便适应不同的业务场景,萌新请保持默认即可。此项目的发展离不开您的支持和建议,查看联系方式

-
-
-
-
-

项目简介

-
- 文派叶子 🍃(WP-China-Yes)是一款不可多得的 WordPress 系统底层优化和生态基础设施软件。项目起源于 2019 年,专为解决困扰了中国互联网数十年的特色问题而存在。此为文派开源(WenPai.org)的一部分。 -
- -
-
-

赞助商

- - -
- -
- -HTML; - - } } diff --git a/Service/Super.php b/Service/Super.php index 5506a35..45e96b4 100644 --- a/Service/Super.php +++ b/Service/Super.php @@ -39,7 +39,7 @@ class Super { echo <<
- HTML; +HTML; wp_widget_rss_output( 'https://wptea.com/feed/', [ 'items' => 5, 'show_summary' => 1, @@ -78,7 +78,7 @@ class Super { margin:0 } - HTML; +HTML; } ); } ); add_action( 'wp_network_dashboard_setup', function () { @@ -89,7 +89,7 @@ class Super { echo <<
- HTML; +HTML; wp_widget_rss_output( 'https://wptea.com/feed/', [ 'items' => 5, 'show_summary' => 1, @@ -128,7 +128,7 @@ class Super { margin:0 } - HTML; +HTML; } ); } ); } @@ -138,7 +138,7 @@ class Super { */ if ( is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { if ( - ! empty( $this->settings['admincdn']['admin'] ) && + in_array( 'admin', (array) $this->settings['admincdn'] ) && ! stristr( $GLOBALS['wp_version'], 'alpha' ) && ! stristr( $GLOBALS['wp_version'], 'beta' ) && ! stristr( $GLOBALS['wp_version'], 'RC' ) @@ -158,7 +158,7 @@ class Super { /** * 前台静态加速 */ - if ( ! empty( $this->settings['admincdn']['frontend'] ) ) { + if ( in_array( 'frontend', (array) $this->settings['admincdn'] ) ) { $this->page_str_replace( 'template_redirect', 'preg_replace', [ '#(?<=[(\"\'])(?:' . quotemeta( home_url() ) . ')?/(?:((?:wp-content|wp-includes)[^\"\')]+\.(css|js)[^\"\')]+))(?=[\"\')])#', 'https://public.admincdn.com/$0' @@ -168,7 +168,7 @@ class Super { /** * Google 字体替换 */ - if ( ! empty( $this->settings['admincdn']['googlefonts'] ) ) { + if ( in_array( 'googlefonts', (array) $this->settings['admincdn'] ) ) { $this->page_str_replace( 'init', 'str_replace', [ 'fonts.googleapis.com', 'googlefonts.admincdn.com' @@ -178,7 +178,7 @@ class Super { /** * Google 前端公共库替换 */ - if ( ! empty( $this->settings['admincdn']['googleajax'] ) ) { + if ( in_array( 'googleajax', (array) $this->settings['admincdn'] ) ) { $this->page_str_replace( 'init', 'str_replace', [ 'ajax.googleapis.com', 'googleajax.admincdn.com' @@ -188,7 +188,7 @@ class Super { /** * CDNJS 前端公共库替换 */ - if ( ! empty( $this->settings['admincdn']['cdnjs'] ) ) { + if ( in_array( 'cdnjs', (array) $this->settings['admincdn'] ) ) { $this->page_str_replace( 'init', 'str_replace', [ 'cdnjs.cloudflare.com/ajax/libs', 'cdnjs.admincdn.com' @@ -198,9 +198,9 @@ class Super { /** * jsDelivr 前端公共库替换 */ - if ( ! empty( $this->settings['admincdn']['jsdelivr'] ) ) { + if ( in_array( 'jsdelivr', (array) $this->settings['admincdn'] ) ) { $this->page_str_replace( 'init', 'str_replace', [ - 'cdn.jsdelivr.net', + 'jsd.admincdn.com', 'jsd.admincdn.com' ] ); } @@ -225,6 +225,85 @@ class Super { wp_enqueue_style( 'windfonts-optimize', CHINA_YES_PLUGIN_URL . 'assets/css/fonts.css', [], CHINA_YES_VERSION ); } ); } + if ( ! empty( $this->settings['windfonts'] ) && $this->settings['windfonts'] == 'on' ) { + add_action( 'wp_head', [ $this, 'load_windfonts' ] ); + add_action( 'admin_head', [ $this, 'load_windfonts' ] ); + } + if ( ! empty( $this->settings['windfonts'] ) && $this->settings['windfonts'] == 'frontend' ) { + add_action( 'wp_head', [ $this, 'load_windfonts' ] ); + } + + /** + * 广告拦截 + */ + if ( ! empty( $this->settings['adblock'] ) && $this->settings['adblock'] == 'on' ) { + add_action( 'admin_head', [ $this, 'load_adblock' ] ); + } + } + + /** + * 加载文风字体 + */ + public function load_windfonts() { + echo << + +HTML; + + $loaded = []; + foreach ( (array) $this->settings['windfonts_list'] as $font ) { + if ( empty( $font['enable'] ) ) { + continue; + } + if ( empty( $font['family'] ) ) { + continue; + } + if ( in_array( $font['css'], $loaded ) ) { + continue; + } + echo sprintf( << + +HTML + , + $font['css'], + htmlspecialchars_decode( $font['selector'] ), + $font['style'], + $font['weight'], + $font['family'] + ); + $loaded[] = $font['css']; + } + } + + /** + * 加载广告拦截 + */ + public function load_adblock() { + foreach ( (array) $this->settings['adblock_rule'] as $rule ) { + if ( empty( $rule['enable'] ) ) { + continue; + } + if ( empty( $rule['selector'] ) ) { + continue; + } + echo sprintf( << + %s { + display: none!important; + } + +HTML + , + htmlspecialchars_decode( $rule['selector'] ) + ); + } } /** diff --git a/assets/css/setting.css b/assets/css/setting.css index bf4544f..162a105 100644 --- a/assets/css/setting.css +++ b/assets/css/setting.css @@ -1,129 +1,134 @@ -html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { - font-family: -apple-system, "Noto Sans", "Helvetica Neue", Helvetica, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", "ST Heiti", SimHei, "WenQuanYi Zen Hei Sharp", sans-serif; -} - -#wpcontent, #wpfooter { - background-color: #ffffff; -} - -#wpbody-content { - padding-bottom: 10%; -} - -.notice { - background-color: #f5f5f5; -} - -.container { - display: flex; - flex-wrap: wrap; - width: 100%; -} - -.left-column, .right-column { - width: 100%; -} - -.right-column { - padding: 20px; - display: flex; - flex-direction: column; - gap: 20px; -} - -.card { - background-color: #fff; - padding: 10%; - border-radius: 10px; - text-transform: none; - border: 0px solid #c3c4c7; - font-size: 14px; - line-height: 2; - box-shadow: 0 0.375rem 1.5rem 0 rgba(141, 153, 165, 0.13); -} - -.card h3 { - margin-top: 0; - font-size: 18px; - font-weight: 400; -} - -.card a, .left-column a { - text-decoration: none; -} - -.card-body, .card-footer { - margin: 10px 0; -} - -.card-footer a.button.button-primary { - padding: 1% 5%; - margin-top: 10px; -} - -.form-table th { - width: 120px; - padding: 5% 0; -} - -.form-table td { - padding: 5% 0; -} - -.settings-header { - padding-top: 20px; - max-width: 1280px; - margin: 0 auto; - line-height: 1.5; -} - -.settings-header .update-messages h2, .update-php h2, h4 { - font-size: 15px; - font-weight: 400; -} - -.settings-title-section { - padding: 1% 0; -} - -.settings-footer p { - font-size: 12px; - line-height: 2; -} - .sponsor-logos { - display: flex; + display: block; flex-wrap: wrap; justify-content: center; } .sponsor-logos img { - width: 26%; - margin-bottom: 30px; - display: block; - margin-left: auto; - margin-right: auto; - height: fit-content; + flex-basis: calc(20% - 10px); + max-width: 85px; + margin: 5px; + height: auto; } -@media screen and (max-width: 782px) { - .auto-fold #wpcontent { - padding: 10px; - } +.wp_china_yes-content a { + color: #0073aa; + text-decoration: none; } -@media (min-width: 768px) { - .container { - flex-wrap: nowrap; - max-width: 1280px; - margin: 0 auto; - } - - .left-column { - width: 70%; - } - - .right-column { - width: 30%; - } +.wp_china_yes-options { + background-color: #fff; + padding: 1%; + border-radius: 10px; + text-transform: none; + line-height: 2; + box-shadow: 0 0.375rem 1.5rem 0 rgba(141, 153, 165, 0.13); + max-width: 1100px; + margin: 2rem auto; +} + +.wp_china_yes-section-title { + padding: 20px 30px; + background-color: #fff; + border-top: 0 solid #f5f5f5; + border-bottom: 1px solid #f5f5f5; +} + +.wp_china_yes-field-subheading { + background-color: #ffffff; +} + +.wp_china_yes-theme-light .wp_china_yes-container { + border: 0 solid #ccd0d4; +} + +.wp_china_yes-theme-light .wp_china_yes-header-inner { + border-bottom: 1px solid #f5f5f5; + background: #ffffff; +} + +.wp_china_yes-theme-light .wp_china_yes-nav-background { + background-color: #ffffff; + border-right: 1px solid #f5f5f5; +} + +.wp_china_yes-theme-light .wp_china_yes-footer { + border-top: 1px solid #fff; + background: #ffffff; +} + +.wp_china_yes-field-heading { + font-size: 1.4em; + background-color: #ffffff; +} + +.wp_china_yes-theme-light .wp_china_yes-nav ul li a { + background-color: #ffffff; +} + +.wp_china_yes-submessage-normal { + border-color: #ffffff; + background-color: #ffffff; +} + +.wp_china_yes-field + .wp_china_yes-field { + border-top: 1px solid #ffffff; +} + +.wp_china_yes-theme-light .wp_china_yes-nav-normal > ul li a { + border-bottom: 1px solid #f5f5f5; + border-right: 1px solid #f5f5f5; +} + +.wp_china_yes-field-group .wp_china_yes-cloneable-header-icon { + font-size: 10px; +} + +.wp_china_yes-field-group .wp_china_yes-cloneable-title { + padding: 10px 65px 10px 10px; +} + +.wp_china_yes-field-group .ui-accordion .wp_china_yes-cloneable-item { + padding: 2px 0; + border-radius: 10px; +} + +.wp_china_yes-field-group .wp_china_yes-cloneable-helper { + top: 15px; +} + +.wp_china_yes-field-group .wp_china_yes-cloneable-title { + border: 1px solid #ccd0d4; + background-color: #ffffff; + border-radius: 8px; +} + +.wp_china_yes-field-group .wp_china_yes-cloneable-content { + border: 0 solid #ffffff; + background-color: #ffffff; +} + +.wp_china_yes-sticky .wp_china_yes-header-inner { + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, .1); +} + +.wp_china_yes-warning-primary { + color: #fff !important; + border-color: #2c3338 !important; + background: #2c3338 !important; +} + +.wp_china_yes-warning-primary:focus, .wp_china_yes-warning-primary:hover { + border-color: #1d2327 !important; + background: #1d2327 !important; +} + +.wp_china_yes-field-switcher .wp_china_yes--switcher:not(.wp_china_yes--active) { + background-color: #9a9a9a; +} + +.wp_china_yes-theme-light .wp_china_yes-nav-normal > ul { + margin-right: -2px; + margin-bottom: -1px; } diff --git a/composer.json b/composer.json index 8f816bf..b4944af 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,6 @@ "description": "WordPress Optimized Plugin for Mainland China", "type": "project", "require": { - "thetnb/wp-setting-api": "^2.0", "yahnis-elsts/plugin-update-checker": "^5.2" }, "license": "MIT", @@ -12,7 +11,8 @@ "WenPai\\ChinaYes\\": "./" }, "files": [ - "helpers.php" + "helpers.php", + "framework/classes/setup.class.php" ] }, "authors": [ diff --git a/composer.lock b/composer.lock index a3a6980..6066563 100644 --- a/composer.lock +++ b/composer.lock @@ -4,52 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "19512e097932a150b6ccc5f8044c62ed", + "content-hash": "46cf14a68ffba471ee1e2f603a301a9c", "packages": [ - { - "name": "thetnb/wp-setting-api", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/TheTNB/wp-setting-api.git", - "reference": "0e34224dfe0832fd3bf29e2e3c054a2aad603f84" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/TheTNB/wp-setting-api/zipball/0e34224dfe0832fd3bf29e2e3c054a2aad603f84", - "reference": "0e34224dfe0832fd3bf29e2e3c054a2aad603f84", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "TheTNB\\Setting\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-3.0-or-later" - ], - "authors": [ - { - "name": "耗子", - "email": "i@haozi.net" - } - ], - "description": "WordPress Setting API for developers", - "homepage": "https://github.com/thetnb/wp-setting-api", - "keywords": [ - "wordpress" - ], - "support": { - "issues": "https://github.com/TheTNB/wp-setting-api/issues", - "source": "https://github.com/TheTNB/wp-setting-api/tree/2.0.2" - }, - "time": "2024-03-08T07:11:27+00:00" - }, { "name": "yahnis-elsts/plugin-update-checker", "version": "v5.4", diff --git a/framework/assets/css/style-rtl.min.css b/framework/assets/css/style-rtl.min.css new file mode 100644 index 0000000..a86bcb9 --- /dev/null +++ b/framework/assets/css/style-rtl.min.css @@ -0,0 +1 @@ +.wp_china_yes-options{margin-left:20px;margin-right:0}.wp_china_yes-header h1{float:right}.wp_china_yes-header fieldset{float:left}.wp_china_yes-buttons{float:left;direction:ltr}.wp_china_yes-header-left{float:right}.wp_china_yes-header-right{float:left}.wp_china_yes-nav{float:right}.wp_china_yes-nav ul{clear:right}.wp_china_yes-nav ul li .wp_china_yes-active:after{right:auto;left:0;border-left-color:#fff;border-right-color:transparent}.wp_china_yes-nav ul li .wp_china_yes-arrow:after{content:"\f053";right:auto;left:10px}.wp_china_yes-nav ul li.wp_china_yes-tab-expanded .wp_china_yes-arrow:after{transform:rotate(-90deg)}.wp_china_yes-nav ul ul li a{padding-right:25px;padding-left:15px}.wp_china_yes-nav ul ul:before{left:auto;right:15px}.wp_china_yes-nav .wp_china_yes-tab-icon{margin-left:5px;margin-right:0}.wp_china_yes-nav-background{left:auto;right:0}.wp_china_yes-content{margin-left:0;margin-right:225px}.wp_china_yes-sections{float:right}.wp_china_yes-show-all .wp_china_yes-content{margin-right:0;overflow:hidden}.wp_china_yes-expand-all{float:right;right:auto;left:40px;margin-right:0;margin-left:4px}.wp_china_yes-search{float:right}.wp_china_yes-search input{margin:0 0 0 5px}.wp_china_yes-copyright{float:right}.wp_china_yes-metabox{margin:-6px -12px -12px -12px}.wp_china_yes-metabox .wp_china_yes-section-title{padding:20px}.wp_china_yes-section-title .wp_china_yes-section-icon{margin-left:5px;margin-right:0}.wp_china_yes-field .wp_china_yes-title{float:right}.wp_china_yes-field .wp_china_yes-fieldset{float:left}.wp_china_yes-pseudo-field{padding:0 0 0 5px!important}.wp_china_yes-field-typography select{margin:0;width:100%}.wp_china_yes-field-typography .wp_china_yes--blocks-inputs .wp_china_yes--blocks{flex-direction:row-reverse}.wp_china_yes-field-typography .wp_china_yes--unit{left:4px;right:auto}.wp_china_yes-field-checkbox ul ul li,.wp_china_yes-field-radio ul ul li{margin-left:0;margin-right:8px}.wp_china_yes-field-checkbox ul ul li:first-child,.wp_china_yes-field-radio ul ul li:first-child{margin-right:0}.wp_china_yes-field-checkbox .wp_china_yes--inline-list li,.wp_china_yes-field-radio .wp_china_yes--inline-list li{margin-right:0;margin-left:15px}.wp_china_yes-field-checkbox .wp_china_yes--text,.wp_china_yes-field-radio .wp_china_yes--text{margin-left:0;margin-right:5px}.wp_china_yes-field-switcher .wp_china_yes--switcher{float:right}.wp_china_yes-field-switcher .wp_china_yes--label{float:right;margin-left:0;margin-right:5px}.wp_china_yes-field-upload .wp_china_yes--button,.wp_china_yes-field-upload .wp_china_yes--remove{margin-left:0;margin-right:5px}.wp_china_yes-field-group .wp_china_yes-cloneable-title{padding:15px 10px 15px 65px}.wp_china_yes-field-group .wp_china_yes-cloneable-helper{right:auto;left:10px}.wp_china_yes-field-repeater .wp_china_yes-repeater-helper{border-left:0;border-right:1px solid #eee}.wp_china_yes-help{right:auto;left:5px}.wp_china_yes-field-icon .button{margin-right:0;margin-left:5px}.wp_china_yes-field-icon .wp_china_yes-icon-preview i{margin-right:0;margin-left:5px}.wp_china_yes-field-gallery ul li{margin-right:0;margin-left:5px}.wp_china_yes-field-gallery .button{margin-right:0;margin-left:5px}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav .wp_china_yes--icon{padding-right:0;padding-left:5px}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav a{margin-right:0;margin-left:5px}.wp_china_yes-field-media .button{margin-left:0;margin-right:7px}.wp_china_yes-field-media .hidden+.button{margin-right:0}.wp_china_yes-notice{border-left:none;border-right-style:solid;border-right-width:4px}.wp_china_yes-field-border .wp_china_yes--input,.wp_china_yes-field-border .wp_china_yes-fieldset,.wp_china_yes-field-dimensions .wp_china_yes--input,.wp_china_yes-field-dimensions .wp_china_yes-fieldset,.wp_china_yes-field-spacing .wp_china_yes--input,.wp_china_yes-field-spacing .wp_china_yes-fieldset{direction:ltr}.wp_china_yes-field-border .wp_china_yes--color,.wp_china_yes-field-border .wp_china_yes--inputs,.wp_china_yes-field-dimensions .wp_china_yes--color,.wp_china_yes-field-dimensions .wp_china_yes--inputs,.wp_china_yes-field-spacing .wp_china_yes--color,.wp_china_yes-field-spacing .wp_china_yes--inputs{float:right}.wp_china_yes-field-border .wp_china_yes--color,.wp_china_yes-field-dimensions .wp_china_yes--color,.wp_china_yes-field-spacing .wp_china_yes--color{margin-right:4px;direction:rtl}.wp_china_yes-field-background .wp_china_yes--block{float:right}.wp_china_yes-field-background .wp_china_yes--media,.wp_china_yes-field-background .wp_china_yes--select{padding-right:0}.wp_china_yes-field-background .wp_china_yes--title{margin-right:0;margin-left:5px}.wp_china_yes-field-spinner .wp_china_yes--spin{float:right;direction:ltr}.wp_china_yes-field-slider .wp_china_yes-slider-ui{direction:ltr;margin-right:0;margin-left:15px}.wp_china_yes-field-slider .wp_china_yes--input{direction:ltr}.wp_china_yes-field-button_set .wp_china_yes--button-group{float:right}.wp_china_yes-field-link_color .wp_china_yes--left{float:right;margin-right:0;margin-left:10px}.wp_china_yes-field-color_group .wp_china_yes--left{float:right;margin-right:0;margin-left:10px}.wp_china_yes-field-palette .wp_china_yes--palette{margin-right:0;margin-left:10px}.wp_china_yes-field-accordion .wp_china_yes--icon{margin-right:0;margin-left:2px}.wp_china_yes-field-date .wp_china_yes--to{margin-left:0;margin-right:7px}.wp_china_yes-field-map .wp_china_yes--map-input:last-child{padding-left:0;padding-right:10px}.wp_china_yes-field-sortable .wp_china_yes-sortable-helper{border-left:none;border-right:1px solid #eee}.wp_china_yes-field-number .wp_china_yes--wrap{float:right}.wp_china_yes-field-number .wp_china_yes--unit{left:4px;right:auto}.wp_china_yes-taxonomy-add-fields{margin-right:0;margin-left:30px}.wp_china_yes-taxonomy-add-fields .wp_china_yes-field>.wp_china_yes-fieldset>.wp_china_yes-help{left:-5px;right:auto}.wp_china_yes-taxonomy-edit-fields{margin-right:0;margin-left:35px}.wp_china_yes-taxonomy-edit-fields .wp_china_yes-field>.wp_china_yes-fieldset>.wp_china_yes-help{right:auto;left:-5px}.wp_china_yes-profile-options>h2>.fa{padding-right:0;padding-left:7px}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-fieldset>.wp_china_yes-help{left:-5px;right:auto}.wp_china_yes-nav-menu-options>.wp_china_yes-fields{margin-left:0;margin-right:-10px}.wp_china_yes-nav-menu-title{padding-left:14px;padding-right:12px}.wp_china_yes-nav-menu-icon{margin-right:0;margin-left:5px}.wp_china_yes-modal-content .wp_china_yes-field{padding:15px 15px 15px 30px}.wp_china_yes-modal-title{padding:0 16px 0 36px}.wp_china_yes-modal-close{right:auto;left:0}.control-section .wp_china_yes-field .wp_china_yes-fieldset{margin-right:0}@media only screen and (max-width:1200px){.wp_china_yes-metabox .wp_china_yes-field .wp_china_yes-fieldset{margin-left:0}}@media only screen and (max-width:782px){.wp_china_yes .wp_china_yes-content,.wp_china_yes .wp_china_yes-fieldset{margin-right:0}}.wp_china_yes-field .wp_china_yes--transparent-slider{margin-left:0;margin-right:2px}.wp_china_yes-field .wp_china_yes--transparent-slider .ui-slider-handle{margin:0 -11px}.wp_china_yes-field .wp_china_yes--transparent-offset{background-position:center right}.wp_china_yes-field .wp_china_yes--transparent-text{right:auto;left:10px} \ No newline at end of file diff --git a/framework/assets/css/style.min.css b/framework/assets/css/style.min.css new file mode 100644 index 0000000..47b2091 --- /dev/null +++ b/framework/assets/css/style.min.css @@ -0,0 +1 @@ +.wp_china_yes{position:relative}.wp_china_yes label{padding:0;margin:0;display:inline-block}.wp_china_yes-ab-icon{top:2px}#screen-meta-links+.wp_china_yes-options{margin-top:40px}.wp_china_yes-options{margin-top:20px;margin-right:20px}.wp_china_yes-header{position:relative}.wp_china_yes-header-inner{padding:25px;transition:box-shadow .3s ease}.wp_china_yes-header-inner h1{float:left;font-size:1.5em;line-height:26px;font-weight:400;margin:0}.wp_china_yes-header-inner h1 small{font-size:11px;font-weight:500}.wp_china_yes-sticky .wp_china_yes-header-inner{position:fixed;z-index:99;top:32px;box-shadow:0 5px 10px rgba(0,0,0,.1)}.wp_china_yes-buttons{float:right}.wp_china_yes-buttons .button{margin:0 2px;line-height:26px}.wp_china_yes-buttons .button:focus{outline:0!important;box-shadow:none!important}.wp_china_yes-buttons .wp_china_yes-save{min-width:72px}.wp_china_yes-header-left{float:left}.wp_china_yes-header-right{float:right}.wp_china_yes-nav{display:block;position:relative;z-index:10;float:left}.wp_china_yes-nav ul{clear:left;margin:0;list-style-type:none}.wp_china_yes-nav ul li{margin-bottom:0}.wp_china_yes-nav ul li a{font-size:13px;position:relative;display:block;padding:14px 12px;text-decoration:none;transition-property:color,background;transition-duration:.2s;transition-timing-function:ease}.wp_china_yes-nav ul li a:focus{outline:0;box-shadow:none}.wp_china_yes-nav ul li .wp_china_yes-arrow:after{content:"\f054";display:inline-block;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:9px;line-height:1;position:absolute;right:10px;top:50%;margin-top:-4px}.wp_china_yes-nav ul li.wp_china_yes-tab-expanded .wp_china_yes-arrow:after{transform:rotate(90deg)}.wp_china_yes-nav ul li.wp_china_yes-tab-expanded ul{display:block}.wp_china_yes-nav ul ul{display:none;position:relative}.wp_china_yes-nav ul ul li a{font-size:12px;padding:12px 14px 12px 24px}.wp_china_yes-nav .wp_china_yes-tab-icon{width:20px;margin-right:5px;font-size:13px;text-align:center}.wp_china_yes-nav .wp_china_yes-label-error{margin-left:4px;vertical-align:top}.wp_china_yes-nav-normal{width:225px}.wp_china_yes-nav-normal+.wp_china_yes-content{margin-left:225px}.wp_china_yes-nav-inline{width:100%}.wp_china_yes-nav-inline ul li{display:inline-block;vertical-align:top}.wp_china_yes-nav-background{position:absolute;top:0;left:0;bottom:0;z-index:9;width:225px}.wp_china_yes-wrapper{position:relative}.wp_china_yes-content{position:relative;background-color:#fff}.wp_china_yes-sections{float:left;width:100%}.wp_china_yes-section-title{display:none;padding:20px 30px;background-color:#f5f5f5;border-top:1px solid #eee;border-bottom:1px solid #eee}.wp_china_yes-section-title h3{margin:0;padding:0;font-size:13px;font-weight:700;text-transform:uppercase}.wp_china_yes-section-title .wp_china_yes-section-icon{margin-right:5px}.wp_china_yes-footer{padding:20px;font-size:11px}.wp_china_yes-copyright{float:left;margin-top:5px}.wp_china_yes-search-all .wp_china_yes-nav,.wp_china_yes-search-all .wp_china_yes-nav-background,.wp_china_yes-show-all .wp_china_yes-nav,.wp_china_yes-show-all .wp_china_yes-nav-background{display:none}.wp_china_yes-search-all .wp_china_yes-content,.wp_china_yes-show-all .wp_china_yes-content{margin-left:0}.wp_china_yes-search-all .wp_china_yes-section,.wp_china_yes-search-all .wp_china_yes-section-title,.wp_china_yes-show-all .wp_china_yes-section,.wp_china_yes-show-all .wp_china_yes-section-title{display:block!important}.wp_china_yes-search-all .wp_china_yes-section-title{display:none!important}.wp_china_yes-expand-all{float:left;padding:0 8px;margin-right:4px;z-index:1;font-size:13px;line-height:30px;cursor:pointer;user-select:none;border-radius:2px;transition:all .2s}.wp_china_yes-expand-all span{font-size:11px;vertical-align:middle}.wp_china_yes-search{float:left}.wp_china_yes-search input{margin:0 2px 0 0;border:none;font-size:12px;line-height:30px;min-height:30px;text-align:inherit;padding:0 10px;border-radius:2px;box-shadow:none}.wp_china_yes-search input:focus{box-shadow:none}.wp_china_yes-saving .wp_china_yes-buttons,.wp_china_yes-saving .wp_china_yes-content{cursor:default;pointer-events:none;opacity:.5}.wp_china_yes-metabox{margin:-6px -12px -12px -12px}.wp_china_yes-metabox .wp_china_yes-field{padding:20px}.wp_china_yes-metabox .wp_china_yes-section-title{padding:20px}.block-editor-page .wp_china_yes-metabox{margin:-6px -14px -14px -14px}.block-editor-editor-skeleton__content .wp_china_yes-metabox{border-left:1px solid #e2e4e7;border-right:1px solid #e2e4e7}.wp_china_yes-sections-reset{float:left;width:100%;text-align:right;border-top:1px solid #eee}.wp_china_yes-sections-reset .wp_china_yes-button-cancel,.wp_china_yes-sections-reset input{display:none}.wp_china_yes-sections-reset label{padding:10px}.wp_china_yes-sections-reset span{-webkit-user-select:none;user-select:none}.wp_china_yes-sections-reset input:checked~.wp_china_yes-button-reset{display:none}.wp_china_yes-sections-reset input:checked~.wp_china_yes-button-cancel{display:inline-block}#side-sortables .wp_china_yes-section-title{padding:12px}#side-sortables .wp_china_yes-field{padding:10px 15px}#side-sortables .wp_china_yes-field .wp_china_yes-title{float:none;width:100%;margin-bottom:6px}#side-sortables .wp_china_yes-field .wp_china_yes-fieldset{float:none;width:100%}#side-sortables .wp_china_yes-field-text input{width:100%}#side-sortables .wp_china_yes-notice{padding:10px 15px}.wp_china_yes-comment-metabox{margin:-6px -12px -12px -12px}.wp_china_yes-comment-metabox .wp_china_yes-field{padding:20px}.wp_china_yes-comment-metabox .wp_china_yes-section-title{padding:20px}.wp_china_yes-tooltip{position:absolute;z-index:5000001;font-size:12px;line-height:1.4;text-align:center;text-decoration:none;padding:6px 12px;max-width:200px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.85);border-radius:4px}.wp_china_yes-theme-dark .wp_china_yes-header-inner{background-color:#050505}.wp_china_yes-theme-dark .wp_china_yes-header-inner h1{color:#fff}.wp_china_yes-theme-dark .wp_china_yes-header-inner h1 small{color:#555}.wp_china_yes-theme-dark .wp_china_yes-expand-all{color:#999;background-color:#222}.wp_china_yes-theme-dark .wp_china_yes-expand-all:hover{color:#fff;background-color:#333}.wp_china_yes-theme-dark .wp_china_yes-search input{color:#fff;background-color:#222}.wp_china_yes-theme-dark .wp_china_yes-search:focus{background-color:#444}.wp_china_yes-theme-dark .wp_china_yes-search::-webkit-input-placeholder{color:#666}.wp_china_yes-theme-dark .wp_china_yes-nav ul li a{color:#999;border-color:#2f2f2f;background-color:#222}.wp_china_yes-theme-dark .wp_china_yes-nav ul li a:hover{color:#fff}.wp_china_yes-theme-dark .wp_china_yes-nav ul li .wp_china_yes-active{color:#fff;background-color:#111}.wp_china_yes-theme-dark .wp_china_yes-nav ul ul li a{border-color:#2f2f2f;background-color:#191919}.wp_china_yes-theme-dark .wp_china_yes-nav ul ul li .wp_china_yes-active{background-color:#101010}.wp_china_yes-theme-dark .wp_china_yes-nav ul ul:before{background-color:rgba(34,34,34,.75)}.wp_china_yes-theme-dark .wp_china_yes-nav>ul>li:last-child>a{border:none}.wp_china_yes-theme-dark .wp_china_yes-nav-normal ul li a{border-bottom-width:1px;border-bottom-style:solid}.wp_china_yes-theme-dark .wp_china_yes-nav-normal ul li .wp_china_yes-active:after{content:" ";position:absolute;right:0;top:50%;height:0;width:0;pointer-events:none;border:solid transparent;border-right-color:#fff;border-width:4px;margin-top:-4px}.wp_china_yes-theme-dark .wp_china_yes-nav-inline{background-color:#222}.wp_china_yes-theme-dark .wp_china_yes-nav-inline ul li a{text-align:center;border-right-width:1px;border-right-style:solid}.wp_china_yes-theme-dark .wp_china_yes-nav-inline ul li .wp_china_yes-active:after{content:" ";position:absolute;left:50%;bottom:0;height:0;width:0;pointer-events:none;border:solid transparent;border-bottom-color:#fff;border-width:4px;margin-left:-4px}.wp_china_yes-theme-dark .wp_china_yes-nav-background{background-color:#222}.wp_china_yes-theme-dark .wp_china_yes-footer{color:#555;background-color:#050505}.wp_china_yes-theme-light .wp_china_yes-container{border:1px solid #ccd0d4;box-shadow:0 0 15 rgba(0,0,0,.04)}.wp_china_yes-theme-light .wp_china_yes-header-inner{border-bottom:1px solid #ccd0d4;background-color:#f5f5f5;background:linear-gradient(#fefefe,#f5f5f5)}.wp_china_yes-theme-light .wp_china_yes-header-inner h1 small{color:#999}.wp_china_yes-theme-light .wp_china_yes-expand-all{color:#999;background-color:#eee}.wp_china_yes-theme-light .wp_china_yes-expand-all:hover{color:#555}.wp_china_yes-theme-light .wp_china_yes-search input{color:#555;background-color:#eee}.wp_china_yes-theme-light .wp_china_yes-search input::-webkit-input-placeholder{color:#999}.wp_china_yes-theme-light .wp_china_yes-nav ul li a{font-weight:500;color:#444;background-color:#f5f5f5}.wp_china_yes-theme-light .wp_china_yes-nav ul li a:hover{color:#111;background-color:#fff}.wp_china_yes-theme-light .wp_china_yes-nav ul li .wp_china_yes-active{color:#111;background-color:#fff}.wp_china_yes-theme-light .wp_china_yes-nav ul ul li a{background-color:#eee}.wp_china_yes-theme-light .wp_china_yes-nav-normal>ul{margin-right:-1px;margin-bottom:-1px}.wp_china_yes-theme-light .wp_china_yes-nav-normal>ul li a{border-bottom:1px solid #ccd0d4;border-right:1px solid #ccd0d4}.wp_china_yes-theme-light .wp_china_yes-nav-normal>ul li .wp_china_yes-active{border-right-color:#fff}.wp_china_yes-theme-light .wp_china_yes-nav-inline{background-color:#f5f5f5;border-bottom:1px solid #ccd0d4}.wp_china_yes-theme-light .wp_china_yes-nav-inline>ul{margin-bottom:-1px}.wp_china_yes-theme-light .wp_china_yes-nav-inline>ul li a{text-align:center;border-right:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}.wp_china_yes-theme-light .wp_china_yes-nav-inline>ul li .wp_china_yes-active{border-bottom-color:#fff}.wp_china_yes-theme-light .wp_china_yes-nav-inline>ul ul{display:none!important}.wp_china_yes-theme-light .wp_china_yes-nav-inline .wp_china_yes-arrow:after{display:none}.wp_china_yes-theme-light .wp_china_yes-nav-background{background-color:#f5f5f5;border-right:1px solid #ccd0d4}.wp_china_yes-theme-light .wp_china_yes-footer{color:#555;border-top:1px solid #ccd0d4;background-color:#f5f5f5;background:linear-gradient(#fafafa,#f5f5f5)}.wp_china_yes-field{position:relative;padding:30px}.wp_china_yes-field+.wp_china_yes-field{border-top:1px solid #eee}.wp_china_yes-field p:first-child{margin-top:0}.wp_china_yes-field p:last-child{margin-bottom:0}.wp_china_yes-field:after,.wp_china_yes-field:before{content:" ";display:table}.wp_china_yes-field:after{clear:both}.wp_china_yes-field h4{margin-top:0}.wp_china_yes-field .wp_china_yes-title{position:relative;width:20%;float:left}.wp_china_yes-field .wp_china_yes-title h4{margin:0;color:#23282d}.wp_china_yes-field .wp_china_yes-fieldset{float:right;width:calc(80% - 20px)}.wp_china_yes-pseudo-field{padding:0 5px 0 0!important;display:inline-block}.wp_china_yes-pseudo-field+.wp_china_yes-pseudo-field{border:0}.wp_china_yes-pseudo-field pre{display:none}.wp_china_yes-field-accordion .wp_china_yes-accordion-item{position:relative;margin-bottom:5px}.wp_china_yes-field-accordion .wp_china_yes-accordion-item:last-child{margin-bottom:0}.wp_china_yes-field-accordion .wp_china_yes-accordion-item h4{font-size:1em}.wp_china_yes-field-accordion .wp_china_yes-accordion-title{display:block;cursor:pointer;position:relative;margin:0;padding:15px;min-height:0;font-size:100%;user-select:none;border:1px solid #ccd0d4;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,.04);transition:border-color .15s}.wp_china_yes-field-accordion .wp_china_yes-accordion-title:active,.wp_china_yes-field-accordion .wp_china_yes-accordion-title:focus,.wp_china_yes-field-accordion .wp_china_yes-accordion-title:hover{outline:0;border-color:#999}.wp_china_yes-field-accordion .wp_china_yes-accordion-title .wp_china_yes--icon{width:20px;text-align:center;margin-right:2px}.wp_china_yes-field-accordion .wp_china_yes-accordion-icon{width:16px;text-align:center}.wp_china_yes-field-accordion .wp_china_yes-accordion-content{display:none;padding:0;border:1px solid #ccd0d4;border-top:none;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp_china_yes-field-accordion .wp_china_yes-accordion-content>.wp_china_yes-field{padding:15px}.wp_china_yes-field-accordion .wp_china_yes-accordion-open{display:block}.wp_china_yes-field-background .wp_china_yes-field{border:0!important;padding:0;margin-bottom:6px;margin-right:6px}.wp_china_yes-field-background .wp_china_yes--title{color:#777;font-size:12px}.wp_china_yes-field-background .wp_china_yes--background-colors{display:flex;flex-wrap:wrap}.wp_china_yes-field-background .wp_china_yes--background-attributes{display:flex;flex-wrap:wrap}.wp_china_yes-field-background .wp_china_yes--background-attributes select{min-width:100%;margin:0}.wp_china_yes-field-background .wp_china_yes--background-attributes .wp_china_yes-field{flex:1}.wp_china_yes-field-background .wp_china_yes--attributes-hidden{display:none}.wp_china_yes-field-backup textarea{width:100%;min-height:200px;margin-bottom:5px}.wp_china_yes-field-backup small{display:inline-block;margin:5px}.wp_china_yes-field-backup hr{margin:20px 0;border:none;border-bottom:1px solid #e5e5e5}.wp_china_yes-field-border .wp_china_yes--inputs,.wp_china_yes-field-dimensions .wp_china_yes--inputs,.wp_china_yes-field-spacing .wp_china_yes--inputs{float:left;display:flex;flex-wrap:wrap}.wp_china_yes-field-border .wp_china_yes--input,.wp_china_yes-field-dimensions .wp_china_yes--input,.wp_china_yes-field-spacing .wp_china_yes--input{display:flex;padding-right:6px;padding-bottom:4px;box-sizing:border-box}.wp_china_yes-field-border .wp_china_yes--input select,.wp_china_yes-field-dimensions .wp_china_yes--input select,.wp_china_yes-field-spacing .wp_china_yes--input select{margin:0}.wp_china_yes-field-border .wp_china_yes--input input,.wp_china_yes-field-dimensions .wp_china_yes--input input,.wp_china_yes-field-spacing .wp_china_yes--input input{position:relative;z-index:1;margin:0;width:65px;max-width:100%;text-align:center}.wp_china_yes-field-border .wp_china_yes--color,.wp_china_yes-field-dimensions .wp_china_yes--color,.wp_china_yes-field-spacing .wp_china_yes--color{float:left}.wp_china_yes-field-border .wp_china_yes--label,.wp_china_yes-field-dimensions .wp_china_yes--label,.wp_china_yes-field-spacing .wp_china_yes--label{display:flex;flex-direction:column;justify-content:center;user-select:none;min-width:20px;max-width:100%;padding:0 4px;font-size:12px;text-align:center;color:#555;border:1px solid #7b776c;background-color:#f5f5f5}.wp_china_yes-field-border .wp_china_yes--icon,.wp_china_yes-field-dimensions .wp_china_yes--icon,.wp_china_yes-field-spacing .wp_china_yes--icon{border-right:0;border-radius:4px 0 0 4px}.wp_china_yes-field-border .wp_china_yes--icon+input,.wp_china_yes-field-dimensions .wp_china_yes--icon+input,.wp_china_yes-field-spacing .wp_china_yes--icon+input{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.wp_china_yes-field-border .wp_china_yes--unit,.wp_china_yes-field-dimensions .wp_china_yes--unit,.wp_china_yes-field-spacing .wp_china_yes--unit{border-left:0;border-radius:0 4px 4px 0}.wp_china_yes-field-border .wp_china_yes--is-unit,.wp_china_yes-field-dimensions .wp_china_yes--is-unit,.wp_china_yes-field-spacing .wp_china_yes--is-unit{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.wp_china_yes-field-button_set .wp_china_yes--buttons{display:inline-block}.wp_china_yes-field-button_set .wp_china_yes--button{position:relative;z-index:1;float:left;cursor:pointer;padding:7px 14px;min-width:16px;text-align:center;color:#555;border:1px solid #ccc;background-color:#f7f7f7;user-select:none;box-shadow:0 1px 0 rgba(0,0,0,.1)}.wp_china_yes-field-button_set .wp_china_yes--button:first-child{border-radius:4px 0 0 4px}.wp_china_yes-field-button_set .wp_china_yes--button:last-child{border-radius:0 4px 4px 0}.wp_china_yes-field-button_set .wp_china_yes--button:not(:first-child){margin-left:-1px}.wp_china_yes-field-button_set .wp_china_yes--button:hover{background-color:#eee}.wp_china_yes-field-button_set .wp_china_yes--active,.wp_china_yes-field-button_set .wp_china_yes--active:hover{z-index:2;color:#fff;border-color:#006799;background-color:#0085ba}.wp_china_yes-field-button_set input{display:none}.wp_china_yes-field-checkbox ul,.wp_china_yes-field-radio ul{margin:0;padding:0;list-style-type:none;overflow-y:auto;max-height:305px}.wp_china_yes-field-checkbox ul li,.wp_china_yes-field-radio ul li{margin-bottom:6px}.wp_china_yes-field-checkbox ul ul,.wp_china_yes-field-radio ul ul{max-height:none}.wp_china_yes-field-checkbox ul ul li,.wp_china_yes-field-radio ul ul li{margin-left:8px}.wp_china_yes-field-checkbox ul ul li:first-child,.wp_china_yes-field-radio ul ul li:first-child{margin-left:0}.wp_china_yes-field-checkbox input,.wp_china_yes-field-radio input{margin:0 1px}.wp_china_yes-field-checkbox .wp_china_yes--inline-list li,.wp_china_yes-field-radio .wp_china_yes--inline-list li{display:inline-block;margin-right:15px}.wp_china_yes-field-checkbox .wp_china_yes--text,.wp_china_yes-field-radio .wp_china_yes--text{margin-left:5px;vertical-align:middle}.wp_china_yes-field-checkbox .wp_china_yes-checker,.wp_china_yes-field-radio .wp_china_yes-checker{cursor:pointer}.wp_china_yes-field-checkbox .wp_china_yes-checkbox-all,.wp_china_yes-field-radio .wp_china_yes-checkbox-all{user-select:none;cursor:pointer;margin-top:5px;font-weight:500;text-decoration:none}.wp_china_yes-field-code_editor .CodeMirror{width:100%;height:400px}.wp_china_yes-field-code_editor .cm-s-default{border:1px solid #ccd0d4}.wp_china_yes-field-code_editor textarea{width:100%;height:400px}.wp_china_yes-field-color>input{opacity:.75;width:115px;max-width:100%}.wp_china_yes-field-color .button.wp-picker-clear{padding:0 8px;margin-left:6px;line-height:2.54545455;min-height:30px}.wp_china_yes-field-color_group .wp_china_yes--left{float:left;margin-right:10px;margin-bottom:5px}.wp_china_yes-field-color_group .wp_china_yes--title{color:#999;margin-bottom:5px}.wp_china_yes-field-fieldset .wp_china_yes-fieldset-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp_china_yes-field-fieldset .wp_china_yes-fieldset-content>.wp_china_yes-field{padding:15px}.wp_china_yes-field-fieldset .wp_china_yes-field-subheading{font-size:13px}.wp_china_yes-field-date input{margin:0}.wp_china_yes-field-date .wp_china_yes--to{margin-left:7px}.wp_china_yes-datepicker-wrapper{margin-top:5px;width:auto;background-color:#fff;z-index:9999999!important;box-shadow:0 0 30px rgba(0,0,0,.15)}.wp_china_yes-datepicker-wrapper *{float:none;margin:0;padding:0;font-family:inherit;font-weight:400;font-style:normal;text-decoration:none;border:0;border-radius:0;box-shadow:none}.wp_china_yes-datepicker-wrapper .ui-datepicker-header,.wp_china_yes-datepicker-wrapper .ui-widget-header{color:#fff;background:#00a0d2}.wp_china_yes-datepicker-wrapper .ui-datepicker-header .ui-state-hover{cursor:pointer}.wp_china_yes-datepicker-wrapper .ui-datepicker-title{font-size:14px;line-height:40px;text-align:center}.wp_china_yes-datepicker-wrapper .ui-datepicker-next,.wp_china_yes-datepicker-wrapper .ui-datepicker-prev{position:static;top:auto;left:auto;right:auto;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;text-align:center;width:41px;height:40px;line-height:40px;color:#fff;background-color:rgba(255,255,255,.1);text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp_china_yes-datepicker-wrapper .ui-datepicker-next span,.wp_china_yes-datepicker-wrapper .ui-datepicker-prev span{display:none}.wp_china_yes-datepicker-wrapper .ui-datepicker-prev{float:left}.wp_china_yes-datepicker-wrapper .ui-datepicker-next{float:right}.wp_china_yes-datepicker-wrapper .ui-datepicker-prev:before{content:"\f053"}.wp_china_yes-datepicker-wrapper .ui-datepicker-next:before{content:"\f054"}.wp_china_yes-datepicker-wrapper .ui-datepicker-next-hover,.wp_china_yes-datepicker-wrapper .ui-datepicker-prev-hover{opacity:.75}.wp_china_yes-datepicker-wrapper tbody .ui-datepicker-week-col{background-color:#f7f7f7}.wp_china_yes-datepicker-wrapper .ui-datepicker-buttonpane{padding:10px;text-align:center;background-color:#f7f7f7}.wp_china_yes-datepicker-wrapper .ui-datepicker-buttonpane button{cursor:pointer;margin:0 5px;padding:7px 14px;border:1px solid #eee;background-color:#fff}.wp_china_yes-datepicker-wrapper select{margin:0 4px}.wp_china_yes-datepicker-wrapper select option{color:#555}.wp_china_yes-datepicker-wrapper table{font-size:13px;border-collapse:collapse;width:100%}.wp_china_yes-datepicker-wrapper thead{color:#fff;background:#32373c}.wp_china_yes-datepicker-wrapper th{text-align:center;padding:7px;border:1px solid #444}.wp_china_yes-datepicker-wrapper td{text-align:center;border:1px solid #f4f4f4}.wp_china_yes-datepicker-wrapper td.ui-datepicker-other-month{border:transparent}.wp_china_yes-datepicker-wrapper td .ui-state-default{color:#555;width:auto;display:block;padding:6px 12px}.wp_china_yes-datepicker-wrapper td .ui-state-active,.wp_china_yes-datepicker-wrapper td .ui-state-hover{color:#fff;background-color:#0073aa}.wp_china_yes-datepicker-wrapper td.ui-state-disabled .ui-state-default{opacity:.5}.wp_china_yes-field-datetime input{margin:0}.wp_china_yes-field-datetime .wp_china_yes--to{margin-left:7px}.wp_china_yes-flatpickr input,.wp_china_yes-flatpickr select{min-height:auto}.wp_china_yes-flatpickr input:focus,.wp_china_yes-flatpickr select:focus{box-shadow:none}.wp_china_yes-flatpickr.open{z-index:9999999!important}.wp_china_yes-field-gallery ul{margin:0;padding:0;list-style-type:none}.wp_china_yes-field-gallery ul li{display:inline-block;position:relative;padding:4px;margin:0 5px 10px 0;border:1px solid #ccc;background-color:#f9f9f9;border-radius:2px;box-shadow:0 1px 0 rgba(0,0,0,.08)}.wp_china_yes-field-gallery ul li img{max-height:60px;display:inline-block;vertical-align:middle}.wp_china_yes-field-gallery .button{margin-right:5px;margin-bottom:5px}.wp_china_yes-field-group .wp_china_yes-cloneable-hidden{display:none!important}.wp_china_yes-field-group .wp_china_yes-cloneable-wrapper{position:relative}.wp_china_yes-field-group .wp_china_yes-cloneable-item{display:none;position:relative;margin-bottom:5px}.wp_china_yes-field-group .wp_china_yes-cloneable-item h4{font-size:1em}.wp_china_yes-field-group .ui-accordion .wp_china_yes-cloneable-item{display:block}.wp_china_yes-field-group .wp_china_yes-cloneable-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp_china_yes-field-group .wp_china_yes-cloneable-content>.wp_china_yes-field{padding:15px}.wp_china_yes-field-group .wp_china_yes-cloneable-title{display:block;cursor:pointer;position:relative;user-select:none;margin:0;padding:15px 65px 15px 10px;min-height:0;font-size:100%;border:1px solid #ccd0d4;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,.04);transition:border-color .15s}.wp_china_yes-field-group .wp_china_yes-cloneable-title:active,.wp_china_yes-field-group .wp_china_yes-cloneable-title:focus,.wp_china_yes-field-group .wp_china_yes-cloneable-title:hover{border-color:#999;outline:0}.wp_china_yes-field-group .wp_china_yes-cloneable-helper{position:absolute;top:12px;right:10px;z-index:1;font-size:14px;line-height:1em}.wp_china_yes-field-group .wp_china_yes-cloneable-helper i{display:inline-block;cursor:pointer;padding:5px;color:#999}.wp_china_yes-field-group .wp_china_yes-cloneable-helper i:hover{color:#555}.wp_china_yes-field-group .wp_china_yes-cloneable-content{padding:0;border-top:0}.wp_china_yes-field-group .wp_china_yes-cloneable-title-number,.wp_china_yes-field-group .wp_china_yes-cloneable-title-prefix{margin-right:5px}.wp_china_yes-field-group .wp_china_yes-cloneable-alert{display:none;margin-bottom:5px;padding:10px 20px;color:#a94442;border:1px solid #ebccd1;background-color:#f2dede}.wp_china_yes-field-group .widget-placeholder{margin-bottom:10px;border:1px dashed #f1c40f;background-color:#fffae4}.wp_china_yes-field-group .wp_china_yes-cloneable-header-icon{display:inline-block;text-align:center;font-size:14px;width:17px;text-indent:0;vertical-align:text-top}.wp_china_yes-field-group .wp_china_yes-cloneable-placeholder{background-color:#ddd;margin-top:4px;width:100px;height:10px;font-size:10px;line-height:10px;display:inline-block;vertical-align:top;border-radius:2px}.wp_china_yes-field-icon .wp_china_yes-icon-select{display:flex;grid-gap:5px}.wp_china_yes-field-icon .wp_china_yes-icon-preview:not(.hidden){display:flex}.wp_china_yes-field-icon .wp_china_yes-icon-preview i{display:flex;justify-content:center;align-items:center;width:30px;font-size:14px;text-align:center;vertical-align:top;color:#555;border:1px solid #ccc;background-color:#f7f7f7;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08)}.wp_china_yes-field-image_select .wp_china_yes--image{display:inline-block;margin:0 5px 5px 0}.wp_china_yes-field-image_select .wp_china_yes--inline-list .wp_china_yes--image{display:block}.wp_china_yes-field-image_select figure{cursor:pointer;position:relative;display:inline-block;max-width:100%;margin:0;vertical-align:bottom;border:2px solid transparent;background-color:#fff;user-select:none;transition:all .2s}.wp_china_yes-field-image_select figure:before{position:absolute;top:0;left:0;text-align:center;font-size:10px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;content:"\f00c";width:16px;height:16px;line-height:14px;opacity:0;color:#fff;background-color:#222;transition:opacity .2s}.wp_china_yes-field-image_select .wp_china_yes--active figure{border-color:#222;box-shadow:0 0 20px rgba(0,0,0,.2)}.wp_china_yes-field-image_select .wp_china_yes--active figure:before{opacity:1}.wp_china_yes-field-image_select img{max-width:100%;height:auto;vertical-align:top}.wp_china_yes-field-image_select input{display:none}.wp_china_yes-field-link_color .wp_china_yes--left{float:left;margin-right:10px;margin-bottom:5px}.wp_china_yes-field-link_color .wp_china_yes--title{color:#777;margin-bottom:5px}.wp_china_yes-field-map input{width:100%}.wp_china_yes-field-map input[type=text].ui-autocomplete-loading{background-position-x:calc(100% - 5px)}.wp_china_yes-field-map .wp_china_yes--map-search+.wp_china_yes--map-osm-wrap{margin-top:10px}.wp_china_yes-field-map .wp_china_yes--map-osm-wrap{position:relative;padding:5px;border:1px solid #eee;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp_china_yes-field-map .wp_china_yes--map-osm{position:relative;z-index:1;min-height:250px}.wp_china_yes-field-map .wp_china_yes--map-inputs{margin-top:10px;display:flex;justify-content:space-between}.wp_china_yes-field-map .wp_china_yes--map-input{flex:1}.wp_china_yes-field-map .wp_china_yes--map-input:last-child{padding-left:10px}.wp_china_yes-field-map label{display:block;color:#777;font-size:12px;margin:0 0 2px 0}.wp_china_yes-map-ui-autocomplate{z-index:999999;border-radius:4px;overflow:hidden}.wp_china_yes-field-media .wp_china_yes--placeholder{display:flex;align-items:flex-start}.wp_china_yes-field-media .wp_china_yes--placeholder input{width:100%;margin:0}.wp_china_yes-field-media .button{margin-left:5px}.wp_china_yes-field-media .hidden+.button{margin-left:0}.wp_china_yes-field-media .wp_china_yes--preview{position:relative}.wp_china_yes-field-palette .wp_china_yes--palette{position:relative;display:inline-block;cursor:pointer;border:2px solid #ddd;margin-right:10px;margin-bottom:10px;user-select:none;-webkit-user-select:none;transition:all .2s}.wp_china_yes-field-palette .wp_china_yes--palette span{vertical-align:middle;display:inline-block;width:22px;height:60px;line-height:60px;overflow:hidden;text-indent:-999px}.wp_china_yes-field-palette .wp_china_yes--palette:before{position:absolute;top:0;left:0;text-align:center;font-size:10px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;content:"\f00c";width:16px;height:16px;line-height:14px;opacity:0;color:#fff;background-color:#222;transition:opacity .2s}.wp_china_yes-field-palette .wp_china_yes--active{border-color:#222;box-shadow:0 0 20px rgba(0,0,0,.2)}.wp_china_yes-field-palette .wp_china_yes--active:before{opacity:1}.wp_china_yes-field-palette input{display:none}.wp_china_yes-field-repeater .wp_china_yes-field-text input{width:100%}.wp_china_yes-field-repeater .wp_china_yes-repeater-hidden{display:none!important}.wp_china_yes-field-repeater .wp_china_yes-repeater-wrapper .wp_china_yes-repeater-item{display:table;width:100%;margin-bottom:5px;border:1px solid #eee}.wp_china_yes-field-repeater .wp_china_yes-repeater-wrapper .wp_china_yes-repeater-item h4{font-size:1em}.wp_china_yes-field-repeater .wp_china_yes-repeater-content{width:100%;display:table-cell;vertical-align:middle;background-color:#fff}.wp_china_yes-field-repeater .wp_china_yes-repeater-content>.wp_china_yes-field{padding:15px}.wp_china_yes-field-repeater .wp_china_yes-repeater-helper{width:100%;display:table-cell;vertical-align:middle;text-align:center;font-size:14px;line-height:1em;border-left:1px solid #eee;background-color:#f7f7f7}.wp_china_yes-field-repeater .wp_china_yes-repeater-helper i{display:inline-block;cursor:pointer;color:#999;padding:5px}.wp_china_yes-field-repeater .wp_china_yes-repeater-helper i:hover{color:#555}.wp_china_yes-field-repeater .wp_china_yes-repeater-helper-inner{width:75px}.wp_china_yes-field-repeater .wp_china_yes-repeater-alert{display:none;margin-bottom:5px;padding:10px 20px;color:#a94442;border:1px solid #ebccd1;background-color:#f2dede}.wp_china_yes-field-repeater .widget-placeholder{height:50px;margin-bottom:3px;border:1px dashed #f1c40f;background-color:#fffae4}.wp_china_yes-field-repeater .ui-sortable-helper{height:50px!important;overflow:hidden!important;border-color:#ccc!important;background-color:#eee!important;opacity:.5}.wp_china_yes-field-repeater .ui-sortable-helper .wp_china_yes-repeater-content,.wp_china_yes-field-repeater .ui-sortable-helper .wp_china_yes-repeater-helper{display:none}.wp_china_yes-field-select .wp_china_yes-fieldset{min-height:30px}.wp_china_yes-field-select .wp_china_yes-chosen{display:none}.wp_china_yes-field-select select{max-width:100%;margin:0}.wp_china_yes-field-select .wp_china_yes-hide-select{display:none!important}.wp_china_yes-field-slider .wp_china_yes--wrap{display:flex;align-items:center}.wp_china_yes-field-slider .wp_china_yes--input{display:flex}.wp_china_yes-field-slider .wp_china_yes--unit{display:flex;justify-content:center;flex-direction:column;user-select:none;padding:0 6px;font-size:11px;line-height:1;border-radius:0 4px 4px 0;color:#555;border:1px solid #7e8993;border-left:0;background-color:#f5f5f5}.wp_china_yes-field-slider .wp_china_yes-slider-ui{margin-right:15px}.wp_china_yes-field-slider input[type=number]{position:relative;z-index:1;margin:0;width:50px;text-align:center}.wp_china_yes-field-slider .wp_china_yes--is-unit{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.wp_china_yes-field-slider .ui-slider{position:relative;width:100%;height:3px;border:none;background:#ddd;border-radius:2px}.wp_china_yes-field-slider .ui-slider-range{height:3px;border:none;background:#333;border-radius:2px}.wp_china_yes-field-slider .ui-slider-handle{position:absolute;width:16px;height:16px;top:-7px;margin-left:-8px;border:none;background:#333;border-radius:2px}.wp_china_yes-field-slider .ui-slider-handle:hover,.wp_china_yes-field-slider .ui-state-active{cursor:pointer;background:#111}.wp_china_yes-field-sortable .wp_china_yes-field-text input{width:100%;max-width:100%}.wp_china_yes-field-sortable .wp_china_yes-sortable .wp_china_yes-sortable-item{display:table;width:100%;margin-bottom:5px;border:1px solid #eee}.wp_china_yes-field-sortable .wp_china_yes-sortable .wp_china_yes-sortable-item h4{font-size:1em}.wp_china_yes-field-sortable .wp_china_yes-sortable-content{width:100%;display:table-cell;vertical-align:middle;background-color:#fff}.wp_china_yes-field-sortable .wp_china_yes-sortable-content>.wp_china_yes-field{padding:15px}.wp_china_yes-field-sortable .wp_china_yes-sortable-helper{width:100%;display:table-cell;vertical-align:middle;text-align:center;font-size:14px;line-height:1em;border-left:1px solid #eee;background-color:#f7f7f7}.wp_china_yes-field-sortable .wp_china_yes-sortable-helper i{display:inline-block;cursor:pointer;width:50px;color:#555}.wp_china_yes-field-sortable .wp_china_yes-sortable-helper i:hover{opacity:.5}.wp_china_yes-field-sortable .widget-placeholder{height:50px;margin-bottom:3px;border:1px dashed #f1c40f;background-color:#fffae4}.wp_china_yes-field-sortable .ui-sortable-helper{height:50px!important;overflow:hidden!important;border-color:#ccc!important;background-color:#eee!important;opacity:.5}.wp_china_yes-field-sortable .ui-sortable-helper .wp_china_yes-sortable-content,.wp_china_yes-field-sortable .ui-sortable-helper .wp_china_yes-sortable-helper{display:none}.wp_china_yes-field-sorter .ui-sortable-placeholder{height:20px;border:1px dashed #f1c40f;background-color:#fffae4}.wp_china_yes-field-sorter .wp_china_yes-modules{float:left;width:50%;box-sizing:border-box}.wp_china_yes-field-sorter .wp_china_yes-modules:first-child{padding-right:15px}.wp_china_yes-field-sorter .wp_china_yes-modules:last-child{padding-left:15px}.wp_china_yes-field-sorter .wp_china_yes-disabled,.wp_china_yes-field-sorter .wp_china_yes-enabled{padding:5px 15px;border:1px dashed #ddd;background-color:#fff}.wp_china_yes-field-sorter .wp_china_yes-disabled li{opacity:.5;transition:opacity .15s}.wp_china_yes-field-sorter .wp_china_yes-disabled .ui-sortable-helper{opacity:1}.wp_china_yes-field-sorter .wp_china_yes-sorter-title{font-size:13px;font-weight:600;padding:10px;text-align:center;border:1px dashed #ddd;border-bottom:none;background-color:#f8f8f8;text-transform:uppercase}.wp_china_yes-field-sorter ul{list-style-type:none;margin:0;padding:0;min-height:62px}.wp_china_yes-field-sorter ul li{margin:10px 0;padding:10px 15px;cursor:move;font-weight:700;text-align:center;border:1px solid #e5e5e5;background-color:#fafafa;transition:border-color .15s}.wp_china_yes-field-sorter ul li:hover{border-color:#bbb}.wp_china_yes-field-spinner .wp_china_yes--spin{display:flex}.wp_china_yes-field-spinner .ui-widget{font-family:inherit}.wp_china_yes-field-spinner .ui-spinner{display:flex;align-items:stretch;overflow:unset;border:none;background:0 0;border-radius:0}.wp_china_yes-field-spinner .ui-spinner .ui-button{display:flex;flex-direction:column;justify-content:center;text-align:center;min-width:20px;padding:0 4px;margin:0;color:#555;background-color:#f5f5f5;border:1px solid #7e8993}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-button{position:relative;cursor:pointer;height:auto}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-button:hover{background-color:#e7e7e7}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-button:active{background-color:#ddd}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-button:before{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:14px;line-height:14px}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-down{border-right:0;border-radius:4px 0 0 4px}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-down:before{content:"\f0d9"}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-up{border-left:0;border-radius:0 4px 4px 0}.wp_china_yes-field-spinner .ui-spinner .ui-spinner-up:before{content:"\f0da"}.wp_china_yes-field-spinner .ui-spinner .wp_china_yes--unit{border-left:0;user-select:none}.wp_china_yes-field-spinner .ui-spinner .ui-button-icon,.wp_china_yes-field-spinner .ui-spinner .ui-button-icon-space,.wp_china_yes-field-spinner .ui-spinner .ui-button-text{display:none}.wp_china_yes-field-spinner .ui-spinner input{font-family:inherit;font-size:inherit;position:relative;z-index:1;width:50px;text-align:center;margin:0;padding:0 8px;border-radius:0}.wp_china_yes-field-spinner .ui-spinner-down{order:1}.wp_china_yes-field-spinner .ui-spinner-input{order:2}.wp_china_yes-field-spinner .wp_china_yes--unit{order:3}.wp_china_yes-field-spinner .ui-spinner-up{order:4}.wp_china_yes-field-switcher .wp_china_yes--switcher{float:left;cursor:pointer;position:relative;width:60px;height:26px;padding:0;margin:0;overflow:hidden;border-radius:4px;background-color:#ed6f6f;user-select:none;-webkit-user-select:none}.wp_china_yes-field-switcher .wp_china_yes--ball{position:absolute;top:4px;left:4px;width:24px;height:18px;background-color:#fff;border-radius:4px;transition:all .1s;box-shadow:1px 1px 1px rgba(0,0,0,.15)}.wp_china_yes-field-switcher .wp_china_yes--off,.wp_china_yes-field-switcher .wp_china_yes--on{position:absolute;top:0;left:0;right:0;font-size:11px;line-height:26px;font-weight:500;font-style:normal;text-align:center;text-transform:uppercase;color:#fff;padding-right:28px;opacity:0;transition:all .1s}.wp_china_yes-field-switcher .wp_china_yes--off{padding-right:0;padding-left:28px;opacity:1}.wp_china_yes-field-switcher .wp_china_yes--active{background:#4fb845}.wp_china_yes-field-switcher .wp_china_yes--active .wp_china_yes--on{opacity:1}.wp_china_yes-field-switcher .wp_china_yes--active .wp_china_yes--off{opacity:0}.wp_china_yes-field-switcher .wp_china_yes--active .wp_china_yes--ball{left:100%;margin-left:-28px}.wp_china_yes-field-switcher .wp_china_yes--label{float:left;margin-top:4px;margin-left:8px;font-weight:400;color:#999}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-content>.wp_china_yes-field{padding:15px}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav .wp_china_yes--icon{padding-right:5px}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav a{display:inline-block;padding:12px 15px;margin-top:1px;margin-right:5px;margin-bottom:-1px;position:relative;text-decoration:none;color:#444;font-weight:600;border:1px solid #ccd0d4;background-color:#f3f3f3;transition:all .2s}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav a:hover{background-color:#f9f9f9}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav a.wp_china_yes-tabbed-active{background-color:#fff;border-bottom-color:#fff}.wp_china_yes-field-tabbed .wp_china_yes-tabbed-nav a:focus{outline:0;box-shadow:none}.wp_china_yes-field-text input{width:50%;max-width:100%;margin:0}.wp_china_yes-field-textarea textarea{width:100%;max-width:100%;min-height:125px}.wp_china_yes-field-textarea .wp_china_yes-shortcode-button{margin-bottom:10px;margin-right:5px}.wp_china_yes-field-typography select,.wp_china_yes-field-typography textarea{margin:0;min-width:100%;max-width:100%}.wp_china_yes-field-typography .wp_china_yes--title{color:#777;margin:0 0 2px 0;font-size:12px}.wp_china_yes-field-typography .wp_china_yes--title small{vertical-align:top}.wp_china_yes-field-typography .wp_china_yes--blocks{display:flex;flex-wrap:wrap}.wp_china_yes-field-typography .wp_china_yes--block{flex:1;max-width:100%;padding-right:6px;padding-bottom:6px}.wp_china_yes-field-typography .wp_china_yes--input{margin:0;min-width:100%}.wp_china_yes-field-typography .wp_china_yes--input-wrap{position:relative}.wp_china_yes-field-typography .wp_china_yes--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.wp_china_yes-field-typography .wp_china_yes--preview{font-size:16px;line-height:20px;padding:20px;color:#222;border:1px solid #eee;background-color:#fff;border-radius:2.5px;user-select:none;-webkit-user-select:none;transition:background-color .2s,border-color .2s}.wp_china_yes-field-typography .wp_china_yes--block-preview{cursor:pointer;position:relative;overflow:hidden;margin-top:10px;max-width:100%}.wp_china_yes-field-typography .wp_china_yes--black-background{border-color:#000;background-color:#000}.wp_china_yes-field-typography .wp_china_yes--toggle{position:absolute;top:5px;right:10px;color:#999}.wp_china_yes-field-typography .wp_china_yes--block-extra-styles{margin-top:5px}.wp_china_yes-field-upload input{width:100%;margin:0}.wp_china_yes-field-upload .wp_china_yes--wrap{display:flex;align-items:flex-start}.wp_china_yes-field-upload .button{margin-left:5px}.wp_china_yes-field-upload .wp_china_yes--preview{position:relative}.wp_china_yes-field-wp_editor .wp_china_yes-wp-editor{float:left;width:100%}.wp_china_yes-field-wp_editor .mce-toolbar-grp{border:none}.wp_china_yes-field-wp_editor .mce-btn.mce-active button,.wp_china_yes-field-wp_editor .mce-btn.mce-active i,.wp_china_yes-field-wp_editor .mce-btn.mce-active:hover button,.wp_china_yes-field-wp_editor .mce-btn.mce-active:hover i{color:#23282d}.wp_china_yes-field-wp_editor .wp-media-buttons{position:relative;z-index:2}.wp_china_yes-field-wp_editor .wp-editor-tabs{position:relative;z-index:1}.wp_china_yes-field-wp_editor .wp_china_yes-no-tinymce{border:1px solid #e5e5e5}.wp_china_yes-field-wp_editor .wp_china_yes-no-quicktags .wp-media-buttons{float:none;display:block}.wp_china_yes-field-wp_editor .wp_china_yes-no-quicktags .mce-tinymce{box-shadow:none;border:1px solid #e5e5e5}.wp_china_yes-field-wp_editor textarea{width:100%;max-width:100%;margin:0;box-shadow:none}.wp_china_yes-field-heading{font-size:1.5em;font-weight:700;color:#23282d;background-color:#f5f5f5}.wp_china_yes-field-subheading{font-size:14px;font-weight:700;padding-top:17px;padding-bottom:17px;color:#23282d;background-color:#f7f7f7}.wp_china_yes-field-submessage{padding:0!important;border:0!important}.wp_china_yes-field-submessage+.wp_china_yes-field{border-top:0!important}.wp_china_yes-submessage{font-size:12px;padding:17px 30px;border-top:1px solid transparent;border-bottom:1px solid transparent}.wp_china_yes-submessage-success{color:#3c763d;border-color:#d6e9c6;background-color:#dff0d8}.wp_china_yes-submessage-info{color:#31708f;border-color:#bce8f1;background-color:#d9edf7}.wp_china_yes-submessage-warning{color:#8a6d3b;border-color:#faebcc;background-color:#fcf8e3}.wp_china_yes-submessage-danger{color:#a94442;border-color:#ebccd1;background-color:#f2dede}.wp_china_yes-submessage-normal{color:#23282d;border-color:#eee;background-color:#f7f7f7}.wp_china_yes-field-notice{background-color:#f7f7f7}.wp_china_yes-notice{padding:12px;background-color:#fff;border-left-style:solid;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.1)}.wp_china_yes-notice-success{border-color:#46b450}.wp_china_yes-notice-info{border-color:#339fd4}.wp_china_yes-notice-warning{border-color:#ffbc00}.wp_china_yes-notice-danger{border-color:#dc3232}.wp_china_yes-notice-normal{border-color:#222}.wp_china_yes-field-number input{width:100%;margin:0}.wp_china_yes-field-number .wp_china_yes--wrap{position:relative;float:left;width:100px}.wp_china_yes-field-number .wp_china_yes--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.wp_china_yes-field-link .wp_china_yes--result{display:inline-block;font-size:12px;line-height:16px;padding:7px 10px;margin-bottom:7px;color:#777;border:1px solid #e5e5e5;background-color:#f5f5f5;border-radius:2px;world-break:break-word}.wp_china_yes-field-link .wp_china_yes--wrap{position:relative;float:left;width:100px}.wp_china_yes-field-link .wp_china_yes--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.wp_china_yes-help{cursor:help;position:absolute;top:0;right:0;padding:5px;font-size:13px;color:#aaa}.wp_china_yes-help .wp_china_yes-help-text{display:none}.wp_china_yes--preview{max-width:100%}.wp_china_yes-image-preview{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;position:relative;padding:6px;max-width:120px;max-height:120px;min-width:40px;min-height:40px;margin-bottom:10px;text-align:center;border-radius:2px;border:1px solid #ccc;background-color:#f9f9f9;box-shadow:0 1px 0 rgba(0,0,0,.08)}.wp_china_yes-image-preview i{cursor:pointer;position:absolute;z-index:1;right:4px;top:4px;font-size:14px;width:22px;height:22px;line-height:22px;text-align:center;text-decoration:none;color:#fff;background-color:#d33;opacity:.75;border-radius:2px;transition:all .2s}.wp_china_yes-image-preview i:hover{opacity:1}.wp_china_yes-image-preview i:focus{box-shadow:none}.wp_china_yes-image-preview span{position:relative;overflow:hidden;display:flex;height:100%;width:100%}.wp_china_yes-image-preview img{max-width:100%;height:auto;object-fit:contain}.wp_china_yes-field-custom .wp_china_yes-field{padding:0}.wp_china_yes-field .chosen-container-single .chosen-single{height:28px;line-height:26px}.wp_china_yes-field .chosen-container-single .chosen-single abbr{top:0;right:20px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;height:100%;width:18px;color:#aaa;text-align:center;background:0 0}.wp_china_yes-field .chosen-container-single .chosen-single abbr:before{content:"\f00d"}.wp_china_yes-field .chosen-container-single .chosen-single abbr:hover{color:#555}.wp_china_yes-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;height:100%;width:18px;color:#aaa;text-align:center;background:0 0}.wp_china_yes-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{content:"\f00d";display:inline-block;padding-top:3px}.wp_china_yes-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#555}.wp_china_yes-field .chosen-container-single .chosen-single div b{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:14px;color:#aaa;background:0 0}.wp_china_yes-field .chosen-container-single .chosen-single div b:before{content:"\f107"}.wp_china_yes-field .chosen-container-single .chosen-single div b:hover{color:#555}.wp_china_yes-field .chosen-container-multi .chosen-choices li.search-choice-placeholder{border:1px dashed #aaa;margin:3px 5px 3px 0}.wp_china_yes-field .chosen-container-multi .ui-sortable li.search-choice span{cursor:move}.wp_china_yes-field .chosen-container-active.chosen-with-drop .chosen-single div b:before{content:"\f106"}.wp_china_yes-field .chosen-container-single .chosen-single-with-deselect span{margin-right:40px}.wp_china_yes-field .chosen-container-single .chosen-search input[type=text]{background:0 0}.wp_china_yes-field .chosen-container-single .chosen-search:before{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:11px;content:"\f002";position:absolute;right:12px;top:10px;color:#aaa}.wp_china_yes-field .wp-picker-container{display:inline-block}.wp_china_yes-field .wp-picker-container .wp-color-result.button{margin-bottom:0}.wp_china_yes-field .wp_china_yes--transparent-wrap{display:none;position:relative;top:-1px;width:235px;padding:9px 10px;border:1px solid #dfdfdf;border-top:none;background-color:#fff}.wp_china_yes-field .wp-picker-active .wp_china_yes--transparent-wrap{display:block}.wp_china_yes-field .wp_china_yes--transparent-slider{position:absolute;width:190px;margin-left:2px;height:18px}.wp_china_yes-field .wp_china_yes--transparent-slider .ui-slider-handle{position:absolute;top:-3px;bottom:-3px;z-index:5;border-color:#aaa;border-style:solid;border-width:4px 3px;width:10px;height:16px;margin:0 -5px;background:0 0;cursor:ew-resize;opacity:.9;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wp_china_yes-field .wp_china_yes--transparent-slider .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.wp_china_yes-field .wp_china_yes--transparent-offset{height:18px;width:200px;background:url(../images/checkerboard.png) repeat-y center left scroll #fff;border-radius:2px;box-shadow:inset 0 0 5px rgba(0,0,0,.4)}.wp_china_yes-field .wp_china_yes--transparent-text{position:absolute;top:12px;right:10px;width:30px;font-size:12px;line-height:12px;text-align:center;color:#999}.wp_china_yes-field .wp_china_yes--transparent-button{cursor:pointer;user-select:none;margin-top:10px;font-size:11px;text-align:center;border-radius:2px;padding:3px 7px;box-shadow:0 1px 0 rgba(0,0,0,.1);letter-spacing:.2px;color:#777;border:1px solid #ccc;background-color:#f7f7f7;transition:background-color .2s,border-color .2s,color .2s}.wp_china_yes-field .wp_china_yes--transparent-active .wp-color-result{background-image:url(../images/checkerboard.png);background-size:135px;background-position:center left;background-color:transparent!important}.wp_china_yes-field .wp_china_yes--transparent-active .wp_china_yes--transparent-button{color:#fff;border-color:#3ea032;background-color:#4fb845}.wp_china_yes-field .wp_china_yes--transparent-active .fa:before{content:"\f205"}.wp_china_yes-widgets>.wp_china_yes-field{position:relative;top:-1px;margin-left:-15px;margin-right:-15px;padding:12px 15px}.wp_china_yes-widgets>.wp_china_yes-field .wp_china_yes-title{float:none;width:100%;margin-bottom:5px}.wp_china_yes-widgets>.wp_china_yes-field .wp_china_yes-fieldset{float:none;width:100%}.wp_china_yes-widgets .wp_china_yes-field-text input{width:100%}.wp_china_yes-widgets .wp_china_yes-field-notice .wp_china_yes-notice{padding:15px}.control-section .wp_china_yes-widgets>.wp_china_yes-field{margin-left:-10px;margin-right:-10px;padding:10px 12px}.wp-block .wp_china_yes-widgets{font-size:13px}.wp-block .wp_china_yes-widgets>.wp_china_yes-field{margin-left:-10px;margin-right:-10px}.wp-block .wp_china_yes-widgets>.wp_china_yes-field .button-primary{color:#fff}.wp-block .wp_china_yes-widgets>.wp_china_yes-field>.wp_china_yes-title>h4{font-size:13px}.control-section .wp_china_yes-field{padding:0}.control-section .wp_china_yes-field .wp_china_yes-title{float:none;width:100%;margin-bottom:6px}.control-section .wp_china_yes-field .wp_china_yes-title h4{display:block;font-size:13px;line-height:1;font-weight:600;color:inherit}.control-section .wp_china_yes-field .wp_china_yes-fieldset{float:none;width:100%}.control-section .wp_china_yes-help{top:-5px;right:-5px}.control-section .wp_china_yes-field-select select{width:100%}.control-section .wp_china_yes-field-heading{color:inherit;font-size:14px;line-height:1em;margin-right:-15px;margin-left:-15px;padding:15px}.control-section .wp_china_yes-field-subheading{color:inherit;font-size:11px;margin-right:-15px;margin-left:-15px;padding:10px 15px}.control-section .wp_china_yes-subtitle-text{margin-top:4px;font-size:12px}.control-section .wp_china_yes-field-submessage .wp_china_yes-submessage{margin-right:-15px;margin-left:-15px;padding:15px}.control-section .wp_china_yes-fieldset .wp_china_yes-field-heading,.control-section .wp_china_yes-fieldset .wp_china_yes-field-subheading,.control-section .wp_china_yes-fieldset .wp_china_yes-field-submessage .wp_china_yes-submessage{margin-left:0;margin-right:0}.control-section .wp_china_yes-field-date label,.control-section .wp_china_yes-field-datetime label{display:block}.control-section .wp_china_yes-field-date .wp_china_yes--to,.control-section .wp_china_yes-field-datetime .wp_china_yes--to{margin-top:4px;margin-left:0}.control-section .wp_china_yes-field-sorter ul li{padding:5px}.control-section .wp_china_yes-field-sorter .wp_china_yes-modules{float:none;width:100%}.control-section .wp_china_yes-field-sorter .wp_china_yes-modules:first-child{padding-right:0;padding-bottom:15px}.control-section .wp_china_yes-field-background .wp_china_yes--background-attributes{flex-direction:column}.control-section .wp_china_yes-field-spacing input{width:90px}.control-section .wp_china_yes-field-border .wp_china_yes--input{flex:1 50%}.control-section .wp_china_yes-field-border input,.control-section .wp_china_yes-field-border select{width:100%}.control-section .wp_china_yes-field-spinner input{width:50px}.control-section .wp_china_yes-field-number .wp_china_yes--wrap{width:100%}.control-section .wp_china_yes-field-backup .wp_china_yes-export-data{display:none}.control-section .wp_china_yes-field-fieldset .wp_china_yes-fieldset-content{border-color:#e5e5e5}.control-section .wp_china_yes-accordion-content>.wp_china_yes-field,.control-section .wp_china_yes-cloneable-content>.wp_china_yes-field,.control-section .wp_china_yes-fieldset-content>.wp_china_yes-field,.control-section .wp_china_yes-repeater-content>.wp_china_yes-field,.control-section .wp_china_yes-sortable-content>.wp_china_yes-field,.control-section .wp_china_yes-tabbed-content>.wp_china_yes-field{padding:10px}.control-section .wp_china_yes-accordion-content>.wp_china_yes-field .wp_china_yes-title,.control-section .wp_china_yes-cloneable-content>.wp_china_yes-field .wp_china_yes-title,.control-section .wp_china_yes-fieldset-content>.wp_china_yes-field .wp_china_yes-title,.control-section .wp_china_yes-repeater-content>.wp_china_yes-field .wp_china_yes-title,.control-section .wp_china_yes-sortable-content>.wp_china_yes-field .wp_china_yes-title,.control-section .wp_china_yes-tabbed-content>.wp_china_yes-field .wp_china_yes-title{margin-bottom:5px}.control-section .wp_china_yes-accordion-content>.wp_china_yes-field h4,.control-section .wp_china_yes-cloneable-content>.wp_china_yes-field h4,.control-section .wp_china_yes-fieldset-content>.wp_china_yes-field h4,.control-section .wp_china_yes-repeater-content>.wp_china_yes-field h4,.control-section .wp_china_yes-sortable-content>.wp_china_yes-field h4,.control-section .wp_china_yes-tabbed-content>.wp_china_yes-field h4{font-size:12px}.control-section .wp_china_yes-depend-hidden.wp_china_yes-depend-on{display:none!important}.control-section .wp_china_yes-depend-visible.wp_china_yes-depend-on{border-top:0!important}.wp_china_yes-taxonomy{max-width:95%}.wp_china_yes-taxonomy>.wp_china_yes-field{border-top:none!important}.wp_china_yes-taxonomy>.wp_china_yes-field-heading{font-size:1.1em;padding:20px!important;border:1px solid #ddd}.wp_china_yes-taxonomy>.wp_china_yes-field-subheading{font-size:12px;padding:15px!important;border:1px solid #ddd}.wp_china_yes-taxonomy>.wp_china_yes-field-submessage .wp_china_yes-submessage{padding:15px;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid}.wp_china_yes-taxonomy>.wp_china_yes-field-notice{background-color:transparent}.wp_china_yes-taxonomy .wp_china_yes-section-title{display:block;padding:15px;background-color:#f9f9f9;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp_china_yes-taxonomy-add-fields>.wp_china_yes-field{padding:8px 0}.wp_china_yes-taxonomy-add-fields>.wp_china_yes-field>.wp_china_yes-title{float:none;width:100%;padding:2px 2px 4px 0}.wp_china_yes-taxonomy-add-fields>.wp_china_yes-field>.wp_china_yes-title h4{font-size:12px;font-weight:400}.wp_china_yes-taxonomy-add-fields>.wp_china_yes-field>.wp_china_yes-fieldset{float:none;width:100%}.wp_china_yes-taxonomy-add-fields>.wp_china_yes-field>.wp_china_yes-fieldset>.wp_china_yes-help{right:-5px}.wp_china_yes-taxonomy-add-fields+p.submit{margin-top:0}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field{padding:20px 0}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field>.wp_china_yes-title{width:200px}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field>.wp_china_yes-title h4{font-size:14px;font-weight:600;line-height:1.3;display:inline-block;vertical-align:middle}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field>.wp_china_yes-fieldset{width:calc(100% - 220px)}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field>.wp_china_yes-fieldset>.wp_china_yes-help{top:-5px;right:-5px}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field-submessage{margin:20px 0}.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field-heading,.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field-subheading{margin:20px 0;border:1px solid #ddd}.wp_china_yes-nav-menu-options{clear:both;float:left;width:100%}.wp_china_yes-nav-menu-options>.wp_china_yes-fields{margin:10px -10px;border-top:1px solid #eee;border-bottom:1px solid #eee}.wp_china_yes-nav-menu-options>.wp_china_yes-fields>.wp_china_yes-field{padding:12px}.wp_china_yes-nav-menu-options>.wp_china_yes-fields>.wp_china_yes-field .wp_china_yes-title{float:none;width:100%;margin-bottom:5px}.wp_china_yes-nav-menu-options>.wp_china_yes-fields>.wp_china_yes-field .wp_china_yes-fieldset{float:none;width:100%}.wp_china_yes-nav-menu-options .wp_china_yes-field-text input{width:100%}.wp_china_yes-nav-menu-options .wp_china_yes-field-notice .wp_china_yes-notice{padding:15px}.wp_china_yes-nav-menu-title{padding:12px;background-color:#f5f5f5;border-top:1px solid #eee;border-bottom:1px solid #eee}.wp_china_yes-nav-menu-title:first-child{border-top:0}.wp_china_yes-nav-menu-title h4{margin:0;padding:0;color:#23282d}.wp_china_yes-nav-menu-icon{margin-right:5px}.wp_china_yes-profile-options>h2>.fa{padding-right:7px}.wp_china_yes-profile-options>.wp_china_yes-field{max-width:750px;padding:15px 0;border-top:none!important}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-title{width:200px}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-title h4{font-size:14px;font-weight:600;line-height:1.3;display:inline-block;vertical-align:middle}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-fieldset{width:calc(100% - 220px)}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-fieldset>.wp_china_yes-help{top:-15px;right:-5px}.wp_china_yes-profile-options>.wp_china_yes-field-heading{font-size:1.1em}.wp_china_yes-profile-options>.wp_china_yes-field-subheading{font-size:12px}.wp_china_yes-profile-options>.wp_china_yes-field-heading,.wp_china_yes-profile-options>.wp_china_yes-field-subheading{margin:10px 0;padding:15px!important;border:1px solid #ddd}.wp_china_yes-profile-options>.wp_china_yes-field-submessage{margin:20px 0}.wp_china_yes-profile-options>.wp_china_yes-field-submessage .wp_china_yes-submessage{padding:10px;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid}.wp_china_yes-profile-options>.wp_china_yes-field-notice{background-color:transparent}.wp_china_yes-modal{position:fixed;z-index:100101;top:0;left:0;width:100%;height:100%}.wp_china_yes-modal.hidden{display:none}.wp_china_yes-modal-icon{z-index:100102}.wp_china_yes-modal-table{display:table;width:100%;height:100%}.wp_china_yes-modal-table-cell{display:table-cell;vertical-align:middle;margin:100px 0}.wp_china_yes-modal-inner{position:relative;z-index:10;width:760px;height:750px;margin:0 auto;background-color:#fff}.wp_china_yes-modal-content{position:relative;overflow:hidden;overflow-y:auto;height:595px}.wp_china_yes-modal-content .wp_china_yes-shortcode-button{display:none}.wp_china_yes-modal-content .wp_china_yes-field{padding:15px 30px 15px 15px}.wp_china_yes-modal-content a:active,.wp_china_yes-modal-content a:focus{outline:0;box-shadow:none}.wp_china_yes-modal-content h4{font-size:13px}.wp_china_yes-modal-content h4 small{font-style:italic;font-weight:400;color:#aaa}.wp_china_yes-modal-title{position:relative;background-color:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:16px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.wp_china_yes-modal-header{width:100%;padding:14px 0;background-color:#f5f5f5;border-bottom:1px solid #ddd}.wp_china_yes-modal-header select{display:block;width:250px;margin:0 auto;font-size:13px;line-height:1;height:30px;min-height:30px;background-color:#fff}.wp_china_yes-modal-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}.wp_china_yes-modal-close:before{font:normal 20px/36px dashicons;content:"\f158";vertical-align:top;width:36px;height:36px}.wp_china_yes-modal-close:hover{opacity:.5}.wp_china_yes-modal-insert-wrapper{text-align:center;width:100%;padding:15px 0;background-color:#f5f5f5;border-top:1px solid #ddd}.wp_china_yes-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.5}.wp_china_yes--repeatable{padding:15px 15px 0 15px}.wp_china_yes--repeat-button-block{text-align:center;padding-bottom:15px}.wp_china_yes--repeat-shortcode{position:relative;margin-bottom:15px;border:1px dashed #ddd}.wp_china_yes--repeat-shortcode:first-child .wp_china_yes-repeat-remove{display:none}.wp_china_yes--repeat-shortcode .wp_china_yes-repeat-remove{position:absolute;right:10px;top:10px;z-index:10;cursor:pointer;display:inline-block;font-size:11px;width:18px;height:18px;line-height:18px;text-align:center;border-radius:2px;color:#fff;background-color:#e14d43;opacity:.5}.wp_china_yes--repeat-shortcode .wp_china_yes-repeat-remove:hover{opacity:.5}.wp_china_yes-shortcode-single .wp_china_yes-modal-inner{height:750px}.wp_china_yes-shortcode-single .wp_china_yes-modal-content{height:652px}.elementor-editor-active .wp_china_yes-shortcode-button{margin-left:5px}.elementor-editor-active .wp_china_yes-modal .hidden{display:none!important}.wp_china_yes-shortcode-block{text-align:center;padding:14px;font-size:13px;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.wp_china_yes-shortcode-block .components-button{margin-bottom:10px}.wp_china_yes-modal-icon .wp_china_yes-icon-title{padding:15px 0;margin:4px;font-size:14px;font-weight:700;text-align:center;border:1px solid #eee;background-color:#f7f7f7}.wp_china_yes-modal-icon .wp_china_yes-modal-header{text-align:center}.wp_china_yes-modal-icon .wp_china_yes-icon-search{width:50%;height:40px;line-height:40px}.wp_china_yes-modal-icon i{cursor:pointer;display:inline-block;margin:4px;width:35px;height:35px;line-height:35px;font-size:16px;color:#555;text-align:center;border:1px solid #ccc;background-color:#f7f7f7;border-radius:2px;box-shadow:1px 1px 0 rgba(0,0,0,.05)}.wp_china_yes-modal-icon i:hover{color:#fff;border-color:#222;background-color:#222}.wp_china_yes-modal-icon .wp_china_yes-modal-content{padding:10px;height:618px}.wp_china_yes-modal-icon .wp_china_yes-error-text{padding:10px}.wp_china_yes-modal-loading{display:none;position:absolute;left:15px;top:15px}.wp_china_yes-loading{position:relative;width:20px;height:20px;background:#ccc;border-radius:20px;box-shadow:0 2px 5px rgba(0,0,0,.07)}.wp_china_yes-loading:after{position:absolute;top:50%;left:50%;width:4px;height:4px;content:"";margin-top:-2px;margin-left:-2px;background-color:#fff;animation-duration:.5s;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:wp_china_yesLoader;border-radius:4px}@keyframes wp_china_yesLoader{0%{transform:rotate(0) translateX(-6px) rotate(0)}100%{transform:rotate(360deg) translateX(-6px) rotate(-360deg)}}.wp_china_yes-subtitle-text{margin-top:6px;font-weight:400;color:#999}.wp_china_yes-desc-text{clear:both;float:left;width:100%;margin-top:6px;font-weight:400;color:#999}.wp_china_yes-error-text{margin-top:6px;color:#d02c21}.wp_china_yes-before-text{margin-bottom:6px}.wp_china_yes-after-text{margin-top:6px}.wp_china_yes-metabox-hide{display:none!important}.wp_china_yes-metabox-show{display:block!important}.wp_china_yes-depend-hidden.wp_china_yes-depend-on{display:none}.wp_china_yes-depend-visible.wp_china_yes-depend-on{display:block;opacity:.75;filter:grayscale(1);user-select:none;border-top:1px solid #eee}.wp_china_yes-depend-visible.wp_china_yes-depend-on .clear:before{content:"";left:0;top:0;right:0;bottom:0;position:absolute;background-color:#eee;opacity:.25;z-index:10}.wp_china_yes-warning-primary{color:#fff!important;border-color:#dc3545!important;background:#dc3545!important}.wp_china_yes-warning-primary:focus,.wp_china_yes-warning-primary:hover{border-color:#bd2130!important;background:#bd2130!important}.wp_china_yes-warning-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #bd2130!important}.wp_china_yes-warning-primary:active{border-color:#bd2130!important;background:#bd2130!important}.wp_china_yes-form-result{display:none;float:left;padding:0 8px;margin-right:4px;font-size:11px;line-height:30px;user-select:none;border-radius:2px}.wp_china_yes-form-show{display:block}.wp_china_yes-form-success{color:#fff;background-color:#46b450}.wp_china_yes-form-warning{color:#8a6d3b;background-color:#faebcc}.wp_china_yes-label-error{position:relative;top:-2px;display:inline-block;font-size:10px;line-height:10px;height:10px;width:10px;padding:1px;font-style:normal;text-align:center;color:#fff;vertical-align:middle;background-color:#e10000;border-radius:2px}.wp_china_yes-no-option{padding:30px}.wp_china_yes-input-number{-moz-appearance:textfield}.wp_china_yes-input-number::-webkit-inner-spin-button,.wp_china_yes-input-number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.wp_china_yes-fa5-shims .wp_china_yes .fab,.wp_china_yes-fa5-shims .wp_china_yes .far,.wp_china_yes-fa5-shims .wp_china_yes .fas{font-family:FontAwesome;font-style:normal}.wp_china_yes-welcome-wrap{position:relative;margin:25px 40px 0 20px;font-size:15px;max-width:1200px}.wp_china_yes-welcome-wrap p{font-size:14px;line-height:1.5}.wp_china_yes-welcome-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.wp_china_yes-welcome-wrap .wp_china_yes-logo{position:absolute;overflow:hidden;top:0;right:0;height:160px;width:140px;background-image:linear-gradient(45deg,#2d67cb,#ad19f3);box-shadow:0 1px 4px rgba(0,0,0,.25),inset 0 0 0 4px rgba(0,0,0,.25)}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--effects i{position:absolute;width:200px;height:100px;background-color:rgba(0,0,0,.15);transform:rotate(-45deg)}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--effects i:first-child{bottom:-20px;right:-70px}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--effects i:nth-child(2){bottom:-35px;right:-80px}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--effects i:nth-child(3){bottom:-50px;right:-90px}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--effects i:nth-child(4){bottom:-65px;right:-100px}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--wp-logos{position:relative;padding-top:25px;text-align:center}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--wp-logo{position:absolute;left:20px;width:20px;height:20px;background-repeat:no-repeat;background-position:center center;background-image:url(../images/wp-logo.svg)}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--wp-plugin-logo{display:inline-block;width:50px;height:50px;border:3px solid #fff;background-size:40px;background-repeat:no-repeat;background-position:center center;background-image:url(../images/wp-plugin-logo.svg);border-radius:100%;vertical-align:middle}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--text{position:absolute;left:0;right:0;top:90px;color:#fff;font-size:13px;line-height:1.2em;font-weight:600;text-align:center;text-transform:uppercase;text-shadow:1px 1px 0 rgba(0,0,0,.25)}.wp_china_yes-welcome-wrap .wp_china_yes-logo .wp_china_yes--version{top:auto;left:auto;right:8px;bottom:4px;font-size:11px;text-transform:lowercase}.wp_china_yes-welcome-wrap .wp_china_yes-about-text{font-weight:400;line-height:1.6em;font-size:19px;margin:1em 200px 1em 0;color:#555d66}.wp_china_yes-welcome-wrap .wp_china_yes-demo-button{margin:1em 200px 2em 0}.wp_china_yes-welcome-wrap .nav-tab-wrapper{margin-bottom:20px}.wp_china_yes-welcome-wrap ul{list-style-type:disc;padding-left:15px}.wp_china_yes-welcome-wrap .wp_china_yes--col{float:left;padding-right:20px;box-sizing:border-box}.wp_china_yes-welcome-wrap .wp_china_yes--col-2{width:50%}.wp_china_yes-welcome-wrap .wp_china_yes--col-3{width:33.333%}.wp_china_yes-welcome-wrap .wp_china_yes--col-4{width:25%}.wp_china_yes-welcome-wrap .wp_china_yes--col-5{width:20%}.wp_china_yes-welcome-wrap .wp_china_yes--col-last{padding-right:0}.wp_china_yes-welcome-wrap .wp_china_yes--col-upgrade{padding:10px 0;text-align:center;border-top:1px solid #e5e5e5}.wp_china_yes--table-compare tfoot td,.wp_china_yes--table-compare thead td{text-align:center}.wp_china_yes--table-compare td{font-size:14px;text-align:center;vertical-align:middle;padding:10px}.wp_china_yes--table-compare td:first-child{text-align:left}.wp_china_yes--table-compare tfoot td{padding:15px 0}.wp_china_yes--table-compare .fa{font-size:18px}.wp_china_yes--table-compare .fa-check-circle{color:#46b450}.wp_china_yes--table-compare .fa-times-circle{color:#dc3232}.wp_china_yes-welcome-cols{clear:both;margin:20px 0;background-color:#fff;padding:0 0;border-radius:2px;border:1px solid #e5e5e5}.wp_china_yes-welcome-cols .wp_china_yes--col{width:33.333%;float:left;padding:20px;text-align:center;box-sizing:border-box;min-height:200px;border-right:1px solid #e5e5e5}.wp_china_yes-welcome-cols .wp_china_yes--block,.wp_china_yes-welcome-cols .wp_china_yes--left{float:left;width:20%;padding:0 30px;text-align:center;box-sizing:border-box}.wp_china_yes-welcome-cols .wp_china_yes--block{width:80%}.wp_china_yes-welcome-cols .wp_china_yes--col-first{border-bottom:1px solid #e5e5e5}.wp_china_yes-welcome-cols .wp_china_yes--last{border-right:none}.wp_china_yes-welcome-cols .wp_china_yes--space{height:20px}.wp_china_yes-welcome-cols .wp_china_yes--icon{display:inline-block;font-size:20px;width:30px;height:30px;line-height:30px;text-align:center;margin-bottom:10px;color:#fff;background-color:#555;border-radius:30px}.wp_china_yes-welcome-cols .wp_china_yes--active{background-color:#5cb85c}.wp_china_yes-welcome-cols .wp_china_yes--deactive{background-color:#e14d43}.wp_china_yes-welcome-cols .wp_china_yes--title{font-weight:700;display:block}.wp_china_yes-welcome-cols p:last-child{margin-bottom:0}.wp_china_yes-features-cols .wp_china_yes--key-features{width:30%}.wp_china_yes-features-cols .wp_china_yes--available-fields{width:70%}.wp_china_yes-code-block{margin:20px 0;padding:5px 20px;background-color:#fff;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,.15)}.wp_china_yes-code-block pre{font-size:13px;color:#0073aa}.wp_china_yes-code-block pre span{color:#999}.wp_china_yes--table-fields td{font-size:14px}.wp_china_yes--upgrade a{color:#5cb85c;font-weight:700}.wp_china_yes--upgrade a:focus,.wp_china_yes--upgrade a:hover{color:#4aa14a;outline:0;box-shadow:none}@media only screen and (max-width:782px){.wp_china_yes-welcome-cols .wp_china_yes--col{width:100%;min-height:auto;border-right:none;border-bottom:1px solid #e5e5e5}.wp_china_yes-features-cols .wp_china_yes--key-features{width:100%}.wp_china_yes-features-cols .wp_china_yes--available-fields{width:100%}}@media only screen and (max-width:1200px){.wp_china_yes-metabox .wp_china_yes-field .wp_china_yes-title{float:none;width:100%;margin-bottom:10px}.wp_china_yes-metabox .wp_china_yes-field .wp_china_yes-fieldset{float:none;width:100%}}@media only screen and (max-width:782px){.wp_china_yes-header-inner{text-align:center}.wp_china_yes-header-inner h1{width:100%;margin-bottom:10px}.wp_china_yes-form-result{float:none;margin-right:0;margin-bottom:10px}.wp_china_yes-header-left,.wp_china_yes-header-right,.wp_china_yes-search{width:100%}.wp_china_yes-search{text-align:center;margin-bottom:15px}.wp_china_yes-footer{text-align:center}.wp_china_yes-buttons{float:none}.wp_china_yes-copyright{float:none;margin-top:10px}.wp_china_yes-expand-all,.wp_china_yes-nav,.wp_china_yes-nav-background,.wp_china_yes-reset-section{display:none!important}.wp_china_yes-nav-normal+.wp_china_yes-content{margin-left:0}.wp_china_yes-section,.wp_china_yes-section-title{display:block!important}.wp_china_yes-field .wp_china_yes-title{float:none;width:100%;margin-bottom:10px}.wp_china_yes-field .wp_china_yes-fieldset{float:none;width:100%}.wp_china_yes-field-color .button.wp-picker-clear{padding:0 8px;line-height:2.14285714;min-height:32px}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-title,.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field>.wp_china_yes-title{float:none;width:100%;margin-bottom:10px}.wp_china_yes-profile-options>.wp_china_yes-field>.wp_china_yes-fieldset,.wp_china_yes-taxonomy-edit-fields>.wp_china_yes-field>.wp_china_yes-fieldset{float:none;width:100%}.wp_china_yes-nav-menu-options>.wp_china_yes-fields{margin-left:-10px;margin-right:-10px}.wp_china_yes-nav-menu-options>.wp_china_yes-fields>.wp_china_yes-field{padding:10px}}@media only screen and (max-width:782px){.wp_china_yes-modal .wp_china_yes-modal-inner{width:90%}}@media only screen and (max-height:750px){.wp_china_yes-modal .wp_china_yes-modal-inner{height:auto}.wp_china_yes-modal .wp_china_yes-modal-content{height:calc(100vh - 200px)}}.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;user-select:none}.chosen-container *{box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15);clip:rect(0,0,0,0);clip-path:inset(100% 100%)}.chosen-container.chosen-with-drop .chosen-drop{clip:auto;clip-path:none}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;font-size:1px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0);clip-path:inset(100% 100%)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px;height:25px;min-height:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 6px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:0;right:0;display:block;width:12px;height:12px;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;direction:rtl}.flatpickr-calendar{background:0 0;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1);animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.arrowRight:after,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar.arrowCenter:after,.flatpickr-calendar.arrowCenter:before{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:0 0;color:rgba(0,0,0,.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:0 0;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:0 0;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:0;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus{outline:0}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:0;padding:0}.flatpickr-weekdays{background:0 0;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:0 0;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:0 0;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(57,57,57,.3);background:0 0;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:0 0;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} \ No newline at end of file diff --git a/framework/assets/images/checkerboard.png b/framework/assets/images/checkerboard.png new file mode 100644 index 0000000000000000000000000000000000000000..f97dade073e8e42bc2f7631cbee0203ab0cc95be GIT binary patch literal 2340 zcmaJ@dpuNmAD+;>ZlR(@-a1ZLHI2EL5yMO~%m^7KY{a`VGv^qS=3?f^V3C@Yq_q|; ztu6|++l^vtT`RX(C6}cT$(DDMOQj;-?9rxu|9E@P=bZDqe4gj|e!su(^T+QX&u7ar zU2|Ow2D8l5gYAcox6p5eHWvM_`A=pKI+!7xAjDr5j>Pa4Fop%m1Tf$!;fr8Dm=DE9 zHN!3#j3y`!2ttCm-ZY_1V#i;=*r_CPl#Ri-Y*xwn!blha1h7afrGpcdwICpd=wKj~ zOXSMk;0UotoC5Zb^9c~fMGBoDa5DpNQPEHV35@Uom1MV6NmJ3m_qsH6zOYRIf%gz3 zk`DfrR1lX3xXBbSK(({S3yCBW;NW0KqEHxY^C-pvX zp-<;R{v?-xCPP?g?0+?SaSL_N!t|qU(ZxsO!&21k3e?u~qjQ58%+g#>HY-5Ydp=}h zOEk-9z{xr@mBD7O1wn9yXHs0Y2b(=*dCGA4^2}TGw!Z4#(fn#>`?mbq#;CT82lwwk zn0eK@TalRfO?Jn$7f7z2pFQ?3kw`Q=^7CtaZDmyz`^m+Aq=L@bPuZfu%GfwRv70}U;kPs>(ZX$H&PSM-%U-sX-SE9R31CKO|D|2#8wqidYPDo1nehxD4WNh8Kl^Q$V(K_h=@(s{DpXF2e zV$HEVXYU$|ECOl@PU1`wTWYAsd1bhn3(x(ALpBVS*YKvjTP)Z+HeIN0x=LMZ8?U>6 zu=i+AdxvH&-_;h%99Rvn6;$bFbd`74iWE<5z<_DWElyTQy!bZoqXGB zQ;i`r4T+l{b4h{e+QyQCYX=H=r))JNBdQXN6a$Z1zubp?5d22`LwkhPmrD-@0gZ~A zM(#R6VQuzB$*Z$HMsMB~YK5#!pC7_AgQ6YxeO5jPbaw?uTAtp2G^)cT&(=LFXKY|v zPfyR*gsmO3Y8$Y=EOcd@srhF1UNzFLt=@Zn6J)%a9dSdYiPvY}%~hotG+nXkc&I~i z2fG8awKcq~faG6%XM0>c$dsJuqE+w0`Y&Exe>~cF#O%&JUVnwn$@WPbK`K+7I`H<2 zSH8Aev%rg#ZlYaR{B@YvAU{~|SM|fnp8#TNT=#AdN2~hcSg#w`;!JODFkt@nBqhw^ z;%)lV+hJCgrv{AGU-)XetOg(HpSLBoK7a!f44+K`n9$zCXvvXUftE!y|Qdb>@fH z9ILFXl=35sdDO((+S;ACilRFSvy+oNoW|>akByK2#Hsvherl=dbCpd+ zE1VWGQL3-@FnVG!xsh_<_Z)j*}mbnG9NH=q`=iXw3r3Zpd+OF(qurebaG3us0 z?XK=s=iE8mz3!BmZKO2w*$J&uFRi=l{wO!VV$a6+YduPE1Xe;DTQnwqFU+_w6&}z` zI-npoIQU*Co+0XGZWH9>>O|3trY4W*Q}z;#PjB}NgYHwZxlGHdva`1P@{N~e6epYM zSwktFPmJOWC+(T>5sy!BvwmfAI#uWRBy2nxIQFW`yV%R(^sa<+8@Todc;s%iNf4Ij z9&4;wcxO(BYM@978B<4P>^te>@)i38dj%zB)U)`$BRU1JuuMAWN6x5&1oFNwIr0zDvLSF^Vfh=75l7Yhw+U*E#|33=UUFjD3ue-QJ zk)%Nm*ksfnn|t-5Z^gZhdL>&7w8<@}O^R}9Sz2nB?=a6@LoA`aOGcMpXK3{t9Addx zY;0zHdoHfrhM68+B!Ip-?`e1g%=B_l9!Y(E1SrwbAA<1tG05@T2JTD!vD%8?)tBGM zR+u+-l8b>6N&B`8TWaz(;}o#jB2PEU)r#N@s+mB8&yNN-)<28V!58p%B-pHeT$DPp wWL!T5@+C#^tFHC{-Knnx>Fqz1&3t|x<5%D1vGxnx?83dpljFm_=o+@~Pr_T#R{#J2 literal 0 HcmV?d00001 diff --git a/framework/assets/images/wp-logo.svg b/framework/assets/images/wp-logo.svg new file mode 100644 index 0000000..a415fd6 --- /dev/null +++ b/framework/assets/images/wp-logo.svg @@ -0,0 +1 @@ + diff --git a/framework/assets/images/wp-plugin-logo.svg b/framework/assets/images/wp-plugin-logo.svg new file mode 100644 index 0000000..967f446 --- /dev/null +++ b/framework/assets/images/wp-plugin-logo.svg @@ -0,0 +1 @@ + diff --git a/framework/assets/js/main.min.js b/framework/assets/js/main.min.js new file mode 100644 index 0000000..666b50d --- /dev/null +++ b/framework/assets/js/main.min.js @@ -0,0 +1,2 @@ +/* Wp_china_yes Framework | A Simple and Lightweight WordPress Option Framework - v2.3.1*/ +!function(S,_,b,y){"use strict";var j={funcs:{}};j.vars={onloaded:!1,$body:S("body"),$window:S(_),$document:S(b),$form_warning:null,is_confirm:!1,form_modified:!1,code_themes:[],is_rtl:S("body").hasClass("rtl")},j.helper={uid:function(e){return(e||"")+Math.random().toString(36).substr(2,9)},preg_quote:function(e){return(e+"").replace(/(\[|\])/g,"\\$1")},name_nested_replace:function(e,t){var n=new RegExp(j.helper.preg_quote(t+"[\\d+]"),"g");e.find(":radio").each(function(){(this.checked||this.orginal_checked)&&(this.orginal_checked=!0)}),e.each(function(e){S(this).find(":input").each(function(){this.name=this.name.replace(n,t+"["+e+"]"),this.orginal_checked&&(this.checked=!0)})})},debounce:function(i,s,c){var a;return function(){var e=this,t=arguments,n=c&&!a;clearTimeout(a),a=setTimeout(function(){a=null,c||i.apply(e,t)},s),n&&i.apply(e,t)}}},S.fn.wp_china_yes_clone=function(){for(var e=S.fn.clone.apply(this,arguments),t=this.find("select").add(this.filter("select")),n=e.find("select").add(e.filter("select")),i=0;i .wp_china_yes-field:not(.wp_china_yes-depend-on)"),i=n.find("> .wp_china_yes-title, .wp_china_yes-search-tags");3"),S("#wp_china_yes-codemirror-css").after(e),e.attr({rel:"stylesheet",id:"wp_china_yes-codemirror-"+s.theme+"-css",href:s.cdnURL+"/theme/"+s.theme+".min.css",type:"text/css",media:"all"}),j.vars.code_themes.push(s.theme)),CodeMirror.modeURL=s.cdnURL+"/mode/%N/%N.min.js",CodeMirror.autoLoadMode(n,s.mode),n.on("change",function(e,t){i.val(n.getValue()).trigger("change")}),clearInterval(c))}))})},S.fn.wp_china_yes_field_date=function(){return this.each(function(){var e=S(this),n=e.find("input"),i=e.find(".wp_china_yes-date-settings").data("settings"),i=S.extend({},i,{showAnim:"",beforeShow:function(e,t){S(t.dpDiv).addClass("wp_china_yes-datepicker-wrapper")},onClose:function(e,t){S(t.dpDiv).removeClass("wp_china_yes-datepicker-wrapper")}});2===n.length&&(i=S.extend({},i,{onSelect:function(e){S(this),n.first();var t=n.first().attr("id")===S(this).attr("id")?"minDate":"maxDate",e=S.datepicker.parseDate(i.dateFormat,e);n.not(this).datepicker("option",t,e)}})),n.each(function(){var e=S(this);e.hasClass("hasDatepicker")&&e.removeAttr("id").removeClass("hasDatepicker"),e.datepicker(i)})})},S.fn.wp_china_yes_field_datetime=function(){return this.each(function(){var e=S(this),i=e.find("input"),t=e.find(".wp_china_yes-datetime-settings").data("settings"),t=S.extend({},t,{onReady:function(e,t,n){S(n.calendarContainer).addClass("wp_china_yes-flatpickr")}});2===i.length&&(t=S.extend({},t,{onChange:function(e,t,n){"from"===S(n.element).data("type")?i.last().get(0)._flatpickr.set("minDate",e[0]):i.first().get(0)._flatpickr.set("maxDate",e[0])}})),i.each(function(){S(this).flatpickr(t)})})},S.fn.wp_china_yes_field_fieldset=function(){return this.each(function(){S(this).find(".wp_china_yes-fieldset-content").wp_china_yes_reload_script()})},S.fn.wp_china_yes_field_gallery=function(){return this.each(function(){var s,e=S(this),c=e.find(".wp_china_yes-edit-gallery"),a=e.find(".wp_china_yes-clear-gallery"),r=e.find("ul"),o=e.find("input");e.find("img");e.on("click",".wp_china_yes-button, .wp_china_yes-edit-gallery",function(e){var t=S(this),n=o.val(),t=t.hasClass("wp_china_yes-edit-gallery")?"edit":"add",i="add"!=t||n.length?"gallery-edit":"gallery";e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&("gallery"==i?(s=_.wp.media({library:{type:"image"},frame:"post",state:"gallery",multiple:!0})).open():(s=_.wp.media.gallery.edit('[gallery ids="'+n+'"]'),"add"==t&&s.setState("gallery-library")),s.on("update",function(e){r.empty();e=e.models.map(function(e){var e=e.toJSON(),t=(e.sizes&&e.sizes.thumbnail&&e.sizes.thumbnail.url?e.sizes.thumbnail:e).url;return r.append('
  • '),e.id});o.val(e.join(",")).trigger("change"),a.removeClass("hidden"),c.removeClass("hidden")}))}),a.on("click",function(e){e.preventDefault(),r.empty(),o.val("").trigger("change"),a.addClass("hidden"),c.addClass("hidden")})})},S.fn.wp_china_yes_field_group=function(){return this.each(function(){function e(e){e.preventDefault();var t,n,i,s,e=c.children(".wp_china_yes-cloneable-item").length;r.hide(),h&&h')).append(t),s.append(n),s.append(i),c.children().eq(e.index()).after(s),j.helper.name_nested_replace(c.children(".wp_china_yes-cloneable-item"),l),c.accordion("refresh"),c.wp_china_yes_customizer_refresh(),c.wp_china_yes_customizer_listen({closest:!0}),d&&u(c))}function t(e){e.preventDefault(),e=c.children(".wp_china_yes-cloneable-item").length,a.hide(),r.hide(),p&&e-1 .wp_china_yes-cloneable-item > .wp_china_yes-cloneable-title",collapsible:!0,active:!1,animate:!1,heightStyle:"content",icons:{header:"wp_china_yes-cloneable-header-icon fas fa-angle-right",activeHeader:"wp_china_yes-cloneable-header-icon fas fa-angle-down"},activate:function(e,t){var i,s,n=t.newPanel,t=t.newHeader;n.length&&!n.data("opened")?(i=t.find(".wp_china_yes-cloneable-value"),s=[],S.each(o,function(e,t){s.push(n.find('[data-depend-id="'+t+'"]'))}),S.each(s,function(e,t){t.on("change keyup wp_china_yes.keyup",function(){var n=[];S.each(s,function(e,t){t=t.val();t&&n.push(t)}),n.length&&i.text(n.join(f))}).trigger("wp_china_yes.keyup")}),n.wp_china_yes_reload_script(),n.data("opened",!0),n.data("retry",!1)):n.data("retry")&&(n.wp_china_yes_reload_script_retry(),n.data("retry",!1))}}),c.sortable({axis:"y",handle:".wp_china_yes-cloneable-title,.wp_china_yes-cloneable-sort",helper:"original",cursor:"move",placeholder:"widget-placeholder",start:function(e,t){c.accordion({active:!1}),c.sortable("refreshPositions"),t.item.children(".wp_china_yes-cloneable-content").data("retry",!0)},update:function(e,t){j.helper.name_nested_replace(c.children(".wp_china_yes-cloneable-item"),l),c.wp_china_yes_customizer_refresh(),d&&u(c)}}),i.children(".wp_china_yes-cloneable-add").on("click",function(e){e.preventDefault();var t=c.children(".wp_china_yes-cloneable-item").length;r.hide(),h&&hOpenStreetMap contributors'}).addTo(a),r=L.marker(c.center,{draggable:!0}).addTo(a),o=function(e){n.val(e.lat),i.val(e.lng),s.val(a.getZoom())},a.on("click",function(e){r.setLatLng(e.latlng),o(e.latlng)}),a.on("zoom",function(){o(r.getLatLng())}),r.on("drag",function(){o(r.getLatLng())}),t.length||(t=S('[data-depend-id="'+e.find(".wp_china_yes--address-field").data("address-field")+'"]')),f={},t.autocomplete({source:function(e,t){var n=e.term;n in f?t(f[n]):S.get("https://nominatim.openstreetmap.org/search",{format:"json",q:n},function(e){e=e.length?e.map(function(e){return{value:e.display_name,label:e.display_name,lat:e.lat,lon:e.lon}},"json"):[{value:"no-data",label:"No Results."}];f[n]=e,t(e)})},select:function(e,t){if("no-data"===t.item.value)return!1;t=L.latLng(t.item.lat,t.item.lon);a.panTo(t),r.setLatLng(t),o(t)},create:function(e,t){S(this).autocomplete("widget").addClass("wp_china_yes-map-ui-autocomplate")}}),n.on("change",l=function(){var e=L.latLng(n.val(),i.val());a.panTo(e),r.setLatLng(e)}),i.on("change",l))})},S.fn.wp_china_yes_field_link=function(){return this.each(function(){var i=S(this),e=i.find(".wp_china_yes--link"),s=i.find(".wp_china_yes--add"),c=i.find(".wp_china_yes--edit"),a=i.find(".wp_china_yes--remove"),r=i.find(".wp_china_yes--result"),t=j.helper.uid("wp_china_yes-wplink-textarea-");s.on("click",function(e){e.preventDefault(),_.wpLink.open(t)}),c.on("click",function(e){e.preventDefault(),s.trigger("click"),S("#wp-link-url").val(i.find(".wp_china_yes--url").val()),S("#wp-link-text").val(i.find(".wp_china_yes--text").val()),S("#wp-link-target").prop("checked","_blank"===i.find(".wp_china_yes--target").val())}),a.on("click",function(e){e.preventDefault(),i.find(".wp_china_yes--url").val("").trigger("change"),i.find(".wp_china_yes--text").val(""),i.find(".wp_china_yes--target").val(""),s.removeClass("hidden"),c.addClass("hidden"),a.addClass("hidden"),r.parent().addClass("hidden")}),e.attr("id",t).on("change",function(){var e=_.wpLink.getAttrs(),t=e.href,n=S("#wp-link-text").val(),e=e.target||"";i.find(".wp_china_yes--url").val(t).trigger("change"),i.find(".wp_china_yes--text").val(n),i.find(".wp_china_yes--target").val(e),r.html('{url:"'+t+'", text:"'+n+'", target:"'+e+'"}'),s.addClass("hidden"),c.removeClass("hidden"),a.removeClass("hidden"),r.parent().removeClass("hidden")})})},S.fn.wp_china_yes_field_media=function(){return this.each(function(){var n,i=S(this),s=i.find(".wp_china_yes--button"),c=i.find(".wp_china_yes--remove"),a=s.data("library")&&s.data("library").split(",")||"",r=!!i.hasClass("wp_china_yes-assign-field-background")&&i.closest(".wp_china_yes-field-background").find(".wp_china_yes--auto-attributes");s.on("click",function(e){e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&(n||(n=_.wp.media({library:{type:a}})).on("select",function(){var e=n.state().get("selection").first().attributes,t=s.data("preview-size")||"thumbnail";a.length&&-1===a.indexOf(e.subtype)&&-1===a.indexOf(e.type)||(i.find(".wp_china_yes--id").val(e.id),i.find(".wp_china_yes--width").val(e.width),i.find(".wp_china_yes--height").val(e.height),i.find(".wp_china_yes--alt").val(e.alt),i.find(".wp_china_yes--title").val(e.title),i.find(".wp_china_yes--description").val(e.description),t=void 0!==e.sizes&&void 0!==e.sizes.thumbnail&&"thumbnail"===t?e.sizes.thumbnail.url:void 0!==e.sizes&&void 0!==e.sizes.full?e.sizes.full.url:"image"===e.type?e.url:e.icon,r&&r.removeClass("wp_china_yes--attributes-hidden"),c.removeClass("hidden"),i.find(".wp_china_yes--preview").removeClass("hidden"),i.find(".wp_china_yes--src").attr("src",t),i.find(".wp_china_yes--thumbnail").val(t),i.find(".wp_china_yes--url").val(e.url).trigger("change"))}),n.open())}),c.on("click",function(e){e.preventDefault(),r&&r.addClass("wp_china_yes--attributes-hidden"),c.addClass("hidden"),i.find("input").val(""),i.find(".wp_china_yes--preview").addClass("hidden"),i.find(".wp_china_yes--url").trigger("change")})})},S.fn.wp_china_yes_field_repeater=function(){return this.each(function(){function e(e){e.preventDefault();var t,n,i,e=s.children(".wp_china_yes-repeater-item").length;r.hide(),f&&f')).append(t),i.append(n),s.children().eq(e.index()).after(i),i.children(".wp_china_yes-repeater-content").wp_china_yes_reload_script(),j.helper.name_nested_replace(s.children(".wp_china_yes-repeater-item"),o),s.wp_china_yes_customizer_refresh(),s.wp_china_yes_customizer_listen({closest:!0}))}function t(e){e.preventDefault(),e=s.children(".wp_china_yes-repeater-item").length,a.hide(),r.hide(),l&&e-1'+i.unit+"")},spin:function(e,t){n.val(t.value).trigger("change")}})})},S.fn.wp_china_yes_field_switcher=function(){return this.each(function(){var n=S(this).find(".wp_china_yes--switcher");n.on("click",function(){var e=0,t=n.find("input");n.hasClass("wp_china_yes--active")?n.removeClass("wp_china_yes--active"):(e=1,n.addClass("wp_china_yes--active")),t.val(e).trigger("change")})})},S.fn.wp_china_yes_field_tabbed=function(){return this.each(function(){var e=S(this),t=e.find(".wp_china_yes-tabbed-nav a"),n=e.find(".wp_china_yes-tabbed-content");n.eq(0).wp_china_yes_reload_script(),t.on("click",function(e){e.preventDefault();var e=S(this),t=e.index(),t=n.eq(t);e.addClass("wp_china_yes-tabbed-active").siblings().removeClass("wp_china_yes-tabbed-active"),t.wp_china_yes_reload_script(),t.removeClass("hidden").siblings().addClass("hidden")})})},S.fn.wp_china_yes_field_typography=function(){return this.each(function(){var x=this,z=S(this),i=[],D=wp_china_yes_typography_json.webfonts,t=wp_china_yes_typography_json.googlestyles,O=wp_china_yes_typography_json.defaultstyles;x.sanitize_subset=function(e){return e=(e=e.replace("-ext"," Extended")).charAt(0).toUpperCase()+e.slice(1)},x.sanitize_style=function(e){return t[e]||e},x.load_google_font=function(e,t,n){e&&"object"==typeof WebFont&&(t=t?t.replace("normal",""):"",n=n?n.replace("normal",""):"",-1===i.indexOf(e=t||n?e+":"+t+n:e)&&WebFont.load({google:{families:[e]}}),i.push(e))},x.append_select_options=function(e,t,s,c,a){e.find("option").not(":first").remove();var r="";S.each(t,function(e,t){var n=t,i=a?s&&-1!==s.indexOf(t)?" selected":"":s&&s===t?" selected":"";"subset"===c?n=x.sanitize_subset(t):"style"===c&&(n=x.sanitize_style(t)),r+='"}),e.append(r).trigger("wp_china_yes.change").trigger("chosen:updated")},x.init=function(){var c,a,r,o,f,l,d,h,g,p=[],e=z.find(".wp_china_yes--typography"),u=z.find(".wp_china_yes--type"),v=z.find(".wp_china_yes--block-font-style"),m=e.data("unit"),_=e.data("line-height-unit"),t=e.data("exclude")?e.data("exclude").split(","):[],b=(z.find(".wp_china_yes--chosen").length&&z.find("select").each(function(){var e=S(this),t=e.parent().find(".chosen-container");t.length&&t.remove(),e.chosen({allow_single_deselect:!0,disable_search_threshold:15,width:"100%"})}),z.find(".wp_china_yes--font-family")),i=b.val(),s=(b.find("option").not(":first-child").remove(),""),y=(S.each(D,function(n,e){t&&-1!==t.indexOf(n)||(s+='',S.each(e.fonts,function(e,t){s+='"}),s+="")}),b.append(s).trigger("chosen:updated"),z.find(".wp_china_yes--block-font-style")),w=(y.length&&(c=z.find(".wp_china_yes--font-style-select"),a=c.val()?c.val().replace(/normal/g,""):"",c.on("change wp_china_yes.change",function(e){var t=c.val(),n=(t=!t&&p&&-1===p.indexOf("normal")?p[0]:t)&&"italic"!==t&&"normal"===t?"normal":"",n=t&&"italic"!==t&&"normal"!==t?t.replace("italic",""):n,t=t&&"italic"===t.substr(-6)?"italic":"";z.find(".wp_china_yes--font-weight").val(n),z.find(".wp_china_yes--font-style").val(t)}),(r=z.find(".wp_china_yes--block-extra-styles")).length&&(o=z.find(".wp_china_yes--extra-styles"),f=o.val())),z.find(".wp_china_yes--block-subset")),C=(w.length&&(l=z.find(".wp_china_yes--subset"),d=l.val(),h=l.data("multiple")||!1),z.find(".wp_china_yes--block-backup-font-family")),k=(b.on("change wp_china_yes.change",function(e){w.length&&w.addClass("hidden"),r.length&&r.addClass("hidden"),C.length&&C.addClass("hidden");var t,n,i=b.find(":selected"),s=i.val(),i=i.data("type");i&&s?("google"!==i&&"custom"!==i||!C.length||C.removeClass("hidden"),y.length&&(n=O,"google"===i&&D[i].fonts[s][0]?n=D[i].fonts[s][0]:"custom"===i&&D[i].fonts[s]&&(n=D[i].fonts[s]),t=-1!==(p=n).indexOf("normal")?"normal":n[0],t=a&&-1!==n.indexOf(a)?a:t,x.append_select_options(c,n,t,"style"),a=!1,y.removeClass("hidden"),"google"===i&&r.length&&1!',S.each(e.errors,function(e,t){var e=S('[data-depend-id="'+e+'"]'),n=S('a[href="#tab='+e.closest(".wp_china_yes-section").data("section-id")+'"]'),i=n.closest(".wp_china_yes-tab-item");e.closest(".wp_china_yes-fieldset").append('

    '+t+"

    "),n.find(".wp_china_yes-error").length||n.append(s),i.find(".wp_china_yes-arrow .wp_china_yes-error").length||i.find(".wp_china_yes-arrow").append(s)})),a.removeClass("wp_china_yes-saving"),c.prop("disabled",!1).attr("value",n),r=!1,j.vars.form_modified=!1,j.vars.$form_warning.hide(),clearTimeout(i);var s,t=S(".wp_china_yes-form-success");t.empty().append(e.notice).fadeIn("fast",function(){i=setTimeout(function(){t.fadeOut("fast")},1e3)})}).fail(function(e){alert(e.error)})):j.vars.form_modified=!1),r=!0})})},S.fn.wp_china_yes_options=function(){return this.each(function(){var e=S(this),t=e.find(".wp_china_yes-content"),n=e.find(".wp_china_yes-form-success"),i=e.find(".wp_china_yes-form-warning"),s=e.find(".wp_china_yes-header .wp_china_yes-save");(j.vars.$form_warning=i).length&&(_.onbeforeunload=function(){return!!j.vars.form_modified||y},t.on("change keypress",":input",function(){j.vars.form_modified||(n.hide(),i.fadeIn("fast"),j.vars.form_modified=!0)})),n.hasClass("wp_china_yes-form-show")&&setTimeout(function(){n.fadeOut("fast")},1e3),S(b).keydown(function(e){if((e.ctrlKey||e.metaKey)&&83===e.which)return s.trigger("click"),e.preventDefault(),!1})})},S.fn.wp_china_yes_taxonomy=function(){return this.each(function(){var e,t,n=S(this),i=n.parents("form");"addtag"===i.attr("id")&&(e=i.find("#submit"),t=n.children(".wp_china_yes-field").wp_china_yes_clone(),e.on("click",function(){i.find(".form-required").hasClass("form-invalid")||(n.data("inited",!1),n.empty(),n.html(t),t=t.wp_china_yes_clone(),n.wp_china_yes_reload_script())}))})},S.fn.wp_china_yes_shortcode=function(){var m=this;return m.shortcode_parse=function(e,n){var i="";return S.each(e,function(e,t){i+="["+(n=n||e),S.each(t,function(e,t){"content"===e?i=(i+="]")+t+"[/"+n:i+=m.shortcode_tags(e,t)}),i+="]"}),i},m.shortcode_tags=function(e,t){var n="";return""!==t&&("object"!=typeof t||S.isArray(t)?n+=" "+e+'="'+t.toString()+'"':S.each(t,function(e,t){""!==(t="background-image"===e?t.url||"":t)&&(n+=" "+e+'="'+t.toString()+'"')})),n},m.insertAtChars=function(e,t){e=void 0!==e[0].name?e[0]:e;return e.value.length&&void 0!==e.selectionStart?(e.focus(),e.value.substring(0,e.selectionStart)+t+e.value.substring(e.selectionEnd,e.value.length)):(e.focus(),t)},m.send_to_editor=function(e,t){var n;(n="undefined"!=typeof tinymce?tinymce.get(t):n)&&!n.isHidden()?n.execCommand("mceInsertContent",!1,e):(n=S("#"+t)).val(m.insertAtChars(n,e)).trigger("change")},this.each(function(){var s,c,a,n,r,o,f,i,l,d=S(this),h=d.find(".wp_china_yes-modal-load"),p=(d.find(".wp_china_yes-modal-content"),d.find(".wp_china_yes-modal-insert")),u=d.find(".wp_china_yes-modal-loading"),t=d.find("select"),g=d.data("modal-id"),v=d.data("nonce");S(b).on("click",'.wp_china_yes-shortcode-button[data-modal-id="'+g+'"]',function(e){e.preventDefault(),l=S(this),s=l.data("editor-id")||!1,c=l.data("target-id")||!1,a=l.data("gutenberg-id")||!1,d.removeClass("hidden"),d.hasClass("wp_china_yes-shortcode-single")&&r===y&&t.trigger("change")}),t.on("change",function(){var e=S(this),t=e.find(":selected");n=e.val(),r=t.data("shortcode"),o=t.data("view")||"normal",f=t.data("group")||r,h.empty(),n?(u.show(),_.wp.ajax.post("wp_china_yes-get-shortcode-"+g,{shortcode_key:n,nonce:v}).done(function(e){u.hide();e=S(e.content).appendTo(h);p.parent().removeClass("hidden"),i=e.find(".wp_china_yes--repeat-shortcode").wp_china_yes_clone(),e.wp_china_yes_reload_script(),e.find(".wp_china_yes-fields").wp_china_yes_reload_script()})):p.parent().addClass("hidden")}),p.on("click",function(e){if(e.preventDefault(),!p.prop("disabled")&&!p.attr("disabled")){var n="",t=d.find(".wp_china_yes-field:not(.wp_china_yes-depend-on)").find(":input:not(.ignore)").serializeObjectWP_CHINA_YES();switch(o){case"contents":var i=r?t[r]:t;S.each(i,function(e,t){e=r||e;n+="["+e+"]"+t+"[/"+e+"]"});break;case"group":n+="["+r,S.each(t[r],function(e,t){n+=m.shortcode_tags(e,t)}),n=(n=(n+="]")+m.shortcode_parse(t[f],f))+("[/"+r+"]");break;case"repeater":n+=m.shortcode_parse(t[f],f);break;default:n+=m.shortcode_parse(t)}n=""===n?"["+r+"]":n,a?(e=_.wp_china_yes_gutenberg_props.attributes.hasOwnProperty("shortcode")?_.wp_china_yes_gutenberg_props.attributes.shortcode:"",_.wp_china_yes_gutenberg_props.setAttributes({shortcode:e+n})):s?m.send_to_editor(n,s):(e=c?S(c):l.parent().find("textarea")).val(m.insertAtChars(e,n)).trigger("change"),d.addClass("hidden")}}),d.on("click",".wp_china_yes--repeat-button",function(e){e.preventDefault();var e=d.find(".wp_china_yes--repeatable"),t=i.wp_china_yes_clone(),n=t.find(".wp_china_yes-repeat-remove");t.appendTo(e);t.find(".wp_china_yes-fields").wp_china_yes_reload_script(),j.helper.name_nested_replace(d.find(".wp_china_yes--repeat-shortcode"),f),n.on("click",function(){t.remove(),j.helper.name_nested_replace(d.find(".wp_china_yes--repeat-shortcode"),f)})}),d.on("click",".wp_china_yes-modal-close, .wp_china_yes-modal-overlay",function(){d.addClass("hidden")})})},"function"==typeof Color&&(Color.prototype.toString=function(){if(this._alpha<1)return this.toCSS("rgba",this._alpha).replace(/\s+/g,"");var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;0<=t;t--)e="0"+e;return"#"+e}),j.funcs.parse_color=function(e){var e=e.replace(/\s+/g,""),t=-1!==e.indexOf("rgba")?parseFloat(100*e.replace(/^.*,(.+)\)/,"$1")):100;return{value:e,transparent:t,rgba:t<100}},S.fn.wp_china_yes_color=function(){return this.each(function(){var a,r=S(this),n=j.funcs.parse_color(r.val()),e=!_.wp_china_yes_vars.color_palette.length||_.wp_china_yes_vars.color_palette;r.hasClass("wp-color-picker")&&r.closest(".wp-picker-container").after(r).remove(),r.wpColorPicker({palettes:e,change:function(e,t){t=t.color.toString();a.removeClass("wp_china_yes--transparent-active"),a.find(".wp_china_yes--transparent-offset").css("background-color",t),r.val(t).trigger("change")},create:function(){a=r.closest(".wp-picker-container");var i=r.data("a8cIris"),e=S('
    transparent
    ').appendTo(a.find(".wp-picker-holder")),s=e.find(".wp_china_yes--transparent-slider"),c=e.find(".wp_china_yes--transparent-text"),t=e.find(".wp_china_yes--transparent-offset"),e=e.find(".wp_china_yes--transparent-button");"transparent"===r.val()&&a.addClass("wp_china_yes--transparent-active"),e.on("click",function(){"transparent"!==r.val()?(r.val("transparent").trigger("change").removeClass("iris-error"),a.addClass("wp_china_yes--transparent-active")):(r.val(i._color.toString()).trigger("change"),a.removeClass("wp_china_yes--transparent-active"))}),s.slider({value:n.transparent,step:1,min:0,max:100,slide:function(e,t){t=parseFloat(t.value/100);i._color._alpha=t,r.wpColorPicker("color",i._color.toString()),c.text(1===t||0===t?"":t)},create:function(){var e=parseFloat(n.transparent/100);c.text(e<1?e:""),t.css("background-color",n.value),a.on("click",".wp-picker-clear",function(){i._color._alpha=1,c.text(""),s.slider("option","value",100),a.removeClass("wp_china_yes--transparent-active"),r.trigger("change")}),a.on("click",".wp-picker-default",function(){var e=j.funcs.parse_color(r.data("default-color")),t=parseFloat(e.transparent/100),n=t<1?t:"";i._color._alpha=t,c.text(n),s.slider("option","value",e.transparent),"transparent"===e.value&&(r.removeClass("iris-error"),a.addClass("wp_china_yes--transparent-active"))})}})}})})},S.fn.wp_china_yes_chosen=function(){return this.each(function(){var n,c,a=S(this),e=a.parent().find(".chosen-container"),t=a.hasClass("wp_china_yes-chosen-sortable")||!1,i=a.hasClass("wp_china_yes-chosen-ajax")||!1,s=a.attr("multiple")||!1,r=S.extend({allow_single_deselect:!0,disable_search_threshold:10,width:s?"100%":"auto",no_results_text:_.wp_china_yes_vars.i18n.no_results_text},a.data("chosen-settings"));e.length&&e.remove(),i?(e=S.extend({data:{type:"post",nonce:""},allow_single_deselect:!0,disable_search_threshold:-1,width:"100%",min_length:3,type_delay:500,typing_text:_.wp_china_yes_vars.i18n.typing_text,searching_text:_.wp_china_yes_vars.i18n.searching_text,no_results_text:_.wp_china_yes_vars.i18n.no_results_text},a.data("chosen-settings")),a.WP_CHINA_YESAjaxChosen(e)):a.chosen(r),s&&(i=(n=a.parent().find(".wp_china_yes-hide-select")).val()||[],a.on("change",function(e,t){t&&t.selected?n.append('"):t&&t.deselected&&n.find('option[value="'+t.deselected+'"]').remove(),_.wp.customize!==y&&0===n.children().length&&n.data("customize-setting-link")&&_.wp.customize.control(n.data("customize-setting-link")).setting.set(""),n.trigger("change")}),a.WP_CHINA_YESChosenOrder(i,!0)),t&&((c=a.parent().find(".chosen-container").find(".chosen-choices")).bind("mousedown",function(e){S(e.target).is("span")&&e.stopPropagation()}),c.sortable({items:"li:not(.search-field)",helper:"orginal",cursor:"move",placeholder:"search-choice-placeholder",start:function(e,t){t.placeholder.width(t.item.innerWidth()),t.placeholder.height(t.item.innerHeight())},update:function(e,t){var i="",s=a.data("chosen"),n=a.parent().find(".wp_china_yes-hide-select");c.find(".search-choice-close").each(function(){var n=S(this).data("option-array-index");S.each(s.results_data,function(e,t){t.array_index===n&&(i+='")})}),n.children().remove(),n.append(i),n.trigger("change")}}))})},S.fn.wp_china_yes_checkbox=function(){return this.each(function(){var e=S(this),t=e.find(".wp_china_yes--input"),n=e.find(".wp_china_yes--checkbox");n.on("click",function(){t.val(Number(n.prop("checked"))).trigger("change")})})},S.fn.wp_china_yes_checkbox_all=function(){return this.each(function(){var n=S(this);n.on("click",function(){var e=n.closest(".wp_china_yes-field-checkbox").find(":input"),t=!1;e.each(function(){S(this).prop("checked")||(t=!0)}),t?(e.prop("checked","checked"),e.attr("checked","checked")):(e.prop("checked",""),e.removeAttr("checked")),e.first().trigger("change")})})},S.fn.wp_china_yes_siblings=function(){return this.each(function(){var t=S(this),e=t.find(".wp_china_yes--sibling"),n=t.data("multiple")||!1;e.on("click",function(){var e=S(this);n?e.hasClass("wp_china_yes--active")?(e.removeClass("wp_china_yes--active"),e.find("input").prop("checked",!1).trigger("change")):(e.addClass("wp_china_yes--active"),e.find("input").prop("checked",!0).trigger("change")):(t.find("input").prop("checked",!1),e.find("input").prop("checked",!0).trigger("change"),e.addClass("wp_china_yes--active").siblings().removeClass("wp_china_yes--active"))})})},S.fn.wp_china_yes_help=function(){return this.each(function(){var e,t,n=S(this);n.on({mouseenter:function(){e=S('
    ').html(n.find(".wp_china_yes-help-text").html()).appendTo("body"),t=j.vars.is_rtl?n.offset().left+24:n.offset().left-e.outerWidth(),e.css({top:n.offset().top-(e.outerHeight()/2-14),left:t})},mouseleave:function(){e!==y&&e.remove()}})})},S.fn.wp_china_yes_customizer_refresh=function(){return this.each(function(){var e=S(this),t=e.closest(".wp_china_yes-customize-complex");if(t.length){var n=t.data("unique-id");if(n===y)return;var i=t.find(":input"),t=t.data("option-id"),i=i.serializeObjectWP_CHINA_YES(),i=!S.isEmptyObject(i)&&i[n]&&i[n][t]?i[n][t]:"",n=_.wp.customize.control(n+"["+t+"]");n.setting._value=null,n.setting.set(i)}else e.find(":input").first().trigger("change");S(b).trigger("wp_china_yes-customizer-refresh",e)})},S.fn.wp_china_yes_customizer_listen=function(e){var s=S.extend({closest:!1},e);return this.each(function(){var t,e,n,i;_.wp.customize!==y&&(e=(t=s.closest?S(this).closest(".wp_china_yes-customize-complex"):S(this)).find(":input"),n=t.data("unique-id"),i=t.data("option-id"),n!==y&&e.on("change keyup wp_china_yes.change",function(){var e=t.find(":input").serializeObjectWP_CHINA_YES(),e=!S.isEmptyObject(e)&&e[n]&&e[n][i]?e[n][i]:"";_.wp.customize.control(n+"["+i+"]").setting.set(e)}))})},S(b).on("expanded",".control-section",function(){var e,t,n=S(this);n.hasClass("open")&&!n.data("inited")&&(e=n.find(".wp_china_yes-customize-field"),t=n.find(".wp_china_yes-customize-complex"),e.length&&(n.wp_china_yes_dependency(),e.wp_china_yes_reload_script({dependency:!1}),t.wp_china_yes_customizer_listen()),n.data("inited",!0))}),j.vars.$window.on("resize wp_china_yes.resize",j.helper.debounce(function(e){(-1",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},fe={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){e%=100;if(3Math.min(t,n)&&en)&&(p.amPM.textContent=p.l10n.amPM[_e(p.amPM.textContent===p.l10n.amPM[0])]),t.value=pe(s)));var t,n,i,o,s,r,a=p._input.value;u(),T(),p._input.value!==a&&p._debouncedChange()}function u(){var e,t,n,i,o,s;void 0!==p.hourElement&&void 0!==p.minuteElement&&(o=(parseInt(p.hourElement.value.slice(-2),10)||0)%24,e=(parseInt(p.minuteElement.value,10)||0)%60,t=void 0!==p.secondElement?(parseInt(p.secondElement.value,10)||0)%60:0,void 0!==p.amPM&&(n=o,i=p.amPM.textContent,o=n%12+12*_e(i===p.l10n.amPM[1])),n=void 0!==p.config.minTime||p.config.minDate&&p.minDateHasTime&&p.latestSelectedDateObj&&0===Ee(p.latestSelectedDateObj,p.config.minDate,!0),(void 0!==p.config.maxTime||p.config.maxDate&&p.maxDateHasTime&&p.latestSelectedDateObj&&0===Ee(p.latestSelectedDateObj,p.config.maxDate,!0))&&(i=void 0!==p.config.maxTime?p.config.maxTime:p.config.maxDate,(e=(o=Math.min(o,i.getHours()))===i.getHours()?Math.min(e,i.getMinutes()):e)===i.getMinutes()&&(t=Math.min(t,i.getSeconds()))),n&&(s=void 0!==p.config.minTime?p.config.minTime:p.config.minDate,(e=(o=Math.max(o,s.getHours()))===s.getHours()&&ep.now?p.config.minDate:p.config.maxDate&&p.config.maxDate"+p.config.getWeek(t)+""),k("onDayCreate",s),s}function _(e){e.focus(),"range"===p.config.mode&&K(e)}function m(e){for(var t=0=Math.abs(o))return void _(f)}p.changeMonth(a),g(m(a),0)}else _(e)}function f(){if(void 0!==p.daysContainer){be(p.daysContainer),p.weekNumbers&&be(p.weekNumbers);for(var e=document.createDocumentFragment(),t=0;tp.config.maxDate.getMonth()||((e=ye("option","flatpickr-monthDropdown-month")).value=new Date(p.currentYear,t).getMonth().toString(),e.textContent=Ce(t,p.config.shorthandCurrentMonth,p.l10n),e.tabIndex=-1,p.currentMonth===t&&(e.selected=!0),p.monthsDropdownContainer.appendChild(e))}}function q(){be(p.monthNav),p.monthNav.appendChild(p.prevMonthNav),p.config.showMonths&&(p.yearElements=[],p.monthElements=[]);for(var e,t,n,i,o,s=p.config.showMonths;s--;){o=i=r=n=t=e=void 0,e=ye("div","flatpickr-month"),t=window.document.createDocumentFragment(),n=1\n "+t.join("")+"\n \n "}}function y(e,t){t=(t=void 0===t?!0:t)?e:e-p.currentMonth;t<0&&!0===p._hidePrevMonthArrow||0p.config.maxDate.getFullYear()||(t=p.currentYear!==e,p.currentYear=e||p.currentYear,p.config.maxDate&&p.currentYear===p.config.maxDate.getFullYear()?p.currentMonth=Math.min(p.config.maxDate.getMonth(),p.currentMonth):p.config.minDate&&p.currentYear===p.config.minDate.getFullYear()&&(p.currentMonth=Math.max(p.config.minDate.getMonth(),p.currentMonth)),t&&(p.redraw(),k("onYearChange"),v()))}function D(e,t){var n=p.parseDate(e,void 0,t=void 0===t?!0:t);if(p.config.minDate&&n&&Ee(n,p.config.minDate,void 0!==t?t:!p.minDateHasTime)<0||p.config.maxDate&&n&&0=a.from.getTime()&&n.getTime()<=a.to.getTime())return o}return!o}function C(e){return void 0!==p.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&p.daysContainer.contains(e))}function U(e){e.target===p._input&&(0n,o=window.pageYOffset+t.top+(s?-n-2:e.offsetHeight+2),ve(p.calendarContainer,"arrowTop",!s),ve(p.calendarContainer,"arrowBottom",s),p.config.inline||(n=window.pageXOffset+t.left,s=e=!1,"center"===i?(n-=(r-t.width)/2,e=!0):"right"===i&&(n-=r-t.width,s=!0),ve(p.calendarContainer,"arrowLeft",!e&&!s),ve(p.calendarContainer,"arrowCenter",e),ve(p.calendarContainer,"arrowRight",s),i=window.document.body.offsetWidth-(window.pageXOffset+t.right),e=n+r>window.document.body.offsetWidth,s=i+r>window.document.body.offsetWidth,ve(p.calendarContainer,"rightMost",e),p.config.static||(p.calendarContainer.style.top=o+"px",e?s?void 0!==(o=function(){for(var e=null,t=0;tp.currentMonth+p.config.showMonths-1)&&"range"!==p.config.mode,p.selectedDateElem=e,"single"===p.config.mode?p.selectedDates=[n]:"multiple"===p.config.mode?(i=oe(n))?p.selectedDates.splice(parseInt(i),1):p.selectedDates.push(n):"range"===p.config.mode&&(2===p.selectedDates.length&&p.clear(!1,!1),p.latestSelectedDateObj=n,p.selectedDates.push(n),0!==Ee(n,p.selectedDates[0],!0)&&p.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()})),u(),t&&(i=p.currentYear!==n.getFullYear(),p.currentYear=n.getFullYear(),p.currentMonth=n.getMonth(),i&&(k("onYearChange"),v()),k("onMonthChange")),E(),f(),T(),t||"range"===p.config.mode||1!==p.config.showMonths?void 0!==p.selectedDateElem&&void 0===p.hourElement&&p.selectedDateElem&&p.selectedDateElem.focus():_(e),void 0!==p.hourElement&&void 0!==p.hourElement&&p.hourElement.focus(),p.config.closeOnSelect&&(n="single"===p.config.mode&&!p.config.enableTime,i="range"===p.config.mode&&2===p.selectedDates.length&&!p.config.enableTime,(n||i)&&Z()),o())}p.parseDate=ke({config:p.config,l10n:p.l10n}),p._handlers=[],p.pluginElements=[],p.loadedPlugins=[],p._bind=a,p._setHoursFromDate=i,p._positionCalendar=x,p.changeMonth=y,p.changeYear=w,p.clear=function(e,t){void 0===e&&(e=!0);void 0===t&&(t=!0);p.input.value="",void 0!==p.altInput&&(p.altInput.value="");void 0!==p.mobileInput&&(p.mobileInput.value="");p.selectedDates=[],!(p.latestSelectedDateObj=void 0)===t&&(p.currentYear=p._initialDate.getFullYear(),p.currentMonth=p._initialDate.getMonth());{var n,i;!0===p.config.enableTime&&(t=Se(p.config),n=t.hours,i=t.minutes,t=t.seconds,r(n,i,t))}p.redraw(),e&&k("onChange")},p.close=function(){p.isOpen=!1,p.isMobile||(void 0!==p.calendarContainer&&p.calendarContainer.classList.remove("open"),void 0!==p._input&&p._input.classList.remove("active"));k("onClose")},p._createElement=ye,p.destroy=function(){void 0!==p.config&&k("onDestroy");for(var e=p._handlers.length;e--;)p._handlers[e].remove();if(p._handlers=[],p.mobileInput)p.mobileInput.parentNode&&p.mobileInput.parentNode.removeChild(p.mobileInput),p.mobileInput=void 0;else if(p.calendarContainer&&p.calendarContainer.parentNode)if(p.config.static&&p.calendarContainer.parentNode){var t=p.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else p.calendarContainer.parentNode.removeChild(p.calendarContainer);p.altInput&&(p.input.type="text",p.altInput.parentNode&&p.altInput.parentNode.removeChild(p.altInput),delete p.altInput);p.input&&(p.input.type=p.input._type,p.input.classList.remove("flatpickr-input"),p.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete p[e]}catch(e){}})},p.isEnabled=D,p.jumpToDate=s,p.open=function(e,t){void 0===t&&(t=p._positionElement);var n;!0===p.isMobile?(e&&(e.preventDefault(),(n=De(e))&&n.blur()),void 0!==p.mobileInput&&(p.mobileInput.focus(),p.mobileInput.click()),k("onOpen")):p._input.disabled||p.config.inline||(n=p.isOpen,p.isOpen=!0,n||(p.calendarContainer.classList.add("open"),p._input.classList.add("active"),k("onOpen"),x(t)),!0!==p.config.enableTime||!0!==p.config.noCalendar||!1!==p.config.allowInput||void 0!==e&&p.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return p.hourElement.select()},50))},p.redraw=X,p.set=function(e,t){if(null!==e&&"object"==typeof e)for(var n in Object.assign(p.config,e),e)void 0!==M[n]&&M[n].forEach(function(e){return e()});else p.config[e]=t,void 0!==M[e]?M[e].forEach(function(e){return e()}):-1p.config.maxDate.getMonth():p.currentYear>p.config.maxDate.getFullYear()))}function se(t){return p.selectedDates.map(function(e){return p.formatDate(e,t)}).filter(function(e,t,n){return"range"!==p.config.mode||p.config.enableTime||n.indexOf(e)===t}).join("range"!==p.config.mode?p.config.conjunction:p.l10n.rangeSeparator)}function T(e){void 0===e&&(e=!0),void 0!==p.mobileInput&&p.mobileFormatStr&&(p.mobileInput.value=void 0!==p.latestSelectedDateObj?p.formatDate(p.latestSelectedDateObj,p.mobileFormatStr):""),p.input.value=se(p.config.dateFormat),void 0!==p.altInput&&(p.altInput.value=se(p.config.altFormat)),!1!==e&&k("onValueUpdate")}function re(e){var e=De(e),t=p.prevMonthNav.contains(e),n=p.nextMonthNav.contains(e);t||n?y(t?-1:1):0<=p.yearElements.indexOf(e)?e.select():e.classList.contains("arrowUp")?p.changeYear(p.currentYear+1):e.classList.contains("arrowDown")&&p.changeYear(p.currentYear-1)}p.element=p.input=c,p.isOpen=!1;var e=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],t=ce(ce({},JSON.parse(JSON.stringify(c.dataset||{}))),P),n={},O=(p.config.parseDate=t.parseDate,p.config.formatDate=t.formatDate,Object.defineProperty(p.config,"enable",{get:function(){return p.config._enable},set:function(e){p.config._enable=ne(e)}}),Object.defineProperty(p.config,"disable",{get:function(){return p.config._disable},set:function(e){p.config._disable=ne(e)}}),"time"===t.mode);function ae(t){return function(e){p.config["min"===t?"_minTime":"_maxTime"]=p.parseDate(e,"H:i:S")}}t.dateFormat||!t.enableTime&&!O||(N=Ie.defaultConfig.dateFormat||de.dateFormat,n.dateFormat=t.noCalendar||O?"H:i"+(t.enableSeconds?":S":""):N+" H:i"+(t.enableSeconds?":S":"")),t.altInput&&(t.enableTime||O)&&!t.altFormat&&(N=Ie.defaultConfig.altFormat||de.altFormat,n.altFormat=t.noCalendar||O?"h:i"+(t.enableSeconds?":S K":" K"):N+(" h:i"+(t.enableSeconds?":S":""))+" K"),Object.defineProperty(p.config,"minDate",{get:function(){return p.config._minDate},set:Q("min")}),Object.defineProperty(p.config,"maxDate",{get:function(){return p.config._maxDate},set:Q("max")}),Object.defineProperty(p.config,"minTime",{get:function(){return p.config._minTime},set:ae("min")}),Object.defineProperty(p.config,"maxTime",{get:function(){return p.config._maxTime},set:ae("max")}),"time"===t.mode&&(p.config.noCalendar=!0,p.config.enableTime=!0),Object.assign(p.config,n,t);for(var S=0;Sp.now.getTime()?p.config.minDate:p.config.maxDate&&p.config.maxDate.getTime()'+this.options.typing_text.replace("%s",this.options.min_length-e.length)+"")},t.prototype.update_list=function(){var e,t,n=this;this.search_welcome_message(),this.is_typing||(t=(e=r.trim(this.search_field.val())).length").attr("value",t.value).html(t.text).appendTo(s.element)}),t=this.search_field.val(),i=this.search_field.innerWidth(),this.element.trigger("chosen:updated"),this.is_multiple&&(o=this.element.parent().find(".wp_china_yes-hide-select").val()||[],this.element.WP_CHINA_YESChosenOrder(o,!0),this.search_field.css("width",i)),this.search_field.val(t),null!==this.chosenXhr.done&&this.chosenXhr.done(e)))},r.fn.WP_CHINA_YESAjaxChosen=function(e){return this.each(function(){new t(this,e)})}}(jQuery),function(){var s,r,a=[].indexOf||function(e){for(var t=0,n=this.length;t"+this.escape_html(e.group_label)+""+e.html:e.html},c.prototype.mouse_enter=function(){return this.mouse_on_container=!0},c.prototype.mouse_leave=function(){return this.mouse_on_container=!1},c.prototype.input_focus=function(e){if(this.is_multiple){if(!this.active_field)return setTimeout((t=this,function(){return t.container_mousedown()}),50)}else if(!this.active_field)return this.activate_field();var t},c.prototype.input_blur=function(e){if(!this.mouse_on_container)return this.active_field=!1,setTimeout((t=this,function(){return t.blur_test()}),100);var t},c.prototype.label_click_handler=function(e){return this.is_multiple?this.container_mousedown(e):this.activate_field()},c.prototype.results_option_build=function(e){for(var t,n,i="",o=0,s=this.results_data,r=0,a=s.length;r=this.max_shown_results));r++);return i},c.prototype.result_add_option=function(e){var t,n;return e.search_match&&this.include_option_in_results(e)?(t=[],e.disabled||e.selected&&this.is_multiple||t.push("active-result"),!e.disabled||e.selected&&this.is_multiple||t.push("disabled-result"),e.selected&&t.push("result-selected"),null!=e.group_array_index&&t.push("group-option"),""!==e.classes&&t.push(e.classes),(n=document.createElement("li")).className=t.join(" "),e.style&&(n.style.cssText=e.style),n.setAttribute("data-option-array-index",e.array_index),n.innerHTML=e.highlighted_html||e.html,e.title&&(n.title=e.title),this.outerHTML(n)):""},c.prototype.result_add_group=function(e){var t,n;return(e.search_match||e.group_match)&&0"+this.escape_html(n)+""+this.escape_html(f)),null!=u&&(u.group_match=!0)):null!=s.group_array_index&&this.results_data[s.group_array_index].search_match&&(s.search_match=!0)));return this.result_clear_highlight(),h<1&&a.length?(this.update_results_content(""),this.no_results(a)):(this.update_results_content(this.results_option_build()),null!=e&&e.skip_highlight?void 0:this.winnow_results_set_highlight())},c.prototype.get_search_regex=function(e){var t,e=this.search_contains?e:"(^|\\s|\\b)"+e+"[^\\s]*";return this.enable_split_word_search||this.search_contains||(e="^"+e),t=this.case_sensitive_search?"":"i",new RegExp(e,t)},c.prototype.search_string_match=function(e,t){t=t.exec(e);return!this.search_contains&&null!=t&&t[1]&&(t.index+=1),t},c.prototype.choices_count=function(){var e,t,n;if(null==this.selected_option_count)for(e=this.selected_option_count=0,t=(n=this.form_field.options).length;e\n '+this.default_text+'\n
    \n\n
    \n \n
      \n
      '},c.prototype.get_multi_html=function(){return'
        \n
      • \n \n
      • \n
      \n
      \n
        \n
        '},c.prototype.get_no_results_html=function(e){return'
      • \n '+this.results_none_found+" "+this.escape_html(e)+"\n
      • "},c.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?8<=document.documentMode:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},c.default_multiple_text="Select Some Options",c.default_single_text="Select an Option",c.default_no_result_text="No results match",s=c,(a=jQuery).fn.extend({chosen:function(i){return s.browser_is_supported()?this.each(function(e){var t=a(this),n=t.data("chosen");"destroy"===i?n instanceof o&&n.destroy():n instanceof o||t.data("chosen",new o(this,i))}):this}}),o=function(){var e,t=o,n=s;for(e in n)l.call(n,e)&&(t[e]=n[e]);function i(){this.constructor=t}function o(){return o.__super__.constructor.apply(this,arguments)}return i.prototype=n.prototype,t.prototype=new i,t.__super__=n.prototype,o.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},o.prototype.set_up_html=function(){var e=["chosen-container"];return e.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),e={class:e.join(" "),title:this.form_field.title},this.form_field.id.length&&(e.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("
        ",e),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},o.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},o.prototype.register_observers=function(){var t,n,i,o,s,r,a,l,c,h,u,d,f,p,_,m,g,v,y,b,w,D,C,x;return this.container.on("touchstart.chosen",(t=this,function(e){t.container_mousedown(e)})),this.container.on("touchend.chosen",(n=this,function(e){n.container_mouseup(e)})),this.container.on("mousedown.chosen",(i=this,function(e){i.container_mousedown(e)})),this.container.on("mouseup.chosen",(o=this,function(e){o.container_mouseup(e)})),this.container.on("mouseenter.chosen",(s=this,function(e){s.mouse_enter(e)})),this.container.on("mouseleave.chosen",(r=this,function(e){r.mouse_leave(e)})),this.search_results.on("mouseup.chosen",(a=this,function(e){a.search_results_mouseup(e)})),this.search_results.on("mouseover.chosen",(l=this,function(e){l.search_results_mouseover(e)})),this.search_results.on("mouseout.chosen",(c=this,function(e){c.search_results_mouseout(e)})),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",(h=this,function(e){h.search_results_mousewheel(e)})),this.search_results.on("touchstart.chosen",(u=this,function(e){u.search_results_touchstart(e)})),this.search_results.on("touchmove.chosen",(d=this,function(e){d.search_results_touchmove(e)})),this.search_results.on("touchend.chosen",(f=this,function(e){f.search_results_touchend(e)})),this.form_field_jq.on("chosen:updated.chosen",(p=this,function(e){p.results_update_field(e)})),this.form_field_jq.on("chosen:activate.chosen",(_=this,function(e){_.activate_field(e)})),this.form_field_jq.on("chosen:open.chosen",(m=this,function(e){m.container_mousedown(e)})),this.form_field_jq.on("chosen:close.chosen",(g=this,function(e){g.close_field(e)})),this.search_field.on("blur.chosen",(v=this,function(e){v.input_blur(e)})),this.search_field.on("keyup.chosen",(y=this,function(e){y.keyup_checker(e)})),this.search_field.on("keydown.chosen",(b=this,function(e){b.keydown_checker(e)})),this.search_field.on("focus.chosen",(w=this,function(e){w.input_focus(e)})),this.search_field.on("cut.chosen",(D=this,function(e){D.clipboard_event_checker(e)})),this.search_field.on("paste.chosen",(C=this,function(e){C.clipboard_event_checker(e)})),this.is_multiple?this.search_choices.on("click.chosen",(x=this,function(e){x.choices_click(e)})):this.container.on("click.chosen",function(e){e.preventDefault()})},o.prototype.destroy=function(){return a(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),0",{class:"search-choice"}).html(""+this.choice_label(e)+"");return e.disabled?n.addClass("search-choice-disabled"):((e=a("",{class:"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",(t=this,function(e){return t.choice_destroy_link_click(e)})),n.append(e)),this.search_container.before(n)},o.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(a(e.target))},o.prototype.choice_destroy=function(e){if(this.result_deselect(e[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&0'),this.selected_item.addClass("chosen-single-with-deselect")},o.prototype.get_search_field_value=function(){return this.search_field.val()},o.prototype.get_search_text=function(){return a.trim(this.get_search_field_value())},o.prototype.escape_html=function(e){return a("
        ").text(e).html()},o.prototype.winnow_results_set_highlight=function(){var e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),e=(e.length?e:this.search_results.find(".active-result")).first();if(null!=e)return this.result_do_highlight(e)},o.prototype.no_results=function(e){e=this.get_no_results_html(e);return this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},o.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},o.prototype.keydown_arrow=function(){var e;return this.results_showing&&this.result_highlight?(e=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(e):void 0:this.results_show()},o.prototype.keyup_arrow=function(){var e;return this.results_showing||this.is_multiple?this.result_highlight?(e=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(e.first()):(0").css(o)).text(this.get_search_field_value()),a("body").append(e),r=e.width()+25,e.remove(),this.container.is(":visible")&&(r=Math.min(this.container.outerWidth()-10,r)),this.search_field.width(r)}},o.prototype.trigger_form_field_change=function(e){return this.form_field_jq.trigger("input",e),this.form_field_jq.trigger("change",e)},o}()}.call(this),function(r){"use strict";function i(e,t,n){this.init(e,t,n)}function e(){this.rules=[]}r.extend(i.prototype,{init:function(e,t,n){this.controller=e,this.condition=t,this.value=n,this.rules=[],this.controls=[]},evalCondition:function(e,t,n,i,o){if("=="==n)return this.checkBoolean(i)==this.checkBoolean(o);if("!="==n)return this.checkBoolean(i)!=this.checkBoolean(o);if(">="==n)return Number(o)>=Number(i);if("<="==n)return Number(o)<=Number(i);if(">"==n)return Number(o)>Number(i);if("<"==n)return Number(o)args['output_css'] ) || ! empty( $this->args['enqueue_webfont'] ) ) { + add_action( 'wp_enqueue_scripts', array( $this, 'collect_output_css_and_typography' ), 10 ); + WP_CHINA_YES::$css = apply_filters( "wp_china_yes_{$this->unique}_output_css", WP_CHINA_YES::$css, $this ); + } + + } + + public function collect_output_css_and_typography() { + $this->recursive_output_css( $this->pre_fields ); + } + + public function recursive_output_css( $fields = array(), $combine_field = array() ) { + + if ( ! empty( $fields ) ) { + + foreach ( $fields as $field ) { + + $field_id = ( ! empty( $field['id'] ) ) ? $field['id'] : ''; + $field_type = ( ! empty( $field['type'] ) ) ? $field['type'] : ''; + $field_output = ( ! empty( $field['output'] ) ) ? $field['output'] : ''; + $field_check = ( $field_type === 'typography' || $field_output ) ? true : false; + $field_class = 'WP_CHINA_YES_Field_' . $field_type; + + if ( $field_type && $field_id ) { + + + if( $field_type === 'fieldset' ) { + if ( ! empty( $field['fields'] ) ) { + $this->recursive_output_css( $field['fields'], $field ); + } + } + + if( $field_type === 'accordion' ) { + if ( ! empty( $field['accordions'] ) ) { + foreach ( $field['accordions'] as $accordion ) { + $this->recursive_output_css( $accordion['fields'], $field ); + } + } + } + + if( $field_type === 'tabbed' ) { + if ( ! empty( $field['tabs'] ) ) { + foreach ( $field['tabs'] as $accordion ) { + $this->recursive_output_css( $accordion['fields'], $field ); + } + } + } + + if ( class_exists( $field_class ) ) { + + if ( method_exists( $field_class, 'output' ) || method_exists( $field_class, 'enqueue_google_fonts' ) ) { + + $field_value = ''; + + if ( $field_check && ( $this->abstract === 'options' || $this->abstract === 'customize' ) ) { + + if( ! empty( $combine_field ) ) { + + $field_value = ( isset( $this->options[$combine_field['id']][$field_id] ) ) ? $this->options[$combine_field['id']][$field_id] : ''; + + } else { + + $field_value = ( isset( $this->options[$field_id] ) ) ? $this->options[$field_id] : ''; + + } + + } else if ( $field_check && ( $this->abstract === 'metabox' && is_singular() || $this->abstract === 'taxonomy' && is_archive() ) ) { + + if( ! empty( $combine_field ) ) { + + $meta_value = $this->get_meta_value( $combine_field ); + $field_value = ( isset( $meta_value[$field_id] ) ) ? $meta_value[$field_id] : ''; + + } else { + + $meta_value = $this->get_meta_value( $field ); + $field_value = ( isset( $meta_value ) ) ? $meta_value : ''; + + } + + } + + $instance = new $field_class( $field, $field_value, $this->unique, 'wp/enqueue', $this ); + + // typography enqueue and embed google web fonts + if ( $field_type === 'typography' && $this->args['enqueue_webfont'] && ! empty( $field_value['font-family'] ) ) { + + $method = ( ! empty( $this->args['async_webfont'] ) ) ? 'async' : 'enqueue'; + + $instance->enqueue_google_fonts( $method ); + + } + + // output css + if ( $field_output && $this->args['output_css'] ) { + WP_CHINA_YES::$css .= $instance->output(); + } + + unset( $instance ); + + } + + } + + } + + } + + } + + } + + public function pre_tabs( $sections ) { + + $count = 100; + $result = array(); + $parents = array(); + + foreach ( $sections as $key => $section ) { + if ( ! empty( $section['parent'] ) ) { + $section['priority'] = ( isset( $section['priority'] ) ) ? $section['priority'] : $count; + $parents[$section['parent']][] = $section; + unset( $sections[$key] ); + } + $count++; + } + + foreach ( $sections as $key => $section ) { + $section['priority'] = ( isset( $section['priority'] ) ) ? $section['priority'] : $count; + if ( ! empty( $section['id'] ) && ! empty( $parents[$section['id']] ) ) { + $section['subs'] = wp_list_sort( $parents[$section['id']], array( 'priority' => 'ASC' ), 'ASC', true ); + } + $result[] = $section; + $count++; + } + + return wp_list_sort( $result, array( 'priority' => 'ASC' ), 'ASC', true ); + + } + + public function pre_sections( $sections ) { + + $result = array(); + + foreach ( $this->pre_tabs( $sections ) as $section ) { + if ( ! empty( $section['subs'] ) ) { + foreach ( $section['subs'] as $sub ) { + $sub['ptitle'] = ( ! empty( $section['title'] ) ) ? $section['title'] : ''; + $result[] = $sub; + } + } + if ( empty( $section['subs'] ) ) { + $result[] = $section; + } + } + + return $result; + } + + public function pre_fields( $sections ) { + + $result = array(); + + foreach ( $sections as $key => $section ) { + if ( ! empty( $section['fields'] ) ) { + foreach ( $section['fields'] as $field ) { + $result[] = $field; + } + } + } + + return $result; + } + +} +} diff --git a/framework/classes/admin-options.class.php b/framework/classes/admin-options.class.php new file mode 100644 index 0000000..9c250aa --- /dev/null +++ b/framework/classes/admin-options.class.php @@ -0,0 +1,667 @@ + 'Wp_china_yes Framework by Wp_china_yes', + 'framework_class' => '', + + // menu settings + 'menu_title' => '', + 'menu_slug' => '', + 'menu_type' => 'menu', + 'menu_capability' => 'manage_options', + 'menu_icon' => null, + 'menu_position' => null, + 'menu_hidden' => false, + 'menu_parent' => '', + 'sub_menu_title' => '', + + // menu extras + 'show_bar_menu' => true, + 'show_sub_menu' => true, + 'show_in_network' => true, + 'show_in_customizer' => false, + + 'show_search' => true, + 'show_reset_all' => true, + 'show_reset_section' => true, + 'show_footer' => true, + 'show_all_options' => true, + 'show_form_warning' => true, + 'sticky_header' => true, + 'save_defaults' => true, + 'ajax_save' => true, + 'form_action' => '', + + // admin bar menu settings + 'admin_bar_menu_icon' => '', + 'admin_bar_menu_priority' => 50, + + // footer + 'footer_text' => 'Thank you for creating with Wp_china_yes Framework', + 'footer_after' => '', + 'footer_credit' => '', + + // database model + 'database' => '', // options, transient, theme_mod, network + 'transient_time' => 0, + + // contextual help + 'contextual_help' => array(), + 'contextual_help_sidebar' => '', + + // typography options + 'enqueue_webfont' => true, + 'async_webfont' => false, + + // others + 'output_css' => true, + + // theme + 'nav' => 'normal', + 'theme' => 'dark', + 'class' => '', + + // external default values + 'defaults' => array(), + + ); + + // run framework construct + public function __construct( $key, $params = array() ) { + + $this->unique = $key; + $this->args = apply_filters( "wp_china_yes_{$this->unique}_args", wp_parse_args( $params['args'], $this->args ), $this ); + $this->sections = apply_filters( "wp_china_yes_{$this->unique}_sections", $params['sections'], $this ); + + // run only is admin panel options, avoid performance loss + $this->pre_tabs = $this->pre_tabs( $this->sections ); + $this->pre_fields = $this->pre_fields( $this->sections ); + $this->pre_sections = $this->pre_sections( $this->sections ); + + $this->get_options(); + $this->set_options(); + $this->save_defaults(); + + add_action( 'admin_menu', array( $this, 'add_admin_menu' ) ); + add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_menu' ), $this->args['admin_bar_menu_priority'] ); + add_action( 'wp_ajax_wp_china_yes_'. $this->unique .'_ajax_save', array( $this, 'ajax_save' ) ); + + if ( $this->args['database'] === 'network' && ! empty( $this->args['show_in_network'] ) ) { + add_action( 'network_admin_menu', array( $this, 'add_admin_menu' ) ); + } + + // wp enqeueu for typography and output css + parent::__construct(); + + } + + // instance + public static function instance( $key, $params = array() ) { + return new self( $key, $params ); + } + + // add admin bar menu + public function add_admin_bar_menu( $wp_admin_bar ) { + + if ( ! current_user_can( $this->args['menu_capability'] ) ) { + return; + } + + if ( is_network_admin() && ( $this->args['database'] !== 'network' || $this->args['show_in_network'] !== true ) ) { + return; + } + + if ( ! empty( $this->args['show_bar_menu'] ) && empty( $this->args['menu_hidden'] ) ) { + + global $submenu; + + $menu_slug = $this->args['menu_slug']; + $menu_icon = ( ! empty( $this->args['admin_bar_menu_icon'] ) ) ? '' : ''; + + $wp_admin_bar->add_node( array( + 'id' => $menu_slug, + 'title' => $menu_icon . esc_attr( $this->args['menu_title'] ), + 'href' => esc_url( ( is_network_admin() ) ? network_admin_url( 'admin.php?page='. $menu_slug ) : admin_url( 'admin.php?page='. $menu_slug ) ), + ) ); + + if ( ! empty( $submenu[$menu_slug] ) ) { + foreach ( $submenu[$menu_slug] as $menu_key => $menu_value ) { + $wp_admin_bar->add_node( array( + 'parent' => $menu_slug, + 'id' => $menu_slug .'-'. $menu_key, + 'title' => $menu_value[0], + 'href' => esc_url( ( is_network_admin() ) ? network_admin_url( 'admin.php?page='. $menu_value[2] ) : admin_url( 'admin.php?page='. $menu_value[2] ) ), + ) ); + } + } + + } + + } + + public function ajax_save() { + + $result = $this->set_options( true ); + + if ( ! $result ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error while saving the changes.', 'wp_china_yes' ) ) ); + } else { + wp_send_json_success( array( 'notice' => $this->notice, 'errors' => $this->errors ) ); + } + + } + + // get default value + public function get_default( $field ) { + + $default = ( isset( $field['default'] ) ) ? $field['default'] : ''; + $default = ( isset( $this->args['defaults'][$field['id']] ) ) ? $this->args['defaults'][$field['id']] : $default; + + return $default; + + } + + // save defaults and set new fields value to main options + public function save_defaults() { + + $tmp_options = $this->options; + + foreach ( $this->pre_fields as $field ) { + if ( ! empty( $field['id'] ) ) { + $this->options[$field['id']] = ( isset( $this->options[$field['id']] ) ) ? $this->options[$field['id']] : $this->get_default( $field ); + } + } + + if ( $this->args['save_defaults'] && empty( $tmp_options ) ) { + $this->save_options( $this->options ); + } + + } + + // set options + public function set_options( $ajax = false ) { + + // XSS ok. + // No worries, This "POST" requests is sanitizing in the below foreach. see #L337 - #L341 + $response = ( $ajax && ! empty( $_POST['data'] ) ) ? json_decode( wp_unslash( trim( $_POST['data'] ) ), true ) : $_POST; + + // Set variables. + $data = array(); + $noncekey = 'wp_china_yes_options_nonce'. $this->unique; + $nonce = ( ! empty( $response[$noncekey] ) ) ? $response[$noncekey] : ''; + $options = ( ! empty( $response[$this->unique] ) ) ? $response[$this->unique] : array(); + $transient = ( ! empty( $response['wp_china_yes_transient'] ) ) ? $response['wp_china_yes_transient'] : array(); + + if ( wp_verify_nonce( $nonce, 'wp_china_yes_options_nonce' ) ) { + + $importing = false; + $section_id = ( ! empty( $transient['section'] ) ) ? $transient['section'] : ''; + + if ( ! $ajax && ! empty( $response[ 'wp_china_yes_import_data' ] ) ) { + + // XSS ok. + // No worries, This "POST" requests is sanitizing in the below foreach. see #L337 - #L341 + $import_data = json_decode( wp_unslash( trim( $response[ 'wp_china_yes_import_data' ] ) ), true ); + $options = ( is_array( $import_data ) && ! empty( $import_data ) ) ? $import_data : array(); + $importing = true; + $this->notice = esc_html__( 'Settings successfully imported.', 'wp_china_yes' ); + + } + + if ( ! empty( $transient['reset'] ) ) { + + foreach ( $this->pre_fields as $field ) { + if ( ! empty( $field['id'] ) ) { + $data[$field['id']] = $this->get_default( $field ); + } + } + + $this->notice = esc_html__( 'Default settings restored.', 'wp_china_yes' ); + + } else if ( ! empty( $transient['reset_section'] ) && ! empty( $section_id ) ) { + + if ( ! empty( $this->pre_sections[$section_id-1]['fields'] ) ) { + + foreach ( $this->pre_sections[$section_id-1]['fields'] as $field ) { + if ( ! empty( $field['id'] ) ) { + $data[$field['id']] = $this->get_default( $field ); + } + } + + } + + $data = wp_parse_args( $data, $this->options ); + + $this->notice = esc_html__( 'Default settings restored.', 'wp_china_yes' ); + + } else { + + // sanitize and validate + foreach ( $this->pre_fields as $field ) { + + if ( ! empty( $field['id'] ) ) { + + $field_id = $field['id']; + $field_value = isset( $options[$field_id] ) ? $options[$field_id] : ''; + + // Ajax and Importing doing wp_unslash already. + if ( ! $ajax && ! $importing ) { + $field_value = wp_unslash( $field_value ); + } + + // Sanitize "post" request of field. + if ( ! isset( $field['sanitize'] ) ) { + + if( is_array( $field_value ) ) { + + $data[$field_id] = wp_kses_post_deep( $field_value ); + + } else { + + $data[$field_id] = wp_kses_post( $field_value ); + + } + + } else if( isset( $field['sanitize'] ) && is_callable( $field['sanitize'] ) ) { + + $data[$field_id] = call_user_func( $field['sanitize'], $field_value ); + + } else { + + $data[$field_id] = $field_value; + + } + + // Validate "post" request of field. + if ( isset( $field['validate'] ) && is_callable( $field['validate'] ) ) { + + $has_validated = call_user_func( $field['validate'], $field_value ); + + if ( ! empty( $has_validated ) ) { + + $data[$field_id] = ( isset( $this->options[$field_id] ) ) ? $this->options[$field_id] : ''; + $this->errors[$field_id] = $has_validated; + + } + + } + + } + + } + + } + + $data = apply_filters( "wp_china_yes_{$this->unique}_save", $data, $this ); + + do_action( "wp_china_yes_{$this->unique}_save_before", $data, $this ); + + $this->options = $data; + + $this->save_options( $data ); + + do_action( "wp_china_yes_{$this->unique}_save_after", $data, $this ); + + if ( empty( $this->notice ) ) { + $this->notice = esc_html__( 'Settings saved.', 'wp_china_yes' ); + } + + return true; + + } + + return false; + + } + + // save options database + public function save_options( $data ) { + + if ( $this->args['database'] === 'transient' ) { + set_transient( $this->unique, $data, $this->args['transient_time'] ); + } else if ( $this->args['database'] === 'theme_mod' ) { + set_theme_mod( $this->unique, $data ); + } else if ( $this->args['database'] === 'network' ) { + update_site_option( $this->unique, $data ); + } else { + update_option( $this->unique, $data ); + } + + do_action( "wp_china_yes_{$this->unique}_saved", $data, $this ); + + } + + // get options from database + public function get_options() { + + if ( $this->args['database'] === 'transient' ) { + $this->options = get_transient( $this->unique ); + } else if ( $this->args['database'] === 'theme_mod' ) { + $this->options = get_theme_mod( $this->unique ); + } else if ( $this->args['database'] === 'network' ) { + $this->options = get_site_option( $this->unique ); + } else { + $this->options = get_option( $this->unique ); + } + + if ( empty( $this->options ) ) { + $this->options = array(); + } + + return $this->options; + + } + + // admin menu + public function add_admin_menu() { + + extract( $this->args ); + + if ( $menu_type === 'submenu' ) { + + $menu_page = call_user_func( 'add_submenu_page', $menu_parent, esc_attr( $menu_title ), esc_attr( $menu_title ), $menu_capability, $menu_slug, array( $this, 'add_options_html' ) ); + + } else { + + $menu_page = call_user_func( 'add_menu_page', esc_attr( $menu_title ), esc_attr( $menu_title ), $menu_capability, $menu_slug, array( $this, 'add_options_html' ), $menu_icon, $menu_position ); + + if ( ! empty( $sub_menu_title ) ) { + call_user_func( 'add_submenu_page', $menu_slug, esc_attr( $sub_menu_title ), esc_attr( $sub_menu_title ), $menu_capability, $menu_slug, array( $this, 'add_options_html' ) ); + } + + if ( ! empty( $this->args['show_sub_menu'] ) && count( $this->pre_tabs ) > 1 ) { + + // create submenus + foreach ( $this->pre_tabs as $section ) { + call_user_func( 'add_submenu_page', $menu_slug, esc_attr( $section['title'] ), esc_attr( $section['title'] ), $menu_capability, $menu_slug .'#tab='. sanitize_title( $section['title'] ), '__return_null' ); + } + + remove_submenu_page( $menu_slug, $menu_slug ); + + } + + } + + // TODO CHINA-YES 支持隐藏子菜单 + if ( ! empty( $menu_hidden ) ) { + remove_menu_page( $menu_slug ); + remove_submenu_page( $menu_parent, $menu_slug ); + } + + add_action( 'load-'. $menu_page, array( $this, 'add_page_on_load' ) ); + + } + + public function add_page_on_load() { + + if ( ! empty( $this->args['contextual_help'] ) ) { + + $screen = get_current_screen(); + + foreach ( $this->args['contextual_help'] as $tab ) { + $screen->add_help_tab( $tab ); + } + + if ( ! empty( $this->args['contextual_help_sidebar'] ) ) { + $screen->set_help_sidebar( $this->args['contextual_help_sidebar'] ); + } + + } + + if ( ! empty( $this->args['footer_credit'] ) ) { + add_filter( 'admin_footer_text', array( $this, 'add_admin_footer_text' ) ); + } + + } + + public function add_admin_footer_text() { + echo wp_kses_post( $this->args['footer_credit'] ); + } + + public function error_check( $sections, $err = '' ) { + + if ( ! $this->args['ajax_save'] ) { + + if ( ! empty( $sections['fields'] ) ) { + foreach ( $sections['fields'] as $field ) { + if ( ! empty( $field['id'] ) ) { + if ( array_key_exists( $field['id'], $this->errors ) ) { + $err = '!'; + } + } + } + } + + if ( ! empty( $sections['subs'] ) ) { + foreach ( $sections['subs'] as $sub ) { + $err = $this->error_check( $sub, $err ); + } + } + + if ( ! empty( $sections['id'] ) && array_key_exists( $sections['id'], $this->errors ) ) { + $err = $this->errors[$sections['id']]; + } + + } + + return $err; + } + + // option page html output + public function add_options_html() { + + $has_nav = ( count( $this->pre_tabs ) > 1 ) ? true : false; + $show_all = ( ! $has_nav ) ? ' wp_china_yes-show-all' : ''; + $ajax_class = ( $this->args['ajax_save'] ) ? ' wp_china_yes-save-ajax' : ''; + $sticky_class = ( $this->args['sticky_header'] ) ? ' wp_china_yes-sticky-header' : ''; + $wrapper_class = ( $this->args['framework_class'] ) ? ' '. $this->args['framework_class'] : ''; + $theme = ( $this->args['theme'] ) ? ' wp_china_yes-theme-'. $this->args['theme'] : ''; + $class = ( $this->args['class'] ) ? ' '. $this->args['class'] : ''; + $nav_type = ( $this->args['nav'] === 'inline' ) ? 'inline' : 'normal'; + $form_action = ( $this->args['form_action'] ) ? $this->args['form_action'] : ''; + + do_action( 'wp_china_yes_options_before' ); + + echo '
        '; + + echo '
        '; + + echo '
        '; + + echo ''; + + wp_nonce_field( 'wp_china_yes_options_nonce', 'wp_china_yes_options_nonce'. $this->unique ); + + echo '
        '; + echo '
        '; + + echo '
        '; + echo '

        '. $this->args['framework_title'] .'

        '; + echo '
        '; + + echo '
        '; + + $notice_class = ( ! empty( $this->notice ) ) ? 'wp_china_yes-form-show' : ''; + $notice_text = ( ! empty( $this->notice ) ) ? $this->notice : ''; + + echo '
        '. $notice_text .'
        '; + + echo ( $this->args['show_form_warning'] ) ? '
        '. esc_html__( 'You have unsaved changes, save your changes!', 'wp_china_yes' ) .'
        ' : ''; + + echo ( $has_nav && $this->args['show_all_options'] ) ? '
        ' : ''; + + echo ( $this->args['show_search'] ) ? '' : ''; + + echo '
        '; + echo ''; + echo ( $this->args['show_reset_section'] ) ? '' : ''; + echo ( $this->args['show_reset_all'] ) ? '' : ''; + echo '
        '; + + echo '
        '; + + echo '
        '; + echo '
        '; + echo '
        '; + + echo '
        '; + + if ( $has_nav ) { + + echo ''; + + } + + echo '
        '; + + echo '
        '; + + foreach ( $this->pre_sections as $section ) { + + $section_onload = ( ! $has_nav ) ? ' wp_china_yes-onload' : ''; + $section_class = ( ! empty( $section['class'] ) ) ? ' '. $section['class'] : ''; + $section_icon = ( ! empty( $section['icon'] ) ) ? '' : ''; + $section_title = ( ! empty( $section['title'] ) ) ? $section['title'] : ''; + $section_parent = ( ! empty( $section['ptitle'] ) ) ? sanitize_title( $section['ptitle'] ) .'/' : ''; + $section_slug = ( ! empty( $section['title'] ) ) ? sanitize_title( $section_title ) : ''; + + echo '
        '; + echo ( $has_nav ) ? '

        '. $section_icon . $section_title .'

        ' : ''; + echo ( ! empty( $section['description'] ) ) ? '
        '. $section['description'] .'
        ' : ''; + + if ( ! empty( $section['fields'] ) ) { + + foreach ( $section['fields'] as $field ) { + + $is_field_error = $this->error_check( $field ); + + if ( ! empty( $is_field_error ) ) { + $field['_error'] = $is_field_error; + } + + if ( ! empty( $field['id'] ) ) { + $field['default'] = $this->get_default( $field ); + } + + $value = ( ! empty( $field['id'] ) && isset( $this->options[$field['id']] ) ) ? $this->options[$field['id']] : ''; + + WP_CHINA_YES::field( $field, $value, $this->unique, 'options' ); + + } + + } else { + + echo '
        '. esc_html__( 'No data available.', 'wp_china_yes' ) .'
        '; + + } + + echo '
        '; + + } + + echo '
        '; + + echo '
        '; + + echo '
        '; + + echo ( $has_nav && $nav_type === 'normal' ) ? '
        ' : ''; + + echo '
        '; + + if ( ! empty( $this->args['show_footer'] ) ) { + + echo ''; + + } + + echo '
        '; + + echo '
        '; + + echo '
        '; + + echo ( ! empty( $this->args['footer_after'] ) ) ? $this->args['footer_after'] : ''; + + echo '
        '; + + do_action( 'wp_china_yes_options_after' ); + + } + } +} diff --git a/framework/classes/fields.class.php b/framework/classes/fields.class.php new file mode 100644 index 0000000..3f91a1e --- /dev/null +++ b/framework/classes/fields.class.php @@ -0,0 +1,405 @@ +field = $field; + $this->value = $value; + $this->unique = $unique; + $this->where = $where; + $this->parent = $parent; + } + + public function field_name( $nested_name = '' ) { + + $field_id = ( ! empty( $this->field['id'] ) ) ? $this->field['id'] : ''; + $unique_id = ( ! empty( $this->unique ) ) ? $this->unique .'['. $field_id .']' : $field_id; + $field_name = ( ! empty( $this->field['name'] ) ) ? $this->field['name'] : $unique_id; + $tag_prefix = ( ! empty( $this->field['tag_prefix'] ) ) ? $this->field['tag_prefix'] : ''; + + if ( ! empty( $tag_prefix ) ) { + $nested_name = str_replace( '[', '['. $tag_prefix, $nested_name ); + } + + return $field_name . $nested_name; + + } + + public function field_attributes( $custom_atts = array() ) { + + $field_id = ( ! empty( $this->field['id'] ) ) ? $this->field['id'] : ''; + $attributes = ( ! empty( $this->field['attributes'] ) ) ? $this->field['attributes'] : array(); + + if ( ! empty( $field_id ) && empty( $attributes['data-depend-id'] ) ) { + $attributes['data-depend-id'] = $field_id; + } + + if ( ! empty( $this->field['placeholder'] ) ) { + $attributes['placeholder'] = $this->field['placeholder']; + } + + $attributes = wp_parse_args( $attributes, $custom_atts ); + + $atts = ''; + + if ( ! empty( $attributes ) ) { + foreach ( $attributes as $key => $value ) { + if ( $value === 'only-key' ) { + $atts .= ' '. esc_attr( $key ); + } else { + $atts .= ' '. esc_attr( $key ) . '="'. esc_attr( $value ) .'"'; + } + } + } + + return $atts; + + } + + public function field_before() { + return ( ! empty( $this->field['before'] ) ) ? '
        '. $this->field['before'] .'
        ' : ''; + } + + public function field_after() { + + $output = ( ! empty( $this->field['after'] ) ) ? '
        '. $this->field['after'] .'
        ' : ''; + $output .= ( ! empty( $this->field['desc'] ) ) ? '
        '. $this->field['desc'] .'
        ' : ''; + $output .= ( ! empty( $this->field['help'] ) ) ? '
        '. $this->field['help'] .'
        ' : ''; + $output .= ( ! empty( $this->field['_error'] ) ) ? '
        '. $this->field['_error'] .'
        ' : ''; + + return $output; + + } + + public static function field_data( $type = '', $term = false, $query_args = array() ) { + + $options = array(); + $array_search = false; + + // sanitize type name + if ( in_array( $type, array( 'page', 'pages' ) ) ) { + $option = 'page'; + } else if ( in_array( $type, array( 'post', 'posts' ) ) ) { + $option = 'post'; + } else if ( in_array( $type, array( 'category', 'categories' ) ) ) { + $option = 'category'; + } else if ( in_array( $type, array( 'tag', 'tags' ) ) ) { + $option = 'post_tag'; + } else if ( in_array( $type, array( 'menu', 'menus' ) ) ) { + $option = 'nav_menu'; + } else { + $option = ''; + } + + // switch type + switch( $type ) { + + case 'page': + case 'pages': + case 'post': + case 'posts': + + // term query required for ajax select + if ( ! empty( $term ) ) { + + $query = new WP_Query( wp_parse_args( $query_args, array( + 's' => $term, + 'post_type' => $option, + 'post_status' => 'publish', + 'posts_per_page' => 25, + ) ) ); + + } else { + + $query = new WP_Query( wp_parse_args( $query_args, array( + 'post_type' => $option, + 'post_status' => 'publish', + ) ) ); + + } + + if ( ! is_wp_error( $query ) && ! empty( $query->posts ) ) { + foreach ( $query->posts as $item ) { + $options[$item->ID] = $item->post_title; + } + } + + break; + + case 'category': + case 'categories': + case 'tag': + case 'tags': + case 'menu': + case 'menus': + + if ( ! empty( $term ) ) { + + $query = new WP_Term_Query( wp_parse_args( $query_args, array( + 'search' => $term, + 'taxonomy' => $option, + 'hide_empty' => false, + 'number' => 25, + ) ) ); + + } else { + + $query = new WP_Term_Query( wp_parse_args( $query_args, array( + 'taxonomy' => $option, + 'hide_empty' => false, + ) ) ); + + } + + if ( ! is_wp_error( $query ) && ! empty( $query->terms ) ) { + foreach ( $query->terms as $item ) { + $options[$item->term_id] = $item->name; + } + } + + break; + + case 'user': + case 'users': + + if ( ! empty( $term ) ) { + + $query = new WP_User_Query( array( + 'search' => '*'. $term .'*', + 'number' => 25, + 'orderby' => 'title', + 'order' => 'ASC', + 'fields' => array( 'display_name', 'ID' ) + ) ); + + } else { + + $query = new WP_User_Query( array( 'fields' => array( 'display_name', 'ID' ) ) ); + + } + + if ( ! is_wp_error( $query ) && ! empty( $query->get_results() ) ) { + foreach ( $query->get_results() as $item ) { + $options[$item->ID] = $item->display_name; + } + } + + break; + + case 'sidebar': + case 'sidebars': + + global $wp_registered_sidebars; + + if ( ! empty( $wp_registered_sidebars ) ) { + foreach ( $wp_registered_sidebars as $sidebar ) { + $options[$sidebar['id']] = $sidebar['name']; + } + } + + $array_search = true; + + break; + + case 'role': + case 'roles': + + global $wp_roles; + + if ( ! empty( $wp_roles ) ) { + if ( ! empty( $wp_roles->roles ) ) { + foreach ( $wp_roles->roles as $role_key => $role_value ) { + $options[$role_key] = $role_value['name']; + } + } + } + + $array_search = true; + + break; + + case 'post_type': + case 'post_types': + + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' ); + + if ( ! is_wp_error( $post_types ) && ! empty( $post_types ) ) { + foreach ( $post_types as $post_type ) { + $options[$post_type->name] = $post_type->labels->name; + } + } + + $array_search = true; + + break; + + case 'location': + case 'locations': + + $nav_menus = get_registered_nav_menus(); + + if ( ! is_wp_error( $nav_menus ) && ! empty( $nav_menus ) ) { + foreach ( $nav_menus as $nav_menu_key => $nav_menu_name ) { + $options[$nav_menu_key] = $nav_menu_name; + } + } + + $array_search = true; + + break; + + default: + + if ( is_callable( $type ) ) { + if ( ! empty( $term ) ) { + $options = call_user_func( $type, $query_args ); + } else { + $options = call_user_func( $type, $term, $query_args ); + } + } + + break; + + } + + // Array search by "term" + if ( ! empty( $term ) && ! empty( $options ) && ! empty( $array_search ) ) { + $options = preg_grep( '/'. $term .'/i', $options ); + } + + // Make multidimensional array for ajax search + if ( ! empty( $term ) && ! empty( $options ) ) { + $arr = array(); + foreach ( $options as $option_key => $option_value ) { + $arr[] = array( 'value' => $option_key, 'text' => $option_value ); + } + $options = $arr; + } + + return $options; + + } + + public function field_wp_query_data_title( $type, $values ) { + + $options = array(); + + if ( ! empty( $values ) && is_array( $values ) ) { + + foreach ( $values as $value ) { + + $options[$value] = ucfirst( $value ); + + switch( $type ) { + + case 'post': + case 'posts': + case 'page': + case 'pages': + + $title = get_the_title( $value ); + + if ( ! is_wp_error( $title ) && ! empty( $title ) ) { + $options[$value] = $title; + } + + break; + + case 'category': + case 'categories': + case 'tag': + case 'tags': + case 'menu': + case 'menus': + + $term = get_term( $value ); + + if ( ! is_wp_error( $term ) && ! empty( $term ) ) { + $options[$value] = $term->name; + } + + break; + + case 'user': + case 'users': + + $user = get_user_by( 'id', $value ); + + if ( ! is_wp_error( $user ) && ! empty( $user ) ) { + $options[$value] = $user->display_name; + } + + break; + + case 'sidebar': + case 'sidebars': + + global $wp_registered_sidebars; + + if ( ! empty( $wp_registered_sidebars[$value] ) ) { + $options[$value] = $wp_registered_sidebars[$value]['name']; + } + + break; + + case 'role': + case 'roles': + + global $wp_roles; + + if ( ! empty( $wp_roles ) && ! empty( $wp_roles->roles ) && ! empty( $wp_roles->roles[$value] ) ) { + $options[$value] = $wp_roles->roles[$value]['name']; + } + + break; + + case 'post_type': + case 'post_types': + + $post_types = get_post_types( array( 'show_in_nav_menus' => true ) ); + + if ( ! is_wp_error( $post_types ) && ! empty( $post_types ) && ! empty( $post_types[$value] ) ) { + $options[$value] = ucfirst( $value ); + } + + break; + + case 'location': + case 'locations': + + $nav_menus = get_registered_nav_menus(); + + if ( ! is_wp_error( $nav_menus ) && ! empty( $nav_menus ) && ! empty( $nav_menus[$value] ) ) { + $options[$value] = $nav_menus[$value]; + } + + break; + + default: + + if ( is_callable( $type .'_title' ) ) { + $options[$value] = call_user_func( $type .'_title', $value ); + } + + break; + + } + + } + + } + + return $options; + + } + + } +} diff --git a/framework/classes/setup.class.php b/framework/classes/setup.class.php new file mode 100644 index 0000000..4742edb --- /dev/null +++ b/framework/classes/setup.class.php @@ -0,0 +1,800 @@ + array(), + 'customize_options' => array(), + 'metabox_options' => array(), + 'nav_menu_options' => array(), + 'profile_options' => array(), + 'taxonomy_options' => array(), + 'widget_options' => array(), + 'comment_options' => array(), + 'shortcode_options' => array(), + ); + + // Shortcode instances + public static $shortcode_instances = array(); + + private static $instance = null; + + public static function init( $file = __FILE__, $premium = false ) { + + // Set file constant + self::$file = $file; + + // Set file constant + self::$premium = $premium; + + // Set constants + self::constants(); + + // Include files + self::includes(); + + if ( is_null( self::$instance ) ) { + self::$instance = new self(); + } + + return self::$instance; + + } + + // Initalize + public function __construct() { + + // Init action + do_action( 'wp_china_yes_init' ); + + // Setup textdomain + self::textdomain(); + + add_action( 'after_setup_theme', array( 'WP_CHINA_YES', 'setup' ) ); + add_action( 'init', array( 'WP_CHINA_YES', 'setup' ) ); + add_action( 'switch_theme', array( 'WP_CHINA_YES', 'setup' ) ); + add_action( 'admin_enqueue_scripts', array( 'WP_CHINA_YES', 'add_admin_enqueue_scripts' ) ); + add_action( 'wp_enqueue_scripts', array( 'WP_CHINA_YES', 'add_typography_enqueue_styles' ), 80 ); + add_action( 'wp_head', array( 'WP_CHINA_YES', 'add_custom_css' ), 80 ); + add_filter( 'admin_body_class', array( 'WP_CHINA_YES', 'add_admin_body_class' ) ); + + } + + // Setup frameworks + public static function setup() { + + // Setup admin option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Options' ) && ! empty( self::$args['admin_options'] ) ) { + foreach ( self::$args['admin_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Options::instance( $key, $params ); + + if ( ! empty( $value['show_in_customizer'] ) ) { + $value['output_css'] = false; + $value['enqueue_webfont'] = false; + self::$args['customize_options'][$key] = $value; + self::$inited[$key] = null; + } + + } + } + } + + // Setup customize option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Customize_Options' ) && ! empty( self::$args['customize_options'] ) ) { + foreach ( self::$args['customize_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Customize_Options::instance( $key, $params ); + + } + } + } + + // Setup metabox option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Metabox' ) && ! empty( self::$args['metabox_options'] ) ) { + foreach ( self::$args['metabox_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Metabox::instance( $key, $params ); + + } + } + } + + // Setup nav menu option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Nav_Menu_Options' ) && ! empty( self::$args['nav_menu_options'] ) ) { + foreach ( self::$args['nav_menu_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Nav_Menu_Options::instance( $key, $params ); + + } + } + } + + // Setup profile option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Profile_Options' ) && ! empty( self::$args['profile_options'] ) ) { + foreach ( self::$args['profile_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Profile_Options::instance( $key, $params ); + + } + } + } + + // Setup taxonomy option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Taxonomy_Options' ) && ! empty( self::$args['taxonomy_options'] ) ) { + $taxonomy = ( isset( $_GET['taxonomy'] ) ) ? sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ) : ''; + foreach ( self::$args['taxonomy_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Taxonomy_Options::instance( $key, $params ); + + } + } + } + + // Setup widget option framework + if ( class_exists( 'WP_CHINA_YES_Widget' ) && class_exists( 'WP_Widget_Factory' ) && ! empty( self::$args['widget_options'] ) ) { + $wp_widget_factory = new WP_Widget_Factory(); + global $wp_widget_factory; + foreach ( self::$args['widget_options'] as $key => $value ) { + if ( ! isset( self::$inited[$key] ) ) { + + self::$inited[$key] = true; + $wp_widget_factory->register( WP_CHINA_YES_Widget::instance( $key, $value ) ); + + } + } + } + + // Setup comment option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Comment_Metabox' ) && ! empty( self::$args['comment_options'] ) ) { + foreach ( self::$args['comment_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Comment_Metabox::instance( $key, $params ); + + } + } + } + + // Setup shortcode option framework + $params = array(); + if ( class_exists( 'WP_CHINA_YES_Shortcoder' ) && ! empty( self::$args['shortcode_options'] ) ) { + foreach ( self::$args['shortcode_options'] as $key => $value ) { + if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) { + + $params['args'] = $value; + $params['sections'] = self::$args['sections'][$key]; + self::$inited[$key] = true; + + WP_CHINA_YES_Shortcoder::instance( $key, $params ); + + } + } + + // Once editor setup for gutenberg and media buttons + if ( class_exists( 'WP_CHINA_YES_Shortcoder' ) && ! empty( self::$shortcode_instances ) ) { + foreach ( self::$shortcode_instances as $instance ) { + if ( ! empty( $instance['show_in_editor'] ) ) { + WP_CHINA_YES_Shortcoder::once_editor_setup(); + break; + } + } + } + + } + + do_action( 'wp_china_yes_loaded' ); + + } + + // Create options + public static function createOptions( $id, $args = array() ) { + self::$args['admin_options'][$id] = $args; + } + + // Create customize options + public static function createCustomizeOptions( $id, $args = array() ) { + self::$args['customize_options'][$id] = $args; + } + + // Create metabox options + public static function createMetabox( $id, $args = array() ) { + self::$args['metabox_options'][$id] = $args; + } + + // Create menu options + public static function createNavMenuOptions( $id, $args = array() ) { + self::$args['nav_menu_options'][$id] = $args; + } + + // Create shortcoder options + public static function createShortcoder( $id, $args = array() ) { + self::$args['shortcode_options'][$id] = $args; + } + + // Create taxonomy options + public static function createTaxonomyOptions( $id, $args = array() ) { + self::$args['taxonomy_options'][$id] = $args; + } + + // Create profile options + public static function createProfileOptions( $id, $args = array() ) { + self::$args['profile_options'][$id] = $args; + } + + // Create widget + public static function createWidget( $id, $args = array() ) { + self::$args['widget_options'][$id] = $args; + self::set_used_fields( $args ); + } + + // Create comment metabox + public static function createCommentMetabox( $id, $args = array() ) { + self::$args['comment_options'][$id] = $args; + } + + // Create section + public static function createSection( $id, $sections ) { + self::$args['sections'][$id][] = $sections; + self::set_used_fields( $sections ); + } + + // Set directory constants + public static function constants() { + + // We need this path-finder code for set URL of framework + $dirname = str_replace( '//', '/', wp_normalize_path( dirname( dirname( self::$file ) ) ) ); + $theme_dir = str_replace( '//', '/', wp_normalize_path( get_parent_theme_file_path() ) ); + $plugin_dir = str_replace( '//', '/', wp_normalize_path( WP_PLUGIN_DIR ) ); + $plugin_dir = str_replace( '/opt/bitnami', '/bitnami', $plugin_dir ); + $located_plugin = ( preg_match( '#'. self::sanitize_dirname( $plugin_dir ) .'#', self::sanitize_dirname( $dirname ) ) ) ? true : false; + $directory = ( $located_plugin ) ? $plugin_dir : $theme_dir; + $directory_uri = ( $located_plugin ) ? WP_PLUGIN_URL : get_parent_theme_file_uri(); + $foldername = str_replace( $directory, '', $dirname ); + $protocol_uri = ( is_ssl() ) ? 'https' : 'http'; + $directory_uri = set_url_scheme( $directory_uri, $protocol_uri ); + + self::$dir = $dirname; + self::$url = $directory_uri . $foldername; + + } + + // Include file helper + public static function include_plugin_file( $file, $load = true ) { + + $path = ''; + $file = ltrim( $file, '/' ); + $override = apply_filters( 'wp_china_yes_override', 'wp_china_yes-override' ); + + if ( file_exists( get_parent_theme_file_path( $override .'/'. $file ) ) ) { + $path = get_parent_theme_file_path( $override .'/'. $file ); + } elseif ( file_exists( get_theme_file_path( $override .'/'. $file ) ) ) { + $path = get_theme_file_path( $override .'/'. $file ); + } elseif ( file_exists( self::$dir .'/'. $override .'/'. $file ) ) { + $path = self::$dir .'/'. $override .'/'. $file; + } elseif ( file_exists( self::$dir .'/'. $file ) ) { + $path = self::$dir .'/'. $file; + } + + if ( ! empty( $path ) && ! empty( $file ) && $load ) { + + global $wp_query; + + if ( is_object( $wp_query ) && function_exists( 'load_template' ) ) { + + load_template( $path, true ); + + } else { + + require_once( $path ); + + } + + } else { + + return self::$dir .'/'. $file; + + } + + } + + // Is active plugin helper + public static function is_active_plugin( $file = '' ) { + return in_array( $file, (array) get_option( 'active_plugins', array() ) ); + } + + // Sanitize dirname + public static function sanitize_dirname( $dirname ) { + return preg_replace( '/[^A-Za-z]/', '', $dirname ); + } + + // Set url constant + public static function include_plugin_url( $file ) { + return esc_url( self::$url ) .'/'. ltrim( $file, '/' ); + } + + // Include files + public static function includes() { + + // Include common functions + self::include_plugin_file( 'functions/actions.php' ); + self::include_plugin_file( 'functions/helpers.php' ); + self::include_plugin_file( 'functions/sanitize.php' ); + self::include_plugin_file( 'functions/validate.php' ); + + // Include free version classes + self::include_plugin_file( 'classes/abstract.class.php' ); + self::include_plugin_file( 'classes/fields.class.php' ); + self::include_plugin_file( 'classes/admin-options.class.php' ); + + // Include premium version classes + if ( self::$premium ) { + self::include_plugin_file( 'classes/customize-options.class.php' ); + self::include_plugin_file( 'classes/metabox-options.class.php' ); + self::include_plugin_file( 'classes/nav-menu-options.class.php' ); + self::include_plugin_file( 'classes/profile-options.class.php' ); + self::include_plugin_file( 'classes/shortcode-options.class.php' ); + self::include_plugin_file( 'classes/taxonomy-options.class.php' ); + self::include_plugin_file( 'classes/widget-options.class.php' ); + self::include_plugin_file( 'classes/comment-options.class.php' ); + } + + // Include all framework fields + $fields = apply_filters( 'wp_china_yes_fields', array( + 'accordion', + 'background', + 'backup', + 'border', + 'button_set', + 'callback', + 'checkbox', + 'code_editor', + 'color', + 'color_group', + 'content', + 'date', + 'datetime', + 'dimensions', + 'fieldset', + 'gallery', + 'group', + 'heading', + 'icon', + 'image_select', + 'link', + 'link_color', + 'map', + 'media', + 'notice', + 'number', + 'palette', + 'radio', + 'repeater', + 'select', + 'slider', + 'sortable', + 'sorter', + 'spacing', + 'spinner', + 'subheading', + 'submessage', + 'switcher', + 'tabbed', + 'text', + 'textarea', + 'typography', + 'upload', + 'wp_editor', + ) ); + + if ( ! empty( $fields ) ) { + foreach ( $fields as $field ) { + if ( ! class_exists( 'WP_CHINA_YES_Field_'. $field ) && class_exists( 'WP_CHINA_YES_Fields' ) ) { + self::include_plugin_file( 'fields/'. $field .'/'. $field .'.php' ); + } + } + } + + } + + // Setup textdomain + public static function textdomain() { + load_textdomain( 'wp_china_yes', self::$dir .'/languages/'. get_locale() .'.mo' ); + } + + // Set all of used fields + public static function set_used_fields( $sections ) { + + if ( ! empty( $sections['fields'] ) ) { + + foreach ( $sections['fields'] as $field ) { + + if ( ! empty( $field['fields'] ) ) { + self::set_used_fields( $field ); + } + + if ( ! empty( $field['tabs'] ) ) { + self::set_used_fields( array( 'fields' => $field['tabs'] ) ); + } + + if ( ! empty( $field['accordions'] ) ) { + self::set_used_fields( array( 'fields' => $field['accordions'] ) ); + } + + if ( ! empty( $field['elements'] ) ) { + self::set_used_fields( array( 'fields' => $field['elements'] ) ); + } + + if ( ! empty( $field['type'] ) ) { + self::$fields[$field['type']] = $field; + } + + } + + } + + } + + // Enqueue admin and fields styles and scripts + public static function add_admin_enqueue_scripts() { + + if ( ! self::$enqueue ) { + + // Loads scripts and styles only when needed + $wpscreen = get_current_screen(); + + if ( ! empty( self::$args['admin_options'] ) ) { + foreach ( self::$args['admin_options'] as $argument ) { + if ( substr( $wpscreen->id, -strlen( $argument['menu_slug'] ) ) === $argument['menu_slug'] ) { + self::$enqueue = true; + } + } + } + + if ( ! empty( self::$args['metabox_options'] ) ) { + foreach ( self::$args['metabox_options'] as $argument ) { + if ( in_array( $wpscreen->post_type, (array) $argument['post_type'] ) ) { + self::$enqueue = true; + } + } + } + + if ( ! empty( self::$args['taxonomy_options'] ) ) { + foreach ( self::$args['taxonomy_options'] as $argument ) { + if ( in_array( $wpscreen->taxonomy, (array) $argument['taxonomy'] ) ) { + self::$enqueue = true; + } + } + } + + if ( ! empty( self::$shortcode_instances ) ) { + foreach ( self::$shortcode_instances as $argument ) { + if ( ( $argument['show_in_editor'] && $wpscreen->base === 'post' ) || $argument['show_in_custom'] ) { + self::$enqueue = true; + } + } + } + + if ( ! empty( self::$args['widget_options'] ) && ( $wpscreen->id === 'widgets' || $wpscreen->id === 'customize' ) ) { + self::$enqueue = true; + } + + if ( ! empty( self::$args['customize_options'] ) && $wpscreen->id === 'customize' ) { + self::$enqueue = true; + } + + if ( ! empty( self::$args['nav_menu_options'] ) && $wpscreen->id === 'nav-menus' ) { + self::$enqueue = true; + } + + if ( ! empty( self::$args['profile_options'] ) && ( $wpscreen->id === 'profile' || $wpscreen->id === 'user-edit' ) ) { + self::$enqueue = true; + } + + if ( ! empty( self::$args['comment_options'] ) && $wpscreen->id === 'comment' ) { + self::$enqueue = true; + } + + } + + if ( ! apply_filters( 'wp_china_yes_enqueue_assets', self::$enqueue ) ) { + return; + } + + // Admin utilities + wp_enqueue_media(); + + // Wp color picker + wp_enqueue_style( 'wp-color-picker' ); + wp_enqueue_script( 'wp-color-picker' ); + + // Font awesome 4 and 5 loader + if ( apply_filters( 'wp_china_yes_fa4', false ) ) { + wp_enqueue_style( 'wp_china_yes-fa', 'https://jsd.admincdn.com/npm/font-awesome@4.7.0/css/font-awesome.min.css', array(), '4.7.0', 'all' ); + } else { + wp_enqueue_style( 'wp_china_yes-fa5', 'https://jsd.admincdn.com/npm/@fortawesome/fontawesome-free@5.15.4/css/all.min.css', array(), '5.15.5', 'all' ); + wp_enqueue_style( 'wp_china_yes-fa5-v4-shims', 'https://jsd.admincdn.com/npm/@fortawesome/fontawesome-free@5.15.4/css/v4-shims.min.css', array(), '5.15.5', 'all' ); + } + + // Check for developer mode + $min = ( self::$premium && SCRIPT_DEBUG ) ? '' : '.min'; + + // Main style + wp_enqueue_style( 'wp_china_yes', self::include_plugin_url( 'assets/css/style'. $min .'.css' ), array(), self::$version, 'all' ); + + // Main RTL styles + if ( is_rtl() ) { + wp_enqueue_style( 'wp_china_yes-rtl', self::include_plugin_url( 'assets/css/style-rtl'. $min .'.css' ), array(), self::$version, 'all' ); + } + + // Main scripts + wp_enqueue_script( 'wp_china_yes-plugins', self::include_plugin_url( 'assets/js/plugins'. $min .'.js' ), array(), self::$version, true ); + wp_enqueue_script( 'wp_china_yes', self::include_plugin_url( 'assets/js/main'. $min .'.js' ), array( 'wp_china_yes-plugins' ), self::$version, true ); + + // Main variables + wp_localize_script( 'wp_china_yes', 'wp_china_yes_vars', array( + 'color_palette' => apply_filters( 'wp_china_yes_color_palette', array() ), + 'i18n' => array( + 'confirm' => esc_html__( 'Are you sure?', 'wp_china_yes' ), + 'typing_text' => esc_html__( 'Please enter %s or more characters', 'wp_china_yes' ), + 'searching_text' => esc_html__( 'Searching...', 'wp_china_yes' ), + 'no_results_text' => esc_html__( 'No results found.', 'wp_china_yes' ), + ), + ) ); + + // Enqueue fields scripts and styles + $enqueued = array(); + + if ( ! empty( self::$fields ) ) { + foreach ( self::$fields as $field ) { + if ( ! empty( $field['type'] ) ) { + $classname = 'WP_CHINA_YES_Field_' . $field['type']; + if ( class_exists( $classname ) && method_exists( $classname, 'enqueue' ) ) { + $instance = new $classname( $field ); + if ( method_exists( $classname, 'enqueue' ) ) { + $instance->enqueue(); + } + unset( $instance ); + } + } + } + } + + do_action( 'wp_china_yes_enqueue' ); + + } + + // Add typography enqueue styles to front page + public static function add_typography_enqueue_styles() { + + if ( ! empty( self::$webfonts ) ) { + + if ( ! empty( self::$webfonts['enqueue'] ) ) { + + $query = array(); + $fonts = array(); + + foreach ( self::$webfonts['enqueue'] as $family => $styles ) { + $fonts[] = $family . ( ( ! empty( $styles ) ) ? ':'. implode( ',', $styles ) : '' ); + } + + if ( ! empty( $fonts ) ) { + $query['family'] = implode( '%7C', $fonts ); + } + + if ( ! empty( self::$subsets ) ) { + $query['subset'] = implode( ',', self::$subsets ); + } + + $query['display'] = 'swap'; + + wp_enqueue_style( 'wp_china_yes-google-web-fonts', esc_url( add_query_arg( $query, '//fonts.googleapis.com/css' ) ), array(), null ); + + } + + if ( ! empty( self::$webfonts['async'] ) ) { + + $fonts = array(); + + foreach ( self::$webfonts['async'] as $family => $styles ) { + $fonts[] = $family . ( ( ! empty( $styles ) ) ? ':'. implode( ',', $styles ) : '' ); + } + + wp_enqueue_script( 'wp_china_yes-google-web-fonts', esc_url( '//ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js' ), array(), null ); + + wp_localize_script( 'wp_china_yes-google-web-fonts', 'WebFontConfig', array( 'google' => array( 'families' => $fonts ) ) ); + + } + + } + + } + + // Add admin body class + public static function add_admin_body_class( $classes ) { + + if ( apply_filters( 'wp_china_yes_fa4', false ) ) { + $classes .= 'wp_china_yes-fa5-shims'; + } + + return $classes; + + } + + // Add custom css to front page + public static function add_custom_css() { + + if ( ! empty( self::$css ) ) { + echo ''; + } + + } + + // Add a new framework field + public static function field( $field = array(), $value = '', $unique = '', $where = '', $parent = '' ) { + + // Check for unallow fields + if ( ! empty( $field['_notice'] ) ) { + + $field_type = $field['type']; + + $field = array(); + $field['content'] = esc_html__( 'Oops! Not allowed.', 'wp_china_yes' ) .' ('. $field_type .')'; + $field['type'] = 'notice'; + $field['style'] = 'danger'; + + } + + $depend = ''; + $visible = ''; + $unique = ( ! empty( $unique ) ) ? $unique : ''; + $class = ( ! empty( $field['class'] ) ) ? ' ' . esc_attr( $field['class'] ) : ''; + $is_pseudo = ( ! empty( $field['pseudo'] ) ) ? ' wp_china_yes-pseudo-field' : ''; + $field_type = ( ! empty( $field['type'] ) ) ? esc_attr( $field['type'] ) : ''; + + if ( ! empty( $field['dependency'] ) ) { + + $dependency = $field['dependency']; + $depend_visible = ''; + $data_controller = ''; + $data_condition = ''; + $data_value = ''; + $data_global = ''; + + if ( is_array( $dependency[0] ) ) { + $data_controller = implode( '|', array_column( $dependency, 0 ) ); + $data_condition = implode( '|', array_column( $dependency, 1 ) ); + $data_value = implode( '|', array_column( $dependency, 2 ) ); + $data_global = implode( '|', array_column( $dependency, 3 ) ); + $depend_visible = implode( '|', array_column( $dependency, 4 ) ); + } else { + $data_controller = ( ! empty( $dependency[0] ) ) ? $dependency[0] : ''; + $data_condition = ( ! empty( $dependency[1] ) ) ? $dependency[1] : ''; + $data_value = ( ! empty( $dependency[2] ) ) ? $dependency[2] : ''; + $data_global = ( ! empty( $dependency[3] ) ) ? $dependency[3] : ''; + $depend_visible = ( ! empty( $dependency[4] ) ) ? $dependency[4] : ''; + } + + $depend .= ' data-controller="'. esc_attr( $data_controller ) .'"'; + $depend .= ' data-condition="'. esc_attr( $data_condition ) .'"'; + $depend .= ' data-value="'. esc_attr( $data_value ) .'"'; + $depend .= ( ! empty( $data_global ) ) ? ' data-depend-global="true"' : ''; + + $visible = ( ! empty( $depend_visible ) ) ? ' wp_china_yes-depend-visible' : ' wp_china_yes-depend-hidden'; + + } + + // These attributes has been sanitized above. + echo '
        '; + + if ( ! empty( $field_type ) ) { + + if ( ! empty( $field['title'] ) ) { + echo '
        '; + echo '

        '. $field['title'] .'

        '; + echo ( ! empty( $field['subtitle'] ) ) ? '
        '. $field['subtitle'] .'
        ' : ''; + echo '
        '; + } + + echo ( ! empty( $field['title'] ) ) ? '
        ' : ''; + + $value = ( ! isset( $value ) && isset( $field['default'] ) ) ? $field['default'] : $value; + $value = ( isset( $field['value'] ) ) ? $field['value'] : $value; + + $classname = 'WP_CHINA_YES_Field_'. $field_type; + + if ( class_exists( $classname ) ) { + $instance = new $classname( $field, $value, $unique, $where, $parent ); + $instance->render(); + } else { + echo '

        '. esc_html__( 'Field not found!', 'wp_china_yes' ) .'

        '; + } + + } else { + echo '

        '. esc_html__( 'Field not found!', 'wp_china_yes' ) .'

        '; + } + + echo ( ! empty( $field['title'] ) ) ? '
        ' : ''; + echo '
        '; + echo '
        '; + + } + + } + +} + +WP_CHINA_YES_Setup::init( __FILE__, false ); + +/** + * + * Extended Setup Class for Shortland + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! class_exists( 'WP_CHINA_YES' ) ) { + class WP_CHINA_YES extends WP_CHINA_YES_Setup{} +} diff --git a/framework/fields/accordion/accordion.php b/framework/fields/accordion/accordion.php new file mode 100644 index 0000000..f07dc0a --- /dev/null +++ b/framework/fields/accordion/accordion.php @@ -0,0 +1,64 @@ +field_before(); + + echo '
        '; + + foreach ( $this->field['accordions'] as $key => $accordion ) { + + echo '
        '; + + $icon = ( ! empty( $accordion['icon'] ) ) ? 'wp_china_yes--icon '. $accordion['icon'] : 'wp_china_yes-accordion-icon fas fa-angle-right'; + + echo '

        '; + echo ''; + echo esc_html( $accordion['title'] ); + echo '

        '; + + echo '
        '; + + foreach ( $accordion['fields'] as $field ) { + + if ( in_array( $field['type'], $unallows ) ) { $field['_notice'] = true; } + + $field_id = ( isset( $field['id'] ) ) ? $field['id'] : ''; + $field_default = ( isset( $field['default'] ) ) ? $field['default'] : ''; + $field_value = ( isset( $this->value[$field_id] ) ) ? $this->value[$field_id] : $field_default; + $unique_id = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .']' : $this->field['id']; + + WP_CHINA_YES::field( $field, $field_value, $unique_id, 'field/accordion' ); + + } + + echo '
        '; + + echo '
        '; + + } + + echo '
        '; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/background/background.php b/framework/fields/background/background.php new file mode 100644 index 0000000..c5601d3 --- /dev/null +++ b/framework/fields/background/background.php @@ -0,0 +1,340 @@ +field, array( + 'background_color' => true, + 'background_image' => true, + 'background_position' => true, + 'background_repeat' => true, + 'background_attachment' => true, + 'background_size' => true, + 'background_origin' => false, + 'background_clip' => false, + 'background_blend_mode' => false, + 'background_gradient' => false, + 'background_gradient_color' => true, + 'background_gradient_direction' => true, + 'background_image_preview' => true, + 'background_auto_attributes' => false, + 'compact' => false, + 'background_image_library' => 'image', + 'background_image_placeholder' => esc_html__( 'Not selected', 'wp_china_yes' ), + ) ); + + if ( $args['compact'] ) { + $args['background_color'] = false; + $args['background_auto_attributes'] = true; + } + + $default_value = array( + 'background-color' => '', + 'background-image' => '', + 'background-position' => '', + 'background-repeat' => '', + 'background-attachment' => '', + 'background-size' => '', + 'background-origin' => '', + 'background-clip' => '', + 'background-blend-mode' => '', + 'background-gradient-color' => '', + 'background-gradient-direction' => '', + ); + + $default_value = ( ! empty( $this->field['default'] ) ) ? wp_parse_args( $this->field['default'], $default_value ) : $default_value; + + $this->value = wp_parse_args( $this->value, $default_value ); + + echo $this->field_before(); + + echo '
        '; + + // + // Background Color + if ( ! empty( $args['background_color'] ) ) { + + echo '
        '; + + echo ( ! empty( $args['background_gradient'] ) ) ? '
        '. esc_html__( 'From', 'wp_china_yes' ) .'
        ' : ''; + + WP_CHINA_YES::field( array( + 'id' => 'background-color', + 'type' => 'color', + 'default' => $default_value['background-color'], + ), $this->value['background-color'], $this->field_name(), 'field/background' ); + + echo '
        '; + + } + + // + // Background Gradient Color + if ( ! empty( $args['background_gradient_color'] ) && ! empty( $args['background_gradient'] ) ) { + + echo '
        '; + + echo ( ! empty( $args['background_gradient'] ) ) ? '
        '. esc_html__( 'To', 'wp_china_yes' ) .'
        ' : ''; + + WP_CHINA_YES::field( array( + 'id' => 'background-gradient-color', + 'type' => 'color', + 'default' => $default_value['background-gradient-color'], + ), $this->value['background-gradient-color'], $this->field_name(), 'field/background' ); + + echo '
        '; + + } + + // + // Background Gradient Direction + if ( ! empty( $args['background_gradient_direction'] ) && ! empty( $args['background_gradient'] ) ) { + + echo '
        '; + + echo ( ! empty( $args['background_gradient'] ) ) ? '
        '. esc_html__( 'Direction', 'wp_china_yes' ) .'
        ' : ''; + + WP_CHINA_YES::field( array( + 'id' => 'background-gradient-direction', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Gradient Direction', 'wp_china_yes' ), + 'to bottom' => esc_html__( '⇓ top to bottom', 'wp_china_yes' ), + 'to right' => esc_html__( '⇒ left to right', 'wp_china_yes' ), + '135deg' => esc_html__( '⇘ corner top to right', 'wp_china_yes' ), + '-135deg' => esc_html__( '⇙ corner top to left', 'wp_china_yes' ), + ), + ), $this->value['background-gradient-direction'], $this->field_name(), 'field/background' ); + + echo '
        '; + + } + + echo '
        '; + + // + // Background Image + if ( ! empty( $args['background_image'] ) ) { + + echo '
        '; + + WP_CHINA_YES::field( array( + 'id' => 'background-image', + 'type' => 'media', + 'class' => 'wp_china_yes-assign-field-background', + 'library' => $args['background_image_library'], + 'preview' => $args['background_image_preview'], + 'placeholder' => $args['background_image_placeholder'], + 'attributes' => array( 'data-depend-id' => $this->field['id'] ), + ), $this->value['background-image'], $this->field_name(), 'field/background' ); + + echo '
        '; + + } + + $auto_class = ( ! empty( $args['background_auto_attributes'] ) ) ? ' wp_china_yes--auto-attributes' : ''; + $hidden_class = ( ! empty( $args['background_auto_attributes'] ) && empty( $this->value['background-image']['url'] ) ) ? ' wp_china_yes--attributes-hidden' : ''; + + echo '
        '; + + // + // Background Position + if ( ! empty( $args['background_position'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-position', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Position', 'wp_china_yes' ), + 'left top' => esc_html__( 'Left Top', 'wp_china_yes' ), + 'left center' => esc_html__( 'Left Center', 'wp_china_yes' ), + 'left bottom' => esc_html__( 'Left Bottom', 'wp_china_yes' ), + 'center top' => esc_html__( 'Center Top', 'wp_china_yes' ), + 'center center' => esc_html__( 'Center Center', 'wp_china_yes' ), + 'center bottom' => esc_html__( 'Center Bottom', 'wp_china_yes' ), + 'right top' => esc_html__( 'Right Top', 'wp_china_yes' ), + 'right center' => esc_html__( 'Right Center', 'wp_china_yes' ), + 'right bottom' => esc_html__( 'Right Bottom', 'wp_china_yes' ), + ), + ), $this->value['background-position'], $this->field_name(), 'field/background' ); + + } + + // + // Background Repeat + if ( ! empty( $args['background_repeat'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-repeat', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Repeat', 'wp_china_yes' ), + 'repeat' => esc_html__( 'Repeat', 'wp_china_yes' ), + 'no-repeat' => esc_html__( 'No Repeat', 'wp_china_yes' ), + 'repeat-x' => esc_html__( 'Repeat Horizontally', 'wp_china_yes' ), + 'repeat-y' => esc_html__( 'Repeat Vertically', 'wp_china_yes' ), + ), + ), $this->value['background-repeat'], $this->field_name(), 'field/background' ); + + } + + // + // Background Attachment + if ( ! empty( $args['background_attachment'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-attachment', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Attachment', 'wp_china_yes' ), + 'scroll' => esc_html__( 'Scroll', 'wp_china_yes' ), + 'fixed' => esc_html__( 'Fixed', 'wp_china_yes' ), + ), + ), $this->value['background-attachment'], $this->field_name(), 'field/background' ); + + } + + // + // Background Size + if ( ! empty( $args['background_size'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-size', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Size', 'wp_china_yes' ), + 'cover' => esc_html__( 'Cover', 'wp_china_yes' ), + 'contain' => esc_html__( 'Contain', 'wp_china_yes' ), + 'auto' => esc_html__( 'Auto', 'wp_china_yes' ), + ), + ), $this->value['background-size'], $this->field_name(), 'field/background' ); + + } + + // + // Background Origin + if ( ! empty( $args['background_origin'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-origin', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Origin', 'wp_china_yes' ), + 'padding-box' => esc_html__( 'Padding Box', 'wp_china_yes' ), + 'border-box' => esc_html__( 'Border Box', 'wp_china_yes' ), + 'content-box' => esc_html__( 'Content Box', 'wp_china_yes' ), + ), + ), $this->value['background-origin'], $this->field_name(), 'field/background' ); + + } + + // + // Background Clip + if ( ! empty( $args['background_clip'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-clip', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Clip', 'wp_china_yes' ), + 'border-box' => esc_html__( 'Border Box', 'wp_china_yes' ), + 'padding-box' => esc_html__( 'Padding Box', 'wp_china_yes' ), + 'content-box' => esc_html__( 'Content Box', 'wp_china_yes' ), + ), + ), $this->value['background-clip'], $this->field_name(), 'field/background' ); + + } + + // + // Background Blend Mode + if ( ! empty( $args['background_blend_mode'] ) ) { + + WP_CHINA_YES::field( array( + 'id' => 'background-blend-mode', + 'type' => 'select', + 'options' => array( + '' => esc_html__( 'Background Blend Mode', 'wp_china_yes' ), + 'normal' => esc_html__( 'Normal', 'wp_china_yes' ), + 'multiply' => esc_html__( 'Multiply', 'wp_china_yes' ), + 'screen' => esc_html__( 'Screen', 'wp_china_yes' ), + 'overlay' => esc_html__( 'Overlay', 'wp_china_yes' ), + 'darken' => esc_html__( 'Darken', 'wp_china_yes' ), + 'lighten' => esc_html__( 'Lighten', 'wp_china_yes' ), + 'color-dodge' => esc_html__( 'Color Dodge', 'wp_china_yes' ), + 'saturation' => esc_html__( 'Saturation', 'wp_china_yes' ), + 'color' => esc_html__( 'Color', 'wp_china_yes' ), + 'luminosity' => esc_html__( 'Luminosity', 'wp_china_yes' ), + ), + ), $this->value['background-blend-mode'], $this->field_name(), 'field/background' ); + + } + + echo '
        '; + + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $bg_image = array(); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $element = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output']; + + // Background image and gradient + $background_color = ( ! empty( $this->value['background-color'] ) ) ? $this->value['background-color'] : ''; + $background_gd_color = ( ! empty( $this->value['background-gradient-color'] ) ) ? $this->value['background-gradient-color'] : ''; + $background_gd_direction = ( ! empty( $this->value['background-gradient-direction'] ) ) ? $this->value['background-gradient-direction'] : ''; + $background_image = ( ! empty( $this->value['background-image']['url'] ) ) ? $this->value['background-image']['url'] : ''; + + + if ( $background_color && $background_gd_color ) { + $gd_direction = ( $background_gd_direction ) ? $background_gd_direction .',' : ''; + $bg_image[] = 'linear-gradient('. $gd_direction . $background_color .','. $background_gd_color .')'; + unset( $this->value['background-color'] ); + } + + if ( $background_image ) { + $bg_image[] = 'url('. $background_image .')'; + } + + if ( ! empty( $bg_image ) ) { + $output .= 'background-image:'. implode( ',', $bg_image ) . $important .';'; + } + + // Common background properties + $properties = array( 'color', 'position', 'repeat', 'attachment', 'size', 'origin', 'clip', 'blend-mode' ); + + foreach ( $properties as $property ) { + $property = 'background-'. $property; + if ( ! empty( $this->value[$property] ) ) { + $output .= $property .':'. $this->value[$property] . $important .';'; + } + } + + if ( $output ) { + $output = $element .'{'. $output .'}'; + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/backup/backup.php b/framework/fields/backup/backup.php new file mode 100644 index 0000000..f829640 --- /dev/null +++ b/framework/fields/backup/backup.php @@ -0,0 +1,38 @@ +unique; + $nonce = wp_create_nonce( 'wp_china_yes_backup_nonce' ); + $export = add_query_arg( array( 'action' => 'wp_china_yes-export', 'unique' => $unique, 'nonce' => $nonce ), admin_url( 'admin-ajax.php' ) ); + + echo $this->field_before(); + + echo ''; + echo ''; + echo '
        '; + echo ''; + echo ''. esc_html__( 'Export & Download', 'wp_china_yes' ) .''; + echo '
        '; + echo ''; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/border/border.php b/framework/fields/border/border.php new file mode 100644 index 0000000..e055449 --- /dev/null +++ b/framework/fields/border/border.php @@ -0,0 +1,176 @@ +field, array( + 'top_icon' => '', + 'left_icon' => '', + 'bottom_icon' => '', + 'right_icon' => '', + 'all_icon' => '', + 'top_placeholder' => esc_html__( 'top', 'wp_china_yes' ), + 'right_placeholder' => esc_html__( 'right', 'wp_china_yes' ), + 'bottom_placeholder' => esc_html__( 'bottom', 'wp_china_yes' ), + 'left_placeholder' => esc_html__( 'left', 'wp_china_yes' ), + 'all_placeholder' => esc_html__( 'all', 'wp_china_yes' ), + 'top' => true, + 'left' => true, + 'bottom' => true, + 'right' => true, + 'all' => false, + 'color' => true, + 'style' => true, + 'unit' => 'px', + ) ); + + $default_value = array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + 'color' => '', + 'style' => 'solid', + 'all' => '', + ); + + $border_props = array( + 'solid' => esc_html__( 'Solid', 'wp_china_yes' ), + 'dashed' => esc_html__( 'Dashed', 'wp_china_yes' ), + 'dotted' => esc_html__( 'Dotted', 'wp_china_yes' ), + 'double' => esc_html__( 'Double', 'wp_china_yes' ), + 'inset' => esc_html__( 'Inset', 'wp_china_yes' ), + 'outset' => esc_html__( 'Outset', 'wp_china_yes' ), + 'groove' => esc_html__( 'Groove', 'wp_china_yes' ), + 'ridge' => esc_html__( 'ridge', 'wp_china_yes' ), + 'none' => esc_html__( 'None', 'wp_china_yes' ) + ); + + $default_value = ( ! empty( $this->field['default'] ) ) ? wp_parse_args( $this->field['default'], $default_value ) : $default_value; + + $value = wp_parse_args( $this->value, $default_value ); + + echo $this->field_before(); + + echo '
        '; + + if ( ! empty( $args['all'] ) ) { + + $placeholder = ( ! empty( $args['all_placeholder'] ) ) ? ' placeholder="'. esc_attr( $args['all_placeholder'] ) .'"' : ''; + + echo '
        '; + echo ( ! empty( $args['all_icon'] ) ) ? ''. $args['all_icon'] .'' : ''; + echo ''; + echo ( ! empty( $args['unit'] ) ) ? ''. esc_attr( $args['unit'] ) .'' : ''; + echo '
        '; + + } else { + + $properties = array(); + + foreach ( array( 'top', 'right', 'bottom', 'left' ) as $prop ) { + if ( ! empty( $args[$prop] ) ) { + $properties[] = $prop; + } + } + + $properties = ( $properties === array( 'right', 'left' ) ) ? array_reverse( $properties ) : $properties; + + foreach ( $properties as $property ) { + + $placeholder = ( ! empty( $args[$property.'_placeholder'] ) ) ? ' placeholder="'. esc_attr( $args[$property.'_placeholder'] ) .'"' : ''; + + echo '
        '; + echo ( ! empty( $args[$property.'_icon'] ) ) ? ''. $args[$property.'_icon'] .'' : ''; + echo ''; + echo ( ! empty( $args['unit'] ) ) ? ''. esc_attr( $args['unit'] ) .'' : ''; + echo '
        '; + + } + + } + + if ( ! empty( $args['style'] ) ) { + echo '
        '; + echo ''; + echo '
        '; + } + + echo '
        '; + + if ( ! empty( $args['color'] ) ) { + $default_color_attr = ( ! empty( $default_value['color'] ) ) ? ' data-default-color="'. esc_attr( $default_value['color'] ) .'"' : ''; + echo '
        '; + echo '
        '; + echo ''; + echo '
        '; + echo '
        '; + } + + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $unit = ( ! empty( $this->value['unit'] ) ) ? $this->value['unit'] : 'px'; + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $element = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output']; + + // properties + $top = ( isset( $this->value['top'] ) && $this->value['top'] !== '' ) ? $this->value['top'] : ''; + $right = ( isset( $this->value['right'] ) && $this->value['right'] !== '' ) ? $this->value['right'] : ''; + $bottom = ( isset( $this->value['bottom'] ) && $this->value['bottom'] !== '' ) ? $this->value['bottom'] : ''; + $left = ( isset( $this->value['left'] ) && $this->value['left'] !== '' ) ? $this->value['left'] : ''; + $style = ( isset( $this->value['style'] ) && $this->value['style'] !== '' ) ? $this->value['style'] : ''; + $color = ( isset( $this->value['color'] ) && $this->value['color'] !== '' ) ? $this->value['color'] : ''; + $all = ( isset( $this->value['all'] ) && $this->value['all'] !== '' ) ? $this->value['all'] : ''; + + if ( ! empty( $this->field['all'] ) && ( $all !== '' || $color !== '' ) ) { + + $output = $element .'{'; + $output .= ( $all !== '' ) ? 'border-width:'. $all . $unit . $important .';' : ''; + $output .= ( $color !== '' ) ? 'border-color:'. $color . $important .';' : ''; + $output .= ( $style !== '' ) ? 'border-style:'. $style . $important .';' : ''; + $output .= '}'; + + } else if ( $top !== '' || $right !== '' || $bottom !== '' || $left !== '' || $color !== '' ) { + + $output = $element .'{'; + $output .= ( $top !== '' ) ? 'border-top-width:'. $top . $unit . $important .';' : ''; + $output .= ( $right !== '' ) ? 'border-right-width:'. $right . $unit . $important .';' : ''; + $output .= ( $bottom !== '' ) ? 'border-bottom-width:'. $bottom . $unit . $important .';' : ''; + $output .= ( $left !== '' ) ? 'border-left-width:'. $left . $unit . $important .';' : ''; + $output .= ( $color !== '' ) ? 'border-color:'. $color . $important .';' : ''; + $output .= ( $style !== '' ) ? 'border-style:'. $style . $important .';' : ''; + $output .= '}'; + + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/button_set/button_set.php b/framework/fields/button_set/button_set.php new file mode 100644 index 0000000..16ff7b5 --- /dev/null +++ b/framework/fields/button_set/button_set.php @@ -0,0 +1,67 @@ +field, array( + 'multiple' => false, + 'options' => array(), + 'query_args' => array(), + ) ); + + $value = ( is_array( $this->value ) ) ? $this->value : array_filter( (array) $this->value ); + + echo $this->field_before(); + + if ( isset( $this->field['options'] ) ) { + + $options = $this->field['options']; + $options = ( is_array( $options ) ) ? $options : array_filter( $this->field_data( $options, false, $args['query_args'] ) ); + + if ( is_array( $options ) && ! empty( $options ) ) { + + echo '
        '; + + foreach ( $options as $key => $option ) { + + $type = ( $args['multiple'] ) ? 'checkbox' : 'radio'; + $extra = ( $args['multiple'] ) ? '[]' : ''; + $active = ( in_array( $key, $value ) || ( empty( $value ) && empty( $key ) ) ) ? ' wp_china_yes--active' : ''; + $checked = ( in_array( $key, $value ) || ( empty( $value ) && empty( $key ) ) ) ? ' checked' : ''; + + echo '
        '; + echo 'field_attributes() . esc_attr( $checked ) .'/>'; + echo $option; + echo '
        '; + + } + + echo '
        '; + + } else { + + echo ( ! empty( $this->field['empty_message'] ) ) ? esc_attr( $this->field['empty_message'] ) : esc_html__( 'No data available.', 'wp_china_yes' ); + + } + + } + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/callback/callback.php b/framework/fields/callback/callback.php new file mode 100644 index 0000000..d3ced5c --- /dev/null +++ b/framework/fields/callback/callback.php @@ -0,0 +1,31 @@ +field['function'] ) && is_callable( $this->field['function'] ) ) { + + $args = ( isset( $this->field['args'] ) ) ? $this->field['args'] : null; + + call_user_func( $this->field['function'], $args ); + + } + + } + + } +} + diff --git a/framework/fields/checkbox/checkbox.php b/framework/fields/checkbox/checkbox.php new file mode 100644 index 0000000..e8ea23b --- /dev/null +++ b/framework/fields/checkbox/checkbox.php @@ -0,0 +1,101 @@ +field, array( + 'inline' => false, + 'query_args' => array(), + 'check_all' => false, + 'check_all_text' => esc_html__( 'Check/Uncheck All' ), + ) ); + + $inline_class = ( $args['inline'] ) ? ' class="wp_china_yes--inline-list"' : ''; + + echo $this->field_before(); + + if ( isset( $this->field['options'] ) ) { + + $value = ( is_array( $this->value ) ) ? $this->value : array_filter( (array) $this->value ); + $options = $this->field['options']; + $options = ( is_array( $options ) ) ? $options : array_filter( $this->field_data( $options, false, $args['query_args'] ) ); + + if ( is_array( $options ) && ! empty( $options ) ) { + + echo ''; + + foreach ( $options as $option_key => $option_value ) { + + if ( is_array( $option_value ) && ! empty( $option_value ) ) { + + echo '
      • '; + echo '
          '; + echo '
        • '. esc_attr( $option_key ) .'
        • '; + foreach ( $option_value as $sub_key => $sub_value ) { + $checked = ( in_array( $sub_key, $value ) ) ? ' checked' : ''; + echo '
        • '; + echo ''; + echo '
        • '; + } + echo '
        '; + echo '
      • '; + + } else { + + $checked = ( in_array( $option_key, $value ) ) ? ' checked' : ''; + + echo '
      • '; + echo ''; + echo '
      • '; + + } + + } + + echo ''; + + if ( $args['check_all'] ) { + echo '
        '. esc_html( $args['check_all_text'] ) .'
        '; + } + + } else { + + echo ( ! empty( $this->field['empty_message'] ) ) ? esc_attr( $this->field['empty_message'] ) : esc_html__( 'No data available.', 'wp_china_yes' ); + + } + + } else { + + echo ''; + + } + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/code_editor/code_editor.php b/framework/fields/code_editor/code_editor.php new file mode 100644 index 0000000..4095af5 --- /dev/null +++ b/framework/fields/code_editor/code_editor.php @@ -0,0 +1,58 @@ + 2, + 'lineNumbers' => true, + 'theme' => 'default', + 'mode' => 'htmlmixed', + 'cdnURL' => $this->cdn_url . $this->version, + ); + + $settings = ( ! empty( $this->field['settings'] ) ) ? $this->field['settings'] : array(); + $settings = wp_parse_args( $settings, $default_settings ); + + echo $this->field_before(); + echo ''; + echo $this->field_after(); + + } + + public function enqueue() { + + $page = ( ! empty( $_GET[ 'page' ] ) ) ? sanitize_text_field( wp_unslash( $_GET[ 'page' ] ) ) : ''; + + // Do not loads CodeMirror in revslider page. + if ( in_array( $page, array( 'revslider' ) ) ) { return; } + + if ( ! wp_script_is( 'wp_china_yes-codemirror' ) ) { + wp_enqueue_script( 'wp_china_yes-codemirror', esc_url( $this->cdn_url . $this->version .'/lib/codemirror.min.js' ), array( 'wp_china_yes' ), $this->version, true ); + wp_enqueue_script( 'wp_china_yes-codemirror-loadmode', esc_url( $this->cdn_url . $this->version .'/addon/mode/loadmode.min.js' ), array( 'wp_china_yes-codemirror' ), $this->version, true ); + } + + if ( ! wp_style_is( 'wp_china_yes-codemirror' ) ) { + wp_enqueue_style( 'wp_china_yes-codemirror', esc_url( $this->cdn_url . $this->version .'/lib/codemirror.min.css' ), array(), $this->version ); + } + + } + + } +} diff --git a/framework/fields/color/color.php b/framework/fields/color/color.php new file mode 100644 index 0000000..5720701 --- /dev/null +++ b/framework/fields/color/color.php @@ -0,0 +1,52 @@ +field['default'] ) ) ? ' data-default-color="'. esc_attr( $this->field['default'] ) .'"' : ''; + + echo $this->field_before(); + echo 'field_attributes() .'/>'; + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $elements = ( is_array( $this->field['output'] ) ) ? $this->field['output'] : array_filter( (array) $this->field['output'] ); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $mode = ( ! empty( $this->field['output_mode'] ) ) ? $this->field['output_mode'] : 'color'; + + if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) { + foreach ( $elements as $key_property => $element ) { + if ( is_numeric( $key_property ) ) { + $output = implode( ',', $elements ) .'{'. $mode .':'. $this->value . $important .';}'; + break; + } else { + $output .= $element .'{'. $key_property .':'. $this->value . $important .'}'; + } + } + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/color_group/color_group.php b/framework/fields/color_group/color_group.php new file mode 100644 index 0000000..842adc5 --- /dev/null +++ b/framework/fields/color_group/color_group.php @@ -0,0 +1,42 @@ +field['options'] ) ) ? $this->field['options'] : array(); + + echo $this->field_before(); + + if ( ! empty( $options ) ) { + foreach ( $options as $key => $option ) { + + $color_value = ( ! empty( $this->value[$key] ) ) ? $this->value[$key] : ''; + $default_attr = ( ! empty( $this->field['default'][$key] ) ) ? ' data-default-color="'. esc_attr( $this->field['default'][$key] ) .'"' : ''; + + echo '
        '; + echo '
        '. $option .'
        '; + echo 'field_attributes() .'/>'; + echo '
        '; + + } + } + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/content/content.php b/framework/fields/content/content.php new file mode 100644 index 0000000..dadf3bc --- /dev/null +++ b/framework/fields/content/content.php @@ -0,0 +1,28 @@ +field['content'] ) ) { + + echo $this->field['content']; + + } + + } + + } +} diff --git a/framework/fields/date/date.php b/framework/fields/date/date.php new file mode 100644 index 0000000..e03b2f6 --- /dev/null +++ b/framework/fields/date/date.php @@ -0,0 +1,64 @@ + 'mm/dd/yy', + ); + + $settings = ( ! empty( $this->field['settings'] ) ) ? $this->field['settings'] : array(); + $settings = wp_parse_args( $settings, $default_settings ); + + echo $this->field_before(); + + if ( ! empty( $this->field['from_to'] ) ) { + + $args = wp_parse_args( $this->field, array( + 'text_from' => esc_html__( 'From', 'wp_china_yes' ), + 'text_to' => esc_html__( 'To', 'wp_china_yes' ), + ) ); + + $value = wp_parse_args( $this->value, array( + 'from' => '', + 'to' => '', + ) ); + + echo ''; + echo ''; + + } else { + + echo 'field_attributes() .'/>'; + + } + + echo '
        '; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-datepicker' ) ) { + wp_enqueue_script( 'jquery-ui-datepicker' ); + } + + } + + } +} diff --git a/framework/fields/datetime/datetime.php b/framework/fields/datetime/datetime.php new file mode 100644 index 0000000..db33ea1 --- /dev/null +++ b/framework/fields/datetime/datetime.php @@ -0,0 +1,61 @@ + true, + ); + + $settings = ( ! empty( $this->field['settings'] ) ) ? $this->field['settings'] : array(); + + if ( ! isset( $settings['noCalendar'] ) ) { + $defaults['dateFormat'] = 'm/d/Y'; + } + + $settings = wp_parse_args( $settings, $defaults ); + + echo $this->field_before(); + + if ( ! empty( $this->field['from_to'] ) ) { + + $args = wp_parse_args( $this->field, array( + 'text_from' => esc_html__( 'From', 'wp_china_yes' ), + 'text_to' => esc_html__( 'To', 'wp_china_yes' ), + ) ); + + $value = wp_parse_args( $this->value, array( + 'from' => '', + 'to' => '', + ) ); + + echo ''; + echo ''; + + } else { + + echo 'field_attributes() .'/>'; + + } + + echo '
        '; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/dimensions/dimensions.php b/framework/fields/dimensions/dimensions.php new file mode 100644 index 0000000..3b5a28c --- /dev/null +++ b/framework/fields/dimensions/dimensions.php @@ -0,0 +1,101 @@ +field, array( + 'width_icon' => '', + 'height_icon' => '', + 'width_placeholder' => esc_html__( 'width', 'wp_china_yes' ), + 'height_placeholder' => esc_html__( 'height', 'wp_china_yes' ), + 'width' => true, + 'height' => true, + 'unit' => true, + 'show_units' => true, + 'units' => array( 'px', '%', 'em' ) + ) ); + + $default_values = array( + 'width' => '', + 'height' => '', + 'unit' => 'px', + ); + + $value = wp_parse_args( $this->value, $default_values ); + $unit = ( count( $args['units'] ) === 1 && ! empty( $args['unit'] ) ) ? $args['units'][0] : ''; + $is_unit = ( ! empty( $unit ) ) ? ' wp_china_yes--is-unit' : ''; + + echo $this->field_before(); + + echo '
        '; + + if ( ! empty( $args['width'] ) ) { + $placeholder = ( ! empty( $args['width_placeholder'] ) ) ? ' placeholder="'. esc_attr( $args['width_placeholder'] ) .'"' : ''; + echo '
        '; + echo ( ! empty( $args['width_icon'] ) ) ? ''. $args['width_icon'] .'' : ''; + echo ''; + echo ( ! empty( $unit ) ) ? ''. esc_attr( $args['units'][0] ) .'' : ''; + echo '
        '; + } + + if ( ! empty( $args['height'] ) ) { + $placeholder = ( ! empty( $args['height_placeholder'] ) ) ? ' placeholder="'. esc_attr( $args['height_placeholder'] ) .'"' : ''; + echo '
        '; + echo ( ! empty( $args['height_icon'] ) ) ? ''. $args['height_icon'] .'' : ''; + echo ''; + echo ( ! empty( $unit ) ) ? ''. esc_attr( $args['units'][0] ) .'' : ''; + echo '
        '; + } + + if ( ! empty( $args['unit'] ) && ! empty( $args['show_units'] ) && count( $args['units'] ) > 1 ) { + echo '
        '; + echo ''; + echo '
        '; + } + + echo '
        '; + + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $element = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output']; + $prefix = ( ! empty( $this->field['output_prefix'] ) ) ? $this->field['output_prefix'] .'-' : ''; + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $unit = ( ! empty( $this->value['unit'] ) ) ? $this->value['unit'] : 'px'; + $width = ( isset( $this->value['width'] ) && $this->value['width'] !== '' ) ? $prefix .'width:'. $this->value['width'] . $unit . $important .';' : ''; + $height = ( isset( $this->value['height'] ) && $this->value['height'] !== '' ) ? $prefix .'height:'. $this->value['height'] . $unit . $important .';' : ''; + + if ( $width !== '' || $height !== '' ) { + $output = $element .'{'. $width . $height .'}'; + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/fieldset/fieldset.php b/framework/fields/fieldset/fieldset.php new file mode 100644 index 0000000..638fcc5 --- /dev/null +++ b/framework/fields/fieldset/fieldset.php @@ -0,0 +1,41 @@ +field_before(); + + echo '
        '; + + foreach ( $this->field['fields'] as $field ) { + + $field_id = ( isset( $field['id'] ) ) ? $field['id'] : ''; + $field_default = ( isset( $field['default'] ) ) ? $field['default'] : ''; + $field_value = ( isset( $this->value[$field_id] ) ) ? $this->value[$field_id] : $field_default; + $unique_id = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .']' : $this->field['id']; + + WP_CHINA_YES::field( $field, $field_value, $unique_id, 'field/fieldset' ); + + } + + echo '
        '; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/gallery/gallery.php b/framework/fields/gallery/gallery.php new file mode 100644 index 0000000..cb62c6f --- /dev/null +++ b/framework/fields/gallery/gallery.php @@ -0,0 +1,52 @@ +field, array( + 'add_title' => esc_html__( 'Add Gallery', 'wp_china_yes' ), + 'edit_title' => esc_html__( 'Edit Gallery', 'wp_china_yes' ), + 'clear_title' => esc_html__( 'Clear', 'wp_china_yes' ), + ) ); + + $hidden = ( empty( $this->value ) ) ? ' hidden' : ''; + + echo $this->field_before(); + + echo '
          '; + if ( ! empty( $this->value ) ) { + + $values = explode( ',', $this->value ); + + foreach ( $values as $id ) { + $attachment = wp_get_attachment_image_src( $id, 'thumbnail' ); + echo '
        • '; + } + + } + echo '
        '; + + echo ''. $args['add_title'] .''; + echo ''. $args['edit_title'] .''; + echo ''. $args['clear_title'] .''; + echo 'field_attributes() .'/>'; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/group/group.php b/framework/fields/group/group.php new file mode 100644 index 0000000..6d06c34 --- /dev/null +++ b/framework/fields/group/group.php @@ -0,0 +1,164 @@ +field, array( + 'max' => 0, + 'min' => 0, + 'fields' => array(), + 'button_title' => esc_html__( 'Add New', 'wp_china_yes' ), + 'accordion_title_prefix' => '', + 'accordion_title_number' => false, + 'accordion_title_auto' => true, + 'accordion_title_by' => array(), + 'accordion_title_by_prefix' => ' ', + ) ); + + $title_prefix = ( ! empty( $args['accordion_title_prefix'] ) ) ? $args['accordion_title_prefix'] : ''; + $title_number = ( ! empty( $args['accordion_title_number'] ) ) ? true : false; + $title_auto = ( ! empty( $args['accordion_title_auto'] ) ) ? true : false; + $title_first = ( isset( $this->field['fields'][0]['id'] ) ) ? $this->field['fields'][0]['id'] : $this->field['fields'][1]['id']; + $title_by = ( is_array( $args['accordion_title_by'] ) ) ? $args['accordion_title_by'] : (array) $args['accordion_title_by']; + $title_by = ( empty( $title_by ) ) ? array( $title_first ) : $title_by; + $title_by_prefix = ( ! empty( $args['accordion_title_by_prefix'] ) ) ? $args['accordion_title_by_prefix'] : ''; + + if ( preg_match( '/'. preg_quote( '['. $this->field['id'] .']' ) .'/', $this->unique ) ) { + + echo '
        '. esc_html__( 'Error: Field ID conflict.', 'wp_china_yes' ) .'
        '; + + } else { + + echo $this->field_before(); + + echo '
        '; + + echo '
        '; + echo ''; + echo ''; + echo ''; + echo '
        '; + + echo '

        '; + echo ''; + echo ( $title_number ) ? '' : ''; + echo ( $title_prefix ) ? ''. esc_attr( $title_prefix ) .'' : ''; + echo ( $title_auto ) ? '' : ''; + echo ''; + echo '

        '; + + echo '
        '; + foreach ( $this->field['fields'] as $field ) { + + $field_default = ( isset( $field['default'] ) ) ? $field['default'] : ''; + $field_unique = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .'][0]' : $this->field['id'] .'[0]'; + + WP_CHINA_YES::field( $field, $field_default, '___'. $field_unique, 'field/group' ); + + } + echo '
        '; + + echo '
        '; + + echo '
        '; + + if ( ! empty( $this->value ) ) { + + $num = 0; + + foreach ( $this->value as $value ) { + + $title = ''; + + if ( ! empty( $title_by ) ) { + + $titles = array(); + + foreach ( $title_by as $title_key ) { + if ( isset( $value[ $title_key ] ) ) { + $titles[] = $value[ $title_key ]; + } + } + + $title = join( $title_by_prefix, $titles ); + + } + + $title = ( is_array( $title ) ) ? reset( $title ) : $title; + + echo '
        '; + + echo '
        '; + echo ''; + echo ''; + echo ''; + echo '
        '; + + echo '

        '; + echo ''; + echo ( $title_number ) ? ''. esc_attr( $num+1 ) .'.' : ''; + echo ( $title_prefix ) ? ''. esc_attr( $title_prefix ) .'' : ''; + echo ( $title_auto ) ? '' . esc_attr( $title ) .'' : ''; + echo ''; + echo '

        '; + + echo '
        '; + + foreach ( $this->field['fields'] as $field ) { + + $field_unique = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .']['. $num .']' : $this->field['id'] .'['. $num .']'; + $field_value = ( isset( $field['id'] ) && isset( $value[$field['id']] ) ) ? $value[$field['id']] : ''; + + WP_CHINA_YES::field( $field, $field_value, $field_unique, 'field/group' ); + + } + + echo '
        '; + + echo '
        '; + + $num++; + + } + + } + + echo '
        '; + + echo '
        '. esc_html__( 'You cannot add more.', 'wp_china_yes' ) .'
        '; + echo '
        '. esc_html__( 'You cannot remove more.', 'wp_china_yes' ) .'
        '; + echo ''. $args['button_title'] .''; + + echo $this->field_after(); + + } + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-accordion' ) ) { + wp_enqueue_script( 'jquery-ui-accordion' ); + } + + if ( ! wp_script_is( 'jquery-ui-sortable' ) ) { + wp_enqueue_script( 'jquery-ui-sortable' ); + } + + } + + } +} diff --git a/framework/fields/heading/heading.php b/framework/fields/heading/heading.php new file mode 100644 index 0000000..aff7e32 --- /dev/null +++ b/framework/fields/heading/heading.php @@ -0,0 +1,24 @@ +field['content'] ) ) ? $this->field['content'] : ''; + + } + + } +} diff --git a/framework/fields/icon/fa4-icons.php b/framework/fields/icon/fa4-icons.php new file mode 100644 index 0000000..c064689 --- /dev/null +++ b/framework/fields/icon/fa4-icons.php @@ -0,0 +1,12 @@ + 'Font Awesome', + 'icons' => array( 'fa fa-glass','fa fa-music','fa fa-search','fa fa-envelope-o','fa fa-heart','fa fa-star','fa fa-star-o','fa fa-user','fa fa-film','fa fa-th-large','fa fa-th','fa fa-th-list','fa fa-check','fa fa-times','fa fa-search-plus','fa fa-search-minus','fa fa-power-off','fa fa-signal','fa fa-cog','fa fa-trash-o','fa fa-home','fa fa-file-o','fa fa-clock-o','fa fa-road','fa fa-download','fa fa-arrow-circle-o-down','fa fa-arrow-circle-o-up','fa fa-inbox','fa fa-play-circle-o','fa fa-repeat','fa fa-refresh','fa fa-list-alt','fa fa-lock','fa fa-flag','fa fa-headphones','fa fa-volume-off','fa fa-volume-down','fa fa-volume-up','fa fa-qrcode','fa fa-barcode','fa fa-tag','fa fa-tags','fa fa-book','fa fa-bookmark','fa fa-print','fa fa-camera','fa fa-font','fa fa-bold','fa fa-italic','fa fa-text-height','fa fa-text-width','fa fa-align-left','fa fa-align-center','fa fa-align-right','fa fa-align-justify','fa fa-list','fa fa-outdent','fa fa-indent','fa fa-video-camera','fa fa-picture-o','fa fa-pencil','fa fa-map-marker','fa fa-adjust','fa fa-tint','fa fa-pencil-square-o','fa fa-share-square-o','fa fa-check-square-o','fa fa-arrows','fa fa-step-backward','fa fa-fast-backward','fa fa-backward','fa fa-play','fa fa-pause','fa fa-stop','fa fa-forward','fa fa-fast-forward','fa fa-step-forward','fa fa-eject','fa fa-chevron-left','fa fa-chevron-right','fa fa-plus-circle','fa fa-minus-circle','fa fa-times-circle','fa fa-check-circle','fa fa-question-circle','fa fa-info-circle','fa fa-crosshairs','fa fa-times-circle-o','fa fa-check-circle-o','fa fa-ban','fa fa-arrow-left','fa fa-arrow-right','fa fa-arrow-up','fa fa-arrow-down','fa fa-share','fa fa-expand','fa fa-compress','fa fa-plus','fa fa-minus','fa fa-asterisk','fa fa-exclamation-circle','fa fa-gift','fa fa-leaf','fa fa-fire','fa fa-eye','fa fa-eye-slash','fa fa-exclamation-triangle','fa fa-plane','fa fa-calendar','fa fa-random','fa fa-comment','fa fa-magnet','fa fa-chevron-up','fa fa-chevron-down','fa fa-retweet','fa fa-shopping-cart','fa fa-folder','fa fa-folder-open','fa fa-arrows-v','fa fa-arrows-h','fa fa-bar-chart','fa fa-twitter-square','fa fa-facebook-square','fa fa-camera-retro','fa fa-key','fa fa-cogs','fa fa-comments','fa fa-thumbs-o-up','fa fa-thumbs-o-down','fa fa-star-half','fa fa-heart-o','fa fa-sign-out','fa fa-linkedin-square','fa fa-thumb-tack','fa fa-external-link','fa fa-sign-in','fa fa-trophy','fa fa-github-square','fa fa-upload','fa fa-lemon-o','fa fa-phone','fa fa-square-o','fa fa-bookmark-o','fa fa-phone-square','fa fa-twitter','fa fa-facebook','fa fa-github','fa fa-unlock','fa fa-credit-card','fa fa-rss','fa fa-hdd-o','fa fa-bullhorn','fa fa-bell','fa fa-certificate','fa fa-hand-o-right','fa fa-hand-o-left','fa fa-hand-o-up','fa fa-hand-o-down','fa fa-arrow-circle-left','fa fa-arrow-circle-right','fa fa-arrow-circle-up','fa fa-arrow-circle-down','fa fa-globe','fa fa-wrench','fa fa-tasks','fa fa-filter','fa fa-briefcase','fa fa-arrows-alt','fa fa-users','fa fa-link','fa fa-cloud','fa fa-flask','fa fa-scissors','fa fa-files-o','fa fa-paperclip','fa fa-floppy-o','fa fa-square','fa fa-bars','fa fa-list-ul','fa fa-list-ol','fa fa-strikethrough','fa fa-underline','fa fa-table','fa fa-magic','fa fa-truck','fa fa-pinterest','fa fa-pinterest-square','fa fa-google-plus-square','fa fa-google-plus','fa fa-money','fa fa-caret-down','fa fa-caret-up','fa fa-caret-left','fa fa-caret-right','fa fa-columns','fa fa-sort','fa fa-sort-desc','fa fa-sort-asc','fa fa-envelope','fa fa-linkedin','fa fa-undo','fa fa-gavel','fa fa-tachometer','fa fa-comment-o','fa fa-comments-o','fa fa-bolt','fa fa-sitemap','fa fa-umbrella','fa fa-clipboard','fa fa-lightbulb-o','fa fa-exchange','fa fa-cloud-download','fa fa-cloud-upload','fa fa-user-md','fa fa-stethoscope','fa fa-suitcase','fa fa-bell-o','fa fa-coffee','fa fa-cutlery','fa fa-file-text-o','fa fa-building-o','fa fa-hospital-o','fa fa-ambulance','fa fa-medkit','fa fa-fighter-jet','fa fa-beer','fa fa-h-square','fa fa-plus-square','fa fa-angle-double-left','fa fa-angle-double-right','fa fa-angle-double-up','fa fa-angle-double-down','fa fa-angle-left','fa fa-angle-right','fa fa-angle-up','fa fa-angle-down','fa fa-desktop','fa fa-laptop','fa fa-tablet','fa fa-mobile','fa fa-circle-o','fa fa-quote-left','fa fa-quote-right','fa fa-spinner','fa fa-circle','fa fa-reply','fa fa-github-alt','fa fa-folder-o','fa fa-folder-open-o','fa fa-smile-o','fa fa-frown-o','fa fa-meh-o','fa fa-gamepad','fa fa-keyboard-o','fa fa-flag-o','fa fa-flag-checkered','fa fa-terminal','fa fa-code','fa fa-reply-all','fa fa-star-half-o','fa fa-location-arrow','fa fa-crop','fa fa-code-fork','fa fa-chain-broken','fa fa-question','fa fa-info','fa fa-exclamation','fa fa-superscript','fa fa-subscript','fa fa-eraser','fa fa-puzzle-piece','fa fa-microphone','fa fa-microphone-slash','fa fa-shield','fa fa-calendar-o','fa fa-fire-extinguisher','fa fa-rocket','fa fa-maxcdn','fa fa-chevron-circle-left','fa fa-chevron-circle-right','fa fa-chevron-circle-up','fa fa-chevron-circle-down','fa fa-html5','fa fa-css3','fa fa-anchor','fa fa-unlock-alt','fa fa-bullseye','fa fa-ellipsis-h','fa fa-ellipsis-v','fa fa-rss-square','fa fa-play-circle','fa fa-ticket','fa fa-minus-square','fa fa-minus-square-o','fa fa-level-up','fa fa-level-down','fa fa-check-square','fa fa-pencil-square','fa fa-external-link-square','fa fa-share-square','fa fa-compass','fa fa-caret-square-o-down','fa fa-caret-square-o-up','fa fa-caret-square-o-right','fa fa-eur','fa fa-gbp','fa fa-usd','fa fa-inr','fa fa-jpy','fa fa-rub','fa fa-krw','fa fa-btc','fa fa-file','fa fa-file-text','fa fa-sort-alpha-asc','fa fa-sort-alpha-desc','fa fa-sort-amount-asc','fa fa-sort-amount-desc','fa fa-sort-numeric-asc','fa fa-sort-numeric-desc','fa fa-thumbs-up','fa fa-thumbs-down','fa fa-youtube-square','fa fa-youtube','fa fa-xing','fa fa-xing-square','fa fa-youtube-play','fa fa-dropbox','fa fa-stack-overflow','fa fa-instagram','fa fa-flickr','fa fa-adn','fa fa-bitbucket','fa fa-bitbucket-square','fa fa-tumblr','fa fa-tumblr-square','fa fa-long-arrow-down','fa fa-long-arrow-up','fa fa-long-arrow-left','fa fa-long-arrow-right','fa fa-apple','fa fa-windows','fa fa-android','fa fa-linux','fa fa-dribbble','fa fa-skype','fa fa-foursquare','fa fa-trello','fa fa-female','fa fa-male','fa fa-gratipay','fa fa-sun-o','fa fa-moon-o','fa fa-archive','fa fa-bug','fa fa-vk','fa fa-weibo','fa fa-renren','fa fa-pagelines','fa fa-stack-exchange','fa fa-arrow-circle-o-right','fa fa-arrow-circle-o-left','fa fa-caret-square-o-left','fa fa-dot-circle-o','fa fa-wheelchair','fa fa-vimeo-square','fa fa-try','fa fa-plus-square-o','fa fa-space-shuttle','fa fa-slack','fa fa-envelope-square','fa fa-wordpress','fa fa-openid','fa fa-university','fa fa-graduation-cap','fa fa-yahoo','fa fa-google','fa fa-reddit','fa fa-reddit-square','fa fa-stumbleupon-circle','fa fa-stumbleupon','fa fa-delicious','fa fa-digg','fa fa-pied-piper-pp','fa fa-pied-piper-alt','fa fa-drupal','fa fa-joomla','fa fa-language','fa fa-fax','fa fa-building','fa fa-child','fa fa-paw','fa fa-spoon','fa fa-cube','fa fa-cubes','fa fa-behance','fa fa-behance-square','fa fa-steam','fa fa-steam-square','fa fa-recycle','fa fa-car','fa fa-taxi','fa fa-tree','fa fa-spotify','fa fa-deviantart','fa fa-soundcloud','fa fa-database','fa fa-file-pdf-o','fa fa-file-word-o','fa fa-file-excel-o','fa fa-file-powerpoint-o','fa fa-file-image-o','fa fa-file-archive-o','fa fa-file-audio-o','fa fa-file-video-o','fa fa-file-code-o','fa fa-vine','fa fa-codepen','fa fa-jsfiddle','fa fa-life-ring','fa fa-circle-o-notch','fa fa-rebel','fa fa-empire','fa fa-git-square','fa fa-git','fa fa-hacker-news','fa fa-tencent-weibo','fa fa-qq','fa fa-weixin','fa fa-paper-plane','fa fa-paper-plane-o','fa fa-history','fa fa-circle-thin','fa fa-header','fa fa-paragraph','fa fa-sliders','fa fa-share-alt','fa fa-share-alt-square','fa fa-bomb','fa fa-futbol-o','fa fa-tty','fa fa-binoculars','fa fa-plug','fa fa-slideshare','fa fa-twitch','fa fa-yelp','fa fa-newspaper-o','fa fa-wifi','fa fa-calculator','fa fa-paypal','fa fa-google-wallet','fa fa-cc-visa','fa fa-cc-mastercard','fa fa-cc-discover','fa fa-cc-amex','fa fa-cc-paypal','fa fa-cc-stripe','fa fa-bell-slash','fa fa-bell-slash-o','fa fa-trash','fa fa-copyright','fa fa-at','fa fa-eyedropper','fa fa-paint-brush','fa fa-birthday-cake','fa fa-area-chart','fa fa-pie-chart','fa fa-line-chart','fa fa-lastfm','fa fa-lastfm-square','fa fa-toggle-off','fa fa-toggle-on','fa fa-bicycle','fa fa-bus','fa fa-ioxhost','fa fa-angellist','fa fa-cc','fa fa-ils','fa fa-meanpath','fa fa-buysellads','fa fa-connectdevelop','fa fa-dashcube','fa fa-forumbee','fa fa-leanpub','fa fa-sellsy','fa fa-shirtsinbulk','fa fa-simplybuilt','fa fa-skyatlas','fa fa-cart-plus','fa fa-cart-arrow-down','fa fa-diamond','fa fa-ship','fa fa-user-secret','fa fa-motorcycle','fa fa-street-view','fa fa-heartbeat','fa fa-venus','fa fa-mars','fa fa-mercury','fa fa-transgender','fa fa-transgender-alt','fa fa-venus-double','fa fa-mars-double','fa fa-venus-mars','fa fa-mars-stroke','fa fa-mars-stroke-v','fa fa-mars-stroke-h','fa fa-neuter','fa fa-genderless','fa fa-facebook-official','fa fa-pinterest-p','fa fa-whatsapp','fa fa-server','fa fa-user-plus','fa fa-user-times','fa fa-bed','fa fa-viacoin','fa fa-train','fa fa-subway','fa fa-medium','fa fa-y-combinator','fa fa-optin-monster','fa fa-opencart','fa fa-expeditedssl','fa fa-battery-full','fa fa-battery-three-quarters','fa fa-battery-half','fa fa-battery-quarter','fa fa-battery-empty','fa fa-mouse-pointer','fa fa-i-cursor','fa fa-object-group','fa fa-object-ungroup','fa fa-sticky-note','fa fa-sticky-note-o','fa fa-cc-jcb','fa fa-cc-diners-club','fa fa-clone','fa fa-balance-scale','fa fa-hourglass-o','fa fa-hourglass-start','fa fa-hourglass-half','fa fa-hourglass-end','fa fa-hourglass','fa fa-hand-rock-o','fa fa-hand-paper-o','fa fa-hand-scissors-o','fa fa-hand-lizard-o','fa fa-hand-spock-o','fa fa-hand-pointer-o','fa fa-hand-peace-o','fa fa-trademark','fa fa-registered','fa fa-creative-commons','fa fa-gg','fa fa-gg-circle','fa fa-tripadvisor','fa fa-odnoklassniki','fa fa-odnoklassniki-square','fa fa-get-pocket','fa fa-wikipedia-w','fa fa-safari','fa fa-chrome','fa fa-firefox','fa fa-opera','fa fa-internet-explorer','fa fa-television','fa fa-contao','fa fa-500px','fa fa-amazon','fa fa-calendar-plus-o','fa fa-calendar-minus-o','fa fa-calendar-times-o','fa fa-calendar-check-o','fa fa-industry','fa fa-map-pin','fa fa-map-signs','fa fa-map-o','fa fa-map','fa fa-commenting','fa fa-commenting-o','fa fa-houzz','fa fa-vimeo','fa fa-black-tie','fa fa-fonticons','fa fa-reddit-alien','fa fa-edge','fa fa-credit-card-alt','fa fa-codiepie','fa fa-modx','fa fa-fort-awesome','fa fa-usb','fa fa-product-hunt','fa fa-mixcloud','fa fa-scribd','fa fa-pause-circle','fa fa-pause-circle-o','fa fa-stop-circle','fa fa-stop-circle-o','fa fa-shopping-bag','fa fa-shopping-basket','fa fa-hashtag','fa fa-bluetooth','fa fa-bluetooth-b','fa fa-percent','fa fa-gitlab','fa fa-wpbeginner','fa fa-wpforms','fa fa-envira','fa fa-universal-access','fa fa-wheelchair-alt','fa fa-question-circle-o','fa fa-blind','fa fa-audio-description','fa fa-volume-control-phone','fa fa-braille','fa fa-assistive-listening-systems','fa fa-american-sign-language-interpreting','fa fa-deaf','fa fa-glide','fa fa-glide-g','fa fa-sign-language','fa fa-low-vision','fa fa-viadeo','fa fa-viadeo-square','fa fa-snapchat','fa fa-snapchat-ghost','fa fa-snapchat-square','fa fa-pied-piper','fa fa-first-order','fa fa-yoast','fa fa-themeisle','fa fa-google-plus-official','fa fa-font-awesome','fa fa-handshake-o','fa fa-envelope-open','fa fa-envelope-open-o','fa fa-linode','fa fa-address-book','fa fa-address-book-o','fa fa-address-card','fa fa-address-card-o','fa fa-user-circle','fa fa-user-circle-o','fa fa-user-o','fa fa-id-badge','fa fa-id-card','fa fa-id-card-o','fa fa-quora','fa fa-free-code-camp','fa fa-telegram','fa fa-thermometer-full','fa fa-thermometer-three-quarters','fa fa-thermometer-half','fa fa-thermometer-quarter','fa fa-thermometer-empty','fa fa-shower','fa fa-bath','fa fa-podcast','fa fa-window-maximize','fa fa-window-minimize','fa fa-window-restore','fa fa-window-close','fa fa-window-close-o','fa fa-bandcamp','fa fa-grav','fa fa-etsy','fa fa-imdb','fa fa-ravelry','fa fa-eercast','fa fa-microchip','fa fa-snowflake-o','fa fa-superpowers','fa fa-wpexplorer','fa fa-meetup' ) + ) ); + } +} diff --git a/framework/fields/icon/fa5-icons.php b/framework/fields/icon/fa5-icons.php new file mode 100644 index 0000000..e2479b1 --- /dev/null +++ b/framework/fields/icon/fa5-icons.php @@ -0,0 +1,12 @@ + 'Font Awesome 5 Free', + 'icons' => array( 'fab fa-500px','fab fa-accessible-icon','fab fa-accusoft','fab fa-acquisitions-incorporated','fas fa-ad','fas fa-address-book','far fa-address-book','fas fa-address-card','far fa-address-card','fas fa-adjust','fab fa-adn','fab fa-adversal','fab fa-affiliatetheme','fas fa-air-freshener','fab fa-airbnb','fab fa-algolia','fas fa-align-center','fas fa-align-justify','fas fa-align-left','fas fa-align-right','fab fa-alipay','fas fa-allergies','fab fa-amazon','fab fa-amazon-pay','fas fa-ambulance','fas fa-american-sign-language-interpreting','fab fa-amilia','fas fa-anchor','fab fa-android','fab fa-angellist','fas fa-angle-double-down','fas fa-angle-double-left','fas fa-angle-double-right','fas fa-angle-double-up','fas fa-angle-down','fas fa-angle-left','fas fa-angle-right','fas fa-angle-up','fas fa-angry','far fa-angry','fab fa-angrycreative','fab fa-angular','fas fa-ankh','fab fa-app-store','fab fa-app-store-ios','fab fa-apper','fab fa-apple','fas fa-apple-alt','fab fa-apple-pay','fas fa-archive','fas fa-archway','fas fa-arrow-alt-circle-down','far fa-arrow-alt-circle-down','fas fa-arrow-alt-circle-left','far fa-arrow-alt-circle-left','fas fa-arrow-alt-circle-right','far fa-arrow-alt-circle-right','fas fa-arrow-alt-circle-up','far fa-arrow-alt-circle-up','fas fa-arrow-circle-down','fas fa-arrow-circle-left','fas fa-arrow-circle-right','fas fa-arrow-circle-up','fas fa-arrow-down','fas fa-arrow-left','fas fa-arrow-right','fas fa-arrow-up','fas fa-arrows-alt','fas fa-arrows-alt-h','fas fa-arrows-alt-v','fab fa-artstation','fas fa-assistive-listening-systems','fas fa-asterisk','fab fa-asymmetrik','fas fa-at','fas fa-atlas','fab fa-atlassian','fas fa-atom','fab fa-audible','fas fa-audio-description','fab fa-autoprefixer','fab fa-avianex','fab fa-aviato','fas fa-award','fab fa-aws','fas fa-baby','fas fa-baby-carriage','fas fa-backspace','fas fa-backward','fas fa-bacon','fas fa-bacteria','fas fa-bacterium','fas fa-bahai','fas fa-balance-scale','fas fa-balance-scale-left','fas fa-balance-scale-right','fas fa-ban','fas fa-band-aid','fab fa-bandcamp','fas fa-barcode','fas fa-bars','fas fa-baseball-ball','fas fa-basketball-ball','fas fa-bath','fas fa-battery-empty','fas fa-battery-full','fas fa-battery-half','fas fa-battery-quarter','fas fa-battery-three-quarters','fab fa-battle-net','fas fa-bed','fas fa-beer','fab fa-behance','fab fa-behance-square','fas fa-bell','far fa-bell','fas fa-bell-slash','far fa-bell-slash','fas fa-bezier-curve','fas fa-bible','fas fa-bicycle','fas fa-biking','fab fa-bimobject','fas fa-binoculars','fas fa-biohazard','fas fa-birthday-cake','fab fa-bitbucket','fab fa-bitcoin','fab fa-bity','fab fa-black-tie','fab fa-blackberry','fas fa-blender','fas fa-blender-phone','fas fa-blind','fas fa-blog','fab fa-blogger','fab fa-blogger-b','fab fa-bluetooth','fab fa-bluetooth-b','fas fa-bold','fas fa-bolt','fas fa-bomb','fas fa-bone','fas fa-bong','fas fa-book','fas fa-book-dead','fas fa-book-medical','fas fa-book-open','fas fa-book-reader','fas fa-bookmark','far fa-bookmark','fab fa-bootstrap','fas fa-border-all','fas fa-border-none','fas fa-border-style','fas fa-bowling-ball','fas fa-box','fas fa-box-open','fas fa-box-tissue','fas fa-boxes','fas fa-braille','fas fa-brain','fas fa-bread-slice','fas fa-briefcase','fas fa-briefcase-medical','fas fa-broadcast-tower','fas fa-broom','fas fa-brush','fab fa-btc','fab fa-buffer','fas fa-bug','fas fa-building','far fa-building','fas fa-bullhorn','fas fa-bullseye','fas fa-burn','fab fa-buromobelexperte','fas fa-bus','fas fa-bus-alt','fas fa-business-time','fab fa-buy-n-large','fab fa-buysellads','fas fa-calculator','fas fa-calendar','far fa-calendar','fas fa-calendar-alt','far fa-calendar-alt','fas fa-calendar-check','far fa-calendar-check','fas fa-calendar-day','fas fa-calendar-minus','far fa-calendar-minus','fas fa-calendar-plus','far fa-calendar-plus','fas fa-calendar-times','far fa-calendar-times','fas fa-calendar-week','fas fa-camera','fas fa-camera-retro','fas fa-campground','fab fa-canadian-maple-leaf','fas fa-candy-cane','fas fa-cannabis','fas fa-capsules','fas fa-car','fas fa-car-alt','fas fa-car-battery','fas fa-car-crash','fas fa-car-side','fas fa-caravan','fas fa-caret-down','fas fa-caret-left','fas fa-caret-right','fas fa-caret-square-down','far fa-caret-square-down','fas fa-caret-square-left','far fa-caret-square-left','fas fa-caret-square-right','far fa-caret-square-right','fas fa-caret-square-up','far fa-caret-square-up','fas fa-caret-up','fas fa-carrot','fas fa-cart-arrow-down','fas fa-cart-plus','fas fa-cash-register','fas fa-cat','fab fa-cc-amazon-pay','fab fa-cc-amex','fab fa-cc-apple-pay','fab fa-cc-diners-club','fab fa-cc-discover','fab fa-cc-jcb','fab fa-cc-mastercard','fab fa-cc-paypal','fab fa-cc-stripe','fab fa-cc-visa','fab fa-centercode','fab fa-centos','fas fa-certificate','fas fa-chair','fas fa-chalkboard','fas fa-chalkboard-teacher','fas fa-charging-station','fas fa-chart-area','fas fa-chart-bar','far fa-chart-bar','fas fa-chart-line','fas fa-chart-pie','fas fa-check','fas fa-check-circle','far fa-check-circle','fas fa-check-double','fas fa-check-square','far fa-check-square','fas fa-cheese','fas fa-chess','fas fa-chess-bishop','fas fa-chess-board','fas fa-chess-king','fas fa-chess-knight','fas fa-chess-pawn','fas fa-chess-queen','fas fa-chess-rook','fas fa-chevron-circle-down','fas fa-chevron-circle-left','fas fa-chevron-circle-right','fas fa-chevron-circle-up','fas fa-chevron-down','fas fa-chevron-left','fas fa-chevron-right','fas fa-chevron-up','fas fa-child','fab fa-chrome','fab fa-chromecast','fas fa-church','fas fa-circle','far fa-circle','fas fa-circle-notch','fas fa-city','fas fa-clinic-medical','fas fa-clipboard','far fa-clipboard','fas fa-clipboard-check','fas fa-clipboard-list','fas fa-clock','far fa-clock','fas fa-clone','far fa-clone','fas fa-closed-captioning','far fa-closed-captioning','fas fa-cloud','fas fa-cloud-download-alt','fas fa-cloud-meatball','fas fa-cloud-moon','fas fa-cloud-moon-rain','fas fa-cloud-rain','fas fa-cloud-showers-heavy','fas fa-cloud-sun','fas fa-cloud-sun-rain','fas fa-cloud-upload-alt','fab fa-cloudflare','fab fa-cloudscale','fab fa-cloudsmith','fab fa-cloudversify','fas fa-cocktail','fas fa-code','fas fa-code-branch','fab fa-codepen','fab fa-codiepie','fas fa-coffee','fas fa-cog','fas fa-cogs','fas fa-coins','fas fa-columns','fas fa-comment','far fa-comment','fas fa-comment-alt','far fa-comment-alt','fas fa-comment-dollar','fas fa-comment-dots','far fa-comment-dots','fas fa-comment-medical','fas fa-comment-slash','fas fa-comments','far fa-comments','fas fa-comments-dollar','fas fa-compact-disc','fas fa-compass','far fa-compass','fas fa-compress','fas fa-compress-alt','fas fa-compress-arrows-alt','fas fa-concierge-bell','fab fa-confluence','fab fa-connectdevelop','fab fa-contao','fas fa-cookie','fas fa-cookie-bite','fas fa-copy','far fa-copy','fas fa-copyright','far fa-copyright','fab fa-cotton-bureau','fas fa-couch','fab fa-cpanel','fab fa-creative-commons','fab fa-creative-commons-by','fab fa-creative-commons-nc','fab fa-creative-commons-nc-eu','fab fa-creative-commons-nc-jp','fab fa-creative-commons-nd','fab fa-creative-commons-pd','fab fa-creative-commons-pd-alt','fab fa-creative-commons-remix','fab fa-creative-commons-sa','fab fa-creative-commons-sampling','fab fa-creative-commons-sampling-plus','fab fa-creative-commons-share','fab fa-creative-commons-zero','fas fa-credit-card','far fa-credit-card','fab fa-critical-role','fas fa-crop','fas fa-crop-alt','fas fa-cross','fas fa-crosshairs','fas fa-crow','fas fa-crown','fas fa-crutch','fab fa-css3','fab fa-css3-alt','fas fa-cube','fas fa-cubes','fas fa-cut','fab fa-cuttlefish','fab fa-d-and-d','fab fa-d-and-d-beyond','fab fa-dailymotion','fab fa-dashcube','fas fa-database','fas fa-deaf','fab fa-deezer','fab fa-delicious','fas fa-democrat','fab fa-deploydog','fab fa-deskpro','fas fa-desktop','fab fa-dev','fab fa-deviantart','fas fa-dharmachakra','fab fa-dhl','fas fa-diagnoses','fab fa-diaspora','fas fa-dice','fas fa-dice-d20','fas fa-dice-d6','fas fa-dice-five','fas fa-dice-four','fas fa-dice-one','fas fa-dice-six','fas fa-dice-three','fas fa-dice-two','fab fa-digg','fab fa-digital-ocean','fas fa-digital-tachograph','fas fa-directions','fab fa-discord','fab fa-discourse','fas fa-disease','fas fa-divide','fas fa-dizzy','far fa-dizzy','fas fa-dna','fab fa-dochub','fab fa-docker','fas fa-dog','fas fa-dollar-sign','fas fa-dolly','fas fa-dolly-flatbed','fas fa-donate','fas fa-door-closed','fas fa-door-open','fas fa-dot-circle','far fa-dot-circle','fas fa-dove','fas fa-download','fab fa-draft2digital','fas fa-drafting-compass','fas fa-dragon','fas fa-draw-polygon','fab fa-dribbble','fab fa-dribbble-square','fab fa-dropbox','fas fa-drum','fas fa-drum-steelpan','fas fa-drumstick-bite','fab fa-drupal','fas fa-dumbbell','fas fa-dumpster','fas fa-dumpster-fire','fas fa-dungeon','fab fa-dyalog','fab fa-earlybirds','fab fa-ebay','fab fa-edge','fab fa-edge-legacy','fas fa-edit','far fa-edit','fas fa-egg','fas fa-eject','fab fa-elementor','fas fa-ellipsis-h','fas fa-ellipsis-v','fab fa-ello','fab fa-ember','fab fa-empire','fas fa-envelope','far fa-envelope','fas fa-envelope-open','far fa-envelope-open','fas fa-envelope-open-text','fas fa-envelope-square','fab fa-envira','fas fa-equals','fas fa-eraser','fab fa-erlang','fab fa-ethereum','fas fa-ethernet','fab fa-etsy','fas fa-euro-sign','fab fa-evernote','fas fa-exchange-alt','fas fa-exclamation','fas fa-exclamation-circle','fas fa-exclamation-triangle','fas fa-expand','fas fa-expand-alt','fas fa-expand-arrows-alt','fab fa-expeditedssl','fas fa-external-link-alt','fas fa-external-link-square-alt','fas fa-eye','far fa-eye','fas fa-eye-dropper','fas fa-eye-slash','far fa-eye-slash','fab fa-facebook','fab fa-facebook-f','fab fa-facebook-messenger','fab fa-facebook-square','fas fa-fan','fab fa-fantasy-flight-games','fas fa-fast-backward','fas fa-fast-forward','fas fa-faucet','fas fa-fax','fas fa-feather','fas fa-feather-alt','fab fa-fedex','fab fa-fedora','fas fa-female','fas fa-fighter-jet','fab fa-figma','fas fa-file','far fa-file','fas fa-file-alt','far fa-file-alt','fas fa-file-archive','far fa-file-archive','fas fa-file-audio','far fa-file-audio','fas fa-file-code','far fa-file-code','fas fa-file-contract','fas fa-file-csv','fas fa-file-download','fas fa-file-excel','far fa-file-excel','fas fa-file-export','fas fa-file-image','far fa-file-image','fas fa-file-import','fas fa-file-invoice','fas fa-file-invoice-dollar','fas fa-file-medical','fas fa-file-medical-alt','fas fa-file-pdf','far fa-file-pdf','fas fa-file-powerpoint','far fa-file-powerpoint','fas fa-file-prescription','fas fa-file-signature','fas fa-file-upload','fas fa-file-video','far fa-file-video','fas fa-file-word','far fa-file-word','fas fa-fill','fas fa-fill-drip','fas fa-film','fas fa-filter','fas fa-fingerprint','fas fa-fire','fas fa-fire-alt','fas fa-fire-extinguisher','fab fa-firefox','fab fa-firefox-browser','fas fa-first-aid','fab fa-first-order','fab fa-first-order-alt','fab fa-firstdraft','fas fa-fish','fas fa-fist-raised','fas fa-flag','far fa-flag','fas fa-flag-checkered','fas fa-flag-usa','fas fa-flask','fab fa-flickr','fab fa-flipboard','fas fa-flushed','far fa-flushed','fab fa-fly','fas fa-folder','far fa-folder','fas fa-folder-minus','fas fa-folder-open','far fa-folder-open','fas fa-folder-plus','fas fa-font','fab fa-font-awesome','fab fa-font-awesome-alt','fab fa-font-awesome-flag','far fa-font-awesome-logo-full','fas fa-font-awesome-logo-full','fab fa-font-awesome-logo-full','fab fa-fonticons','fab fa-fonticons-fi','fas fa-football-ball','fab fa-fort-awesome','fab fa-fort-awesome-alt','fab fa-forumbee','fas fa-forward','fab fa-foursquare','fab fa-free-code-camp','fab fa-freebsd','fas fa-frog','fas fa-frown','far fa-frown','fas fa-frown-open','far fa-frown-open','fab fa-fulcrum','fas fa-funnel-dollar','fas fa-futbol','far fa-futbol','fab fa-galactic-republic','fab fa-galactic-senate','fas fa-gamepad','fas fa-gas-pump','fas fa-gavel','fas fa-gem','far fa-gem','fas fa-genderless','fab fa-get-pocket','fab fa-gg','fab fa-gg-circle','fas fa-ghost','fas fa-gift','fas fa-gifts','fab fa-git','fab fa-git-alt','fab fa-git-square','fab fa-github','fab fa-github-alt','fab fa-github-square','fab fa-gitkraken','fab fa-gitlab','fab fa-gitter','fas fa-glass-cheers','fas fa-glass-martini','fas fa-glass-martini-alt','fas fa-glass-whiskey','fas fa-glasses','fab fa-glide','fab fa-glide-g','fas fa-globe','fas fa-globe-africa','fas fa-globe-americas','fas fa-globe-asia','fas fa-globe-europe','fab fa-gofore','fas fa-golf-ball','fab fa-goodreads','fab fa-goodreads-g','fab fa-google','fab fa-google-drive','fab fa-google-pay','fab fa-google-play','fab fa-google-plus','fab fa-google-plus-g','fab fa-google-plus-square','fab fa-google-wallet','fas fa-gopuram','fas fa-graduation-cap','fab fa-gratipay','fab fa-grav','fas fa-greater-than','fas fa-greater-than-equal','fas fa-grimace','far fa-grimace','fas fa-grin','far fa-grin','fas fa-grin-alt','far fa-grin-alt','fas fa-grin-beam','far fa-grin-beam','fas fa-grin-beam-sweat','far fa-grin-beam-sweat','fas fa-grin-hearts','far fa-grin-hearts','fas fa-grin-squint','far fa-grin-squint','fas fa-grin-squint-tears','far fa-grin-squint-tears','fas fa-grin-stars','far fa-grin-stars','fas fa-grin-tears','far fa-grin-tears','fas fa-grin-tongue','far fa-grin-tongue','fas fa-grin-tongue-squint','far fa-grin-tongue-squint','fas fa-grin-tongue-wink','far fa-grin-tongue-wink','fas fa-grin-wink','far fa-grin-wink','fas fa-grip-horizontal','fas fa-grip-lines','fas fa-grip-lines-vertical','fas fa-grip-vertical','fab fa-gripfire','fab fa-grunt','fab fa-guilded','fas fa-guitar','fab fa-gulp','fas fa-h-square','fab fa-hacker-news','fab fa-hacker-news-square','fab fa-hackerrank','fas fa-hamburger','fas fa-hammer','fas fa-hamsa','fas fa-hand-holding','fas fa-hand-holding-heart','fas fa-hand-holding-medical','fas fa-hand-holding-usd','fas fa-hand-holding-water','fas fa-hand-lizard','far fa-hand-lizard','fas fa-hand-middle-finger','fas fa-hand-paper','far fa-hand-paper','fas fa-hand-peace','far fa-hand-peace','fas fa-hand-point-down','far fa-hand-point-down','fas fa-hand-point-left','far fa-hand-point-left','fas fa-hand-point-right','far fa-hand-point-right','fas fa-hand-point-up','far fa-hand-point-up','fas fa-hand-pointer','far fa-hand-pointer','fas fa-hand-rock','far fa-hand-rock','fas fa-hand-scissors','far fa-hand-scissors','fas fa-hand-sparkles','fas fa-hand-spock','far fa-hand-spock','fas fa-hands','fas fa-hands-helping','fas fa-hands-wash','fas fa-handshake','far fa-handshake','fas fa-handshake-alt-slash','fas fa-handshake-slash','fas fa-hanukiah','fas fa-hard-hat','fas fa-hashtag','fas fa-hat-cowboy','fas fa-hat-cowboy-side','fas fa-hat-wizard','fas fa-hdd','far fa-hdd','fas fa-head-side-cough','fas fa-head-side-cough-slash','fas fa-head-side-mask','fas fa-head-side-virus','fas fa-heading','fas fa-headphones','fas fa-headphones-alt','fas fa-headset','fas fa-heart','far fa-heart','fas fa-heart-broken','fas fa-heartbeat','fas fa-helicopter','fas fa-highlighter','fas fa-hiking','fas fa-hippo','fab fa-hips','fab fa-hire-a-helper','fas fa-history','fab fa-hive','fas fa-hockey-puck','fas fa-holly-berry','fas fa-home','fab fa-hooli','fab fa-hornbill','fas fa-horse','fas fa-horse-head','fas fa-hospital','far fa-hospital','fas fa-hospital-alt','fas fa-hospital-symbol','fas fa-hospital-user','fas fa-hot-tub','fas fa-hotdog','fas fa-hotel','fab fa-hotjar','fas fa-hourglass','far fa-hourglass','fas fa-hourglass-end','fas fa-hourglass-half','fas fa-hourglass-start','fas fa-house-damage','fas fa-house-user','fab fa-houzz','fas fa-hryvnia','fab fa-html5','fab fa-hubspot','fas fa-i-cursor','fas fa-ice-cream','fas fa-icicles','fas fa-icons','fas fa-id-badge','far fa-id-badge','fas fa-id-card','far fa-id-card','fas fa-id-card-alt','fab fa-ideal','fas fa-igloo','fas fa-image','far fa-image','fas fa-images','far fa-images','fab fa-imdb','fas fa-inbox','fas fa-indent','fas fa-industry','fas fa-infinity','fas fa-info','fas fa-info-circle','fab fa-innosoft','fab fa-instagram','fab fa-instagram-square','fab fa-instalod','fab fa-intercom','fab fa-internet-explorer','fab fa-invision','fab fa-ioxhost','fas fa-italic','fab fa-itch-io','fab fa-itunes','fab fa-itunes-note','fab fa-java','fas fa-jedi','fab fa-jedi-order','fab fa-jenkins','fab fa-jira','fab fa-joget','fas fa-joint','fab fa-joomla','fas fa-journal-whills','fab fa-js','fab fa-js-square','fab fa-jsfiddle','fas fa-kaaba','fab fa-kaggle','fas fa-key','fab fa-keybase','fas fa-keyboard','far fa-keyboard','fab fa-keycdn','fas fa-khanda','fab fa-kickstarter','fab fa-kickstarter-k','fas fa-kiss','far fa-kiss','fas fa-kiss-beam','far fa-kiss-beam','fas fa-kiss-wink-heart','far fa-kiss-wink-heart','fas fa-kiwi-bird','fab fa-korvue','fas fa-landmark','fas fa-language','fas fa-laptop','fas fa-laptop-code','fas fa-laptop-house','fas fa-laptop-medical','fab fa-laravel','fab fa-lastfm','fab fa-lastfm-square','fas fa-laugh','far fa-laugh','fas fa-laugh-beam','far fa-laugh-beam','fas fa-laugh-squint','far fa-laugh-squint','fas fa-laugh-wink','far fa-laugh-wink','fas fa-layer-group','fas fa-leaf','fab fa-leanpub','fas fa-lemon','far fa-lemon','fab fa-less','fas fa-less-than','fas fa-less-than-equal','fas fa-level-down-alt','fas fa-level-up-alt','fas fa-life-ring','far fa-life-ring','fas fa-lightbulb','far fa-lightbulb','fab fa-line','fas fa-link','fab fa-linkedin','fab fa-linkedin-in','fab fa-linode','fab fa-linux','fas fa-lira-sign','fas fa-list','fas fa-list-alt','far fa-list-alt','fas fa-list-ol','fas fa-list-ul','fas fa-location-arrow','fas fa-lock','fas fa-lock-open','fas fa-long-arrow-alt-down','fas fa-long-arrow-alt-left','fas fa-long-arrow-alt-right','fas fa-long-arrow-alt-up','fas fa-low-vision','fas fa-luggage-cart','fas fa-lungs','fas fa-lungs-virus','fab fa-lyft','fab fa-magento','fas fa-magic','fas fa-magnet','fas fa-mail-bulk','fab fa-mailchimp','fas fa-male','fab fa-mandalorian','fas fa-map','far fa-map','fas fa-map-marked','fas fa-map-marked-alt','fas fa-map-marker','fas fa-map-marker-alt','fas fa-map-pin','fas fa-map-signs','fab fa-markdown','fas fa-marker','fas fa-mars','fas fa-mars-double','fas fa-mars-stroke','fas fa-mars-stroke-h','fas fa-mars-stroke-v','fas fa-mask','fab fa-mastodon','fab fa-maxcdn','fab fa-mdb','fas fa-medal','fab fa-medapps','fab fa-medium','fab fa-medium-m','fas fa-medkit','fab fa-medrt','fab fa-meetup','fab fa-megaport','fas fa-meh','far fa-meh','fas fa-meh-blank','far fa-meh-blank','fas fa-meh-rolling-eyes','far fa-meh-rolling-eyes','fas fa-memory','fab fa-mendeley','fas fa-menorah','fas fa-mercury','fas fa-meteor','fab fa-microblog','fas fa-microchip','fas fa-microphone','fas fa-microphone-alt','fas fa-microphone-alt-slash','fas fa-microphone-slash','fas fa-microscope','fab fa-microsoft','fas fa-minus','fas fa-minus-circle','fas fa-minus-square','far fa-minus-square','fas fa-mitten','fab fa-mix','fab fa-mixcloud','fab fa-mixer','fab fa-mizuni','fas fa-mobile','fas fa-mobile-alt','fab fa-modx','fab fa-monero','fas fa-money-bill','fas fa-money-bill-alt','far fa-money-bill-alt','fas fa-money-bill-wave','fas fa-money-bill-wave-alt','fas fa-money-check','fas fa-money-check-alt','fas fa-monument','fas fa-moon','far fa-moon','fas fa-mortar-pestle','fas fa-mosque','fas fa-motorcycle','fas fa-mountain','fas fa-mouse','fas fa-mouse-pointer','fas fa-mug-hot','fas fa-music','fab fa-napster','fab fa-neos','fas fa-network-wired','fas fa-neuter','fas fa-newspaper','far fa-newspaper','fab fa-nimblr','fab fa-node','fab fa-node-js','fas fa-not-equal','fas fa-notes-medical','fab fa-npm','fab fa-ns8','fab fa-nutritionix','fas fa-object-group','far fa-object-group','fas fa-object-ungroup','far fa-object-ungroup','fab fa-octopus-deploy','fab fa-odnoklassniki','fab fa-odnoklassniki-square','fas fa-oil-can','fab fa-old-republic','fas fa-om','fab fa-opencart','fab fa-openid','fab fa-opera','fab fa-optin-monster','fab fa-orcid','fab fa-osi','fas fa-otter','fas fa-outdent','fab fa-page4','fab fa-pagelines','fas fa-pager','fas fa-paint-brush','fas fa-paint-roller','fas fa-palette','fab fa-palfed','fas fa-pallet','fas fa-paper-plane','far fa-paper-plane','fas fa-paperclip','fas fa-parachute-box','fas fa-paragraph','fas fa-parking','fas fa-passport','fas fa-pastafarianism','fas fa-paste','fab fa-patreon','fas fa-pause','fas fa-pause-circle','far fa-pause-circle','fas fa-paw','fab fa-paypal','fas fa-peace','fas fa-pen','fas fa-pen-alt','fas fa-pen-fancy','fas fa-pen-nib','fas fa-pen-square','fas fa-pencil-alt','fas fa-pencil-ruler','fab fa-penny-arcade','fas fa-people-arrows','fas fa-people-carry','fas fa-pepper-hot','fab fa-perbyte','fas fa-percent','fas fa-percentage','fab fa-periscope','fas fa-person-booth','fab fa-phabricator','fab fa-phoenix-framework','fab fa-phoenix-squadron','fas fa-phone','fas fa-phone-alt','fas fa-phone-slash','fas fa-phone-square','fas fa-phone-square-alt','fas fa-phone-volume','fas fa-photo-video','fab fa-php','fab fa-pied-piper','fab fa-pied-piper-alt','fab fa-pied-piper-hat','fab fa-pied-piper-pp','fab fa-pied-piper-square','fas fa-piggy-bank','fas fa-pills','fab fa-pinterest','fab fa-pinterest-p','fab fa-pinterest-square','fas fa-pizza-slice','fas fa-place-of-worship','fas fa-plane','fas fa-plane-arrival','fas fa-plane-departure','fas fa-plane-slash','fas fa-play','fas fa-play-circle','far fa-play-circle','fab fa-playstation','fas fa-plug','fas fa-plus','fas fa-plus-circle','fas fa-plus-square','far fa-plus-square','fas fa-podcast','fas fa-poll','fas fa-poll-h','fas fa-poo','fas fa-poo-storm','fas fa-poop','fas fa-portrait','fas fa-pound-sign','fas fa-power-off','fas fa-pray','fas fa-praying-hands','fas fa-prescription','fas fa-prescription-bottle','fas fa-prescription-bottle-alt','fas fa-print','fas fa-procedures','fab fa-product-hunt','fas fa-project-diagram','fas fa-pump-medical','fas fa-pump-soap','fab fa-pushed','fas fa-puzzle-piece','fab fa-python','fab fa-qq','fas fa-qrcode','fas fa-question','fas fa-question-circle','far fa-question-circle','fas fa-quidditch','fab fa-quinscape','fab fa-quora','fas fa-quote-left','fas fa-quote-right','fas fa-quran','fab fa-r-project','fas fa-radiation','fas fa-radiation-alt','fas fa-rainbow','fas fa-random','fab fa-raspberry-pi','fab fa-ravelry','fab fa-react','fab fa-reacteurope','fab fa-readme','fab fa-rebel','fas fa-receipt','fas fa-record-vinyl','fas fa-recycle','fab fa-red-river','fab fa-reddit','fab fa-reddit-alien','fab fa-reddit-square','fab fa-redhat','fas fa-redo','fas fa-redo-alt','fas fa-registered','far fa-registered','fas fa-remove-format','fab fa-renren','fas fa-reply','fas fa-reply-all','fab fa-replyd','fas fa-republican','fab fa-researchgate','fab fa-resolving','fas fa-restroom','fas fa-retweet','fab fa-rev','fas fa-ribbon','fas fa-ring','fas fa-road','fas fa-robot','fas fa-rocket','fab fa-rocketchat','fab fa-rockrms','fas fa-route','fas fa-rss','fas fa-rss-square','fas fa-ruble-sign','fas fa-ruler','fas fa-ruler-combined','fas fa-ruler-horizontal','fas fa-ruler-vertical','fas fa-running','fas fa-rupee-sign','fab fa-rust','fas fa-sad-cry','far fa-sad-cry','fas fa-sad-tear','far fa-sad-tear','fab fa-safari','fab fa-salesforce','fab fa-sass','fas fa-satellite','fas fa-satellite-dish','fas fa-save','far fa-save','fab fa-schlix','fas fa-school','fas fa-screwdriver','fab fa-scribd','fas fa-scroll','fas fa-sd-card','fas fa-search','fas fa-search-dollar','fas fa-search-location','fas fa-search-minus','fas fa-search-plus','fab fa-searchengin','fas fa-seedling','fab fa-sellcast','fab fa-sellsy','fas fa-server','fab fa-servicestack','fas fa-shapes','fas fa-share','fas fa-share-alt','fas fa-share-alt-square','fas fa-share-square','far fa-share-square','fas fa-shekel-sign','fas fa-shield-alt','fas fa-shield-virus','fas fa-ship','fas fa-shipping-fast','fab fa-shirtsinbulk','fas fa-shoe-prints','fab fa-shopify','fas fa-shopping-bag','fas fa-shopping-basket','fas fa-shopping-cart','fab fa-shopware','fas fa-shower','fas fa-shuttle-van','fas fa-sign','fas fa-sign-in-alt','fas fa-sign-language','fas fa-sign-out-alt','fas fa-signal','fas fa-signature','fas fa-sim-card','fab fa-simplybuilt','fas fa-sink','fab fa-sistrix','fas fa-sitemap','fab fa-sith','fas fa-skating','fab fa-sketch','fas fa-skiing','fas fa-skiing-nordic','fas fa-skull','fas fa-skull-crossbones','fab fa-skyatlas','fab fa-skype','fab fa-slack','fab fa-slack-hash','fas fa-slash','fas fa-sleigh','fas fa-sliders-h','fab fa-slideshare','fas fa-smile','far fa-smile','fas fa-smile-beam','far fa-smile-beam','fas fa-smile-wink','far fa-smile-wink','fas fa-smog','fas fa-smoking','fas fa-smoking-ban','fas fa-sms','fab fa-snapchat','fab fa-snapchat-ghost','fab fa-snapchat-square','fas fa-snowboarding','fas fa-snowflake','far fa-snowflake','fas fa-snowman','fas fa-snowplow','fas fa-soap','fas fa-socks','fas fa-solar-panel','fas fa-sort','fas fa-sort-alpha-down','fas fa-sort-alpha-down-alt','fas fa-sort-alpha-up','fas fa-sort-alpha-up-alt','fas fa-sort-amount-down','fas fa-sort-amount-down-alt','fas fa-sort-amount-up','fas fa-sort-amount-up-alt','fas fa-sort-down','fas fa-sort-numeric-down','fas fa-sort-numeric-down-alt','fas fa-sort-numeric-up','fas fa-sort-numeric-up-alt','fas fa-sort-up','fab fa-soundcloud','fab fa-sourcetree','fas fa-spa','fas fa-space-shuttle','fab fa-speakap','fab fa-speaker-deck','fas fa-spell-check','fas fa-spider','fas fa-spinner','fas fa-splotch','fab fa-spotify','fas fa-spray-can','fas fa-square','far fa-square','fas fa-square-full','fas fa-square-root-alt','fab fa-squarespace','fab fa-stack-exchange','fab fa-stack-overflow','fab fa-stackpath','fas fa-stamp','fas fa-star','far fa-star','fas fa-star-and-crescent','fas fa-star-half','far fa-star-half','fas fa-star-half-alt','fas fa-star-of-david','fas fa-star-of-life','fab fa-staylinked','fab fa-steam','fab fa-steam-square','fab fa-steam-symbol','fas fa-step-backward','fas fa-step-forward','fas fa-stethoscope','fab fa-sticker-mule','fas fa-sticky-note','far fa-sticky-note','fas fa-stop','fas fa-stop-circle','far fa-stop-circle','fas fa-stopwatch','fas fa-stopwatch-20','fas fa-store','fas fa-store-alt','fas fa-store-alt-slash','fas fa-store-slash','fab fa-strava','fas fa-stream','fas fa-street-view','fas fa-strikethrough','fab fa-stripe','fab fa-stripe-s','fas fa-stroopwafel','fab fa-studiovinari','fab fa-stumbleupon','fab fa-stumbleupon-circle','fas fa-subscript','fas fa-subway','fas fa-suitcase','fas fa-suitcase-rolling','fas fa-sun','far fa-sun','fab fa-superpowers','fas fa-superscript','fab fa-supple','fas fa-surprise','far fa-surprise','fab fa-suse','fas fa-swatchbook','fab fa-swift','fas fa-swimmer','fas fa-swimming-pool','fab fa-symfony','fas fa-synagogue','fas fa-sync','fas fa-sync-alt','fas fa-syringe','fas fa-table','fas fa-table-tennis','fas fa-tablet','fas fa-tablet-alt','fas fa-tablets','fas fa-tachometer-alt','fas fa-tag','fas fa-tags','fas fa-tape','fas fa-tasks','fas fa-taxi','fab fa-teamspeak','fas fa-teeth','fas fa-teeth-open','fab fa-telegram','fab fa-telegram-plane','fas fa-temperature-high','fas fa-temperature-low','fab fa-tencent-weibo','fas fa-tenge','fas fa-terminal','fas fa-text-height','fas fa-text-width','fas fa-th','fas fa-th-large','fas fa-th-list','fab fa-the-red-yeti','fas fa-theater-masks','fab fa-themeco','fab fa-themeisle','fas fa-thermometer','fas fa-thermometer-empty','fas fa-thermometer-full','fas fa-thermometer-half','fas fa-thermometer-quarter','fas fa-thermometer-three-quarters','fab fa-think-peaks','fas fa-thumbs-down','far fa-thumbs-down','fas fa-thumbs-up','far fa-thumbs-up','fas fa-thumbtack','fas fa-ticket-alt','fab fa-tiktok','fas fa-times','fas fa-times-circle','far fa-times-circle','fas fa-tint','fas fa-tint-slash','fas fa-tired','far fa-tired','fas fa-toggle-off','fas fa-toggle-on','fas fa-toilet','fas fa-toilet-paper','fas fa-toilet-paper-slash','fas fa-toolbox','fas fa-tools','fas fa-tooth','fas fa-torah','fas fa-torii-gate','fas fa-tractor','fab fa-trade-federation','fas fa-trademark','fas fa-traffic-light','fas fa-trailer','fas fa-train','fas fa-tram','fas fa-transgender','fas fa-transgender-alt','fas fa-trash','fas fa-trash-alt','far fa-trash-alt','fas fa-trash-restore','fas fa-trash-restore-alt','fas fa-tree','fab fa-trello','fas fa-trophy','fas fa-truck','fas fa-truck-loading','fas fa-truck-monster','fas fa-truck-moving','fas fa-truck-pickup','fas fa-tshirt','fas fa-tty','fab fa-tumblr','fab fa-tumblr-square','fas fa-tv','fab fa-twitch','fab fa-twitter','fab fa-twitter-square','fab fa-typo3','fab fa-uber','fab fa-ubuntu','fab fa-uikit','fab fa-umbraco','fas fa-umbrella','fas fa-umbrella-beach','fab fa-uncharted','fas fa-underline','fas fa-undo','fas fa-undo-alt','fab fa-uniregistry','fab fa-unity','fas fa-universal-access','fas fa-university','fas fa-unlink','fas fa-unlock','fas fa-unlock-alt','fab fa-unsplash','fab fa-untappd','fas fa-upload','fab fa-ups','fab fa-usb','fas fa-user','far fa-user','fas fa-user-alt','fas fa-user-alt-slash','fas fa-user-astronaut','fas fa-user-check','fas fa-user-circle','far fa-user-circle','fas fa-user-clock','fas fa-user-cog','fas fa-user-edit','fas fa-user-friends','fas fa-user-graduate','fas fa-user-injured','fas fa-user-lock','fas fa-user-md','fas fa-user-minus','fas fa-user-ninja','fas fa-user-nurse','fas fa-user-plus','fas fa-user-secret','fas fa-user-shield','fas fa-user-slash','fas fa-user-tag','fas fa-user-tie','fas fa-user-times','fas fa-users','fas fa-users-cog','fas fa-users-slash','fab fa-usps','fab fa-ussunnah','fas fa-utensil-spoon','fas fa-utensils','fab fa-vaadin','fas fa-vector-square','fas fa-venus','fas fa-venus-double','fas fa-venus-mars','fas fa-vest','fas fa-vest-patches','fab fa-viacoin','fab fa-viadeo','fab fa-viadeo-square','fas fa-vial','fas fa-vials','fab fa-viber','fas fa-video','fas fa-video-slash','fas fa-vihara','fab fa-vimeo','fab fa-vimeo-square','fab fa-vimeo-v','fab fa-vine','fas fa-virus','fas fa-virus-slash','fas fa-viruses','fab fa-vk','fab fa-vnv','fas fa-voicemail','fas fa-volleyball-ball','fas fa-volume-down','fas fa-volume-mute','fas fa-volume-off','fas fa-volume-up','fas fa-vote-yea','fas fa-vr-cardboard','fab fa-vuejs','fas fa-walking','fas fa-wallet','fas fa-warehouse','fab fa-watchman-monitoring','fas fa-water','fas fa-wave-square','fab fa-waze','fab fa-weebly','fab fa-weibo','fas fa-weight','fas fa-weight-hanging','fab fa-weixin','fab fa-whatsapp','fab fa-whatsapp-square','fas fa-wheelchair','fab fa-whmcs','fas fa-wifi','fab fa-wikipedia-w','fas fa-wind','fas fa-window-close','far fa-window-close','fas fa-window-maximize','far fa-window-maximize','fas fa-window-minimize','far fa-window-minimize','fas fa-window-restore','far fa-window-restore','fab fa-windows','fas fa-wine-bottle','fas fa-wine-glass','fas fa-wine-glass-alt','fab fa-wix','fab fa-wizards-of-the-coast','fab fa-wodu','fab fa-wolf-pack-battalion','fas fa-won-sign','fab fa-wordpress','fab fa-wordpress-simple','fab fa-wpbeginner','fab fa-wpexplorer','fab fa-wpforms','fab fa-wpressr','fas fa-wrench','fas fa-x-ray','fab fa-xbox','fab fa-xing','fab fa-xing-square','fab fa-y-combinator','fab fa-yahoo','fab fa-yammer','fab fa-yandex','fab fa-yandex-international','fab fa-yarn','fab fa-yelp','fas fa-yen-sign','fas fa-yin-yang','fab fa-yoast','fab fa-youtube','fab fa-youtube-square','fab fa-zhihu' ) + ) ); + } +} diff --git a/framework/fields/icon/icon.php b/framework/fields/icon/icon.php new file mode 100644 index 0000000..d8c7e2b --- /dev/null +++ b/framework/fields/icon/icon.php @@ -0,0 +1,71 @@ +field, array( + 'button_title' => esc_html__( 'Add Icon', 'wp_china_yes' ), + 'remove_title' => esc_html__( 'Remove Icon', 'wp_china_yes' ), + ) ); + + echo $this->field_before(); + + $nonce = wp_create_nonce( 'wp_china_yes_icon_nonce' ); + $hidden = ( empty( $this->value ) ) ? ' hidden' : ''; + + echo '
        '; + echo ''; + echo ''. $args['button_title'] .''; + echo ''. $args['remove_title'] .''; + echo 'field_attributes() .' />'; + echo '
        '; + + echo $this->field_after(); + + } + + public function enqueue() { + add_action( 'admin_footer', array( 'WP_CHINA_YES_Field_icon', 'add_footer_modal_icon' ) ); + add_action( 'customize_controls_print_footer_scripts', array( 'WP_CHINA_YES_Field_icon', 'add_footer_modal_icon' ) ); + } + + public static function add_footer_modal_icon() { + ?> + + field, array( + 'multiple' => false, + 'inline' => false, + 'options' => array(), + ) ); + + $inline = ( $args['inline'] ) ? ' wp_china_yes--inline-list' : ''; + + $value = ( is_array( $this->value ) ) ? $this->value : array_filter( (array) $this->value ); + + echo $this->field_before(); + + if ( ! empty( $args['options'] ) ) { + + echo '
        '; + + $num = 1; + + foreach ( $args['options'] as $key => $option ) { + + $type = ( $args['multiple'] ) ? 'checkbox' : 'radio'; + $extra = ( $args['multiple'] ) ? '[]' : ''; + $active = ( in_array( $key, $value ) ) ? ' wp_china_yes--active' : ''; + $checked = ( in_array( $key, $value ) ) ? ' checked' : ''; + + echo '
        '; + echo '
        '; + echo 'img-'. esc_attr( $num++ ) .''; + echo 'field_attributes() . esc_attr( $checked ) .'/>'; + echo '
        '; + echo '
        '; + + } + + echo '
        '; + + } + + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $bg_image = array(); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $elements = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output']; + + if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) { + $output = $elements .'{background-image:url('. $this->value .')'. $important .';}'; + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/index.php b/framework/fields/index.php new file mode 100644 index 0000000..49d255d --- /dev/null +++ b/framework/fields/index.php @@ -0,0 +1 @@ +field, array( + 'add_title' => esc_html__( 'Add Link', 'wp_china_yes' ), + 'edit_title' => esc_html__( 'Edit Link', 'wp_china_yes' ), + 'remove_title' => esc_html__( 'Remove Link', 'wp_china_yes' ), + ) ); + + $default_values = array( + 'url' => '', + 'text' => '', + 'target' => '', + ); + + $value = wp_parse_args( $this->value, $default_values ); + + $hidden = ( ! empty( $value['url'] ) || ! empty( $value['url'] ) || ! empty( $value['url'] ) ) ? ' hidden' : ''; + + $maybe_hidden = ( empty( $hidden ) ) ? ' hidden' : ''; + + echo $this->field_before(); + + echo ''; + + echo '
        '. sprintf( '{url:"%s", text:"%s", target:"%s"}', $value['url'], $value['text'], $value['target'] ) .'
        '; + + echo 'field_attributes( array( 'class' => 'wp_china_yes--url' ) ) .' />'; + echo ''; + echo ''; + + echo ''. $args['add_title'] .' '; + echo ''. $args['edit_title'] .' '; + echo ''. $args['remove_title'] .''; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'wplink' ) ) { + wp_enqueue_script( 'wplink' ); + } + + if ( ! wp_script_is( 'jquery-ui-autocomplete' ) ) { + wp_enqueue_script( 'jquery-ui-autocomplete' ); + } + + add_action( 'admin_print_footer_scripts', array( $this, 'add_wp_link_dialog' ) ); + + } + + public function add_wp_link_dialog() { + + if ( ! class_exists( '_WP_Editors' ) ) { + require_once ABSPATH . WPINC .'/class-wp-editor.php'; + } + + wp_print_styles( 'editor-buttons' ); + + _WP_Editors::wp_link_dialog(); + + } + + } +} diff --git a/framework/fields/link_color/link_color.php b/framework/fields/link_color/link_color.php new file mode 100644 index 0000000..ea4ad5c --- /dev/null +++ b/framework/fields/link_color/link_color.php @@ -0,0 +1,91 @@ +field, array( + 'color' => true, + 'hover' => true, + 'active' => false, + 'visited' => false, + 'focus' => false, + ) ); + + $default_values = array( + 'color' => '', + 'hover' => '', + 'active' => '', + 'visited' => '', + 'focus' => '', + ); + + $color_props = array( + 'color' => esc_html__( 'Normal', 'wp_china_yes' ), + 'hover' => esc_html__( 'Hover', 'wp_china_yes' ), + 'active' => esc_html__( 'Active', 'wp_china_yes' ), + 'visited' => esc_html__( 'Visited', 'wp_china_yes' ), + 'focus' => esc_html__( 'Focus', 'wp_china_yes' ) + ); + + $value = wp_parse_args( $this->value, $default_values ); + + echo $this->field_before(); + + foreach ( $color_props as $color_prop_key => $color_prop_value ) { + + if ( ! empty( $args[$color_prop_key] ) ) { + + $default_attr = ( ! empty( $this->field['default'][$color_prop_key] ) ) ? ' data-default-color="'. esc_attr( $this->field['default'][$color_prop_key] ) .'"' : ''; + + echo '
        '; + echo '
        '. esc_attr( $color_prop_value ) .'
        '; + echo 'field_attributes() .'/>'; + echo '
        '; + + } + + } + + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $elements = ( is_array( $this->field['output'] ) ) ? $this->field['output'] : array_filter( (array) $this->field['output'] ); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + + if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) { + foreach ( $elements as $element ) { + + if ( isset( $this->value['color'] ) && $this->value['color'] !== '' ) { $output .= $element .'{color:'. $this->value['color'] . $important .';}'; } + if ( isset( $this->value['hover'] ) && $this->value['hover'] !== '' ) { $output .= $element .':hover{color:'. $this->value['hover'] . $important .';}'; } + if ( isset( $this->value['active'] ) && $this->value['active'] !== '' ) { $output .= $element .':active{color:'. $this->value['active'] . $important .';}'; } + if ( isset( $this->value['visited'] ) && $this->value['visited'] !== '' ) { $output .= $element .':visited{color:'. $this->value['visited'] . $important .';}'; } + if ( isset( $this->value['focus'] ) && $this->value['focus'] !== '' ) { $output .= $element .':focus{color:'. $this->value['focus'] . $important .';}'; } + + } + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/map/map.php b/framework/fields/map/map.php new file mode 100644 index 0000000..2475a60 --- /dev/null +++ b/framework/fields/map/map.php @@ -0,0 +1,98 @@ +field, array( + 'placeholder' => esc_html__( 'Search...', 'wp_china_yes' ), + 'latitude_text' => esc_html__( 'Latitude', 'wp_china_yes' ), + 'longitude_text' => esc_html__( 'Longitude', 'wp_china_yes' ), + 'address_field' => '', + 'height' => '', + ) ); + + $value = wp_parse_args( $this->value, array( + 'address' => '', + 'latitude' => '20', + 'longitude' => '0', + 'zoom' => '2', + ) ); + + $default_settings = array( + 'center' => array( $value['latitude'], $value['longitude'] ), + 'zoom' => $value['zoom'], + 'scrollWheelZoom' => false, + ); + + $settings = ( ! empty( $this->field['settings'] ) ) ? $this->field['settings'] : array(); + $settings = wp_parse_args( $settings, $default_settings ); + + $style_attr = ( ! empty( $args['height'] ) ) ? ' style="min-height:'. esc_attr( $args['height'] ) .';"' : ''; + $placeholder = ( ! empty( $args['placeholder'] ) ) ? array( 'placeholder' => $args['placeholder'] ) : ''; + + echo $this->field_before(); + + if ( empty( $args['address_field'] ) ) { + echo ''; + } else { + echo '
        '; + } + + echo '
        '; + + echo '
        '; + + echo '
        '; + echo ''; + echo ''; + echo '
        '; + + echo '
        '; + echo ''; + echo ''; + echo '
        '; + + echo '
        '; + + echo ''; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'wp_china_yes-leaflet' ) ) { + wp_enqueue_script( 'wp_china_yes-leaflet', esc_url( $this->cdn_url . $this->version .'/dist/leaflet.js' ), array( 'wp_china_yes' ), $this->version, true ); + } + + if ( ! wp_style_is( 'wp_china_yes-leaflet' ) ) { + wp_enqueue_style( 'wp_china_yes-leaflet', esc_url( $this->cdn_url . $this->version .'/dist/leaflet.css' ), array(), $this->version ); + } + + if ( ! wp_script_is( 'jquery-ui-autocomplete' ) ) { + wp_enqueue_script( 'jquery-ui-autocomplete' ); + } + + } + + } +} diff --git a/framework/fields/media/media.php b/framework/fields/media/media.php new file mode 100644 index 0000000..0dc827d --- /dev/null +++ b/framework/fields/media/media.php @@ -0,0 +1,96 @@ +field, array( + 'url' => true, + 'preview' => true, + 'preview_width' => '', + 'preview_height' => '', + 'library' => array(), + 'button_title' => esc_html__( 'Upload', 'wp_china_yes' ), + 'remove_title' => esc_html__( 'Remove', 'wp_china_yes' ), + 'preview_size' => 'thumbnail', + ) ); + + $default_values = array( + 'url' => '', + 'id' => '', + 'width' => '', + 'height' => '', + 'thumbnail' => '', + 'alt' => '', + 'title' => '', + 'description' => '' + ); + + // fallback + if ( is_numeric( $this->value ) ) { + + $this->value = array( + 'id' => $this->value, + 'url' => wp_get_attachment_url( $this->value ), + 'thumbnail' => wp_get_attachment_image_src( $this->value, 'thumbnail', true )[0], + ); + + } + + $this->value = wp_parse_args( $this->value, $default_values ); + + $library = ( is_array( $args['library'] ) ) ? $args['library'] : array_filter( (array) $args['library'] ); + $library = ( ! empty( $library ) ) ? implode(',', $library ) : ''; + $preview_src = ( $args['preview_size'] !== 'thumbnail' ) ? $this->value['url'] : $this->value['thumbnail']; + $hidden_url = ( empty( $args['url'] ) ) ? ' hidden' : ''; + $hidden_auto = ( empty( $this->value['url'] ) ) ? ' hidden' : ''; + $placeholder = ( empty( $this->field['placeholder'] ) ) ? ' placeholder="'. esc_html__( 'Not selected', 'wp_china_yes' ) .'"' : ''; + + echo $this->field_before(); + + if ( ! empty( $args['preview'] ) ) { + + $preview_width = ( ! empty( $args['preview_width'] ) ) ? 'max-width:'. esc_attr( $args['preview_width'] ) .'px;' : ''; + $preview_height = ( ! empty( $args['preview_height'] ) ) ? 'max-height:'. esc_attr( $args['preview_height'] ) .'px;' : ''; + $preview_style = ( ! empty( $preview_width ) || ! empty( $preview_height ) ) ? ' style="'. esc_attr( $preview_width . $preview_height ) .'"': ''; + + echo '
        '; + echo '
        '; + echo ''; + echo '
        '; + echo '
        '; + + } + + echo '
        '; + echo 'field_attributes() . $placeholder .' />'; + echo ''. $args['button_title'] .''; + echo ( empty( $args['preview'] ) ) ? ''. $args['remove_title'] .'' : ''; + echo '
        '; + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/notice/notice.php b/framework/fields/notice/notice.php new file mode 100644 index 0000000..8cc42e6 --- /dev/null +++ b/framework/fields/notice/notice.php @@ -0,0 +1,26 @@ +field['style'] ) ) ? $this->field['style'] : 'normal'; + + echo ( ! empty( $this->field['content'] ) ) ? '
        '. $this->field['content'] .'
        ' : ''; + + } + + } +} diff --git a/framework/fields/number/number.php b/framework/fields/number/number.php new file mode 100644 index 0000000..60c21e9 --- /dev/null +++ b/framework/fields/number/number.php @@ -0,0 +1,63 @@ +field, array( + 'min' => 'any', + 'max' => 'any', + 'step' => 'any', + 'unit' => '', + ) ); + + echo $this->field_before(); + echo '
        '; + echo 'field_attributes() .' min="'. esc_attr( $args['min'] ) .'" max="'. esc_attr( $args['max'] ) .'" step="'. esc_attr( $args['step'] ) .'"/>'; + echo ( ! empty( $args['unit'] ) ) ? ''. esc_attr( $args['unit'] ) .'' : ''; + echo '
        '; + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $elements = ( is_array( $this->field['output'] ) ) ? $this->field['output'] : array_filter( (array) $this->field['output'] ); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $mode = ( ! empty( $this->field['output_mode'] ) ) ? $this->field['output_mode'] : 'width'; + $unit = ( ! empty( $this->field['unit'] ) ) ? $this->field['unit'] : 'px'; + + if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) { + foreach ( $elements as $key_property => $element ) { + if ( is_numeric( $key_property ) ) { + if ( $mode ) { + $output = implode( ',', $elements ) .'{'. $mode .':'. $this->value . $unit . $important .';}'; + } + break; + } else { + $output .= $element .'{'. $key_property .':'. $this->value . $unit . $important .'}'; + } + } + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/palette/palette.php b/framework/fields/palette/palette.php new file mode 100644 index 0000000..e8a95da --- /dev/null +++ b/framework/fields/palette/palette.php @@ -0,0 +1,58 @@ +field['options'] ) ) ? $this->field['options'] : array(); + + echo $this->field_before(); + + if ( ! empty( $palette ) ) { + + echo '
        '; + + foreach ( $palette as $key => $colors ) { + + $active = ( $key === $this->value ) ? ' wp_china_yes--active' : ''; + $checked = ( $key === $this->value ) ? ' checked' : ''; + + echo '
        '; + + if ( ! empty( $colors ) ) { + + foreach ( $colors as $color ) { + + echo ''; + + } + + } + + echo 'field_attributes() . esc_attr( $checked ) .'/>'; + echo '
        '; + + } + + echo '
        '; + + } + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/radio/radio.php b/framework/fields/radio/radio.php new file mode 100644 index 0000000..30768ff --- /dev/null +++ b/framework/fields/radio/radio.php @@ -0,0 +1,93 @@ +field, array( + 'inline' => false, + 'query_args' => array(), + ) ); + + $inline_class = ( $args['inline'] ) ? ' class="wp_china_yes--inline-list"' : ''; + + echo $this->field_before(); + + if ( isset( $this->field['options'] ) ) { + + $options = $this->field['options']; + $options = ( is_array( $options ) ) ? $options : array_filter( $this->field_data( $options, false, $args['query_args'] ) ); + + if ( is_array( $options ) && ! empty( $options ) ) { + + echo ''; + + foreach ( $options as $option_key => $option_value ) { + + if ( is_array( $option_value ) && ! empty( $option_value ) ) { + + echo '
      • '; + echo '
          '; + echo '
        • '. esc_attr( $option_key ) .'
        • '; + foreach ( $option_value as $sub_key => $sub_value ) { + $checked = ( $sub_key == $this->value ) ? ' checked' : ''; + echo '
        • '; + echo ''; + echo '
        • '; + } + echo '
        '; + echo '
      • '; + + } else { + + $checked = ( $option_key == $this->value ) ? ' checked' : ''; + + echo '
      • '; + echo ''; + echo '
      • '; + + } + + } + + echo ''; + + } else { + + echo ( ! empty( $this->field['empty_message'] ) ) ? esc_attr( $this->field['empty_message'] ) : esc_html__( 'No data available.', 'wp_china_yes' ); + + } + + } else { + + $label = ( isset( $this->field['label'] ) ) ? $this->field['label'] : ''; + echo ''; + + } + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/repeater/repeater.php b/framework/fields/repeater/repeater.php new file mode 100644 index 0000000..92f2ec2 --- /dev/null +++ b/framework/fields/repeater/repeater.php @@ -0,0 +1,108 @@ +field, array( + 'max' => 0, + 'min' => 0, + 'button_title' => '', + ) ); + + if ( preg_match( '/'. preg_quote( '['. $this->field['id'] .']' ) .'/', $this->unique ) ) { + + echo '
        '. esc_html__( 'Error: Field ID conflict.', 'wp_china_yes' ) .'
        '; + + } else { + + echo $this->field_before(); + + echo '
        '; + echo '
        '; + foreach ( $this->field['fields'] as $field ) { + + $field_default = ( isset( $field['default'] ) ) ? $field['default'] : ''; + $field_unique = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .'][0]' : $this->field['id'] .'[0]'; + + WP_CHINA_YES::field( $field, $field_default, '___'. $field_unique, 'field/repeater' ); + + } + echo '
        '; + echo '
        '; + echo '
        '; + echo ''; + echo ''; + echo ''; + echo '
        '; + echo '
        '; + echo '
        '; + + echo '
        '; + + if ( ! empty( $this->value ) && is_array( $this->value ) ) { + + $num = 0; + + foreach ( $this->value as $key => $value ) { + + echo '
        '; + echo '
        '; + foreach ( $this->field['fields'] as $field ) { + + $field_unique = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .']['. $num .']' : $this->field['id'] .'['. $num .']'; + $field_value = ( isset( $field['id'] ) && isset( $this->value[$key][$field['id']] ) ) ? $this->value[$key][$field['id']] : ''; + + WP_CHINA_YES::field( $field, $field_value, $field_unique, 'field/repeater' ); + + } + echo '
        '; + echo '
        '; + echo '
        '; + echo ''; + echo ''; + echo ''; + echo '
        '; + echo '
        '; + echo '
        '; + + $num++; + + } + + } + + echo '
        '; + + echo '
        '. esc_html__( 'You cannot add more.', 'wp_china_yes' ) .'
        '; + echo '
        '. esc_html__( 'You cannot remove more.', 'wp_china_yes' ) .'
        '; + echo ''. $args['button_title'] .''; + + echo $this->field_after(); + + } + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-sortable' ) ) { + wp_enqueue_script( 'jquery-ui-sortable' ); + } + + } + + } +} diff --git a/framework/fields/select/select.php b/framework/fields/select/select.php new file mode 100644 index 0000000..b15b6da --- /dev/null +++ b/framework/fields/select/select.php @@ -0,0 +1,132 @@ +field, array( + 'placeholder' => '', + 'chosen' => false, + 'multiple' => false, + 'sortable' => false, + 'ajax' => false, + 'settings' => array(), + 'query_args' => array(), + ) ); + + $this->value = ( is_array( $this->value ) ) ? $this->value : array_filter( (array) $this->value ); + + echo $this->field_before(); + + if ( isset( $this->field['options'] ) ) { + + if ( ! empty( $args['ajax'] ) ) { + $args['settings']['data']['type'] = $args['options']; + $args['settings']['data']['nonce'] = wp_create_nonce( 'wp_china_yes_chosen_ajax_nonce' ); + if ( ! empty( $args['query_args'] ) ) { + $args['settings']['data']['query_args'] = $args['query_args']; + } + } + + $chosen_rtl = ( is_rtl() ) ? ' chosen-rtl' : ''; + $multiple_name = ( $args['multiple'] ) ? '[]' : ''; + $multiple_attr = ( $args['multiple'] ) ? ' multiple="multiple"' : ''; + $chosen_sortable = ( $args['chosen'] && $args['sortable'] ) ? ' wp_china_yes-chosen-sortable' : ''; + $chosen_ajax = ( $args['chosen'] && $args['ajax'] ) ? ' wp_china_yes-chosen-ajax' : ''; + $placeholder_attr = ( $args['chosen'] && $args['placeholder'] ) ? ' data-placeholder="'. esc_attr( $args['placeholder'] ) .'"' : ''; + $field_class = ( $args['chosen'] ) ? ' class="wp_china_yes-chosen'. esc_attr( $chosen_rtl . $chosen_sortable . $chosen_ajax ) .'"' : ''; + $field_name = $this->field_name( $multiple_name ); + $field_attr = $this->field_attributes(); + $maybe_options = $this->field['options']; + $chosen_data_attr = ( $args['chosen'] && ! empty( $args['settings'] ) ) ? ' data-chosen-settings="'. esc_attr( json_encode( $args['settings'] ) ) .'"' : ''; + + if ( is_string( $maybe_options ) && ! empty( $args['chosen'] ) && ! empty( $args['ajax'] ) ) { + $options = $this->field_wp_query_data_title( $maybe_options, $this->value ); + } else if ( is_string( $maybe_options ) ) { + $options = $this->field_data( $maybe_options, false, $args['query_args'] ); + } else { + $options = $maybe_options; + } + + if ( ( is_array( $options ) && ! empty( $options ) ) || ( ! empty( $args['chosen'] ) && ! empty( $args['ajax'] ) ) ) { + + if ( ! empty( $args['chosen'] ) && ! empty( $args['multiple'] ) ) { + + echo ''; + + $field_name = '_pseudo'; + $field_attr = ''; + + } + + // These attributes has been serialized above. + echo ''; + + } else { + + echo ( ! empty( $this->field['empty_message'] ) ) ? esc_attr( $this->field['empty_message'] ) : esc_html__( 'No data available.', 'wp_china_yes' ); + + } + + } + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-sortable' ) ) { + wp_enqueue_script( 'jquery-ui-sortable' ); + } + + } + + } +} diff --git a/framework/fields/slider/slider.php b/framework/fields/slider/slider.php new file mode 100644 index 0000000..3a6c320 --- /dev/null +++ b/framework/fields/slider/slider.php @@ -0,0 +1,78 @@ +field, array( + 'max' => 100, + 'min' => 0, + 'step' => 1, + 'unit' => '', + ) ); + + $is_unit = ( ! empty( $args['unit'] ) ) ? ' wp_china_yes--is-unit' : ''; + + echo $this->field_before(); + + echo '
        '; + echo '
        '; + echo '
        '; + echo 'field_attributes( array( 'class' => 'wp_china_yes-input-number'. esc_attr( $is_unit ) ) ) .' data-min="'. esc_attr( $args['min'] ) .'" data-max="'. esc_attr( $args['max'] ) .'" data-step="'. esc_attr( $args['step'] ) .'" step="any" />'; + echo ( ! empty( $args['unit'] ) ) ? ''. esc_attr( $args['unit'] ) .'' : ''; + echo '
        '; + echo '
        '; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-slider' ) ) { + wp_enqueue_script( 'jquery-ui-slider' ); + } + + } + + public function output() { + + $output = ''; + $elements = ( is_array( $this->field['output'] ) ) ? $this->field['output'] : array_filter( (array) $this->field['output'] ); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $mode = ( ! empty( $this->field['output_mode'] ) ) ? $this->field['output_mode'] : 'width'; + $unit = ( ! empty( $this->field['unit'] ) ) ? $this->field['unit'] : 'px'; + + if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) { + foreach ( $elements as $key_property => $element ) { + if ( is_numeric( $key_property ) ) { + if ( $mode ) { + $output = implode( ',', $elements ) .'{'. $mode .':'. $this->value . $unit . $important .';}'; + } + break; + } else { + $output .= $element .'{'. $key_property .':'. $this->value . $unit . $important .'}'; + } + } + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/sortable/sortable.php b/framework/fields/sortable/sortable.php new file mode 100644 index 0000000..8cc6dbe --- /dev/null +++ b/framework/fields/sortable/sortable.php @@ -0,0 +1,87 @@ +field_before(); + + echo '
        '; + + $pre_sortby = array(); + $pre_fields = array(); + + // Add array-keys to defined fields for sort by + foreach ( $this->field['fields'] as $key => $field ) { + $pre_fields[$field['id']] = $field; + } + + // Set sort by by saved-value or default-value + if ( ! empty( $this->value ) ) { + + foreach ( $this->value as $key => $value ) { + $pre_sortby[$key] = $pre_fields[$key]; + } + + $diff = array_diff_key( $pre_fields, $this->value ); + + if( ! empty( $diff ) ) { + $pre_sortby = array_merge( $pre_sortby, $diff ); + } + + } else { + + foreach ( $pre_fields as $key => $value ) { + $pre_sortby[$key] = $value; + } + + } + + foreach ( $pre_sortby as $key => $field ) { + + echo '
        '; + + echo '
        '; + + $field_default = ( isset( $this->field['default'][$key] ) ) ? $this->field['default'][$key] : ''; + $field_value = ( isset( $this->value[$key] ) ) ? $this->value[$key] : $field_default; + $unique_id = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .']' : $this->field['id']; + + WP_CHINA_YES::field( $field, $field_value, $unique_id, 'field/sortable' ); + + echo '
        '; + + echo '
        '; + + echo '
        '; + + } + + echo '
        '; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-sortable' ) ) { + wp_enqueue_script( 'jquery-ui-sortable' ); + } + + } + + } +} diff --git a/framework/fields/sorter/sorter.php b/framework/fields/sorter/sorter.php new file mode 100644 index 0000000..6037675 --- /dev/null +++ b/framework/fields/sorter/sorter.php @@ -0,0 +1,76 @@ +field, array( + 'disabled' => true, + 'enabled_title' => esc_html__( 'Enabled', 'wp_china_yes' ), + 'disabled_title' => esc_html__( 'Disabled', 'wp_china_yes' ), + ) ); + + echo $this->field_before(); + + $this->value = ( ! empty( $this->value ) ) ? $this->value : $this->field['default']; + $enabled_options = ( ! empty( $this->value['enabled'] ) ) ? $this->value['enabled'] : array(); + $disabled_options = ( ! empty( $this->value['disabled'] ) ) ? $this->value['disabled'] : array(); + + echo '
        '; + + echo ( $args['disabled'] ) ? '
        ' : ''; + + echo ( ! empty( $args['enabled_title'] ) ) ? '
        '. esc_attr( $args['enabled_title'] ) .'
        ' : ''; + echo '
          '; + if ( ! empty( $enabled_options ) ) { + foreach ( $enabled_options as $key => $value ) { + echo '
        • '; + } + } + echo '
        '; + + // Check for hide/show disabled section + if ( $args['disabled'] ) { + + echo '
        '; + + echo '
        '; + echo ( ! empty( $args['disabled_title'] ) ) ? '
        '. esc_attr( $args['disabled_title'] ) .'
        ' : ''; + echo '
          '; + if ( ! empty( $disabled_options ) ) { + foreach ( $disabled_options as $key => $value ) { + echo '
        • '; + } + } + echo '
        '; + echo '
        '; + + } + + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-sortable' ) ) { + wp_enqueue_script( 'jquery-ui-sortable' ); + } + + } + + } +} diff --git a/framework/fields/spacing/spacing.php b/framework/fields/spacing/spacing.php new file mode 100644 index 0000000..1cc92b2 --- /dev/null +++ b/framework/fields/spacing/spacing.php @@ -0,0 +1,171 @@ +field, array( + 'top_icon' => '', + 'right_icon' => '', + 'bottom_icon' => '', + 'left_icon' => '', + 'all_icon' => '', + 'top_placeholder' => esc_html__( 'top', 'wp_china_yes' ), + 'right_placeholder' => esc_html__( 'right', 'wp_china_yes' ), + 'bottom_placeholder' => esc_html__( 'bottom', 'wp_china_yes' ), + 'left_placeholder' => esc_html__( 'left', 'wp_china_yes' ), + 'all_placeholder' => esc_html__( 'all', 'wp_china_yes' ), + 'top' => true, + 'left' => true, + 'bottom' => true, + 'right' => true, + 'unit' => true, + 'show_units' => true, + 'all' => false, + 'units' => array( 'px', '%', 'em' ) + ) ); + + $default_values = array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + 'all' => '', + 'unit' => 'px', + ); + + $value = wp_parse_args( $this->value, $default_values ); + $unit = ( count( $args['units'] ) === 1 && ! empty( $args['unit'] ) ) ? $args['units'][0] : ''; + $is_unit = ( ! empty( $unit ) ) ? ' wp_china_yes--is-unit' : ''; + + echo $this->field_before(); + + echo '
        '; + + if ( ! empty( $args['all'] ) ) { + + $placeholder = ( ! empty( $args['all_placeholder'] ) ) ? ' placeholder="'. esc_attr( $args['all_placeholder'] ) .'"' : ''; + + echo '
        '; + echo ( ! empty( $args['all_icon'] ) ) ? ''. $args['all_icon'] .'' : ''; + echo ''; + echo ( $unit ) ? ''. esc_attr( $args['units'][0] ) .'' : ''; + echo '
        '; + + } else { + + $properties = array(); + + foreach ( array( 'top', 'right', 'bottom', 'left' ) as $prop ) { + if ( ! empty( $args[$prop] ) ) { + $properties[] = $prop; + } + } + + $properties = ( $properties === array( 'right', 'left' ) ) ? array_reverse( $properties ) : $properties; + + foreach ( $properties as $property ) { + + $placeholder = ( ! empty( $args[$property.'_placeholder'] ) ) ? ' placeholder="'. esc_attr( $args[$property.'_placeholder'] ) .'"' : ''; + + echo '
        '; + echo ( ! empty( $args[$property.'_icon'] ) ) ? ''. $args[$property.'_icon'] .'' : ''; + echo ''; + echo ( $unit ) ? ''. esc_attr( $args['units'][0] ) .'' : ''; + echo '
        '; + + } + + } + + if ( ! empty( $args['unit'] ) && ! empty( $args['show_units'] ) && count( $args['units'] ) > 1 ) { + echo '
        '; + echo ''; + echo '
        '; + } + + echo '
        '; + + echo $this->field_after(); + + } + + public function output() { + + $output = ''; + $element = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output']; + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $unit = ( ! empty( $this->value['unit'] ) ) ? $this->value['unit'] : 'px'; + + $mode = ( ! empty( $this->field['output_mode'] ) ) ? $this->field['output_mode'] : 'padding'; + + if ( $mode === 'border-radius' || $mode === 'radius' ) { + + $top = 'border-top-left-radius'; + $right = 'border-top-right-radius'; + $bottom = 'border-bottom-right-radius'; + $left = 'border-bottom-left-radius'; + + } else if ( $mode === 'relative' || $mode === 'absolute' || $mode === 'none' ) { + + $top = 'top'; + $right = 'right'; + $bottom = 'bottom'; + $left = 'left'; + + } else { + + $top = $mode .'-top'; + $right = $mode .'-right'; + $bottom = $mode .'-bottom'; + $left = $mode .'-left'; + + } + + if ( ! empty( $this->field['all'] ) && isset( $this->value['all'] ) && $this->value['all'] !== '' ) { + + $output = $element .'{'; + $output .= $top .':'. $this->value['all'] . $unit . $important .';'; + $output .= $right .':'. $this->value['all'] . $unit . $important .';'; + $output .= $bottom .':'. $this->value['all'] . $unit . $important .';'; + $output .= $left .':'. $this->value['all'] . $unit . $important .';'; + $output .= '}'; + + } else { + + $top = ( isset( $this->value['top'] ) && $this->value['top'] !== '' ) ? $top .':'. $this->value['top'] . $unit . $important .';' : ''; + $right = ( isset( $this->value['right'] ) && $this->value['right'] !== '' ) ? $right .':'. $this->value['right'] . $unit . $important .';' : ''; + $bottom = ( isset( $this->value['bottom'] ) && $this->value['bottom'] !== '' ) ? $bottom .':'. $this->value['bottom'] . $unit . $important .';' : ''; + $left = ( isset( $this->value['left'] ) && $this->value['left'] !== '' ) ? $left .':'. $this->value['left'] . $unit . $important .';' : ''; + + if ( $top !== '' || $right !== '' || $bottom !== '' || $left !== '' ) { + $output = $element .'{'. $top . $right . $bottom . $left .'}'; + } + + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/spinner/spinner.php b/framework/fields/spinner/spinner.php new file mode 100644 index 0000000..3e657a8 --- /dev/null +++ b/framework/fields/spinner/spinner.php @@ -0,0 +1,70 @@ +field, array( + 'max' => 100, + 'min' => 0, + 'step' => 1, + 'unit' => '', + ) ); + + echo $this->field_before(); + + echo '
        field_attributes( array( 'class' => 'wp_china_yes-input-number' ) ) .' data-min="'. esc_attr( $args['min'] ) .'" data-max="'. esc_attr( $args['max'] ) .'" data-step="'. esc_attr( $args['step'] ) .'" data-unit="'. esc_attr( $args['unit'] ) .'" step="any" />
        '; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( ! wp_script_is( 'jquery-ui-spinner' ) ) { + wp_enqueue_script( 'jquery-ui-spinner' ); + } + + } + + public function output() { + + $output = ''; + $elements = ( is_array( $this->field['output'] ) ) ? $this->field['output'] : array_filter( (array) $this->field['output'] ); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $mode = ( ! empty( $this->field['output_mode'] ) ) ? $this->field['output_mode'] : 'width'; + $unit = ( ! empty( $this->field['unit'] ) ) ? $this->field['unit'] : 'px'; + + if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) { + foreach ( $elements as $key_property => $element ) { + if ( is_numeric( $key_property ) ) { + if ( $mode ) { + $output = implode( ',', $elements ) .'{'. $mode .':'. $this->value . $unit . $important .';}'; + } + break; + } else { + $output .= $element .'{'. $key_property .':'. $this->value . $unit . $important .'}'; + } + } + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/subheading/subheading.php b/framework/fields/subheading/subheading.php new file mode 100644 index 0000000..9cf27c6 --- /dev/null +++ b/framework/fields/subheading/subheading.php @@ -0,0 +1,24 @@ +field['content'] ) ) ? $this->field['content'] : ''; + + } + + } +} diff --git a/framework/fields/submessage/submessage.php b/framework/fields/submessage/submessage.php new file mode 100644 index 0000000..4d34b09 --- /dev/null +++ b/framework/fields/submessage/submessage.php @@ -0,0 +1,26 @@ +field['style'] ) ) ? $this->field['style'] : 'normal'; + + echo '
        '. $this->field['content'] .'
        '; + + } + + } +} diff --git a/framework/fields/switcher/switcher.php b/framework/fields/switcher/switcher.php new file mode 100644 index 0000000..f2b41b2 --- /dev/null +++ b/framework/fields/switcher/switcher.php @@ -0,0 +1,40 @@ +value ) ) ? ' wp_china_yes--active' : ''; + $text_on = ( ! empty( $this->field['text_on'] ) ) ? $this->field['text_on'] : esc_html__( 'On', 'wp_china_yes' ); + $text_off = ( ! empty( $this->field['text_off'] ) ) ? $this->field['text_off'] : esc_html__( 'Off', 'wp_china_yes' ); + $text_width = ( ! empty( $this->field['text_width'] ) ) ? ' style="width: '. esc_attr( $this->field['text_width'] ) .'px;"': ''; + + echo $this->field_before(); + + echo '
        '; + echo ''. esc_attr( $text_on ) .''; + echo ''. esc_attr( $text_off ) .''; + echo ''; + echo 'field_attributes() .' />'; + echo '
        '; + + echo ( ! empty( $this->field['label'] ) ) ? ''. esc_attr( $this->field['label'] ) . '' : ''; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/tabbed/tabbed.php b/framework/fields/tabbed/tabbed.php new file mode 100644 index 0000000..240aa1c --- /dev/null +++ b/framework/fields/tabbed/tabbed.php @@ -0,0 +1,64 @@ +field_before(); + + echo '
        '; + foreach ( $this->field['tabs'] as $key => $tab ) { + + $tabbed_icon = ( ! empty( $tab['icon'] ) ) ? '' : ''; + $tabbed_active = ( empty( $key ) ) ? 'wp_china_yes-tabbed-active' : ''; + + echo ''. $tabbed_icon . esc_attr( $tab['title'] ) .''; + + } + echo '
        '; + + echo '
        '; + foreach ( $this->field['tabs'] as $key => $tab ) { + + $tabbed_hidden = ( ! empty( $key ) ) ? ' hidden' : ''; + + echo '
        '; + + foreach ( $tab['fields'] as $field ) { + + if ( in_array( $field['type'], $unallows ) ) { $field['_notice'] = true; } + + $field_id = ( isset( $field['id'] ) ) ? $field['id'] : ''; + $field_default = ( isset( $field['default'] ) ) ? $field['default'] : ''; + $field_value = ( isset( $this->value[$field_id] ) ) ? $this->value[$field_id] : $field_default; + $unique_id = ( ! empty( $this->unique ) ) ? $this->unique .'['. $this->field['id'] .']' : $this->field['id']; + + WP_CHINA_YES::field( $field, $field_value, $unique_id, 'field/tabbed' ); + + } + + echo '
        '; + + } + echo '
        '; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/text/text.php b/framework/fields/text/text.php new file mode 100644 index 0000000..3daffc9 --- /dev/null +++ b/framework/fields/text/text.php @@ -0,0 +1,30 @@ +field['attributes']['type'] ) ) ? $this->field['attributes']['type'] : 'text'; + + echo $this->field_before(); + + echo 'field_attributes() .' />'; + + echo $this->field_after(); + + } + + } +} diff --git a/framework/fields/textarea/textarea.php b/framework/fields/textarea/textarea.php new file mode 100644 index 0000000..b67fbe3 --- /dev/null +++ b/framework/fields/textarea/textarea.php @@ -0,0 +1,58 @@ +field_before(); + echo $this->shortcoder(); + echo ''; + echo $this->field_after(); + + } + + public function shortcoder() { + + if ( ! empty( $this->field['shortcoder'] ) ) { + + $shortcodes = ( is_array( $this->field['shortcoder'] ) ) ? $this->field['shortcoder'] : array_filter( (array) $this->field['shortcoder'] ); + $instances = ( ! empty( WP_CHINA_YES::$shortcode_instances ) ) ? WP_CHINA_YES::$shortcode_instances : array(); + + if ( ! empty( $shortcodes ) && ! empty( $instances ) ) { + + foreach ( $shortcodes as $shortcode ) { + + foreach ( $instances as $instance ) { + + if ( $instance['modal_id'] === $shortcode ) { + + $id = $instance['modal_id']; + $title = $instance['button_title']; + + echo ''. esc_html( $title ) .''; + + } + + } + + } + + } + + } + + } + } +} diff --git a/framework/fields/typography/google-fonts.php b/framework/fields/typography/google-fonts.php new file mode 100644 index 0000000..b7cad4d --- /dev/null +++ b/framework/fields/typography/google-fonts.php @@ -0,0 +1,1607 @@ +[['normal','italic'],['latin','latin-ext']], + 'ADLaM Display'=>[['normal'],['adlam','latin','latin-ext']], + 'AR One Sans'=>[['normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Abel'=>[['normal'],['latin']], + 'Abhaya Libre'=>[['normal','500','600','700','800'],['latin','latin-ext','sinhala']], + 'Aboreto'=>[['normal'],['latin','latin-ext']], + 'Abril Fatface'=>[['normal'],['latin','latin-ext']], + 'Abyssinica SIL'=>[['normal'],['ethiopic','latin','latin-ext']], + 'Aclonica'=>[['normal'],['latin']], + 'Acme'=>[['normal'],['latin']], + 'Actor'=>[['normal'],['latin']], + 'Adamina'=>[['normal'],['latin']], + 'Advent Pro'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext']], + 'Afacad'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic-ext','latin','latin-ext','math','symbols','vietnamese']], + 'Agbalumo'=>[['normal'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Agdasima'=>[['normal','700'],['latin','latin-ext']], + 'Aguafina Script'=>[['normal'],['latin','latin-ext']], + 'Akatab'=>[['normal','500','600','700','800','900'],['latin','latin-ext','tifinagh']], + 'Akaya Kanadaka'=>[['normal'],['kannada','latin','latin-ext']], + 'Akaya Telivigala'=>[['normal'],['latin','latin-ext','telugu']], + 'Akronim'=>[['normal'],['latin','latin-ext']], + 'Akshar'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Aladin'=>[['normal'],['latin','latin-ext']], + 'Alata'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Alatsi'=>[['normal'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Albert Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Aldrich'=>[['normal'],['latin']], + 'Alef'=>[['normal','700'],['hebrew','latin']], + 'Alegreya'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Alegreya SC'=>[['normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Alegreya Sans'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Alegreya Sans SC'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Aleo'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Alex Brush'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Alexandria'=>[['100','200','300','normal','500','600','700','800','900'],['arabic','latin','latin-ext','vietnamese']], + 'Alfa Slab One'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Alice'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Alike'=>[['normal'],['latin','latin-ext','math','symbols']], + 'Alike Angular'=>[['normal'],['latin','latin-ext','math','symbols']], + 'Alkalami'=>[['normal'],['arabic','latin','latin-ext']], + 'Alkatra'=>[['normal','500','600','700'],['bengali','devanagari','latin','latin-ext','oriya']], + 'Allan'=>[['normal','700'],['latin','latin-ext']], + 'Allerta'=>[['normal'],['latin']], + 'Allerta Stencil'=>[['normal'],['latin']], + 'Allison'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Allura'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Almarai'=>[['300','normal','700','800'],['arabic']], + 'Almendra'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Almendra Display'=>[['normal'],['latin','latin-ext']], + 'Almendra SC'=>[['normal'],['latin']], + 'Alumni Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Alumni Sans Collegiate One'=>[['normal','italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'Alumni Sans Inline One'=>[['normal','italic'],['latin','latin-ext','vietnamese']], + 'Alumni Sans Pinstripe'=>[['normal','italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Amarante'=>[['normal'],['latin','latin-ext']], + 'Amaranth'=>[['normal','italic','700','700italic'],['latin']], + 'Amatic SC'=>[['normal','700'],['cyrillic','hebrew','latin','latin-ext','vietnamese']], + 'Amethysta'=>[['normal'],['latin']], + 'Amiko'=>[['normal','600','700'],['devanagari','latin','latin-ext']], + 'Amiri'=>[['normal','italic','700','700italic'],['arabic','latin','latin-ext']], + 'Amiri Quran'=>[['normal'],['arabic','latin']], + 'Amita'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Anaheim'=>[['normal'],['latin','latin-ext']], + 'Andada Pro'=>[['normal','500','600','700','800','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext','vietnamese']], + 'Andika'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Anek Bangla'=>[['100','200','300','normal','500','600','700','800'],['bengali','latin','latin-ext']], + 'Anek Devanagari'=>[['100','200','300','normal','500','600','700','800'],['devanagari','latin','latin-ext']], + 'Anek Gujarati'=>[['100','200','300','normal','500','600','700','800'],['gujarati','latin','latin-ext']], + 'Anek Gurmukhi'=>[['100','200','300','normal','500','600','700','800'],['gurmukhi','latin','latin-ext']], + 'Anek Kannada'=>[['100','200','300','normal','500','600','700','800'],['kannada','latin','latin-ext']], + 'Anek Latin'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']], + 'Anek Malayalam'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','malayalam']], + 'Anek Odia'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','oriya']], + 'Anek Tamil'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','tamil']], + 'Anek Telugu'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','telugu']], + 'Angkor'=>[['normal'],['khmer','latin']], + 'Annie Use Your Telescope'=>[['normal'],['latin']], + 'Anonymous Pro'=>[['normal','italic','700','700italic'],['cyrillic','greek','latin','latin-ext']], + 'Antic'=>[['normal'],['latin']], + 'Antic Didone'=>[['normal'],['latin']], + 'Antic Slab'=>[['normal'],['latin']], + 'Anton'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Antonio'=>[['100','200','300','normal','500','600','700'],['latin','latin-ext']], + 'Anuphan'=>[['100','200','300','normal','500','600','700'],['cyrillic-ext','latin','latin-ext','thai','vietnamese']], + 'Anybody'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Aoboshi One'=>[['normal'],['japanese','latin','latin-ext']], + 'Arapey'=>[['normal','italic'],['latin']], + 'Arbutus'=>[['normal'],['latin','latin-ext']], + 'Arbutus Slab'=>[['normal'],['latin','latin-ext']], + 'Architects Daughter'=>[['normal'],['latin']], + 'Archivo'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Archivo Black'=>[['normal'],['latin','latin-ext']], + 'Archivo Narrow'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Are You Serious'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Aref Ruqaa'=>[['normal','700'],['arabic','latin','latin-ext']], + 'Aref Ruqaa Ink'=>[['normal','700'],['arabic','latin','latin-ext']], + 'Arima'=>[['100','200','300','normal','500','600','700'],['greek','greek-ext','latin','latin-ext','malayalam','tamil','vietnamese']], + 'Arimo'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','vietnamese']], + 'Arizonia'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Armata'=>[['normal'],['latin','latin-ext']], + 'Arsenal'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Artifika'=>[['normal'],['latin']], + 'Arvo'=>[['normal','italic','700','700italic'],['latin']], + 'Arya'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Asap'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Asap Condensed'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Asar'=>[['normal'],['devanagari','latin','latin-ext']], + 'Asset'=>[['normal'],['latin']], + 'Assistant'=>[['200','300','normal','500','600','700','800'],['hebrew','latin','latin-ext']], + 'Astloch'=>[['normal','700'],['latin']], + 'Asul'=>[['normal','700'],['latin']], + 'Athiti'=>[['200','300','normal','500','600','700'],['latin','latin-ext','thai','vietnamese']], + 'Atkinson Hyperlegible'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Atma'=>[['300','normal','500','600','700'],['bengali','latin','latin-ext']], + 'Atomic Age'=>[['normal'],['latin']], + 'Aubrey'=>[['normal'],['latin']], + 'Audiowide'=>[['normal'],['latin','latin-ext']], + 'Autour One'=>[['normal'],['latin','latin-ext']], + 'Average'=>[['normal'],['latin','latin-ext']], + 'Average Sans'=>[['normal'],['latin','latin-ext']], + 'Averia Gruesa Libre'=>[['normal'],['latin','latin-ext']], + 'Averia Libre'=>[['300','300italic','normal','italic','700','700italic'],['latin']], + 'Averia Sans Libre'=>[['300','300italic','normal','italic','700','700italic'],['latin']], + 'Averia Serif Libre'=>[['300','300italic','normal','italic','700','700italic'],['latin']], + 'Azeret Mono'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'B612'=>[['normal','italic','700','700italic'],['latin']], + 'B612 Mono'=>[['normal','italic','700','700italic'],['latin']], + 'BIZ UDGothic'=>[['normal','700'],['cyrillic','greek-ext','japanese','latin','latin-ext']], + 'BIZ UDMincho'=>[['normal','700'],['cyrillic','greek-ext','japanese','latin','latin-ext']], + 'BIZ UDPGothic'=>[['normal','700'],['cyrillic','greek-ext','japanese','latin','latin-ext']], + 'BIZ UDPMincho'=>[['normal','700'],['cyrillic','greek-ext','japanese','latin','latin-ext']], + 'Babylonica'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bacasime Antique'=>[['normal'],['latin','latin-ext']], + 'Bad Script'=>[['normal'],['cyrillic','latin']], + 'Bagel Fat One'=>[['normal'],['korean','latin','latin-ext']], + 'Bahiana'=>[['normal'],['latin','latin-ext']], + 'Bahianita'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bai Jamjuree'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Bakbak One'=>[['normal'],['devanagari','latin','latin-ext']], + 'Ballet'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Baloo 2'=>[['normal','500','600','700','800'],['devanagari','latin','latin-ext','vietnamese']], + 'Baloo Bhai 2'=>[['normal','500','600','700','800'],['gujarati','latin','latin-ext','vietnamese']], + 'Baloo Bhaijaan 2'=>[['normal','500','600','700','800'],['arabic','latin','latin-ext','vietnamese']], + 'Baloo Bhaina 2'=>[['normal','500','600','700','800'],['latin','latin-ext','oriya','vietnamese']], + 'Baloo Chettan 2'=>[['normal','500','600','700','800'],['latin','latin-ext','malayalam','vietnamese']], + 'Baloo Da 2'=>[['normal','500','600','700','800'],['bengali','latin','latin-ext','vietnamese']], + 'Baloo Paaji 2'=>[['normal','500','600','700','800'],['gurmukhi','latin','latin-ext','vietnamese']], + 'Baloo Tamma 2'=>[['normal','500','600','700','800'],['kannada','latin','latin-ext','vietnamese']], + 'Baloo Tammudu 2'=>[['normal','500','600','700','800'],['latin','latin-ext','telugu','vietnamese']], + 'Baloo Thambi 2'=>[['normal','500','600','700','800'],['latin','latin-ext','tamil','vietnamese']], + 'Balsamiq Sans'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Balthazar'=>[['normal'],['latin']], + 'Bangers'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Barlow'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Barlow Condensed'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Barlow Semi Condensed'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Barriecito'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Barrio'=>[['normal'],['latin','latin-ext']], + 'Basic'=>[['normal'],['latin','latin-ext']], + 'Baskervville'=>[['normal','italic'],['latin','latin-ext']], + 'Battambang'=>[['100','300','normal','700','900'],['khmer','latin']], + 'Baumans'=>[['normal'],['latin']], + 'Bayon'=>[['normal'],['khmer','latin']], + 'Be Vietnam Pro'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Beau Rivage'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bebas Neue'=>[['normal'],['latin','latin-ext']], + 'Belanosima'=>[['normal','600','700'],['latin','latin-ext']], + 'Belgrano'=>[['normal'],['latin']], + 'Bellefair'=>[['normal'],['hebrew','latin','latin-ext']], + 'Belleza'=>[['normal'],['latin','latin-ext']], + 'Bellota'=>[['300','300italic','normal','italic','700','700italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'Bellota Text'=>[['300','300italic','normal','italic','700','700italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'BenchNine'=>[['300','normal','700'],['latin','latin-ext']], + 'Benne'=>[['normal'],['kannada','latin','latin-ext']], + 'Bentham'=>[['normal'],['latin']], + 'Berkshire Swash'=>[['normal'],['latin','latin-ext']], + 'Besley'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Beth Ellen'=>[['normal'],['latin']], + 'Bevan'=>[['normal','italic'],['latin','latin-ext','vietnamese']], + 'BhuTuka Expanded One'=>[['normal'],['gurmukhi','latin','latin-ext']], + 'Big Shoulders Display'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Big Shoulders Inline Display'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Big Shoulders Inline Text'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Big Shoulders Stencil Display'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Big Shoulders Stencil Text'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Big Shoulders Text'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Bigelow Rules'=>[['normal'],['latin','latin-ext']], + 'Bigshot One'=>[['normal'],['latin']], + 'Bilbo'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bilbo Swash Caps'=>[['normal'],['latin','latin-ext']], + 'BioRhyme'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext']], + 'BioRhyme Expanded'=>[['200','300','normal','700','800'],['latin','latin-ext']], + 'Birthstone'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Birthstone Bounce'=>[['normal','500'],['latin','latin-ext','vietnamese']], + 'Biryani'=>[['200','300','normal','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Bitter'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Black And White Picture'=>[['normal'],['korean','latin']], + 'Black Han Sans'=>[['normal'],['korean','latin']], + 'Black Ops One'=>[['normal'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Blaka'=>[['normal'],['arabic','latin','latin-ext']], + 'Blaka Hollow'=>[['normal'],['arabic','latin','latin-ext']], + 'Blaka Ink'=>[['normal'],['arabic','latin','latin-ext']], + 'Blinker'=>[['100','200','300','normal','600','700','800','900'],['latin','latin-ext']], + 'Bodoni Moda'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Bokor'=>[['normal'],['khmer','latin']], + 'Bona Nova'=>[['normal','italic','700'],['cyrillic','cyrillic-ext','greek','hebrew','latin','latin-ext','vietnamese']], + 'Bonbon'=>[['normal'],['latin']], + 'Bonheur Royale'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Boogaloo'=>[['normal'],['latin']], + 'Borel'=>[['normal'],['latin','latin-ext','math','symbols','vietnamese']], + 'Bowlby One'=>[['normal'],['latin']], + 'Bowlby One SC'=>[['normal'],['latin','latin-ext']], + 'Braah One'=>[['normal'],['gurmukhi','latin','latin-ext','vietnamese']], + 'Brawler'=>[['normal','700'],['latin']], + 'Bree Serif'=>[['normal'],['latin','latin-ext']], + 'Bricolage Grotesque'=>[['200','300','normal','500','600','700','800'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Bruno Ace'=>[['normal'],['latin','latin-ext']], + 'Bruno Ace SC'=>[['normal'],['latin','latin-ext']], + 'Brygada 1918'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Bubblegum Sans'=>[['normal'],['latin','latin-ext']], + 'Bubbler One'=>[['normal'],['latin','latin-ext']], + 'Buda'=>[['300'],['latin']], + 'Buenard'=>[['normal','700'],['latin','latin-ext']], + 'Bungee'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bungee Hairline'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bungee Inline'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bungee Outline'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bungee Shade'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Bungee Spice'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Butcherman'=>[['normal'],['latin','latin-ext']], + 'Butterfly Kids'=>[['normal'],['latin','latin-ext']], + 'Cabin'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Cabin Condensed'=>[['normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Cabin Sketch'=>[['normal','700'],['latin']], + 'Caesar Dressing'=>[['normal'],['latin']], + 'Cagliostro'=>[['normal'],['latin']], + 'Cairo'=>[['200','300','normal','500','600','700','800','900'],['arabic','latin','latin-ext']], + 'Cairo Play'=>[['200','300','normal','500','600','700','800','900'],['arabic','latin','latin-ext']], + 'Caladea'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Calistoga'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Calligraffitti'=>[['normal'],['latin']], + 'Cambay'=>[['normal','italic','700','700italic'],['devanagari','latin','latin-ext']], + 'Cambo'=>[['normal'],['latin','latin-ext']], + 'Candal'=>[['normal'],['latin']], + 'Cantarell'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Cantata One'=>[['normal'],['latin','latin-ext']], + 'Cantora One'=>[['normal'],['latin','latin-ext']], + 'Caprasimo'=>[['normal'],['latin','latin-ext']], + 'Capriola'=>[['normal'],['latin','latin-ext']], + 'Caramel'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Carattere'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Cardo'=>[['normal','italic','700'],['greek','greek-ext','latin','latin-ext']], + 'Carlito'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Carme'=>[['normal'],['latin']], + 'Carrois Gothic'=>[['normal'],['latin']], + 'Carrois Gothic SC'=>[['normal'],['latin']], + 'Carter One'=>[['normal'],['latin']], + 'Castoro'=>[['normal','italic'],['latin','latin-ext']], + 'Castoro Titling'=>[['normal'],['latin','latin-ext']], + 'Catamaran'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','tamil']], + 'Caudex'=>[['normal','italic','700','700italic'],['greek','greek-ext','latin','latin-ext']], + 'Caveat'=>[['normal','500','600','700'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Caveat Brush'=>[['normal'],['latin','latin-ext']], + 'Cedarville Cursive'=>[['normal'],['latin']], + 'Ceviche One'=>[['normal'],['latin','latin-ext']], + 'Chakra Petch'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Changa'=>[['200','300','normal','500','600','700','800'],['arabic','latin','latin-ext']], + 'Changa One'=>[['normal','italic'],['latin']], + 'Chango'=>[['normal'],['latin','latin-ext']], + 'Charis SIL'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Charm'=>[['normal','700'],['latin','latin-ext','thai','vietnamese']], + 'Charmonman'=>[['normal','700'],['latin','latin-ext','thai','vietnamese']], + 'Chathura'=>[['100','300','normal','700','800'],['latin','telugu']], + 'Chau Philomene One'=>[['normal','italic'],['latin','latin-ext']], + 'Chela One'=>[['normal'],['latin','latin-ext']], + 'Chelsea Market'=>[['normal'],['latin','latin-ext']], + 'Chenla'=>[['normal'],['khmer']], + 'Cherish'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Cherry Bomb One'=>[['normal'],['japanese','latin','latin-ext','vietnamese']], + 'Cherry Cream Soda'=>[['normal'],['latin']], + 'Cherry Swash'=>[['normal','700'],['latin','latin-ext']], + 'Chewy'=>[['normal'],['latin']], + 'Chicle'=>[['normal'],['latin','latin-ext']], + 'Chilanka'=>[['normal'],['latin','latin-ext','malayalam']], + 'Chivo'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Chivo Mono'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Chokokutai'=>[['normal'],['japanese','latin','latin-ext','vietnamese']], + 'Chonburi'=>[['normal'],['latin','latin-ext','thai','vietnamese']], + 'Cinzel'=>[['normal','500','600','700','800','900'],['latin','latin-ext']], + 'Cinzel Decorative'=>[['normal','700','900'],['latin']], + 'Clicker Script'=>[['normal'],['latin','latin-ext']], + 'Climate Crisis'=>[['normal'],['latin','latin-ext']], + 'Coda'=>[['normal','800'],['latin','latin-ext']], + 'Codystar'=>[['300','normal'],['latin','latin-ext']], + 'Coiny'=>[['normal'],['latin','latin-ext','tamil','vietnamese']], + 'Combo'=>[['normal'],['latin','latin-ext']], + 'Comfortaa'=>[['300','normal','500','600','700'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Comforter'=>[['normal'],['cyrillic','latin','latin-ext','vietnamese']], + 'Comforter Brush'=>[['normal'],['cyrillic','latin','latin-ext','vietnamese']], + 'Comic Neue'=>[['300','300italic','normal','italic','700','700italic'],['latin']], + 'Coming Soon'=>[['normal'],['latin']], + 'Comme'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext']], + 'Commissioner'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Concert One'=>[['normal'],['latin','latin-ext']], + 'Condiment'=>[['normal'],['latin','latin-ext']], + 'Content'=>[['normal','700'],['khmer']], + 'Contrail One'=>[['normal'],['latin']], + 'Convergence'=>[['normal'],['latin','latin-ext']], + 'Cookie'=>[['normal'],['latin']], + 'Copse'=>[['normal'],['latin']], + 'Corben'=>[['normal','700'],['latin','latin-ext']], + 'Corinthia'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'Cormorant'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Cormorant Garamond'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Cormorant Infant'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Cormorant SC'=>[['300','normal','500','600','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Cormorant Unicase'=>[['300','normal','500','600','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Cormorant Upright'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Courgette'=>[['normal'],['latin','latin-ext']], + 'Courier Prime'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Cousine'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','vietnamese']], + 'Coustard'=>[['normal','900'],['latin']], + 'Covered By Your Grace'=>[['normal'],['latin']], + 'Crafty Girls'=>[['normal'],['latin']], + 'Creepster'=>[['normal'],['latin']], + 'Crete Round'=>[['normal','italic'],['latin','latin-ext']], + 'Crimson Pro'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Crimson Text'=>[['normal','italic','600','600italic','700','700italic'],['latin','latin-ext','vietnamese']], + 'Croissant One'=>[['normal'],['latin','latin-ext']], + 'Crushed'=>[['normal'],['latin']], + 'Cuprum'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Cute Font'=>[['normal'],['korean','latin']], + 'Cutive'=>[['normal'],['latin','latin-ext']], + 'Cutive Mono'=>[['normal'],['latin','latin-ext']], + 'DM Mono'=>[['300','300italic','normal','italic','500','500italic'],['latin','latin-ext']], + 'DM Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'DM Serif Display'=>[['normal','italic'],['latin','latin-ext']], + 'DM Serif Text'=>[['normal','italic'],['latin','latin-ext']], + 'Dai Banna SIL'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','new-tai-lue']], + 'Damion'=>[['normal'],['latin']], + 'Dancing Script'=>[['normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Dangrek'=>[['normal'],['khmer','latin']], + 'Darker Grotesque'=>[['300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Darumadrop One'=>[['normal'],['japanese','latin','latin-ext']], + 'David Libre'=>[['normal','500','700'],['hebrew','latin','latin-ext','vietnamese']], + 'Dawning of a New Day'=>[['normal'],['latin']], + 'Days One'=>[['normal'],['latin']], + 'Dekko'=>[['normal'],['devanagari','latin','latin-ext']], + 'Dela Gothic One'=>[['normal'],['cyrillic','greek','japanese','latin','latin-ext','vietnamese']], + 'Delicious Handrawn'=>[['normal'],['latin','latin-ext']], + 'Delius'=>[['normal'],['latin']], + 'Delius Swash Caps'=>[['normal'],['latin']], + 'Delius Unicase'=>[['normal','700'],['latin']], + 'Della Respira'=>[['normal'],['latin']], + 'Denk One'=>[['normal'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Devonshire'=>[['normal'],['latin','latin-ext']], + 'Dhurjati'=>[['normal'],['latin','telugu']], + 'Didact Gothic'=>[['normal'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext']], + 'Diphylleia'=>[['normal'],['korean','latin','latin-ext']], + 'Diplomata'=>[['normal'],['latin','latin-ext']], + 'Diplomata SC'=>[['normal'],['latin','latin-ext']], + 'Do Hyeon'=>[['normal'],['korean','latin']], + 'Dokdo'=>[['normal'],['korean','latin']], + 'Domine'=>[['normal','500','600','700'],['latin','latin-ext']], + 'Donegal One'=>[['normal'],['latin','latin-ext']], + 'Dongle'=>[['300','normal','700'],['korean','latin','latin-ext','vietnamese']], + 'Doppio One'=>[['normal'],['latin','latin-ext']], + 'Dorsa'=>[['normal'],['latin']], + 'Dosis'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']], + 'DotGothic16'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Dr Sugiyama'=>[['normal'],['latin','latin-ext']], + 'Duru Sans'=>[['normal'],['latin','latin-ext']], + 'DynaPuff'=>[['normal','500','600','700'],['cyrillic-ext','latin','latin-ext']], + 'Dynalight'=>[['normal'],['latin','latin-ext']], + 'EB Garamond'=>[['normal','500','600','700','800','italic','500italic','600italic','700italic','800italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Eagle Lake'=>[['normal'],['latin','latin-ext']], + 'East Sea Dokdo'=>[['normal'],['korean','latin']], + 'Eater'=>[['normal'],['latin','latin-ext']], + 'Economica'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Eczar'=>[['normal','500','600','700','800'],['devanagari','greek','greek-ext','latin','latin-ext']], + 'Edu NSW ACT Foundation'=>[['normal','500','600','700'],['latin']], + 'Edu QLD Beginner'=>[['normal','500','600','700'],['latin']], + 'Edu SA Beginner'=>[['normal','500','600','700'],['latin']], + 'Edu TAS Beginner'=>[['normal','500','600','700'],['latin']], + 'Edu VIC WA NT Beginner'=>[['normal','500','600','700'],['latin']], + 'El Messiri'=>[['normal','500','600','700'],['arabic','cyrillic','latin','latin-ext']], + 'Electrolize'=>[['normal'],['latin']], + 'Elsie'=>[['normal','900'],['latin','latin-ext']], + 'Elsie Swash Caps'=>[['normal','900'],['latin','latin-ext']], + 'Emblema One'=>[['normal'],['latin','latin-ext']], + 'Emilys Candy'=>[['normal'],['latin','latin-ext']], + 'Encode Sans'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Encode Sans Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Encode Sans Expanded'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Encode Sans SC'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Encode Sans Semi Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Encode Sans Semi Expanded'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Engagement'=>[['normal'],['latin']], + 'Englebert'=>[['normal'],['latin','latin-ext']], + 'Enriqueta'=>[['normal','500','600','700'],['latin','latin-ext']], + 'Ephesis'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Epilogue'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Erica One'=>[['normal'],['latin','latin-ext']], + 'Esteban'=>[['normal'],['latin','latin-ext']], + 'Estonia'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Euphoria Script'=>[['normal'],['latin','latin-ext']], + 'Ewert'=>[['normal'],['latin','latin-ext']], + 'Exo'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Exo 2'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Expletus Sans'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Explora'=>[['normal'],['cherokee','latin','latin-ext','vietnamese']], + 'Fahkwang'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Familjen Grotesk'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Fanwood Text'=>[['normal','italic'],['latin']], + 'Farro'=>[['300','normal','500','700'],['latin','latin-ext']], + 'Farsan'=>[['normal'],['gujarati','latin','latin-ext','vietnamese']], + 'Fascinate'=>[['normal'],['latin']], + 'Fascinate Inline'=>[['normal'],['latin']], + 'Faster One'=>[['normal'],['latin','latin-ext']], + 'Fasthand'=>[['normal'],['khmer','latin']], + 'Fauna One'=>[['normal'],['latin','latin-ext']], + 'Faustina'=>[['300','normal','500','600','700','800','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext','vietnamese']], + 'Federant'=>[['normal'],['latin']], + 'Federo'=>[['normal'],['latin']], + 'Felipa'=>[['normal'],['latin','latin-ext']], + 'Fenix'=>[['normal'],['latin','latin-ext']], + 'Festive'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Figtree'=>[['300','normal','500','600','700','800','900','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Finger Paint'=>[['normal'],['latin']], + 'Finlandica'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Fira Code'=>[['300','normal','500','600','700'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext']], + 'Fira Mono'=>[['normal','500','700'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext']], + 'Fira Sans'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Fira Sans Condensed'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Fira Sans Extra Condensed'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Fjalla One'=>[['normal'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Fjord One'=>[['normal'],['latin']], + 'Flamenco'=>[['300','normal'],['latin']], + 'Flavors'=>[['normal'],['latin','latin-ext']], + 'Fleur De Leah'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Flow Block'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Flow Circular'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Flow Rounded'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Foldit'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Fondamento'=>[['normal','italic'],['latin','latin-ext']], + 'Fontdiner Swanky'=>[['normal'],['latin']], + 'Forum'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Fragment Mono'=>[['normal','italic'],['cyrillic-ext','latin','latin-ext']], + 'Francois One'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Frank Ruhl Libre'=>[['300','normal','500','600','700','800','900'],['hebrew','latin','latin-ext']], + 'Fraunces'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Freckle Face'=>[['normal'],['latin','latin-ext']], + 'Fredericka the Great'=>[['normal'],['latin','latin-ext']], + 'Fredoka'=>[['300','normal','500','600','700'],['hebrew','latin','latin-ext']], + 'Freehand'=>[['normal'],['khmer','latin']], + 'Fresca'=>[['normal'],['latin','latin-ext']], + 'Frijole'=>[['normal'],['latin']], + 'Fruktur'=>[['normal','italic'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Fugaz One'=>[['normal'],['latin']], + 'Fuggles'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Fuzzy Bubbles'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'GFS Didot'=>[['normal'],['greek']], + 'GFS Neohellenic'=>[['normal','italic','700','700italic'],['greek']], + 'Gabarito'=>[['normal','500','600','700','800','900'],['latin','latin-ext']], + 'Gabriela'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Gaegu'=>[['300','normal','700'],['korean','latin']], + 'Gafata'=>[['normal'],['latin','latin-ext']], + 'Gajraj One'=>[['normal'],['devanagari','latin','latin-ext']], + 'Galada'=>[['normal'],['bengali','latin']], + 'Galdeano'=>[['normal'],['latin']], + 'Galindo'=>[['normal'],['latin','latin-ext']], + 'Gamja Flower'=>[['normal'],['korean','latin']], + 'Gantari'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Gasoek One'=>[['normal'],['korean','latin','latin-ext']], + 'Gayathri'=>[['100','normal','700'],['latin','malayalam']], + 'Gelasio'=>[['normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','vietnamese']], + 'Gemunu Libre'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','sinhala']], + 'Genos'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cherokee','latin','latin-ext','vietnamese']], + 'Gentium Book Plus'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Gentium Plus'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Geo'=>[['normal','italic'],['latin']], + 'Geologica'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Georama'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Geostar'=>[['normal'],['latin']], + 'Geostar Fill'=>[['normal'],['latin']], + 'Germania One'=>[['normal'],['latin']], + 'Gideon Roman'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Gidugu'=>[['normal'],['latin','telugu']], + 'Gilda Display'=>[['normal'],['latin','latin-ext']], + 'Girassol'=>[['normal'],['latin','latin-ext']], + 'Give You Glory'=>[['normal'],['latin']], + 'Glass Antiqua'=>[['normal'],['latin','latin-ext']], + 'Glegoo'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Gloock'=>[['normal'],['cyrillic-ext','latin','latin-ext']], + 'Gloria Hallelujah'=>[['normal'],['latin']], + 'Glory'=>[['100','200','300','normal','500','600','700','800','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext','vietnamese']], + 'Gluten'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Goblin One'=>[['normal'],['latin']], + 'Gochi Hand'=>[['normal'],['latin']], + 'Goldman'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'Golos Text'=>[['normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Gorditas'=>[['normal','700'],['latin']], + 'Gothic A1'=>[['100','200','300','normal','500','600','700','800','900'],['korean','latin']], + 'Gotu'=>[['normal'],['devanagari','latin','latin-ext','vietnamese']], + 'Goudy Bookletter 1911'=>[['normal'],['latin']], + 'Gowun Batang'=>[['normal','700'],['korean','latin','latin-ext','vietnamese']], + 'Gowun Dodum'=>[['normal'],['korean','latin','latin-ext','vietnamese']], + 'Graduate'=>[['normal'],['latin']], + 'Grand Hotel'=>[['normal'],['latin','latin-ext']], + 'Grandiflora One'=>[['normal'],['korean','latin','latin-ext']], + 'Grandstander'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Grape Nuts'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Gravitas One'=>[['normal'],['latin']], + 'Great Vibes'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Grechen Fuemen'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Grenze'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Grenze Gotisch'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Grey Qo'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Griffy'=>[['normal'],['latin','latin-ext']], + 'Gruppo'=>[['normal'],['latin','latin-ext']], + 'Gudea'=>[['normal','italic','700'],['latin','latin-ext']], + 'Gugi'=>[['normal'],['korean','latin']], + 'Gulzar'=>[['normal'],['arabic','latin','latin-ext']], + 'Gupter'=>[['normal','500','700'],['latin']], + 'Gurajada'=>[['normal'],['latin','telugu']], + 'Gwendolyn'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'Habibi'=>[['normal'],['latin','latin-ext']], + 'Hachi Maru Pop'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Hahmlet'=>[['100','200','300','normal','500','600','700','800','900'],['korean','latin','latin-ext','vietnamese']], + 'Halant'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Hammersmith One'=>[['normal'],['latin','latin-ext']], + 'Hanalei'=>[['normal'],['latin','latin-ext']], + 'Hanalei Fill'=>[['normal'],['latin','latin-ext']], + 'Handjet'=>[['100','200','300','normal','500','600','700','800','900'],['arabic','armenian','cyrillic','cyrillic-ext','greek','hebrew','latin','latin-ext','vietnamese']], + 'Handlee'=>[['normal'],['latin']], + 'Hanken Grotesk'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Hanuman'=>[['100','300','normal','700','900'],['khmer','latin']], + 'Happy Monkey'=>[['normal'],['latin','latin-ext']], + 'Harmattan'=>[['normal','500','600','700'],['arabic','latin','latin-ext']], + 'Headland One'=>[['normal'],['latin','latin-ext']], + 'Hedvig Letters Sans'=>[['normal'],['latin','latin-ext','math','symbols']], + 'Hedvig Letters Serif'=>[['normal'],['latin','latin-ext','math','symbols']], + 'Heebo'=>[['100','200','300','normal','500','600','700','800','900'],['hebrew','latin']], + 'Henny Penny'=>[['normal'],['latin']], + 'Hepta Slab'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Herr Von Muellerhoff'=>[['normal'],['latin','latin-ext']], + 'Hi Melody'=>[['normal'],['korean','latin']], + 'Hina Mincho'=>[['normal'],['cyrillic','japanese','latin','latin-ext','vietnamese']], + 'Hind'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Hind Guntur'=>[['300','normal','500','600','700'],['latin','latin-ext','telugu']], + 'Hind Madurai'=>[['300','normal','500','600','700'],['latin','latin-ext','tamil']], + 'Hind Siliguri'=>[['300','normal','500','600','700'],['bengali','latin','latin-ext']], + 'Hind Vadodara'=>[['300','normal','500','600','700'],['gujarati','latin','latin-ext']], + 'Holtwood One SC'=>[['normal'],['latin']], + 'Homemade Apple'=>[['normal'],['latin']], + 'Homenaje'=>[['normal'],['latin']], + 'Honk'=>[['normal'],['latin','latin-ext','math','symbols','vietnamese']], + 'Hubballi'=>[['normal'],['kannada','latin','latin-ext']], + 'Hurricane'=>[['normal'],['latin','latin-ext','vietnamese']], + 'IBM Plex Mono'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'IBM Plex Sans'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'IBM Plex Sans Arabic'=>[['100','200','300','normal','500','600','700'],['arabic','cyrillic-ext','latin','latin-ext']], + 'IBM Plex Sans Condensed'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'IBM Plex Sans Devanagari'=>[['100','200','300','normal','500','600','700'],['cyrillic-ext','devanagari','latin','latin-ext']], + 'IBM Plex Sans Hebrew'=>[['100','200','300','normal','500','600','700'],['cyrillic-ext','hebrew','latin','latin-ext']], + 'IBM Plex Sans JP'=>[['100','200','300','normal','500','600','700'],['cyrillic','japanese','latin','latin-ext']], + 'IBM Plex Sans KR'=>[['100','200','300','normal','500','600','700'],['korean','latin','latin-ext']], + 'IBM Plex Sans Thai'=>[['100','200','300','normal','500','600','700'],['cyrillic-ext','latin','latin-ext','thai']], + 'IBM Plex Sans Thai Looped'=>[['100','200','300','normal','500','600','700'],['cyrillic-ext','latin','latin-ext','thai']], + 'IBM Plex Serif'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'IM Fell DW Pica'=>[['normal','italic'],['latin']], + 'IM Fell DW Pica SC'=>[['normal'],['latin']], + 'IM Fell Double Pica'=>[['normal','italic'],['latin']], + 'IM Fell Double Pica SC'=>[['normal'],['latin']], + 'IM Fell English'=>[['normal','italic'],['latin']], + 'IM Fell English SC'=>[['normal'],['latin']], + 'IM Fell French Canon'=>[['normal','italic'],['latin']], + 'IM Fell French Canon SC'=>[['normal'],['latin']], + 'IM Fell Great Primer'=>[['normal','italic'],['latin']], + 'IM Fell Great Primer SC'=>[['normal'],['latin']], + 'Ibarra Real Nova'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Iceberg'=>[['normal'],['latin']], + 'Iceland'=>[['normal'],['latin']], + 'Imbue'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Imperial Script'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Imprima'=>[['normal'],['latin','latin-ext']], + 'Inclusive Sans'=>[['normal','italic'],['latin','latin-ext','vietnamese']], + 'Inconsolata'=>[['200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Inder'=>[['normal'],['latin','latin-ext']], + 'Indie Flower'=>[['normal'],['latin']], + 'Ingrid Darling'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Inika'=>[['normal','700'],['latin','latin-ext']], + 'Inknut Antiqua'=>[['300','normal','500','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Inria Sans'=>[['300','300italic','normal','italic','700','700italic'],['latin','latin-ext']], + 'Inria Serif'=>[['300','300italic','normal','italic','700','700italic'],['latin','latin-ext']], + 'Inspiration'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Instrument Sans'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Instrument Serif'=>[['normal','italic'],['latin','latin-ext']], + 'Inter'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Inter Tight'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Irish Grover'=>[['normal'],['latin']], + 'Island Moments'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Istok Web'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Italiana'=>[['normal'],['latin']], + 'Italianno'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Itim'=>[['normal'],['latin','latin-ext','thai','vietnamese']], + 'Jacques Francois'=>[['normal'],['latin']], + 'Jacques Francois Shadow'=>[['normal'],['latin']], + 'Jaldi'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'JetBrains Mono'=>[['100','200','300','normal','500','600','700','800','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Jim Nightshade'=>[['normal'],['latin','latin-ext']], + 'Joan'=>[['normal'],['latin','latin-ext']], + 'Jockey One'=>[['normal'],['latin','latin-ext']], + 'Jolly Lodger'=>[['normal'],['latin','latin-ext']], + 'Jomhuria'=>[['normal'],['arabic','latin','latin-ext']], + 'Jomolhari'=>[['normal'],['latin','tibetan']], + 'Josefin Sans'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Josefin Slab'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['latin']], + 'Jost'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','latin','latin-ext']], + 'Joti One'=>[['normal'],['latin','latin-ext']], + 'Jua'=>[['normal'],['korean','latin']], + 'Judson'=>[['normal','italic','700'],['latin','latin-ext','vietnamese']], + 'Julee'=>[['normal'],['latin','latin-ext']], + 'Julius Sans One'=>[['normal'],['latin','latin-ext']], + 'Junge'=>[['normal'],['latin']], + 'Jura'=>[['300','normal','500','600','700'],['cyrillic','cyrillic-ext','greek','greek-ext','kayah-li','latin','latin-ext','vietnamese']], + 'Just Another Hand'=>[['normal'],['latin']], + 'Just Me Again Down Here'=>[['normal'],['latin','latin-ext']], + 'K2D'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic'],['latin','latin-ext','thai','vietnamese']], + 'Kablammo'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Kadwa'=>[['normal','700'],['devanagari','latin']], + 'Kaisei Decol'=>[['normal','500','700'],['cyrillic','japanese','latin','latin-ext']], + 'Kaisei HarunoUmi'=>[['normal','500','700'],['cyrillic','japanese','latin','latin-ext']], + 'Kaisei Opti'=>[['normal','500','700'],['cyrillic','japanese','latin','latin-ext']], + 'Kaisei Tokumin'=>[['normal','500','700','800'],['cyrillic','japanese','latin','latin-ext']], + 'Kalam'=>[['300','normal','700'],['devanagari','latin','latin-ext']], + 'Kalnia'=>[['100','200','300','normal','500','600','700'],['latin','latin-ext','math']], + 'Kameron'=>[['normal','500','600','700'],['latin','latin-ext']], + 'Kanit'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','thai','vietnamese']], + 'Kantumruy Pro'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['khmer','latin','latin-ext']], + 'Karantina'=>[['300','normal','700'],['hebrew','latin','latin-ext']], + 'Karla'=>[['200','300','normal','500','600','700','800','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext']], + 'Karma'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Katibeh'=>[['normal'],['arabic','latin','latin-ext']], + 'Kaushan Script'=>[['normal'],['latin','latin-ext']], + 'Kavivanar'=>[['normal'],['latin','latin-ext','tamil']], + 'Kavoon'=>[['normal'],['latin','latin-ext']], + 'Kay Pho Du'=>[['normal','500','600','700'],['kayah-li','latin','latin-ext']], + 'Kdam Thmor Pro'=>[['normal'],['khmer','latin','latin-ext']], + 'Keania One'=>[['normal'],['latin','latin-ext']], + 'Kelly Slab'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Kenia'=>[['normal'],['latin']], + 'Khand'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Khmer'=>[['normal'],['khmer']], + 'Khula'=>[['300','normal','600','700','800'],['devanagari','latin','latin-ext']], + 'Kings'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Kirang Haerang'=>[['normal'],['korean','latin']], + 'Kite One'=>[['normal'],['latin','latin-ext']], + 'Kiwi Maru'=>[['300','normal','500'],['cyrillic','japanese','latin','latin-ext']], + 'Klee One'=>[['normal','600'],['cyrillic','greek-ext','japanese','latin','latin-ext']], + 'Knewave'=>[['normal'],['latin','latin-ext']], + 'KoHo'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Kodchasan'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Koh Santepheap'=>[['100','300','normal','700','900'],['khmer','latin']], + 'Kolker Brush'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Konkhmer Sleokchher'=>[['normal'],['khmer','latin','latin-ext']], + 'Kosugi'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Kosugi Maru'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Kotta One'=>[['normal'],['latin','latin-ext']], + 'Koulen'=>[['normal'],['khmer','latin']], + 'Kranky'=>[['normal'],['latin']], + 'Kreon'=>[['300','normal','500','600','700'],['latin','latin-ext']], + 'Kristi'=>[['normal'],['latin']], + 'Krona One'=>[['normal'],['latin','latin-ext']], + 'Krub'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Kufam'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['arabic','latin','latin-ext','vietnamese']], + 'Kulim Park'=>[['200','200italic','300','300italic','normal','italic','600','600italic','700','700italic'],['latin','latin-ext']], + 'Kumar One'=>[['normal'],['gujarati','latin','latin-ext']], + 'Kumar One Outline'=>[['normal'],['gujarati','latin','latin-ext']], + 'Kumbh Sans'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','math','symbols']], + 'Kurale'=>[['normal'],['cyrillic','cyrillic-ext','devanagari','latin','latin-ext']], + 'La Belle Aurore'=>[['normal'],['latin']], + 'Labrada'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Lacquer'=>[['normal'],['latin']], + 'Laila'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Lakki Reddy'=>[['normal'],['latin','telugu']], + 'Lalezar'=>[['normal'],['arabic','latin','latin-ext','vietnamese']], + 'Lancelot'=>[['normal'],['latin','latin-ext']], + 'Langar'=>[['normal'],['gurmukhi','latin','latin-ext']], + 'Lateef'=>[['200','300','normal','500','600','700','800'],['arabic','latin','latin-ext']], + 'Lato'=>[['100','100italic','300','300italic','normal','italic','700','700italic','900','900italic'],['latin','latin-ext']], + 'Lavishly Yours'=>[['normal'],['latin','latin-ext','vietnamese']], + 'League Gothic'=>[['normal'],['latin','latin-ext','vietnamese']], + 'League Script'=>[['normal'],['latin']], + 'League Spartan'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Leckerli One'=>[['normal'],['latin']], + 'Ledger'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Lekton'=>[['normal','italic','700'],['latin','latin-ext']], + 'Lemon'=>[['normal'],['latin','latin-ext']], + 'Lemonada'=>[['300','normal','500','600','700'],['arabic','latin','latin-ext','vietnamese']], + 'Lexend'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Deca'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Exa'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Giga'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Mega'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Peta'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Tera'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Lexend Zetta'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Libre Barcode 128'=>[['normal'],['latin']], + 'Libre Barcode 128 Text'=>[['normal'],['latin']], + 'Libre Barcode 39'=>[['normal'],['latin']], + 'Libre Barcode 39 Extended'=>[['normal'],['latin']], + 'Libre Barcode 39 Extended Text'=>[['normal'],['latin']], + 'Libre Barcode 39 Text'=>[['normal'],['latin']], + 'Libre Barcode EAN13 Text'=>[['normal'],['latin']], + 'Libre Baskerville'=>[['normal','italic','700'],['latin','latin-ext']], + 'Libre Bodoni'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Libre Caslon Display'=>[['normal'],['latin','latin-ext']], + 'Libre Caslon Text'=>[['normal','italic','700'],['latin','latin-ext']], + 'Libre Franklin'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Licorice'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Life Savers'=>[['normal','700','800'],['latin','latin-ext']], + 'Lilita One'=>[['normal'],['latin','latin-ext']], + 'Lily Script One'=>[['normal'],['latin','latin-ext']], + 'Limelight'=>[['normal'],['latin','latin-ext']], + 'Linden Hill'=>[['normal','italic'],['latin']], + 'Linefont'=>[['100','200','300','normal','500','600','700','800','900'],['latin']], + 'Lisu Bosa'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','lisu']], + 'Literata'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Liu Jian Mao Cao'=>[['normal'],['chinese-simplified','latin']], + 'Livvic'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','900','900italic'],['latin','latin-ext','vietnamese']], + 'Lobster'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Lobster Two'=>[['normal','italic','700','700italic'],['latin']], + 'Londrina Outline'=>[['normal'],['latin']], + 'Londrina Shadow'=>[['normal'],['latin']], + 'Londrina Sketch'=>[['normal'],['latin']], + 'Londrina Solid'=>[['100','300','normal','900'],['latin']], + 'Long Cang'=>[['normal'],['chinese-simplified','latin']], + 'Lora'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Love Light'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Love Ya Like A Sister'=>[['normal'],['latin']], + 'Loved by the King'=>[['normal'],['latin']], + 'Lovers Quarrel'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Luckiest Guy'=>[['normal'],['latin']], + 'Lugrasimo'=>[['normal'],['latin','latin-ext']], + 'Lumanosimo'=>[['normal'],['latin','latin-ext']], + 'Lunasima'=>[['normal','700'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','vietnamese']], + 'Lusitana'=>[['normal','700'],['latin']], + 'Lustria'=>[['normal'],['latin']], + 'Luxurious Roman'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Luxurious Script'=>[['normal'],['latin','latin-ext','vietnamese']], + 'M PLUS 1'=>[['100','200','300','normal','500','600','700','800','900'],['japanese','latin','latin-ext','vietnamese']], + 'M PLUS 1 Code'=>[['100','200','300','normal','500','600','700'],['japanese','latin','latin-ext','vietnamese']], + 'M PLUS 1p'=>[['100','300','normal','500','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','japanese','latin','latin-ext','vietnamese']], + 'M PLUS 2'=>[['100','200','300','normal','500','600','700','800','900'],['japanese','latin','latin-ext','vietnamese']], + 'M PLUS Code Latin'=>[['100','200','300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'M PLUS Rounded 1c'=>[['100','300','normal','500','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','japanese','latin','latin-ext','vietnamese']], + 'Ma Shan Zheng'=>[['normal'],['chinese-simplified','latin']], + 'Macondo'=>[['normal'],['latin']], + 'Macondo Swash Caps'=>[['normal'],['latin']], + 'Mada'=>[['200','300','normal','500','600','700','800','900'],['arabic','latin','latin-ext']], + 'Magra'=>[['normal','700'],['latin','latin-ext']], + 'Maiden Orange'=>[['normal'],['latin']], + 'Maitree'=>[['200','300','normal','500','600','700'],['latin','latin-ext','thai','vietnamese']], + 'Major Mono Display'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Mako'=>[['normal'],['latin','latin-ext']], + 'Mali'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Mallanna'=>[['normal'],['latin','telugu']], + 'Mandali'=>[['normal'],['latin','telugu']], + 'Manjari'=>[['100','normal','700'],['latin','latin-ext','malayalam']], + 'Manrope'=>[['200','300','normal','500','600','700','800'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Mansalva'=>[['normal'],['greek','latin','latin-ext','vietnamese']], + 'Manuale'=>[['300','normal','500','600','700','800','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext','vietnamese']], + 'Marcellus'=>[['normal'],['latin','latin-ext']], + 'Marcellus SC'=>[['normal'],['latin','latin-ext']], + 'Marck Script'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Margarine'=>[['normal'],['latin','latin-ext']], + 'Marhey'=>[['300','normal','500','600','700'],['arabic','latin','latin-ext']], + 'Markazi Text'=>[['normal','500','600','700'],['arabic','latin','latin-ext','vietnamese']], + 'Marko One'=>[['normal'],['latin']], + 'Marmelad'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Martel'=>[['200','300','normal','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Martel Sans'=>[['200','300','normal','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Martian Mono'=>[['100','200','300','normal','500','600','700','800'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Marvel'=>[['normal','italic','700','700italic'],['latin']], + 'Mate'=>[['normal','italic'],['latin','latin-ext']], + 'Mate SC'=>[['normal'],['latin','latin-ext']], + 'Material Icons'=>[['normal'],['latin']], + 'Material Icons Outlined'=>[['normal'],['latin']], + 'Material Icons Round'=>[['normal'],['latin']], + 'Material Icons Sharp'=>[['normal'],['latin']], + 'Material Icons Two Tone'=>[['normal'],['latin']], + 'Material Symbols Outlined'=>[['100','200','300','normal','500','600','700'],['latin']], + 'Material Symbols Rounded'=>[['100','200','300','normal','500','600','700'],['latin']], + 'Material Symbols Sharp'=>[['100','200','300','normal','500','600','700'],['latin']], + 'Maven Pro'=>[['normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'McLaren'=>[['normal'],['latin','latin-ext']], + 'Mea Culpa'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Meddon'=>[['normal'],['latin']], + 'MedievalSharp'=>[['normal'],['latin','latin-ext']], + 'Medula One'=>[['normal'],['latin']], + 'Meera Inimai'=>[['normal'],['latin','tamil']], + 'Megrim'=>[['normal'],['latin']], + 'Meie Script'=>[['normal'],['latin','latin-ext']], + 'Meow Script'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Merienda'=>[['300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Merriweather'=>[['300','300italic','normal','italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Merriweather Sans'=>[['300','normal','500','600','700','800','300italic','italic','500italic','600italic','700italic','800italic'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Metal'=>[['normal'],['khmer','latin']], + 'Metal Mania'=>[['normal'],['latin','latin-ext']], + 'Metamorphous'=>[['normal'],['latin','latin-ext']], + 'Metrophobic'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Michroma'=>[['normal'],['latin','latin-ext']], + 'Milonga'=>[['normal'],['latin','latin-ext']], + 'Miltonian'=>[['normal'],['latin']], + 'Miltonian Tattoo'=>[['normal'],['latin']], + 'Mina'=>[['normal','700'],['bengali','latin','latin-ext']], + 'Mingzat'=>[['normal'],['latin','latin-ext','lepcha']], + 'Miniver'=>[['normal'],['latin']], + 'Miriam Libre'=>[['normal','700'],['hebrew','latin','latin-ext']], + 'Mirza'=>[['normal','500','600','700'],['arabic','latin','latin-ext']], + 'Miss Fajardose'=>[['normal'],['latin','latin-ext']], + 'Mitr'=>[['200','300','normal','500','600','700'],['latin','latin-ext','thai','vietnamese']], + 'Mochiy Pop One'=>[['normal'],['japanese','latin']], + 'Mochiy Pop P One'=>[['normal'],['japanese','latin']], + 'Modak'=>[['normal'],['devanagari','latin','latin-ext']], + 'Modern Antiqua'=>[['normal'],['latin','latin-ext']], + 'Mogra'=>[['normal'],['gujarati','latin','latin-ext']], + 'Mohave'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Moirai One'=>[['normal'],['korean','latin','latin-ext']], + 'Molengo'=>[['normal'],['latin','latin-ext']], + 'Molle'=>[['italic'],['latin','latin-ext']], + 'Monda'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'Monofett'=>[['normal'],['latin','latin-ext']], + 'Monomaniac One'=>[['normal'],['japanese','latin','latin-ext']], + 'Monoton'=>[['normal'],['latin']], + 'Monsieur La Doulaise'=>[['normal'],['latin','latin-ext']], + 'Montaga'=>[['normal'],['latin']], + 'Montagu Slab'=>[['100','200','300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'MonteCarlo'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Montez'=>[['normal'],['latin']], + 'Montserrat'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Montserrat Alternates'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Montserrat Subrayada'=>[['normal','700'],['latin']], + 'Moo Lah Lah'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Mooli'=>[['normal'],['latin','latin-ext']], + 'Moon Dance'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Moul'=>[['normal'],['khmer','latin']], + 'Moulpali'=>[['normal'],['khmer','latin']], + 'Mountains of Christmas'=>[['normal','700'],['latin']], + 'Mouse Memoirs'=>[['normal'],['latin','latin-ext']], + 'Mr Bedfort'=>[['normal'],['latin','latin-ext']], + 'Mr Dafoe'=>[['normal'],['latin','latin-ext']], + 'Mr De Haviland'=>[['normal'],['latin','latin-ext']], + 'Mrs Saint Delafield'=>[['normal'],['latin','latin-ext']], + 'Mrs Sheppards'=>[['normal'],['latin','latin-ext']], + 'Ms Madi'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Mukta'=>[['200','300','normal','500','600','700','800'],['devanagari','latin','latin-ext']], + 'Mukta Mahee'=>[['200','300','normal','500','600','700','800'],['gurmukhi','latin','latin-ext']], + 'Mukta Malar'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','tamil']], + 'Mukta Vaani'=>[['200','300','normal','500','600','700','800'],['gujarati','latin','latin-ext']], + 'Mulish'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Murecho'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','japanese','latin','latin-ext']], + 'MuseoModerno'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'My Soul'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Mynerve'=>[['normal'],['greek','latin','latin-ext','vietnamese']], + 'Mystery Quest'=>[['normal'],['latin','latin-ext']], + 'NTR'=>[['normal'],['latin','telugu']], + 'Nabla'=>[['normal'],['cyrillic-ext','latin','latin-ext','math','vietnamese']], + 'Nanum Brush Script'=>[['normal'],['korean','latin']], + 'Nanum Gothic'=>[['normal','700','800'],['korean','latin']], + 'Nanum Gothic Coding'=>[['normal','700'],['korean','latin']], + 'Nanum Myeongjo'=>[['normal','700','800'],['korean','latin']], + 'Nanum Pen Script'=>[['normal'],['korean','latin']], + 'Narnoor'=>[['normal','500','600','700','800'],['gunjala-gondi','latin','latin-ext','math','symbols']], + 'Neonderthaw'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Nerko One'=>[['normal'],['latin','latin-ext']], + 'Neucha'=>[['normal'],['cyrillic','latin']], + 'Neuton'=>[['200','300','normal','italic','700','800'],['latin','latin-ext']], + 'New Rocker'=>[['normal'],['latin','latin-ext']], + 'New Tegomin'=>[['normal'],['japanese','latin','latin-ext']], + 'News Cycle'=>[['normal','700'],['latin','latin-ext']], + 'Newsreader'=>[['200','300','normal','500','600','700','800','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext','vietnamese']], + 'Niconne'=>[['normal'],['latin','latin-ext']], + 'Niramit'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'Nixie One'=>[['normal'],['latin']], + 'Nobile'=>[['normal','italic','500','500italic','700','700italic'],['latin','latin-ext']], + 'Nokora'=>[['100','300','normal','700','900'],['khmer','latin']], + 'Norican'=>[['normal'],['latin','latin-ext']], + 'Nosifer'=>[['normal'],['latin','latin-ext']], + 'Notable'=>[['normal'],['latin']], + 'Nothing You Could Do'=>[['normal'],['latin']], + 'Noticia Text'=>[['normal','italic','700','700italic'],['latin','latin-ext','vietnamese']], + 'Noto Color Emoji'=>[['normal'],['emoji']], + 'Noto Emoji'=>[['300','normal','500','600','700'],['emoji']], + 'Noto Kufi Arabic'=>[['100','200','300','normal','500','600','700','800','900'],['arabic']], + 'Noto Music'=>[['normal'],['latin','latin-ext','music']], + 'Noto Naskh Arabic'=>[['normal','500','600','700'],['arabic','latin','latin-ext']], + 'Noto Nastaliq Urdu'=>[['normal','500','600','700'],['arabic','latin','latin-ext']], + 'Noto Rashi Hebrew'=>[['100','200','300','normal','500','600','700','800','900'],['hebrew','latin','latin-ext']], + 'Noto Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','devanagari','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Noto Sans Adlam'=>[['normal','500','600','700'],['adlam','latin','latin-ext']], + 'Noto Sans Adlam Unjoined'=>[['normal','500','600','700'],['adlam','latin','latin-ext']], + 'Noto Sans Anatolian Hieroglyphs'=>[['normal'],['anatolian-hieroglyphs','latin','latin-ext']], + 'Noto Sans Arabic'=>[['100','200','300','normal','500','600','700','800','900'],['arabic']], + 'Noto Sans Armenian'=>[['100','200','300','normal','500','600','700','800','900'],['armenian','latin','latin-ext']], + 'Noto Sans Avestan'=>[['normal'],['avestan','latin','latin-ext']], + 'Noto Sans Balinese'=>[['normal','500','600','700'],['balinese','latin','latin-ext']], + 'Noto Sans Bamum'=>[['normal','500','600','700'],['bamum','latin','latin-ext']], + 'Noto Sans Bassa Vah'=>[['normal','500','600','700'],['bassa-vah','latin','latin-ext']], + 'Noto Sans Batak'=>[['normal'],['batak','latin','latin-ext']], + 'Noto Sans Bengali'=>[['100','200','300','normal','500','600','700','800','900'],['bengali','latin','latin-ext']], + 'Noto Sans Bhaiksuki'=>[['normal'],['bhaiksuki','latin','latin-ext']], + 'Noto Sans Brahmi'=>[['normal'],['brahmi','latin','latin-ext']], + 'Noto Sans Buginese'=>[['normal'],['buginese','latin','latin-ext']], + 'Noto Sans Buhid'=>[['normal'],['buhid','latin','latin-ext']], + 'Noto Sans Canadian Aboriginal'=>[['100','200','300','normal','500','600','700','800','900'],['canadian-aboriginal','latin','latin-ext']], + 'Noto Sans Carian'=>[['normal'],['carian','latin','latin-ext']], + 'Noto Sans Caucasian Albanian'=>[['normal'],['caucasian-albanian','latin','latin-ext']], + 'Noto Sans Chakma'=>[['normal'],['chakma','latin','latin-ext']], + 'Noto Sans Cham'=>[['100','200','300','normal','500','600','700','800','900'],['cham','latin','latin-ext']], + 'Noto Sans Cherokee'=>[['100','200','300','normal','500','600','700','800','900'],['cherokee','latin','latin-ext']], + 'Noto Sans Chorasmian'=>[['normal'],['chorasmian','latin','latin-ext','math','symbols']], + 'Noto Sans Coptic'=>[['normal'],['coptic','latin','latin-ext']], + 'Noto Sans Cuneiform'=>[['normal'],['cuneiform','latin','latin-ext']], + 'Noto Sans Cypriot'=>[['normal'],['cypriot','latin','latin-ext']], + 'Noto Sans Cypro Minoan'=>[['normal'],['cypro-minoan','latin','latin-ext']], + 'Noto Sans Deseret'=>[['normal'],['deseret','latin','latin-ext']], + 'Noto Sans Devanagari'=>[['100','200','300','normal','500','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Noto Sans Display'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Noto Sans Duployan'=>[['normal','700'],['duployan','latin','latin-ext']], + 'Noto Sans Egyptian Hieroglyphs'=>[['normal'],['egyptian-hieroglyphs','latin','latin-ext']], + 'Noto Sans Elbasan'=>[['normal'],['elbasan','latin','latin-ext']], + 'Noto Sans Elymaic'=>[['normal'],['elymaic','latin','latin-ext']], + 'Noto Sans Ethiopic'=>[['100','200','300','normal','500','600','700','800','900'],['ethiopic','latin','latin-ext']], + 'Noto Sans Georgian'=>[['100','200','300','normal','500','600','700','800','900'],['georgian','latin','latin-ext']], + 'Noto Sans Glagolitic'=>[['normal'],['cyrillic-ext','glagolitic','latin','latin-ext','math','symbols']], + 'Noto Sans Gothic'=>[['normal'],['gothic','latin','latin-ext']], + 'Noto Sans Grantha'=>[['normal'],['grantha','latin','latin-ext']], + 'Noto Sans Gujarati'=>[['100','200','300','normal','500','600','700','800','900'],['gujarati','latin','latin-ext','math','symbols']], + 'Noto Sans Gunjala Gondi'=>[['normal','500','600','700'],['gunjala-gondi','latin','latin-ext']], + 'Noto Sans Gurmukhi'=>[['100','200','300','normal','500','600','700','800','900'],['gurmukhi','latin','latin-ext']], + 'Noto Sans HK'=>[['100','200','300','normal','500','600','700','800','900'],['chinese-hongkong','cyrillic','latin','latin-ext','vietnamese']], + 'Noto Sans Hanifi Rohingya'=>[['normal','500','600','700'],['hanifi-rohingya','latin','latin-ext']], + 'Noto Sans Hanunoo'=>[['normal'],['hanunoo','latin','latin-ext']], + 'Noto Sans Hatran'=>[['normal'],['hatran','latin','latin-ext']], + 'Noto Sans Hebrew'=>[['100','200','300','normal','500','600','700','800','900'],['hebrew','latin','latin-ext']], + 'Noto Sans Imperial Aramaic'=>[['normal'],['imperial-aramaic','latin','latin-ext']], + 'Noto Sans Indic Siyaq Numbers'=>[['normal'],['indic-siyaq-numbers','latin','latin-ext']], + 'Noto Sans Inscriptional Pahlavi'=>[['normal'],['inscriptional-pahlavi','latin','latin-ext']], + 'Noto Sans Inscriptional Parthian'=>[['normal'],['inscriptional-parthian','latin','latin-ext']], + 'Noto Sans JP'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','japanese','latin','latin-ext','vietnamese']], + 'Noto Sans Javanese'=>[['normal','500','600','700'],['javanese','latin','latin-ext']], + 'Noto Sans KR'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','korean','latin','latin-ext','vietnamese']], + 'Noto Sans Kaithi'=>[['normal'],['kaithi','latin','latin-ext']], + 'Noto Sans Kannada'=>[['100','200','300','normal','500','600','700','800','900'],['kannada','latin','latin-ext']], + 'Noto Sans Kawi'=>[['normal','500','600','700'],['kawi','latin','latin-ext']], + 'Noto Sans Kayah Li'=>[['normal','500','600','700'],['kayah-li','latin','latin-ext']], + 'Noto Sans Kharoshthi'=>[['normal'],['kharoshthi','latin','latin-ext']], + 'Noto Sans Khmer'=>[['100','200','300','normal','500','600','700','800','900'],['khmer','latin','latin-ext']], + 'Noto Sans Khojki'=>[['normal'],['khojki','latin','latin-ext']], + 'Noto Sans Khudawadi'=>[['normal'],['khudawadi','latin','latin-ext']], + 'Noto Sans Lao'=>[['100','200','300','normal','500','600','700','800','900'],['lao','latin','latin-ext']], + 'Noto Sans Lao Looped'=>[['100','200','300','normal','500','600','700','800','900'],['lao','latin','latin-ext']], + 'Noto Sans Lepcha'=>[['normal'],['latin','latin-ext','lepcha']], + 'Noto Sans Limbu'=>[['normal'],['latin','latin-ext','limbu']], + 'Noto Sans Linear A'=>[['normal'],['latin','latin-ext','linear-a']], + 'Noto Sans Linear B'=>[['normal'],['latin','latin-ext','linear-b']], + 'Noto Sans Lisu'=>[['normal','500','600','700'],['latin','latin-ext','lisu']], + 'Noto Sans Lycian'=>[['normal'],['lycian']], + 'Noto Sans Lydian'=>[['normal'],['latin','latin-ext','lydian']], + 'Noto Sans Mahajani'=>[['normal'],['latin','latin-ext','mahajani']], + 'Noto Sans Malayalam'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','malayalam']], + 'Noto Sans Mandaic'=>[['normal'],['latin','latin-ext','mandaic']], + 'Noto Sans Manichaean'=>[['normal'],['latin','latin-ext','manichaean']], + 'Noto Sans Marchen'=>[['normal'],['latin','latin-ext','marchen']], + 'Noto Sans Masaram Gondi'=>[['normal'],['latin','latin-ext','masaram-gondi']], + 'Noto Sans Math'=>[['normal'],['math']], + 'Noto Sans Mayan Numerals'=>[['normal'],['latin','latin-ext','mayan-numerals']], + 'Noto Sans Medefaidrin'=>[['normal','500','600','700'],['latin','latin-ext','medefaidrin']], + 'Noto Sans Meetei Mayek'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','meetei-mayek']], + 'Noto Sans Mende Kikakui'=>[['normal'],['latin','latin-ext','mende-kikakui']], + 'Noto Sans Meroitic'=>[['normal'],['latin','latin-ext','meroitic','meroitic-cursive','meroitic-hieroglyphs']], + 'Noto Sans Miao'=>[['normal'],['latin','latin-ext','miao']], + 'Noto Sans Modi'=>[['normal'],['latin','latin-ext','modi']], + 'Noto Sans Mongolian'=>[['normal'],['latin','latin-ext','mongolian']], + 'Noto Sans Mono'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Noto Sans Mro'=>[['normal'],['latin','latin-ext','mro']], + 'Noto Sans Multani'=>[['normal'],['latin','latin-ext','multani']], + 'Noto Sans Myanmar'=>[['100','200','300','normal','500','600','700','800','900'],['myanmar']], + 'Noto Sans NKo'=>[['normal'],['latin','latin-ext','nko']], + 'Noto Sans NKo Unjoined'=>[['normal','500','600','700'],['latin','latin-ext','nko']], + 'Noto Sans Nabataean'=>[['normal'],['latin','latin-ext','nabataean']], + 'Noto Sans Nag Mundari'=>[['normal','500','600','700'],['latin','latin-ext','nag-mundari']], + 'Noto Sans Nandinagari'=>[['normal'],['latin','latin-ext','nandinagari']], + 'Noto Sans New Tai Lue'=>[['normal','500','600','700'],['latin','latin-ext','new-tai-lue']], + 'Noto Sans Newa'=>[['normal'],['latin','latin-ext','newa']], + 'Noto Sans Nushu'=>[['normal'],['latin','latin-ext','nushu']], + 'Noto Sans Ogham'=>[['normal'],['latin','latin-ext','ogham']], + 'Noto Sans Ol Chiki'=>[['normal','500','600','700'],['latin','latin-ext','ol-chiki']], + 'Noto Sans Old Hungarian'=>[['normal'],['latin','latin-ext','old-hungarian']], + 'Noto Sans Old Italic'=>[['normal'],['latin','latin-ext','old-italic']], + 'Noto Sans Old North Arabian'=>[['normal'],['latin','latin-ext','old-north-arabian']], + 'Noto Sans Old Permic'=>[['normal'],['cyrillic-ext','latin','latin-ext','old-permic']], + 'Noto Sans Old Persian'=>[['normal'],['latin','latin-ext','old-persian']], + 'Noto Sans Old Sogdian'=>[['normal'],['latin','latin-ext','old-sogdian']], + 'Noto Sans Old South Arabian'=>[['normal'],['latin','latin-ext','old-south-arabian']], + 'Noto Sans Old Turkic'=>[['normal'],['latin','latin-ext','old-turkic']], + 'Noto Sans Oriya'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','oriya']], + 'Noto Sans Osage'=>[['normal'],['latin','latin-ext','osage']], + 'Noto Sans Osmanya'=>[['normal'],['latin','latin-ext','osmanya']], + 'Noto Sans Pahawh Hmong'=>[['normal'],['latin','latin-ext','pahawh-hmong']], + 'Noto Sans Palmyrene'=>[['normal'],['latin','latin-ext','palmyrene']], + 'Noto Sans Pau Cin Hau'=>[['normal'],['latin','latin-ext','pau-cin-hau']], + 'Noto Sans Phags Pa'=>[['normal'],['phags-pa']], + 'Noto Sans Phoenician'=>[['normal'],['latin','latin-ext','phoenician']], + 'Noto Sans Psalter Pahlavi'=>[['normal'],['latin','latin-ext','psalter-pahlavi']], + 'Noto Sans Rejang'=>[['normal'],['latin','latin-ext','rejang']], + 'Noto Sans Runic'=>[['normal'],['latin','latin-ext','runic']], + 'Noto Sans SC'=>[['100','200','300','normal','500','600','700','800','900'],['chinese-simplified','cyrillic','latin','latin-ext','vietnamese']], + 'Noto Sans Samaritan'=>[['normal'],['latin','latin-ext','samaritan']], + 'Noto Sans Saurashtra'=>[['normal'],['latin','latin-ext','saurashtra']], + 'Noto Sans Sharada'=>[['normal'],['latin','latin-ext','sharada']], + 'Noto Sans Shavian'=>[['normal'],['latin','latin-ext','shavian']], + 'Noto Sans Siddham'=>[['normal'],['latin','latin-ext','siddham']], + 'Noto Sans SignWriting'=>[['normal'],['latin','latin-ext','signwriting']], + 'Noto Sans Sinhala'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','sinhala']], + 'Noto Sans Sogdian'=>[['normal'],['latin','latin-ext','sogdian']], + 'Noto Sans Sora Sompeng'=>[['normal','500','600','700'],['latin','latin-ext','sora-sompeng']], + 'Noto Sans Soyombo'=>[['normal'],['latin','latin-ext','soyombo']], + 'Noto Sans Sundanese'=>[['normal','500','600','700'],['latin','latin-ext','sundanese']], + 'Noto Sans Syloti Nagri'=>[['normal'],['latin','latin-ext','syloti-nagri']], + 'Noto Sans Symbols'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','symbols']], + 'Noto Sans Symbols 2'=>[['normal'],['braille','latin','latin-ext','math','mayan-numerals','symbols']], + 'Noto Sans Syriac'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','syriac']], + 'Noto Sans Syriac Eastern'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','syriac']], + 'Noto Sans TC'=>[['100','200','300','normal','500','600','700','800','900'],['chinese-traditional','cyrillic','latin','latin-ext','vietnamese']], + 'Noto Sans Tagalog'=>[['normal'],['latin','latin-ext','tagalog']], + 'Noto Sans Tagbanwa'=>[['normal'],['latin','latin-ext','tagbanwa']], + 'Noto Sans Tai Le'=>[['normal'],['latin','latin-ext','tai-le']], + 'Noto Sans Tai Tham'=>[['normal','500','600','700'],['latin','latin-ext','tai-tham']], + 'Noto Sans Tai Viet'=>[['normal'],['latin','latin-ext','tai-viet']], + 'Noto Sans Takri'=>[['normal'],['latin','latin-ext','takri']], + 'Noto Sans Tamil'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','tamil']], + 'Noto Sans Tamil Supplement'=>[['normal'],['latin','latin-ext','tamil-supplement']], + 'Noto Sans Tangsa'=>[['normal','500','600','700'],['latin','latin-ext','tangsa']], + 'Noto Sans Telugu'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','telugu']], + 'Noto Sans Thaana'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','thaana']], + 'Noto Sans Thai'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','thai']], + 'Noto Sans Thai Looped'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','thai']], + 'Noto Sans Tifinagh'=>[['normal'],['latin','latin-ext','tifinagh']], + 'Noto Sans Tirhuta'=>[['normal'],['latin','latin-ext','tirhuta']], + 'Noto Sans Ugaritic'=>[['normal'],['latin','latin-ext','ugaritic']], + 'Noto Sans Vai'=>[['normal'],['latin','latin-ext','vai']], + 'Noto Sans Vithkuqi'=>[['normal','500','600','700'],['latin','latin-ext','vithkuqi']], + 'Noto Sans Wancho'=>[['normal'],['latin','latin-ext','wancho']], + 'Noto Sans Warang Citi'=>[['normal'],['latin','latin-ext','warang-citi']], + 'Noto Sans Yi'=>[['normal'],['latin','latin-ext','yi']], + 'Noto Sans Zanabazar Square'=>[['normal'],['latin','latin-ext','zanabazar-square']], + 'Noto Serif'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Noto Serif Ahom'=>[['normal'],['ahom','latin','latin-ext']], + 'Noto Serif Armenian'=>[['100','200','300','normal','500','600','700','800','900'],['armenian','latin','latin-ext']], + 'Noto Serif Balinese'=>[['normal'],['balinese','latin','latin-ext']], + 'Noto Serif Bengali'=>[['100','200','300','normal','500','600','700','800','900'],['bengali','latin','latin-ext']], + 'Noto Serif Devanagari'=>[['100','200','300','normal','500','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Noto Serif Display'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Noto Serif Dogra'=>[['normal'],['dogra','latin','latin-ext']], + 'Noto Serif Ethiopic'=>[['100','200','300','normal','500','600','700','800','900'],['ethiopic','latin','latin-ext']], + 'Noto Serif Georgian'=>[['100','200','300','normal','500','600','700','800','900'],['georgian','latin','latin-ext']], + 'Noto Serif Grantha'=>[['normal'],['grantha','latin','latin-ext']], + 'Noto Serif Gujarati'=>[['100','200','300','normal','500','600','700','800','900'],['gujarati','latin','latin-ext','math','symbols']], + 'Noto Serif Gurmukhi'=>[['100','200','300','normal','500','600','700','800','900'],['gurmukhi','latin','latin-ext']], + 'Noto Serif HK'=>[['200','300','normal','500','600','700','800','900'],['chinese-hongkong','cyrillic','latin','latin-ext','vietnamese']], + 'Noto Serif Hebrew'=>[['100','200','300','normal','500','600','700','800','900'],['hebrew','latin','latin-ext']], + 'Noto Serif JP'=>[['200','300','normal','500','600','700','900'],['japanese','latin']], + 'Noto Serif KR'=>[['200','300','normal','500','600','700','900'],['korean','latin']], + 'Noto Serif Kannada'=>[['100','200','300','normal','500','600','700','800','900'],['kannada','latin','latin-ext']], + 'Noto Serif Khitan Small Script'=>[['normal'],['khitan-small-script','latin','latin-ext']], + 'Noto Serif Khmer'=>[['100','200','300','normal','500','600','700','800','900'],['khmer','latin','latin-ext']], + 'Noto Serif Khojki'=>[['normal','500','600','700'],['khojki','latin','latin-ext']], + 'Noto Serif Lao'=>[['100','200','300','normal','500','600','700','800','900'],['lao','latin','latin-ext']], + 'Noto Serif Makasar'=>[['normal'],['latin','latin-ext','makasar']], + 'Noto Serif Malayalam'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','malayalam']], + 'Noto Serif Myanmar'=>[['100','200','300','normal','500','600','700','800','900'],['myanmar']], + 'Noto Serif NP Hmong'=>[['normal','500','600','700'],['latin','nyiakeng-puachue-hmong']], + 'Noto Serif Old Uyghur'=>[['normal'],['latin','latin-ext','old-uyghur']], + 'Noto Serif Oriya'=>[['normal','500','600','700'],['latin','latin-ext','oriya']], + 'Noto Serif Ottoman Siyaq'=>[['normal'],['latin','latin-ext','ottoman-siyaq-numbers']], + 'Noto Serif SC'=>[['200','300','normal','500','600','700','900'],['chinese-simplified','latin']], + 'Noto Serif Sinhala'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','sinhala']], + 'Noto Serif TC'=>[['200','300','normal','500','600','700','900'],['chinese-traditional','latin']], + 'Noto Serif Tamil'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','tamil']], + 'Noto Serif Tangut'=>[['normal'],['latin','latin-ext','tangut']], + 'Noto Serif Telugu'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','telugu']], + 'Noto Serif Thai'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','thai']], + 'Noto Serif Tibetan'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','tibetan']], + 'Noto Serif Toto'=>[['normal','500','600','700'],['latin','latin-ext','toto']], + 'Noto Serif Vithkuqi'=>[['normal','500','600','700'],['latin','latin-ext','vithkuqi']], + 'Noto Serif Yezidi'=>[['normal','500','600','700'],['latin','latin-ext','yezidi']], + 'Noto Traditional Nushu'=>[['300','normal','500','600','700'],['latin','latin-ext','nushu']], + 'Nova Cut'=>[['normal'],['latin']], + 'Nova Flat'=>[['normal'],['latin']], + 'Nova Mono'=>[['normal'],['greek','latin']], + 'Nova Oval'=>[['normal'],['latin']], + 'Nova Round'=>[['normal'],['latin']], + 'Nova Script'=>[['normal'],['latin']], + 'Nova Slim'=>[['normal'],['latin']], + 'Nova Square'=>[['normal'],['latin']], + 'Numans'=>[['normal'],['latin']], + 'Nunito'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Nunito Sans'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Nuosu SIL'=>[['normal'],['latin','latin-ext','yi']], + 'Odibee Sans'=>[['normal'],['latin']], + 'Odor Mean Chey'=>[['normal'],['khmer','latin']], + 'Offside'=>[['normal'],['latin','latin-ext']], + 'Oi'=>[['normal'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','tamil','vietnamese']], + 'Old Standard TT'=>[['normal','italic','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Oldenburg'=>[['normal'],['latin','latin-ext']], + 'Ole'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Oleo Script'=>[['normal','700'],['latin','latin-ext']], + 'Oleo Script Swash Caps'=>[['normal','700'],['latin','latin-ext']], + 'Onest'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Oooh Baby'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Open Sans'=>[['300','normal','500','600','700','800','300italic','italic','500italic','600italic','700italic','800italic'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','math','symbols','vietnamese']], + 'Oranienbaum'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Orbit'=>[['normal'],['korean','latin','latin-ext']], + 'Orbitron'=>[['normal','500','600','700','800','900'],['latin']], + 'Oregano'=>[['normal','italic'],['latin','latin-ext']], + 'Orelega One'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Orienta'=>[['normal'],['latin','latin-ext']], + 'Original Surfer'=>[['normal'],['latin']], + 'Oswald'=>[['200','300','normal','500','600','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Outfit'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext']], + 'Over the Rainbow'=>[['normal'],['latin']], + 'Overlock'=>[['normal','italic','700','700italic','900','900italic'],['latin','latin-ext']], + 'Overlock SC'=>[['normal'],['latin','latin-ext']], + 'Overpass'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Overpass Mono'=>[['300','normal','500','600','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Ovo'=>[['normal'],['latin']], + 'Oxanium'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext']], + 'Oxygen'=>[['300','normal','700'],['latin','latin-ext']], + 'Oxygen Mono'=>[['normal'],['latin','latin-ext']], + 'PT Mono'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'PT Sans'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'PT Sans Caption'=>[['normal','700'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'PT Sans Narrow'=>[['normal','700'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'PT Serif'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'PT Serif Caption'=>[['normal','italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Pacifico'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Padauk'=>[['normal','700'],['latin','latin-ext','myanmar']], + 'Padyakke Expanded One'=>[['normal'],['kannada','latin','latin-ext']], + 'Palanquin'=>[['100','200','300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Palanquin Dark'=>[['normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Palette Mosaic'=>[['normal'],['japanese','latin']], + 'Pangolin'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Paprika'=>[['normal'],['latin','latin-ext']], + 'Parisienne'=>[['normal'],['latin','latin-ext']], + 'Passero One'=>[['normal'],['latin','latin-ext']], + 'Passion One'=>[['normal','700','900'],['latin','latin-ext']], + 'Passions Conflict'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Pathway Extreme'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Pathway Gothic One'=>[['normal'],['latin','latin-ext']], + 'Patrick Hand'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Patrick Hand SC'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Pattaya'=>[['normal'],['cyrillic','latin','latin-ext','thai','vietnamese']], + 'Patua One'=>[['normal'],['latin']], + 'Pavanam'=>[['normal'],['latin','latin-ext','tamil']], + 'Paytone One'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Peddana'=>[['normal'],['latin','telugu']], + 'Peralta'=>[['normal'],['latin','latin-ext']], + 'Permanent Marker'=>[['normal'],['latin']], + 'Petemoss'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Petit Formal Script'=>[['normal'],['latin','latin-ext']], + 'Petrona'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Philosopher'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','vietnamese']], + 'Phudu'=>[['300','normal','500','600','700','800','900'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Piazzolla'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Piedra'=>[['normal'],['latin','latin-ext']], + 'Pinyon Script'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Pirata One'=>[['normal'],['latin','latin-ext']], + 'Pixelify Sans'=>[['normal','500','600','700'],['cyrillic','latin','latin-ext']], + 'Plaster'=>[['normal'],['latin','latin-ext']], + 'Play'=>[['normal','700'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Playball'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Playfair'=>[['300','normal','500','600','700','800','900','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Playfair Display'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'Playfair Display SC'=>[['normal','italic','700','700italic','900','900italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'Playpen Sans'=>[['100','200','300','normal','500','600','700','800'],['emoji','latin','latin-ext','math','vietnamese']], + 'Plus Jakarta Sans'=>[['200','300','normal','500','600','700','800','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Podkova'=>[['normal','500','600','700','800'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Poiret One'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Poller One'=>[['normal'],['latin']], + 'Poltawski Nowy'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Poly'=>[['normal','italic'],['latin']], + 'Pompiere'=>[['normal'],['latin']], + 'Pontano Sans'=>[['300','normal','500','600','700'],['latin','latin-ext']], + 'Poor Story'=>[['normal'],['korean','latin']], + 'Poppins'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['devanagari','latin','latin-ext']], + 'Port Lligat Sans'=>[['normal'],['latin']], + 'Port Lligat Slab'=>[['normal'],['latin']], + 'Potta One'=>[['normal'],['japanese','latin','latin-ext','vietnamese']], + 'Pragati Narrow'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Praise'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Prata'=>[['normal'],['cyrillic','cyrillic-ext','latin','vietnamese']], + 'Preahvihear'=>[['normal'],['khmer','latin']], + 'Press Start 2P'=>[['normal'],['cyrillic','cyrillic-ext','greek','latin','latin-ext']], + 'Pridi'=>[['200','300','normal','500','600','700'],['latin','latin-ext','thai','vietnamese']], + 'Princess Sofia'=>[['normal'],['latin','latin-ext']], + 'Prociono'=>[['normal'],['latin']], + 'Prompt'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','thai','vietnamese']], + 'Prosto One'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Proza Libre'=>[['normal','italic','500','500italic','600','600italic','700','700italic','800','800italic'],['latin','latin-ext']], + 'Public Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Puppies Play'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Puritan'=>[['normal','italic','700','700italic'],['latin']], + 'Purple Purse'=>[['normal'],['latin','latin-ext']], + 'Qahiri'=>[['normal'],['arabic','latin']], + 'Quando'=>[['normal'],['latin','latin-ext']], + 'Quantico'=>[['normal','italic','700','700italic'],['latin']], + 'Quattrocento'=>[['normal','700'],['latin','latin-ext']], + 'Quattrocento Sans'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Questrial'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Quicksand'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Quintessential'=>[['normal'],['latin','latin-ext']], + 'Qwigley'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Qwitcher Grypen'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'REM'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Racing Sans One'=>[['normal'],['latin','latin-ext']], + 'Radio Canada'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['canadian-aboriginal','latin','latin-ext','vietnamese']], + 'Radley'=>[['normal','italic'],['latin','latin-ext']], + 'Rajdhani'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Rakkas'=>[['normal'],['arabic','latin','latin-ext']], + 'Raleway'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Raleway Dots'=>[['normal'],['latin','latin-ext']], + 'Ramabhadra'=>[['normal'],['latin','telugu']], + 'Ramaraja'=>[['normal'],['latin','telugu']], + 'Rambla'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Rammetto One'=>[['normal'],['latin','latin-ext']], + 'Rampart One'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Ranchers'=>[['normal'],['latin','latin-ext']], + 'Rancho'=>[['normal'],['latin']], + 'Ranga'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Rasa'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['gujarati','latin','latin-ext','vietnamese']], + 'Rationale'=>[['normal'],['latin']], + 'Ravi Prakash'=>[['normal'],['latin','telugu']], + 'Readex Pro'=>[['200','300','normal','500','600','700'],['arabic','latin','latin-ext','vietnamese']], + 'Recursive'=>[['300','normal','500','600','700','800','900'],['cyrillic-ext','latin','latin-ext','vietnamese']], + 'Red Hat Display'=>[['300','normal','500','600','700','800','900','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Red Hat Mono'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Red Hat Text'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Red Rose'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Redacted'=>[['normal'],['latin','latin-ext']], + 'Redacted Script'=>[['300','normal','700'],['latin','latin-ext']], + 'Redressed'=>[['normal'],['latin']], + 'Reem Kufi'=>[['normal','500','600','700'],['arabic','latin','latin-ext','vietnamese']], + 'Reem Kufi Fun'=>[['normal','500','600','700'],['arabic','latin','latin-ext','vietnamese']], + 'Reem Kufi Ink'=>[['normal'],['arabic','latin','latin-ext','vietnamese']], + 'Reenie Beanie'=>[['normal'],['latin']], + 'Reggae One'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Rethink Sans'=>[['normal','500','600','700','800','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext']], + 'Revalia'=>[['normal'],['latin','latin-ext']], + 'Rhodium Libre'=>[['normal'],['devanagari','latin','latin-ext']], + 'Ribeye'=>[['normal'],['latin','latin-ext']], + 'Ribeye Marrow'=>[['normal'],['latin','latin-ext']], + 'Righteous'=>[['normal'],['latin','latin-ext']], + 'Risque'=>[['normal'],['latin','latin-ext']], + 'Road Rage'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Roboto'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Roboto Condensed'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Roboto Flex'=>[['normal'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Roboto Mono'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Roboto Serif'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Roboto Slab'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Rochester'=>[['normal'],['latin']], + 'Rock 3D'=>[['normal'],['japanese','latin']], + 'Rock Salt'=>[['normal'],['latin']], + 'RocknRoll One'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Rokkitt'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Romanesco'=>[['normal'],['latin','latin-ext']], + 'Ropa Sans'=>[['normal','italic'],['latin','latin-ext']], + 'Rosario'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Rosarivo'=>[['normal','italic'],['latin','latin-ext']], + 'Rouge Script'=>[['normal'],['latin']], + 'Rowdies'=>[['300','normal','700'],['latin','latin-ext','vietnamese']], + 'Rozha One'=>[['normal'],['devanagari','latin','latin-ext']], + 'Rubik'=>[['300','normal','500','600','700','800','900','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['arabic','cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik 80s Fade'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Beastly'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Broken Fax'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Bubbles'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Burned'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Dirt'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Distressed'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Doodle Shadow'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Doodle Triangles'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Gemstones'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Glitch'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Glitch Pop'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Iso'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Lines'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Maps'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Marker Hatch'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Maze'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Microbe'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Mono One'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Rubik Moonrocks'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Pixels'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Puddles'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Scribble'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext','math','symbols']], + 'Rubik Spray Paint'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Storm'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Vinyl'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Rubik Wet Paint'=>[['normal'],['cyrillic','cyrillic-ext','hebrew','latin','latin-ext']], + 'Ruda'=>[['normal','500','600','700','800','900'],['cyrillic','latin','latin-ext','vietnamese']], + 'Rufina'=>[['normal','700'],['latin','latin-ext']], + 'Ruge Boogie'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Ruluko'=>[['normal'],['latin','latin-ext']], + 'Rum Raisin'=>[['normal'],['latin','latin-ext']], + 'Ruslan Display'=>[['normal'],['cyrillic','latin','latin-ext','math','symbols']], + 'Russo One'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Ruthie'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Ruwudu'=>[['normal','500','600','700'],['arabic','latin','latin-ext']], + 'Rye'=>[['normal'],['latin','latin-ext']], + 'STIX Two Text'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Sacramento'=>[['normal'],['latin','latin-ext']], + 'Sahitya'=>[['normal','700'],['devanagari','latin']], + 'Sail'=>[['normal'],['latin','latin-ext']], + 'Saira'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Saira Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Saira Extra Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Saira Semi Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Saira Stencil One'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Salsa'=>[['normal'],['latin']], + 'Sanchez'=>[['normal','italic'],['latin','latin-ext']], + 'Sancreek'=>[['normal'],['latin','latin-ext']], + 'Sansita'=>[['normal','italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext']], + 'Sansita Swashed'=>[['300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Sarabun'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic'],['latin','latin-ext','thai','vietnamese']], + 'Sarala'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Sarina'=>[['normal'],['latin','latin-ext']], + 'Sarpanch'=>[['normal','500','600','700','800','900'],['devanagari','latin','latin-ext']], + 'Sassy Frass'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Satisfy'=>[['normal'],['latin']], + 'Sawarabi Gothic'=>[['normal'],['cyrillic','japanese','latin','latin-ext','vietnamese']], + 'Sawarabi Mincho'=>[['normal'],['japanese','latin','latin-ext']], + 'Scada'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext']], + 'Scheherazade New'=>[['normal','500','600','700'],['arabic','latin','latin-ext']], + 'Schibsted Grotesk'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'Schoolbell'=>[['normal'],['latin']], + 'Scope One'=>[['normal'],['latin','latin-ext']], + 'Seaweed Script'=>[['normal'],['latin','latin-ext']], + 'Secular One'=>[['normal'],['hebrew','latin','latin-ext']], + 'Sedgwick Ave'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Sedgwick Ave Display'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Sen'=>[['normal','500','600','700','800'],['latin','latin-ext']], + 'Send Flowers'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Sevillana'=>[['normal'],['latin','latin-ext']], + 'Seymour One'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Shadows Into Light'=>[['normal'],['latin']], + 'Shadows Into Light Two'=>[['normal'],['latin','latin-ext']], + 'Shalimar'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Shantell Sans'=>[['300','normal','500','600','700','800','300italic','italic','500italic','600italic','700italic','800italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Shanti'=>[['normal'],['latin','latin-ext']], + 'Share'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Share Tech'=>[['normal'],['latin']], + 'Share Tech Mono'=>[['normal'],['latin']], + 'Shippori Antique'=>[['normal'],['japanese','latin','latin-ext']], + 'Shippori Antique B1'=>[['normal'],['japanese','latin','latin-ext']], + 'Shippori Mincho'=>[['normal','500','600','700','800'],['japanese','latin','latin-ext']], + 'Shippori Mincho B1'=>[['normal','500','600','700','800'],['japanese','latin','latin-ext']], + 'Shizuru'=>[['normal'],['japanese','latin']], + 'Shojumaru'=>[['normal'],['latin','latin-ext']], + 'Short Stack'=>[['normal'],['latin']], + 'Shrikhand'=>[['normal'],['gujarati','latin','latin-ext']], + 'Siemreap'=>[['normal'],['khmer']], + 'Sigmar'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Sigmar One'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Signika'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Signika Negative'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Silkscreen'=>[['normal','700'],['latin','latin-ext']], + 'Simonetta'=>[['normal','italic','900','900italic'],['latin','latin-ext']], + 'Single Day'=>[['normal'],['korean']], + 'Sintony'=>[['normal','700'],['latin','latin-ext']], + 'Sirin Stencil'=>[['normal'],['latin']], + 'Six Caps'=>[['normal'],['latin']], + 'Sixtyfour'=>[['normal'],['latin','latin-ext','math','symbols']], + 'Skranji'=>[['normal','700'],['latin','latin-ext']], + 'Slabo 13px'=>[['normal'],['latin','latin-ext']], + 'Slabo 27px'=>[['normal'],['latin','latin-ext']], + 'Slackey'=>[['normal'],['latin']], + 'Slackside One'=>[['normal'],['japanese','latin','latin-ext']], + 'Smokum'=>[['normal'],['latin']], + 'Smooch'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Smooch Sans'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Smythe'=>[['normal'],['latin']], + 'Sniglet'=>[['normal','800'],['latin','latin-ext']], + 'Snippet'=>[['normal'],['latin']], + 'Snowburst One'=>[['normal'],['latin','latin-ext']], + 'Sofadi One'=>[['normal'],['latin']], + 'Sofia'=>[['normal'],['latin']], + 'Sofia Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext']], + 'Sofia Sans Condensed'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext']], + 'Sofia Sans Extra Condensed'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext']], + 'Sofia Sans Semi Condensed'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext']], + 'Solitreo'=>[['normal'],['hebrew','latin','latin-ext']], + 'Solway'=>[['300','normal','500','700','800'],['latin']], + 'Sometype Mono'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Song Myung'=>[['normal'],['korean','latin']], + 'Sono'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']], + 'Sonsie One'=>[['normal'],['latin','latin-ext']], + 'Sora'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext']], + 'Sorts Mill Goudy'=>[['normal','italic'],['latin','latin-ext']], + 'Source Code Pro'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Source Sans 3'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']], + 'Source Serif 4'=>[['200','300','normal','500','600','700','800','900','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Space Grotesk'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Space Mono'=>[['normal','italic','700','700italic'],['latin','latin-ext','vietnamese']], + 'Special Elite'=>[['normal'],['latin']], + 'Spectral'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'Spectral SC'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic'],['cyrillic','latin','latin-ext','vietnamese']], + 'Spicy Rice'=>[['normal'],['latin']], + 'Spinnaker'=>[['normal'],['latin','latin-ext']], + 'Spirax'=>[['normal'],['latin']], + 'Splash'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Spline Sans'=>[['300','normal','500','600','700'],['latin','latin-ext']], + 'Spline Sans Mono'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext']], + 'Squada One'=>[['normal'],['latin']], + 'Square Peg'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Sree Krushnadevaraya'=>[['normal'],['latin','telugu']], + 'Sriracha'=>[['normal'],['latin','latin-ext','thai','vietnamese']], + 'Srisakdi'=>[['normal','700'],['latin','latin-ext','thai','vietnamese']], + 'Staatliches'=>[['normal'],['latin','latin-ext']], + 'Stalemate'=>[['normal'],['latin','latin-ext']], + 'Stalinist One'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Stardos Stencil'=>[['normal','700'],['latin']], + 'Stick'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Stick No Bills'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','sinhala']], + 'Stint Ultra Condensed'=>[['normal'],['latin','latin-ext']], + 'Stint Ultra Expanded'=>[['normal'],['latin','latin-ext']], + 'Stoke'=>[['300','normal'],['latin','latin-ext']], + 'Strait'=>[['normal'],['latin','latin-ext']], + 'Style Script'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Stylish'=>[['normal'],['korean','latin']], + 'Sue Ellen Francisco'=>[['normal'],['latin']], + 'Suez One'=>[['normal'],['hebrew','latin','latin-ext']], + 'Sulphur Point'=>[['300','normal','700'],['latin','latin-ext']], + 'Sumana'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Sunflower'=>[['300','500','700'],['korean','latin']], + 'Sunshiney'=>[['normal'],['latin']], + 'Supermercado One'=>[['normal'],['latin']], + 'Sura'=>[['normal','700'],['devanagari','latin','latin-ext']], + 'Suranna'=>[['normal'],['latin','telugu']], + 'Suravaram'=>[['normal'],['latin','telugu']], + 'Suwannaphum'=>[['100','300','normal','700','900'],['khmer','latin']], + 'Swanky and Moo Moo'=>[['normal'],['latin']], + 'Syncopate'=>[['normal','700'],['latin']], + 'Syne'=>[['normal','500','600','700','800'],['greek','latin','latin-ext']], + 'Syne Mono'=>[['normal'],['latin','latin-ext']], + 'Syne Tactile'=>[['normal'],['latin','latin-ext']], + 'Tai Heritage Pro'=>[['normal','700'],['latin','latin-ext','tai-viet','vietnamese']], + 'Tajawal'=>[['200','300','normal','500','700','800','900'],['arabic','latin']], + 'Tangerine'=>[['normal','700'],['latin']], + 'Tapestry'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Taprom'=>[['normal'],['khmer','latin']], + 'Tauri'=>[['normal'],['latin','latin-ext']], + 'Taviraj'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','thai','vietnamese']], + 'Teko'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']], + 'Tektur'=>[['normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Telex'=>[['normal'],['latin','latin-ext']], + 'Tenali Ramakrishna'=>[['normal'],['latin','telugu']], + 'Tenor Sans'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Text Me One'=>[['normal'],['latin','latin-ext']], + 'Texturina'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Thasadith'=>[['normal','italic','700','700italic'],['latin','latin-ext','thai','vietnamese']], + 'The Girl Next Door'=>[['normal'],['latin']], + 'The Nautigal'=>[['normal','700'],['latin','latin-ext','vietnamese']], + 'Tienne'=>[['normal','700','900'],['latin']], + 'Tillana'=>[['normal','500','600','700','800'],['devanagari','latin','latin-ext']], + 'Tilt Neon'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Tilt Prism'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Tilt Warp'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Timmana'=>[['normal'],['latin','telugu']], + 'Tinos'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','vietnamese']], + 'Tiro Bangla'=>[['normal','italic'],['bengali','latin','latin-ext']], + 'Tiro Devanagari Hindi'=>[['normal','italic'],['devanagari','latin','latin-ext']], + 'Tiro Devanagari Marathi'=>[['normal','italic'],['devanagari','latin','latin-ext']], + 'Tiro Devanagari Sanskrit'=>[['normal','italic'],['devanagari','latin','latin-ext']], + 'Tiro Gurmukhi'=>[['normal','italic'],['gurmukhi','latin','latin-ext']], + 'Tiro Kannada'=>[['normal','italic'],['kannada','latin','latin-ext']], + 'Tiro Tamil'=>[['normal','italic'],['latin','latin-ext','tamil']], + 'Tiro Telugu'=>[['normal','italic'],['latin','latin-ext','telugu']], + 'Titan One'=>[['normal'],['latin','latin-ext']], + 'Titillium Web'=>[['200','200italic','300','300italic','normal','italic','600','600italic','700','700italic','900'],['latin','latin-ext']], + 'Tomorrow'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext']], + 'Tourney'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Trade Winds'=>[['normal'],['latin']], + 'Train One'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Trirong'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','thai','vietnamese']], + 'Trispace'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']], + 'Trocchi'=>[['normal'],['latin','latin-ext']], + 'Trochut'=>[['normal','italic','700'],['latin']], + 'Truculenta'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']], + 'Trykker'=>[['normal'],['latin','latin-ext']], + 'Tsukimi Rounded'=>[['300','normal','500','600','700'],['japanese','latin','latin-ext']], + 'Tulpen One'=>[['normal'],['latin']], + 'Turret Road'=>[['200','300','normal','500','700','800'],['latin','latin-ext']], + 'Twinkle Star'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Ubuntu'=>[['300','300italic','normal','italic','500','500italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext']], + 'Ubuntu Condensed'=>[['normal'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext']], + 'Ubuntu Mono'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext']], + 'Uchen'=>[['normal'],['latin','tibetan']], + 'Ultra'=>[['normal'],['latin']], + 'Unbounded'=>[['200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Uncial Antiqua'=>[['normal'],['latin']], + 'Underdog'=>[['normal'],['cyrillic','latin','latin-ext']], + 'Unica One'=>[['normal'],['latin','latin-ext','vietnamese']], + 'UnifrakturCook'=>[['700'],['latin']], + 'UnifrakturMaguntia'=>[['normal'],['latin']], + 'Unkempt'=>[['normal','700'],['latin']], + 'Unlock'=>[['normal'],['latin','latin-ext']], + 'Unna'=>[['normal','italic','700','700italic'],['latin','latin-ext']], + 'Updock'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Urbanist'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']], + 'VT323'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Vampiro One'=>[['normal'],['latin','latin-ext']], + 'Varela'=>[['normal'],['latin','latin-ext']], + 'Varela Round'=>[['normal'],['hebrew','latin','latin-ext','vietnamese']], + 'Varta'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']], + 'Vast Shadow'=>[['normal'],['latin']], + 'Vazirmatn'=>[['100','200','300','normal','500','600','700','800','900'],['arabic','latin','latin-ext']], + 'Vesper Libre'=>[['normal','500','700','900'],['devanagari','latin','latin-ext']], + 'Viaoda Libre'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Vibes'=>[['normal'],['arabic','latin']], + 'Vibur'=>[['normal'],['latin']], + 'Victor Mono'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Vidaloka'=>[['normal'],['latin']], + 'Viga'=>[['normal'],['latin','latin-ext']], + 'Vina Sans'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Voces'=>[['normal'],['latin','latin-ext']], + 'Volkhov'=>[['normal','italic','700','700italic'],['latin']], + 'Vollkorn'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']], + 'Vollkorn SC'=>[['normal','600','700','900'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Voltaire'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Vujahday Script'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Waiting for the Sunrise'=>[['normal'],['latin']], + 'Wallpoet'=>[['normal'],['latin']], + 'Walter Turncoat'=>[['normal'],['latin']], + 'Warnes'=>[['normal'],['latin','latin-ext']], + 'Water Brush'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Waterfall'=>[['normal'],['latin','latin-ext','vietnamese']], + 'Wavefont'=>[['100','200','300','normal','500','600','700','800','900'],['latin']], + 'Wellfleet'=>[['normal'],['latin','latin-ext']], + 'Wendy One'=>[['normal'],['latin','latin-ext']], + 'Whisper'=>[['normal'],['latin','latin-ext','vietnamese']], + 'WindSong'=>[['normal','500'],['latin','latin-ext','vietnamese']], + 'Wire One'=>[['normal'],['latin']], + 'Wix Madefor Display'=>[['normal','500','600','700','800'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Wix Madefor Text'=>[['normal','italic','500','500italic','600','600italic','700','700italic','800','800italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Work Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']], + 'Workbench'=>[['normal'],['latin','math','symbols']], + 'Xanh Mono'=>[['normal','italic'],['latin','latin-ext','vietnamese']], + 'Yaldevi'=>[['200','300','normal','500','600','700'],['latin','latin-ext','sinhala']], + 'Yanone Kaffeesatz'=>[['200','300','normal','500','600','700'],['cyrillic','latin','latin-ext','vietnamese']], + 'Yantramanav'=>[['100','300','normal','500','700','900'],['devanagari','latin','latin-ext']], + 'Yatra One'=>[['normal'],['devanagari','latin','latin-ext']], + 'Yellowtail'=>[['normal'],['latin']], + 'Yeon Sung'=>[['normal'],['korean','latin']], + 'Yeseva One'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']], + 'Yesteryear'=>[['normal'],['latin']], + 'Yomogi'=>[['normal'],['cyrillic','japanese','latin','latin-ext','vietnamese']], + 'Young Serif'=>[['normal'],['latin','latin-ext']], + 'Yrsa'=>[['300','normal','500','600','700','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']], + 'Ysabeau'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','math','symbols','vietnamese']], + 'Ysabeau Infant'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','math','symbols','vietnamese']], + 'Ysabeau Office'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','math','symbols','vietnamese']], + 'Ysabeau SC'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','math','symbols','vietnamese']], + 'Yuji Boku'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Yuji Hentaigana Akari'=>[['normal'],['japanese','latin','latin-ext']], + 'Yuji Hentaigana Akebono'=>[['normal'],['japanese','latin','latin-ext']], + 'Yuji Mai'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Yuji Syuku'=>[['normal'],['cyrillic','japanese','latin','latin-ext']], + 'Yusei Magic'=>[['normal'],['japanese','latin','latin-ext']], + 'ZCOOL KuaiLe'=>[['normal'],['chinese-simplified','latin']], + 'ZCOOL QingKe HuangYou'=>[['normal'],['chinese-simplified','latin']], + 'ZCOOL XiaoWei'=>[['normal'],['chinese-simplified','latin']], + 'Zen Antique'=>[['normal'],['cyrillic','greek','japanese','latin','latin-ext']], + 'Zen Antique Soft'=>[['normal'],['cyrillic','greek','japanese','latin','latin-ext']], + 'Zen Dots'=>[['normal'],['latin','latin-ext']], + 'Zen Kaku Gothic Antique'=>[['300','normal','500','700','900'],['cyrillic','japanese','latin','latin-ext']], + 'Zen Kaku Gothic New'=>[['300','normal','500','700','900'],['cyrillic','japanese','latin','latin-ext']], + 'Zen Kurenaido'=>[['normal'],['cyrillic','greek','japanese','latin','latin-ext']], + 'Zen Loop'=>[['normal','italic'],['latin','latin-ext']], + 'Zen Maru Gothic'=>[['300','normal','500','700','900'],['cyrillic','greek','japanese','latin','latin-ext']], + 'Zen Old Mincho'=>[['normal','500','600','700','900'],['cyrillic','greek','japanese','latin','latin-ext']], + 'Zen Tokyo Zoo'=>[['normal'],['latin','latin-ext']], + 'Zeyada'=>[['normal'],['latin']], + 'Zhi Mang Xing'=>[['normal'],['chinese-simplified','latin']], + 'Zilla Slab'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext']], + 'Zilla Slab Highlight'=>[['normal','700'],['latin','latin-ext']], + ]; + } +} diff --git a/framework/fields/typography/typography.php b/framework/fields/typography/typography.php new file mode 100644 index 0000000..6ea6bcf --- /dev/null +++ b/framework/fields/typography/typography.php @@ -0,0 +1,544 @@ +field_before(); + + $args = wp_parse_args( $this->field, array( + 'font_family' => true, + 'font_weight' => true, + 'font_style' => true, + 'font_size' => true, + 'line_height' => true, + 'letter_spacing' => true, + 'text_align' => true, + 'text_transform' => true, + 'color' => true, + 'chosen' => true, + 'preview' => true, + 'subset' => true, + 'multi_subset' => false, + 'extra_styles' => false, + 'backup_font_family' => false, + 'font_variant' => false, + 'word_spacing' => false, + 'text_decoration' => false, + 'custom_style' => false, + 'compact' => false, + 'exclude' => '', + 'unit' => 'px', + 'line_height_unit' => '', + 'preview_text' => 'The quick brown fox jumps over the lazy dog', + ) ); + + if ( $args['compact'] ) { + $args['text_transform'] = false; + $args['text_align'] = false; + $args['font_size'] = false; + $args['line_height'] = false; + $args['letter_spacing'] = false; + $args['preview'] = false; + $args['color'] = false; + } + + $default_value = array( + 'font-family' => '', + 'font-weight' => '', + 'font-style' => '', + 'font-variant' => '', + 'font-size' => '', + 'line-height' => '', + 'letter-spacing' => '', + 'word-spacing' => '', + 'text-align' => '', + 'text-transform' => '', + 'text-decoration' => '', + 'backup-font-family' => '', + 'color' => '', + 'custom-style' => '', + 'type' => '', + 'subset' => '', + 'extra-styles' => array(), + ); + + $default_value = ( ! empty( $this->field['default'] ) ) ? wp_parse_args( $this->field['default'], $default_value ) : $default_value; + $this->value = wp_parse_args( $this->value, $default_value ); + $this->chosen = $args['chosen']; + $chosen_class = ( $this->chosen ) ? ' wp_china_yes--chosen' : ''; + $line_height_unit = ( ! empty( $args['line_height_unit'] ) ) ? $args['line_height_unit'] : $args['unit']; + + echo '
        '; + + echo '
        '; + + // + // Font Family + if ( ! empty( $args['font_family'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Font Family', 'wp_china_yes' ) .'
        '; + echo $this->create_select( array( $this->value['font-family'] => $this->value['font-family'] ), 'font-family', esc_html__( 'Select a font', 'wp_china_yes' ) ); + echo '
        '; + } + + // + // Backup Font Family + if ( ! empty( $args['backup_font_family'] ) ) { + echo ''; + } + + // + // Font Style and Extra Style Select + if ( ! empty( $args['font_weight'] ) || ! empty( $args['font_style'] ) ) { + + // + // Font Style Select + echo ''; + + } + + // + // Subset + if ( ! empty( $args['subset'] ) ) { + echo ''; + } + + // + // Text Align + if ( ! empty( $args['text_align'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Text Align', 'wp_china_yes' ) .'
        '; + echo $this->create_select( array( + 'inherit' => esc_html__( 'Inherit', 'wp_china_yes' ), + 'left' => esc_html__( 'Left', 'wp_china_yes' ), + 'center' => esc_html__( 'Center', 'wp_china_yes' ), + 'right' => esc_html__( 'Right', 'wp_china_yes' ), + 'justify' => esc_html__( 'Justify', 'wp_china_yes' ), + 'initial' => esc_html__( 'Initial', 'wp_china_yes' ) + ), 'text-align', esc_html__( 'Default', 'wp_china_yes' ) ); + echo '
        '; + } + + // + // Font Variant + if ( ! empty( $args['font_variant'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Font Variant', 'wp_china_yes' ) .'
        '; + echo $this->create_select( array( + 'normal' => esc_html__( 'Normal', 'wp_china_yes' ), + 'small-caps' => esc_html__( 'Small Caps', 'wp_china_yes' ), + 'all-small-caps' => esc_html__( 'All Small Caps', 'wp_china_yes' ) + ), 'font-variant', esc_html__( 'Default', 'wp_china_yes' ) ); + echo '
        '; + } + + // + // Text Transform + if ( ! empty( $args['text_transform'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Text Transform', 'wp_china_yes' ) .'
        '; + echo $this->create_select( array( + 'none' => esc_html__( 'None', 'wp_china_yes' ), + 'capitalize' => esc_html__( 'Capitalize', 'wp_china_yes' ), + 'uppercase' => esc_html__( 'Uppercase', 'wp_china_yes' ), + 'lowercase' => esc_html__( 'Lowercase', 'wp_china_yes' ) + ), 'text-transform', esc_html__( 'Default', 'wp_china_yes' ) ); + echo '
        '; + } + + // + // Text Decoration + if ( ! empty( $args['text_decoration'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Text Decoration', 'wp_china_yes' ) .'
        '; + echo $this->create_select( array( + 'none' => esc_html__( 'None', 'wp_china_yes' ), + 'underline' => esc_html__( 'Solid', 'wp_china_yes' ), + 'underline double' => esc_html__( 'Double', 'wp_china_yes' ), + 'underline dotted' => esc_html__( 'Dotted', 'wp_china_yes' ), + 'underline dashed' => esc_html__( 'Dashed', 'wp_china_yes' ), + 'underline wavy' => esc_html__( 'Wavy', 'wp_china_yes' ), + 'underline overline' => esc_html__( 'Overline', 'wp_china_yes' ), + 'line-through' => esc_html__( 'Line-through', 'wp_china_yes' ) + ), 'text-decoration', esc_html__( 'Default', 'wp_china_yes' ) ); + echo '
        '; + } + + echo '
        '; + + echo '
        '; + + // + // Font Size + if ( ! empty( $args['font_size'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Font Size', 'wp_china_yes' ) .'
        '; + echo '
        '; + echo ''; + echo ''. esc_attr( $args['unit'] ) .''; + echo '
        '; + echo '
        '; + } + + // + // Line Height + if ( ! empty( $args['line_height'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Line Height', 'wp_china_yes' ) .'
        '; + echo '
        '; + echo ''; + echo ''. esc_attr( $line_height_unit ) .''; + echo '
        '; + echo '
        '; + } + + // + // Letter Spacing + if ( ! empty( $args['letter_spacing'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Letter Spacing', 'wp_china_yes' ) .'
        '; + echo '
        '; + echo ''; + echo ''. esc_attr( $args['unit'] ) .''; + echo '
        '; + echo '
        '; + } + + // + // Word Spacing + if ( ! empty( $args['word_spacing'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Word Spacing', 'wp_china_yes' ) .'
        '; + echo '
        '; + echo ''; + echo ''. esc_attr( $args['unit'] ) .''; + echo '
        '; + echo '
        '; + } + + echo '
        '; + + // + // Font Color + if ( ! empty( $args['color'] ) ) { + $default_color_attr = ( ! empty( $default_value['color'] ) ) ? ' data-default-color="'. esc_attr( $default_value['color'] ) .'"' : ''; + echo '
        '; + echo '
        '. esc_html__( 'Font Color', 'wp_china_yes' ) .'
        '; + echo '
        '; + echo ''; + echo '
        '; + echo '
        '; + } + + // + // Custom style + if ( ! empty( $args['custom_style'] ) ) { + echo '
        '; + echo '
        '. esc_html__( 'Custom Style', 'wp_china_yes' ) .'
        '; + echo ''; + echo '
        '; + } + + // + // Preview + $always_preview = ( $args['preview'] !== 'always' ) ? ' hidden' : ''; + + if ( ! empty( $args['preview'] ) ) { + echo '
        '; + echo '
        '; + echo '
        '. esc_attr( $args['preview_text'] ) .'
        '; + echo '
        '; + } + + echo ''; + echo ''; + + echo '
        '; + + echo $this->field_after(); + + } + + public function create_select( $options, $name, $placeholder = '', $is_multiple = false ) { + + $multiple_name = ( $is_multiple ) ? '[]' : ''; + $multiple_attr = ( $is_multiple ) ? ' multiple data-multiple="true"' : ''; + $chosen_rtl = ( $this->chosen && is_rtl() ) ? ' chosen-rtl' : ''; + + $output = ''; + + return $output; + + } + + public function enqueue() { + + if ( ! wp_script_is( 'wp_china_yes-webfontloader' ) ) { + + WP_CHINA_YES::include_plugin_file( 'fields/typography/google-fonts.php' ); + + wp_enqueue_script( 'wp_china_yes-webfontloader', 'https://jsd.admincdn.com/npm/webfontloader@1.6.28/webfontloader.min.js', array( 'wp_china_yes' ), '1.6.28', true ); + + $webfonts = array(); + + $customwebfonts = apply_filters( 'wp_china_yes_field_typography_customwebfonts', array() ); + + if ( ! empty( $customwebfonts ) ) { + $webfonts['custom'] = array( + 'label' => esc_html__( 'Custom Web Fonts', 'wp_china_yes' ), + 'fonts' => $customwebfonts + ); + } + + $webfonts['safe'] = array( + 'label' => esc_html__( 'Safe Web Fonts', 'wp_china_yes' ), + 'fonts' => apply_filters( 'wp_china_yes_field_typography_safewebfonts', array( + 'Arial', + 'Arial Black', + 'Helvetica', + 'Times New Roman', + 'Courier New', + 'Tahoma', + 'Verdana', + 'Impact', + 'Trebuchet MS', + 'Comic Sans MS', + 'Lucida Console', + 'Lucida Sans Unicode', + 'Georgia, serif', + 'Palatino Linotype' + ) + ) ); + + $webfonts['google'] = array( + 'label' => esc_html__( 'Google Web Fonts', 'wp_china_yes' ), + 'fonts' => apply_filters( 'wp_china_yes_field_typography_googlewebfonts', wp_china_yes_get_google_fonts() + ) ); + + $defaultstyles = apply_filters( 'wp_china_yes_field_typography_defaultstyles', array( 'normal', 'italic', '700', '700italic' ) ); + + $googlestyles = apply_filters( 'wp_china_yes_field_typography_googlestyles', array( + '100' => 'Thin 100', + '100italic' => 'Thin 100 Italic', + '200' => 'Extra-Light 200', + '200italic' => 'Extra-Light 200 Italic', + '300' => 'Light 300', + '300italic' => 'Light 300 Italic', + 'normal' => 'Normal 400', + 'italic' => 'Normal 400 Italic', + '500' => 'Medium 500', + '500italic' => 'Medium 500 Italic', + '600' => 'Semi-Bold 600', + '600italic' => 'Semi-Bold 600 Italic', + '700' => 'Bold 700', + '700italic' => 'Bold 700 Italic', + '800' => 'Extra-Bold 800', + '800italic' => 'Extra-Bold 800 Italic', + '900' => 'Black 900', + '900italic' => 'Black 900 Italic' + ) ); + + $webfonts = apply_filters( 'wp_china_yes_field_typography_webfonts', $webfonts ); + + wp_localize_script( 'wp_china_yes', 'wp_china_yes_typography_json', array( + 'webfonts' => $webfonts, + 'defaultstyles' => $defaultstyles, + 'googlestyles' => $googlestyles + ) ); + + } + + } + + public function enqueue_google_fonts( $method = 'enqueue' ) { + + $is_google = false; + + if ( ! empty( $this->value['type'] ) ) { + $is_google = ( $this->value['type'] === 'google' ) ? true : false; + } else { + WP_CHINA_YES::include_plugin_file( 'fields/typography/google-fonts.php' ); + $is_google = ( array_key_exists( $this->value['font-family'], wp_china_yes_get_google_fonts() ) ) ? true : false; + } + + if ( $is_google ) { + + // set style + $font_family = ( ! empty( $this->value['font-family'] ) ) ? $this->value['font-family'] : ''; + $font_weight = ( ! empty( $this->value['font-weight'] ) ) ? $this->value['font-weight'] : ''; + $font_style = ( ! empty( $this->value['font-style'] ) ) ? $this->value['font-style'] : ''; + + if ( $font_weight || $font_style ) { + $style = $font_weight . $font_style; + if ( ! empty( $style ) ) { + $style = ( $style === 'normal' ) ? '400' : $style; + WP_CHINA_YES::$webfonts[$method][$font_family][$style] = $style; + } + } else { + WP_CHINA_YES::$webfonts[$method][$font_family] = array(); + } + + // set extra styles + if ( ! empty( $this->value['extra-styles'] ) ) { + foreach ( $this->value['extra-styles'] as $extra_style ) { + if ( ! empty( $extra_style ) ) { + $extra_style = ( $extra_style === 'normal' ) ? '400' : $extra_style; + WP_CHINA_YES::$webfonts[$method][$font_family][$extra_style] = $extra_style; + } + } + } + + // set subsets + if ( ! empty( $this->value['subset'] ) ) { + $this->value['subset'] = ( is_array( $this->value['subset'] ) ) ? $this->value['subset'] : array_filter( (array) $this->value['subset'] ); + foreach ( $this->value['subset'] as $subset ) { + if( ! empty( $subset ) ) { + WP_CHINA_YES::$subsets[$subset] = $subset; + } + } + } + + return true; + + } + + return false; + + } + + public function output() { + + $output = ''; + $bg_image = array(); + $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : ''; + $element = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output']; + + $font_family = ( ! empty( $this->value['font-family'] ) ) ? $this->value['font-family'] : ''; + $backup_family = ( ! empty( $this->value['backup-font-family'] ) ) ? ', '. $this->value['backup-font-family'] : ''; + + if ( $font_family ) { + $output .= 'font-family:"'. $font_family .'"'. $backup_family . $important .';'; + } + + // Common font properties + $properties = array( + 'color', + 'font-weight', + 'font-style', + 'font-variant', + 'text-align', + 'text-transform', + 'text-decoration', + ); + + foreach ( $properties as $property ) { + if ( isset( $this->value[$property] ) && $this->value[$property] !== '' ) { + $output .= $property .':'. $this->value[$property] . $important .';'; + } + } + + $properties = array( + 'font-size', + 'line-height', + 'letter-spacing', + 'word-spacing', + ); + + $unit = ( ! empty( $this->value['unit'] ) ) ? $this->value['unit'] : 'px'; + $line_height_unit = ( ! empty( $this->value['line_height_unit'] ) ) ? $this->value['line_height_unit'] : $unit; + + foreach ( $properties as $property ) { + if ( isset( $this->value[$property] ) && $this->value[$property] !== '' ) { + $unit = ( $property === 'line-height' ) ? $line_height_unit : $unit; + $output .= $property .':'. $this->value[$property] . $unit . $important .';'; + } + } + + $custom_style = ( ! empty( $this->value['custom-style'] ) ) ? $this->value['custom-style'] : ''; + + if ( $output ) { + $output = $element .'{'. $output . $custom_style .'}'; + } + + $this->parent->output_css .= $output; + + return $output; + + } + + } +} diff --git a/framework/fields/upload/upload.php b/framework/fields/upload/upload.php new file mode 100644 index 0000000..1eebcba --- /dev/null +++ b/framework/fields/upload/upload.php @@ -0,0 +1,61 @@ +field, array( + 'library' => array(), + 'preview' => false, + 'preview_width' => '', + 'preview_height' => '', + 'button_title' => esc_html__( 'Upload', 'wp_china_yes' ), + 'remove_title' => esc_html__( 'Remove', 'wp_china_yes' ), + ) ); + + echo $this->field_before(); + + $library = ( is_array( $args['library'] ) ) ? $args['library'] : array_filter( (array) $args['library'] ); + $library = ( ! empty( $library ) ) ? implode(',', $library ) : ''; + $hidden = ( empty( $this->value ) ) ? ' hidden' : ''; + + if ( ! empty( $args['preview'] ) ) { + + $preview_type = ( ! empty( $this->value ) ) ? strtolower( substr( strrchr( $this->value, '.' ), 1 ) ) : ''; + $preview_src = ( ! empty( $preview_type ) && in_array( $preview_type, array( 'jpg', 'jpeg', 'gif', 'png', 'svg', 'webp' ) ) ) ? $this->value : ''; + $preview_width = ( ! empty( $args['preview_width'] ) ) ? 'max-width:'. esc_attr( $args['preview_width'] ) .'px;' : ''; + $preview_height = ( ! empty( $args['preview_height'] ) ) ? 'max-height:'. esc_attr( $args['preview_height'] ) .'px;' : ''; + $preview_style = ( ! empty( $preview_width ) || ! empty( $preview_height ) ) ? ' style="'. esc_attr( $preview_width . $preview_height ) .'"': ''; + $preview_hidden = ( empty( $preview_src ) ) ? ' hidden' : ''; + + echo '
        '; + echo '
        '; + echo ''; + echo '
        '; + echo '
        '; + + } + + echo '
        '; + echo 'field_attributes() .'/>'; + echo ''. $args['button_title'] .''; + echo ''. $args['remove_title'] .''; + echo '
        '; + + echo $this->field_after(); + + } + } +} diff --git a/framework/fields/wp_editor/wp_editor.php b/framework/fields/wp_editor/wp_editor.php new file mode 100644 index 0000000..2614869 --- /dev/null +++ b/framework/fields/wp_editor/wp_editor.php @@ -0,0 +1,107 @@ +field, array( + 'tinymce' => true, + 'quicktags' => true, + 'media_buttons' => true, + 'wpautop' => false, + 'height' => '', + ) ); + + $attributes = array( + 'rows' => 10, + 'class' => 'wp-editor-area', + 'autocomplete' => 'off', + ); + + $editor_height = ( ! empty( $args['height'] ) ) ? ' style="height:'. esc_attr( $args['height'] ) .';"' : ''; + + $editor_settings = array( + 'tinymce' => $args['tinymce'], + 'quicktags' => $args['quicktags'], + 'media_buttons' => $args['media_buttons'], + 'wpautop' => $args['wpautop'], + ); + + echo $this->field_before(); + + echo ( wp_china_yes_wp_editor_api() ) ? '
        ' : ''; + + echo ''; + + echo ( wp_china_yes_wp_editor_api() ) ? '
        ' : ''; + + echo $this->field_after(); + + } + + public function enqueue() { + + if ( wp_china_yes_wp_editor_api() && function_exists( 'wp_enqueue_editor' ) ) { + + wp_enqueue_editor(); + + $this->setup_wp_editor_settings(); + + add_action( 'print_default_editor_scripts', array( $this, 'setup_wp_editor_media_buttons' ) ); + + } + + } + + // Setup wp editor media buttons + public function setup_wp_editor_media_buttons() { + + if ( ! function_exists( 'media_buttons' ) ) { + return; + } + + ob_start(); + echo '
        '; + do_action( 'media_buttons' ); + echo '
        '; + $media_buttons = ob_get_clean(); + + echo ''; + + } + + // Setup wp editor settings + public function setup_wp_editor_settings() { + + if ( wp_china_yes_wp_editor_api() && class_exists( '_WP_Editors') ) { + + $defaults = apply_filters( 'wp_china_yes_wp_editor', array( + 'tinymce' => array( + 'wp_skip_init' => true + ), + ) ); + + $setup = _WP_Editors::parse_settings( 'wp_china_yes_wp_editor', $defaults ); + + _WP_Editors::editor_settings( 'wp_china_yes_wp_editor', $setup ); + + } + + } + + } +} diff --git a/framework/functions/actions.php b/framework/functions/actions.php new file mode 100644 index 0000000..b18ed96 --- /dev/null +++ b/framework/functions/actions.php @@ -0,0 +1,190 @@ + esc_html__( 'Error: Invalid nonce verification.', 'wp_china_yes' ) ) ); + } + + ob_start(); + + $icon_library = ( apply_filters( 'wp_china_yes_fa4', false ) ) ? 'fa4' : 'fa5'; + + WP_CHINA_YES::include_plugin_file( 'fields/icon/'. $icon_library .'-icons.php' ); + + $icon_lists = apply_filters( 'wp_china_yes_field_icon_add_icons', wp_china_yes_get_default_icons() ); + + if ( ! empty( $icon_lists ) ) { + + foreach ( $icon_lists as $list ) { + + echo ( count( $icon_lists ) >= 2 ) ? '
        '. esc_attr( $list['title'] ) .'
        ' : ''; + + foreach ( $list['icons'] as $icon ) { + echo ''; + } + + } + + } else { + + echo '
        '. esc_html__( 'No data available.', 'wp_china_yes' ) .'
        '; + + } + + $content = ob_get_clean(); + + wp_send_json_success( array( 'content' => $content ) ); + + } + add_action( 'wp_ajax_wp_china_yes-get-icons', 'wp_china_yes_get_icons' ); +} + +/** + * + * Export + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_export' ) ) { + function wp_china_yes_export() { + + $nonce = ( ! empty( $_GET[ 'nonce' ] ) ) ? sanitize_text_field( wp_unslash( $_GET[ 'nonce' ] ) ) : ''; + $unique = ( ! empty( $_GET[ 'unique' ] ) ) ? sanitize_text_field( wp_unslash( $_GET[ 'unique' ] ) ) : ''; + + if ( ! wp_verify_nonce( $nonce, 'wp_china_yes_backup_nonce' ) ) { + die( esc_html__( 'Error: Invalid nonce verification.', 'wp_china_yes' ) ); + } + + if ( empty( $unique ) ) { + die( esc_html__( 'Error: Invalid key.', 'wp_china_yes' ) ); + } + + // Export + header('Content-Type: application/json'); + header('Content-disposition: attachment; filename=backup-'. gmdate( 'd-m-Y' ) .'.json'); + header('Content-Transfer-Encoding: binary'); + header('Pragma: no-cache'); + header('Expires: 0'); + + echo json_encode( get_option( $unique ) ); + + die(); + + } + add_action( 'wp_ajax_wp_china_yes-export', 'wp_china_yes_export' ); +} + +/** + * + * Import Ajax + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_import_ajax' ) ) { + function wp_china_yes_import_ajax() { + + $nonce = ( ! empty( $_POST[ 'nonce' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'nonce' ] ) ) : ''; + $unique = ( ! empty( $_POST[ 'unique' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'unique' ] ) ) : ''; + $data = ( ! empty( $_POST[ 'data' ] ) ) ? wp_kses_post_deep( json_decode( wp_unslash( trim( $_POST[ 'data' ] ) ), true ) ) : array(); + + if ( ! wp_verify_nonce( $nonce, 'wp_china_yes_backup_nonce' ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid nonce verification.', 'wp_china_yes' ) ) ); + } + + if ( empty( $unique ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid key.', 'wp_china_yes' ) ) ); + } + + if ( empty( $data ) || ! is_array( $data ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: The response is not a valid JSON response.', 'wp_china_yes' ) ) ); + } + + // Success + update_option( $unique, $data ); + + wp_send_json_success(); + + } + add_action( 'wp_ajax_wp_china_yes-import', 'wp_china_yes_import_ajax' ); +} + +/** + * + * Reset Ajax + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_reset_ajax' ) ) { + function wp_china_yes_reset_ajax() { + + $nonce = ( ! empty( $_POST[ 'nonce' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'nonce' ] ) ) : ''; + $unique = ( ! empty( $_POST[ 'unique' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'unique' ] ) ) : ''; + + if ( ! wp_verify_nonce( $nonce, 'wp_china_yes_backup_nonce' ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid nonce verification.', 'wp_china_yes' ) ) ); + } + + // Success + delete_option( $unique ); + + wp_send_json_success(); + + } + add_action( 'wp_ajax_wp_china_yes-reset', 'wp_china_yes_reset_ajax' ); +} + +/** + * + * Chosen Ajax + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_chosen_ajax' ) ) { + function wp_china_yes_chosen_ajax() { + + $nonce = ( ! empty( $_POST[ 'nonce' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'nonce' ] ) ) : ''; + $type = ( ! empty( $_POST[ 'type' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'type' ] ) ) : ''; + $term = ( ! empty( $_POST[ 'term' ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ 'term' ] ) ) : ''; + $query = ( ! empty( $_POST[ 'query_args' ] ) ) ? wp_kses_post_deep( $_POST[ 'query_args' ] ) : array(); + + if ( ! wp_verify_nonce( $nonce, 'wp_china_yes_chosen_ajax_nonce' ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid nonce verification.', 'wp_china_yes' ) ) ); + } + + if ( empty( $type ) || empty( $term ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid term ID.', 'wp_china_yes' ) ) ); + } + + $capability = apply_filters( 'wp_china_yes_chosen_ajax_capability', 'manage_options' ); + + if ( ! current_user_can( $capability ) ) { + wp_send_json_error( array( 'error' => esc_html__( 'Error: You do not have permission to do that.', 'wp_china_yes' ) ) ); + } + + // Success + $options = WP_CHINA_YES_Fields::field_data( $type, $term, $query ); + + wp_send_json_success( $options ); + + } + add_action( 'wp_ajax_wp_china_yes-chosen', 'wp_china_yes_chosen_ajax' ); +} diff --git a/framework/functions/customize.php b/framework/functions/customize.php new file mode 100644 index 0000000..8fbad7b --- /dev/null +++ b/framework/functions/customize.php @@ -0,0 +1,142 @@ +field['dependency'] ) ) { + + $dependency = $this->field['dependency']; + $depend_visible = ''; + $data_controller = ''; + $data_condition = ''; + $data_value = ''; + $data_global = ''; + + if ( is_array( $dependency[0] ) ) { + $data_controller = implode( '|', array_column( $dependency, 0 ) ); + $data_condition = implode( '|', array_column( $dependency, 1 ) ); + $data_value = implode( '|', array_column( $dependency, 2 ) ); + $data_global = implode( '|', array_column( $dependency, 3 ) ); + $depend_visible = implode( '|', array_column( $dependency, 4 ) ); + } else { + $data_controller = ( ! empty( $dependency[0] ) ) ? $dependency[0] : ''; + $data_condition = ( ! empty( $dependency[1] ) ) ? $dependency[1] : ''; + $data_value = ( ! empty( $dependency[2] ) ) ? $dependency[2] : ''; + $data_global = ( ! empty( $dependency[3] ) ) ? $dependency[3] : ''; + $depend_visible = ( ! empty( $dependency[4] ) ) ? $dependency[4] : ''; + } + + $depend .= ' data-controller="'. esc_attr( $data_controller ) .'"'; + $depend .= ' data-condition="'. esc_attr( $data_condition ) .'"'; + $depend .= ' data-value="'. esc_attr( $data_value ) .'"'; + $depend .= ( ! empty( $data_global ) ) ? ' data-depend-global="true"' : ''; + + $visible = ' wp_china_yes-dependency-control'; + $visible .= ( ! empty( $depend_visible ) ) ? ' wp_china_yes-depend-visible' : ' wp_china_yes-depend-hidden'; + + } + + $id = 'customize-control-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id ); + $class = 'customize-control customize-control-'. $this->type . $visible; + + echo '
      • '; + $this->render_field_content(); + echo '
      • '; + + } + + public function render_field_content() { + + $complex = apply_filters( 'wp_china_yes_customize_complex_fields', array( + 'accordion', + 'background', + 'border', + 'button_set', + 'checkbox', + 'color_group', + 'date', + 'dimensions', + 'fieldset', + 'group', + 'image_select', + 'link', + 'link_color', + 'media', + 'palette', + 'repeater', + 'sortable', + 'sorter', + 'spacing', + 'switcher', + 'tabbed', + 'typography' + ) ); + + $field_id = ( ! empty( $this->field['id'] ) ) ? $this->field['id'] : ''; + $custom = ( ! empty( $this->field['customizer'] ) ) ? true : false; + $is_complex = ( in_array( $this->field['type'], $complex ) ) ? true : false; + $class = ( $is_complex || $custom ) ? ' wp_china_yes-customize-complex' : ''; + $atts = ( $is_complex || $custom ) ? ' data-unique-id="'. esc_attr( $this->unique ) .'" data-option-id="'. esc_attr( $field_id ) .'"' : ''; + + if ( ! $is_complex && ! $custom ) { + $this->field['attributes']['data-customize-setting-link'] = $this->settings['default']->id; + } + + $this->field['name'] = $this->settings['default']->id; + + $this->field['dependency'] = array(); + + echo '
        '; + + WP_CHINA_YES::field( $this->field, $this->value(), $this->unique, 'customize' ); + + echo '
        '; + + } + + } +} diff --git a/framework/functions/helpers.php b/framework/functions/helpers.php new file mode 100644 index 0000000..6a2ac5d --- /dev/null +++ b/framework/functions/helpers.php @@ -0,0 +1,58 @@ +=' ); + } +} diff --git a/framework/functions/sanitize.php b/framework/functions/sanitize.php new file mode 100644 index 0000000..f0c3869 --- /dev/null +++ b/framework/functions/sanitize.php @@ -0,0 +1,29 @@ +add( 'required', esc_html__( 'Please enter a valid email address.', 'wp_china_yes' ) ); + } + + return $validity; + + } +} + +/** + * + * Numeric validate for Customizer + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_customize_validate_numeric' ) ) { + function wp_china_yes_customize_validate_numeric( $validity, $value, $wp_customize ) { + + if ( ! is_numeric( $value ) ) { + $validity->add( 'required', esc_html__( 'Please enter a valid number.', 'wp_china_yes' ) ); + } + + return $validity; + + } +} + +/** + * + * Required validate for Customizer + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_customize_validate_required' ) ) { + function wp_china_yes_customize_validate_required( $validity, $value, $wp_customize ) { + + if ( empty( $value ) ) { + $validity->add( 'required', esc_html__( 'This field is required.', 'wp_china_yes' ) ); + } + + return $validity; + + } +} + +/** + * + * URL validate for Customizer + * + * @since 1.0.0 + * @version 1.0.0 + * + */ +if ( ! function_exists( 'wp_china_yes_customize_validate_url' ) ) { + function wp_china_yes_customize_validate_url( $validity, $value, $wp_customize ) { + + if ( ! filter_var( $value, FILTER_VALIDATE_URL ) ) { + $validity->add( 'required', esc_html__( 'Please enter a valid URL.', 'wp_china_yes' ) ); + } + + return $validity; + + } +} diff --git a/framework/functions/walker.php b/framework/functions/walker.php new file mode 100644 index 0000000..3fe43c7 --- /dev/null +++ b/framework/functions/walker.php @@ -0,0 +1,28 @@ +ID, $item, $depth, $args ); + $custom_fields = ob_get_clean(); + + $output .= preg_replace( '/(?=<(fieldset|p)[^>]+class="[^"]*field-move)/', $custom_fields, $html ); + + } + + } +} diff --git a/framework/index.php b/framework/index.php new file mode 100644 index 0000000..49d255d --- /dev/null +++ b/framework/index.php @@ -0,0 +1 @@ +oNR}(vS)8t|o5p3G7aKM!)@>_v80C=js=q`$VTe8iafa^6)2x_$9b@34V~`cM9ApS%LewKn~z=y!Mz;)oiftXt4d|HT4 zfa^e7e$q;oCkw8@k9H68Kn6R za=8hleYY{YxV@jtXF)oD45WD{Kw5u>`8K!z6ojjYe*tN}_qhE(K-w26fzEd)Nc;W@ z^8t{~^$1AotmFF4Acl(VAdT~bw0=lBjt^Bw>{4z_}~fbAfSI{{L^*Ff6OI7suy zLE8WKK(fb=L9)~P;Qio|&wFu~4bu2$Kq<-&!q_S>kop||0qc7p9aYIDq0+Jqo2Gah11=9L1h%JhL z2Wk9mcj3+gHIVGG6{LB#GoJ_l0_7J$inCWhny(9_efBZWfTY*gK$>S7Bs5qs{SKu5x8pIS`R-#r0MdFn zTz-K=<)c+Dl` zrp0_2qS3t<-EHwANgL$F|Mlw{|Zt8 zSr5@6jgX^|A_%2&2vo094t{Yw^^TGcg&|Kt3<&L&(mn{CkJ7gxk3iZXwGc`VL+BnW zg?tS{K0xURWR=PZ@fefzK#Ba5eDwt?Aa!~Wk1}5YTOjmq(c97n2|yl#WKt6{`yt1< zBFdyU>1EE>fg#SX2I;*y1Sy8x4=I3bhAd9sLV@nDosbidzl8W9l%9kPLUus#e2Et! z^u~}qUxh4(bV2GN^oBP>a1E+-8ovXOJjgOtBg6_OVFTw+GM{789Z!BnsT#5d@&KeC zLTL-+pvvKY0g!xoaoUK2#T8G0hau#rk3+r*c^nUKAZJ0bKfv^Ygj=!29&N+8cbGHDxU?j|n3fA!;!tzM%Aj50@aEX_8{ zD;%%(i8ZJQQ{`^Uajc-Kef-fin$NOBhMj3#81eXHH@DHOV!c*k2EzeE(?fo(kmj#4 z=vRBrvi-%j5s7F;VaK#WTE49ZjVjCDtCd-{R$5^Mjffgm9Eg^ip@>-TbIeLZtoQr1 z&3YhU*wrdu;Il$1Q)q_vs?0W{N~{kAw2~mYX&d!0#@dEfZAG<66d4@KZv+enxe7C) znT`?s#)o=fYX+1;9U=x+#ttpD(a24GY1%41)Y2K-hHj0QKL9EgCih zeUzJcmD-JMrB+yM3>Z2(;{Xw7QD(vHXbV`>1HW3H)5{8H87@Ds_50x8{Y@yn7wS3bE__cyO z1W~9gVEUZ-mVywR!}M!=jp`58g)C@Z!>P?O)2EX$Khyl~)u5X?LO^Q~_lX;re<2L^O&m@Dj7ES`hE%{I(E*j1VXZ>pqxOs4EP<1@jx))9NZy`7Eab;agrI3ZWEj(>}-6J@1U5 zCRENVT2+Sa(<4|r8Z<)`n$=<}t_CxVVB2PC9GS@Zbw}6qO5F^QhhyLbpSpL)fbhOiK37wvci$28nxg)!oqO#qNqcfD1t8q^lFbdhbY$le)3t0 z^J2s)oJPgAwk)E-uY(8@@?~4c{C4EVE*ZDlxuY=qqg#w1PN885900L!!vdMnp=fZo zVP}gSMv%#)RnwG5a3)12l@{6 z)~Vl&{k;M^fL9<7DACInJ7J0LL~Rv@Xu)3b1Knk3XNwY_ZNN1E3(J+@zVlV6dX>v` zQf5LlmSN}U#Lon74YJTeIqLI4U1d?6M8gXTzgF!FPg;qEXci^W-E_)QW1pj~518d4 zFPmrJo%S}Vno4aw6v4Y16s7c{m8pve8QXX%in|Xhms(CFoIus>9Zz06dv`Q zURf>Z!JZETx-NWrNZl)VkI6%_#iB}E*>O?5x>TYebRq-oRZ9g-C-{@2 z!V9ko#|h`ISmEQRqb&2CknOXAE5uE$xOVZ~;57v(z-^OW5?fh2Qejn5G|WE%0^c|y z8b+|;#Hs+?6TvvO8vt$adTxhi+%>W6Yx=j1FY z)FV!oQf)xTOOmU><_>PmEx5zVwY3pd+Czn>DjnN0)xOqYSg1Uzmm687h91n-=F7R- z{)!hjZd2yPDvis1YPr*cdIz8AWk2kxm#}m_UrfZtg1C#DRy?gpiA=}219p{8QF)a`G%bu%p zs(qp0_BU`L-G0?QIxO51<8tt{aGPq}-X=ME(j9A&Q5WUM=NwpKRwr%w%~ z=1yT(SSHyMlWixj&%7$IKiM#St)|)Qdab485)7Ag&b-~OwU5~iP`q#rD@rCQlzeuF@vq1Bxj5VE;Wwp|di zzD~x}im9{p$(|GH=&|m^WRu%Jq0R_ZsIvOT@V1KGb)~0q)u)dSFEr$8UOn7TeIKUJ!vQ{OAo-_q z?t;99(X?WFi=666#9Q31F@y+~piopFhhEbSz1;)nXuZCJ2p3XbZ8tT`u^HJgg>Z%C zQnRzdePe*8YPw3d!t``vw$tq#cUxjY_Dn(1B6;X6v?V-6v*9vYSAIe+L9U|;Y$UG$ ztH6&0E}g}ng*@1ex1pWQA{!>%5$xr_MOoXcwpceTlG7t@6O7c@Cr6G5+%6K8iTF_R z!k8SJOwYE7OI#gMAaA70Yt+MG+7_;n^vTPqi9P{W!wrUEbLk6RYNWbO zlq($Whc?oKeRAjoA0j#3s`_|WkgRK>Qev_TduZX{@sx+)g;TNG+}`t^GLzHo?&)4q zIjkVu(K9k07ih%==^lA4oM9!JKcy^(Y-DUQe?5kN+J9-B9C7dYPaYc@{r4Ph# zv&i0YbfWd=r=E8<91=6bCUgxm5IA&|Cr74H$AOd4&-i6Id5H`1^nqm06Wv&`Zj+^hCk51ejJmSc3k?kg+CNcaB{uJ^VWST3Ja2tapDZ)%TwB zVigWG$NJ=H6u&eWxc$GIgnd(mwf6cn6YV{)!e4qR~iTb0=x$Khj# z6Eppp`!*GuOP`Dh_tKzy#=0Vt8T|6!cILs z6Y|KMoWoT)?wyPt8t;7*a;lR|!BKM4=i2}OV-BH+n2Y1SA)5)e>uPdn%3C58yGl<{ Xdf-iE^PbCi{Gp`e1)MoHOE&ypPBR}V literal 0 HcmV?d00001 diff --git a/framework/languages/zh_CN.po b/framework/languages/zh_CN.po new file mode 100644 index 0000000..4121676 --- /dev/null +++ b/framework/languages/zh_CN.po @@ -0,0 +1,672 @@ +# Copyright (C) 2021 Wp_china_yes +# This file is distributed under the same license as the Wp_china_yes Framework package. +msgid "" +msgstr "" +"POT-Creation-Date: 2021-06-25 12:32:35+00:00\n" +"PO-Revision-Date: 2021-08-19 12:18+0800\n" +"Last-Translator: Seaton Jiang \n" +"Language-Team: \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.3\n" +"Project-Id-Version: \n" + +#: classes/admin-options.class.php:226 +msgid "Error while saving the changes." +msgstr "保存失败" + +#: classes/admin-options.class.php:286 +msgid "Settings successfully imported." +msgstr "导入成功" + +#: classes/admin-options.class.php:298 classes/admin-options.class.php:314 +msgid "Default settings restored." +msgstr "恢复完成" + +#: classes/admin-options.class.php:385 +msgid "Settings saved." +msgstr "保存成功" + +#: classes/admin-options.class.php:565 +msgid "You have unsaved changes, save your changes!" +msgstr "配置发生改变,请勿忘记保存!" + +#: classes/admin-options.class.php:567 +msgid "show all settings" +msgstr "显示所有设置" + +#: classes/admin-options.class.php:569 fields/icon/icon.php:57 +#: fields/map/map.php:23 +msgid "Search..." +msgstr "请输入关键词" + +#: classes/admin-options.class.php:572 classes/admin-options.class.php:695 +msgid "Save" +msgstr "保存配置" + +#: classes/admin-options.class.php:572 classes/admin-options.class.php:695 +msgid "Saving..." +msgstr "正在保存" + +#: classes/admin-options.class.php:573 classes/admin-options.class.php:696 +msgid "Reset Section" +msgstr "恢复此页" + +#: classes/admin-options.class.php:573 classes/admin-options.class.php:696 +msgid "Are you sure to reset this section options?" +msgstr "单击「确定」进行恢复,当前页面的配置将会丢失!" + +#: classes/admin-options.class.php:574 classes/admin-options.class.php:697 +msgid "Reset All" +msgstr "恢复全部" + +#: classes/admin-options.class.php:574 classes/admin-options.class.php:697 +#: classes/comment-options.class.php:216 classes/metabox-options.class.php:294 +#: fields/backup/backup.php:31 +msgid "Reset" +msgstr "恢复默认" + +#: classes/admin-options.class.php:574 classes/admin-options.class.php:697 +msgid "Are you sure you want to reset all settings to default values?" +msgstr "单击「确定」进行恢复,所有页面的配置都将丢失!" + +#: classes/admin-options.class.php:672 classes/comment-options.class.php:199 +#: classes/metabox-options.class.php:277 fields/button_set/button_set.php:56 +#: fields/checkbox/checkbox.php:76 fields/radio/radio.php:75 +#: fields/select/select.php:113 functions/actions.php:41 +msgid "No data available." +msgstr "没有可用数据" + +#: classes/comment-options.class.php:217 classes/metabox-options.class.php:295 +msgid "update post" +msgstr "更新文章" + +#: classes/comment-options.class.php:217 classes/metabox-options.class.php:295 +msgid "Cancel" +msgstr "取消" + +#: classes/setup.class.php:592 +msgid "Are you sure?" +msgstr "单击「确定」进行下一步操作,该操作可能会丢失部分配置!" + +#: classes/setup.class.php:593 +msgid "Please enter %s or more characters" +msgstr "请输入 %s 或更多字符" + +#: classes/setup.class.php:594 +msgid "Searching..." +msgstr "搜索中..." + +#: classes/setup.class.php:595 +msgid "No results found." +msgstr "未找到结果。" + +#: classes/setup.class.php:696 +msgid "Oops! Not allowed." +msgstr "哎呀!不允许。" + +#: classes/setup.class.php:768 classes/setup.class.php:772 +msgid "Field not found!" +msgstr "没有找到任何数据" + +#: classes/shortcode-options.class.php:253 fields/group/group.php:23 +msgid "Add New" +msgstr "新增" + +#: classes/shortcode-options.class.php:290 functions/actions.php:16 +#: functions/actions.php:68 functions/actions.php:106 functions/actions.php:141 +#: functions/actions.php:170 +msgid "Error: Invalid nonce verification." +msgstr "错误: 无效的nonce验证。" + +#: fields/background/background.php:36 fields/media/media.php:59 +msgid "Not selected" +msgstr "未选择" + +#: fields/background/background.php:72 fields/date/date.php:31 +msgid "From" +msgstr "从" + +#: fields/background/background.php:90 fields/date/date.php:32 +msgid "To" +msgstr "到" + +#: fields/background/background.php:108 +msgid "Direction" +msgstr "方向" + +#: fields/background/background.php:114 +msgid "Gradient Direction" +msgstr "渐变方向" + +#: fields/background/background.php:115 +msgid "⇓ top to bottom" +msgstr "⇓ 从上到下" + +#: fields/background/background.php:116 +msgid "⇒ left to right" +msgstr "⇒从左到右" + +#: fields/background/background.php:117 +msgid "⇘ corner top to right" +msgstr "⇘ 右上角" + +#: fields/background/background.php:118 +msgid "⇙ corner top to left" +msgstr "⇘ 左上角" + +#: fields/background/background.php:161 +msgid "Background Position" +msgstr "背景位置" + +#: fields/background/background.php:162 +msgid "Left Top" +msgstr "左上" + +#: fields/background/background.php:163 +msgid "Left Center" +msgstr "左中" + +#: fields/background/background.php:164 +msgid "Left Bottom" +msgstr "左下" + +#: fields/background/background.php:165 +msgid "Center Top" +msgstr "中上" + +#: fields/background/background.php:166 +msgid "Center Center" +msgstr "居中" + +#: fields/background/background.php:167 +msgid "Center Bottom" +msgstr "中下" + +#: fields/background/background.php:168 +msgid "Right Top" +msgstr "右上" + +#: fields/background/background.php:169 +msgid "Right Center" +msgstr "右中" + +#: fields/background/background.php:170 +msgid "Right Bottom" +msgstr "右下" + +#: fields/background/background.php:184 +msgid "Background Repeat" +msgstr "背景重复" + +#: fields/background/background.php:185 +msgid "Repeat" +msgstr "重复" + +#: fields/background/background.php:186 +msgid "No Repeat" +msgstr "不重复" + +#: fields/background/background.php:187 +msgid "Repeat Horizontally" +msgstr "水平重复" + +#: fields/background/background.php:188 +msgid "Repeat Vertically" +msgstr "垂直重复" + +#: fields/background/background.php:202 +msgid "Background Attachment" +msgstr "背景附件" + +#: fields/background/background.php:203 +msgid "Scroll" +msgstr "滚动" + +#: fields/background/background.php:204 +msgid "Fixed" +msgstr "固定" + +#: fields/background/background.php:218 +msgid "Background Size" +msgstr "背景大小" + +#: fields/background/background.php:219 +msgid "Cover" +msgstr "覆盖" + +#: fields/background/background.php:220 +msgid "Contain" +msgstr "包含" + +#: fields/background/background.php:221 +msgid "Auto" +msgstr "自动" + +#: fields/background/background.php:235 +msgid "Background Origin" +msgstr "背景起源" + +#: fields/background/background.php:236 fields/background/background.php:254 +msgid "Padding Box" +msgstr "框内边距" + +#: fields/background/background.php:237 fields/background/background.php:253 +msgid "Border Box" +msgstr "边框" + +#: fields/background/background.php:238 fields/background/background.php:255 +msgid "Content Box" +msgstr "内容框" + +#: fields/background/background.php:252 +msgid "Background Clip" +msgstr "背景剪辑" + +#: fields/background/background.php:269 +msgid "Background Blend Mode" +msgstr "背景混合模式" + +#: fields/background/background.php:270 fields/link_color/link_color.php:36 +#: fields/typography/typography.php:186 +msgid "Normal" +msgstr "正常" + +#: fields/background/background.php:271 +msgid "Multiply" +msgstr "乘" + +#: fields/background/background.php:272 +msgid "Screen" +msgstr "屏幕" + +#: fields/background/background.php:273 +msgid "Overlay" +msgstr "覆盖" + +#: fields/background/background.php:274 +msgid "Darken" +msgstr "变黑" + +#: fields/background/background.php:275 +msgid "Lighten" +msgstr "减轻" + +#: fields/background/background.php:276 +msgid "Color Dodge" +msgstr "颜色减淡" + +#: fields/background/background.php:277 +msgid "Saturation" +msgstr "饱和度" + +#: fields/background/background.php:278 +msgid "Color" +msgstr "颜色" + +#: fields/background/background.php:279 +msgid "Luminosity" +msgstr "光度" + +#: fields/backup/backup.php:26 +msgid "Import" +msgstr "导入" + +#: fields/backup/backup.php:29 +msgid "Export & Download" +msgstr "导出和下载" + +#: fields/border/border.php:25 fields/spacing/spacing.php:25 +msgid "top" +msgstr "顶部" + +#: fields/border/border.php:26 fields/spacing/spacing.php:26 +msgid "right" +msgstr "右" + +#: fields/border/border.php:27 fields/spacing/spacing.php:27 +msgid "bottom" +msgstr "底部" + +#: fields/border/border.php:28 fields/spacing/spacing.php:28 +msgid "left" +msgstr "左" + +#: fields/border/border.php:29 fields/spacing/spacing.php:29 +msgid "all" +msgstr "所有" + +#: fields/border/border.php:51 fields/typography/typography.php:214 +msgid "Solid" +msgstr "实线" + +#: fields/border/border.php:52 fields/typography/typography.php:217 +msgid "Dashed" +msgstr "虚线" + +#: fields/border/border.php:53 fields/typography/typography.php:216 +msgid "Dotted" +msgstr "点线" + +#: fields/border/border.php:54 fields/typography/typography.php:215 +msgid "Double" +msgstr "双线" + +#: fields/border/border.php:55 +msgid "Inset" +msgstr "插入" + +#: fields/border/border.php:56 +msgid "Outset" +msgstr "开始" + +#: fields/border/border.php:57 +msgid "Groove" +msgstr "凹槽" + +#: fields/border/border.php:58 +msgid "ridge" +msgstr "凸出" + +#: fields/border/border.php:59 fields/typography/typography.php:199 +#: fields/typography/typography.php:213 +msgid "None" +msgstr "无" + +#: fields/dimensions/dimensions.php:22 +msgid "width" +msgstr "宽度" + +#: fields/dimensions/dimensions.php:23 +msgid "height" +msgstr "高度" + +#: fields/gallery/gallery.php:20 +msgid "Add Gallery" +msgstr "添加图库" + +#: fields/gallery/gallery.php:21 +msgid "Edit Gallery" +msgstr "编辑图库" + +#: fields/gallery/gallery.php:22 +msgid "Clear" +msgstr "清除" + +#: fields/group/group.php:35 fields/repeater/repeater.php:27 +msgid "Error: Field ID conflict." +msgstr "错误:字段ID冲突。" + +#: fields/group/group.php:46 fields/group/group.php:87 +#: fields/repeater/repeater.php:48 fields/repeater/repeater.php:76 +msgid "Are you sure to delete this item?" +msgstr "确定要删除这个项目吗?" + +#: fields/group/group.php:121 fields/repeater/repeater.php:89 +msgid "You cannot add more." +msgstr "无法添加更多" + +#: fields/group/group.php:122 fields/repeater/repeater.php:90 +msgid "You cannot remove more." +msgstr "无法删除更多" + +#: fields/icon/icon.php:20 fields/icon/icon.php:53 +msgid "Add Icon" +msgstr "添加图标" + +#: fields/icon/icon.php:21 +msgid "Remove Icon" +msgstr "删除图标" + +#: fields/link/link.php:20 +msgid "Add Link" +msgstr "添加链接" + +#: fields/link/link.php:21 +msgid "Edit Link" +msgstr "编辑链接" + +#: fields/link/link.php:22 +msgid "Remove Link" +msgstr "移除链接" + +#: fields/link_color/link_color.php:37 +msgid "Hover" +msgstr "悬停" + +#: fields/link_color/link_color.php:38 +msgid "Active" +msgstr "启用" + +#: fields/link_color/link_color.php:39 +msgid "Visited" +msgstr "访问" + +#: fields/link_color/link_color.php:40 +msgid "Focus" +msgstr "焦点" + +#: fields/map/map.php:24 +msgid "Latitude" +msgstr "纬度" + +#: fields/map/map.php:25 +msgid "Longitude" +msgstr "经度" + +#: fields/media/media.php:25 fields/upload/upload.php:25 +msgid "Upload" +msgstr "上传" + +#: fields/media/media.php:26 fields/upload/upload.php:26 +msgid "Remove" +msgstr "删除" + +#: fields/sorter/sorter.php:21 +msgid "Enabled" +msgstr "启用" + +#: fields/sorter/sorter.php:22 +msgid "Disabled" +msgstr "禁用" + +#: fields/switcher/switcher.php:20 +msgid "On" +msgstr "启用" + +#: fields/switcher/switcher.php:21 +msgid "Off" +msgstr "禁用" + +#: fields/typography/typography.php:96 +msgid "Font Family" +msgstr "字体" + +#: fields/typography/typography.php:97 +msgid "Select a font" +msgstr "选择字体" + +#: fields/typography/typography.php:105 +msgid "Backup Font Family" +msgstr "备份字体系列" + +#: fields/typography/typography.php:119 fields/typography/typography.php:132 +#: fields/typography/typography.php:145 fields/typography/typography.php:160 +#: fields/typography/typography.php:176 fields/typography/typography.php:189 +#: fields/typography/typography.php:203 fields/typography/typography.php:221 +msgid "Default" +msgstr "默认" + +#: fields/typography/typography.php:130 +msgid "Font Style" +msgstr "字体样式" + +#: fields/typography/typography.php:144 fields/typography/typography.php:145 +msgid "Load Extra Styles" +msgstr "加载额外样式" + +#: fields/typography/typography.php:158 +msgid "Subset" +msgstr "子集" + +#: fields/typography/typography.php:168 +msgid "Text Align" +msgstr "文本对齐" + +#: fields/typography/typography.php:170 +msgid "Inherit" +msgstr "继承" + +#: fields/typography/typography.php:171 +msgid "Left" +msgstr "左侧" + +#: fields/typography/typography.php:172 +msgid "Center" +msgstr "居中" + +#: fields/typography/typography.php:173 +msgid "Right" +msgstr "右侧" + +#: fields/typography/typography.php:174 +msgid "Justify" +msgstr "两端对齐" + +#: fields/typography/typography.php:175 +msgid "Initial" +msgstr "初始" + +#: fields/typography/typography.php:184 +msgid "Font Variant" +msgstr "字体变体" + +#: fields/typography/typography.php:187 +msgid "Small Caps" +msgstr "小写" + +#: fields/typography/typography.php:188 +msgid "All Small Caps" +msgstr "所有字母小写" + +#: fields/typography/typography.php:197 +msgid "Text Transform" +msgstr "文本转换" + +#: fields/typography/typography.php:200 +msgid "Capitalize" +msgstr "大写" + +#: fields/typography/typography.php:201 +msgid "Uppercase" +msgstr "大写" + +#: fields/typography/typography.php:202 +msgid "Lowercase" +msgstr "小写" + +#: fields/typography/typography.php:211 +msgid "Text Decoration" +msgstr "文本装饰" + +#: fields/typography/typography.php:218 +msgid "Wavy" +msgstr "波浪" + +#: fields/typography/typography.php:219 +msgid "Overline" +msgstr "上划线" + +#: fields/typography/typography.php:220 +msgid "Line-through" +msgstr "删除线" + +#: fields/typography/typography.php:233 +msgid "Font Size" +msgstr "字体大小" + +#: fields/typography/typography.php:245 +msgid "Line Height" +msgstr "线高度" + +#: fields/typography/typography.php:257 +msgid "Letter Spacing" +msgstr "字母间距" + +#: fields/typography/typography.php:269 +msgid "Word Spacing" +msgstr "字间距" + +#: fields/typography/typography.php:284 +msgid "Font Color" +msgstr "字体颜色" + +#: fields/typography/typography.php:295 +msgid "Custom Style" +msgstr "自定义样式" + +#: fields/typography/typography.php:362 +msgid "Custom Web Fonts" +msgstr "自定义 Web 字体" + +#: fields/typography/typography.php:368 +msgid "Safe Web Fonts" +msgstr "Web 安全字体" + +#: fields/typography/typography.php:388 +msgid "Google Web Fonts" +msgstr "Google Web 字体" + +#: functions/actions.php:72 functions/actions.php:110 +msgid "Error: Invalid key." +msgstr "错误:无效密钥。" + +#: functions/actions.php:114 +msgid "Error: The response is not a valid JSON response." +msgstr "错误:响应不是有效的 JSON 响应。" + +#: functions/actions.php:174 +msgid "Error: Invalid term ID." +msgstr "错误:无效的项目ID。" + +#: functions/actions.php:180 +msgid "Error: You do not have permission to do that." +msgstr "错误:您无权这样做。" + +#: functions/validate.php:14 functions/validate.php:86 +msgid "Please enter a valid email address." +msgstr "请输入正确的电子邮件地址。" + +#: functions/validate.php:32 functions/validate.php:106 +msgid "Please enter a valid number." +msgstr "请输入有效的数字" + +#: functions/validate.php:50 functions/validate.php:126 +msgid "This field is required." +msgstr "这是必填栏。" + +#: functions/validate.php:68 functions/validate.php:146 +msgid "Please enter a valid URL." +msgstr "请输入有效网址" + +#. Plugin Name of the plugin/theme +msgid "Wp_china_yes Framework" +msgstr "Wp_china_yes Framework" + +#. Plugin URI of the plugin/theme +msgid "http://wp_china_yesframework.com/" +msgstr "http://wp_china_yesframework.com/" + +#. Description of the plugin/theme +msgid "A Simple and Lightweight WordPress Option Framework for Themes and Plugins" +msgstr "一个简单且轻量的 WordPress 主题和插件选项框架" + +#. Author of the plugin/theme +msgid "Wp_china_yes" +msgstr "Wp_china_yes" + +#. Author URI of the plugin/theme +msgid "http://wp_china_yesthemes.com/" +msgstr "http://wp_china_yesthemes.com/" diff --git a/helpers.php b/helpers.php index c69e791..bf78610 100644 --- a/helpers.php +++ b/helpers.php @@ -9,13 +9,15 @@ function get_settings() { $settings = is_multisite() ? get_site_option( 'wp_china_yes' ) : get_option( 'wp_china_yes' ); return wp_parse_args( $settings, [ - 'store' => 'wenpai', - 'admincdn' => [ - 'admin' => 'admin', - ], - 'cravatar' => 'cn', - 'windfonts' => 'off', - 'adblock' => 'off', - 'monitor' => 'on', + 'store' => 'wenpai', + 'admincdn' => [ 'admin' ], + 'cravatar' => 'cn', + 'windfonts' => 'off', + 'windfonts_list' => [], + 'adblock' => 'off', + 'adblock_rule' => [], + 'monitor' => true, + 'hide' => false, + 'custom_name' => 'WP-China-Yes', ] ); } diff --git a/wp-china-yes.php b/wp-china-yes.php index 1fe9762..0d93e57 100644 --- a/wp-china-yes.php +++ b/wp-china-yes.php @@ -4,7 +4,7 @@ * Description: 文派叶子 🍃(WP-China-Yes)是中国 WordPress 生态基础设施软件,犹如落叶新芽,生生不息。 * Author: 文派开源 * Author URI: https://wp-china-yes.com - * Version: 3.6.5 + * Version: 3.7.0 * License: GPLv3 or later * Text Domain: wp-china-yes * Domain Path: /languages @@ -19,7 +19,7 @@ namespace WenPai\ChinaYes; defined( 'ABSPATH' ) || exit; -define( 'CHINA_YES_VERSION', '3.6.5' ); +define( 'CHINA_YES_VERSION', '3.7.0' ); define( 'CHINA_YES_PLUGIN_FILE', __FILE__ ); define( 'CHINA_YES_PLUGIN_URL', plugin_dir_url( CHINA_YES_PLUGIN_FILE ) ); define( 'CHINA_YES_PLUGIN_PATH', plugin_dir_path( CHINA_YES_PLUGIN_FILE ) );