UNPKG

@matthew.ngo/react-filter-pilot

Version:

Powerful filtering, pagination, and sorting for React with TanStack Query integration

1 lines 3.32 kB
{"version":3,"sources":["../../src/adapters/universal.ts"],"names":["createUrlHandler","options","getUrl","setUrl","baseUrl","__name","currentUrl","params","url","value","key","useHashUrlHandler","urlObj","createMemoryUrlHandler","initialUrl"],"mappings":";AAKO,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAA,SAASA,CAAiBC,CAAAA,CAAAA,CAIlB,CACb,KAAM,CAAE,MAAAC,CAAAA,CAAAA,CAAQ,MAAAC,CAAAA,CAAAA,CAAQ,QAAAC,CAAU,CAAA,MAAA,CAAO,QAAS,CAAA,MAAO,EAAIH,CAE7D,CAAA,OAAO,CACL,SAAA,CAAWI,CAAA,CAAA,IAAM,CACf,MAAMC,EAAaJ,CAAO,EAAA,CAE1B,OADY,IAAI,IAAII,CAAYF,CAAAA,CAAO,CAC5B,CAAA,YACb,EAJW,WAKX,CAAA,CAAA,SAAA,CAAWC,CAACE,CAAAA,CAAAA,EAA4B,CACtC,MAAMD,CAAaJ,CAAAA,CAAAA,GACbM,CAAM,CAAA,IAAI,GAAIF,CAAAA,CAAAA,CAAYF,CAAO,CAGvCI,CAAAA,CAAAA,CAAI,MAAS,CAAA,EAAA,CAGbD,EAAO,OAAQ,CAAA,CAACE,CAAOC,CAAAA,CAAAA,GAAQ,CAC7BF,CAAI,CAAA,YAAA,CAAa,GAAIE,CAAAA,CAAAA,CAAKD,CAAK,EACjC,CAAC,CAEDN,CAAAA,CAAAA,CAAOK,EAAI,QAAS,EAAC,EACvB,CAAA,CAbW,YAcb,CACF,CA5BgBH,CAAAL,CAAAA,CAAAA,CAAA,kBAiCT,CAAA,CAAA,SAASW,CAAgC,EAAA,CAC9C,OAAOX,CAAiB,CAAA,CACtB,MAAQK,CAAAA,CAAAA,CAAA,IAAM,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,CAAC,CAAK,EAAA,GAAA,CAAvC,QACR,CAAA,CAAA,MAAA,CAAQA,EAACG,CAAQ,EAAA,CACf,MAAMI,CAAAA,CAAS,IAAI,GAAIJ,CAAAA,CAAAA,CAAK,MAAO,CAAA,QAAA,CAAS,MAAM,CAClD,CAAA,MAAA,CAAO,QAAS,CAAA,IAAA,CAAOI,EAAO,QAAWA,CAAAA,CAAAA,CAAO,OAClD,CAAA,CAHQ,QAIV,CAAA,CAAC,CACH,CARgBP,EAAAM,CAAA,CAAA,mBAAA,CAAA,CAaT,SAASE,CAAAA,CAAuBC,EAAa,GAAiB,CAAA,CACnE,IAAIR,CAAAA,CAAaQ,EAEjB,OAAOd,CAAAA,CAAiB,CACtB,MAAA,CAAQK,EAAA,IAAMC,CAAAA,CAAN,QACR,CAAA,CAAA,MAAA,CAAQD,EAACG,CAAQ,EAAA,CACfF,CAAaE,CAAAA,EACf,EAFQ,QAGV,CAAA,CAAC,CACH,CATgBH,EAAAQ,CAAA,CAAA,wBAAA,CAAA","file":"universal.cjs","sourcesContent":["import { UrlHandler } from '../types';\n\n/**\n * Universal URL handler with custom getter and setter\n */\nexport function createUrlHandler(options: {\n getUrl: () => string;\n setUrl: (url: string) => void;\n baseUrl?: string;\n}): UrlHandler {\n const { getUrl, setUrl, baseUrl = window.location.origin } = options;\n\n return {\n getParams: () => {\n const currentUrl = getUrl();\n const url = new URL(currentUrl, baseUrl);\n return url.searchParams;\n },\n setParams: (params: URLSearchParams) => {\n const currentUrl = getUrl();\n const url = new URL(currentUrl, baseUrl);\n \n // Clear existing search params\n url.search = '';\n \n // Set new params\n params.forEach((value, key) => {\n url.searchParams.set(key, value);\n });\n \n setUrl(url.toString());\n },\n };\n}\n\n/**\n * Hash-based URL handler (for hash routing)\n */\nexport function useHashUrlHandler(): UrlHandler {\n return createUrlHandler({\n getUrl: () => window.location.hash.slice(1) || '/',\n setUrl: (url) => {\n const urlObj = new URL(url, window.location.origin);\n window.location.hash = urlObj.pathname + urlObj.search;\n },\n });\n}\n\n/**\n * Memory-based URL handler (for testing or React Native)\n */\nexport function createMemoryUrlHandler(initialUrl = '/'): UrlHandler {\n let currentUrl = initialUrl;\n\n return createUrlHandler({\n getUrl: () => currentUrl,\n setUrl: (url) => {\n currentUrl = url;\n },\n });\n}"]}