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 0000000..f97dade Binary files /dev/null and b/framework/assets/images/checkerboard.png differ 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 @@ +\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 ) );