{"version":3,"file":"provider.mjs","sources":["../../../src/context/filter/provider.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { createZustandContext, stateSetterHandler } from '$utils';\nimport type { TableBuilderFiltersActions, TableBuilderFiltersState } from './model';\n\nconst [Provider, useTableBuilderFilters] = createZustandContext<\n  TableBuilderFiltersState,\n  TableBuilderFiltersActions\n>();\n\nexport { useTableBuilderFilters };\n\nexport const TableBuilderFiltersProvider: React.FC<\n  React.PropsWithChildren<{ name: string }>\n> = ({ name, children }) => (\n  <Provider\n    name={`table-builder-filter - ${name}`}\n    initialState={useMemo(() => ({ filters: [], panel: false }), [])}\n    actions={useCallback(\n      (set, get) => ({\n        setFilters: stateSetterHandler(set, 'filters'),\n        setPanel: stateSetterHandler(set, 'panel'),\n        addFilter: filter => {\n          if (get().filters.findIndex(f => f.field === filter.field) !== -1) return;\n          get().setFilters(v => [...v, filter]);\n        },\n        deleteFilter: field => {\n          get().setFilters(v => v.filter(el => el.field !== field));\n        },\n        editFilter: filter => {\n          get().setFilters(e => e.map(el => (el.field === filter.field ? filter : el)));\n        },\n      }),\n      []\n    )}\n  >\n    {children}\n  </Provider>\n);\n"],"names":["Provider","useTableBuilderFilters","createZustandContext","TableBuilderFiltersProvider","name","children","_jsx","initialState","useMemo","filters","panel","actions","useCallback","set","get","setFilters","stateSetterHandler","setPanel","addFilter","filter","findIndex","f","field","v","deleteFilter","el","editFilter","e","map"],"mappings":";;;;;AAIM,MAAA,CAACA,QAAUC,EAAAA,sBAAAA,CAAuB,GAAGC,oBAAAA,GAAAA;AAOpC,MAAMC,8BAET,CAAC,EAAEC,OAAMC,QAAAA,GAAU,iBACrBC,GAACN,CAAAA,QAAAA,EAAAA;AACCI,QAAAA,IAAAA,EAAM,CAAC,uBAAuB,EAAEA,IAAAA,CAAK,CAAC;QACtCG,YAAcC,EAAAA,OAAAA,CAAQ,KAAO;AAAEC,gBAAAA,OAAAA,EAAS,EAAE;AAAEC,gBAAAA,KAAAA,EAAO,KAAK;AAAC,aAAA,GAAI,EAAE,CAAA;AAC/DC,QAAAA,OAAAA,EAASC,WACP,CAAA,CAACC,GAAKC,EAAAA,GAAAA,IAAS;AACbC,gBAAAA,UAAAA,EAAYC,mBAAmBH,GAAK,EAAA,SAAA,CAAA;AACpCI,gBAAAA,QAAAA,EAAUD,mBAAmBH,GAAK,EAAA,OAAA,CAAA;AAClCK,gBAAAA,SAAAA,EAAWC,CAAAA,MAAU,GAAA;AACnB,oBAAA,IAAIL,GAAML,EAAAA,CAAAA,OAAO,CAACW,SAAS,CAACC,CAAAA,CAAAA,GAAKA,CAAEC,CAAAA,KAAK,KAAKH,MAAAA,CAAOG,KAAK,CAAA,KAAM,CAAC,CAAG,EAAA,OAAA;oBACnER,GAAMC,EAAAA,CAAAA,UAAU,CAACQ,CAAAA,CAAK,GAAA;AAAIA,4BAAAA,GAAAA,CAAAA;AAAGJ,4BAAAA,MAAAA;AAAO,yBAAA,CAAA,CAAA;AACtC,iBAAA;AACAK,gBAAAA,YAAAA,EAAcF,CAAAA,KAAS,GAAA;oBACrBR,GAAMC,EAAAA,CAAAA,UAAU,CAACQ,CAAAA,CAAKA,GAAAA,CAAAA,CAAEJ,MAAM,CAACM,CAAAA,EAAAA,GAAMA,EAAGH,CAAAA,KAAK,KAAKA,KAAAA,CAAAA,CAAAA,CAAAA;AACpD,iBAAA;AACAI,gBAAAA,UAAAA,EAAYP,CAAAA,MAAU,GAAA;AACpBL,oBAAAA,GAAAA,EAAAA,CAAMC,UAAU,CAACY,CAAAA,CAAKA,GAAAA,CAAAA,CAAEC,GAAG,CAACH,CAAAA,EAAOA,GAAAA,EAAAA,CAAGH,KAAK,KAAKH,MAAAA,CAAOG,KAAK,GAAGH,SAASM,EAAE,CAAA,CAAA,CAAA;AAC5E,iBAAA;AACF,aAAA,GACA,EAAE,CAAA;AAGHpB,QAAAA,QAAAA,EAAAA,QAAAA;AAEH,KAAA;;;;"}