services:
  book.breadcrumb:
    class: Drupal\book\BookBreadcrumbBuilder
    arguments: ['@entity_type.manager', '@current_user', '@entity.repository', '@language_manager']
    tags:
      - { name: breadcrumb_builder, priority: 701 }
  book.manager:
    class: Drupal\book\BookManager
    arguments: ['@entity_type.manager', '@string_translation', '@config.factory', '@book.outline_storage', '@renderer', '@language_manager', '@entity.repository', '@book.backend_chained_cache', '@book.memory_cache']
    lazy: true
  Drupal\book\BookManagerInterface: '@book.manager'
  book.outline:
    class: Drupal\book\BookOutline
    arguments: ['@book.manager']
  Drupal\book\BookOutline: '@book.outline'
  book.export:
    class: Drupal\book\BookExport
    arguments: ['@entity_type.manager', '@book.manager', '@entity.repository']
  Drupal\book\BookExport: '@book.export'
  book.outline_storage:
    class: Drupal\book\BookOutlineStorage
    arguments: ['@database']
    tags:
      - { name: backend_overridable }
  Drupal\book\BookOutlineStorageInterface: '@book.outline_storage'
  access_check.book.removable:
    class: Drupal\book\Access\BookNodeIsRemovableAccessCheck
    arguments: ['@book.manager']
    tags:
      - { name: access_check, applies_to: _access_book_removable }
  cache_context.route.book_navigation:
    class: Drupal\book\Cache\BookNavigationCacheContext
    arguments: ['@current_route_match', '@book.manager']
    tags:
      - { name: cache.context}

  book.uninstall_validator:
    class: Drupal\book\BookUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
    arguments: ['@book.outline_storage', '@entity_type.manager', '@string_translation']
    lazy: true
  book.memory_cache:
    class: Drupal\Core\Cache\MemoryCache\MemoryCache
  book.backend_chained_cache:
    class: Drupal\Core\Cache\BackendChain
    calls:
      - [appendBackend, ['@book.memory_cache']]
      - [appendBackend, ['@cache.data']]
    tags:
      # This tag ensures that Drupal's cache_tags.invalidator service
      # invalidates also this cache data.
      - { name: cache.bin }
