{"version":3,"file":"scroll.cjs","sources":["../../../../../../src/mods/react/hooks/queries/scroll.ts"],"sourcesContent":["import { Option } from \"@hazae41/option\";\nimport { Err, Ok } from \"@hazae41/result\";\nimport { Arrays } from \"libs/arrays/arrays.js\";\nimport { useRenderRef } from \"libs/react/ref.js\";\nimport { Time } from \"libs/time/time.js\";\nimport { CooldownError, MissingFetcherError, MissingKeyError } from \"mods/core/core.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Scroll } from \"mods/scroll/helper.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nexport function useScrollQuery(factory, deps) {\n    const schema = useMemo(() => {\n        return factory(...deps);\n    }, deps);\n    if (schema == null)\n        return useSkeletonScrollQuery();\n    if (schema.settings.fetcher == null)\n        return useFetcherlessScrollQuery(schema.settings);\n    return useFetcherfulScrollQuery(schema.settings);\n}\nexport function useSkeletonScrollQuery() {\n    const core = useCore().unwrap();\n    useRenderRef(undefined);\n    const cacheKey = useMemo(() => {\n        // NOOP\n    }, [undefined]);\n    useState(0);\n    useRef();\n    useRef();\n    useMemo(() => {\n        // NOOP\n    }, [core, cacheKey]);\n    useCallback(() => {\n        // NOOP\n    }, [core, cacheKey]);\n    useCallback(() => {\n        // NOOP\n    }, [core, cacheKey]);\n    useEffect(() => {\n        // NOOP\n    }, [core, cacheKey]);\n    useEffect(() => {\n        // NOOP\n    }, [core, cacheKey]);\n    const mutate = useCallback(async (mutator) => {\n        return new Err(new MissingKeyError());\n    }, [core, cacheKey]);\n    const clear = useCallback(async () => {\n        return new Err(new MissingKeyError());\n    }, [core, cacheKey]);\n    const fetch = useCallback(async (aborter = new AbortController()) => {\n        return new Err(new MissingKeyError());\n    }, [core, cacheKey]);\n    const refetch = useCallback(async (aborter = new AbortController()) => {\n        return new Err(new MissingKeyError());\n    }, [core, cacheKey]);\n    const scroll = useCallback(async (aborter = new AbortController()) => {\n        return new Err(new MissingKeyError());\n    }, [core, cacheKey]);\n    const suspend = useCallback(async (aborter = new AbortController()) => {\n        return new Err(new MissingKeyError());\n    }, [core, cacheKey]);\n    const peek = useCallback(() => {\n        return undefined;\n    }, [undefined, undefined]);\n    return { mutate, clear, fetch, refetch, scroll, suspend, peek };\n}\n/**\n * Scroll query\n * @param scroller\n * @param fetcher\n * @param settings\n * @returns\n */\nexport function useFetcherlessScrollQuery(settings) {\n    const core = useCore().unwrap();\n    const settingsRef = useRenderRef({ ...core.settings, ...settings });\n    const cacheKey = useMemo(() => {\n        return Scroll.getCacheKey(settings.key, settingsRef.current);\n    }, [settings.key]);\n    const [, setCounter] = useState(0);\n    const stateRef = useRef();\n    const aborterRef = useRef();\n    useMemo(() => {\n        stateRef.current = core.getStateSync(cacheKey);\n        aborterRef.current = core.getAborterSync(cacheKey);\n    }, [core, cacheKey]);\n    const setState = useCallback((state) => {\n        stateRef.current = state;\n        setCounter(c => c + 1);\n    }, [core, cacheKey]);\n    const setAborter = useCallback((aborter) => {\n        aborterRef.current = aborter;\n        setCounter(c => c + 1);\n    }, [core, cacheKey]);\n    useEffect(() => {\n        if (stateRef.current != null)\n            return;\n        core.get(cacheKey, settingsRef.current).then(setState);\n    }, [core, cacheKey]);\n    useEffect(() => {\n        const offState = core.onState.addListener(cacheKey, e => setState(e.detail));\n        const offAborter = core.onAborter.addListener(cacheKey, e => setAborter(e.detail));\n        core.increment(cacheKey, settingsRef.current);\n        return () => {\n            core.decrement(cacheKey, settingsRef.current);\n            offState();\n            offAborter();\n        };\n    }, [core, cacheKey]);\n    const mutate = useCallback(async (mutator) => {\n        return new Ok(await core.mutate(cacheKey, mutator, settingsRef.current));\n    }, [core, cacheKey]);\n    const clear = useCallback(async () => {\n        return new Ok(await core.delete(cacheKey, settingsRef.current));\n    }, [core, cacheKey]);\n    const fetch = useCallback(async (aborter = new AbortController()) => {\n        return new Ok(new Err(new MissingFetcherError()));\n    }, [core, cacheKey]);\n    const refetch = useCallback(async (aborter = new AbortController()) => {\n        return new Ok(new Err(new MissingFetcherError()));\n    }, [core, cacheKey]);\n    const scroll = useCallback(async (aborter = new AbortController()) => {\n        return new Ok(new Err(new MissingFetcherError()));\n    }, [core, cacheKey]);\n    const suspend = useCallback(async (aborter = new AbortController()) => {\n        return new Ok(new Err(new MissingFetcherError()));\n    }, [core, cacheKey]);\n    const state = stateRef.current;\n    const aborter = aborterRef.current;\n    const ready = state != null;\n    const fetching = aborter != null;\n    const optimistic = state?.isFake();\n    const current = state?.current;\n    const data = state?.data;\n    const error = state?.error;\n    const real = state?.real;\n    const fake = state?.fake;\n    const peek = useCallback(() => {\n        return Option.mapSync(state?.real?.data?.inner, pages => settings.scroller(Arrays.last(pages)));\n    }, [state?.real?.data, settings.scroller]);\n    return {\n        ...settings,\n        cacheKey,\n        current,\n        data,\n        error,\n        real,\n        fake,\n        ready,\n        optimistic,\n        aborter,\n        fetching,\n        mutate,\n        fetch,\n        refetch,\n        scroll,\n        clear,\n        suspend,\n        peek,\n    };\n}\nexport function useFetcherfulScrollQuery(settings) {\n    const core = useCore().unwrap();\n    const settingsRef = useRenderRef({ ...core.settings, ...settings });\n    const cacheKey = useMemo(() => {\n        return Scroll.getCacheKey(settings.key, settingsRef.current);\n    }, [settings.key]);\n    const [, setCounter] = useState(0);\n    const stateRef = useRef();\n    const aborterRef = useRef();\n    useMemo(() => {\n        stateRef.current = core.getStateSync(cacheKey);\n        aborterRef.current = core.getAborterSync(cacheKey);\n    }, [core, cacheKey]);\n    const setState = useCallback((state) => {\n        stateRef.current = state;\n        setCounter(c => c + 1);\n    }, [core, cacheKey]);\n    const setAborter = useCallback((aborter) => {\n        aborterRef.current = aborter;\n        setCounter(c => c + 1);\n    }, [core, cacheKey]);\n    useEffect(() => {\n        if (stateRef.current != null)\n            return;\n        core.get(cacheKey, settingsRef.current).then(setState);\n    }, [core, cacheKey]);\n    useEffect(() => {\n        const offState = core.onState.addListener(cacheKey, e => setState(e.detail));\n        const offAborter = core.onAborter.addListener(cacheKey, e => setAborter(e.detail));\n        core.increment(cacheKey, settingsRef.current);\n        return () => {\n            core.decrement(cacheKey, settingsRef.current);\n            offState();\n            offAborter();\n        };\n    }, [core, cacheKey]);\n    const mutate = useCallback(async (mutator) => {\n        return new Ok(await core.mutate(cacheKey, mutator, settingsRef.current));\n    }, [core, cacheKey]);\n    const clear = useCallback(async () => {\n        return new Ok(await core.delete(cacheKey, settingsRef.current));\n    }, [core, cacheKey]);\n    const fetch = useCallback(async (aborter = new AbortController()) => {\n        const settings = settingsRef.current;\n        if (Time.isAfterNow(stateRef.current?.real?.current.cooldown))\n            return new Ok(new Ok(new Err(new CooldownError())));\n        const result = await core.fetchOrJoin(cacheKey, aborter, async () => await Scroll.first(core, cacheKey, aborter, settings));\n        return new Ok(new Ok(new Ok(result)));\n    }, [core, cacheKey]);\n    const refetch = useCallback(async (aborter = new AbortController()) => {\n        const settings = settingsRef.current;\n        const result = await core.fetchOrReplace(cacheKey, aborter, async () => await Scroll.first(core, cacheKey, aborter, settings));\n        return new Ok(new Ok(result));\n    }, [core, cacheKey]);\n    const scroll = useCallback(async (aborter = new AbortController()) => {\n        const settings = settingsRef.current;\n        const result = await core.fetchOrReplace(cacheKey, aborter, async () => await Scroll.scroll(core, cacheKey, aborter, settings));\n        return new Ok(new Ok(result));\n    }, [core, cacheKey]);\n    const suspend = useCallback(async (aborter = new AbortController()) => {\n        const settings = settingsRef.current;\n        const result = await core.fetchOrJoin(cacheKey, aborter, async () => await Scroll.first(core, cacheKey, aborter, settings));\n        return new Ok(new Ok(result));\n    }, [core, cacheKey]);\n    const state = stateRef.current;\n    const aborter = aborterRef.current;\n    const ready = state != null;\n    const fetching = aborter != null;\n    const optimistic = state?.isFake();\n    const current = state?.current;\n    const data = state?.data;\n    const error = state?.error;\n    const real = state?.real;\n    const fake = state?.fake;\n    const peek = useCallback(() => {\n        return Option.mapSync(state?.real?.data?.inner, pages => settings.scroller(Arrays.last(pages)));\n    }, [state?.real?.data, settings.scroller]);\n    return {\n        ...settings,\n        cacheKey,\n        current,\n        data,\n        error,\n        real,\n        fake,\n        ready,\n        optimistic,\n        aborter,\n        fetching,\n        mutate,\n        fetch,\n        refetch,\n        scroll,\n        clear,\n        suspend,\n        peek\n    };\n}\n//# sourceMappingURL=scroll.js.map"],"names":["useMemo","core","useCore","useRenderRef","useState","useRef","useCallback","useEffect","Err","MissingKeyError","Scroll","Ok","MissingFetcherError","Option","Arrays","Time","CooldownError","result"],"mappings":"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"}