<?php

namespace App\Lib\Editor;

abstract class ConditionResolver
{

    /**
     * @param array<string, mixed> $ifs
     */
    abstract public function filterCondition(string $mode, array $ifs): bool;

    /**
     * @param array<string, mixed> $content
     * @return array<string, mixed>
     */
    public function makeBlocks(array $content): array
    {
        return array_filter(data_get($content, 'blocks', []), fn ($block) => $this->filterBlock($block));
    }

    /**
     * @param array<string, mixed> $block
     */
    public function filterBlock(array $block): bool
    {
        $mode = data_get($block, 'tunes.condition.mode', 'any');
        $ifs = data_get($block, 'tunes.condition.ifs', []);

        return $this->filterCondition($mode, $ifs);
    }
}