@hazae41/glacier
Version:
Yet another React data (re)fetching library
1 lines • 1.53 kB
Source Map (JSON)
{"version":3,"file":"use-fallback.mjs","sources":["../../../../../../../src/mods/react/hooks/blocks/use-fallback.ts"],"sourcesContent":["import { Fetched } from \"mods/fetched/fetched.js\"\nimport { ReactQuery } from \"mods/react/types/query.js\"\n\n/**\n * Fallback to given data/error if there is no data/error\n * @example You got some data/error using SSR/ISR and want to display it on first render\n * @example You still want to display something even if the fetcher returned nothing\n * @param query \n * @param fallback \n */\nexport function useFallback<K, D, F>(query: ReactQuery<K, D, F>, factory?: () => Fetched<D, F>) {\n if (factory == null)\n return\n if (query.data != null)\n return\n if (query.error != null)\n return\n\n const fallback = factory()\n\n if (fallback.isData())\n Object.assign(query, { data: fallback })\n\n if (fallback.isFail())\n Object.assign(query, { error: fallback })\n\n Object.assign(query, { current: fallback })\n}"],"names":[],"mappings":"AAGA;;;;;;AAMG;AACa,SAAA,WAAW,CAAU,KAA0B,EAAE,OAA6B,EAAA;IAC5F,IAAI,OAAO,IAAI,IAAI;QACjB,OAAM;AACR,IAAA,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI;QACpB,OAAM;AACR,IAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;QACrB,OAAM;AAER,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAA;IAE1B,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAE1C,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IAE3C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC7C;;;;"}