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

189 lines (188 loc) 6.66 kB
import { jsx as s, jsxs as C } from "react/jsx-runtime"; import { isSingleNotSetValue as q, getCorrespondingColumnForFacet as T, facetObjectMatchesDefinition as v } from "../../../utils/functions/queryUtils.js"; import { groupBy as M, union as E, noop as N, sortBy as j } from "lodash-es"; import { Suspense as D, useMemo as F, useState as Q, useCallback as A } from "react"; import { useDeepCompareEffectNoCheck as B } from "use-deep-compare-effect"; import { useQueryContext as G } from "../../QueryContext/QueryContext.js"; import "@sage-bionetworks/synapse-types"; import "../../../utils/PermissionLevelToAccessType.js"; import "../../../utils/SynapseConstants.js"; 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 "../../../utils/functions/EntityTypeUtils.js"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import "../../../utils/context/SynapseContext.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 "../../../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 "../../../utils/types/IsType.js"; import { useSuspenseGetQueryMetadata as O } from "../../QueryWrapper/useGetQueryMetadata.js"; import { useQueryVisualizationContext as I } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js"; import { CombinedRangeFacetFilter as J } from "./CombinedRangeFacetFilter.js"; import { EnumFacetFilter as P } from "./EnumFacetFilter/EnumFacetFilter.js"; import { FacetChip as _ } from "./FacetChip.js"; import { FacetFilterHeader as z } from "./FacetFilterHeader.js"; import { FacetFilterControlsSkeleton as H } from "./FacetFilterSkeleton.js"; import { getDefaultShownFacetFilters as R } from "./FacetFilterUtils.js"; import L from "./JsonColumnFacetFilters.js"; import { RangeFacetFilter as W } from "./RangeFacetFilter.js"; const K = (t) => ({ concreteType: "org.sagebionetworks.repo.model.table.FacetColumnValuesRequest", columnName: t.columnName, facetValues: t.facetValues.filter((l) => l.isSelected).map((l) => l.value) }), U = (t, l = []) => { const i = l.findIndex( (c) => v(c, t) ), m = t.concreteType === "org.sagebionetworks.repo.model.table.FacetColumnValuesRequest" && (!t.facetValues || !t.facetValues.length), o = t.concreteType === "org.sagebionetworks.repo.model.table.FacetColumnRangeRequest" && (!t.min || !t.max); return i > -1 ? m || o ? l.splice(i, 1) : l[i] = t : l.push(t), l; }; function Oe(t, l, i, m, o = !1) { m ? l.facetValues.forEach((r) => { r.value === m && (r.isSelected = o); }) : l.facetValues.forEach((r) => { r.isSelected = !1; }); const c = K(l), f = U( c, t?.query?.selectedFacets ); i(f); } function X(t) { const { availableFacets: l, initialExpandedFacetControls: i } = t, { getCurrentQueryRequest: m, combineRangeFacetConfig: o } = G(), { getColumnDisplayName: c } = I(), f = F( () => m(), [m] ), { data: r } = O(), u = r.facets.filter( (e) => ( // If availableFacets is configured, remove those that don't match. l == null || l.includes(e.columnName) ) ).filter((e) => e.jsonPath == null).filter( (e) => ( // Don't show facets if included in the combine range facet config, handled separately o == null || o.maxFacetColumn !== e.columnName && o.minFacetColumn !== e.columnName ) ).filter( (e) => ( // Don't show facets where there are no values !q(e) ) ), h = o ? r.facets.filter( (e) => o.maxFacetColumn === e.columnName || o.minFacetColumn === e.columnName ) : [], p = M( r.facets.filter((e) => !!e.jsonPath), "columnName" ), d = F(() => { const e = []; return u.forEach((n) => e.push(n.columnName)), o && e.push(o.label), p && Object.keys(p).forEach( (n) => e.push(n) ), e; }, [o, u, p]), [a, y] = Q( R( d, f.query.selectedFacets ) ); B(() => { const e = E( i ?? [], Array.from(a) ); y( R( d, f.query.selectedFacets, e ) ); }, [u]); const b = r.columnModels, S = A( (e) => { const n = new Set(a); n.has(e) ? n.delete(e) : n.add(e), y(n); }, [a] ), w = o ? b.find( (e) => e.name === o.minFacetColumn )?.columnType : void 0, x = F( () => (u ?? []).filter((e) => a.has(e.columnName)), [a, u] ), V = F( () => Object.entries(p).filter( ([e]) => a.has(e) ), [a, p] ); return /* @__PURE__ */ C("div", { className: "FacetFilterControls", children: [ /* @__PURE__ */ C("div", { children: [ /* @__PURE__ */ s( z, { label: "Available Filters", hideCollapsible: !0, isCollapsed: !1, onClick: N } ), j(d).map((e) => /* @__PURE__ */ s( _, { onClick: () => S(e), isChecked: a.has(e), children: c(e) }, e )) ] }), o && h.length >= 2 && /* @__PURE__ */ s( J, { facetResults: h, label: o.label, columnType: w } ), x.map((e) => { const n = T(e, b); return /* @__PURE__ */ C("div", { className: "FacetFilterControls__facet", children: [ e.facetType === "enumeration" && n && /* @__PURE__ */ s(P, { containerAs: "Collapsible", facet: e }), e.facetType === "range" && n && /* @__PURE__ */ s(W, { facetResult: e }) ] }, e.columnName); }), V.map(([e, n]) => { const g = r?.columnModels?.find( (k) => k.name === e ); return g && /* @__PURE__ */ s( L, { columnModel: g, facets: n }, e ); }) ] }); } function Ie(t) { return /* @__PURE__ */ s(D, { fallback: /* @__PURE__ */ s(H, {}), children: /* @__PURE__ */ s(X, { ...t }) }); } export { Oe as applyChangesToValuesColumn, Ie as default }; //# sourceMappingURL=FacetFilterControls.js.map