{"version":3,"file":"useItemsPerPage.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useItemsPerPage.ts"],"sourcesContent":["import { useLocalStorage } from './useLocalStorage';\n\nexport const itemsPerPageOptions = [10, 15, 25, 50, 100] as const;\nexport type ItemsPerPageOption = (typeof itemsPerPageOptions)[number];\n\nexport const DEFAULT_ITEMS_PER_PAGE = 15;\n\nexport const useItemsPerPage = ({\n  viewId,\n  defaultItemsPerPage = DEFAULT_ITEMS_PER_PAGE,\n}: {\n  viewId: string;\n  defaultItemsPerPage?: ItemsPerPageOption;\n}) => {\n  const [itemsPerPage, setItemsPerPage] = useLocalStorage<number>(`${viewId}_itemsPerPage`, defaultItemsPerPage);\n\n  const handleItemsPerPageChange = (e: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => {\n    const value = parseInt(e.target.value, 10);\n    if (!Number.isNaN(value)) {\n      setItemsPerPage(value);\n    }\n  };\n\n  return [itemsPerPage, handleItemsPerPageChange] as const;\n};\n"],"names":["itemsPerPageOptions","DEFAULT_ITEMS_PER_PAGE","useItemsPerPage","viewId","defaultItemsPerPage","itemsPerPage","setItemsPerPage","useLocalStorage","handleItemsPerPageChange","e","value","parseInt","target","Number","isNaN"],"mappings":";;MAEaA,mBAAAA,GAAsB;AAAC,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA;;AAG7C,MAAMC,yBAAyB;AAE/B,MAAMC,kBAAkB,CAAC,EAC9BC,MAAM,EACNC,mBAAAA,GAAsBH,sBAAsB,EAI7C,GAAA;IACC,MAAM,CAACI,cAAcC,eAAAA,CAAgB,GAAGC,gBAAwB,CAAA,EAAGJ,MAAAA,CAAO,aAAa,CAAC,EAAEC,mBAAAA,CAAAA;AAE1F,IAAA,MAAMI,2BAA2B,CAACC,CAAAA,GAAAA;AAChC,QAAA,MAAMC,QAAQC,QAAAA,CAASF,CAAAA,CAAEG,MAAM,CAACF,KAAK,EAAE,EAAA,CAAA;AACvC,QAAA,IAAI,CAACG,MAAAA,CAAOC,KAAK,CAACJ,KAAAA,CAAAA,EAAQ;YACxBJ,eAAAA,CAAgBI,KAAAA,CAAAA;AAClB,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AAACL,QAAAA,YAAAA;AAAcG,QAAAA;AAAyB,KAAA;AACjD;;;;"}