services:
  builderius_module.registration.builderius_module_rendering_conditions_asset_localization:
    class: Builderius\Bundle\ModuleBundle\Registration\BuilderiusModuleRenderingConditionsScriptLocalization
    arguments:
      - '@builderius_module.provider.rendering_conditions'
    calls:
      - [ addCondition, ['@has_applied_builderius_template']]
    tags:
      - { name: wp_script_localization, handle: builderius-builder }

  builderius_module.registration.builderius_modules_asset_localization:
    class: Builderius\Bundle\ModuleBundle\Registration\BuilderiusModulesScriptLocalization
    arguments:
      - '@builderius_module.provider.composite'
      - '@builderius_module.provider.composite_modules'
      - '@builderius_category.provider.categories.composite'
      - '@builderius_template.provider.template'
      - '@builderius_template.version_converter.composite'
    calls:
      - [ addCondition, ['@has_applied_builderius_template']]
    tags:
      - { name: wp_script_localization, handle: builderius-builder }

  builderius_module.provider.regular_modules:
    class: Builderius\Bundle\ModuleBundle\Provider\BuilderiusRegularModulesProvider
    lazy: true
    public: true
    arguments:
      - '@builderius_module.checker.module'
      - '@builderius_setting.registry.settings'
      - '@builderius.cache.runtime'
      - '@builderius_builder.condition.is_builder_mode'
    tags:
      - { name: builderius_modules_provider }

  builderius_module.provider.composite_modules.regular:
    class: Builderius\Bundle\ModuleBundle\Provider\BuilderiusCompositeRegularModulesProvider
    lazy: true
    public: true
    arguments:
      - '@builderius.cache.runtime'
    tags:
      - { name: builderius_composite_modules_provider }

  builderius_module.provider.composite_modules.saved:
    class: Builderius\Bundle\ModuleBundle\Provider\BuilderiusCompositeSavedModulesProvider
    lazy: true
    public: true
    arguments:
      - '@swoop_query.wp_query'
      - '@builderius.cache.runtime'
    tags:
      - { name: builderius_composite_modules_provider }

  builderius_module.provider.composite_modules:
    class: Builderius\Bundle\ModuleBundle\Provider\CompositeBuilderiusCompositeModulesProvider
    arguments:
      - '@builderius.cache.runtime'
    lazy: true

  builderius_module.provider.composite:
    class: Builderius\Bundle\ModuleBundle\Provider\CompositeBuilderiusModulesProvider
    arguments:
      - '@builderius.cache.runtime'
    lazy: true

  builderius_module.twig.module_extension:
    class: Builderius\Bundle\ModuleBundle\Twig\ModuleExtension
    tags:
      - { name: twig.extension }

  builderius_module.checker.module.chain_element.base:
    class: Builderius\Bundle\ModuleBundle\Checker\Chain\Element\BaseBuilderiusModuleCheckerChainElement
    public: false

  builderius_module.checker.module:
    parent: builderius_module.checker.module.chain_element.base

  builderius_module.helper.mustache_template_rendering:
    class: Builderius\Bundle\ModuleBundle\Helper\MustacheTemplateRenderingHelper
    arguments:
      - '@builderius_el.expression_language'

  builderius_module.event_listener.data_content_modules.final_html_rendering:
    class: Builderius\Bundle\ModuleBundle\EventListener\DataContentModulesFinalHtmlRenderingEventListener
    arguments:
      - '@builderius_module.helper.mustache_template_rendering'
      - '@builderius_el.expression_language'
    tags:
      - { name: swoop_event_listener, event: builderius_html_rendered, method: onBuilderiusHtmlRendered, priority: 10 }

  builderius_module.registration.builderius_saved_composite_module_post_type:
    class: Builderius\Bundle\ModuleBundle\Registration\BuilderiusSavedCompositeModulePostType
    tags:
      - { name: wp_post_type }

  builderius_module.expression_function_provider.visibility_conditions:
    class: Builderius\Bundle\ModuleBundle\ExpressionLanguage\Provider\VisibilityConditionsFunctionsProvider
    arguments:
      - '@builderius_el.expression_language'
      - '@builderius_module.provider.rendering_conditions'
      - '@event_dispatcher'
    tags:
      - { name: builderius_expression_function_provider }
