{"version":3,"file":"insider-funds.a17da5f9.js","mappings":"o0CAmFA,SAAeA,EAAAA,EAAAA,KAnEf,WAAiB,IAAAC,EAAAC,EAAAC,EACf,MAAMC,GAAcC,EAAAA,EAAAA,MACdC,GAAuBC,EAAAA,EAAAA,MACrBC,KAAMC,EAAW,OAAEC,EAAM,KAAEC,GAASL,EAAqBM,WAC3DC,ECLD,SAAyBC,GAAgE,IAA/D,KAAEN,EAAI,OAAEE,EAAM,KAAEC,EAAI,YAAEP,EAAW,kBAAEW,GAA0BD,EAkB5F,OAjBuBE,EAAAA,EAAAA,GAAS,CAC9BC,SAAU,CAAC,YAAaT,EAAME,EAAQC,GACtCO,QAASC,UACPC,EAAAA,EAAAA,IACE,oBAAmBC,EAAAA,EAAAA,GAAkB,CAAEb,OAAME,SAAQC,YAEzDP,YAAaA,QAAAA,OAAekB,EAC5BC,UAAWA,KACLR,GACFS,OAAOC,SAAS,CAAEC,IAAK,GACzB,EAEFC,kBAAkB,EAClBC,UAAWC,EAAAA,GACXC,UAAWD,EAAAA,IAIf,CDdwBE,CAAiB,CACrCvB,KAAMC,EACNL,cACAM,SACAC,OACAI,mBAAmB,KAGf,WAAEiB,EAAa,GAAwB,QAArB/B,EAAGY,EAAcoB,YAAI,IAAAhC,EAAAA,EAAI,CAAC,EAC5CiC,EAAiBC,EAAAA,SACrB,KAAMC,EAAAA,EAAAA,IAAkB,CAAEC,MAAOL,EAAYvB,cAAa6B,oBAAqB,KAC/E,CAACN,EAAYvB,IAET8B,EAAiC,QAA5BrC,EAAqB,QAArBC,EAAGU,EAAcoB,YAAI,IAAA9B,OAAA,EAAlBA,EAAoBoC,aAAK,IAAArC,EAAAA,EAAI,GAE3C,OACEsC,EAAAA,EAAAA,KAACC,EAAAA,EAAM,CACLC,eAAeF,EAAAA,EAAAA,KAACG,EAAAA,EAAsB,CAACC,SAAS,UAChDC,cAAcL,EAAAA,EAAAA,KAACM,EAAAA,EAAuB,CAACC,KAAMC,EAAAA,GAAYC,MAAOtC,KAAMA,IAASuC,SAE7D,IAAjBX,EAAMY,QACLX,EAAAA,EAAAA,KAACY,EAAAA,EAAa,CAAAF,SAAC,+DAEfG,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAJ,SAAA,EACEV,EAAAA,EAAAA,KAAA,OAAKe,UAAU,wCAAuCL,SACnDX,EAAMiB,KAAKC,IACVjB,EAAAA,EAAAA,KAACkB,EAAAA,GAAQ,CAEPC,MAAOF,EAASE,MAChBC,gBAAiBH,EAASG,gBAC1BC,qBAAsBnD,QAAAA,OAAUY,EAChCwC,KAAMxD,EAAqByD,sBAAsB,CAC/ChB,KAAMC,EAAAA,GAAYgB,YAClBC,OAAQ,CAAEC,WAAYT,EAASE,MAAMO,cAEvCC,eAAe3B,EAAAA,EAAAA,KAAC4B,EAAAA,GAAmB,CAACC,eAAgBZ,EAASY,kBARxDZ,EAASE,MAAMO,iBAa1B1B,EAAAA,EAAAA,KAAA,OAAKe,UAAU,0DAAyDL,UACtEV,EAAAA,EAAAA,KAAC8B,EAAAA,EAAU,CACTC,UAAW9D,EAAc,EACzB+D,aAAc/D,EAAcuB,EAC5ByC,YAAcjE,GAASA,GAAQwB,EAC/B0C,aAAcxC,EACdzB,YAAaA,EACbkE,UAAW9D,EAAc+D,WACzBC,uBAAyBrE,IAAI,CAC3BsE,GAAIC,EAAAA,GACJC,GAAI1E,EAAqByD,sBAAsB,CAC7ChB,KAAMC,EAAAA,GAAYC,MAClBgB,OAAQ,IAAK3D,EAAqBM,WAAYJ,oBAShE,G","sources":["webpack://@finviz/website/./js/main/modules/insider-trading/routes/Funds.tsx","webpack://@finviz/website/./js/main/modules/insider-trading/hooks/useFundsListData.ts"],"sourcesContent":["import * as React from 'react'\r\nimport { Link, useLoaderData } from 'react-router-dom'\r\n\r\nimport { withQueryClientContext } from '../../../../app/shared/components/QueryClientContext'\r\nimport { Pagination } from '../../../components/pagination'\r\nimport { getStepPagination } from '../../../hooks/use-table-pagination'\r\nimport type { ApiPaginatedResponse } from '../../../types'\r\nimport { CenteredAlert } from '../components/CenteredAlert'\r\nimport Layout from '../components/Layout'\r\nimport { FundHoldingsSection, ListCard } from '../components/ListCard'\r\nimport { ManagersAndFundsSearch } from '../components/ManagersAndFundsSearch'\r\nimport { ManagersFundsSortSelect } from '../components/ManagersFundsSortSelect'\r\nimport { InsiderView, ManagerFundItemData } from '../constants'\r\nimport { useFundsListData } from '../hooks/useFundsListData'\r\nimport { useInsiderTradingRouter } from '../hooks/useInsiderTradingRouter'\r\n\r\nfunction Funds() {\r\n const initialData = useLoaderData() as ApiPaginatedResponse | null\r\n const insiderTradingRouter = useInsiderTradingRouter()\r\n const { page: currentPage, search, sort } = insiderTradingRouter.viewParams\r\n const fundsListData = useFundsListData({\r\n page: currentPage,\r\n initialData,\r\n search,\r\n sort,\r\n shouldResetScroll: true,\r\n })\r\n\r\n const { totalPages = 0 } = fundsListData.data ?? {}\r\n const stepNavigation = React.useMemo(\r\n () => getStepPagination({ pages: totalPages, currentPage, maxSidePreviewPages: 3 }),\r\n [totalPages, currentPage]\r\n )\r\n const items = fundsListData.data?.items ?? []\r\n\r\n return (\r\n }\r\n rightContent={}\r\n >\r\n {items.length === 0 ? (\r\n No funds match your search. Try using different keywords.\r\n ) : (\r\n <>\r\n
\r\n {items.map((fundItem) => (\r\n }\r\n />\r\n ))}\r\n
\r\n\r\n
\r\n 1}\r\n canGoForward={currentPage < totalPages}\r\n canGoToPage={(page) => page <= totalPages}\r\n visiblePages={stepNavigation}\r\n currentPage={currentPage}\r\n isLoading={fundsListData.isFetching}\r\n getPageItemButtonProps={(page) => ({\r\n as: Link,\r\n to: insiderTradingRouter.getInsiderTradingLink({\r\n view: InsiderView.Funds,\r\n params: { ...insiderTradingRouter.viewParams, page },\r\n }),\r\n })}\r\n />\r\n
\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default withQueryClientContext(Funds)\r\n","import { useQuery } from '@tanstack/react-query'\r\n\r\nimport { encodeQueryString } from '../../../../app/queryString'\r\nimport { apiRequest } from '../../../services/api'\r\nimport { ApiPaginatedResponse } from '../../../types'\r\nimport { DEFAULT_QUERY_CACHE_TIME_IN_MS, ManagerFundItemData } from '../constants'\r\n\r\ninterface Props {\r\n page: number\r\n search?: string\r\n sort?: string\r\n initialData: ApiPaginatedResponse | null\r\n shouldResetScroll?: boolean\r\n}\r\n\r\nexport function useFundsListData({ page, search, sort, initialData, shouldResetScroll }: Props) {\r\n const fundsListQuery = useQuery({\r\n queryKey: ['fundsList', page, search, sort],\r\n queryFn: async () =>\r\n apiRequest>(\r\n `/api/funds/list?${encodeQueryString({ page, search, sort })}`\r\n ),\r\n initialData: initialData ?? undefined,\r\n onSuccess: () => {\r\n if (shouldResetScroll) {\r\n window.scrollTo({ top: 0 })\r\n }\r\n },\r\n keepPreviousData: true,\r\n staleTime: DEFAULT_QUERY_CACHE_TIME_IN_MS,\r\n cacheTime: DEFAULT_QUERY_CACHE_TIME_IN_MS,\r\n })\r\n\r\n return fundsListQuery\r\n}\r\n"],"names":["withQueryClientContext","_fundsListData$data","_fundsListData$data$i","_fundsListData$data2","initialData","useLoaderData","insiderTradingRouter","useInsiderTradingRouter","page","currentPage","search","sort","viewParams","fundsListData","_ref","shouldResetScroll","useQuery","queryKey","queryFn","async","apiRequest","encodeQueryString","undefined","onSuccess","window","scrollTo","top","keepPreviousData","staleTime","DEFAULT_QUERY_CACHE_TIME_IN_MS","cacheTime","useFundsListData","totalPages","data","stepNavigation","React","getStepPagination","pages","maxSidePreviewPages","items","_jsx","Layout","middleContent","ManagersAndFundsSearch","searchIn","rightContent","ManagersFundsSortSelect","view","InsiderView","Funds","children","length","CenteredAlert","_jsxs","_Fragment","className","map","fundItem","ListCard","filer","latestSummaries","highlightHeaderLabel","href","getInsiderTradingLink","FundDetails","params","investorId","bottomSection","FundHoldingsSection","topInvestments","Pagination","canGoBack","canGoForward","canGoToPage","visiblePages","isLoading","isFetching","getPageItemButtonProps","as","Link","to"],"sourceRoot":""}