You are here

function swagger_ui_formatter_library_info_build in Swagger UI Field Formatter 8.3

Same name and namespace in other branches
  1. 8.2 swagger_ui_formatter.module \swagger_ui_formatter_library_info_build()

Implements hook_library_info_build().

File

./swagger_ui_formatter.module, line 30

Code

function swagger_ui_formatter_library_info_build() : array {
  $libraries = [];

  /** @var \Drupal\swagger_ui_formatter\Service\SwaggerUiLibraryDiscoveryInterface $swagger_ui_library_discovery */
  $swagger_ui_library_discovery = \Drupal::service('swagger_ui_formatter.swagger_ui_library_discovery');
  try {
    $library_dir = $swagger_ui_library_discovery
      ->libraryDirectory();
    $library_version = $swagger_ui_library_discovery
      ->libraryVersion();
  } catch (SwaggerUiLibraryDiscoveryExceptionInterface $exception) {
    \Drupal::logger('swagger_ui_formatter')
      ->error('Unable to register Swagger UI library: ' . $exception
      ->getMessage());
    return $libraries;
  }

  // Add a leading slash to the library directory path to indicate in
  // $libraries[] that it's relative to DRUPAL_ROOT. Otherwise, it's considered
  // as a relative path from the current module.
  $library_dir = '/' . $library_dir;

  // Library definition for the required Swagger UI files.
  $libraries['swagger_ui_formatter.swagger_ui'] = [
    'version' => $library_version,
    'css' => [
      'theme' => [
        $library_dir . '/dist/swagger-ui.css' => [
          'minified' => TRUE,
        ],
      ],
    ],
    'js' => [
      $library_dir . '/dist/swagger-ui-bundle.js' => [
        'minified' => TRUE,
      ],
      $library_dir . '/dist/swagger-ui-standalone-preset.js' => [
        'minified' => TRUE,
      ],
    ],
  ];

  // Library definition for the Swagger UI integration files.
  $libraries['swagger_ui_formatter.swagger_ui_integration'] = [
    'version' => '1.0',
    'js' => [
      'js/swagger-ui-formatter.js' => [],
    ],
    'dependencies' => [
      'core/drupal',
      'core/jquery',
      'core/drupalSettings',
      'swagger_ui_formatter/swagger_ui_formatter.swagger_ui',
    ],
  ];
  return $libraries;
}