synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
57 lines (56 loc) • 1.45 kB
JavaScript
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