synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
170 lines (169 loc) • 5.7 kB
JavaScript
import { jsx as n, Fragment as _ } from "react/jsx-runtime";
import "../../../../utils/PermissionLevelToAccessType.js";
import { VALUE_NOT_SET as j } from "../../../../utils/SynapseConstants.js";
import { Suspense as w, useMemo as m } from "react";
import "../../../../synapse-client/SynapseClient.js";
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
import { ColumnTypeEnum as a } from "@sage-bionetworks/synapse-types";
import "../../../../utils/functions/EntityTypeUtils.js";
import { cloneDeep as V, partition as P, sortBy as v, pick as p } from "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "../../../../utils/context/SynapseContext.js";
import d from "../../../../utils/hooks/useGetInfoFromIds.js";
import "@tanstack/react-query";
import "@tanstack/query-core";
import "lodash-es/isEmpty";
import "lodash-es/isEqual";
import "lodash-es/xorWith";
import "@mui/material";
import "@sage-bionetworks/synapse-client";
import { getCorrespondingSelectedFacet as Q, getCorrespondingColumnForFacet as G } from "../../../../utils/functions/queryUtils.js";
import "../../../../utils/hooks/useCookiePreferences.js";
import "../../../../utils/hooks/useSourceAppConfigs.js";
import "universal-cookie";
import "../../../../utils/AppUtils/session/ApplicationSessionContext.js";
import "../../../../utils/context/FullContextProvider.js";
import "../../../../utils/context/DocumentMetadataContext.js";
import '../../../../style/components/_spinner.css';/* empty css */
import "react-router";
import { isFacetColumnValuesRequest as H } from "../../../../utils/types/IsType.js";
import { useQueryContext as k } from "../../../QueryContext/QueryContext.js";
import "use-deep-compare-effect";
import { useSuspenseGetQueryMetadata as Y } from "../../../QueryWrapper/useGetQueryMetadata.js";
import { useQueryVisualizationContext as B } from "../../../QueryVisualizationWrapper/QueryVisualizationContext.js";
import { EnumFacetFilterSkeleton as z } from "./EnumFacetFilterSkeleton.js";
import J from "./EnumFacetFilterUI.js";
import { getAllIsSelected as K, valueToLabel as W } from "./EnumFacetFilterUtils.js";
function X(l) {
const {
facet: e,
containerAs: s = "Collapsible",
dropdownType: C = "Icon",
hideCollapsible: A = !1,
defaultShowAllValues: N = !1
} = l, {
nextQueryRequest: i,
addValueToSelectedFacet: R,
removeSelectedFacet: D,
removeValueFromSelectedFacet: b,
resetDebounceTimer: U
} = k(), { data: f } = Y(), { getColumnDisplayName: h } = B(), T = m(() => {
const t = Q(
e,
V(i.query.selectedFacets)
);
if (t && !H(t)) {
console.error(
"The facet rendered in EnumFacetFilter is not a FacetColumnValuesRequest",
e
);
return;
}
return t;
}, [e, i.query.selectedFacets]), L = K(
V(i),
e
), o = f.columnModels ? G(e, f.columnModels) : void 0, F = m(() => {
switch (o?.columnType) {
case a.DOUBLE:
case a.DATE:
case a.INTEGER:
return !0;
default:
return !1;
}
}, [o]), g = o?.columnType === a.USERID || o?.columnType === a.USERID_LIST ? e.facetValues.map((t) => t.value) : [], y = d({
ids: g,
type: "USER_PROFILE"
}), q = o?.columnType === a.ENTITYID || o?.columnType === a.ENTITYID_LIST ? e.facetValues.map((t) => t.value) : [], S = d({
ids: q,
type: "ENTITY_HEADER"
}), x = o?.columnType === a.EVALUATIONID ? e.facetValues.map((t) => t.value) : [], I = d({
ids: x,
type: "EVALUATION_QUEUE"
}), M = m(() => {
const t = e.facetValues.map(
(r) => ({
...r,
// Selected status should be based on the 'nextQuery', not the result data
// This ensures the checkboxes respond instantly to user interaction, like while waiting for multiple changes to debounce
isSelected: T?.facetValues.includes(r.value) ?? !1,
displayText: W(
r,
y,
S,
I
)
})
), E = P(
t,
(r) => r.value === j
), O = E[0], c = E[1];
let u = c;
return (o == null || o.facetSortConfig == null) && (F ? u = v(c, (r) => Number(r.value)) : u = v(
c,
(r) => r.displayText.toLowerCase()
)), [...u, ...O];
}, [
e.facetValues,
o,
T?.facetValues,
y,
S,
I,
F
]);
return o ? /* @__PURE__ */ n(
J,
{
facetTitle: h(e.columnName, e.jsonPath),
filterIsActive: !L,
facetValues: M,
containerAs: s,
dropdownType: C,
hideCollapsible: A,
defaultShowAllValues: N,
onHoverOverValue: () => {
U();
},
onAddValueToSelection: (t) => {
R(
p(e, ["columnName", "jsonPath"]),
t,
{ debounce: !0 }
);
},
onRemoveValueFromSelection: (t) => {
b(
p(e, ["columnName", "jsonPath"]),
t,
{ debounce: !0 }
);
},
onRemoveAllFacetSelections: () => D(p(e, ["columnName", "jsonPath"])),
canMultiSelect: !0
}
) : /* @__PURE__ */ n(_, {});
}
function _e(l) {
const { containerAs: e = "Collapsible", dropdownType: s = "Icon" } = l;
return /* @__PURE__ */ n(
w,
{
fallback: /* @__PURE__ */ n(
z,
{
containerAs: e,
dropdownType: s
}
),
children: /* @__PURE__ */ n(X, { ...l })
}
);
}
export {
_e as EnumFacetFilter
};
//# sourceMappingURL=EnumFacetFilter.js.map