UNPKG

synapse-react-client

Version:

[![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synapse-react-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettie

57 lines (56 loc) 1.45 kB
import { Map as p } from "immutable"; import { isEqual as m } from "lodash-es"; import { useCallback as s, useReducer as a } from "react"; function S(o, f = p()) { const u = s( (e, t) => { const i = t.get(e.targetId); return i == null ? !1 : m(e, i); }, [] ), g = s( (e, t) => { if (t.type === "setSelection") return t.selection; if (t.type === "setInitialVersion") { const i = e.get(t.entityId); return i != null && i.targetVersionNumber == null ? e.set(t.entityId, { targetId: t.entityId, targetVersionNumber: t.version }) : e; } if (t.type === "toggleSelection") { let i = t.toggledReferences; return e.withMutations((l) => { Array.isArray(i) || (i = [i]), i.forEach((r) => { u(r, e) ? l.delete(r.targetId) : (o || l.clear(), l.set(r.targetId, r)); }); }); } return e; }, [u, o] ), [c, n] = a( g, f ), d = s( (e) => n({ type: "toggleSelection", toggledReferences: e }), [] ), y = s( (e) => n({ type: "setSelection", selection: e }), [] ), I = s( (e, t) => n({ type: "setInitialVersion", entityId: e, version: t }), [] ); return { selectedEntities: c, toggleSelection: d, setSelection: y, setInitialVersion: I }; } export { S as useEntitySelection }; //# sourceMappingURL=useEntitySelection.js.map