<?php

namespace Aldine;

use Roots\Sage\Container;
use Roots\Sage\Assets\JsonManifest;
use Roots\Sage\Template\Blade;
use Roots\Sage\Template\BladeProvider;

/**
 * Theme assets
 */
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style(
        'aldine/webfonts',
        'https://fonts.googleapis.com/css?family=Karla:400,400i,700|Spectral:400,400i,600',
        false,
        null
    );
    wp_enqueue_style('aldine/main.css', asset_path('styles/main.css'), false, null);
    /* wp_enqueue_style(
        'uio/normalize.css',
        get_theme_file_uri() . '/lib/infusion/src/lib/normalize/css/normalize.css',
        false,
        null
    );
    wp_enqueue_style(
        'uio/fluid.css',
        get_theme_file_uri() . '/lib/infusion/src/framework/core/css/fluid.css',
        false,
        null
    );
    wp_enqueue_style(
        'uio/enactors.css',
        get_theme_file_uri() . '/lib/infusion/src/framework/preferences/css/Enactors.css',
        false,
        null
    );
    wp_enqueue_style(
        'uio/prefseditor.css',
        get_theme_file_uri() . '/lib/infusion/src/framework/preferences/css/PrefsEditor.css',
        false,
        null
    );
    wp_enqueue_style(
        'uio/separatedpanelprefseditor.css',
        get_theme_file_uri() . '/lib/infusion/src/framework/preferences/css/SeparatedPanelPrefsEditor.css',
        false,
        null
    );
    wp_enqueue_script('uio.js', get_theme_file_uri() . '/lib/infusion/infusion-uiOptions.js', ['jquery'], null, true);
    */
    wp_enqueue_script('aldine/main.js', asset_path('scripts/main.js'), ['jquery'], null, true);
    wp_localize_script('aldine/main.js', 'SAGE_DIST_PATH', get_theme_file_uri() . '/dist/');
}, 100);

/**
 * Theme setup
 */
add_action('after_setup_theme', function () {
    /**
     * Enable plugins to manage the document title
     * @link https://developer.wordpress.org/reference/functions/add_theme_support/#title-tag
     */
    add_theme_support('title-tag');

    /**
     * Register navigation menus
     * @link https://developer.wordpress.org/reference/functions/register_nav_menus/
     */
    register_nav_menus([
        'network-footer-menu' => __('Network Footer Menu', 'aldine')
    ]);

    /**
     * Enable post thumbnails
     * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
     */
    add_theme_support('post-thumbnails');

    /**
     * Enable HTML5 markup support
     * @link https://developer.wordpress.org/reference/functions/add_theme_support/#html5
     */
    add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);

    /**
     * Enable selective refresh for widgets in customizer
     * @link https://developer.wordpress.org/themes/advanced-topics/customizer-api/#theme-support-in-sidebars
     */
    add_theme_support('customize-selective-refresh-widgets');

    /**
     * Use main stylesheet for visual editor
     * @see resources/assets/styles/layouts/_tinymce.scss
     */
    add_editor_style(asset_path('styles/main.css'));
}, 20);

/**
 * Register sidebars
 */
add_action('widgets_init', function () {
    $config = [
        'before_widget' => '<section class="widget %1$s %2$s">',
        'after_widget'  => '</section>',
        'before_title'  => '<h3>',
        'after_title'   => '</h3>'
    ];
    register_sidebar([
        'name'          => __('Home Block 1', 'aldine'),
        'id'            => 'home-block-1'
    ] + $config);
    register_sidebar([
        'name'          => __('Home Block 2', 'aldine'),
        'id'            => 'home-block-2'
    ] + $config);
    register_sidebar([
        'name'          => __('Home Block 3', 'aldine'),
        'id'            => 'home-block-3'
    ] + $config);
    register_sidebar([
        'name'          => __('Home Block 4', 'aldine'),
        'id'            => 'home-block-4'
    ] + $config);
    register_sidebar([
        'name'          => __('Network Footer Block 1', 'aldine'),
        'id'            => 'network-footer-block-1'
    ] + $config);
    register_sidebar([
        'name'          => __('Network Footer Block 2', 'aldine'),
        'id'            => 'network-footer-block-2'
    ] + $config);
});

/**
 * Updates the `$post` variable on each iteration of the loop.
 * Note: updated value is only available for subsequently loaded views, such as partials
 */
add_action('the_post', function ($post) {
    sage('blade')->share('post', $post);
});

/**
 * Setup Sage options
 */
add_action('after_setup_theme', function () {
    /**
     * Add JsonManifest to Sage container
     */
    sage()->singleton('sage.assets', function () {
        return new JsonManifest(config('assets.manifest'), config('assets.uri'));
    });

    /**
     * Add Blade to Sage container
     */
    sage()->singleton('sage.blade', function (Container $app) {
        $cachePath = config('view.compiled');
        if (!file_exists($cachePath)) {
            wp_mkdir_p($cachePath);
        }
        (new BladeProvider($app))->register();
        return new Blade($app['view']);
    });

    /**
     * Create @asset() Blade directive
     */
    sage('blade')->compiler()->directive('asset', function ($asset) {
        return "<?= " . __NAMESPACE__ . "\\asset_path({$asset}); ?>";
    });
});