services:
  builderius_module.provider.rendering_conditions:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingConditionsProvider
    public: true
    lazy: true

  builderius_module.rendering_condition.post_id:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_id
        label: Post ID
        category: post
        sortOrder: 10
        operators: ['equal', 'not_equal']
        widgetType: select
        placeholder: 'Please select Post ID'
        valueListProvider: '@builderius_template.location.arguments_provider.available_singulars.id'
        graphqlPath:
          "'query.post.ID'": true
        expression: '"wp.post.ID " ~ operator ~ " " ~ value'
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_parent:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_parent
        label: Post parent
        category: post
        sortOrder: 20
        operators: ['equal', 'not_equal', 'is_empty']
        widgetType: select
        placeholder: 'Please select Post ID'
        valueListProvider: '@builderius_template.location.arguments_provider.available_singulars.id'
        graphqlPath:
          "'query.post.parent.__aliasFor'": "'post_parent'"
        expression: '"wp.post.parent " ~ operator ~ " " ~ value'
    calls:
      - [setOperatorWidget, ['is_empty', {type: 'select', config: {valueList: [{value: 'true', title: 'Yes'}, {value: 'false', title: 'No'}]}}]]
      - [addOperatorExpression, ["'(wp.post.parent == 0 ? \"true\" : \"false\") == \"' ~ value ~ '\"'", ['is_empty']]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_status:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_status
        label: Post status
        category: post
        sortOrder: 30
        operators: ['equal', 'not_equal']
        widgetType: select
        placeholder: 'Please select Post Status'
        valueListProvider: '@builderius_template.location.arguments_provider.available_post_statuses'
        allowFreeInput: true
        graphqlPath:
          "'query.post.status.__aliasFor'": "'post_status'"
        expression: "'wp.post.status ' ~ operator ~ ' \"' ~ value ~ '\"'"
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_content:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_content
        label: Post content
        category: post
        sortOrder: 40
        operators: ['is_empty']
        widgetType: text
        graphqlPath:
          "'query.post.content.__aliasFor'": "'post_content'"
        expression: "'is_empty(wp.post.content) == ' ~ value"
    calls:
      - [setOperatorWidget, ['is_empty', {type: 'select', config: {valueList: [{value: 'true', title: 'Yes'}, {value: 'false', title: 'No'}]}}]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_excerpt:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_excerpt
        label: Post excerpt
        category: post
        sortOrder: 50
        operators: ['is_empty']
        widgetType: text
        graphqlPath:
          "'query.post.excerpt.__aliasFor'": "'post_excerpt'"
        expression: "'is_empty(wp.post.excerpt) == ' ~ value"
    calls:
      - [setOperatorWidget, ['is_empty', {type: 'select', config: {valueList: [{value: 'true', title: 'Yes'}, {value: 'false', title: 'No'}]}}]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_category:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_category
        label: Post category
        category: post
        sortOrder: 60
        operators: ['in', 'not_in']
        widgetType: select
        placeholder: 'Please select category'
        valueListProvider: '@builderius_template.location.arguments_provider.available_categories'
        graphqlPath:
          "'query.post.categories.term_id'": true
        expression: ""
    calls:
      - [setOperatorWidget, ['in', {type: 'multi_select', config: {placeholder: 'Select multiple categories'}}]]
      - [setOperatorWidget, ['not_in', {type: 'multi_select', config: {placeholder: 'Select multiple categories'}}]]
      - [setOperatorWidgetValueListProvider, ['in', '@builderius_template.location.arguments_provider.available_categories']]
      - [setOperatorWidgetValueListProvider, ['not_in', '@builderius_template.location.arguments_provider.available_categories']]
      - [addOperatorExpression, ["'count(array_intersect(split(\"' ~ value ~ '\", \",\"), pluck(wp.post.categories, \"term_id\"))) > 0'", ['in']]]
      - [addOperatorExpression, ["'count(array_intersect(split(\"' ~ value ~ '\", \",\"), pluck(wp.post.categories, \"term_id\"))) == 0'", ['not_in']]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_tag:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_tag
        label: Post tag
        category: post
        sortOrder: 70
        operators: ['in', 'not_in']
        widgetType: select
        placeholder: 'Please select tag'
        valueListProvider: '@builderius_template.location.arguments_provider.available_tags'
        graphqlPath:
          "'query.post.tags.term_id'": true
        expression: ""
    calls:
      - [setOperatorWidget, ['in', {type: 'multi_select', config: {placeholder: 'Select multiple tags'}}]]
      - [setOperatorWidget, ['not_in', {type: 'multi_select', config: {placeholder: 'Select multiple tags'}}]]
      - [setOperatorWidgetValueListProvider, ['in', '@builderius_template.location.arguments_provider.available_tags']]
      - [setOperatorWidgetValueListProvider, ['not_in', '@builderius_template.location.arguments_provider.available_tags']]
      - [addOperatorExpression, ["'count(array_intersect(split(\"' ~ value ~ '\", \",\"), pluck(wp.post.tags, \"term_id\"))) > 0'", ['in']]]
      - [addOperatorExpression, ["'count(array_intersect(split(\"' ~ value ~ '\", \",\"), pluck(wp.post.tags, \"term_id\"))) == 0'", ['not_in']]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.featured_image:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: featured_image
        label: Featured image
        category: post
        sortOrder: 80
        operators: ['is_empty']
        widgetType: select
        graphqlPath:
          "'query.post.has_featured_image'": true
        expression: ''
    calls:
      - [setOperatorWidget, ['is_empty', {type: 'select', config: {valueList: [{value: 'true', title: 'Yes'}, {value: 'false', title: 'No'}]}}]]
      - [addOperatorExpression, ["'(!wp.post.has_featured_image ? \"true\" : \"false\") == \"' ~ value ~ '\"'", ['is_empty']]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.post_comments:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: post_comments
        label: Post comments
        category: post
        sortOrder: 90
        operators: ['allowed']
        widgetType: select
        valueList:
          - value: 'true'
            title: "Yes"
          - value: 'false'
            title: "No"
        graphqlPath:
          "'query.post.comments_allowed.__aliasFor'": "'comments_open'"
          "'query.post.comments.comment_ID'": true
        expression: '"(wp.post.comments_allowed ? \"true\" : \"false\") " ~ operator ~ " \"" ~ value ~ "\""'
    calls:
      - [addOperatorExpression, ['"(wp.post.comments_allowed ? \"true\" : \"false\") == \"" ~ value ~ "\""', ['allowed']]]
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.dynamic_data:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: dynamic_data
        label: Dynamic data
        category: advanced
        sortOrder: 10
        operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal', 'contains', 'does_not_contain', 'is_empty', 'is_not_empty', 'is_null', 'is_not_null', 'is_true', 'is_not_true', 'is_false', 'is_not_false']
        widgetType: double_dynamic_input
        expression: "'compare_dynamic_data(\"' ~ value.a1 ~ '\", \"' ~ value.b1 ~ '\", \"' ~ operator ~ '\")'"
    tags:
      - { name: builderius_module_rendering_condition }

  builderius_module.rendering_condition.expression:
    class: Builderius\Bundle\ModuleBundle\RenderingCondition\BuilderiusModuleRenderingCondition
    arguments:
      - name: expression
        label: Expression
        category: advanced
        sortOrder: 20
        operators: ['equal']
        widgetType: textarea
        expression: 'value'
    tags:
      - { name: builderius_module_rendering_condition }
