services:
    Knp\Menu\Twig\Helper:
        alias: knp_menu.helper

    oro_menu_acl_extension:
        class: Oro\Bundle\NavigationBundle\Menu\AclAwareMenuFactoryExtension
        arguments:
            - '@router.default'
            - '@oro_ui.controller_class_provider'
            - '@security.authorization_checker'
            - '@oro_security.class_authorization_checker'
            - '@oro_security.token_accessor'
            - '@logger'
        tags:
            - { name: oro_navigation.menu_extension, priority: 100 }

    oro_navigation.menu_extension.routing:
        class: Oro\Bundle\NavigationBundle\Menu\RoutingAwareMenuFactoryExtension
        arguments:
            - '@router.default'
        tags:
            - { name: oro_navigation.menu_extension, priority: 110 }

    oro_menu.factory:
        class: Knp\Menu\MenuFactory

    oro_menu.array_loader:
        class: Knp\Menu\Loader\ArrayLoader
        public: false
        arguments:
            - "@oro_menu.factory"

    oro_menu.builder_chain:
        class: Oro\Bundle\NavigationBundle\Provider\BuilderChainProvider
        public: true
        arguments:
            - !abstract '$builders defined in Oro\Bundle\NavigationBundle\DependencyInjection\Compiler\MenuBuilderPass'
            - !abstract '$builderContainer defined in Oro\Bundle\NavigationBundle\DependencyInjection\Compiler\MenuBuilderPass'
            - '@oro_menu.factory'
            - '@oro_menu.array_loader'
            - '@oro_menu.manipulator'
        tags:
            - { name: knp_menu.provider }

    Oro\Bundle\NavigationBundle\Provider\BuilderChainProvider:
        alias: oro_menu.builder_chain

    oro_menu.configuration_resolver:
        class: Oro\Component\Config\Resolver\SystemAwareResolver
        arguments:
            - '@service_container'

    oro_menu.configuration_builder:
        class: Oro\Bundle\NavigationBundle\Menu\ConfigurationBuilder
        arguments:
            - '@oro_menu.configuration_resolver'
            - '@oro_menu.factory'
            - '@event_dispatcher'
            - '@oro_navigation.configuration.provider'
        tags:
            - { name: oro_menu.builder }

    Oro\Bundle\NavigationBundle\JsTree\MenuUpdateTreeHandler:
        alias: oro_navigation.tree.menu_update_tree_handler

    oro_navigation.tree.menu_update_tree_handler:
        class: Oro\Bundle\NavigationBundle\JsTree\MenuUpdateTreeHandler
        public: true
        arguments:
            - '@translator'

    oro_menu.twig.extension:
        class: Oro\Bundle\NavigationBundle\Twig\MenuExtension
        arguments:
            - '@oro_platform.twig.service_locator'
        tags:
            - { name: twig.extension }

    oro_navigation.item.builder.pinbar:
        class: Oro\Bundle\NavigationBundle\Entity\Builder\PinbarTabBuilder
        arguments:
            - '@doctrine.orm.entity_manager'
            - '@oro_navigation.utils.pinbar_tab_url_normalizer'
            - '@oro_navigation.provider.pinbar_tab_title'
        calls:
            - [ setClassName, [ 'Oro\Bundle\NavigationBundle\Entity\PinbarTab' ]]
            - [ setNavigationItemClassName, [ 'Oro\Bundle\NavigationBundle\Entity\NavigationItem' ]]
        tags:
            - { name: oro_navigation.item.builder, alias: pinbar }

    oro_navigation.item.builder.favorite:
        class: Oro\Bundle\NavigationBundle\Entity\Builder\NavigationItemBuilder
        arguments:
            - '@doctrine.orm.entity_manager'
        calls:
            - [ setClassName, [ 'Oro\Bundle\NavigationBundle\Entity\NavigationItem' ]]
        tags:
            - { name: oro_navigation.item.builder, alias: favorite }

    oro_navigation.item.builder.history:
        class: Oro\Bundle\NavigationBundle\Entity\Builder\HistoryItemBuilder
        arguments:
            - '@doctrine.orm.entity_manager'
        calls:
            - [ setClassName, [ 'Oro\Bundle\NavigationBundle\Entity\NavigationHistoryItem' ]]
        tags:
            - { name: oro_navigation.item.builder, alias: history }

    oro_navigation.item.builder.mostviewed:
        class: Oro\Bundle\NavigationBundle\Entity\Builder\HistoryItemBuilder
        arguments:
            - '@doctrine.orm.entity_manager'
        calls:
            - [ setClassName, [ 'Oro\Bundle\NavigationBundle\Entity\NavigationHistoryItem' ]]
        tags:
            - { name: oro_navigation.item.builder, alias: mostviewed }

    oro_navigation.item.factory:
        class: Oro\Bundle\NavigationBundle\Entity\Builder\ItemFactory
        public: true
        arguments:
            - !abstract '$builders defined in Oro\Bundle\NavigationBundle\DependencyInjection\Compiler\MenuBuilderPass'

    oro_navigation.item.pinbar.post_persist_listener:
        class: Oro\Bundle\NavigationBundle\Entity\Listener\PinbarPostPersist
        tags:
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\NavigationBundle\Entity\AbstractPinbarTab', event: postPersist }

    oro_navigation.entity_listener.prepare_url:
        class: 'Oro\Bundle\NavigationBundle\Entity\Listener\PrepareUrlListener'
        tags:
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\NavigationBundle\Entity\AbstractNavigationItem', event: prePersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\NavigationBundle\Entity\AbstractNavigationItem', event: preUpdate }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\NavigationBundle\Entity\AbstractNavigationHistoryItem', event: prePersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\NavigationBundle\Entity\AbstractNavigationHistoryItem', event: preUpdate }

    oro_navigation.pinbar_menu.builder:
        class: Oro\Bundle\NavigationBundle\Menu\NavigationItemBuilder
        arguments:
            - '@oro_security.token_accessor'
            - '@oro_navigation.provider.navigation_items'
        tags:
            - { name: oro_menu.builder, alias: pinbar }

    oro_navigation.favorites_menu.builder:
        class: Oro\Bundle\NavigationBundle\Menu\NavigationItemBuilder
        arguments:
            - '@oro_security.token_accessor'
            - '@oro_navigation.provider.navigation_items'
        tags:
            - { name: oro_menu.builder, alias: favorite }

    oro_navigation.history_menu.builder:
        class: Oro\Bundle\NavigationBundle\Menu\NavigationHistoryBuilder
        arguments:
            - '@oro_security.token_accessor'
            - '@oro_navigation.provider.navigation_items'
            - '@knp_menu.matcher'
            - '@oro_menu.manipulator'
            - '@oro_config.user'
        tags:
            - { name: oro_menu.builder, alias: history }

    oro_navigation.mostviewed_menu.builder:
        class: Oro\Bundle\NavigationBundle\Menu\NavigationMostviewedBuilder
        arguments:
            - '@oro_security.token_accessor'
            - '@oro_navigation.provider.navigation_items'
            - '@oro_config.user'
        tags:
            - { name: oro_menu.builder, alias: mostviewed }

    knp_voter_request:
        class: Oro\Bundle\NavigationBundle\Menu\Matcher\Voter\RequestVoter
        arguments:
            - '@request_stack'
        tags:
            - { name: knp_menu.voter }

    knp_menu.voter.router:
        class: Oro\Bundle\NavigationBundle\Menu\Matcher\Voter\RoutePatternVoter
        arguments:
            - '@request_stack'
        tags:
            - { name: knp_menu.voter }

    oro_navigation.navigation_history_logger:
        class: Oro\Bundle\NavigationBundle\Utils\NavigationHistoryLogger
        public: true
        arguments:
            - '@doctrine'
            - 'Oro\Bundle\NavigationBundle\Entity\NavigationHistoryItem'
            - '@oro_security.token_accessor'
            - '@oro_navigation.title_service'

    oro_navigation.event_listener.navigation_history:
        class: Oro\Bundle\NavigationBundle\Event\ResponseHistoryListener
        arguments:
            - '@oro_security.token_accessor'
            - 'Oro\Bundle\UserBundle\Entity\User'
            - '@Psr\Container\ContainerInterface'
        calls:
            - [ addExcludedRoute, ['oro_default']]
            - [ addExcludedRoute, ['nelmio_api_doc_index']]
            - [ addExcludedRoute, ['oro_rest_api_doc_resource']]
        tags:
            - { name: kernel.event_listener, event: kernel.response, method: onResponse }
            - { name: container.service_subscriber, id: oro_navigation.navigation_history_logger }

    oro_navigation.event.master_request_route_listener:
        class: Oro\Bundle\NavigationBundle\Event\AddMasterRequestRouteListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

    oro_navigation.event.js_routing_dump_listener:
        class: Oro\Bundle\NavigationBundle\Event\JsRoutingDumpListener
        arguments:
            - '@oro_ui.dynamic_asset_version_manager'
        tags:
            - { name: kernel.event_listener, event: console.command, method: onConsoleCommand }

    oro_navigation.listener.js_routing_route_collection_listener:
        class: Oro\Bundle\NavigationBundle\EventListener\JsRoutingRouteCollectionListener
        arguments:
            - 'oro_navigation_js_routing_js'
            - '%kernel.debug%'
        tags:
            - { name: kernel.event_listener, event: oro_distribution.route_collection.autoload, method: onCollectionAutoload }

    oro_navigation.file_manager.public_js:
        parent: oro_gaufrette.file_manager
        arguments:
            - 'public_js'
            - 'js'
        tags:
            - { name: oro_gaufrette.public_filesystem_manager }

    oro_navigation.title_service:
        class: Oro\Bundle\NavigationBundle\Provider\TitleService
        arguments:
          - '@oro_navigation.title_reader.registry'
          - '@oro_navigation.title_translator'
          - '@oro_config.user'
          - '@oro_navigation.chain_breadcrumb_manager'

    oro_navigation.title_translator:
        class: Oro\Bundle\NavigationBundle\Provider\TitleTranslator
        public: false
        arguments:
          - '@translator.default'
          - '@oro_config.user'

    oro_navigation.title_reader.registry:
        class: Oro\Bundle\NavigationBundle\Title\TitleReader\TitleReaderRegistry
        public: false
        arguments:
          - !tagged_iterator oro_navigation.title_reader

    oro_navigation.title_annotations_reader:
        class: Oro\Bundle\NavigationBundle\Title\TitleReader\AnnotationsReader
        public: false
        parent: oro.static_config_provider.abstract
        arguments:
            - '%kernel.cache_dir%/oro/title_annotations.php'
            - '%kernel.debug%'
            - '@oro_ui.controller_class_provider'
            - '@annotation_reader'
        tags:
            - { name: oro_navigation.title_reader, priority: 10}

    oro_navigation.title_config_reader:
        class: Oro\Bundle\NavigationBundle\Title\TitleReader\ConfigReader
        public: false
        arguments:
            - '@oro_navigation.configuration.provider'
        tags:
            - { name: oro_navigation.title_reader}

    oro_navigation.title_service.twig.extension:
        class: Oro\Bundle\NavigationBundle\Twig\TitleExtension
        public: false
        arguments:
            - '@oro_platform.twig.service_locator'
        tags:
            - { name: twig.extension }

    oro_navigation.translation.extractor:
        class: Oro\Bundle\NavigationBundle\Title\TranslationExtractor
        arguments:
            - '@oro_navigation.title_reader.registry'
            - '@oro_ui.controller_class_provider'
        tags:
            - { name: translation.extractor, alias: navigation_translation_extractor }

    oro_navigation.form.pagestate:
        class: Symfony\Component\Form\Form
        public: true
        factory: ['@form.factory', createNamed]
        arguments: ["pagestate", Oro\Bundle\NavigationBundle\Form\Type\PageStateType, null]

    oro_navigation.form.type.pagestate:
        class: Oro\Bundle\NavigationBundle\Form\Type\PageStateType
        tags:
            - { name: form.type, alias: pagestate }

    oro_navigation.route_collection.cache:
        public: false
        parent: oro.data.cache
        tags:
            - { name: 'cache.pool', namespace: 'oro_navigation_route_collection' }

    oro_navigation.form.type.route_select:
        class: Oro\Bundle\NavigationBundle\Form\Type\RouteChoiceType
        arguments:
            - '@router.default'
            - '@oro_navigation.title_reader.registry'
            - '@oro_navigation.title_translator'
            - '@oro_navigation.title_service'
            - '@oro_navigation.route_collection.cache'
        tags:
            - { name: form.type, alias: oro_route_choice }

    oro_navigation.form.handler.pagestate:
        class: Oro\Bundle\NavigationBundle\Form\Handler\PageStateHandler
        public: true
        arguments:
            - "@oro_navigation.form.pagestate"
            - "@request_stack"
            - "@doctrine.orm.entity_manager"
            - "@security.token_storage"

    oro_navigation.event_listener.hash_navigation:
        class: Oro\Bundle\NavigationBundle\Event\ResponseHashnavListener
        arguments:
            - '@security.token_storage'
            - '%kernel.debug%'
            - '@Psr\Container\ContainerInterface'
        tags:
            - { name: kernel.event_listener, event: kernel.response, method: onResponse }
            - { name: container.service_subscriber }

    oro_navigation.twig.hash_nav_extension:
        class: Oro\Bundle\NavigationBundle\Twig\HashNavExtension
        tags:
            - { name: twig.extension }
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

    oro_navigation.breadcrumb_manager.default:
        class: Oro\Bundle\NavigationBundle\Menu\BreadcrumbManager
        arguments:
            - '@oro_menu.builder_chain'
            - '@knp_menu.matcher'
        tags:
            - { name: oro_breadcrumbs.provider, priority: -255 }

    oro_navigation.chain_breadcrumb_manager:
        class: Oro\Bundle\NavigationBundle\Menu\ChainBreadcrumbManager
        arguments:
            - !tagged_iterator oro_breadcrumbs.provider

    Oro\Bundle\NavigationBundle\Menu\BreadcrumbManagerInterface:
        alias: oro_navigation.chain_breadcrumb_manager

    oro_navigation.menu.menu_update_builder:
        class: Oro\Bundle\NavigationBundle\Menu\MenuUpdateBuilder
        arguments:
            - '@oro_navigation.provider.menu_update_provider'
            - '@oro_navigation.menu_update.applier'
            - '@event_dispatcher'
        tags:
            - { name: oro_menu.builder, priority: 100 }

    oro_navigation.menu_update.applier:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Applier\MenuUpdateApplier
        arguments:
            - '@oro_navigation.menu_update.propagator.to_menu_item'

    oro_navigation.menu_update.propagator.to_menu_item:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuItem\CompositePropagator
        arguments:
            - !tagged_iterator { tag: oro_navigation.menu_update.propagator.to_menu_item }

    oro_navigation.menu_update.propagator.to_menu_item.basic:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuItem\BasicPropagator
        arguments:
            - '@oro_locale.helper.default_locale_localization'
        tags:
            - { name: oro_navigation.menu_update.propagator.to_menu_item }

    oro_navigation.menu_update.propagator.to_menu_item.extras:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuItem\ExtrasPropagator
        arguments:
            - '@oro_locale.helper.default_locale_localization'
        tags:
            - { name: oro_navigation.menu_update.propagator.to_menu_item }

    oro_navigation.manager.menu_update:
        class: Oro\Bundle\NavigationBundle\Manager\MenuUpdateManager
        arguments:
            - '@doctrine'
            - '@oro_navigation.menu_update.factory'
            - '@oro_navigation.menu_update.propagator.to_menu_update'
            - 'Oro\Bundle\NavigationBundle\Entity\MenuUpdate'
            - 'menu_default_visibility'

    oro_navigation.manager.menu_update.move:
        class: Oro\Bundle\NavigationBundle\Manager\MenuUpdateMoveManager
        arguments:
            - '@doctrine'
            - '@oro_navigation.manager.menu_update'
            - '@oro_navigation.menu_update.propagator.to_menu_update'
            - 'Oro\Bundle\NavigationBundle\Entity\MenuUpdate'

    oro_navigation.manager.menu_update.display:
        class: Oro\Bundle\NavigationBundle\Manager\MenuUpdateDisplayManager
        arguments:
            - '@doctrine'
            - '@oro_navigation.manager.menu_update'
            - 'Oro\Bundle\NavigationBundle\Entity\MenuUpdate'

    oro_navigation.menu_update.factory:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Factory\MenuUpdateFactory
        arguments:
            - '@property_accessor'
            - 'Oro\Bundle\NavigationBundle\Entity\MenuUpdate'

    oro_navigation.menu_update.propagator.to_menu_update:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuUpdate\CompositePropagator
        arguments:
            - !tagged_iterator { tag: oro_navigation.menu_update.propagator.to_menu_update }

    oro_navigation.menu_update.propagator.to_menu_update.basic:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuUpdate\BasicPropagator
        tags:
            - { name: oro_navigation.menu_update.propagator.to_menu_update }

    oro_navigation.menu_update.propagator.to_menu_update.extras:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuUpdate\ExtrasPropagator
        arguments:
            - '@property_accessor'
        calls:
            - [setExcludeKeys, [['titles', 'description']]]
        tags:
            - { name: oro_navigation.menu_update.propagator.to_menu_update }

    oro_navigation.menu_update.propagator.to_menu_update.description:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuUpdate\DescriptionPropagator
        arguments:
            - '@oro_navigation.menu_helper.menu_update'
        tags:
            - { name: oro_navigation.menu_update.propagator.to_menu_update }

    oro_navigation.menu_update.propagator.to_menu_update.title:
        class: Oro\Bundle\NavigationBundle\MenuUpdate\Propagator\ToMenuUpdate\TitlePropagator
        arguments:
            - '@property_accessor'
            - '@oro_navigation.menu_helper.menu_update'
        tags:
            - { name: oro_navigation.menu_update.propagator.to_menu_update }

    oro_navigation.menu_manipulator:
        class: Knp\Menu\Util\MenuManipulator

    oro_menu.manipulator:
        alias: oro_navigation.menu_manipulator

    oro_navigation.extension.datasource.menu:
        class: Oro\Bundle\NavigationBundle\Datagrid\MenuUpdateDatasource
        arguments:
            - '@oro_menu.builder_chain'
            - '@oro_navigation.menu_manipulator'
            - 'menu_default_visibility'
            - '@oro_navigation.configuration.provider'
        tags:
            - { name: oro_datagrid.datasource, type: menu-update }

    oro_navigation.widget_provider.actions.edit_menus:
        parent: oro_ui.widget_provider.action_button.abstract
        arguments:
            - oro_edit_menus_button
            - oro_edit_menus_link
        tags:
            - { name: oro_ui.view_action_provider, group: activity }
            - { name: oro_ui.update_action_provider, group: activity }

    oro_navigation.event_listener.navigation:
        class: Oro\Bundle\NavigationBundle\EventListener\NavigationListener
        arguments:
            - '@security.authorization_checker'
            - '@oro_security.token_accessor'
        tags:
            - { name: kernel.event_listener, event: oro_menu.configure.application_menu, method: onNavigationConfigure }

    oro_navigation.event_listener.navigation_items:
        class: Oro\Bundle\NavigationBundle\EventListener\NavigationItemsListener
        arguments:
            - '@oro_featuretoggle.checker.feature_checker'
        tags:
            - { name: kernel.event_listener, event: oro_menu.configure.shortcuts, method: onNavigationConfigure }
            - { name: kernel.event_listener, event: oro_menu.configure.application_menu, method: onNavigationConfigure, priority: -200 }

    oro_navigation.config_extension.feature:
        class: Oro\Bundle\NavigationBundle\Configuration\FeatureConfigurationExtension
        tags:
            - { name: oro_feature.config_extension }


    oro_navigation.validator.max_nested_level:
        class: Oro\Bundle\NavigationBundle\Validator\Constraints\MaxNestedLevelValidator
        arguments:
            - '@oro_menu.builder_chain'
            - '@oro_navigation.menu_update.applier'
        tags:
            - { name: validator.constraint_validator }

    oro_navigation.validator.unique_pinbar_tab_url:
        class: Oro\Bundle\NavigationBundle\Validator\Constraints\UniquePinbarTabUrlValidator
        public: false
        arguments:
            - '@oro_entity.doctrine_helper'
            - '@oro_navigation.utils.pinbar_tab_url_normalizer'
        tags:
            - { name: validator.constraint_validator}

    oro_navigation.menu_helper.menu_update:
        class: Oro\Bundle\NavigationBundle\Menu\Helper\MenuUpdateHelper
        arguments:
            - '@translator'
            - '@oro_locale.helper.localization'

    oro_navigation.event_listener.menu_update_cache_flusher:
        class: Oro\Bundle\NavigationBundle\EventListener\MenuUpdateCacheFlusher
        arguments:
            - '@oro_navigation.repository.menu_update'
            - '@oro_navigation.menu_update.cache'
            - '@oro_scope.scope_manager'
            - 'menu_default_visibility'
        tags:
            - { name: kernel.event_listener, event: oro_menu.menu_update_change, method: onMenuUpdateScopeChange }
            - { name: kernel.event_listener, event: oro_menu.menu_update_with_scope_change, method: onMenuUpdateWithScopeChange }

    oro_navigation.repository.menu_update:
        alias: Oro\Bundle\NavigationBundle\Entity\Repository\MenuUpdateRepository

    Oro\Bundle\NavigationBundle\Entity\Repository\MenuUpdateRepository:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\NavigationBundle\Entity\MenuUpdate'
        calls:
            - [ setQueryResultCache, [ '@oro_navigation.menu_update.cache' ] ]
        tags:
            - { name: doctrine.repository_service }

    oro_navigation.menu_update.cache:
        parent: oro.data.cache
        tags:
            - { name: 'cache.pool', namespace: 'oro_navigation_menu_updates' }

    oro_navigation.data_provider.title:
        class: Oro\Bundle\NavigationBundle\Layout\DataProvider\NavigationTitleProvider
        arguments:
          - '@oro_navigation.title_service'
          - '@oro_config.user'
        tags:
            - { name: layout.data_provider, alias: title_provider }

    oro_navigation.data_provider.breadcrumb:
        class: Oro\Bundle\NavigationBundle\Layout\DataProvider\BreadcrumbProvider
        arguments:
          - '@oro_navigation.chain_breadcrumb_manager'
        tags:
            - { name: layout.data_provider, alias: breadcrumb_provider }

    oro_navigation.scope_criteria_provider.user:
        parent: oro_user.scope_criteria_provider.user
        tags:
            - { name: oro_scope.provider, scopeType: menu_default_visibility, priority: 20 }

    oro_navigation.configuration.provider:
        class: Oro\Bundle\NavigationBundle\Configuration\ConfigurationProvider
        public: true
        parent: oro.static_config_provider.abstract
        arguments:
            - '%kernel.cache_dir%/oro/navigation.php'
            - '%kernel.debug%'

    Oro\Bundle\NavigationBundle\Configuration\ConfigurationProvider:
        alias: oro_navigation.configuration.provider

    oro_navigation.event_listener.scope_grid_listener:
        class: Oro\Bundle\NavigationBundle\EventListener\MenuGridListener
        tags:
            - { name: kernel.event_listener, event: oro_datagrid.datagrid.build.pre.menu-by-scope-grid, method: onPreBuild }

    oro_navigation.provider.menu_update_provider:
        class: Oro\Bundle\NavigationBundle\Provider\MenuUpdateProvider
        arguments:
            - '@oro_scope.scope_manager'
            - '@oro_navigation.manager.menu_update'

    oro_navigation.utils.pinbar_tab_url_normalizer:
        class: Oro\Bundle\NavigationBundle\Utils\PinbarTabUrlNormalizer
        public: true

    oro_navigation.provider.pinbar_tab_title:
        class: Oro\Bundle\NavigationBundle\Provider\PinbarTabTitleProvider
        arguments:
            - '@oro_entity.doctrine_helper'
            - '@oro_navigation.title_service'

    oro_navigation.provider.navigation_items:
        class: Oro\Bundle\NavigationBundle\Provider\NavigationItemsProvider
        public: true
        arguments:
            - '@oro_entity.doctrine_helper'
            - '@oro_navigation.item.factory'
            - '@router'
        tags:
            - { name: oro_featuretogle.feature, feature: email }

    oro_navigation.menu.hide_empty_items_builder:
        class: Oro\Bundle\NavigationBundle\Menu\HideEmptyItemsBuilder
        tags:
            - { name: oro_menu.builder, priority: 270 }

    oro_navigation.menu.divider_builder:
        class: Oro\Bundle\NavigationBundle\Menu\DividerBuilder
        tags:
            - { name: oro_menu.builder, priority: 270 }

    oro_navigation.provider.menu_names:
        class: Oro\Bundle\NavigationBundle\Provider\MenuNamesProvider
        arguments:
            - '@oro_navigation.configuration.provider'

    oro_navigation.provider.route_title:
        class: Oro\Bundle\NavigationBundle\Provider\RouteTitleProvider
        arguments:
            - '@oro_navigation.title_reader.registry'
            - '@oro_navigation.title_translator'
            - '@oro_navigation.title_service'

