splide-1.0.x-dev/splide.module
splide.module
<?php
/**
* @file
* Splide slider integration, the vanilla JavaScript Slider.
*/
use Drupal\splide\SplideDefault;
/**
* Provides a convenient shortcut for procedural hooks.
*
* @param string $key
* Identifier of the service.
*
* @return \Drupal\splide\SplideManagerInterface
* |\Drupal\splide\SplideSkinManagerInterface
* The required Splide class instance.
*/
// @codingStandardsIgnoreStart
function splide($key = 'manager') {
static $manager;
static $skin_manager;
if (!isset($manager)) {
$manager = \Drupal::service('splide.manager');
$skin_manager = \Drupal::service('splide.skin_manager');
}
switch ($key) {
case 'skin':
return $skin_manager;
default:
return $manager;
}
}
// @codingStandardsIgnoreEnd
/**
* Implements hook_theme().
*/
function splide_theme() {
$themes = [];
foreach (['splide', 'slide', 'minimal', 'wrapper'] as $item) {
$key = $item == 'splide' ? $item : 'splide_' . $item;
$themes[$key] = [
'render element' => 'element',
'file' => 'templates/splide.theme.inc',
];
}
return $themes;
}
/**
* Implements hook_library_info_build().
*/
function splide_library_info_build() {
/* @phpstan-ignore-next-line */
return splide('skin')->libraryInfoBuild();
}
/**
* Implements hook_config_schema_info_alter().
*/
function splide_config_schema_info_alter(array &$definitions) {
splide()->configSchemaInfoAlter($definitions, 'splide_base', SplideDefault::extendedSettings());
}
/**
* Implements hook_library_info_alter().
*/
function splide_library_info_alter(&$libraries, $extension) {
if ($extension === 'splide') {
/* @phpstan-ignore-next-line */
splide('skin')->libraryInfoAlter($libraries, $extension);
}
}
/**
* Implements hook_page_attachments().
*/
function splide_page_attachments(array &$attachments) {
$sitewide = splide()->config('sitewide', 'splide.settings') ?: 0;
if ($sitewide > 0) {
if (!\Drupal::service('router.admin_context')->isAdminRoute()) {
$data = splide()->attach([
'_unload' => $sitewide == 2 || $sitewide == 3,
'_vanilla' => $sitewide == 2,
]);
$attachments['#attached'] = splide()->merge($data, $attachments, '#attached');
}
}
}
