You are here

public function SlickLibrary::library in Slick Carousel 7.3

Implements hook_library_info_build().

Overrides BlazyLibrary::library

File

src/SlickLibrary.php, line 45

Class

SlickLibrary
Provides Slick library methods mainly for hooks.

Namespace

Drupal\slick

Code

public function library() {
  if (!isset($this->libraries)) {
    $info = system_get_info('module', 'slick');
    $library = libraries_get_path('slick') ?: libraries_get_path('slick-carousel');
    $path = drupal_get_path('module', 'slick');
    $common = [
      'website' => 'https://drupal.org/project/slick',
      'version' => empty($info['version']) ? '7.x-3.x' : $info['version'],
    ];
    foreach ([
      'easing',
      'mousewheel',
    ] as $key) {
      $libraries[$key] = [
        'js' => [
          libraries_get_path($key) . '/jquery.' . $key . '.min.js' => [
            'group' => JS_LIBRARY,
          ],
        ],
      ];
    }
    $libraries['slick'] = [
      'title' => 'Slick',
      'website' => 'https://kenwheeler.github.io/slick/',
      'js' => [
        $library . '/slick/slick.min.js' => [
          'group' => JS_LIBRARY,
        ],
      ],
      'css' => [
        $library . '/slick/slick.css' => [
          'weight' => -6,
        ],
      ],
      'version' => '1.x',
    ];
    $libraries['css'] = [
      'dependencies' => [
        [
          'slick',
          'slick',
        ],
      ],
      'css' => [
        $library . '/slick/slick-theme.css' => [
          'weight' => -5,
        ],
      ],
    ];
    $libraries['load'] = [
      'dependencies' => [
        [
          'slick',
          'slick',
        ],
      ],
      'js' => [
        $path . '/js/slick.load.min.js' => [
          'group' => JS_DEFAULT,
          'weight' => -0.01,
        ],
      ],
    ];
    $libraries['theme'] = [
      'css' => [
        $path . '/css/layout/slick.module.css' => [
          'weight' => -4,
        ],
        $path . '/css/theme/slick.theme.css' => [
          'weight' => -3,
        ],
      ],
    ];
    foreach ([
      'arrows.down',
      'thumbnail.grid',
      'thumbnail.hover',
    ] as $item) {
      $libraries[$item] = [
        'dependencies' => [
          [
            'slick',
            'theme',
          ],
        ],
        'css' => [
          $path . '/css/components/slick.' . $item . '.css' => [],
        ],
      ];
    }
    $libraries['colorbox'] = [
      'dependencies' => [
        [
          'blazy',
          'colorbox',
        ],
      ],
      'js' => [
        $path . '/js/slick.colorbox.min.js' => [
          'group' => JS_DEFAULT,
          'weight' => -0.02,
        ],
      ],
    ];
    foreach (SlickManager::getConstantSkins() as $group) {
      if ($skins = $this->manager
        ->getSkinsByGroup($group)) {
        foreach ($skins as $key => $skin) {
          $provider = isset($skin['provider']) ? $skin['provider'] : 'slick';
          $id = $provider . '.' . $group . '.' . $key;
          foreach ([
            'css',
            'js',
            'dependencies',
          ] as $property) {
            if (isset($skin[$property]) && is_array($skin[$property])) {
              $libraries[$id][$property] = $skin[$property];
            }
          }
        }
      }
    }
    foreach ($libraries as &$library) {
      $library += $common;
      if (isset($library['js'])) {
        $library['dependencies'][] = [
          'system',
          'jquery.once',
        ];
      }
    }
    $this->libraries = $libraries;
  }
  return $this->libraries;
}