UNPKG

@thisisagile/easy-react

Version:

Straightforward library building micro applications in react

83 lines 1.97 kB
// src/utils/Hooks.ts import { isPageList, toList, toPageList } from "@thisisagile/easy"; import { useState } from "react"; var useToggle = (initialState = false) => { const [state, setState] = useState(initialState); return [state, () => setState((s) => !s)]; }; var useA = (item = {}) => { const [state, setState] = useState({ isValid: false, ...item }); return [ state, (e) => { setState(e); return e; } ]; }; var useAn = useA; var useOptional = (item) => { const [state, setState] = useState(item); const set = (e) => { setState(e); return e; }; return [state, set, () => set()]; }; var useEntity = useA; var useList = (...items) => { const [state, setState] = useState(toList(...items)); return [ state, (e) => { setState(e); return e; } ]; }; var usePageList = (...items) => { const [pages, setPages] = useState(toPageList(items)); return [ pages, (e) => { setPages(e); return e; } ]; }; var usePaging = (f, options) => { const [list, setList] = usePageList(); const [skip, setSkip] = useState(options?.skip ?? 0); const [take] = useState(options?.take ?? 5); const next = (options2 = { skip, take }) => f(options2).then((items) => { setSkip(skip + take); return setList(toPageList(list.add(items), items)); }); return [list, next, list.length < (list?.total ?? 0), skip, take]; }; var useGet = (f, initial) => { const [item, setItem] = useState(initial ?? {}); const getter = () => f().then((i) => { setItem(i); return i; }); return [item, getter]; }; var useGetList = (f) => { const [list, setList] = usePageList(); const getter = () => f().then((l) => setList(isPageList(l) ? l : toPageList(l, { total: l.length }))); return [list, getter]; }; export { useA, useAn, useEntity, useGet, useGetList, useList, useOptional, usePageList, usePaging, useToggle }; //# sourceMappingURL=Hooks.mjs.map