import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { FilterProvider, FilterBtn, FilterBar, FilterClear } from '@vertesia/ui/core';
import { useState } from 'react';
// Hook to create filter groups for interactions
export function useInteractionsFilterGroups(facets) {
    void facets;
    const customFilterGroups = [];
    // Add name filter as string type
    const nameFilterGroup = {
        name: 'name',
        placeholder: 'Name',
        type: 'text',
        multiple: false
    };
    customFilterGroups.push(nameFilterGroup);
    // Add prompt name filter as string type
    const promptNameFilterGroup = {
        name: 'prompt',
        placeholder: 'Prompt Name',
        type: 'text',
        multiple: false
    };
    customFilterGroups.push(promptNameFilterGroup);
    const ModelFilterGroup = {
        name: 'model',
        placeholder: 'Model',
        type: 'text',
        multiple: false
    };
    customFilterGroups.push(ModelFilterGroup);
    // Add tags filter as stringList type (allows custom input)
    const tagsFilterGroup = {
        name: 'tags',
        placeholder: 'Tags',
        type: 'stringList',
        multiple: true
    };
    customFilterGroups.push(tagsFilterGroup);
    return customFilterGroups;
}
// Hook to create filter change handler for interactions
export function useInteractionsFilterHandler(search) {
    return (newFilters) => {
        if (newFilters.length === 0) {
            search.clearFilters(true, true);
            return;
        }
        // Clear all filters first without defaults, then apply new ones
        search.clearFilters(false, false);
        newFilters.forEach(filter => {
            if (filter.value && filter.value.length > 0) {
                const filterName = filter.name;
                let filterValue;
                if (filter.type === 'stringList') {
                    filterValue = filter.value.map(v => typeof v === 'string' ? v : v.value);
                }
                else if (filter.multiple) {
                    filterValue = Array.isArray(filter.value)
                        ? filter.value.map((v) => typeof v === 'object' && v.value ? v.value : v)
                        : [typeof filter.value === 'object' && filter.value.value ? filter.value.value : filter.value];
                }
                else {
                    // Single value - don't wrap in array
                    filterValue = Array.isArray(filter.value) && filter.value[0] && typeof filter.value[0] === 'object'
                        ? filter.value[0].value
                        : Array.isArray(filter.value) && filter.value[0]
                            ? filter.value[0]
                            : filter.value;
                }
                search.query[filterName] = filterValue;
            }
        });
        search.search(true);
    };
}
// Component for interactions filtering
export function InteractionsFacetsNav({ facets, search }) {
    const [filters, setFilters] = useState([]);
    const filterGroups = useInteractionsFilterGroups(facets);
    const handleFilterLogic = useInteractionsFilterHandler(search);
    const handleFilterChange = (value) => {
        const newFilters = typeof value === 'function' ? value(filters) : value;
        setFilters(newFilters);
        handleFilterLogic(newFilters);
    };
    return (_jsx(FilterProvider, { filterGroups: filterGroups, filters: filters, setFilters: handleFilterChange, children: _jsxs("div", { className: "flex gap-2 items-center", children: [_jsx(FilterBtn, {}), _jsx(FilterBar, {}), _jsx(FilterClear, {})] }) }));
}
//# sourceMappingURL=InteractionsFacetsNav.js.map