?> /** * GeneratePress. * * Please do not make any edits to this file. All edits should be done in a child theme. * * @package GeneratePress */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } // Set our theme version. define( 'GENERATE_VERSION', '3.4.0' ); if ( ! function_exists( 'generate_setup' ) ) { add_action( 'after_setup_theme', 'generate_setup' ); /** * Sets up theme defaults and registers support for various WordPress features. * * @since 0.1 */ function generate_setup() { // Make theme available for translation. load_theme_textdomain( 'generatepress' ); // Add theme support for various features. add_theme_support( 'automatic-feed-links' ); add_theme_support( 'post-thumbnails' ); add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link', 'status' ) ); add_theme_support( 'woocommerce' ); add_theme_support( 'title-tag' ); add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style' ) ); add_theme_support( 'customize-selective-refresh-widgets' ); add_theme_support( 'align-wide' ); add_theme_support( 'responsive-embeds' ); $color_palette = generate_get_editor_color_palette(); if ( ! empty( $color_palette ) ) { add_theme_support( 'editor-color-palette', $color_palette ); } add_theme_support( 'custom-logo', array( 'height' => 70, 'width' => 350, 'flex-height' => true, 'flex-width' => true, ) ); // Register primary menu. register_nav_menus( array( 'primary' => __( 'Primary Menu', 'generatepress' ), ) ); /** * Set the content width to something large * We set a more accurate width in generate_smart_content_width() */ global $content_width; if ( ! isset( $content_width ) ) { $content_width = 1200; /* pixels */ } // Add editor styles to the block editor. add_theme_support( 'editor-styles' ); $editor_styles = apply_filters( 'generate_editor_styles', array( 'assets/css/admin/block-editor.css', ) ); add_editor_style( $editor_styles ); } } /** * Get all necessary theme files */ $theme_dir = get_template_directory(); require $theme_dir . '/inc/theme-functions.php'; require $theme_dir . '/inc/defaults.php'; require $theme_dir . '/inc/class-css.php'; require $theme_dir . '/inc/css-output.php'; require $theme_dir . '/inc/general.php'; require $theme_dir . '/inc/customizer.php'; require $theme_dir . '/inc/markup.php'; require $theme_dir . '/inc/typography.php'; require $theme_dir . '/inc/plugin-compat.php'; require $theme_dir . '/inc/block-editor.php'; require $theme_dir . '/inc/class-typography.php'; require $theme_dir . '/inc/class-typography-migration.php'; require $theme_dir . '/inc/class-html-attributes.php'; require $theme_dir . '/inc/class-theme-update.php'; require $theme_dir . '/inc/class-rest.php'; require $theme_dir . '/inc/deprecated.php'; if ( is_admin() ) { require $theme_dir . '/inc/meta-box.php'; require $theme_dir . '/inc/class-dashboard.php'; } /** * Load our theme structure */ require $theme_dir . '/inc/structure/archives.php'; require $theme_dir . '/inc/structure/comments.php'; require $theme_dir . '/inc/structure/featured-images.php'; require $theme_dir . '/inc/structure/footer.php'; require $theme_dir . '/inc/structure/header.php'; require $theme_dir . '/inc/structure/navigation.php'; require $theme_dir . '/inc/structure/post-meta.php'; require $theme_dir . '/inc/structure/sidebars.php'; require $theme_dir . '/inc/structure/search-modal.php'; /** @jsx jsx */ /** * WordPress dependencies */ const { __ } = wp.i18n; const { TextControl, BaseControl, Icon, Notice, Button, Flex, FlexItem, SelectControl, FlexBlock, Modal, } = wp.components; const { useState, useEffect } = wp.element; const { useSelect, dispatch } = wp.data; import { snackbarNotice } from "@/admin/blocks/util"; import Menu from "@/admin/ui/Menu"; import { css, jsx } from "@emotion/core"; import Preview from "./Preview"; import Behavior from "./Behavior"; import Controls from "./Controls"; import Style from "./Style"; import ActionBar from "../presets/ActionBar"; import CTA from "../presets/CTA"; import Email from "../presets/Email"; function EditPlayerPreset({ type = "new", closeModal, addPreset, onSave, updatePreset, name = "", attributes, preset = { "play-large": true, rewind: true, play: true, "fast-forward": true, progress: true, "current-time": true, mute: true, volume: true, speed: false, pip: false, // behavior save_player_position: false, reset_on_end: false, sticky_scroll: false, // style hide_logo: false, border_radius: 0, skin: "default", background_color: "", control_color: "", // features cta: {}, email_collection: {}, action_bar: {}, }, }) { const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [menu, setMenu] = useState(""); const [thisName, setThisName] = useState(name); const [state, setState] = useState(preset); const branding = useSelect((select) => { return select("presto-player/player").branding(); }); const [value, setValue] = useState(""); const genericError = { message: __( "The preset could not be saved. Please reload the page and try again.", "presto-player" ), }; //you tube feature const youtube = useSelect((select) => { return select("presto-player/player").youtube(); }); useEffect(() => { setValue(youtube.channel_id); }, [youtube?.channel_id]); // update state const updateState = (updated = {}) => { setState({ ...state, ...updated }); }; const putPreset = async () => { setLoading(true); try { const data = { ...state, ...{ name: thisName }, }; let saved = await wp.apiFetch({ method: "POST", url: wp.url.addQueryArgs( `${prestoPlayer.root}${prestoPlayer.prestoVersionString}audio-preset/${preset.id}`, { _method: "PUT" } ), data, }); if (!saved) { throw genericError; } // update or create here updatePreset(saved); closeModal(); !!onSave && onSave(saved); snackbarNotice({ message: __("Preset updated!", "presto-player") }); } catch (e) { setError(e?.message ? e.message : genericError); } finally { setLoading(false); } // youtube id save dispatch("presto-player/player").updateYoutube({ channel_id: value }); const data = { ...youtube, ...{ channel_id: value }, }; try { let response = await wp.apiFetch({ path: "wp/v2/settings", method: "POST", data: { presto_player_youtube: data, }, }); if (response?.presto_player_youtube) { dispatch("presto-player/player").setYoutube( response?.presto_player_youtube ); onClose(); } } catch (e) { console.log(e); } }; const createPreset = async () => { setLoading(true); try { let saved = await wp.apiFetch({ method: "POST", url: prestoPlayer.root + prestoPlayer.prestoVersionString + "audio-preset", data: { ...{ name: thisName }, ...state, }, }); if (!saved) { throw genericError; } // update or create here addPreset(saved); closeModal(); !!onSave && onSave(saved); snackbarNotice({ message: __("Preset created!", "presto-player") }); } catch (e) { setError(e?.message ? e.message : genericError); } finally { setLoading(false); } }; // validate and save const save = () => { if (!thisName) { setError(__("You must enter a name for the preset.", "presto-player")); return; } return type === "edit" ? putPreset() : createPreset(); }; const tabs = [ { name: "controls", title: __("Controls", "presto-player"), icon: , component: , }, { name: "behavior", title: __("Behavior", "presto-player"), icon: , component: , }, { name: "style", title: __("Style", "presto-player"), icon: , component: