#ifndef DOC_CONSTRUCT_TAG_HPP_
#define DOC_CONSTRUCT_TAG_HPP_

#include <ItemStack/ItemStack.hpp>
#include <Widget/Layout/CompoundWidget/CompoundWidget.hpp>
#include <vector>

/**
 * @brief Implements various construction tags in DocView.
 */
class DocConstructTag final : public CompoundWidget
{
private:
    struct LevelSpec
    {
        Material &icon;
        std::string label;
    };

    ItemStack outputStack;
    std::vector<ItemStack> inputStacks;

    const LevelSpec& getLevelSpec(const std::string &tag);

public:
    DocConstructTag(const std::vector<std::string> &args);
};

#endif