{"version":3,"file":"index.cjs","sources":["../src/context/FiltersProvider.jsx","../src/hooks/useFilterOptions.jsx","../src/components/debuggers/FilterOptionsCountDisplay.jsx","../src/components/debuggers/ActiveFiltersBar.jsx","../src/components/LoadingOverlay.jsx","../src/components/filters/FilterAutoCompleteMultiSelectVirtualized.jsx","../src/components/filters/FilterAutoCompleteSelectVirtualized.jsx","../src/components/filters/FilterMultiSelectVirtualized.jsx","../src/components/filters/FilterSelectVirtualized.jsx","../src/components/SelectAuto.jsx","../src/hooks/useFilterConstants.jsx","../src/utils/filterFakeData.js","../src/utils/fetchFromBackend.js","../src/utils/util.js","../src/utils/fetchByFilter.js"],"sourcesContent":["import React, {\n  createContext,\n  useContext,\n  useMemo,\n  useEffect,\n  useRef,\n  useState,\n} from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\n\nconst FiltersContext = createContext({\n  state: {},\n  set: () => {},\n  reset: () => {},\n  registerDeps: () => {},\n  config: [],\n  isInitialized: false,\n  isLoading: false,\n});\n\nfunction filtersReducer(state, action) {\n  switch (action.type) {\n    case \"SET\":\n      return { ...state, [action.key]: action.value };\n    case \"RESET\":\n      return action.defaultState;\n    case \"BATCH_SET\":\n      return { ...state, ...action.updates };\n    default:\n      return state;\n  }\n}\n\nexport function FiltersProvider({\n  children,\n  config,\n  resetDependencies = false,\n}) {\n  // Build default state from config\n  const buildDefaultState = () => {\n    const state = {};\n    config.forEach((f) => {\n      state[f.name] = f.isMulti\n        ? [{ ...f.defaultValue }]\n        : { ...f.defaultValue };\n    });\n    return state;\n  };\n\n  const [state, dispatch] = React.useReducer(\n    filtersReducer,\n    null,\n    buildDefaultState\n  );\n  const [searchParams, setSearchParams] = useSearchParams();\n  const [isInitialized, setIsInitialized] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const depsRef = useRef(new Map());\n  const requestIdRef = useRef(new Map());\n  const isUpdatingRef = useRef(false);\n  const pendingKeysRef = useRef(new Set());\n\n  const registerDeps = (key, dependsOn) => {\n    if (!dependsOn || dependsOn.length === 0) return;\n    depsRef.current.set(key, dependsOn);\n  };\n\n  const setFilter = async (key, value) => {\n    // console.log(\"🔥 setFilter START:\", key, value);\n    const requestId = Date.now() + Math.random();\n\n    // Mark that we're updating and lock all affected keys\n    isUpdatingRef.current = true;\n    pendingKeysRef.current.add(key);\n    setIsLoading(true);\n\n    // Build next state with parent update - DON'T dispatch yet\n    const nextState = { ...state, [key]: value };\n    const allUpdates = { [key]: value };\n\n    // Collect all dependent children in dependency order\n    const toProcess = [];\n    const seen = new Set();\n    const collectChildren = (parentKey) => {\n      for (const f of config) {\n        if (f.dependsOn?.includes(parentKey) && !seen.has(f.name)) {\n          seen.add(f.name);\n          toProcess.push(f.name);\n          pendingKeysRef.current.add(f.name); // Lock this key too\n          collectChildren(f.name);\n        }\n      }\n    };\n    collectChildren(key);\n\n    // console.log(\"📋 toProcess:\", toProcess);\n\n    // Process children SEQUENTIALLY in dependency order, not parallel\n    for (const childKey of toProcess) {\n      // console.log(\"🔄 Processing child:\", childKey);\n      const f = config.find((fc) => fc.name === childKey);\n      if (!f) continue;\n\n      const currentValue = state[childKey];\n      const childRequestId = requestId;\n      requestIdRef.current.set(childKey, childRequestId);\n\n      // Calculate new parent values for child using allUpdates (which now has all ancestors)\n      const newParentValues = f.dependsOn.map((pKey) => {\n        const parentValue =\n          allUpdates[pKey] !== undefined ? allUpdates[pKey] : state[pKey];\n        return Array.isArray(parentValue) ? parentValue : [parentValue];\n      });\n\n      // console.log(`  📞 Fetching ${childKey} with parents:`, newParentValues);\n\n      const useBackend = f.useBackend ?? false;\n\n      try {\n        const newOptions = f.fetcher\n          ? await f.fetcher({ parentValues: newParentValues, useBackend })\n          : f.isMulti\n          ? [{ ...f.defaultValue }]\n          : { ...f.defaultValue };\n\n        // console.log(\n        //   `  ✅ Fetched ${childKey}, got ${\n        //     Array.isArray(newOptions) ? newOptions.length : 1\n        //   } options`\n        // );\n\n        if (requestIdRef.current.get(childKey) !== childRequestId) continue;\n\n        const validIds = new Set(\n          Array.isArray(newOptions)\n            ? newOptions.map((o) => o.id)\n            : [newOptions.id]\n        );\n\n        let newValue;\n\n        if (resetDependencies) {\n          // FULL RESET to default\n          newValue = f.isMulti\n            ? [{ ...f.defaultValue }]\n            : { ...f.defaultValue };\n        } else {\n          // Filter invalid selections\n          if (f.isMulti) {\n            const filteredValue = currentValue.filter(\n              (item) => item.id !== undefined && validIds.has(item.id)\n            );\n            newValue =\n              filteredValue.length > 0\n                ? filteredValue\n                : [{ ...f.defaultValue }];\n          } else {\n            newValue = validIds.has(currentValue.id)\n              ? currentValue\n              : { ...f.defaultValue };\n          }\n        }\n\n        // Store the update immediately so next children can use it\n        allUpdates[childKey] = newValue;\n        nextState[childKey] = newValue;\n      } catch (err) {\n        console.error(`Error fetching dependent ${childKey}:`, err);\n        // On error, keep current value instead of resetting\n        allUpdates[childKey] = currentValue;\n        nextState[childKey] = currentValue;\n      }\n    }\n\n    // NOW dispatch all updates at once - parent + all children\n    dispatch({ type: \"BATCH_SET\", updates: allUpdates });\n\n    // Clear the locks\n    pendingKeysRef.current.clear();\n    isUpdatingRef.current = false;\n    setIsLoading(false);\n\n    // CRITICAL: Don't update URL params during initialization\n    if (!isInitialized) {\n      // console.log(\"⏭️ Skipping URL update - still initializing\");\n      return;\n    }\n\n    // Build URL params from the final state\n    const newParams = new URLSearchParams(searchParams);\n\n    // Helper to update URL for a key/value pair\n    const updateUrlParam = (paramKey, paramValue) => {\n      if (Array.isArray(paramValue)) {\n        const realIds = paramValue.filter((v) => v.id !== -1).map((v) => v.id);\n        if (realIds.length > 0) newParams.set(paramKey, realIds.join(\",\"));\n        else newParams.delete(paramKey);\n      } else if (\n        paramValue &&\n        paramValue.id !== undefined &&\n        paramValue.id !== -1\n      ) {\n        newParams.set(paramKey, paramValue.id);\n      } else {\n        newParams.delete(paramKey);\n      }\n    };\n\n    // Update URL for parent\n    updateUrlParam(key, value);\n\n    // Update URL for all children\n    toProcess.forEach((childKey) => {\n      if (allUpdates[childKey]) {\n        updateUrlParam(childKey, allUpdates[childKey]);\n      }\n    });\n\n    // console.log(\"🔗 Setting URL params:\", newParams.toString());\n    setSearchParams(newParams);\n  };\n\n  const reset = () => {\n    dispatch({ type: \"RESET\", defaultState: buildDefaultState() });\n    setSearchParams({});\n  };\n\n  // Initialize filters from URL only once on mount\n  useEffect(() => {\n    if (isInitialized) return;\n\n    const hasParams = Array.from(searchParams.keys()).some((key) =>\n      config.some((f) => f.name === key)\n    );\n\n    if (!hasParams) {\n      setIsInitialized(true);\n      return;\n    }\n\n    // console.log(\"🚀 Initializing from URL:\", searchParams.toString());\n\n    // Set loading state during initialization\n    setIsLoading(true);\n\n    // Capture URL params immediately to prevent them from being lost\n    const urlParamsSnapshot = new URLSearchParams(searchParams);\n\n    // Build a temporary state object from URL params to calculate parent values\n    const urlState = {};\n\n    // Initialize all filters sequentially, respecting dependencies\n    const initializeFilters = async () => {\n      const updates = {};\n\n      // Sort filters by dependency depth (parents before children)\n      const sortedFilters = [...config].sort((a, b) => {\n        const aDepth = a.dependsOn?.length || 0;\n        const bDepth = b.dependsOn?.length || 0;\n        return aDepth - bDepth;\n      });\n\n      for (const f of sortedFilters) {\n        const raw = urlParamsSnapshot.get(f.name);\n        if (!raw) continue;\n\n        // console.log(`🔍 Initializing ${f.name} from URL:`, raw);\n\n        // If no fetcher, trust the URL value and create minimal objects\n        if (!f.fetcher) {\n          if (f.isMulti) {\n            const ids = raw.split(\",\").map((s) => parseInt(s, 10));\n            const items = ids.map((id) => ({ id, label: `ID ${id}` }));\n            updates[f.name] = items;\n            urlState[f.name] = items;\n          } else {\n            const id = parseInt(raw, 10);\n            const item = { id, label: `ID ${id}` };\n            updates[f.name] = item;\n            urlState[f.name] = item;\n          }\n          // console.log(`✅ ${f.name} set (no fetcher):`, updates[f.name]);\n          continue;\n        }\n\n        const useBackend = f.useBackend ?? false;\n\n        // Calculate parent values from URL state, not current state\n        const parentValues = (f.dependsOn || []).map((pKey) => {\n          const parentValue = urlState[pKey] || state[pKey];\n          return Array.isArray(parentValue) ? parentValue : [parentValue];\n        });\n\n        try {\n          const options = await f.fetcher({ parentValues, useBackend });\n          // console.log(`  📦 Fetched ${options.length} options for ${f.name}`);\n\n          if (f.isMulti) {\n            const ids = raw.split(\",\").map((s) => parseInt(s, 10));\n            const matches = options.filter((o) => ids.includes(o.id));\n            if (matches.length > 0) {\n              updates[f.name] = matches;\n              urlState[f.name] = matches;\n              // console.log(`✅ ${f.name} set:`, matches);\n            } else {\n              // CRITICAL: If no matches found, preserve URL IDs with placeholder labels\n              console.warn(\n                `⚠️ Filter ${f.name}: No matches for IDs ${ids.join(\n                  \", \"\n                )} in fetched options. Preserving URL values.`\n              );\n              const placeholders = ids.map((id) => ({ id, label: `ID ${id}` }));\n              updates[f.name] = placeholders;\n              urlState[f.name] = placeholders;\n            }\n          } else {\n            const id = parseInt(raw, 10);\n            const match = options.find((o) => o.id === id);\n            if (match) {\n              updates[f.name] = match;\n              urlState[f.name] = match;\n              // console.log(`✅ ${f.name} set:`, match);\n            } else {\n              // CRITICAL: If no match found, preserve URL ID with placeholder label\n              console.warn(\n                `⚠️ Filter ${f.name}: No match for ID ${id} in fetched options. Preserving URL value.`\n              );\n              const placeholder = { id, label: `ID ${id}` };\n              updates[f.name] = placeholder;\n              urlState[f.name] = placeholder;\n            }\n          }\n        } catch (err) {\n          console.error(`❌ Error initializing ${f.name}:`, err);\n          // CRITICAL: On fetch error, preserve URL values with placeholder labels\n          if (f.isMulti) {\n            const ids = raw.split(\",\").map((s) => parseInt(s, 10));\n            const placeholders = ids.map((id) => ({ id, label: `ID ${id}` }));\n            updates[f.name] = placeholders;\n            urlState[f.name] = placeholders;\n          } else {\n            const id = parseInt(raw, 10);\n            const placeholder = { id, label: `ID ${id}` };\n            updates[f.name] = placeholder;\n            urlState[f.name] = placeholder;\n          }\n        }\n      }\n\n      // console.log(\"📝 Final updates:\", updates);\n\n      if (Object.keys(updates).length > 0) {\n        dispatch({ type: \"BATCH_SET\", updates });\n      }\n\n      // CRITICAL: After initialization is complete, ensure URL hasn't been cleared\n      // This prevents race conditions where validation logic might clear the URL\n      const currentParams = new URLSearchParams(window.location.search);\n      let urlWasCleared = false;\n\n      for (const [key, value] of urlParamsSnapshot.entries()) {\n        if (config.some((f) => f.name === key) && !currentParams.has(key)) {\n          console.warn(\n            `⚠️ URL param ${key} was cleared during initialization, restoring...`\n          );\n          currentParams.set(key, value);\n          urlWasCleared = true;\n        }\n      }\n\n      if (urlWasCleared) {\n        setSearchParams(currentParams, { replace: true });\n      }\n\n      setIsInitialized(true);\n      setIsLoading(false);\n      // console.log(\"✅ Initialization complete\");\n    };\n\n    initializeFilters();\n  }, []); // Only run once on mount\n\n  const value = useMemo(\n    () => ({\n      state,\n      set: setFilter,\n      reset,\n      registerDeps,\n      isUpdating: isUpdatingRef.current,\n      isPending: (key) => pendingKeysRef.current.has(key),\n      isInitialized,\n      isLoading,\n      config, // Expose config in context so components can access it\n    }),\n    [state, config, isInitialized, isLoading]\n  );\n\n  return (\n    <FiltersContext.Provider value={value}>{children}</FiltersContext.Provider>\n  );\n}\n\nexport function useFilters() {\n  const ctx = useContext(FiltersContext);\n  if (!ctx) throw new Error(\"useFilters must be used within FiltersProvider\");\n  return ctx;\n}\n","import { useState, useEffect, useRef } from \"react\";\n\n/**\n * Production-ready hook to fetch filter options\n *\n * @param {array} config - filter configuration array\n * @param {string} filterName - name of the filter\n * @param {array} parentValues - array-of-arrays of parent filter values\n * @param {array} extraDeps - optional extra dependencies affecting options\n * @param {object} opts - { debounceMs } optional debounce in ms\n */\nexport function useFilterOptions(\n  config,\n  filterName,\n  parentValues = [],\n  extraDeps = [],\n  opts = {}\n) {\n  const { debounceMs = 100 } = opts;\n  const [options, setOptions] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const controllerRef = useRef(null);\n\n  // Create stable dependency string\n  const parentValuesKey = JSON.stringify(\n    parentValues.map((arr) => arr.map((v) => v.id ?? -1))\n  );\n  const extraDepsKey = JSON.stringify(extraDeps);\n\n  useEffect(() => {\n    if (controllerRef.current) controllerRef.current.abort();\n    controllerRef.current = new AbortController();\n    const signal = controllerRef.current.signal;\n\n    const timer = setTimeout(async () => {\n      setLoading(true);\n      try {\n        const conf = config.find((f) => f.name === filterName);\n        if (!conf)\n          throw new Error(`useFilterOptions: Unknown filter ${filterName}`);\n\n        // Call fetcher with structured parentValues\n        const fetched = await conf.fetcher({ parentValues, extraDeps });\n        if (!signal.aborted) setOptions(fetched);\n      } catch (err) {\n        if (!signal.aborted) console.error(err);\n      } finally {\n        if (!signal.aborted) setLoading(false);\n      }\n    }, debounceMs);\n\n    return () => {\n      clearTimeout(timer);\n      controllerRef.current?.abort();\n    };\n  }, [config, filterName, debounceMs, parentValuesKey, extraDepsKey]);\n\n  return { options, loading };\n}\n","import { useMemo } from \"react\";\nimport { useFilters } from \"../../context/FiltersProvider\";\nimport { useFilterOptions } from \"../../hooks/useFilterOptions\";\nimport { Box, Typography, Paper, Stack, CircularProgress } from \"@mui/material\";\n\nexport default function FilterOptionsCountDisplay({ extraDeps = [] }) {\n  const { state, config } = useFilters();\n\n  return (\n    <Paper\n      sx={{\n        p: 2,\n        mt: 2,\n        borderRadius: 2,\n        lineHeight: 1.6,\n        fontFamily: \"monospace\",\n        backgroundColor: (theme) =>\n          theme.palette.mode === \"dark\"\n            ? theme.palette.background.paper\n            : theme.palette.grey[100],\n      }}\n    >\n      <Typography variant=\"h6\" gutterBottom>\n        🔍 Filter Options Debugger\n      </Typography>\n\n      <Stack spacing={1}>\n        {config.map((conf) => (\n          <FilterOptionsCount\n            key={conf.name}\n            conf={conf}\n            config={config}\n            state={state}\n            extraDeps={extraDeps}\n          />\n        ))}\n      </Stack>\n    </Paper>\n  );\n}\n\nfunction FilterOptionsCount({ conf, config, state, extraDeps }) {\n  const dependsOn = conf.dependsOn || [];\n\n  const parentValues = useMemo(\n    () =>\n      dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val) ? val : val ? [val] : [];\n      }),\n    [\n      ...dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val)\n          ? val\n              .map((v) => v.id)\n              .sort()\n              .join(\",\")\n          : val?.id ?? -1;\n      }),\n    ]\n  );\n\n  const { options, loading } = useFilterOptions(\n    config,\n    conf.name,\n    parentValues,\n    extraDeps\n  );\n\n  return (\n    <Box>\n      <Typography component=\"span\" sx={{ fontWeight: \"bold\", mr: 1 }}>\n        {conf.label}:\n      </Typography>\n      {loading ? (\n        <CircularProgress size={16} sx={{ verticalAlign: \"middle\" }} />\n      ) : (\n        <Typography component=\"span\">{options.length} options</Typography>\n      )}\n    </Box>\n  );\n}\n","import { Box, Typography, Chip, IconButton } from \"@mui/material\";\nimport { useFilters } from \"../../context/FiltersProvider\";\n\nexport default function ActiveFiltersBar() {\n  const { state, reset } = useFilters();\n\n  // Flatten active filters, handle multi-select arrays\n  const active = Object.entries(state).flatMap(([k, v]) => {\n    if (Array.isArray(v)) {\n      // Only include selected items, ignore ALL_OPTION (id: -1)\n      const validItems = v.filter((item) => item.id !== -1);\n      return validItems.map((item) => ({ key: k, value: item }));\n    } else if (v?.id !== -1) {\n      return [{ key: k, value: v }];\n    }\n    return [];\n  });\n\n  if (!active.length) {\n    return (\n      <Box py={1}>\n        <Typography variant=\"body2\" color=\"text.secondary\">\n          No filters applied (all set to \"All\")\n        </Typography>\n      </Box>\n    );\n  }\n\n  return (\n    <Box display=\"flex\" gap={1} flexWrap=\"wrap\" alignItems=\"center\">\n      <Typography variant=\"body2\" fontWeight=\"medium\">\n        Active Filters:\n      </Typography>\n      {active.map(({ key, value }) => (\n        <Chip\n          key={`${key}-${value.id}`}\n          label={`${key}: ${value.label} (ID: ${value.id})`}\n          size=\"small\"\n        />\n      ))}\n      <IconButton onClick={reset} size=\"small\" title=\"Reset all to 'All'\">\n        <Box fontSize=\"small\">x</Box>\n      </IconButton>\n    </Box>\n  );\n}\n","import { Backdrop, CircularProgress } from \"@mui/material\";\n\nexport function LoadingOverlay({ isLoading }) {\n  return (\n    <Backdrop\n      open={isLoading}\n      sx={{\n        color: \"#fff\",\n        zIndex: (theme) => theme.zIndex.drawer + 1000,\n      }}\n    >\n      <CircularProgress color=\"inherit\" />\n    </Backdrop>\n  );\n}\n","import React, { useEffect, useRef, useMemo, useState } from \"react\";\nimport {\n  FormControl,\n  TextField,\n  CircularProgress,\n  Checkbox,\n  ListItemText,\n  Box,\n} from \"@mui/material\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { VariableSizeList } from \"react-window\";\nimport { useFilters } from \"../../context/FiltersProvider\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useFilterOptions } from \"../../hooks/useFilterOptions\";\n\n/**\n * ListboxComponent for virtualized rendering in Autocomplete\n * Uses react-window's VariableSizeList for better compatibility with Autocomplete\n */\nconst ListboxComponent = React.forwardRef(function ListboxComponent(\n  props,\n  ref\n) {\n  const { children, ...other } = props;\n  const itemData = React.Children.toArray(children);\n  const itemCount = itemData.length;\n  const itemSize = 48; // Default height for each option\n\n  const getHeight = () => {\n    if (itemCount > 8) {\n      return 8 * itemSize;\n    }\n    return itemCount * itemSize;\n  };\n\n  const getItemSize = () => itemSize;\n\n  return (\n    <div ref={ref}>\n      <div {...other}>\n        <VariableSizeList\n          height={getHeight()}\n          width=\"100%\"\n          itemSize={getItemSize}\n          itemCount={itemCount}\n          itemData={itemData}\n          overscanCount={5}\n        >\n          {({ index, style, data }) => {\n            const child = data[index];\n\n            return (\n              <div style={style} key={child.key || index}>\n                {React.cloneElement(child, {\n                  style: undefined, // Remove style from child, it's on wrapper\n                })}\n              </div>\n            );\n          }}\n        </VariableSizeList>\n      </div>\n    </div>\n  );\n});\n\n/**\n * FilterAutoCompleteMultiSelect\n * Multi-select Autocomplete styled like regular Select+Checkbox\n * with improved search string display\n */\nexport default function FilterAutoCompleteMultiSelectVirtualized({\n  name,\n  debounceMs = 200,\n  extraDeps = [],\n}) {\n  const {\n    state,\n    set,\n    registerDeps,\n    config: filterConfig,\n    isInitialized,\n  } = useFilters();\n  const [searchParams, setSearchParams] = useSearchParams();\n  const [inputValue, setInputValue] = useState(\"\");\n\n  const conf = filterConfig.find((f) => f.name === name);\n  if (!conf)\n    throw new Error(`FilterAutoCompleteMultiSelect: Unknown filter '${name}'`);\n\n  const dependsOn = conf.dependsOn || [];\n\n  // Flatten parent values for multi-parent support\n  const parentValues = useMemo(\n    () =>\n      dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val) ? val : val ? [val] : [];\n      }),\n    [\n      ...dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val)\n          ? val\n              .map((v) => v.id)\n              .sort()\n              .join(\",\")\n          : val?.id ?? -1;\n      }),\n    ]\n  );\n\n  const { options, loading } = useFilterOptions(\n    filterConfig,\n    name,\n    parentValues,\n    extraDeps\n  );\n\n  // Register dependencies\n  useEffect(\n    () => registerDeps(name, dependsOn),\n    [name, dependsOn, registerDeps]\n  );\n\n  let selectedValues = state[name]; // Always array\n  const valDebounceRef = useRef(null);\n\n  // Validation: remove invalid selections\n  useEffect(() => {\n    // CRITICAL: Don't validate during initialization\n    if (!isInitialized) return;\n\n    if (valDebounceRef.current) clearTimeout(valDebounceRef.current);\n\n    valDebounceRef.current = setTimeout(() => {\n      if (!selectedValues || selectedValues.length === 0) return;\n\n      const validValues = selectedValues.filter((v) =>\n        options.some((o) => o.id === v.id)\n      );\n      if (validValues.length !== selectedValues.length) {\n        const fallback = Array.isArray(conf.defaultValue)\n          ? conf.defaultValue\n          : [conf.defaultValue];\n        set(name, fallback);\n\n        const newParams = new URLSearchParams(searchParams);\n        newParams.delete(name);\n        setSearchParams(newParams);\n      }\n    }, debounceMs);\n\n    return () => clearTimeout(valDebounceRef.current);\n  }, [\n    isInitialized,\n    options,\n    selectedValues,\n    name,\n    set,\n    conf.defaultValue,\n    debounceMs,\n    searchParams,\n    setSearchParams,\n  ]);\n\n  // Handle change\n  const handleChange = (_event, newValues) => {\n    let updatedValues = newValues || [];\n\n    const hasAll = updatedValues.some((v) => v.id === -1);\n    const hadAll = selectedValues.some((v) => v.id === -1);\n    const allJustClicked = hasAll && !hadAll;\n\n    if (allJustClicked) {\n      updatedValues = Array.isArray(conf.defaultValue)\n        ? conf.defaultValue\n        : [conf.defaultValue];\n    } else if (hasAll && updatedValues.length > 1) {\n      updatedValues = updatedValues.filter((v) => v.id !== -1);\n    } else if (hasAll && updatedValues.length === 1) {\n      updatedValues = Array.isArray(conf.defaultValue)\n        ? conf.defaultValue\n        : [conf.defaultValue];\n    } else if (updatedValues.length === 0) {\n      updatedValues = Array.isArray(conf.defaultValue)\n        ? conf.defaultValue\n        : [conf.defaultValue];\n    }\n\n    // Update filter state\n    set(name, updatedValues);\n\n    // Sync URL (exclude -1)\n    const newParams = new URLSearchParams(searchParams);\n    const realIds = updatedValues.filter((v) => v.id !== -1).map((v) => v.id);\n    if (realIds.length > 0) {\n      newParams.set(name, realIds.join(\",\"));\n    } else {\n      newParams.delete(name);\n    }\n    setSearchParams(newParams);\n  };\n\n  return (\n    <FormControl fullWidth disabled={loading}>\n      <Autocomplete\n        multiple\n        options={options}\n        getOptionLabel={(option) => option.label || \"\"}\n        value={selectedValues}\n        onChange={handleChange}\n        isOptionEqualToValue={(option, value) => option.id === value.id}\n        loading={loading}\n        disableCloseOnSelect\n        ListboxComponent={ListboxComponent}\n        renderOption={(props, option, { selected }) => {\n          const { key, ...otherProps } = props;\n          return (\n            <li key={key} {...otherProps}>\n              <Checkbox style={{ marginRight: 8 }} checked={selected} />\n              <ListItemText primary={option.label} />\n            </li>\n          );\n        }}\n        onInputChange={(_event, newInputValue) => setInputValue(newInputValue)}\n        renderTags={(tagValue, _getTagProps) => {\n          // Use inputValue from state, not ownerState\n          if (inputValue && inputValue.length > 0) return null;\n\n          // Create a single-line comma-separated string\n          const displayText = tagValue.map((option) => option.label).join(\", \");\n\n          return (\n            <Box\n              sx={{\n                overflow: \"hidden\",\n                textOverflow: \"ellipsis\",\n                whiteSpace: \"nowrap\",\n                flex: 1,\n                paddingRight: \"4px\",\n              }}\n            >\n              {displayText}\n            </Box>\n          );\n        }}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label={conf.label}\n            variant=\"outlined\"\n            InputProps={{\n              ...params.InputProps,\n              endAdornment: (\n                <>\n                  {loading ? (\n                    <CircularProgress color=\"inherit\" size={20} />\n                  ) : null}\n                  {params.InputProps.endAdornment}\n                </>\n              ),\n            }}\n          />\n        )}\n      />\n    </FormControl>\n  );\n}\n","import React, { useEffect, useRef, useMemo } from \"react\";\nimport { FormControl, TextField, CircularProgress } from \"@mui/material\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { VariableSizeList } from \"react-window\";\nimport { useFilters } from \"../../context/FiltersProvider\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useFilterOptions } from \"../../hooks/useFilterOptions\";\n\n/**\n * ListboxComponent for virtualized rendering in Autocomplete\n * Uses react-window's VariableSizeList for better compatibility with Autocomplete\n */\nconst ListboxComponent = React.forwardRef(function ListboxComponent(\n  props,\n  ref\n) {\n  const { children, ...other } = props;\n  const itemData = React.Children.toArray(children);\n  const itemCount = itemData.length;\n  const itemSize = 48; // Default height for each option\n\n  const getHeight = () => {\n    if (itemCount > 8) {\n      return 8 * itemSize;\n    }\n    return itemCount * itemSize;\n  };\n\n  const getItemSize = () => itemSize;\n\n  return (\n    <div ref={ref}>\n      <div {...other}>\n        <VariableSizeList\n          height={getHeight()}\n          width=\"100%\"\n          itemSize={getItemSize}\n          itemCount={itemCount}\n          itemData={itemData}\n          overscanCount={5}\n        >\n          {({ index, style, data }) => {\n            return React.cloneElement(data[index], {\n              style: {\n                ...style,\n                ...(data[index].props.style || {}),\n              },\n            });\n          }}\n        </VariableSizeList>\n      </div>\n    </div>\n  );\n});\n\n/**\n * FilterAutoCompleteSelect\n * Single-select Autocomplete component for filters\n */\nexport default function FilterAutoCompleteSelectVirtualized({\n  name,\n  debounceMs = 200,\n  extraDeps = [],\n}) {\n  const { state, set, registerDeps, config: filterConfig } = useFilters();\n  const [searchParams, setSearchParams] = useSearchParams();\n\n  const conf = filterConfig.find((f) => f.name === name);\n  if (!conf)\n    throw new Error(`FilterAutoCompleteSelect: Unknown filter '${name}'`);\n\n  const dependsOn = conf.dependsOn || [];\n\n  // Parent values structured per parent\n  const parentValues = useMemo(\n    () =>\n      dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val) ? val : val ? [val] : [];\n      }),\n    [\n      ...dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val)\n          ? val\n              .map((v) => v.id)\n              .sort()\n              .join(\",\")\n          : val?.id ?? -1;\n      }),\n    ]\n  );\n\n  const { options, loading } = useFilterOptions(\n    filterConfig,\n    name,\n    parentValues,\n    extraDeps\n  );\n\n  // Register dependencies\n  useEffect(\n    () => registerDeps(name, dependsOn),\n    [name, dependsOn, registerDeps]\n  );\n\n  const selectedValue = state[name];\n  const valDebounceRef = useRef(null);\n\n  // Debounced validation: reset selection if no longer in options\n  useEffect(() => {\n    if (valDebounceRef.current) clearTimeout(valDebounceRef.current);\n\n    valDebounceRef.current = setTimeout(() => {\n      if (!selectedValue || selectedValue.id === -1) return;\n\n      const exists = options.some((o) => o.id === selectedValue.id);\n      if (!exists) {\n        set(name, conf.defaultValue);\n\n        const newParams = new URLSearchParams(searchParams);\n        newParams.set(name, conf.defaultValue.id);\n        setSearchParams(newParams);\n      }\n    }, debounceMs);\n\n    return () => clearTimeout(valDebounceRef.current);\n  }, [\n    options,\n    selectedValue,\n    name,\n    set,\n    conf.defaultValue,\n    ...dependsOn.map((p) => {\n      const val = state[p];\n      return Array.isArray(val)\n        ? val\n            .map((v) => v.id)\n            .sort()\n            .join(\",\")\n        : val?.id ?? -1;\n    }),\n    ...extraDeps,\n    debounceMs,\n    searchParams,\n    setSearchParams,\n  ]);\n\n  // Handle change\n  const handleChange = (_event, newValue) => {\n    const valueToSet = newValue || conf.defaultValue;\n    set(name, valueToSet);\n\n    const newParams = new URLSearchParams(searchParams);\n    newParams.set(name, valueToSet.id);\n    setSearchParams(newParams);\n  };\n\n  return (\n    <FormControl fullWidth disabled={loading}>\n      <Autocomplete\n        options={options}\n        getOptionLabel={(option) => option.label || \"\"}\n        value={\n          selectedValue?.id !== undefined ? selectedValue : conf.defaultValue\n        }\n        onChange={handleChange}\n        isOptionEqualToValue={(option, value) => option.id === value.id}\n        loading={loading}\n        clearOnEscape\n        autoHighlight\n        ListboxComponent={ListboxComponent}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label={conf.label}\n            variant=\"outlined\"\n            InputProps={{\n              ...params.InputProps,\n              endAdornment: (\n                <>\n                  {loading ? (\n                    <CircularProgress color=\"inherit\" size={20} />\n                  ) : null}\n                  {params.InputProps.endAdornment}\n                </>\n              ),\n            }}\n          />\n        )}\n      />\n    </FormControl>\n  );\n}\n","import React, { forwardRef, useEffect, useRef, useMemo } from \"react\";\nimport {\n  FormControl,\n  InputLabel,\n  Select,\n  MenuItem,\n  CircularProgress,\n  Checkbox,\n  ListItemText,\n} from \"@mui/material\";\nimport { FixedSizeList } from \"react-window\";\nimport { useFilters } from \"../../context/FiltersProvider\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useFilterOptions } from \"../../hooks/useFilterOptions\";\n\n/**\n * MenuListVirtual\n * - `forwardRef` so MUI's ref is forwarded to the inner <ul> element (so .focus() works)\n * - virtualizes rendering of children (which are MenuItem elements) with react-window\n */\nconst MenuListVirtual = forwardRef(function MenuListVirtual(\n  { children, itemSize = 48, height = 300, ...rest },\n  ref\n) {\n  const items = React.Children.toArray(children || []);\n  const itemCount = items.length;\n  const listRef = useRef(null);\n\n  // inner element type that renders <ul> and receives the innerRef from react-window.\n  // We also forward that inner DOM node to MUI's ref so MUI can call focus().\n  const InnerElementType = forwardRef(function InnerElementType(\n    innerProps,\n    innerRef\n  ) {\n    // innerRef is the ref react-window will set to the <ul>; we want to keep that,\n    // but also set the `ref` provided by MUI to the same DOM node so MUI can focus it.\n    const handleRef = (node) => {\n      if (typeof innerRef === \"function\") innerRef(node);\n      else if (innerRef) innerRef.current = node;\n\n      if (typeof ref === \"function\") ref(node);\n      else if (ref) ref.current = node;\n    };\n\n    return (\n      <ul\n        {...innerProps}\n        ref={handleRef}\n        tabIndex={-1}\n        style={{ margin: 0, padding: 0 }}\n      />\n    );\n  });\n\n  // Row renderer clones the original MenuItem child and injects the style prop\n  const Row = ({ index, style }) => {\n    const child = items[index];\n    // clone to inject style (react-window positioning)\n    return React.cloneElement(child, {\n      style: {\n        ...(child.props.style || {}),\n        ...style,\n      },\n    });\n  };\n\n  const listHeight = Math.min(height, itemCount * itemSize);\n\n  return (\n    <div {...rest}>\n      <FixedSizeList\n        ref={listRef}\n        height={listHeight}\n        itemCount={itemCount}\n        itemSize={itemSize}\n        width=\"100%\"\n        innerElementType={InnerElementType}\n        overscanCount={5}\n      >\n        {Row}\n      </FixedSizeList>\n    </div>\n  );\n});\n\nexport default function FilterMultiSelectVirtualized({\n  name,\n  debounceMs = 200,\n  extraDeps = [],\n}) {\n  const {\n    state,\n    set,\n    registerDeps,\n    config: filterConfig,\n    isInitialized,\n  } = useFilters();\n  const [searchParams, setSearchParams] = useSearchParams();\n\n  const conf = filterConfig.find((f) => f.name === name);\n  if (!conf) throw new Error(`FilterMultiSelect: Unknown filter '${name}'`);\n\n  const dependsOn = conf.dependsOn || [];\n\n  // Flatten parent values for multi-parent support\n  const parentValues = useMemo(\n    () =>\n      dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val) ? val : val ? [val] : [];\n      }),\n    [\n      ...dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val)\n          ? val\n              .map((v) => v.id)\n              .sort()\n              .join(\",\")\n          : val?.id ?? -1;\n      }),\n    ]\n  );\n\n  const { options, loading } = useFilterOptions(\n    filterConfig,\n    name,\n    parentValues,\n    extraDeps\n  );\n\n  // Register dependencies\n  useEffect(\n    () => registerDeps(name, dependsOn),\n    [name, dependsOn, registerDeps]\n  );\n\n  let selectedValues = state[name]; // Always array for multi-select\n  const valDebounceRef = useRef(null);\n\n  // ------------------------\n  // Validation: remove invalid selections\n  // ------------------------\n  useEffect(() => {\n    // CRITICAL: Don't validate during initialization\n    if (!isInitialized) return;\n\n    if (valDebounceRef.current) clearTimeout(valDebounceRef.current);\n\n    valDebounceRef.current = setTimeout(() => {\n      if (!selectedValues || selectedValues.length === 0) return;\n\n      const validValues = selectedValues.filter((v) =>\n        options.some((o) => o.id === v.id)\n      );\n\n      if (validValues.length !== selectedValues.length) {\n        const fallback = Array.isArray(conf.defaultValue)\n          ? conf.defaultValue\n          : [conf.defaultValue];\n        set(name, fallback);\n\n        const newParams = new URLSearchParams(searchParams);\n        newParams.delete(name); // Remove from URL (default should not be in URL)\n        setSearchParams(newParams);\n      }\n    }, debounceMs);\n\n    return () => clearTimeout(valDebounceRef.current);\n  }, [\n    isInitialized,\n    options,\n    selectedValues,\n    name,\n    set,\n    conf.defaultValue,\n    debounceMs,\n    searchParams,\n    setSearchParams,\n  ]);\n\n  const handleChange = (e) => {\n    // e.target.value is an array of IDs from MUI\n    const selectedIds = e.target.value;\n\n    // Map IDs back to full option objects\n    let newValues = options.filter((opt) => selectedIds.includes(opt.id));\n\n    const hasAll = newValues.some((v) => v.id === -1);\n    const hadAll = selectedValues.some((v) => v.id === -1);\n\n    // Check if \"All\" was just clicked (it's now in the selection but wasn't before)\n    const allJustClicked = hasAll && !hadAll;\n\n    if (allJustClicked) {\n      // \"All\" was just clicked - deselect everything else and select only \"All\"\n      newValues = Array.isArray(conf.defaultValue)\n        ? conf.defaultValue\n        : [conf.defaultValue];\n    } else if (hasAll && selectedIds.length > 1) {\n      // \"All\" is selected along with other options - remove \"All\"\n      newValues = newValues.filter((v) => v.id !== -1);\n    } else if (hasAll && selectedIds.length === 1) {\n      // ONLY \"All\" is selected - keep it\n      newValues = Array.isArray(conf.defaultValue)\n        ? conf.defaultValue\n        : [conf.defaultValue];\n    } else if (newValues.length === 0) {\n      // Nothing selected - fallback to \"All\"\n      newValues = Array.isArray(conf.defaultValue)\n        ? conf.defaultValue\n        : [conf.defaultValue];\n    }\n\n    // Update filter state\n    set(name, newValues);\n\n    // Sync URL: only include real IDs, never -1\n    const newParams = new URLSearchParams(searchParams);\n    const realIds = newValues.filter((v) => v.id !== -1).map((v) => v.id);\n\n    if (realIds.length > 0) {\n      newParams.set(name, realIds.join(\",\"));\n    } else {\n      newParams.delete(name);\n    }\n\n    setSearchParams(newParams);\n  };\n\n  return (\n    <FormControl fullWidth disabled={loading}>\n      <InputLabel>{conf.label}</InputLabel>\n      <Select\n        multiple\n        value={selectedValues.map((v) => v.id)}\n        onChange={handleChange}\n        label={conf.label}\n        renderValue={(selected) =>\n          selected\n            .map((id) => options.find((o) => o.id === id)?.label || \"\")\n            .join(\", \")\n        }\n        // Let MUI render its Menu and MenuList as usual, but override MenuList with our virtualized component.\n        MenuProps={{\n          PaperProps: {\n            style: { overflow: \"hidden\" },\n          },\n          // This is the correct hook: override the MenuList component\n          MenuListProps: {\n            component: MenuListVirtual,\n            // pass props down; MUI will pass children (MenuItems) into MenuListVirtual\n            // react-window sizing defaults work, but you can pass itemSize/height via MenuListProps if you want\n          },\n        }}\n        endAdornment={loading && <CircularProgress size={20} />}\n      >\n        {options.map((opt) => (\n          <MenuItem key={opt.id} value={opt.id}>\n            <Checkbox checked={selectedValues.some((v) => v.id === opt.id)} />\n            <ListItemText primary={opt.label} />\n          </MenuItem>\n        ))}\n      </Select>\n    </FormControl>\n  );\n}\n","import React, { forwardRef, useEffect, useRef, useMemo } from \"react\";\nimport {\n  FormControl,\n  InputLabel,\n  Select,\n  CircularProgress,\n  MenuItem,\n} from \"@mui/material\";\nimport { FixedSizeList } from \"react-window\";\nimport { useFilters } from \"../../context/FiltersProvider\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useFilterOptions } from \"../../hooks/useFilterOptions\";\n\n/**\n * MenuListVirtual\n * - `forwardRef` so MUI's ref is forwarded to the inner <ul> element (so .focus() works)\n * - virtualizes rendering of children (which are MenuItem elements) with react-window\n */\nconst MenuListVirtual = forwardRef(function MenuListVirtual(\n  { children, itemSize = 48, height = 300, ...rest },\n  ref\n) {\n  const items = React.Children.toArray(children || []);\n  const itemCount = items.length;\n  const listRef = useRef(null);\n\n  // inner element type that renders <ul> and receives the innerRef from react-window.\n  // We also forward that inner DOM node to MUI's ref so MUI can call focus().\n  const InnerElementType = forwardRef(function InnerElementType(\n    innerProps,\n    innerRef\n  ) {\n    // innerRef is the ref react-window will set to the <ul>; we want to keep that,\n    // but also set the `ref` provided by MUI to the same DOM node so MUI can focus it.\n    const handleRef = (node) => {\n      if (typeof innerRef === \"function\") innerRef(node);\n      else if (innerRef) innerRef.current = node;\n\n      if (typeof ref === \"function\") ref(node);\n      else if (ref) ref.current = node;\n    };\n\n    return (\n      <ul\n        {...innerProps}\n        ref={handleRef}\n        tabIndex={-1}\n        style={{ margin: 0, padding: 0 }}\n      />\n    );\n  });\n\n  // Row renderer clones the original MenuItem child and injects the style prop\n  const Row = ({ index, style }) => {\n    const child = items[index];\n    // clone to inject style (react-window positioning)\n    return React.cloneElement(child, {\n      style: {\n        ...(child.props.style || {}),\n        ...style,\n      },\n    });\n  };\n\n  const listHeight = Math.min(height, itemCount * itemSize);\n\n  return (\n    <div {...rest}>\n      <FixedSizeList\n        ref={listRef}\n        height={listHeight}\n        itemCount={itemCount}\n        itemSize={itemSize}\n        width=\"100%\"\n        innerElementType={InnerElementType}\n        overscanCount={5}\n      >\n        {Row}\n      </FixedSizeList>\n    </div>\n  );\n});\n\nexport default function FilterSelectVirtualized({\n  name,\n  debounceMs = 200,\n  extraDeps = [],\n}) {\n  const {\n    state,\n    set,\n    registerDeps,\n    config: filterConfig,\n    isInitialized,\n  } = useFilters();\n  const [searchParams, setSearchParams] = useSearchParams();\n\n  const conf = filterConfig.find((f) => f.name === name);\n  if (!conf)\n    throw new Error(`FilterSelectVirtualized: Unknown filter '${name}'`);\n\n  const dependsOn = conf.dependsOn || [];\n\n  // Parent values structured per parent (array of arrays)\n  const parentValues = useMemo(\n    () =>\n      dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val) ? val : val ? [val] : [];\n      }),\n    [\n      ...dependsOn.map((p) => {\n        const val = state[p];\n        return Array.isArray(val)\n          ? val\n              .map((v) => v.id)\n              .sort()\n              .join(\",\")\n          : val?.id ?? -1;\n      }),\n    ]\n  );\n\n  const { options, loading } = useFilterOptions(\n    filterConfig,\n    name,\n    parentValues,\n    extraDeps\n  );\n\n  useEffect(\n    () => registerDeps(name, dependsOn),\n    [name, dependsOn, registerDeps]\n  );\n\n  const selectedValue = state[name];\n  const valDebounceRef = useRef(null);\n\n  useEffect(() => {\n    // CRITICAL: Don't validate during initialization\n    if (!isInitialized) return;\n\n    if (valDebounceRef.current) clearTimeout(valDebounceRef.current);\n\n    valDebounceRef.current = setTimeout(() => {\n      if (!selectedValue || selectedValue.id === -1) return;\n\n      const exists = options.some((o) => o.id === selectedValue.id);\n      if (!exists) {\n        set(name, conf.defaultValue);\n\n        // Update URL on reset\n        const newParams = new URLSearchParams(searchParams);\n        newParams.set(name, conf.defaultValue.id);\n        setSearchParams(newParams);\n      }\n    }, debounceMs);\n\n    return () => clearTimeout(valDebounceRef.current);\n  }, [\n    isInitialized,\n    options,\n    selectedValue,\n    name,\n    set,\n    conf.defaultValue,\n    ...dependsOn.map((p) => {\n      const val = state[p];\n      return Array.isArray(val)\n        ? val\n            .map((v) => v.id)\n            .sort()\n            .join(\",\")\n        : val?.id ?? -1;\n    }),\n    ...extraDeps,\n    debounceMs,\n    searchParams,\n    setSearchParams,\n  ]);\n\n  const handleChange = (e) => {\n    const sel = options.find((o) => o.id === e.target.value);\n    if (sel) {\n      set(name, sel);\n\n      // Sync selection to URL\n      const newParams = new URLSearchParams(searchParams);\n      newParams.set(name, sel.id);\n      setSearchParams(newParams);\n    }\n  };\n\n  // Check if current value exists in options to prevent MUI warning\n  const valueExists = options.some((o) => o.id === selectedValue?.id);\n  const selectValue = valueExists\n    ? selectedValue.id\n    : options.length === 0\n    ? \"\"\n    : conf.defaultValue.id;\n\n  return (\n    <FormControl fullWidth disabled={loading}>\n      <InputLabel>{conf.label}</InputLabel>\n      <Select\n        value={selectValue}\n        onChange={handleChange}\n        label={conf.label}\n        MenuProps={{\n          PaperProps: {\n            style: { overflow: \"hidden\" },\n          },\n          MenuListProps: {\n            component: MenuListVirtual,\n          },\n        }}\n        endAdornment={loading && <CircularProgress size={20} />}\n      >\n        {options.map((opt) => (\n          <MenuItem key={opt.id} value={opt.id}>\n            {opt.label}\n          </MenuItem>\n        ))}\n      </Select>\n    </FormControl>\n  );\n}\n","import { Box } from \"@mui/material\";\nimport FilterAutoCompleteMultiSelectVirtualized from \"./filters/FilterAutoCompleteMultiSelectVirtualized\";\nimport FilterAutoCompleteSelectVirtualized from \"./filters/FilterAutoCompleteSelectVirtualized\";\nimport FilterMultiSelectVirtualized from \"./filters/FilterMultiSelectVirtualized\";\nimport FilterSelectVirtualized from \"./filters/FilterSelectVirtualized\";\n\nconst SelectAuto = ({ filter: f, state }) => {\n  // ✅ Check if this filter should be hidden based on parent\n  if (f.hide && f.dependsOn?.length) {\n    const directParentKey = f.dependsOn[f.dependsOn.length - 1]; // immediate parent\n    const parentValue = state[directParentKey];\n\n    // Handle both object and array forms\n    const isAllSelected = Array.isArray(parentValue)\n      ? parentValue.some((v) => v.id === -1)\n      : parentValue?.id === -1;\n\n    if (!parentValue || isAllSelected) {\n      return null; // hide this filter\n    }\n  }\n\n  // ✅ Then render the correct filter component\n  return (\n    <Box width={250}>\n      {f ? (\n        f.isAutoComplete ? (\n          f.isMulti ? (\n            <FilterAutoCompleteMultiSelectVirtualized name={f.name} />\n          ) : (\n            <FilterAutoCompleteSelectVirtualized name={f.name} />\n          )\n        ) : f.isMulti ? (\n          <FilterMultiSelectVirtualized name={f.name} />\n        ) : (\n          <FilterSelectVirtualized name={f.name} />\n        )\n      ) : null}\n    </Box>\n  );\n};\n\nexport default SelectAuto;\n","// Common constants used across filters\nexport const ALL_OPTION = { id: -1, label: \"All\" };\n","import { ALL_OPTION } from \"../hooks/useFilterConstants\";\n\nexport function filterFakeData(data, flatParents) {\n  let filtered = data;\n  const grouped = flatParents.reduce((acc, p) => {\n    if (!acc[p.key]) acc[p.key] = [];\n    acc[p.key].push(p);\n    return acc;\n  }, {});\n\n  Object.entries(grouped).forEach(([key, parents]) => {\n    if (parents.some((p) => p.id === -1)) return;\n    const ids = parents.map((p) => p.id);\n    filtered = filtered.filter((item) => ids.includes(item[`${key}Id`]));\n  });\n\n  return [ALL_OPTION, ...filtered];\n}\n","/* eslint-disable no-unused-vars */\n// GET VERSION\nimport { ALL_OPTION } from \"../hooks/useFilterConstants\";\n\nexport async function fetchFromBackend({\n  parentValues,\n  filterProps,\n  endpoint, // Accept but may not use in URL\n}) {\n  // Optionally include extraDeps in API call if your backend needs them\n  // extraDeps.forEach((dep, idx) => {\n  //   params.append(`extra${idx}`, dep);\n  // });\n\n  // console.log(\"extraDeps\", extraDeps);\n\n  // Flatten parent selections and filter out -1 (All)\n  const flatParents = parentValues\n    .map((level, idx) =>\n      level\n        .filter((p) => p.id !== -1) // Remove -1\n        .map((p) => ({ ...p, key: filterProps.dependsOn[idx] }))\n    )\n    .flat();\n\n  const params = new URLSearchParams();\n\n  // Multi-value support for multi-select parents\n  flatParents.forEach((p) => {\n    if (p.id !== undefined) {\n      params.append(`${p.key}Id`, p.id);\n    }\n  });\n\n  const url = `${endpoint}?${params.toString()}`;\n  const res = await fetch(url);\n\n  if (!res.ok) throw new Error(`Failed to fetch from ${url}`);\n  const data = await res.json();\n\n  return [ALL_OPTION, ...data];\n}\n","/**\n * Flattens parentValues (array of arrays) and adds `key` based on filterProps.dependsOn.\n * @param {Array} parentValues - Array of arrays of objects.\n * @param {Object} filterProps - Filter object with dependsOn array.\n * @returns {Array} Flattened array with added `key` field.\n */\nexport function flattenWithDependsOn(parentValues, filterProps) {\n  return parentValues.flatMap((items, i) => {\n    // Use dependsOn[i] as the key\n    const key = filterProps.dependsOn[i] || `key${i}`;\n\n    return items.map((item) => ({ ...item, key }));\n  });\n}\n","// utils/fetchByFilter.js\nimport { filterFakeData } from \"./filterFakeData\";\nimport { flattenWithDependsOn } from \"./util\";\n\n/**\n * Generic fetcher for test/fake data (multi-select safe)\n */\nexport async function fetchByFilter({ parentValues, data, filterProps }) {\n  const flatParents = flattenWithDependsOn(parentValues, filterProps);\n  return filterFakeData(data, flatParents);\n}\n"],"names":["FiltersContext","createContext","state","set","reset","registerDeps","config","isInitialized","isLoading","filtersReducer","action","type","key","value","defaultState","updates","FiltersProvider","children","resetDependencies","buildDefaultState","forEach","f","name","isMulti","defaultValue","dispatch","React","useReducer","searchParams","setSearchParams","useSearchParams","setIsInitialized","useState","setIsLoading","depsRef","useRef","Map","requestIdRef","isUpdatingRef","pendingKeysRef","Set","dependsOn","length","current","setFilter","requestId","Date","now","Math","random","add","nextState","allUpdates","toProcess","seen","collectChildren","parentKey","includes","has","push","childKey","find","fc","currentValue","childRequestId","newParentValues","map","pKey","parentValue","undefined","Array","isArray","useBackend","newOptions","fetcher","parentValues","get","validIds","o","id","newValue","filteredValue","filter","item","err","console","error","clear","newParams","URLSearchParams","updateUrlParam","paramKey","paramValue","realIds","v","join","delete","useEffect","hasParams","from","keys","some","urlParamsSnapshot","urlState","initializeFilters","sortedFilters","sort","a","b","aDepth","bDepth","raw","ids","split","s","parseInt","items","label","options","matches","warn","placeholders","match","placeholder","Object","currentParams","window","location","search","urlWasCleared","entries","replace","useMemo","isUpdating","isPending","_jsx","Provider","useFilters","ctx","useContext","Error","useFilterOptions","filterName","extraDeps","opts","debounceMs","setOptions","loading","setLoading","controllerRef","parentValuesKey","JSON","stringify","arr","extraDepsKey","abort","AbortController","signal","timer","setTimeout","conf","fetched","aborted","clearTimeout","FilterOptionsCountDisplay","_jsxs","Paper","sx","p","mt","borderRadius","lineHeight","fontFamily","backgroundColor","theme","palette","mode","background","paper","grey","Typography","variant","gutterBottom","Stack","spacing","FilterOptionsCount","val","Box","component","fontWeight","mr","CircularProgress","size","verticalAlign","ActiveFiltersBar","active","flatMap","k","validItems","py","color","display","gap","flexWrap","alignItems","Chip","IconButton","onClick","title","fontSize","LoadingOverlay","Backdrop","open","zIndex","drawer","ListboxComponent","forwardRef","props","ref","other","itemData","Children","toArray","itemCount","itemSize","getHeight","getItemSize","VariableSizeList","height","width","overscanCount","index","style","data","child","cloneElement","FilterAutoCompleteMultiSelectVirtualized","filterConfig","inputValue","setInputValue","selectedValues","valDebounceRef","validValues","fallback","handleChange","_event","newValues","updatedValues","hasAll","hadAll","allJustClicked","FormControl","fullWidth","disabled","Autocomplete","multiple","getOptionLabel","option","onChange","isOptionEqualToValue","disableCloseOnSelect","renderOption","selected","otherProps","Checkbox","marginRight","checked","ListItemText","primary","onInputChange","newInputValue","renderTags","tagValue","_getTagProps","displayText","overflow","textOverflow","whiteSpace","flex","paddingRight","renderInput","params","TextField","InputProps","endAdornment","_Fragment","FilterAutoCompleteSelectVirtualized","selectedValue","exists","valueToSet","clearOnEscape","autoHighlight","MenuListVirtual","rest","listRef","InnerElementType","innerProps","innerRef","handleRef","node","tabIndex","margin","padding","Row","listHeight","min","FixedSizeList","innerElementType","FilterMultiSelectVirtualized","e","selectedIds","target","opt","InputLabel","Select","renderValue","MenuProps","PaperProps","MenuListProps","MenuItem","FilterSelectVirtualized","sel","valueExists","selectValue","SelectAuto","hide","directParentKey","isAllSelected","isAutoComplete","ALL_OPTION","filterFakeData","flatParents","filtered","grouped","reduce","acc","parents","fetchFromBackend","filterProps","endpoint","level","idx","flat","append","url","toString","res","fetch","ok","json","flattenWithDependsOn","i","fetchByFilter"],"mappings":"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"}