You are here

public function SlickManager::attach in Slick Carousel 7.3

Same name and namespace in other branches
  1. 8.2 src/SlickManager.php \Drupal\slick\SlickManager::attach()
  2. 8 src/SlickManager.php \Drupal\slick\SlickManager::attach()

Returns array of needed assets suitable for #attached property.

Return value

array Returns the required library array.

Overrides BlazyManagerBase::attach

1 call to SlickManager::attach()
SlickManager::preRenderWrapper in src/SlickManager.php

File

src/SlickManager.php, line 98

Class

SlickManager
Implements SlickManagerInterface.

Namespace

Drupal\slick

Code

public function attach(array $attach) {
  $load = parent::attach($attach);

  // Load optional easing library.
  if ($this
    ->getEasingPath()) {
    $load['library'][] = [
      'slick',
      'easing',
    ];
  }

  // Load optional colorbox, or mousewheel.
  foreach ([
    'colorbox',
    'mousewheel',
  ] as $component) {
    if (!empty($attach[$component])) {
      $load['library'][] = [
        'slick',
        $component,
      ];
    }
  }

  // Load the main slick initializer.
  $load['library'][] = [
    'slick',
    'load',
  ];

  // Only attach a skin if so configured.
  if (!empty($attach['skin'])) {
    $this
      ->attachSkin($load, $attach);
  }

  // Attach default JS settings to allow responsive displays have a lookup,
  // excluding wasted/trouble options, e.g.: PHP string vs JS object.
  $excludes = explode(' ', 'mobileFirst appendArrows appendDots asNavFor prevArrow nextArrow respondTo');
  $excludes = array_combine($excludes, $excludes);
  $load['js'][] = [
    'data' => [
      'slick' => array_diff_key(Slick::defaultSettings(), $excludes),
    ],
    'type' => 'setting',
  ];
  drupal_alter('slick_attach', $load, $attach);
  return $load;
}