{"version":3,"file":"tableStore.mjs","sources":["../../../src/lib/nextGenComponents/stores/tableStore.ts"],"sourcesContent":["import type {\n  RowSelectionState,\n  SortingState,\n  ColumnSizingState,\n  ColumnFiltersState\n} from '@tanstack/react-table'\nimport { create } from 'zustand'\n\nexport type DraftValues = Record<string, string | string[]>\n\nexport type FilterPopoverState = {\n  open: boolean\n  draft: DraftValues\n}\n\nexport const DEFAULT_FILTER_SCOPE = 'default'\n\nconst emptyPopoverState: FilterPopoverState = { open: false, draft: {} }\n\ntype TableState = {\n  rowSelection: RowSelectionState\n  sorting: SortingState\n  columnSizing: ColumnSizingState\n  globalFilter: string\n  columnFilters: ColumnFiltersState\n\n  filterPopovers: Record<string, FilterPopoverState>\n\n  setRowSelection: (\n    selection: RowSelectionState | ((old: RowSelectionState) => RowSelectionState)\n  ) => void\n  setSorting: (sorting: SortingState | ((old: SortingState) => SortingState)) => void\n  setColumnSizing: (\n    sizing: ColumnSizingState | ((old: ColumnSizingState) => ColumnSizingState)\n  ) => void\n  setGlobalFilter: (value: string | ((old: string) => string)) => void\n  setColumnFilters: (\n    value: ColumnFiltersState | ((old: ColumnFiltersState) => ColumnFiltersState)\n  ) => void\n\n  getFilterPopover: (scopeId: string) => FilterPopoverState\n  setFilterPopoverOpen: (scopeId: string, open: boolean) => void\n  setFilterDraft: (\n    scopeId: string,\n    draft: DraftValues | ((old: DraftValues) => DraftValues)\n  ) => void\n  resetFilterDraft: (scopeId: string, initial: DraftValues) => void\n}\n\nexport const selectFilterPopover =\n  (scopeId: string) =>\n  (state: TableState): FilterPopoverState =>\n    state.filterPopovers[scopeId] ?? emptyPopoverState\n\nexport const useTableStore = create<TableState>((set, get) => ({\n  rowSelection: {},\n  sorting: [],\n  columnSizing: {},\n  globalFilter: '',\n  columnFilters: [],\n\n  filterPopovers: {},\n\n  setRowSelection: selection =>\n    set(old => ({\n      rowSelection: typeof selection === 'function' ? selection(old.rowSelection) : selection\n    })),\n\n  setSorting: sorting =>\n    set(old => ({\n      sorting: typeof sorting === 'function' ? sorting(old.sorting) : sorting\n    })),\n\n  setColumnSizing: sizing =>\n    set(old => ({\n      columnSizing: typeof sizing === 'function' ? sizing(old.columnSizing) : sizing\n    })),\n\n  setGlobalFilter: value =>\n    set(old => ({\n      globalFilter: typeof value === 'function' ? value(old.globalFilter) : value\n    })),\n\n  setColumnFilters: value =>\n    set(old => ({\n      columnFilters: typeof value === 'function' ? value(old.columnFilters) : value\n    })),\n\n  getFilterPopover: (scopeId: string) => get().filterPopovers[scopeId] ?? emptyPopoverState,\n\n  setFilterPopoverOpen: (scopeId, open) =>\n    set(old => {\n      const prev = old.filterPopovers[scopeId] ?? emptyPopoverState\n      return {\n        filterPopovers: {\n          ...old.filterPopovers,\n          [scopeId]: { ...prev, open }\n        }\n      }\n    }),\n\n  setFilterDraft: (scopeId, draft) =>\n    set(old => {\n      const prev = old.filterPopovers[scopeId] ?? emptyPopoverState\n      const nextDraft = typeof draft === 'function' ? draft(prev.draft) : draft\n      return {\n        filterPopovers: {\n          ...old.filterPopovers,\n          [scopeId]: { ...prev, draft: nextDraft }\n        }\n      }\n    }),\n\n  resetFilterDraft: (scopeId, initial) =>\n    set(old => {\n      const prev = old.filterPopovers[scopeId] ?? emptyPopoverState\n      return {\n        filterPopovers: {\n          ...old.filterPopovers,\n          [scopeId]: { ...prev, draft: initial }\n        }\n      }\n    })\n}))\n"],"names":["DEFAULT_FILTER_SCOPE","emptyPopoverState","selectFilterPopover","scopeId","state","useTableStore","create","set","get","selection","old","sorting","sizing","value","open","prev","draft","nextDraft","initial"],"mappings":";AAeO,MAAMA,IAAuB,WAE9BC,IAAwC,EAAE,MAAM,IAAO,OAAO,CAAA,EAAC,GAgCxDC,IACX,CAACC,MACD,CAACC,MACCA,EAAM,eAAeD,CAAO,KAAKF,GAExBI,IAAgBC,EAAmB,CAACC,GAAKC,OAAS;AAAA,EAC7D,cAAc,CAAA;AAAA,EACd,SAAS,CAAA;AAAA,EACT,cAAc,CAAA;AAAA,EACd,cAAc;AAAA,EACd,eAAe,CAAA;AAAA,EAEf,gBAAgB,CAAA;AAAA,EAEhB,iBAAiB,CAAAC,MACfF,EAAI,CAAAG,OAAQ;AAAA,IACV,cAAc,OAAOD,KAAc,aAAaA,EAAUC,EAAI,YAAY,IAAID;AAAA,EAAA,EAC9E;AAAA,EAEJ,YAAY,CAAAE,MACVJ,EAAI,CAAAG,OAAQ;AAAA,IACV,SAAS,OAAOC,KAAY,aAAaA,EAAQD,EAAI,OAAO,IAAIC;AAAA,EAAA,EAChE;AAAA,EAEJ,iBAAiB,CAAAC,MACfL,EAAI,CAAAG,OAAQ;AAAA,IACV,cAAc,OAAOE,KAAW,aAAaA,EAAOF,EAAI,YAAY,IAAIE;AAAA,EAAA,EACxE;AAAA,EAEJ,iBAAiB,CAAAC,MACfN,EAAI,CAAAG,OAAQ;AAAA,IACV,cAAc,OAAOG,KAAU,aAAaA,EAAMH,EAAI,YAAY,IAAIG;AAAA,EAAA,EACtE;AAAA,EAEJ,kBAAkB,CAAAA,MAChBN,EAAI,CAAAG,OAAQ;AAAA,IACV,eAAe,OAAOG,KAAU,aAAaA,EAAMH,EAAI,aAAa,IAAIG;AAAA,EAAA,EACxE;AAAA,EAEJ,kBAAkB,CAACV,MAAoBK,IAAM,eAAeL,CAAO,KAAKF;AAAA,EAExE,sBAAsB,CAACE,GAASW,MAC9BP,EAAI,CAAAG,MAAO;AACT,UAAMK,IAAOL,EAAI,eAAeP,CAAO,KAAKF;AAC5C,WAAO;AAAA,MACL,gBAAgB;AAAA,QACd,GAAGS,EAAI;AAAA,QACP,CAACP,CAAO,GAAG,EAAE,GAAGY,GAAM,MAAAD,EAAA;AAAA,MAAK;AAAA,IAC7B;AAAA,EAEJ,CAAC;AAAA,EAEH,gBAAgB,CAACX,GAASa,MACxBT,EAAI,CAAAG,MAAO;AACT,UAAMK,IAAOL,EAAI,eAAeP,CAAO,KAAKF,GACtCgB,IAAY,OAAOD,KAAU,aAAaA,EAAMD,EAAK,KAAK,IAAIC;AACpE,WAAO;AAAA,MACL,gBAAgB;AAAA,QACd,GAAGN,EAAI;AAAA,QACP,CAACP,CAAO,GAAG,EAAE,GAAGY,GAAM,OAAOE,EAAA;AAAA,MAAU;AAAA,IACzC;AAAA,EAEJ,CAAC;AAAA,EAEH,kBAAkB,CAACd,GAASe,MAC1BX,EAAI,CAAAG,MAAO;AACT,UAAMK,IAAOL,EAAI,eAAeP,CAAO,KAAKF;AAC5C,WAAO;AAAA,MACL,gBAAgB;AAAA,QACd,GAAGS,EAAI;AAAA,QACP,CAACP,CAAO,GAAG,EAAE,GAAGY,GAAM,OAAOG,EAAA;AAAA,MAAQ;AAAA,IACvC;AAAA,EAEJ,CAAC;AACL,EAAE;"}