synapse-react-client 4.0.34 → 4.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/assets/icons/curie-head.svg +21 -0
  3. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +24 -2
  4. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  5. package/dist/components/AccessRequirementList/AccessRequirementList.js +108 -106
  6. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +26 -25
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +6 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +55 -54
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  17. package/dist/components/DraggableDialog/DraggableDialog.d.ts +2 -1
  18. package/dist/components/DraggableDialog/DraggableDialog.d.ts.map +1 -1
  19. package/dist/components/DraggableDialog/DraggableDialog.js +42 -33
  20. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  21. package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
  22. package/dist/components/EntityTreeTable/hooks/useTableColumns.js +12 -6
  23. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  24. package/dist/components/ExperimentalMode/ExperimentalMode.js +2 -1
  25. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  26. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  27. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +64 -55
  28. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  29. package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
  30. package/dist/components/StorybookComponentWrapper.js +15 -10
  31. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  32. package/dist/components/SynapseChat/GridAgentChat.js +6 -6
  33. package/dist/components/SynapseChat/SynapseChat.d.ts +2 -1
  34. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  35. package/dist/components/SynapseChat/SynapseChat.js +118 -74
  36. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  37. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -1
  38. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  39. package/dist/components/SynapseChat/SynapseChatInteraction.js +21 -21
  40. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  41. package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
  42. package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
  43. package/dist/components/SynapseChat/SynapseChatMessage.js +9 -8
  44. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  45. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
  46. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +2 -1
  47. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  48. package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
  49. package/dist/components/TanStackTable/TanStackTableUtils.js +6 -6
  50. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  51. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +12 -0
  52. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -0
  53. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +84 -0
  54. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -0
  55. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.d.ts.map +1 -1
  56. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +20 -18
  57. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  58. package/dist/components/entity/page/CreatedByModifiedBy.d.ts.map +1 -1
  59. package/dist/components/entity/page/CreatedByModifiedBy.js +43 -61
  60. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  61. package/dist/components/entity/page/createdByModifiedByTooltips.d.ts +7 -0
  62. package/dist/components/entity/page/createdByModifiedByTooltips.d.ts.map +1 -0
  63. package/dist/components/entity/page/createdByModifiedByTooltips.js +36 -0
  64. package/dist/components/entity/page/createdByModifiedByTooltips.js.map +1 -0
  65. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  66. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +130 -65
  67. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  68. package/dist/components/widgets/Range.js +8 -2
  69. package/dist/components/widgets/Range.js.map +1 -1
  70. package/dist/components/widgets/query-filter/RangeFacetFilter.d.ts.map +1 -1
  71. package/dist/components/widgets/query-filter/RangeFacetFilter.js +2 -1
  72. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  73. package/dist/components/widgets/query-filter/RangeFacetFilterUI.d.ts.map +1 -1
  74. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +19 -19
  75. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  76. package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
  77. package/dist/mocks/msw/handlers/fileHandlers.js +22 -22
  78. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  79. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  80. package/dist/mocks/msw/handlers/userProfileHandlers.js +36 -36
  81. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  82. package/dist/mocks/user/mock_user_profile.d.ts +1 -0
  83. package/dist/mocks/user/mock_user_profile.d.ts.map +1 -1
  84. package/dist/mocks/user/mock_user_profile.js +45 -45
  85. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  86. package/dist/synapse-queries/KeyFactory.d.ts +1 -0
  87. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  88. package/dist/synapse-queries/KeyFactory.js +3 -0
  89. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  90. package/dist/synapse-queries/dataaccess/index.js +4 -4
  91. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +13 -1
  92. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  93. package/dist/synapse-queries/dataaccess/useEDuc.js +67 -49
  94. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  95. package/dist/synapse-queries/index.js +185 -184
  96. package/dist/tsconfig.build.tsbuildinfo +1 -1
  97. package/dist/utils/APIConstants.d.ts +1 -0
  98. package/dist/utils/APIConstants.d.ts.map +1 -1
  99. package/dist/utils/APIConstants.js +2 -2
  100. package/dist/utils/APIConstants.js.map +1 -1
  101. package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
  102. package/dist/utils/AppUtils/session/ApplicationSessionManager.js +20 -19
  103. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  104. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  105. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  106. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  107. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  108. package/dist/utils/functions/RegularExpressions.d.ts +7 -0
  109. package/dist/utils/functions/RegularExpressions.d.ts.map +1 -1
  110. package/dist/utils/functions/RegularExpressions.js +5 -4
  111. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  112. package/dist/utils/hooks/useIsHydrated.d.ts +9 -0
  113. package/dist/utils/hooks/useIsHydrated.d.ts.map +1 -0
  114. package/dist/utils/hooks/useIsHydrated.js +10 -0
  115. package/dist/utils/hooks/useIsHydrated.js.map +1 -0
  116. package/package.json +2 -2
@@ -0,0 +1,36 @@
1
+ import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
2
+ //#region src/components/entity/page/createdByModifiedByTooltips.tsx
3
+ var r = "This is the user who created this Dataset. This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.";
4
+ function i(r) {
5
+ return /* @__PURE__ */ n(e, { children: [
6
+ /* @__PURE__ */ n("p", { children: [
7
+ "This is when the configuration of this ",
8
+ r,
9
+ " was last changed."
10
+ ] }),
11
+ /* @__PURE__ */ t("p", { children: "Configuration changes may be triggered by (for example):" }),
12
+ /* @__PURE__ */ n("ul", { children: [/* @__PURE__ */ n("li", { children: ["Editing the name of the ", r] }), /* @__PURE__ */ n("li", { children: ["Updating the schema used by the ", r] })] }),
13
+ /* @__PURE__ */ n("p", { children: [
14
+ "This does NOT reflect changes to the data displayed in the the",
15
+ " ",
16
+ r,
17
+ "."
18
+ ] })
19
+ ] });
20
+ }
21
+ function a(e) {
22
+ return `This is when the configuration of this ${e} was last changed.`;
23
+ }
24
+ function o(e) {
25
+ return `When data changes, the ${e} is rebuilt to reflect those changes. This is the last time changes were made to the data.`;
26
+ }
27
+ var s = {
28
+ width: "16px",
29
+ height: "16px",
30
+ ml: "4px",
31
+ verticalAlign: "text-bottom"
32
+ };
33
+ //#endregion
34
+ export { r as DATASET_CREATED_BY_TOOLTIP, s as INFO_ICON_SX, o as getTableLastRebuiltTooltip, a as getTableModifiedOnAccessibleLabel, i as getTableModifiedOnTooltip };
35
+
36
+ //# sourceMappingURL=createdByModifiedByTooltips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createdByModifiedByTooltips.js","names":[],"sources":["../../../../src/components/entity/page/createdByModifiedByTooltips.tsx"],"sourcesContent":["import { SxProps } from '@mui/material'\n\nexport const DATASET_CREATED_BY_TOOLTIP =\n 'This is the user who created this Dataset. ' +\n 'This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.'\n\nexport function getTableModifiedOnTooltip(friendlyName: string) {\n return (\n <>\n <p>\n This is when the configuration of this {friendlyName} was last changed.\n </p>\n <p>Configuration changes may be triggered by (for example):</p>\n <ul>\n <li>Editing the name of the {friendlyName}</li>\n <li>Updating the schema used by the {friendlyName}</li>\n </ul>\n <p>\n This does NOT reflect changes to the data displayed in the the{' '}\n {friendlyName}.\n </p>\n </>\n )\n}\n\n// The ReactNode tooltip title does not auto-populate aria-label, so MUI needs a\n// string handed to it explicitly.\nexport function getTableModifiedOnAccessibleLabel(friendlyName: string) {\n return `This is when the configuration of this ${friendlyName} was last changed.`\n}\n\nexport function getTableLastRebuiltTooltip(friendlyName: string) {\n return (\n `When data changes, the ${friendlyName} is rebuilt to reflect those changes. ` +\n `This is the last time changes were made to the data.`\n )\n}\n\nexport const INFO_ICON_SX: SxProps = {\n width: '16px',\n height: '16px',\n ml: '4px',\n verticalAlign: 'text-bottom',\n}\n"],"mappings":";;AAEA,IAAa,IACX;AAGF,SAAgB,EAA0B,GAAsB;CAC9D,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,KAAD,EAAA,UAAA;GAAG;GACuC;GAAa;EACpD,EAAA,CAAA;EACH,kBAAC,KAAD,EAAA,UAAG,2DAA2D,CAAA;EAC9D,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UAAA,CAAI,4BAAyB,CAAiB,EAAA,CAAA,GAC9C,kBAAC,MAAD,EAAA,UAAA,CAAI,oCAAiC,CAAiB,EAAA,CAAA,CACpD,EAAA,CAAA;EACJ,kBAAC,KAAD,EAAA,UAAA;GAAG;GAC8D;GAC9D;GAAa;EACb,EAAA,CAAA;CACH,EAAA,CAAA;AAEN;AAIA,SAAgB,EAAkC,GAAsB;CACtE,OAAO,0CAA0C,EAAa;AAChE;AAEA,SAAgB,EAA2B,GAAsB;CAC/D,OACE,0BAA0B,EAAa;AAG3C;AAEA,IAAa,IAAwB;CACnC,OAAO;CACP,QAAQ;CACR,IAAI;CACJ,eAAe;AACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetEntityTitleBarProperties.d.ts","sourceRoot":"","sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAO3C,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,EAAE,CA8KlB"}
1
+ {"version":3,"file":"useGetEntityTitleBarProperties.d.ts","sourceRoot":"","sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAsB3C,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,EAAE,CA6OlB"}
@@ -1,133 +1,198 @@
1
+ import "../../../../utils/SynapseConstants.js";
1
2
  import { calculateFriendlyFileSize as e } from "../../../../utils/functions/calculateFriendlyFileSize.js";
2
- import { isEntityRefCollectionView as t, isVersionableEntity as n } from "../../../../utils/functions/EntityTypeUtils.js";
3
+ import { entityTypeToFriendlyName as ee, isDataset as te, isEntityRefCollectionView as t, isTable as n, isVersionableEntity as ne } from "../../../../utils/functions/EntityTypeUtils.js";
3
4
  import { useGetEntityChildren as r } from "../../../../synapse-queries/entity/useGetEntityChildren.js";
5
+ import { useGetQueryResultBundleWithAsyncStatus as i } from "../../../../synapse-queries/entity/useGetQueryResultBundle.js";
4
6
  import "../../../../synapse-queries/index.js";
5
- import { useGetDOIAssociation as i } from "../../../../synapse-queries/doi/useDOI.js";
6
- import a from "../../../GenericCard/Linkify.js";
7
- import o from "../../../../utils/hooks/useGetEntityMetadata.js";
8
- import { useDataCiteUsage as s } from "./useDataCiteUsage.js";
9
- import { useGetMentions as c } from "./useGetMentions.js";
10
- import { CitationsDialog as l } from "./CitationsDialog.js";
11
- import { CopyToClipboardString as u } from "../../../CopyToClipboardString/CopyToClipboardString.js";
12
- import { useState as d } from "react";
13
- import { Box as f, Link as p } from "@mui/material";
14
- import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
15
- import { DoiObjectType as _, EntityType as v } from "@sage-bionetworks/synapse-client";
7
+ import { useGetDOIAssociation as re } from "../../../../synapse-queries/doi/useDOI.js";
8
+ import { formatDate as a } from "../../../../utils/functions/DateFormatter.js";
9
+ import { UserBadge as o } from "../../../UserCard/UserBadge.js";
10
+ import s from "../../../GenericCard/Linkify.js";
11
+ import c from "../../../../utils/hooks/useGetEntityMetadata.js";
12
+ import { INFO_ICON_SX as l, getTableLastRebuiltTooltip as u, getTableModifiedOnAccessibleLabel as ie, getTableModifiedOnTooltip as ae } from "../createdByModifiedByTooltips.js";
13
+ import { useDataCiteUsage as oe } from "./useDataCiteUsage.js";
14
+ import { useGetMentions as d } from "./useGetMentions.js";
15
+ import { CitationsDialog as f } from "./CitationsDialog.js";
16
+ import { CopyToClipboardString as p } from "../../../CopyToClipboardString/CopyToClipboardString.js";
17
+ import { useState as m } from "react";
18
+ import { Box as h, Link as g, Tooltip as _ } from "@mui/material";
19
+ import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
20
+ import { DoiObjectType as se, EntityType as x } from "@sage-bionetworks/synapse-client";
21
+ import { InfoTwoTone as S } from "@mui/icons-material";
22
+ import C from "dayjs";
16
23
  //#region src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx
17
- function y(y, b) {
18
- let { entityBundle: x, fileHandle: S, downloadAlias: C, isContainer: w, fileHandleStorageInfo: T, uploadDestinationString: E } = o(y, b), [D, O] = d(!1), [k, A] = d(!1), { data: j } = r({
19
- parentId: y,
20
- includeTypes: Object.values(v),
24
+ function w(w, T) {
25
+ let { entityBundle: E, fileHandle: D, downloadAlias: O, isContainer: k, fileHandleStorageInfo: A, uploadDestinationString: j } = c(w, T), [ce, M] = m(!1), [le, N] = m(!1), { data: ue } = r({
26
+ parentId: w,
27
+ includeTypes: Object.values(x),
21
28
  includeTotalChildCount: !0
22
- }, { enabled: w }), M = x && !x.doiAssociation && n(x.entity) && x.entity.isLatestVersion, { data: N } = i({
23
- id: y,
29
+ }, { enabled: k }), P = E?.entity, F = !!P && n(P), I = E ? ee(E.entityType) : "", { data: L } = i({
30
+ entityId: w,
31
+ query: { sql: `SELECT * FROM ${w}${T ? `.${T}` : ""} LIMIT 0` },
32
+ partMask: 128,
33
+ concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest"
34
+ }, { enabled: !!(P && n(P)) }), R = L?.responseBody?.lastUpdatedOn, z = E && !E.doiAssociation && ne(E.entity) && E.entity.isLatestVersion, { data: B } = re({
35
+ id: w,
24
36
  version: void 0,
25
- type: _.ENTITY
26
- }, { enabled: M }), P = S?.contentSize && e(S.contentSize), F = T && "location" in T && T.location, I = T && "endpoint" in T && T.endpoint, L = T && "bucket" in T && T.bucket, R = T && "fileKey" in T && T.fileKey, z = T && "url" in T && T.url, B = S?.contentMd5, V = M ? N : x?.doiAssociation, { data: H } = s(V?.doiUri), U = V && `https://doi.org/${V?.doiUri}`, W = !!H && H.citationCount > 0, G = j?.totalChildCount, K = x?.entity && t(x.entity) ? ((x?.entity).items ?? []).length : null, { data: q } = c(y), J = !!q && q.length > 0;
37
+ type: se.ENTITY
38
+ }, { enabled: z }), V = D?.contentSize && e(D.contentSize), H = A && "location" in A && A.location, U = A && "endpoint" in A && A.endpoint, W = A && "bucket" in A && A.bucket, G = A && "fileKey" in A && A.fileKey, K = A && "url" in A && A.url, q = D?.contentMd5, J = z ? B : E?.doiAssociation, { data: Y } = oe(J?.doiUri), X = J && `https://doi.org/${J?.doiUri}`, de = !!Y && Y.citationCount > 0, Z = ue?.totalChildCount, Q = E?.entity && t(E.entity) ? (E.entity.items ?? []).length : null, { data: $ } = d(w), fe = !!$ && $.length > 0;
27
39
  return [
28
40
  {
29
41
  key: "id",
30
42
  title: "SynID",
31
- value: /* @__PURE__ */ h(u, { value: y })
43
+ value: /* @__PURE__ */ y(p, { value: w })
32
44
  },
33
- P && {
45
+ V && {
34
46
  key: "fileSize",
35
47
  title: "Size",
36
- value: P
48
+ value: V
37
49
  },
38
- G != null && {
50
+ Z != null && {
39
51
  key: "containerItems",
40
52
  title: "Items",
41
- value: G.toLocaleString()
53
+ value: Z.toLocaleString()
42
54
  },
43
- K != null && {
55
+ Q != null && {
44
56
  key: "entityRefCollectionItems",
45
57
  title: "Items",
46
- value: K.toLocaleString()
58
+ value: Q.toLocaleString()
47
59
  },
48
- U && {
60
+ X && {
49
61
  key: "doi",
50
62
  title: "DOI",
51
- value: /* @__PURE__ */ h(u, {
52
- value: U,
53
- href: U,
63
+ value: /* @__PURE__ */ y(p, {
64
+ value: X,
65
+ href: X,
54
66
  icon: "rounded"
55
67
  })
56
68
  },
57
- W && {
69
+ de && {
58
70
  key: "citations",
59
71
  title: "Citations",
60
- value: /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ g(p, {
61
- onClick: () => O(!0),
62
- children: [H.citationCount.toLocaleString(), H.citationCount == 500 && "+"]
63
- }), /* @__PURE__ */ h(l, {
64
- open: D,
65
- onClose: () => O(!1),
66
- citations: H.citations
72
+ value: /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ b(g, {
73
+ onClick: () => M(!0),
74
+ children: [Y.citationCount.toLocaleString(), Y.citationCount == 500 && "+"]
75
+ }), /* @__PURE__ */ y(f, {
76
+ open: ce,
77
+ onClose: () => M(!1),
78
+ citations: Y.citations
67
79
  })] })
68
80
  },
69
- J && {
81
+ fe && {
70
82
  key: "mentions",
71
83
  title: "Mentions",
72
- value: /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, {
73
- onClick: () => A(!0),
74
- children: q.length.toLocaleString()
75
- }), /* @__PURE__ */ h(l, {
76
- open: k,
77
- onClose: () => A(!1),
78
- citations: q,
84
+ value: /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(g, {
85
+ onClick: () => N(!0),
86
+ children: $.length.toLocaleString()
87
+ }), /* @__PURE__ */ y(f, {
88
+ open: le,
89
+ onClose: () => N(!1),
90
+ citations: $,
79
91
  title: "Mentioned in"
80
92
  })] })
81
93
  },
82
- B && {
94
+ q && {
83
95
  key: "fileMd5",
84
96
  title: "MD5",
85
- value: /* @__PURE__ */ h(u, { value: B })
97
+ value: /* @__PURE__ */ y(p, { value: q })
86
98
  },
87
- !w && F && {
99
+ !k && H && {
88
100
  key: "fileStorageLocation",
89
101
  title: "Storage Location",
90
- value: F
102
+ value: H
91
103
  },
92
- w && E && {
104
+ k && j && {
93
105
  key: "uploadDestination",
94
106
  title: "Upload Destination",
95
- value: E
107
+ value: j
96
108
  },
97
- I && {
109
+ U && {
98
110
  key: "externalFileEndpoint",
99
111
  title: "Endpoint",
100
- value: I
112
+ value: U
101
113
  },
102
- z && {
114
+ K && {
103
115
  key: "externalUrl",
104
116
  title: "URL",
105
- value: /* @__PURE__ */ h(a, { text: z })
117
+ value: /* @__PURE__ */ y(s, { text: K })
106
118
  },
107
- L && {
119
+ W && {
108
120
  key: "externalFileBucket",
109
121
  title: "Bucket",
110
- value: L
122
+ value: W
111
123
  },
112
- R && {
124
+ G && {
113
125
  key: "externalFileKey",
114
126
  title: "File Key",
115
- value: R
127
+ value: G
116
128
  },
117
- C && {
129
+ O && {
118
130
  key: "fileAlias",
119
131
  title: "Alias",
120
- value: /* @__PURE__ */ g(m, { children: ["Name when downloaded will be: ", /* @__PURE__ */ h(f, {
132
+ value: /* @__PURE__ */ b(v, { children: ["Name when downloaded will be: ", /* @__PURE__ */ y(h, {
121
133
  sx: {
122
134
  display: "inline",
123
135
  fontFamily: "monospace"
124
136
  },
125
- children: C
137
+ children: O
126
138
  })] })
139
+ },
140
+ P && {
141
+ key: "createdBy",
142
+ title: "Created By",
143
+ value: /* @__PURE__ */ b(h, {
144
+ sx: {
145
+ display: "flex",
146
+ alignItems: "center",
147
+ gap: "4px"
148
+ },
149
+ children: [
150
+ /* @__PURE__ */ y(o, { userId: P.createdBy }),
151
+ /* @__PURE__ */ b("span", { children: ["on ", a(C(P.createdOn))] }),
152
+ te(P) && /* @__PURE__ */ y(_, {
153
+ title: "This is the user who created this Dataset. This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.",
154
+ children: /* @__PURE__ */ y(S, { sx: l })
155
+ })
156
+ ]
157
+ })
158
+ },
159
+ P && {
160
+ key: "modifiedBy",
161
+ title: F ? "Configuration Last Modified" : "Modified By",
162
+ value: /* @__PURE__ */ b(h, {
163
+ sx: {
164
+ display: "flex",
165
+ alignItems: "center",
166
+ gap: "4px"
167
+ },
168
+ children: [
169
+ /* @__PURE__ */ y(o, { userId: P.modifiedBy }),
170
+ /* @__PURE__ */ b("span", { children: ["on ", a(C(P.modifiedOn))] }),
171
+ F && /* @__PURE__ */ y(_, {
172
+ title: ae(I),
173
+ "aria-label": ie(I),
174
+ children: /* @__PURE__ */ y(S, { sx: l })
175
+ })
176
+ ]
177
+ })
178
+ },
179
+ R && {
180
+ key: "lastRebuilt",
181
+ title: "Last Rebuilt On",
182
+ value: /* @__PURE__ */ b(h, {
183
+ sx: {
184
+ display: "flex",
185
+ alignItems: "center"
186
+ },
187
+ children: [a(C(R)), /* @__PURE__ */ y(_, {
188
+ title: u(I),
189
+ children: /* @__PURE__ */ y(S, { sx: l })
190
+ })]
191
+ })
127
192
  }
128
193
  ].filter((e) => !!e);
129
194
  }
130
195
  //#endregion
131
- export { y as useGetEntityTitleBarProperties };
196
+ export { w as useGetEntityTitleBarProperties };
132
197
 
133
198
  //# sourceMappingURL=useGetEntityTitleBarProperties.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetEntityTitleBarProperties.js","names":[],"sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"sourcesContent":["import { useGetEntityChildren } from '@/synapse-queries'\nimport { useGetDOIAssociation } from '@/synapse-queries/doi/useDOI'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport {\n isEntityRefCollectionView,\n isVersionableEntity,\n} from '@/utils/functions/EntityTypeUtils'\nimport useGetEntityMetadata from '@/utils/hooks/useGetEntityMetadata'\nimport { Box, Link } from '@mui/material'\nimport { DoiObjectType, EntityType } from '@sage-bionetworks/synapse-client'\nimport { EntityRefCollectionView } from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useState } from 'react'\nimport CopyToClipboardString from '../../../CopyToClipboardString/CopyToClipboardString'\nimport { CitationsDialog } from './CitationsDialog'\nimport { maxCitationCount, useDataCiteUsage } from './useDataCiteUsage'\nimport { useGetMentions } from './useGetMentions'\nimport Linkify from '@/components/GenericCard/Linkify'\n\nexport type EntityProperty = {\n key: string\n title: string\n value: ReactNode\n}\n\n/**\n * This hook fetches all the entity metadata shown on the Entity page, and transforms the data into an ordered list of\n * render-able key-value pairs.\n * @param entityId\n * @param versionNumber\n */\nexport function useGetEntityTitleBarProperties(\n entityId: string,\n versionNumber?: number,\n): EntityProperty[] {\n const {\n entityBundle: bundle,\n fileHandle: dataFileHandle,\n downloadAlias,\n isContainer,\n fileHandleStorageInfo,\n uploadDestinationString,\n } = useGetEntityMetadata(entityId, versionNumber)\n const [dataCiteCitationsDialogOpen, setDataCiteCitationsDialogOpen] =\n useState(false)\n const [mentionsDialogOpen, setMentionsDialogOpen] = useState(false)\n const { data: entityChildrenResponse } = useGetEntityChildren(\n {\n parentId: entityId,\n includeTypes: Object.values(EntityType),\n includeTotalChildCount: true,\n },\n { enabled: isContainer },\n )\n\n // If this is the latest entity version, show the \"versionless\" DOI if it exists.\n const useFallbackVersionlessDOI =\n bundle &&\n !bundle.doiAssociation &&\n isVersionableEntity(bundle.entity) &&\n bundle.entity.isLatestVersion\n const { data: versionlessDOIAssociation } = useGetDOIAssociation(\n { id: entityId, version: undefined, type: DoiObjectType.ENTITY },\n {\n enabled: useFallbackVersionlessDOI,\n },\n )\n\n const size =\n dataFileHandle?.contentSize &&\n calculateFriendlyFileSize(dataFileHandle.contentSize)\n const storageLocation =\n fileHandleStorageInfo &&\n 'location' in fileHandleStorageInfo &&\n fileHandleStorageInfo.location\n const endpoint =\n fileHandleStorageInfo &&\n 'endpoint' in fileHandleStorageInfo &&\n fileHandleStorageInfo.endpoint\n const bucket =\n fileHandleStorageInfo &&\n 'bucket' in fileHandleStorageInfo &&\n fileHandleStorageInfo.bucket\n const fileKey =\n fileHandleStorageInfo &&\n 'fileKey' in fileHandleStorageInfo &&\n fileHandleStorageInfo.fileKey\n const externalUrl =\n fileHandleStorageInfo &&\n 'url' in fileHandleStorageInfo &&\n fileHandleStorageInfo.url\n\n const md5 = dataFileHandle?.contentMd5\n\n // If there is no version-specific DOI, fall back to the versionless DOI\n const doiAssociation = useFallbackVersionlessDOI\n ? versionlessDOIAssociation\n : bundle?.doiAssociation\n const { data: dataCiteUsage } = useDataCiteUsage(doiAssociation?.doiUri)\n const doi = doiAssociation && `https://doi.org/${doiAssociation?.doiUri}`\n const isDoiUsage = !!dataCiteUsage && dataCiteUsage.citationCount > 0\n const containerItems = entityChildrenResponse?.totalChildCount\n\n const datasetItems =\n bundle?.entity && isEntityRefCollectionView(bundle.entity)\n ? ((bundle?.entity as EntityRefCollectionView).items ?? []).length\n : null\n\n const { data: mentions } = useGetMentions(entityId)\n const isMentions = !!mentions && mentions.length > 0\n return [\n {\n key: 'id',\n title: 'SynID',\n value: <CopyToClipboardString value={entityId} />,\n },\n size && { key: 'fileSize', title: 'Size', value: size },\n containerItems != null && {\n key: 'containerItems',\n title: 'Items',\n value: containerItems.toLocaleString(),\n },\n datasetItems != null && {\n key: 'entityRefCollectionItems',\n title: 'Items',\n value: datasetItems.toLocaleString(),\n },\n doi && {\n key: 'doi',\n title: 'DOI',\n value: <CopyToClipboardString value={doi} href={doi} icon=\"rounded\" />,\n },\n isDoiUsage && {\n key: 'citations',\n title: 'Citations',\n value: (\n <>\n <Link onClick={() => setDataCiteCitationsDialogOpen(true)}>\n {dataCiteUsage.citationCount.toLocaleString()}\n {dataCiteUsage.citationCount == maxCitationCount && '+'}\n </Link>\n <CitationsDialog\n open={dataCiteCitationsDialogOpen}\n onClose={() => setDataCiteCitationsDialogOpen(false)}\n citations={dataCiteUsage.citations}\n />\n </>\n ),\n },\n isMentions && {\n key: 'mentions',\n title: 'Mentions',\n value: (\n <>\n <Link onClick={() => setMentionsDialogOpen(true)}>\n {mentions.length.toLocaleString()}\n </Link>\n <CitationsDialog\n open={mentionsDialogOpen}\n onClose={() => setMentionsDialogOpen(false)}\n citations={mentions}\n title=\"Mentioned in\"\n />\n </>\n ),\n },\n md5 && {\n key: 'fileMd5',\n title: 'MD5',\n value: <CopyToClipboardString value={md5} />,\n },\n !isContainer &&\n storageLocation && {\n key: 'fileStorageLocation',\n title: 'Storage Location',\n value: storageLocation,\n },\n isContainer &&\n uploadDestinationString && {\n key: 'uploadDestination',\n title: 'Upload Destination',\n value: uploadDestinationString,\n },\n endpoint && {\n key: 'externalFileEndpoint',\n title: 'Endpoint',\n value: endpoint,\n },\n externalUrl && {\n key: 'externalUrl',\n title: 'URL',\n value: <Linkify text={externalUrl} />,\n },\n bucket && { key: 'externalFileBucket', title: 'Bucket', value: bucket },\n fileKey && { key: 'externalFileKey', title: 'File Key', value: fileKey },\n downloadAlias && {\n key: 'fileAlias',\n title: 'Alias',\n value: (\n <>\n {'Name when downloaded will be: '}\n <Box sx={{ display: 'inline', fontFamily: 'monospace' }}>\n {downloadAlias}\n </Box>\n </>\n ),\n },\n ].filter(item => !!item) as EntityProperty[]\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useGetEntityTitleBarProperties.js","names":[],"sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"sourcesContent":["import { useGetEntityChildren } from '@/synapse-queries'\nimport { useGetDOIAssociation } from '@/synapse-queries/doi/useDOI'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport {\n isDataset,\n isEntityRefCollectionView,\n isVersionableEntity,\n} from '@/utils/functions/EntityTypeUtils'\nimport useGetEntityMetadata from '@/utils/hooks/useGetEntityMetadata'\nimport { Box, Link, Tooltip } from '@mui/material'\nimport { DoiObjectType, EntityType } from '@sage-bionetworks/synapse-client'\nimport { EntityRefCollectionView } from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useState } from 'react'\nimport CopyToClipboardString from '../../../CopyToClipboardString/CopyToClipboardString'\nimport { CitationsDialog } from './CitationsDialog'\nimport { maxCitationCount, useDataCiteUsage } from './useDataCiteUsage'\nimport { useGetMentions } from './useGetMentions'\nimport Linkify from '@/components/GenericCard/Linkify'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { BUNDLE_MASK_LAST_UPDATED_ON } from '@/utils/SynapseConstants'\nimport { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { entityTypeToFriendlyName } from '@/utils/functions/EntityTypeUtils'\nimport { UserBadge } from '@/components/UserCard/UserBadge'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport dayjs from 'dayjs'\nimport {\n DATASET_CREATED_BY_TOOLTIP,\n INFO_ICON_SX,\n getTableModifiedOnTooltip,\n getTableModifiedOnAccessibleLabel,\n getTableLastRebuiltTooltip,\n} from '../createdByModifiedByTooltips'\n\nexport type EntityProperty = {\n key: string\n title: string\n value: ReactNode\n}\n\n/**\n * This hook fetches all the entity metadata shown on the Entity page, and transforms the data into an ordered list of\n * render-able key-value pairs.\n * @param entityId\n * @param versionNumber\n */\nexport function useGetEntityTitleBarProperties(\n entityId: string,\n versionNumber?: number,\n): EntityProperty[] {\n const {\n entityBundle: bundle,\n fileHandle: dataFileHandle,\n downloadAlias,\n isContainer,\n fileHandleStorageInfo,\n uploadDestinationString,\n } = useGetEntityMetadata(entityId, versionNumber)\n const [dataCiteCitationsDialogOpen, setDataCiteCitationsDialogOpen] =\n useState(false)\n const [mentionsDialogOpen, setMentionsDialogOpen] = useState(false)\n const { data: entityChildrenResponse } = useGetEntityChildren(\n {\n parentId: entityId,\n includeTypes: Object.values(EntityType),\n includeTotalChildCount: true,\n },\n { enabled: isContainer },\n )\n\n const entity = bundle?.entity\n const isTableLike = !!entity && isTable(entity)\n const friendlyName = bundle ? entityTypeToFriendlyName(bundle.entityType) : ''\n\n const { data: tableQueryResult } = useGetQueryResultBundleWithAsyncStatus(\n {\n entityId,\n query: {\n sql: `SELECT * FROM ${entityId}${versionNumber ? `.${versionNumber}` : ''} LIMIT 0`,\n },\n partMask: BUNDLE_MASK_LAST_UPDATED_ON,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n },\n { enabled: !!(entity && isTable(entity)) },\n )\n\n const tableLastRebuilt = tableQueryResult?.responseBody?.lastUpdatedOn\n\n // If this is the latest entity version, show the \"versionless\" DOI if it exists.\n const useFallbackVersionlessDOI =\n bundle &&\n !bundle.doiAssociation &&\n isVersionableEntity(bundle.entity) &&\n bundle.entity.isLatestVersion\n const { data: versionlessDOIAssociation } = useGetDOIAssociation(\n { id: entityId, version: undefined, type: DoiObjectType.ENTITY },\n {\n enabled: useFallbackVersionlessDOI,\n },\n )\n\n const size =\n dataFileHandle?.contentSize &&\n calculateFriendlyFileSize(dataFileHandle.contentSize)\n const storageLocation =\n fileHandleStorageInfo &&\n 'location' in fileHandleStorageInfo &&\n fileHandleStorageInfo.location\n const endpoint =\n fileHandleStorageInfo &&\n 'endpoint' in fileHandleStorageInfo &&\n fileHandleStorageInfo.endpoint\n const bucket =\n fileHandleStorageInfo &&\n 'bucket' in fileHandleStorageInfo &&\n fileHandleStorageInfo.bucket\n const fileKey =\n fileHandleStorageInfo &&\n 'fileKey' in fileHandleStorageInfo &&\n fileHandleStorageInfo.fileKey\n const externalUrl =\n fileHandleStorageInfo &&\n 'url' in fileHandleStorageInfo &&\n fileHandleStorageInfo.url\n\n const md5 = dataFileHandle?.contentMd5\n\n // If there is no version-specific DOI, fall back to the versionless DOI\n const doiAssociation = useFallbackVersionlessDOI\n ? versionlessDOIAssociation\n : bundle?.doiAssociation\n const { data: dataCiteUsage } = useDataCiteUsage(doiAssociation?.doiUri)\n const doi = doiAssociation && `https://doi.org/${doiAssociation?.doiUri}`\n const isDoiUsage = !!dataCiteUsage && dataCiteUsage.citationCount > 0\n const containerItems = entityChildrenResponse?.totalChildCount\n\n const datasetItems =\n bundle?.entity && isEntityRefCollectionView(bundle.entity)\n ? ((bundle.entity as EntityRefCollectionView).items ?? []).length\n : null\n\n const { data: mentions } = useGetMentions(entityId)\n const isMentions = !!mentions && mentions.length > 0\n return [\n {\n key: 'id',\n title: 'SynID',\n value: <CopyToClipboardString value={entityId} />,\n },\n size && { key: 'fileSize', title: 'Size', value: size },\n containerItems != null && {\n key: 'containerItems',\n title: 'Items',\n value: containerItems.toLocaleString(),\n },\n datasetItems != null && {\n key: 'entityRefCollectionItems',\n title: 'Items',\n value: datasetItems.toLocaleString(),\n },\n doi && {\n key: 'doi',\n title: 'DOI',\n value: <CopyToClipboardString value={doi} href={doi} icon=\"rounded\" />,\n },\n isDoiUsage && {\n key: 'citations',\n title: 'Citations',\n value: (\n <>\n <Link onClick={() => setDataCiteCitationsDialogOpen(true)}>\n {dataCiteUsage.citationCount.toLocaleString()}\n {dataCiteUsage.citationCount == maxCitationCount && '+'}\n </Link>\n <CitationsDialog\n open={dataCiteCitationsDialogOpen}\n onClose={() => setDataCiteCitationsDialogOpen(false)}\n citations={dataCiteUsage.citations}\n />\n </>\n ),\n },\n isMentions && {\n key: 'mentions',\n title: 'Mentions',\n value: (\n <>\n <Link onClick={() => setMentionsDialogOpen(true)}>\n {mentions.length.toLocaleString()}\n </Link>\n <CitationsDialog\n open={mentionsDialogOpen}\n onClose={() => setMentionsDialogOpen(false)}\n citations={mentions}\n title=\"Mentioned in\"\n />\n </>\n ),\n },\n md5 && {\n key: 'fileMd5',\n title: 'MD5',\n value: <CopyToClipboardString value={md5} />,\n },\n !isContainer &&\n storageLocation && {\n key: 'fileStorageLocation',\n title: 'Storage Location',\n value: storageLocation,\n },\n isContainer &&\n uploadDestinationString && {\n key: 'uploadDestination',\n title: 'Upload Destination',\n value: uploadDestinationString,\n },\n endpoint && {\n key: 'externalFileEndpoint',\n title: 'Endpoint',\n value: endpoint,\n },\n externalUrl && {\n key: 'externalUrl',\n title: 'URL',\n value: <Linkify text={externalUrl} />,\n },\n bucket && { key: 'externalFileBucket', title: 'Bucket', value: bucket },\n fileKey && { key: 'externalFileKey', title: 'File Key', value: fileKey },\n downloadAlias && {\n key: 'fileAlias',\n title: 'Alias',\n value: (\n <>\n {'Name when downloaded will be: '}\n <Box sx={{ display: 'inline', fontFamily: 'monospace' }}>\n {downloadAlias}\n </Box>\n </>\n ),\n },\n entity && {\n key: 'createdBy',\n title: 'Created By',\n value: (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <UserBadge userId={entity.createdBy} />\n <span>on {formatDate(dayjs(entity.createdOn))}</span>\n {isDataset(entity) && (\n <Tooltip title={DATASET_CREATED_BY_TOOLTIP}>\n <InfoTwoTone sx={INFO_ICON_SX} />\n </Tooltip>\n )}\n </Box>\n ),\n },\n entity && {\n key: 'modifiedBy',\n title: isTableLike ? 'Configuration Last Modified' : 'Modified By',\n value: (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <UserBadge userId={entity.modifiedBy} />\n <span>on {formatDate(dayjs(entity.modifiedOn))}</span>\n {isTableLike && (\n <Tooltip\n title={getTableModifiedOnTooltip(friendlyName)}\n aria-label={getTableModifiedOnAccessibleLabel(friendlyName)}\n >\n <InfoTwoTone sx={INFO_ICON_SX} />\n </Tooltip>\n )}\n </Box>\n ),\n },\n tableLastRebuilt && {\n key: 'lastRebuilt',\n title: 'Last Rebuilt On',\n value: (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {formatDate(dayjs(tableLastRebuilt))}\n <Tooltip title={getTableLastRebuiltTooltip(friendlyName)}>\n <InfoTwoTone sx={INFO_ICON_SX} />\n </Tooltip>\n </Box>\n ),\n },\n ].filter(item => !!item) as EntityProperty[]\n}\n"],"mappings":"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"}
@@ -81,7 +81,10 @@ function f(f) {
81
81
  min: e.target.value,
82
82
  max: h.max
83
83
  }),
84
- slotProps: { htmlInput: { "aria-label": "min" } }
84
+ slotProps: { htmlInput: {
85
+ "aria-label": "min",
86
+ autoComplete: "off"
87
+ } }
85
88
  }) }, "range_min"), /* @__PURE__ */ a(t, { children: /* @__PURE__ */ a(r, {
86
89
  label: "To",
87
90
  type: "number",
@@ -90,7 +93,10 @@ function f(f) {
90
93
  max: e.target.value,
91
94
  min: h.min
92
95
  }),
93
- slotProps: { htmlInput: { "aria-label": "max" } }
96
+ slotProps: { htmlInput: {
97
+ "aria-label": "max",
98
+ autoComplete: "off"
99
+ } }
94
100
  }) }, "range_max")] }),
95
101
  /* @__PURE__ */ a(n, {
96
102
  size: "small",
@@ -1 +1 @@
1
- {"version":3,"file":"Range.js","names":[],"sources":["../../../src/components/widgets/Range.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport dayjs from 'dayjs'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { Box, Button, TextField } from '@mui/material'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport isEmpty from 'lodash-es/isEmpty'\n\ntype ControlType = 'number' | 'date'\n\nexport type RangeValues<T = string | number> = {\n min?: T\n max?: T\n}\n\nexport type RangeProps = {\n type: ControlType\n initialValues?: RangeValues\n className?: string\n errorText?: string\n onApplyClicked: (newValues: RangeValues) => void\n}\n\nexport function Range(props: RangeProps): React.ReactNode {\n const errorText = 'Min value should be less than max value'\n const [error, setError] = useState(false)\n const [values, setValues] = useState(() =>\n props.type === 'number' && props.initialValues\n ? props.initialValues\n : (props.initialValues && {\n min: props.initialValues.min\n ? dayjs(props.initialValues.min).format('YYYY-MM-DD')\n : undefined,\n max: props.initialValues.max\n ? dayjs(props.initialValues.max).format('YYYY-MM-DD')\n : undefined,\n }) || {\n min: undefined,\n max: undefined,\n },\n )\n\n const isValid = (\n { min, max }: RangeValues,\n\n type: ControlType = 'number',\n ) => {\n // Treat null, undefined, and empty string as \"no value\" — one-sided ranges are always valid\n if (isEmpty(min) || isEmpty(max)) {\n setError(false)\n return true\n }\n\n if (type === 'number') {\n if (Number(min) > Number(max)) {\n setError(true)\n return false\n }\n } else if (Date.parse(min as string) > Date.parse(max as string)) {\n setError(true)\n return false\n }\n setError(false)\n return true\n }\n\n const handleAppyChanges = (\n values: RangeValues,\n callBackFn: (newValues: RangeValues) => void,\n type: ControlType = 'number',\n ) => {\n if (isValid(values, type)) {\n // Normalize empty strings to undefined so downstream code receives clean absent values\n callBackFn({\n min: values.min === '' ? undefined : values.min,\n max: values.max === '' ? undefined : values.max,\n })\n }\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n flex: '1 0',\n marginRight: '10px',\n gap: '10px',\n '& .MuiInputBase-root': {\n minWidth: '150px',\n },\n '& .MuiInputBase-root,.MuiButton-root': {\n height: '38px',\n },\n '& .MuiInputLabel-root': {\n color: 'grey.700',\n fontWeight: 400,\n },\n }}\n >\n {props.type === 'date' ? (\n <>\n <Box key=\"range_min\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"From\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'min',\n },\n },\n }}\n value={values.min ? dayjs(values.min) : null}\n onChange={date =>\n setValues({\n min: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n max: values.max,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n <Box key=\"range_max\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"To\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'max',\n },\n },\n }}\n value={values.max ? dayjs(values.max) : null}\n onChange={date =>\n setValues({\n max: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n min: values.min,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n </>\n ) : (\n <>\n <Box key=\"range_min\">\n <TextField\n label=\"From\"\n type=\"number\"\n value={values.min ?? ''}\n onChange={e =>\n setValues({\n min: e.target.value,\n max: values.max,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'min' },\n }}\n />\n </Box>\n <Box key=\"range_max\">\n <TextField\n label=\"To\"\n type=\"number\"\n value={values.max ?? ''}\n onChange={e =>\n setValues({\n max: e.target.value,\n min: values.min,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'max' },\n }}\n />\n </Box>\n </>\n )}\n <Button\n size=\"small\"\n variant=\"outlined\"\n onClick={() =>\n handleAppyChanges(values, props.onApplyClicked, props.type)\n }\n sx={{\n alignSelf: 'flex-end',\n fontSize: 16,\n }}\n >\n Apply\n </Button>\n {error && (\n <div className=\"SRC-danger-color\">{props.errorText || errorText}</div>\n )}\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Range.js","names":[],"sources":["../../../src/components/widgets/Range.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport dayjs from 'dayjs'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { Box, Button, TextField } from '@mui/material'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport isEmpty from 'lodash-es/isEmpty'\n\ntype ControlType = 'number' | 'date'\n\nexport type RangeValues<T = string | number> = {\n min?: T\n max?: T\n}\n\nexport type RangeProps = {\n type: ControlType\n initialValues?: RangeValues\n className?: string\n errorText?: string\n onApplyClicked: (newValues: RangeValues) => void\n}\n\nexport function Range(props: RangeProps): React.ReactNode {\n const errorText = 'Min value should be less than max value'\n const [error, setError] = useState(false)\n const [values, setValues] = useState(() =>\n props.type === 'number' && props.initialValues\n ? props.initialValues\n : (props.initialValues && {\n min: props.initialValues.min\n ? dayjs(props.initialValues.min).format('YYYY-MM-DD')\n : undefined,\n max: props.initialValues.max\n ? dayjs(props.initialValues.max).format('YYYY-MM-DD')\n : undefined,\n }) || {\n min: undefined,\n max: undefined,\n },\n )\n\n const isValid = (\n { min, max }: RangeValues,\n\n type: ControlType = 'number',\n ) => {\n // Treat null, undefined, and empty string as \"no value\" — one-sided ranges are always valid\n if (isEmpty(min) || isEmpty(max)) {\n setError(false)\n return true\n }\n\n if (type === 'number') {\n if (Number(min) > Number(max)) {\n setError(true)\n return false\n }\n } else if (Date.parse(min as string) > Date.parse(max as string)) {\n setError(true)\n return false\n }\n setError(false)\n return true\n }\n\n const handleAppyChanges = (\n values: RangeValues,\n callBackFn: (newValues: RangeValues) => void,\n type: ControlType = 'number',\n ) => {\n if (isValid(values, type)) {\n // Normalize empty strings to undefined so downstream code receives clean absent values\n callBackFn({\n min: values.min === '' ? undefined : values.min,\n max: values.max === '' ? undefined : values.max,\n })\n }\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n flex: '1 0',\n marginRight: '10px',\n gap: '10px',\n '& .MuiInputBase-root': {\n minWidth: '150px',\n },\n '& .MuiInputBase-root,.MuiButton-root': {\n height: '38px',\n },\n '& .MuiInputLabel-root': {\n color: 'grey.700',\n fontWeight: 400,\n },\n }}\n >\n {props.type === 'date' ? (\n <>\n <Box key=\"range_min\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"From\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'min',\n },\n },\n }}\n value={values.min ? dayjs(values.min) : null}\n onChange={date =>\n setValues({\n min: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n max: values.max,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n <Box key=\"range_max\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"To\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'max',\n },\n },\n }}\n value={values.max ? dayjs(values.max) : null}\n onChange={date =>\n setValues({\n max: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n min: values.min,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n </>\n ) : (\n <>\n <Box key=\"range_min\">\n <TextField\n label=\"From\"\n type=\"number\"\n value={values.min ?? ''}\n onChange={e =>\n setValues({\n min: e.target.value,\n max: values.max,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'min', autoComplete: 'off' },\n }}\n />\n </Box>\n <Box key=\"range_max\">\n <TextField\n label=\"To\"\n type=\"number\"\n value={values.max ?? ''}\n onChange={e =>\n setValues({\n max: e.target.value,\n min: values.min,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'max', autoComplete: 'off' },\n }}\n />\n </Box>\n </>\n )}\n <Button\n size=\"small\"\n variant=\"outlined\"\n onClick={() =>\n handleAppyChanges(values, props.onApplyClicked, props.type)\n }\n sx={{\n alignSelf: 'flex-end',\n fontSize: 16,\n }}\n >\n Apply\n </Button>\n {error && (\n <div className=\"SRC-danger-color\">{props.errorText || errorText}</div>\n )}\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RangeFacetFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AASxE,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,sBAAsB,CAAA;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAkD5D"}
1
+ {"version":3,"file":"RangeFacetFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AASxE,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,sBAAsB,CAAA;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAuD5D"}
@@ -34,7 +34,8 @@ function p(e) {
34
34
  columnType: _.columnType,
35
35
  hideCollapsible: f,
36
36
  onRangeValueSelected: (e) => {
37
- p(d, c(e.min) ? String(e.min) : e.min, c(e.max) ? String(e.max) : e.max);
37
+ let t = (e) => c(e) ? Number.isNaN(e) ? void 0 : String(e) : e;
38
+ p(d, t(e.min), t(e.max));
38
39
  },
39
40
  onNotSetSelected: () => {
40
41
  p(d, t, t);
@@ -1 +1 @@
1
- {"version":3,"file":"RangeFacetFilter.js","names":[],"sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"sourcesContent":["import { getCorrespondingColumnForFacet } from '@/utils/functions/queryUtils'\nimport { FRIENDLY_VALUE_NOT_SET, VALUE_NOT_SET } from '@/utils/SynapseConstants'\nimport { FacetColumnResultRange } from '@sage-bionetworks/synapse-types'\nimport { isNumber } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { RangeValues } from '../Range'\nimport { RangeFacetFilterUI } from './RangeFacetFilterUI'\n\nexport enum RadioValuesEnum {\n NOT_SET = 'org.sagebionetworks.UNDEFINED_NULL_NOTSET',\n RANGE = 'RANGE',\n ANY = '',\n}\nexport const options = [\n { label: FRIENDLY_VALUE_NOT_SET, value: RadioValuesEnum.NOT_SET },\n { label: 'Any', value: RadioValuesEnum.ANY },\n { label: 'Range', value: RadioValuesEnum.RANGE },\n]\nexport type RangeFacetFilterProps = {\n facetResult: FacetColumnResultRange\n hideCollapsible?: boolean\n}\n\nexport function RangeFacetFilter(props: RangeFacetFilterProps) {\n const { facetResult, hideCollapsible = false } = props\n const { setRangeFacetValue, removeSelectedFacet, getCurrentQueryRequest } =\n useQueryContext()\n\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n\n const columnModel = queryMetadata.columnModels\n ? getCorrespondingColumnForFacet(facetResult, queryMetadata.columnModels)\n : undefined\n\n const { getColumnDisplayName } = useQueryVisualizationContext()\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n if (!columnModel) {\n return <></>\n }\n\n return (\n <RangeFacetFilterUI\n label={getColumnDisplayName(facetResult.columnName, facetResult.jsonPath)}\n facetResult={facetResult}\n columnType={columnModel.columnType}\n hideCollapsible={hideCollapsible}\n onRangeValueSelected={(values: RangeValues) => {\n setRangeFacetValue(\n facetResult,\n isNumber(values.min) ? String(values.min) : values.min,\n isNumber(values.max) ? String(values.max) : values.max,\n )\n }}\n onNotSetSelected={() => {\n setRangeFacetValue(facetResult, VALUE_NOT_SET, VALUE_NOT_SET)\n }}\n onAnySelected={() => {\n const selectedFacet = lastQueryRequest.query.selectedFacets?.find(\n selectedFacet =>\n selectedFacet.columnName === facetResult.columnName &&\n selectedFacet.jsonPath === facetResult.jsonPath,\n )\n if (selectedFacet) {\n removeSelectedFacet(selectedFacet)\n }\n }}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,UAAA,6CACA,EAAA,QAAA,SACA,EAAA,MAAA;AACF,EAAA,CAAA,CAAA,GACa,IAAU;CACrB;EAAE,OAAO;EAAwB,OAAA;CAA+B;CAChE;EAAE,OAAO;EAAO,OAAA;CAA2B;CAC3C;EAAE,OAAO;EAAS,OAAA;CAA6B;AACjD;AAMA,SAAgB,EAAiB,GAA8B;CAC7D,IAAM,EAAE,gBAAa,qBAAkB,OAAU,GAC3C,EAAE,uBAAoB,wBAAqB,8BAC/C,EAAgB,GAEZ,EAAE,MAAM,MAAkB,EAA4B,GAEtD,IAAc,EAAc,eAC9B,EAA+B,GAAa,EAAc,YAAY,IACtE,KAAA,GAEE,EAAE,4BAAyB,EAA6B,GAExD,IAAmB,QACjB,EAAuB,GAC7B,CAAC,CAAsB,CACzB;CAMA,OAJK,IAKH,kBAAC,GAAD;EACE,OAAO,EAAqB,EAAY,YAAY,EAAY,QAAQ;EAC3D;EACb,YAAY,EAAY;EACP;EACjB,uBAAuB,MAAwB;GAC7C,EACE,GACA,EAAS,EAAO,GAAG,IAAI,OAAO,EAAO,GAAG,IAAI,EAAO,KACnD,EAAS,EAAO,GAAG,IAAI,OAAO,EAAO,GAAG,IAAI,EAAO,GACrD;EACF;EACA,wBAAwB;GACtB,EAAmB,GAAa,GAAe,CAAa;EAC9D;EACA,qBAAqB;GACnB,IAAM,IAAgB,EAAiB,MAAM,gBAAgB,MAC3D,MACE,EAAc,eAAe,EAAY,cACzC,EAAc,aAAa,EAAY,QAC3C;GACA,AAAI,KACF,EAAoB,CAAa;EAErC;CACD,CAAA,IA7BM,kBAAA,GAAA,CAAI,CAAA;AA+Bf"}
1
+ {"version":3,"file":"RangeFacetFilter.js","names":[],"sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"sourcesContent":["import { getCorrespondingColumnForFacet } from '@/utils/functions/queryUtils'\nimport { FRIENDLY_VALUE_NOT_SET, VALUE_NOT_SET } from '@/utils/SynapseConstants'\nimport { FacetColumnResultRange } from '@sage-bionetworks/synapse-types'\nimport { isNumber } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { RangeValues } from '../Range'\nimport { RangeFacetFilterUI } from './RangeFacetFilterUI'\n\nexport enum RadioValuesEnum {\n NOT_SET = 'org.sagebionetworks.UNDEFINED_NULL_NOTSET',\n RANGE = 'RANGE',\n ANY = '',\n}\nexport const options = [\n { label: FRIENDLY_VALUE_NOT_SET, value: RadioValuesEnum.NOT_SET },\n { label: 'Any', value: RadioValuesEnum.ANY },\n { label: 'Range', value: RadioValuesEnum.RANGE },\n]\nexport type RangeFacetFilterProps = {\n facetResult: FacetColumnResultRange\n hideCollapsible?: boolean\n}\n\nexport function RangeFacetFilter(props: RangeFacetFilterProps) {\n const { facetResult, hideCollapsible = false } = props\n const { setRangeFacetValue, removeSelectedFacet, getCurrentQueryRequest } =\n useQueryContext()\n\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n\n const columnModel = queryMetadata.columnModels\n ? getCorrespondingColumnForFacet(facetResult, queryMetadata.columnModels)\n : undefined\n\n const { getColumnDisplayName } = useQueryVisualizationContext()\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n if (!columnModel) {\n return <></>\n }\n\n return (\n <RangeFacetFilterUI\n label={getColumnDisplayName(facetResult.columnName, facetResult.jsonPath)}\n facetResult={facetResult}\n columnType={columnModel.columnType}\n hideCollapsible={hideCollapsible}\n onRangeValueSelected={(values: RangeValues) => {\n // Normalize numbers to strings; drop NaN (lodash isNumber(NaN) === true, so it must be filtered explicitly).\n const toApiValue = (v: string | number | undefined) => {\n if (isNumber(v)) return Number.isNaN(v) ? undefined : String(v)\n return v\n }\n setRangeFacetValue(\n facetResult,\n toApiValue(values.min),\n toApiValue(values.max),\n )\n }}\n onNotSetSelected={() => {\n setRangeFacetValue(facetResult, VALUE_NOT_SET, VALUE_NOT_SET)\n }}\n onAnySelected={() => {\n const selectedFacet = lastQueryRequest.query.selectedFacets?.find(\n selectedFacet =>\n selectedFacet.columnName === facetResult.columnName &&\n selectedFacet.jsonPath === facetResult.jsonPath,\n )\n if (selectedFacet) {\n removeSelectedFacet(selectedFacet)\n }\n }}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,UAAA,6CACA,EAAA,QAAA,SACA,EAAA,MAAA;AACF,EAAA,CAAA,CAAA,GACa,IAAU;CACrB;EAAE,OAAO;EAAwB,OAAA;CAA+B;CAChE;EAAE,OAAO;EAAO,OAAA;CAA2B;CAC3C;EAAE,OAAO;EAAS,OAAA;CAA6B;AACjD;AAMA,SAAgB,EAAiB,GAA8B;CAC7D,IAAM,EAAE,gBAAa,qBAAkB,OAAU,GAC3C,EAAE,uBAAoB,wBAAqB,8BAC/C,EAAgB,GAEZ,EAAE,MAAM,MAAkB,EAA4B,GAEtD,IAAc,EAAc,eAC9B,EAA+B,GAAa,EAAc,YAAY,IACtE,KAAA,GAEE,EAAE,4BAAyB,EAA6B,GAExD,IAAmB,QACjB,EAAuB,GAC7B,CAAC,CAAsB,CACzB;CAMA,OAJK,IAKH,kBAAC,GAAD;EACE,OAAO,EAAqB,EAAY,YAAY,EAAY,QAAQ;EAC3D;EACb,YAAY,EAAY;EACP;EACjB,uBAAuB,MAAwB;GAE7C,IAAM,KAAc,MACd,EAAS,CAAC,IAAU,OAAO,MAAM,CAAC,IAAI,KAAA,IAAY,OAAO,CAAC,IACvD;GAET,EACE,GACA,EAAW,EAAO,GAAG,GACrB,EAAW,EAAO,GAAG,CACvB;EACF;EACA,wBAAwB;GACtB,EAAmB,GAAa,GAAe,CAAa;EAC9D;EACA,qBAAqB;GACnB,IAAM,IAAgB,EAAiB,MAAM,gBAAgB,MAC3D,MACE,EAAc,eAAe,EAAY,cACzC,EAAc,aAAa,EAAY,QAC3C;GACA,AAAI,KACF,EAAoB,CAAa;EAErC;CACD,CAAA,IAlCM,kBAAA,GAAA,CAAI,CAAA;AAoCf"}
@@ -1 +1 @@
1
- {"version":3,"file":"RangeFacetFilterUI.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilterUI.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,OAAO,EAAS,WAAW,EAAE,MAAM,UAAU,CAAA;AAI7C,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE;QACX,6GAA6G;QAC7G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,4GAA4G;QAC5G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACnD,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,YAAY,OAAO,oBAO7D,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,2CAkJ9D"}
1
+ {"version":3,"file":"RangeFacetFilterUI.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilterUI.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,OAAO,EAAS,WAAW,EAAE,MAAM,UAAU,CAAA;AAI7C,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE;QACX,6GAA6G;QAC7G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,4GAA4G;QAC5G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACnD,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,YAAY,OAAO,oBAO7D,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,2CA4J9D"}
@@ -24,8 +24,8 @@ var p = /* @__PURE__ */ function(e) {
24
24
  }
25
25
  ], h = (e, t) => t ? "" : e === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? "org.sagebionetworks.UNDEFINED_NULL_NOTSET" : "RANGE";
26
26
  function g(e) {
27
- let { label: p, facetResult: g, hideCollapsible: _ = !1, columnType: v, onAnySelected: y, onNotSetSelected: b, onRangeValueSelected: x } = e, [S, C] = i(!1), { columnMin: w, columnMax: T, selectedMin: E, selectedMax: D } = g, O = !E && !D, k = E || w, A = D || T, j = v === "DOUBLE" ? "number" : "date", M = (e) => {
28
- switch (P(e), e) {
27
+ let { label: p, facetResult: g, hideCollapsible: _ = !1, columnType: v, onAnySelected: y, onNotSetSelected: b, onRangeValueSelected: x } = e, [S, C] = i(!1), { columnMin: w, columnMax: T, selectedMin: E, selectedMax: D } = g, O = !E && !D, k = E === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? void 0 : E, A = D === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? void 0 : D, j = k || w, M = A || T, N = v === "DOUBLE" ? "number" : "date", P = (e) => {
28
+ switch (I(e), e) {
29
29
  case "RANGE": break;
30
30
  case "org.sagebionetworks.UNDEFINED_NULL_NOTSET":
31
31
  b();
@@ -34,7 +34,7 @@ function g(e) {
34
34
  y();
35
35
  break;
36
36
  }
37
- }, [N, P] = i(h(k ?? "", O));
37
+ }, [F, I] = i(h(E ?? "", O));
38
38
  return /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u(t, {
39
39
  isCollapsed: S,
40
40
  label: p,
@@ -43,45 +43,45 @@ function g(e) {
43
43
  }), /* @__PURE__ */ d(a, {
44
44
  in: !S,
45
45
  children: [/* @__PURE__ */ u(c, {
46
- value: N,
47
- onChange: (e, t) => M(t),
46
+ value: F,
47
+ onChange: (e, t) => P(t),
48
48
  children: m.map(({ value: e, label: t }) => /* @__PURE__ */ u(o, {
49
49
  control: /* @__PURE__ */ u(s, {}),
50
50
  label: t,
51
51
  value: e
52
52
  }, e))
53
- }), N === "RANGE" && (w && T && w === T ? /* @__PURE__ */ u("label", { children: T }) : /* @__PURE__ */ d(l, { children: [
53
+ }), F === "RANGE" && (w && T && w === T ? /* @__PURE__ */ u("label", { children: T }) : /* @__PURE__ */ d(l, { children: [
54
54
  v === "INTEGER" && (w && T ? /* @__PURE__ */ u(r, {
55
55
  domain: [w, T],
56
56
  initialValues: {
57
- min: parseInt(k ?? w),
58
- max: parseInt(A ?? T)
57
+ min: parseInt(j ?? w),
58
+ max: parseInt(M ?? T)
59
59
  },
60
60
  step: 1,
61
61
  onApplyClicked: x,
62
62
  children: ">"
63
63
  }, "RangeSlider") : /* @__PURE__ */ u(n, {
64
64
  type: "number",
65
- initialValues: k || A ? {
66
- min: k ? parseInt(k) : void 0,
67
- max: A ? parseInt(A) : void 0
65
+ initialValues: j || M ? {
66
+ min: j ? parseInt(j) : void 0,
67
+ max: M ? parseInt(M) : void 0
68
68
  } : void 0,
69
69
  onApplyClicked: x
70
70
  }, "Range")),
71
71
  v === "DATE" && /* @__PURE__ */ u(n, {
72
- initialValues: E || D || w || T ? {
73
- min: E ?? (w ? f(parseInt(w)).toString() : void 0),
74
- max: D ?? (T ? f(parseInt(T)).toString() : void 0)
72
+ initialValues: k || A || w || T ? {
73
+ min: k ?? (w ? f(parseInt(w)).toString() : void 0),
74
+ max: A ?? (T ? f(parseInt(T)).toString() : void 0)
75
75
  } : void 0,
76
- type: j,
76
+ type: N,
77
77
  onApplyClicked: x
78
78
  }, "Range"),
79
79
  v === "DOUBLE" && /* @__PURE__ */ u(n, {
80
- initialValues: k || A ? {
81
- min: k ? parseFloat(k) : void 0,
82
- max: A ? parseFloat(A) : void 0
80
+ initialValues: j || M ? {
81
+ min: j ? parseFloat(j) : void 0,
82
+ max: M ? parseFloat(M) : void 0
83
83
  } : void 0,
84
- type: j,
84
+ type: N,
85
85
  onApplyClicked: x
86
86
  }, "Range")
87
87
  ] }))]