UNPKG

@thisisagile/easy-react

Version:

Straightforward library building micro applications in react

152 lines (147 loc) 4.93 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { If: () => If, toChildren: () => toChildren, useA: () => useA, useAn: () => useAn, useEntity: () => useEntity, useGet: () => useGet, useGetList: () => useGetList, useList: () => useList, useOnce: () => useOnce, useOptional: () => useOptional, usePageList: () => usePageList, usePaging: () => usePaging, useToggle: () => useToggle }); module.exports = __toCommonJS(src_exports); // src/layout/If.tsx var import_jsx_runtime = require("react/jsx-runtime"); var If = ({ condition, children }) => condition ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children }) : null; // src/utils/Children.ts var import_easy = require("@thisisagile/easy"); var import_react = __toESM(require("react")); var toChildren = (children) => (0, import_easy.toList)(import_react.default.Children.toArray(children).filter(import_easy.isDefined)); // src/utils/Hooks.ts var import_easy2 = require("@thisisagile/easy"); var import_react2 = require("react"); var useToggle = (initialState = false) => { const [state, setState] = (0, import_react2.useState)(initialState); return [state, () => setState((s) => !s)]; }; var useA = (item = {}) => { const [state, setState] = (0, import_react2.useState)({ isValid: false, ...item }); return [ state, (e) => { setState(e); return e; } ]; }; var useAn = useA; var useOptional = (item) => { const [state, setState] = (0, import_react2.useState)(item); const set = (e) => { setState(e); return e; }; return [state, set, () => set()]; }; var useEntity = useA; var useList = (...items) => { const [state, setState] = (0, import_react2.useState)((0, import_easy2.toList)(...items)); return [ state, (e) => { setState(e); return e; } ]; }; var usePageList = (...items) => { const [pages, setPages] = (0, import_react2.useState)((0, import_easy2.toPageList)(items)); return [ pages, (e) => { setPages(e); return e; } ]; }; var usePaging = (f, options) => { const [list, setList] = usePageList(); const [skip, setSkip] = (0, import_react2.useState)(options?.skip ?? 0); const [take] = (0, import_react2.useState)(options?.take ?? 5); const next = (options2 = { skip, take }) => f(options2).then((items) => { setSkip(skip + take); return setList((0, import_easy2.toPageList)(list.add(items), items)); }); return [list, next, list.length < (list?.total ?? 0), skip, take]; }; var useGet = (f, initial) => { const [item, setItem] = (0, import_react2.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((0, import_easy2.isPageList)(l) ? l : (0, import_easy2.toPageList)(l, { total: l.length }))); return [list, getter]; }; // src/utils/useOnce.ts var import_react3 = require("react"); function useOnce(f, options) { const [item, setItem] = (0, import_react3.useState)(options?.initial); (0, import_react3.useEffect)(() => void f().then((i) => setItem(i)), options?.deps ?? []); return [item]; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { If, toChildren, useA, useAn, useEntity, useGet, useGetList, useList, useOnce, useOptional, usePageList, usePaging, useToggle }); //# sourceMappingURL=index.js.map