@thisisagile/easy-react
Version:
Straightforward library building micro applications in react
152 lines (147 loc) • 4.93 kB
JavaScript
;
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