synapse-react-client 4.0.13 → 4.0.15-SWC-7835
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.
- package/dist/SWC.index.js +1 -1
- package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.d.ts.map +1 -1
- package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js +76 -45
- package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.d.ts.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +2 -2
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +2 -2
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts +6 -0
- package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +6 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.d.ts.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js +28 -20
- package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.d.ts.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.js +7 -2
- package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.d.ts.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.js +9 -1
- package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
- package/dist/components/Goals/Goals.Desktop.d.ts +3 -1
- package/dist/components/Goals/Goals.Desktop.d.ts.map +1 -1
- package/dist/components/Goals/Goals.Desktop.js +2 -3
- package/dist/components/Goals/Goals.Desktop.js.map +1 -1
- package/dist/components/Goals/Goals.d.ts +1 -0
- package/dist/components/Goals/Goals.d.ts.map +1 -1
- package/dist/components/Goals/Goals.js +33 -27
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownTableOfContents.d.ts.map +1 -1
- package/dist/components/Markdown/widget/MarkdownTableOfContents.js +15 -11
- package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js +19 -17
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +2 -2
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js +30 -30
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +4 -2
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.js +13 -36
- package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js +14 -12
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
- package/dist/components/SynapseTable/SearchV2.d.ts +11 -0
- package/dist/components/SynapseTable/SearchV2.d.ts.map +1 -1
- package/dist/components/SynapseTable/SearchV2.js.map +1 -1
- package/dist/components/WordPress/WordPressLatestPostChip.css +1 -0
- package/dist/components/WordPress/WordPressLatestPostChip.d.ts +5 -0
- package/dist/components/WordPress/WordPressLatestPostChip.d.ts.map +1 -0
- package/dist/components/WordPress/WordPressLatestPostChip.js +29 -0
- package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -0
- package/dist/components/WordPress/WordPressLatestPostChip.module.js +9 -0
- package/dist/components/WordPress/WordPressLatestPostChip.module.js.map +1 -0
- package/dist/components/WordPress/WordPressLatestPostChip.module.scss +33 -0
- package/dist/components/WordPress/useWordPressCategories.d.ts +3 -0
- package/dist/components/WordPress/useWordPressCategories.d.ts.map +1 -0
- package/dist/components/WordPress/useWordPressCategories.js +19 -0
- package/dist/components/WordPress/useWordPressCategories.js.map +1 -0
- package/dist/components/WordPress/useWordPressPosts.d.ts +3 -0
- package/dist/components/WordPress/useWordPressPosts.d.ts.map +1 -0
- package/dist/components/WordPress/useWordPressPosts.js +23 -0
- package/dist/components/WordPress/useWordPressPosts.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.js +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +6 -6
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +24 -20
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts +2 -2
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +30 -21
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +1 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +2 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/hooks/useShowDesktop.d.ts.map +1 -1
- package/dist/utils/hooks/useShowDesktop.js +4 -9
- package/dist/utils/hooks/useShowDesktop.js.map +1 -1
- package/package.json +4 -4
|
@@ -15,26 +15,34 @@ import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
|
15
15
|
//#region src/components/FullTextSearch/FullTextSearch.tsx
|
|
16
16
|
var _ = 3, v = 300;
|
|
17
17
|
function y({ ftsConfig: y }) {
|
|
18
|
-
let { executeQueryRequest: b } = r(), { showSearchBar: x } = a(), [S, C] = u(""), [w, T] = u([]), E = l(null), { data:
|
|
18
|
+
let { executeQueryRequest: b } = r(), { showSearchBar: x } = a(), [S, C] = u(""), [w, T] = u([]), E = l(null), D = y?.minSearchQueryLength ?? _, { data: O } = i(), k = O?.columnModels;
|
|
19
19
|
c(() => {
|
|
20
|
-
(!y?.getSuggestions || S.trim().length <
|
|
21
|
-
}, [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
(!y?.getSuggestions || S.trim().length < D) && T([]);
|
|
21
|
+
}, [
|
|
22
|
+
y?.getSuggestions,
|
|
23
|
+
D,
|
|
24
|
+
S
|
|
25
|
+
]), e(() => {
|
|
26
|
+
!y?.getSuggestions || S.trim().length < D || y.getSuggestions(S).then(T).catch(() => T([]));
|
|
27
|
+
}, [
|
|
28
|
+
S,
|
|
29
|
+
y,
|
|
30
|
+
D
|
|
31
|
+
], v);
|
|
32
|
+
let A = (e) => {
|
|
33
|
+
b((t) => o(t, k, e, y)), C(""), T([]);
|
|
28
34
|
}, j = (e) => {
|
|
35
|
+
e.preventDefault(), S.trim().length < D ? E.current?.setCustomValidity(`Search term must have a minimum of ${D} characters`) : A(S);
|
|
36
|
+
}, M = (e) => {
|
|
29
37
|
E.current?.setCustomValidity(""), C(e.currentTarget.value);
|
|
30
|
-
},
|
|
38
|
+
}, N = /* @__PURE__ */ h(n, {
|
|
31
39
|
icon: "search",
|
|
32
40
|
wrap: !1,
|
|
33
41
|
sx: {
|
|
34
42
|
mr: 1,
|
|
35
43
|
color: "grey.600"
|
|
36
44
|
}
|
|
37
|
-
}),
|
|
45
|
+
}), P = /* @__PURE__ */ g(m, { children: [S.length > 0 && /* @__PURE__ */ h(s, {
|
|
38
46
|
icon: "close",
|
|
39
47
|
size: "small",
|
|
40
48
|
onClick: () => {
|
|
@@ -54,7 +62,7 @@ function y({ ftsConfig: y }) {
|
|
|
54
62
|
exit: 300
|
|
55
63
|
},
|
|
56
64
|
children: /* @__PURE__ */ h("form", {
|
|
57
|
-
onSubmit:
|
|
65
|
+
onSubmit: j,
|
|
58
66
|
children: y?.getSuggestions ? /* @__PURE__ */ h(d, {
|
|
59
67
|
freeSolo: !0,
|
|
60
68
|
disableClearable: !0,
|
|
@@ -64,7 +72,7 @@ function y({ ftsConfig: y }) {
|
|
|
64
72
|
n === "input" && (E.current?.setCustomValidity(""), C(t));
|
|
65
73
|
},
|
|
66
74
|
onChange: (e, t) => {
|
|
67
|
-
typeof t == "string" && t.trim().length >=
|
|
75
|
+
typeof t == "string" && t.trim().length >= D && A(t);
|
|
68
76
|
},
|
|
69
77
|
renderInput: (e) => /* @__PURE__ */ h(p, {
|
|
70
78
|
...e,
|
|
@@ -75,28 +83,28 @@ function y({ ftsConfig: y }) {
|
|
|
75
83
|
slotProps: {
|
|
76
84
|
input: {
|
|
77
85
|
...e.InputProps,
|
|
78
|
-
startAdornment:
|
|
79
|
-
endAdornment:
|
|
86
|
+
startAdornment: N,
|
|
87
|
+
endAdornment: P
|
|
80
88
|
},
|
|
81
89
|
htmlInput: {
|
|
82
90
|
...e.inputProps,
|
|
83
|
-
minLength:
|
|
91
|
+
minLength: D
|
|
84
92
|
}
|
|
85
93
|
}
|
|
86
94
|
})
|
|
87
95
|
}) : /* @__PURE__ */ h(p, {
|
|
88
96
|
sx: { width: "100%" },
|
|
89
|
-
onChange:
|
|
97
|
+
onChange: M,
|
|
90
98
|
placeholder: "Enter Search Terms",
|
|
91
99
|
value: S,
|
|
92
100
|
type: "text",
|
|
93
101
|
slotProps: {
|
|
94
102
|
input: {
|
|
95
|
-
startAdornment:
|
|
96
|
-
endAdornment:
|
|
103
|
+
startAdornment: N,
|
|
104
|
+
endAdornment: P
|
|
97
105
|
},
|
|
98
106
|
htmlInput: {
|
|
99
|
-
minLength:
|
|
107
|
+
minLength: D,
|
|
100
108
|
ref: E
|
|
101
109
|
}
|
|
102
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullTextSearch.js","names":[],"sources":["../../../src/components/FullTextSearch/FullTextSearch.tsx"],"sourcesContent":["import { Autocomplete, Collapse, TextField } from '@mui/material'\nimport React, {\n ChangeEvent,\n SyntheticEvent,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { useDebouncedEffect } from '@/utils/hooks'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { IconSvgButton } from '../IconSvgButton'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { updateQueryUsingSearchTerm } from './FullTextSearchUtils'\nimport { FTSConfig } from '../SynapseTable/SearchV2'\n\n// See PLFM-7011\nconst MIN_SEARCH_QUERY_LENGTH = 3\nconst SUGGESTION_DEBOUNCE_MS = 300\n\nexport type FullTextSearchProps = {\n ftsConfig?: FTSConfig\n}\n\nexport function FullTextSearch({\n ftsConfig,\n}: FullTextSearchProps): React.ReactNode {\n const { executeQueryRequest } = useQueryContext()\n const { showSearchBar } = useQueryVisualizationContext()\n const [searchText, setSearchText] = useState('')\n const [suggestions, setSuggestions] = useState<string[]>([])\n const searchInputRef = useRef<HTMLInputElement>(null)\n\n const { data } = useGetQueryMetadata()\n const columnModels = data?.columnModels\n\n // Clear suggestions immediately when the search text is too short\n useEffect(() => {\n if (\n !ftsConfig?.getSuggestions ||\n searchText.trim().length <
|
|
1
|
+
{"version":3,"file":"FullTextSearch.js","names":[],"sources":["../../../src/components/FullTextSearch/FullTextSearch.tsx"],"sourcesContent":["import { Autocomplete, Collapse, TextField } from '@mui/material'\nimport React, {\n ChangeEvent,\n SyntheticEvent,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { useDebouncedEffect } from '@/utils/hooks'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { IconSvgButton } from '../IconSvgButton'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { updateQueryUsingSearchTerm } from './FullTextSearchUtils'\nimport { FTSConfig } from '../SynapseTable/SearchV2'\n\n// See PLFM-7011\nconst MIN_SEARCH_QUERY_LENGTH = 3\nconst SUGGESTION_DEBOUNCE_MS = 300\n\nexport type FullTextSearchProps = {\n ftsConfig?: FTSConfig\n}\n\nexport function FullTextSearch({\n ftsConfig,\n}: FullTextSearchProps): React.ReactNode {\n const { executeQueryRequest } = useQueryContext()\n const { showSearchBar } = useQueryVisualizationContext()\n const [searchText, setSearchText] = useState('')\n const [suggestions, setSuggestions] = useState<string[]>([])\n const searchInputRef = useRef<HTMLInputElement>(null)\n const minSearchQueryLength: number =\n ftsConfig?.minSearchQueryLength ?? MIN_SEARCH_QUERY_LENGTH\n\n const { data } = useGetQueryMetadata()\n const columnModels = data?.columnModels\n\n // Clear suggestions immediately when the search text is too short\n useEffect(() => {\n if (\n !ftsConfig?.getSuggestions ||\n searchText.trim().length < minSearchQueryLength\n ) {\n setSuggestions([])\n }\n }, [ftsConfig?.getSuggestions, minSearchQueryLength, searchText])\n\n // Fetch autocomplete suggestions whenever searchText changes (debounced)\n useDebouncedEffect(\n () => {\n if (\n !ftsConfig?.getSuggestions ||\n searchText.trim().length < minSearchQueryLength\n ) {\n return\n }\n ftsConfig\n .getSuggestions(searchText)\n .then(setSuggestions)\n .catch(() => setSuggestions([]))\n },\n [searchText, ftsConfig, minSearchQueryLength],\n SUGGESTION_DEBOUNCE_MS,\n )\n\n const executeSearch = (text: string) => {\n executeQueryRequest(queryBundleRequest =>\n updateQueryUsingSearchTerm(\n queryBundleRequest,\n columnModels,\n text,\n ftsConfig,\n ),\n )\n setSearchText('')\n setSuggestions([])\n }\n\n const search = (event: SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n // The HTML validation doesn't trim the string, so we add an extra check.\n // We don't auto-trim the form text ourselves because the user may still be focused on the input.\n if (searchText.trim().length < minSearchQueryLength) {\n searchInputRef.current?.setCustomValidity(\n `Search term must have a minimum of ${minSearchQueryLength} characters`,\n )\n } else {\n executeSearch(searchText)\n }\n }\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n searchInputRef.current?.setCustomValidity('')\n setSearchText(event.currentTarget.value)\n }\n\n const startAdornment = (\n <IconSvg\n icon=\"search\"\n wrap={false}\n sx={{\n mr: 1,\n color: 'grey.600',\n }}\n />\n )\n\n const endAdornment = (\n <>\n {searchText.length > 0 && (\n <IconSvgButton\n icon=\"close\"\n size=\"small\"\n onClick={() => {\n setSearchText('')\n setSuggestions([])\n }}\n />\n )}\n {ftsConfig?.searchHelpURL && (\n <HelpPopover\n markdownText={'This search bar is powered by MySQL Full Text Search.'}\n helpUrl={ftsConfig.searchHelpURL}\n placement=\"left\"\n />\n )}\n </>\n )\n\n return (\n <div className={`QueryWrapperFullTextSearchInput`}>\n <Collapse in={showSearchBar} timeout={{ enter: 300, exit: 300 }}>\n <form onSubmit={search}>\n {ftsConfig?.getSuggestions ? (\n <Autocomplete\n freeSolo\n disableClearable\n options={suggestions}\n inputValue={searchText}\n onInputChange={(_, newValue, reason) => {\n if (reason !== 'input') return\n searchInputRef.current?.setCustomValidity('')\n setSearchText(newValue)\n }}\n onChange={(_, newValue) => {\n // Auto-execute search when a suggestion is selected from the dropdown\n if (\n typeof newValue === 'string' &&\n newValue.trim().length >= minSearchQueryLength\n ) {\n executeSearch(newValue)\n }\n }}\n renderInput={params => (\n <TextField\n {...params}\n inputRef={searchInputRef}\n sx={{ width: '100%' }}\n placeholder=\"Enter Search Terms\"\n type=\"text\"\n slotProps={{\n input: {\n ...params.InputProps,\n startAdornment,\n endAdornment,\n },\n htmlInput: {\n ...params.inputProps,\n minLength: minSearchQueryLength,\n },\n }}\n />\n )}\n />\n ) : (\n <TextField\n sx={{ width: '100%' }}\n onChange={handleChange}\n placeholder=\"Enter Search Terms\"\n value={searchText}\n type=\"text\"\n slotProps={{\n input: {\n startAdornment,\n endAdornment,\n },\n htmlInput: {\n minLength: minSearchQueryLength,\n ref: searchInputRef,\n },\n }}\n />\n )}\n </form>\n </Collapse>\n </div>\n )\n}\n\nexport default FullTextSearch\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,IAAM,IAA0B,GAC1B,IAAyB;AAM/B,SAAgB,EAAe,EAC7B,gBACuC;CACvC,IAAM,EAAE,2BAAwB,GAAiB,EAC3C,EAAE,qBAAkB,GAA8B,EAClD,CAAC,GAAY,KAAiB,EAAS,GAAG,EAC1C,CAAC,GAAa,KAAkB,EAAmB,EAAE,CAAC,EACtD,IAAiB,EAAyB,KAAK,EAC/C,IACJ,GAAW,wBAAwB,GAE/B,EAAE,YAAS,GAAqB,EAChC,IAAe,GAAM;AAa3B,CAVA,QAAgB;AACd,GACE,CAAC,GAAW,kBACZ,EAAW,MAAM,CAAC,SAAS,MAE3B,EAAe,EAAE,CAAC;IAEnB;EAAC,GAAW;EAAgB;EAAsB;EAAW,CAAC,EAGjE,QACQ;AAEF,GAAC,GAAW,kBACZ,EAAW,MAAM,CAAC,SAAS,KAI7B,EACG,eAAe,EAAW,CAC1B,KAAK,EAAe,CACpB,YAAY,EAAe,EAAE,CAAC,CAAC;IAEpC;EAAC;EAAY;EAAW;EAAqB,EAC7C,EACD;CAED,IAAM,KAAiB,MAAiB;AAUtC,EATA,GAAoB,MAClB,EACE,GACA,GACA,GACA,EACD,CACF,EACD,EAAc,GAAG,EACjB,EAAe,EAAE,CAAC;IAGd,KAAU,MAA2C;AAKzD,EAJA,EAAM,gBAAgB,EAIlB,EAAW,MAAM,CAAC,SAAS,IAC7B,EAAe,SAAS,kBACtB,sCAAsC,EAAqB,aAC5D,GAED,EAAc,EAAW;IAIvB,KAAgB,MAAyC;AAE7D,EADA,EAAe,SAAS,kBAAkB,GAAG,EAC7C,EAAc,EAAM,cAAc,MAAM;IAGpC,IACJ,kBAAC,GAAD;EACE,MAAK;EACL,MAAM;EACN,IAAI;GACF,IAAI;GACJ,OAAO;GACR;EACD,CAAA,EAGE,IACJ,kBAAA,GAAA,EAAA,UAAA,CACG,EAAW,SAAS,KACnB,kBAAC,GAAD;EACE,MAAK;EACL,MAAK;EACL,eAAe;AAEb,GADA,EAAc,GAAG,EACjB,EAAe,EAAE,CAAC;;EAEpB,CAAA,EAEH,GAAW,iBACV,kBAAC,GAAD;EACE,cAAc;EACd,SAAS,EAAU;EACnB,WAAU;EACV,CAAA,CAEH,EAAA,CAAA;AAGL,QACE,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GAAU,IAAI;GAAe,SAAS;IAAE,OAAO;IAAK,MAAM;IAAK;aAC7D,kBAAC,QAAD;IAAM,UAAU;cACb,GAAW,iBACV,kBAAC,GAAD;KACE,UAAA;KACA,kBAAA;KACA,SAAS;KACT,YAAY;KACZ,gBAAgB,GAAG,GAAU,MAAW;AAClC,YAAW,YACf,EAAe,SAAS,kBAAkB,GAAG,EAC7C,EAAc,EAAS;;KAEzB,WAAW,GAAG,MAAa;AAEzB,MACE,OAAO,KAAa,YACpB,EAAS,MAAM,CAAC,UAAU,KAE1B,EAAc,EAAS;;KAG3B,cAAa,MACX,kBAAC,GAAD;MACE,GAAI;MACJ,UAAU;MACV,IAAI,EAAE,OAAO,QAAQ;MACrB,aAAY;MACZ,MAAK;MACL,WAAW;OACT,OAAO;QACL,GAAG,EAAO;QACV;QACA;QACD;OACD,WAAW;QACT,GAAG,EAAO;QACV,WAAW;QACZ;OACF;MACD,CAAA;KAEJ,CAAA,GAEF,kBAAC,GAAD;KACE,IAAI,EAAE,OAAO,QAAQ;KACrB,UAAU;KACV,aAAY;KACZ,OAAO;KACP,MAAK;KACL,WAAW;MACT,OAAO;OACL;OACA;OACD;MACD,WAAW;OACT,WAAW;OACX,KAAK;OACN;MACF;KACD,CAAA;IAEC,CAAA;GACE,CAAA;EACP,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullTextSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/components/FullTextSearch/FullTextSearchUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGX,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGpD;;;GAGG;AACH,wBAAgB,4CAA4C,CAC1D,gBAAgB,EAAE,MAAM,UAYzB;AAID,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,SAEV,0BAgBF;AAED,wBAAgB,0BAA0B,CACxC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,EACvC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,SAAS,GACpB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"FullTextSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/components/FullTextSearch/FullTextSearchUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGX,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGpD;;;GAGG;AACH,wBAAgB,4CAA4C,CAC1D,gBAAgB,EAAE,MAAM,UAYzB;AAID,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,SAEV,0BAgBF;AAED,wBAAgB,0BAA0B,CACxC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,EACvC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,SAAS,GACpB,kBAAkB,CA2DpB"}
|
|
@@ -32,8 +32,13 @@ function o(n, i, o, s) {
|
|
|
32
32
|
c.push(e);
|
|
33
33
|
} else {
|
|
34
34
|
let e = a(o, s);
|
|
35
|
-
if (
|
|
36
|
-
|
|
35
|
+
if (s?.replaceExistingFilter) {
|
|
36
|
+
for (let t = c.length - 1; t >= 0; t--) c[t].concreteType === e.concreteType && c.splice(t, 1);
|
|
37
|
+
c.push(e);
|
|
38
|
+
} else {
|
|
39
|
+
if (c.find((t) => t.concreteType == e.concreteType && t.searchExpression == e.searchExpression)) return n;
|
|
40
|
+
c.push(e);
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
43
|
return n.query.additionalFilters = c, n;
|
|
39
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullTextSearchUtils.js","names":[],"sources":["../../../src/components/FullTextSearch/FullTextSearchUtils.ts"],"sourcesContent":["import { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport {\n ColumnModel,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n QueryBundleRequest,\n TextMatchesQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { getFileColumnModelId } from '../SynapseTable/SynapseTableUtils'\nimport { FTSConfig } from '../SynapseTable/SearchV2'\nimport { getWordCount } from '../TextField/TextFieldWithWordLimit'\n\n/**\n * Expects a search expression of the form: \"searchText\" @3\n * In this example, this function will return the following string via a regex: searchText\n */\nexport function getSearchTextFromBooleanModeSearchExpression(\n searchExpression: string,\n) {\n /**\n * ^\"(.+?)\": Matches the opening double quote and lazily captures any characters until the next quote.\n * \\s*@\\d+$: Matches optional whitespace, the @ symbol, and one or more digits at the end.\n */\n const match = searchExpression.match(/^\"(.+?)\"\\s*@\\d+$/)\n if (match) {\n return match[1]\n } else {\n return ''\n }\n}\n\n// Convert the user-provided searchText into a search expression given the current FTS configuration.\n// If configured to search using BOOLEAN mode, search expression will wrap the search text in double quotes and include the distance.\nexport function getTextMatchesQueryFilter(\n searchText: string,\n ftsConfig: FTSConfig = {\n textMatchesMode: 'NATURAL_LANGUAGE',\n },\n) {\n const { textMatchesMode, distance = 0 } = ftsConfig\n let searchExpression = searchText\n if (textMatchesMode == 'BOOLEAN') {\n //split by non-word character and ignore empty strings\n const searchTextWordLength = getWordCount(searchText)\n const distanceToUse = Math.max(distance, searchTextWordLength)\n searchExpression = `\"${searchText.replaceAll('\"', '')}\" @${distanceToUse}`\n }\n const textMatchesQueryFilter: TextMatchesQueryFilter = {\n concreteType: 'org.sagebionetworks.repo.model.table.TextMatchesQueryFilter',\n searchExpression,\n searchMode: ftsConfig.textMatchesMode,\n }\n return textMatchesQueryFilter\n}\n\nexport function updateQueryUsingSearchTerm(\n queryBundleRequest: QueryBundleRequest,\n columnModels: ColumnModel[] | undefined,\n searchText: string,\n ftsConfig?: FTSConfig,\n): QueryBundleRequest {\n const { additionalFilters = [] } = queryBundleRequest.query\n const synIdColumnModelId = getFileColumnModelId(columnModels)\n const isSynapseID = searchText.match(SYNAPSE_ENTITY_ID_REGEX)\n if (isSynapseID && synIdColumnModelId) {\n const idColumnModel = columnModels?.filter(\n el => el.id === synIdColumnModelId,\n )\n const singleValueQueryFilter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: idColumnModel![0].name,\n operator: ColumnSingleValueFilterOperator.IN,\n values: [searchText],\n }\n // Replace the active filter on the column, if one exists\n const matchingFilter = additionalFilters.find(\n filter =>\n filter.concreteType == singleValueQueryFilter.concreteType &&\n filter.columnName == singleValueQueryFilter.columnName,\n ) as ColumnSingleValueQueryFilter\n if (matchingFilter) {\n if (!matchingFilter.values.includes(searchText)) {\n matchingFilter.values.push(searchText)\n }\n return queryBundleRequest\n }\n additionalFilters.push(singleValueQueryFilter)\n } else {\n const textMatchesQueryFilter = getTextMatchesQueryFilter(\n searchText,\n ftsConfig,\n )\n // PORTALS-2093: does this additional filter already exist?\n
|
|
1
|
+
{"version":3,"file":"FullTextSearchUtils.js","names":[],"sources":["../../../src/components/FullTextSearch/FullTextSearchUtils.ts"],"sourcesContent":["import { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport {\n ColumnModel,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n QueryBundleRequest,\n TextMatchesQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { getFileColumnModelId } from '../SynapseTable/SynapseTableUtils'\nimport { FTSConfig } from '../SynapseTable/SearchV2'\nimport { getWordCount } from '../TextField/TextFieldWithWordLimit'\n\n/**\n * Expects a search expression of the form: \"searchText\" @3\n * In this example, this function will return the following string via a regex: searchText\n */\nexport function getSearchTextFromBooleanModeSearchExpression(\n searchExpression: string,\n) {\n /**\n * ^\"(.+?)\": Matches the opening double quote and lazily captures any characters until the next quote.\n * \\s*@\\d+$: Matches optional whitespace, the @ symbol, and one or more digits at the end.\n */\n const match = searchExpression.match(/^\"(.+?)\"\\s*@\\d+$/)\n if (match) {\n return match[1]\n } else {\n return ''\n }\n}\n\n// Convert the user-provided searchText into a search expression given the current FTS configuration.\n// If configured to search using BOOLEAN mode, search expression will wrap the search text in double quotes and include the distance.\nexport function getTextMatchesQueryFilter(\n searchText: string,\n ftsConfig: FTSConfig = {\n textMatchesMode: 'NATURAL_LANGUAGE',\n },\n) {\n const { textMatchesMode, distance = 0 } = ftsConfig\n let searchExpression = searchText\n if (textMatchesMode == 'BOOLEAN') {\n //split by non-word character and ignore empty strings\n const searchTextWordLength = getWordCount(searchText)\n const distanceToUse = Math.max(distance, searchTextWordLength)\n searchExpression = `\"${searchText.replaceAll('\"', '')}\" @${distanceToUse}`\n }\n const textMatchesQueryFilter: TextMatchesQueryFilter = {\n concreteType: 'org.sagebionetworks.repo.model.table.TextMatchesQueryFilter',\n searchExpression,\n searchMode: ftsConfig.textMatchesMode,\n }\n return textMatchesQueryFilter\n}\n\nexport function updateQueryUsingSearchTerm(\n queryBundleRequest: QueryBundleRequest,\n columnModels: ColumnModel[] | undefined,\n searchText: string,\n ftsConfig?: FTSConfig,\n): QueryBundleRequest {\n const { additionalFilters = [] } = queryBundleRequest.query\n const synIdColumnModelId = getFileColumnModelId(columnModels)\n const isSynapseID = searchText.match(SYNAPSE_ENTITY_ID_REGEX)\n if (isSynapseID && synIdColumnModelId) {\n const idColumnModel = columnModels?.filter(\n el => el.id === synIdColumnModelId,\n )\n const singleValueQueryFilter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: idColumnModel![0].name,\n operator: ColumnSingleValueFilterOperator.IN,\n values: [searchText],\n }\n // Replace the active filter on the column, if one exists\n const matchingFilter = additionalFilters.find(\n filter =>\n filter.concreteType == singleValueQueryFilter.concreteType &&\n filter.columnName == singleValueQueryFilter.columnName,\n ) as ColumnSingleValueQueryFilter\n if (matchingFilter) {\n if (!matchingFilter.values.includes(searchText)) {\n matchingFilter.values.push(searchText)\n }\n return queryBundleRequest\n }\n additionalFilters.push(singleValueQueryFilter)\n } else {\n const textMatchesQueryFilter = getTextMatchesQueryFilter(\n searchText,\n ftsConfig,\n )\n if (ftsConfig?.replaceExistingFilter) {\n // Remove all existing TextMatchesQueryFilters, then add the new one\n for (let i = additionalFilters.length - 1; i >= 0; i--) {\n if (\n additionalFilters[i].concreteType ===\n textMatchesQueryFilter.concreteType\n ) {\n additionalFilters.splice(i, 1)\n }\n }\n additionalFilters.push(textMatchesQueryFilter)\n } else {\n // PORTALS-2093: does this additional filter already exist?\n const found = additionalFilters.find(\n filter =>\n filter.concreteType == textMatchesQueryFilter.concreteType &&\n filter.searchExpression == textMatchesQueryFilter.searchExpression,\n )\n if (found) {\n return queryBundleRequest\n }\n additionalFilters.push(textMatchesQueryFilter)\n }\n }\n queryBundleRequest.query.additionalFilters = additionalFilters\n return queryBundleRequest\n}\n"],"mappings":";;;;;AAgBA,SAAgB,EACd,GACA;CAKA,IAAM,IAAQ,EAAiB,MAAM,mBAAmB;AAItD,QAHE,IACK,EAAM,KAEN;;AAMX,SAAgB,EACd,GACA,IAAuB,EACrB,iBAAiB,oBAClB,EACD;CACA,IAAM,EAAE,oBAAiB,cAAW,MAAM,GACtC,IAAmB;AACvB,KAAI,KAAmB,WAAW;EAEhC,IAAM,IAAuB,EAAa,EAAW,EAC/C,IAAgB,KAAK,IAAI,GAAU,EAAqB;AAC9D,MAAmB,IAAI,EAAW,WAAW,MAAK,GAAG,CAAC,KAAK;;AAO7D,QAAO;EAJL,cAAc;EACd;EACA,YAAY,EAAU;EAEjB;;AAGT,SAAgB,EACd,GACA,GACA,GACA,GACoB;CACpB,IAAM,EAAE,uBAAoB,EAAE,KAAK,EAAmB,OAChD,IAAqB,EAAqB,EAAa;AAE7D,KADoB,EAAW,MAAM,EACjC,IAAe,GAAoB;EAIrC,IAAM,IAAuD;GAC3D,cACE;GACF,aANoB,GAAc,QAClC,MAAM,EAAG,OAAO,EACjB,EAI4B,GAAG;GAC9B,UAAU,EAAgC;GAC1C,QAAQ,CAAC,EAAW;GACrB,EAEK,IAAiB,EAAkB,MACvC,MACE,EAAO,gBAAgB,EAAuB,gBAC9C,EAAO,cAAc,EAAuB,WAC/C;AACD,MAAI,EAIF,QAHK,EAAe,OAAO,SAAS,EAAW,IAC7C,EAAe,OAAO,KAAK,EAAW,EAEjC;AAET,IAAkB,KAAK,EAAuB;QACzC;EACL,IAAM,IAAyB,EAC7B,GACA,EACD;AACD,MAAI,GAAW,uBAAuB;AAEpC,QAAK,IAAI,IAAI,EAAkB,SAAS,GAAG,KAAK,GAAG,IACjD,CACE,EAAkB,GAAG,iBACrB,EAAuB,gBAEvB,EAAkB,OAAO,GAAG,EAAE;AAGlC,KAAkB,KAAK,EAAuB;SACzC;AAOL,OALc,EAAkB,MAC9B,MACE,EAAO,gBAAgB,EAAuB,gBAC9C,EAAO,oBAAoB,EAAuB,iBAElD,CACF,QAAO;AAET,KAAkB,KAAK,EAAuB;;;AAIlD,QADA,EAAmB,MAAM,oBAAoB,GACtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BioregistryRules.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB;;qBAFL,MAAM;
|
|
1
|
+
{"version":3,"file":"BioregistryRules.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB;;qBAFL,MAAM;GAy0B7B,CAAA"}
|
|
@@ -256,6 +256,14 @@ var e = (e) => `https://bioregistry.io/${e}`, t = [
|
|
|
256
256
|
regex: /(edam:(?:data|topic|operation|format)\_\d{4})/,
|
|
257
257
|
onMatch: e
|
|
258
258
|
},
|
|
259
|
+
{
|
|
260
|
+
regex: /(edam.data:\d+)/,
|
|
261
|
+
onMatch: e
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
regex: /(edam.topic:\d+)/,
|
|
265
|
+
onMatch: e
|
|
266
|
+
},
|
|
259
267
|
{
|
|
260
268
|
regex: /(ega.dataset:EGAD\d{11})/,
|
|
261
269
|
onMatch: e
|
|
@@ -521,7 +529,7 @@ var e = (e) => `https://bioregistry.io/${e}`, t = [
|
|
|
521
529
|
onMatch: e
|
|
522
530
|
},
|
|
523
531
|
{
|
|
524
|
-
regex: /(ncit:
|
|
532
|
+
regex: /(ncit:(?:C|R|P|A|NHC)\d+)/,
|
|
525
533
|
onMatch: e
|
|
526
534
|
},
|
|
527
535
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BioregistryRules.js","names":[],"sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\n// This file is auto-generated. Do not edit manually.\n// Generated from bioregistry.io API based on collection.yaml\n\nconst onMatch = (value: string) => `https://bioregistry.io/${value}`\n\nexport const bioregistryRules = [\n {\n regex: /(ado:\\d{7})/,\n onMatch,\n },\n {\n regex: /(agrkb:[1-9][0-9]{14})/,\n onMatch,\n },\n {\n regex: /(anzctr:ACTRN\\d+)/,\n onMatch,\n },\n {\n regex: /(arrayexpress:[AEP]-\\w{4}-\\d+)/,\n onMatch,\n },\n {\n regex: /(arxiv:(?:\\w+(?:\\-\\w+)?(?:\\.\\w+)?\\/?)?\\d{4,7}(?:\\.\\d+(?:v\\d+)?)?)/,\n onMatch,\n },\n {\n regex: /(atc:[A-Z](?:\\d+(?:[A-Z]{1,2}(?:\\d+)?)?)?)/,\n onMatch,\n },\n {\n regex: /(atcc:(?:[a-zA-Z]+-)?\\d+(?:\\.\\d)?)/,\n onMatch,\n },\n {\n regex: /(bacdive:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(bfo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(bgee.gene:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(biocyc:[A-Z-0-9]+(?:\\:)?[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(biogrid:\\d+)/,\n onMatch,\n },\n {\n regex: /(bioportal:(?:(?:\\d+)|(?:\\w+)))/,\n onMatch,\n },\n {\n regex: /(bioproject:PRJ[DEN][A-Z]\\d+)/,\n onMatch,\n },\n {\n regex: /(biorxiv:(?:\\d{4}\\.\\d{2}\\.\\d{2}\\.)?\\d{6,8}(?:v\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(biosample:SAM[NED](?:\\w)?\\d+)/,\n onMatch,\n },\n {\n regex: /(biostudies:S-[A-Z]{4}[\\-\\_A-Z\\d]+)/,\n onMatch,\n },\n {\n regex: /(bmrb:(?:bmr|bmse|bmst)?[0-9]{1,6})/,\n onMatch,\n },\n {\n regex:\n /(brenda:(?:(?:\\d+\\.-\\.-\\.-)|(?:\\d+\\.\\d+\\.-\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.\\d+)))/,\n onMatch,\n },\n {\n regex: /(brenda.ligand:\\d+)/,\n onMatch,\n },\n {\n regex: /(brenda.ligandgroup:\\d+)/,\n onMatch,\n },\n {\n regex: /(bto:\\d{7})/,\n onMatch,\n },\n {\n regex: /(cath:[1-6]\\.[0-9]+\\.[0-9]+\\.[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cbioportal:[a-z0-9\\_]+)/,\n onMatch,\n },\n {\n regex: /(cdd:(?:cd)?\\d{5})/,\n onMatch,\n },\n {\n regex: /(cellimage:\\d+)/,\n onMatch,\n },\n {\n regex:\n /(cellxgene.collection:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/,\n onMatch,\n },\n {\n regex: /(chebi:\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl.compound:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chemspider:\\d+)/,\n onMatch,\n },\n {\n regex: /(civic.aid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.did:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.eid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.gid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.sid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.tid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.vid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(clinicaltrials:NCT\\d{8})/,\n onMatch,\n },\n {\n regex: /(clinvar:\\d+)/,\n onMatch,\n },\n {\n regex: /(clinvar.record:RCV\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(complexportal:CPX-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cosmic:[A-Z0-9][A-Z0-9-]*)/,\n onMatch,\n },\n {\n regex: /(cosmic.cell:\\d+)/,\n onMatch,\n },\n {\n regex: /(cpt:\\d+)/,\n onMatch,\n },\n {\n regex: /(ctd.chemical:[CD]\\d+)/,\n onMatch,\n },\n {\n regex: /(ctri:CTRI\\/\\d{4}\\/\\d{2,3}\\/\\d+)/,\n onMatch,\n },\n {\n regex: /(cvx:\\d+)/,\n onMatch,\n },\n {\n regex: /(dbgap:phs[0-9]{6}(?:.v\\d+.p\\d+)?)/,\n onMatch,\n },\n {\n regex: /(dbsnp:rs\\d+)/,\n onMatch,\n },\n {\n regex: /(decipher:\\d+)/,\n onMatch,\n },\n {\n regex: /(depmap:ACH-\\d+)/,\n onMatch,\n },\n {\n regex: /(dhba:\\d+)/,\n onMatch,\n },\n {\n regex: /(disprot:DP\\d{5})/,\n onMatch,\n },\n {\n regex: /(dmba:\\d+)/,\n onMatch,\n },\n {\n regex: /(doi:10.\\d{2,9}\\/.*)/,\n onMatch,\n },\n {\n regex: /(doid:\\d+)/,\n onMatch,\n },\n {\n regex: /(drks:DRKS\\d+)/,\n onMatch,\n },\n {\n regex: /(drugbank:DB\\d{5})/,\n onMatch,\n },\n {\n regex: /(drugcentral:\\d+)/,\n onMatch,\n },\n {\n regex: /(duo:\\d{7})/,\n onMatch,\n },\n {\n regex:\n /(ec:\\d{1,2}(?:(?:(?:\\.\\d{1,3}){1,3})|(?:\\.\\d+){2}\\.[nB]\\d{1,3}|\\.-\\.-\\.-|\\.\\d{1,3}\\.-\\.-|\\.\\d{1,3}\\.\\d{1,3}\\.-)?)/,\n onMatch,\n },\n {\n regex: /(ecacc:\\d+)/,\n onMatch,\n },\n {\n regex: /(edam:(?:data|topic|operation|format)\\_\\d{4})/,\n onMatch,\n },\n {\n regex: /(ega.dataset:EGAD\\d{11})/,\n onMatch,\n },\n {\n regex: /(ega.study:EGAS\\d{11})/,\n onMatch,\n },\n {\n regex: /(emdb:EMD-\\d{4,5})/,\n onMatch,\n },\n {\n regex: /(empiar:\\d+)/,\n onMatch,\n },\n {\n regex: /(ena.embl:[A-Z]+[0-9]+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex:\n /(ensembl:(?:(?:ENS[FPTG]\\d{11}(?:\\.\\d+)?)|(?:FB\\w{2}\\d{7})|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)|(?:[A-Z_a-z0-9]+(?:\\.)?(?:t)?(?:\\d+)?(?:[a-z])?)))/,\n onMatch,\n },\n {\n regex: /(ensembl.metazoa:\\w+(?:\\.)?\\d+)/,\n onMatch,\n },\n {\n regex: /(ensembl.plant:\\w+(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(euclinicaltrials:\\d{4}\\-\\d{6}\\-\\d{2})/,\n onMatch,\n },\n {\n regex: /(eupath:\\d{7})/,\n onMatch,\n },\n {\n regex: /(exac.variant:\\d{1,2}\\-\\d+\\-[GATC]\\-[GATC])/,\n onMatch,\n },\n {\n regex: /(fairsharing:(?:bsg-[dscp]?\\d{6})|(?:FAIRsharing\\.\\w+))/,\n onMatch,\n },\n {\n regex: /(flybase:FB\\w{2}\\d{7})/,\n onMatch,\n },\n {\n regex: /(fma:\\d+)/,\n onMatch,\n },\n {\n regex: /(funderregistry:\\d+)/,\n onMatch,\n },\n {\n regex: /(gard:\\d+)/,\n onMatch,\n },\n {\n regex: /(gbif:\\d+)/,\n onMatch,\n },\n {\n regex: /(gdc:[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/,\n onMatch,\n },\n {\n regex: /(genecards:[A-Za-z-0-9_]+(?:\\@)?)/,\n onMatch,\n },\n {\n regex: /(geo:G(?:PL|SM|SE|DS)\\d+)/,\n onMatch,\n },\n {\n regex: /(go:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.gene:GR\\:\\d+)/,\n onMatch,\n },\n {\n regex: /(gramene.growthstage:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.protein:\\d+)/,\n onMatch,\n },\n {\n regex: /(gtdb:[cdfgops]__\\w+\\S+)/,\n onMatch,\n },\n {\n regex: /(hba:\\d+)/,\n onMatch,\n },\n {\n regex: /(hc.trial:\\d+)/,\n onMatch,\n },\n {\n regex: /(hgnc:\\d{1,5})/,\n onMatch,\n },\n {\n regex: /(hl7.v2codesystem:\\d+)/,\n onMatch,\n },\n {\n regex: /(hmdb:HMDB\\d+)/,\n onMatch,\n },\n {\n regex:\n /(icd10:(?:(?:[XVI]+)|(?:[A-Z][0-9]+(?:(?:-[A-Z][0-9]+)|(?:\\.[0-9]))?)))/,\n onMatch,\n },\n {\n regex:\n /(icd9:(?:(?:\\d{1,3}-\\d{1,3})|(?:(?:\\d\\d\\d|V\\d\\d|E[8-9]\\d\\d)(?:\\.\\d{1,2})?)))/,\n onMatch,\n },\n {\n regex: /(icdc:\\d{6})/,\n onMatch,\n },\n {\n regex: /(icf:\\d+)/,\n onMatch,\n },\n {\n regex: /(idr:[0-9]{4})/,\n onMatch,\n },\n {\n regex: /(imgt.hla:[A-Z0-9*:]+)/,\n onMatch,\n },\n {\n regex:\n /(inchi:InChI\\=1S?\\/[A-Za-z0-9\\.]+(?:\\+[0-9]+)?(?:\\/[cnpqbtmsih][A-Za-z0-9\\-\\+\\(?:\\)\\,\\/\\?\\;\\.]+)*)/,\n onMatch,\n },\n {\n regex: /(inchikey:[A-Z]{14}\\-[A-Z]{10}(?:\\-[A-Z])?)/,\n onMatch,\n },\n {\n regex:\n /(insdc:(?:[A-Z]\\d{5}|[A-Z]{2}\\d{6}|[A-Z]{4,6}\\d{8,10}|[A-J][A-Z]{2}\\d{5})(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(insdc.sra:[SED]R[APRSXZ]\\d+)/,\n onMatch,\n },\n {\n regex: /(intact:EBI\\-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(interpro:IPR\\d{6})/,\n onMatch,\n },\n {\n regex: /(iso.3166:\\d+)/,\n onMatch,\n },\n {\n regex: /(isrctn:ISRCTN\\d+)/,\n onMatch,\n },\n {\n regex: /(itis:\\d+)/,\n onMatch,\n },\n {\n regex: /(jaxmice:\\d{6})/,\n onMatch,\n },\n {\n regex:\n /(kegg:(?:(?:[CHDEGTMKR]\\d+)|(?:\\w+:[\\w\\d\\.-]*)|(?:\\w{2,4}\\d{5})|(?:[a-z]{3,5})))/,\n onMatch,\n },\n {\n regex: /(kegg.compound:C\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.disease:H\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.drug:D\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.glycan:G\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.pathway:\\w{2,4}\\d{5})/,\n onMatch,\n },\n {\n regex: /(kegg.reaction:R\\d+)/,\n onMatch,\n },\n {\n regex: /(loinc:(?:\\d|\\w)+-\\d)/,\n onMatch,\n },\n {\n regex: /(massive:MSV\\d+)/,\n onMatch,\n },\n {\n regex: /(mba:\\d+)/,\n onMatch,\n },\n {\n regex: /(mesh:(?:C|D|Q)\\d+)/,\n onMatch,\n },\n {\n regex: /(metabolights:MTBL[CS]\\d+)/,\n onMatch,\n },\n {\n regex: /(metacyc.compound:[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(mgi:\\d+)/,\n onMatch,\n },\n {\n regex: /(mir:\\d{8})/,\n onMatch,\n },\n {\n regex: /(mirbase:MI\\d{7})/,\n onMatch,\n },\n {\n regex: /(mondo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ncbigene:\\d+)/,\n onMatch,\n },\n {\n regex: /(ncbiprotein:\\w+_?\\d+(?:.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ncbitaxon:(?:(?:\\d+)|(?:[a-zA-Z_]+)))/,\n onMatch,\n },\n {\n regex: /(ncit:[CRPA]\\d+)/,\n onMatch,\n },\n {\n regex: /(ndc:\\d+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(ndfrt:N[0-9]{10})/,\n onMatch,\n },\n {\n regex: /(nextprot:NX_\\w+)/,\n onMatch,\n },\n {\n regex: /(nihreporter.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(nord:\\d+)/,\n onMatch,\n },\n {\n regex: /(omim:\\d+)/,\n onMatch,\n },\n {\n regex: /(omop:\\d+)/,\n onMatch,\n },\n {\n regex: /(orcid:\\d{4}-\\d{4}-\\d{4}-\\d{3}(?:\\d|X))/,\n onMatch,\n },\n {\n regex: /(orphanet:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(orphanet.ordo:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(osf:[a-z0-9]{5})/,\n onMatch,\n },\n {\n regex: /(panther.family:PTHR\\d{5}(?:\\:SF\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(panther.pathway:P\\d{5})/,\n onMatch,\n },\n {\n regex: /(panther.pthcmp:(?:G|P|U|C|S)\\d{5})/,\n onMatch,\n },\n {\n regex: /(pba:\\d+)/,\n onMatch,\n },\n {\n regex: /(pdb:[0-9][A-Za-z0-9]{3})/,\n onMatch,\n },\n {\n regex: /(pdb-ccd:\\w{1,3})/,\n onMatch,\n },\n {\n regex: /(pdb.ligand:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(pdc.study:PDC\\d+)/,\n onMatch,\n },\n {\n regex: /(peco:\\d{7})/,\n onMatch,\n },\n {\n regex: /(peptideatlas.dataset:PASS\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam:PF\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam.clan:CL\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.disease:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.drug:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.gene:PA\\w+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.pathways:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pmc:PMC\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(pombase:S\\w+(?:\\.)?\\w+(?:\\.)?)/,\n onMatch,\n },\n {\n regex: /(pride.project:P(?:X|R|A)D\\d{6})/,\n onMatch,\n },\n {\n regex: /(pubchem.compound:\\d+)/,\n onMatch,\n },\n {\n regex: /(pubmed:\\d+)/,\n onMatch,\n },\n {\n regex: /(px:(?:R)?PXD\\d{6})/,\n onMatch,\n },\n {\n regex: /(radlex:RID\\d+)/,\n onMatch,\n },\n {\n regex: /(reactome:R-[A-Z]{3}-\\d+(?:-\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rebec:RBR-\\w+)/,\n onMatch,\n },\n {\n regex:\n /(refseq:(?:(?:(?:AC|AP|NC|NG|NM|NP|NR|NT|NW|WP|XM|XP|XR|YP|ZP)_\\d+)|(?:NZ_[A-Z]{2,4}\\d+))(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rfam:RF\\d{5})/,\n onMatch,\n },\n {\n regex: /(rfc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rgd:\\d{4,})/,\n onMatch,\n },\n {\n regex: /(rhea:\\d{5})/,\n onMatch,\n },\n {\n regex: /(rnacentral:URS[0-9A-F]{10}(?:\\_\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ror:0[a-hj-km-np-tv-z|0-9]{6}[0-9]{2})/,\n onMatch,\n },\n {\n regex: /(rrid:[a-zA-Z]+.+)/,\n onMatch,\n },\n {\n regex: /(rrrc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rxnorm:[0-9]{1,7})/,\n onMatch,\n },\n {\n regex: /(scop:\\d+)/,\n onMatch,\n },\n {\n regex: /(sgd:(?:(?:S\\d+$)|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)))/,\n onMatch,\n },\n {\n regex: /(signor:SIGNOR\\-[A-Z]+\\d+)/,\n onMatch,\n },\n {\n regex: /(snomedct:(?:\\w+)?\\d+)/,\n onMatch,\n },\n {\n regex: /(so:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ssbd.dataset:\\d+)/,\n onMatch,\n },\n {\n regex: /(ssbd.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(stitch:\\w{14})/,\n onMatch,\n },\n {\n regex:\n /(string:(?:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[0-9][A-Za-z0-9]{3})))/,\n onMatch,\n },\n {\n regex: /(tao:\\d{7})/,\n onMatch,\n },\n {\n regex: /(tcdb:\\d+(?:\\.[A-Z])?(?:\\.\\d+)?(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(tcia.collection:[A-Za-z0-9][A-Za-z0-9_\\-\\.]*[A-Za-z0-9])/,\n onMatch,\n },\n {\n regex: /(uberon:\\d+)/,\n onMatch,\n },\n {\n regex: /(unii:[A-Z0-9]+)/,\n onMatch,\n },\n {\n regex: /(uniparc:UPI[A-F0-9]{10})/,\n onMatch,\n },\n {\n regex:\n /(uniprot:(?:(?:[A-N,R-Z][0-9](?:[A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\.\\d+)?(?:-\\d+)?(?:#PRO_\\d+)?))/,\n onMatch,\n },\n {\n regex:\n /(uniprot.isoform:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\-\\d+))/,\n onMatch,\n },\n {\n regex: /(uniprot.proteome:UP\\d{9})/,\n onMatch,\n },\n {\n regex:\n /(uniref:UniRef(?:100|90|50)_(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2}|UPI[A-F0-9]{10}))/,\n onMatch,\n },\n {\n regex: /(wikidata:(?:Q|P|E|L)\\d+)/,\n onMatch,\n },\n {\n regex: /(wikigenes:\\d+)/,\n onMatch,\n },\n {\n regex: /(wikipathways:WP\\d{1,5}(?:\\_r\\d+)?)/,\n onMatch,\n },\n {\n regex: /(wormbase:(?:CE[0-9]{5}|WB[A-Z][a-z]+\\d+))/,\n onMatch,\n },\n {\n regex: /(xenbase:XB\\-\\w+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zenodo.record:\\d+)/,\n onMatch,\n },\n {\n regex: /(zfin:ZDB\\-\\w+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zinc:(?:ZINC)?\\d+)/,\n onMatch,\n },\n]\n"],"mappings":";AAIA,IAAM,KAAW,MAAkB,0BAA0B,KAEhD,IAAmB;CAC9B;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACF"}
|
|
1
|
+
{"version":3,"file":"BioregistryRules.js","names":[],"sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\n// This file is auto-generated. Do not edit manually.\n// Generated from bioregistry.io API based on collection.yaml\n\nconst onMatch = (value: string) => `https://bioregistry.io/${value}`\n\nexport const bioregistryRules = [\n {\n regex: /(ado:\\d{7})/,\n onMatch,\n },\n {\n regex: /(agrkb:[1-9][0-9]{14})/,\n onMatch,\n },\n {\n regex: /(anzctr:ACTRN\\d+)/,\n onMatch,\n },\n {\n regex: /(arrayexpress:[AEP]-\\w{4}-\\d+)/,\n onMatch,\n },\n {\n regex: /(arxiv:(?:\\w+(?:\\-\\w+)?(?:\\.\\w+)?\\/?)?\\d{4,7}(?:\\.\\d+(?:v\\d+)?)?)/,\n onMatch,\n },\n {\n regex: /(atc:[A-Z](?:\\d+(?:[A-Z]{1,2}(?:\\d+)?)?)?)/,\n onMatch,\n },\n {\n regex: /(atcc:(?:[a-zA-Z]+-)?\\d+(?:\\.\\d)?)/,\n onMatch,\n },\n {\n regex: /(bacdive:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(bfo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(bgee.gene:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(biocyc:[A-Z-0-9]+(?:\\:)?[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(biogrid:\\d+)/,\n onMatch,\n },\n {\n regex: /(bioportal:(?:(?:\\d+)|(?:\\w+)))/,\n onMatch,\n },\n {\n regex: /(bioproject:PRJ[DEN][A-Z]\\d+)/,\n onMatch,\n },\n {\n regex: /(biorxiv:(?:\\d{4}\\.\\d{2}\\.\\d{2}\\.)?\\d{6,8}(?:v\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(biosample:SAM[NED](?:\\w)?\\d+)/,\n onMatch,\n },\n {\n regex: /(biostudies:S-[A-Z]{4}[\\-\\_A-Z\\d]+)/,\n onMatch,\n },\n {\n regex: /(bmrb:(?:bmr|bmse|bmst)?[0-9]{1,6})/,\n onMatch,\n },\n {\n regex:\n /(brenda:(?:(?:\\d+\\.-\\.-\\.-)|(?:\\d+\\.\\d+\\.-\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.\\d+)))/,\n onMatch,\n },\n {\n regex: /(brenda.ligand:\\d+)/,\n onMatch,\n },\n {\n regex: /(brenda.ligandgroup:\\d+)/,\n onMatch,\n },\n {\n regex: /(bto:\\d{7})/,\n onMatch,\n },\n {\n regex: /(cath:[1-6]\\.[0-9]+\\.[0-9]+\\.[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cbioportal:[a-z0-9\\_]+)/,\n onMatch,\n },\n {\n regex: /(cdd:(?:cd)?\\d{5})/,\n onMatch,\n },\n {\n regex: /(cellimage:\\d+)/,\n onMatch,\n },\n {\n regex:\n /(cellxgene.collection:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/,\n onMatch,\n },\n {\n regex: /(chebi:\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl.compound:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chemspider:\\d+)/,\n onMatch,\n },\n {\n regex: /(civic.aid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.did:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.eid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.gid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.sid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.tid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.vid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(clinicaltrials:NCT\\d{8})/,\n onMatch,\n },\n {\n regex: /(clinvar:\\d+)/,\n onMatch,\n },\n {\n regex: /(clinvar.record:RCV\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(complexportal:CPX-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cosmic:[A-Z0-9][A-Z0-9-]*)/,\n onMatch,\n },\n {\n regex: /(cosmic.cell:\\d+)/,\n onMatch,\n },\n {\n regex: /(cpt:\\d+)/,\n onMatch,\n },\n {\n regex: /(ctd.chemical:[CD]\\d+)/,\n onMatch,\n },\n {\n regex: /(ctri:CTRI\\/\\d{4}\\/\\d{2,3}\\/\\d+)/,\n onMatch,\n },\n {\n regex: /(cvx:\\d+)/,\n onMatch,\n },\n {\n regex: /(dbgap:phs[0-9]{6}(?:.v\\d+.p\\d+)?)/,\n onMatch,\n },\n {\n regex: /(dbsnp:rs\\d+)/,\n onMatch,\n },\n {\n regex: /(decipher:\\d+)/,\n onMatch,\n },\n {\n regex: /(depmap:ACH-\\d+)/,\n onMatch,\n },\n {\n regex: /(dhba:\\d+)/,\n onMatch,\n },\n {\n regex: /(disprot:DP\\d{5})/,\n onMatch,\n },\n {\n regex: /(dmba:\\d+)/,\n onMatch,\n },\n {\n regex: /(doi:10.\\d{2,9}\\/.*)/,\n onMatch,\n },\n {\n regex: /(doid:\\d+)/,\n onMatch,\n },\n {\n regex: /(drks:DRKS\\d+)/,\n onMatch,\n },\n {\n regex: /(drugbank:DB\\d{5})/,\n onMatch,\n },\n {\n regex: /(drugcentral:\\d+)/,\n onMatch,\n },\n {\n regex: /(duo:\\d{7})/,\n onMatch,\n },\n {\n regex:\n /(ec:\\d{1,2}(?:(?:(?:\\.\\d{1,3}){1,3})|(?:\\.\\d+){2}\\.[nB]\\d{1,3}|\\.-\\.-\\.-|\\.\\d{1,3}\\.-\\.-|\\.\\d{1,3}\\.\\d{1,3}\\.-)?)/,\n onMatch,\n },\n {\n regex: /(ecacc:\\d+)/,\n onMatch,\n },\n {\n regex: /(edam:(?:data|topic|operation|format)\\_\\d{4})/,\n onMatch,\n },\n {\n regex: /(edam.data:\\d+)/,\n onMatch,\n },\n {\n regex: /(edam.topic:\\d+)/,\n onMatch,\n },\n {\n regex: /(ega.dataset:EGAD\\d{11})/,\n onMatch,\n },\n {\n regex: /(ega.study:EGAS\\d{11})/,\n onMatch,\n },\n {\n regex: /(emdb:EMD-\\d{4,5})/,\n onMatch,\n },\n {\n regex: /(empiar:\\d+)/,\n onMatch,\n },\n {\n regex: /(ena.embl:[A-Z]+[0-9]+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex:\n /(ensembl:(?:(?:ENS[FPTG]\\d{11}(?:\\.\\d+)?)|(?:FB\\w{2}\\d{7})|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)|(?:[A-Z_a-z0-9]+(?:\\.)?(?:t)?(?:\\d+)?(?:[a-z])?)))/,\n onMatch,\n },\n {\n regex: /(ensembl.metazoa:\\w+(?:\\.)?\\d+)/,\n onMatch,\n },\n {\n regex: /(ensembl.plant:\\w+(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(euclinicaltrials:\\d{4}\\-\\d{6}\\-\\d{2})/,\n onMatch,\n },\n {\n regex: /(eupath:\\d{7})/,\n onMatch,\n },\n {\n regex: /(exac.variant:\\d{1,2}\\-\\d+\\-[GATC]\\-[GATC])/,\n onMatch,\n },\n {\n regex: /(fairsharing:(?:bsg-[dscp]?\\d{6})|(?:FAIRsharing\\.\\w+))/,\n onMatch,\n },\n {\n regex: /(flybase:FB\\w{2}\\d{7})/,\n onMatch,\n },\n {\n regex: /(fma:\\d+)/,\n onMatch,\n },\n {\n regex: /(funderregistry:\\d+)/,\n onMatch,\n },\n {\n regex: /(gard:\\d+)/,\n onMatch,\n },\n {\n regex: /(gbif:\\d+)/,\n onMatch,\n },\n {\n regex: /(gdc:[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/,\n onMatch,\n },\n {\n regex: /(genecards:[A-Za-z-0-9_]+(?:\\@)?)/,\n onMatch,\n },\n {\n regex: /(geo:G(?:PL|SM|SE|DS)\\d+)/,\n onMatch,\n },\n {\n regex: /(go:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.gene:GR\\:\\d+)/,\n onMatch,\n },\n {\n regex: /(gramene.growthstage:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.protein:\\d+)/,\n onMatch,\n },\n {\n regex: /(gtdb:[cdfgops]__\\w+\\S+)/,\n onMatch,\n },\n {\n regex: /(hba:\\d+)/,\n onMatch,\n },\n {\n regex: /(hc.trial:\\d+)/,\n onMatch,\n },\n {\n regex: /(hgnc:\\d{1,5})/,\n onMatch,\n },\n {\n regex: /(hl7.v2codesystem:\\d+)/,\n onMatch,\n },\n {\n regex: /(hmdb:HMDB\\d+)/,\n onMatch,\n },\n {\n regex:\n /(icd10:(?:(?:[XVI]+)|(?:[A-Z][0-9]+(?:(?:-[A-Z][0-9]+)|(?:\\.[0-9]))?)))/,\n onMatch,\n },\n {\n regex:\n /(icd9:(?:(?:\\d{1,3}-\\d{1,3})|(?:(?:\\d\\d\\d|V\\d\\d|E[8-9]\\d\\d)(?:\\.\\d{1,2})?)))/,\n onMatch,\n },\n {\n regex: /(icdc:\\d{6})/,\n onMatch,\n },\n {\n regex: /(icf:\\d+)/,\n onMatch,\n },\n {\n regex: /(idr:[0-9]{4})/,\n onMatch,\n },\n {\n regex: /(imgt.hla:[A-Z0-9*:]+)/,\n onMatch,\n },\n {\n regex:\n /(inchi:InChI\\=1S?\\/[A-Za-z0-9\\.]+(?:\\+[0-9]+)?(?:\\/[cnpqbtmsih][A-Za-z0-9\\-\\+\\(?:\\)\\,\\/\\?\\;\\.]+)*)/,\n onMatch,\n },\n {\n regex: /(inchikey:[A-Z]{14}\\-[A-Z]{10}(?:\\-[A-Z])?)/,\n onMatch,\n },\n {\n regex:\n /(insdc:(?:[A-Z]\\d{5}|[A-Z]{2}\\d{6}|[A-Z]{4,6}\\d{8,10}|[A-J][A-Z]{2}\\d{5})(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(insdc.sra:[SED]R[APRSXZ]\\d+)/,\n onMatch,\n },\n {\n regex: /(intact:EBI\\-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(interpro:IPR\\d{6})/,\n onMatch,\n },\n {\n regex: /(iso.3166:\\d+)/,\n onMatch,\n },\n {\n regex: /(isrctn:ISRCTN\\d+)/,\n onMatch,\n },\n {\n regex: /(itis:\\d+)/,\n onMatch,\n },\n {\n regex: /(jaxmice:\\d{6})/,\n onMatch,\n },\n {\n regex:\n /(kegg:(?:(?:[CHDEGTMKR]\\d+)|(?:\\w+:[\\w\\d\\.-]*)|(?:\\w{2,4}\\d{5})|(?:[a-z]{3,5})))/,\n onMatch,\n },\n {\n regex: /(kegg.compound:C\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.disease:H\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.drug:D\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.glycan:G\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.pathway:\\w{2,4}\\d{5})/,\n onMatch,\n },\n {\n regex: /(kegg.reaction:R\\d+)/,\n onMatch,\n },\n {\n regex: /(loinc:(?:\\d|\\w)+-\\d)/,\n onMatch,\n },\n {\n regex: /(massive:MSV\\d+)/,\n onMatch,\n },\n {\n regex: /(mba:\\d+)/,\n onMatch,\n },\n {\n regex: /(mesh:(?:C|D|Q)\\d+)/,\n onMatch,\n },\n {\n regex: /(metabolights:MTBL[CS]\\d+)/,\n onMatch,\n },\n {\n regex: /(metacyc.compound:[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(mgi:\\d+)/,\n onMatch,\n },\n {\n regex: /(mir:\\d{8})/,\n onMatch,\n },\n {\n regex: /(mirbase:MI\\d{7})/,\n onMatch,\n },\n {\n regex: /(mondo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ncbigene:\\d+)/,\n onMatch,\n },\n {\n regex: /(ncbiprotein:\\w+_?\\d+(?:.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ncbitaxon:(?:(?:\\d+)|(?:[a-zA-Z_]+)))/,\n onMatch,\n },\n {\n regex: /(ncit:(?:C|R|P|A|NHC)\\d+)/,\n onMatch,\n },\n {\n regex: /(ndc:\\d+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(ndfrt:N[0-9]{10})/,\n onMatch,\n },\n {\n regex: /(nextprot:NX_\\w+)/,\n onMatch,\n },\n {\n regex: /(nihreporter.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(nord:\\d+)/,\n onMatch,\n },\n {\n regex: /(omim:\\d+)/,\n onMatch,\n },\n {\n regex: /(omop:\\d+)/,\n onMatch,\n },\n {\n regex: /(orcid:\\d{4}-\\d{4}-\\d{4}-\\d{3}(?:\\d|X))/,\n onMatch,\n },\n {\n regex: /(orphanet:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(orphanet.ordo:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(osf:[a-z0-9]{5})/,\n onMatch,\n },\n {\n regex: /(panther.family:PTHR\\d{5}(?:\\:SF\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(panther.pathway:P\\d{5})/,\n onMatch,\n },\n {\n regex: /(panther.pthcmp:(?:G|P|U|C|S)\\d{5})/,\n onMatch,\n },\n {\n regex: /(pba:\\d+)/,\n onMatch,\n },\n {\n regex: /(pdb:[0-9][A-Za-z0-9]{3})/,\n onMatch,\n },\n {\n regex: /(pdb-ccd:\\w{1,3})/,\n onMatch,\n },\n {\n regex: /(pdb.ligand:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(pdc.study:PDC\\d+)/,\n onMatch,\n },\n {\n regex: /(peco:\\d{7})/,\n onMatch,\n },\n {\n regex: /(peptideatlas.dataset:PASS\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam:PF\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam.clan:CL\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.disease:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.drug:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.gene:PA\\w+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.pathways:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pmc:PMC\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(pombase:S\\w+(?:\\.)?\\w+(?:\\.)?)/,\n onMatch,\n },\n {\n regex: /(pride.project:P(?:X|R|A)D\\d{6})/,\n onMatch,\n },\n {\n regex: /(pubchem.compound:\\d+)/,\n onMatch,\n },\n {\n regex: /(pubmed:\\d+)/,\n onMatch,\n },\n {\n regex: /(px:(?:R)?PXD\\d{6})/,\n onMatch,\n },\n {\n regex: /(radlex:RID\\d+)/,\n onMatch,\n },\n {\n regex: /(reactome:R-[A-Z]{3}-\\d+(?:-\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rebec:RBR-\\w+)/,\n onMatch,\n },\n {\n regex:\n /(refseq:(?:(?:(?:AC|AP|NC|NG|NM|NP|NR|NT|NW|WP|XM|XP|XR|YP|ZP)_\\d+)|(?:NZ_[A-Z]{2,4}\\d+))(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rfam:RF\\d{5})/,\n onMatch,\n },\n {\n regex: /(rfc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rgd:\\d{4,})/,\n onMatch,\n },\n {\n regex: /(rhea:\\d{5})/,\n onMatch,\n },\n {\n regex: /(rnacentral:URS[0-9A-F]{10}(?:\\_\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ror:0[a-hj-km-np-tv-z|0-9]{6}[0-9]{2})/,\n onMatch,\n },\n {\n regex: /(rrid:[a-zA-Z]+.+)/,\n onMatch,\n },\n {\n regex: /(rrrc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rxnorm:[0-9]{1,7})/,\n onMatch,\n },\n {\n regex: /(scop:\\d+)/,\n onMatch,\n },\n {\n regex: /(sgd:(?:(?:S\\d+$)|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)))/,\n onMatch,\n },\n {\n regex: /(signor:SIGNOR\\-[A-Z]+\\d+)/,\n onMatch,\n },\n {\n regex: /(snomedct:(?:\\w+)?\\d+)/,\n onMatch,\n },\n {\n regex: /(so:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ssbd.dataset:\\d+)/,\n onMatch,\n },\n {\n regex: /(ssbd.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(stitch:\\w{14})/,\n onMatch,\n },\n {\n regex:\n /(string:(?:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[0-9][A-Za-z0-9]{3})))/,\n onMatch,\n },\n {\n regex: /(tao:\\d{7})/,\n onMatch,\n },\n {\n regex: /(tcdb:\\d+(?:\\.[A-Z])?(?:\\.\\d+)?(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(tcia.collection:[A-Za-z0-9][A-Za-z0-9_\\-\\.]*[A-Za-z0-9])/,\n onMatch,\n },\n {\n regex: /(uberon:\\d+)/,\n onMatch,\n },\n {\n regex: /(unii:[A-Z0-9]+)/,\n onMatch,\n },\n {\n regex: /(uniparc:UPI[A-F0-9]{10})/,\n onMatch,\n },\n {\n regex:\n /(uniprot:(?:(?:[A-N,R-Z][0-9](?:[A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\.\\d+)?(?:-\\d+)?(?:#PRO_\\d+)?))/,\n onMatch,\n },\n {\n regex:\n /(uniprot.isoform:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\-\\d+))/,\n onMatch,\n },\n {\n regex: /(uniprot.proteome:UP\\d{9})/,\n onMatch,\n },\n {\n regex:\n /(uniref:UniRef(?:100|90|50)_(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2}|UPI[A-F0-9]{10}))/,\n onMatch,\n },\n {\n regex: /(wikidata:(?:Q|P|E|L)\\d+)/,\n onMatch,\n },\n {\n regex: /(wikigenes:\\d+)/,\n onMatch,\n },\n {\n regex: /(wikipathways:WP\\d{1,5}(?:\\_r\\d+)?)/,\n onMatch,\n },\n {\n regex: /(wormbase:(?:CE[0-9]{5}|WB[A-Z][a-z]+\\d+))/,\n onMatch,\n },\n {\n regex: /(xenbase:XB\\-\\w+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zenodo.record:\\d+)/,\n onMatch,\n },\n {\n regex: /(zfin:ZDB\\-\\w+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zinc:(?:ZINC)?\\d+)/,\n onMatch,\n },\n]\n"],"mappings":";AAIA,IAAM,KAAW,MAAkB,0BAA0B,KAEhD,IAAmB;CAC9B;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACF"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { GoalsDataProps } from './Goals';
|
|
2
|
-
export default function GoalsDesktop({ asset, link, summary, countSql, title, isAssetIcon, linkText, }: GoalsDataProps
|
|
2
|
+
export default function GoalsDesktop({ asset, link, summary, countSql, title, isAssetIcon, linkText, cardWidth, }: GoalsDataProps & {
|
|
3
|
+
cardWidth?: string;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
3
5
|
//# sourceMappingURL=Goals.Desktop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Goals.Desktop.d.ts","sourceRoot":"","sources":["../../../src/components/Goals/Goals.Desktop.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIxC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAoB,
|
|
1
|
+
{"version":3,"file":"Goals.Desktop.d.ts","sourceRoot":"","sources":["../../../src/components/Goals/Goals.Desktop.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIxC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAoB,EACpB,SAAS,GACV,EAAE,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CA2CzC"}
|
|
@@ -2,13 +2,12 @@ import { QueryCount as e } from "../QueryCount/QueryCount.js";
|
|
|
2
2
|
import { Box as t, Button as n } from "@mui/material";
|
|
3
3
|
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
4
|
//#region src/components/Goals/Goals.Desktop.tsx
|
|
5
|
-
function a({ asset: a, link: o, summary: s, countSql: c, title: l, isAssetIcon: u, linkText: d = "Explore" }) {
|
|
5
|
+
function a({ asset: a, link: o, summary: s, countSql: c, title: l, isAssetIcon: u, linkText: d = "Explore", cardWidth: f }) {
|
|
6
6
|
return /* @__PURE__ */ i(t, {
|
|
7
7
|
className: "Goals__Card",
|
|
8
8
|
sx: {
|
|
9
9
|
cursor: "pointer",
|
|
10
|
-
|
|
11
|
-
width: "335px"
|
|
10
|
+
flex: `0 0 ${f ?? "auto"}`
|
|
12
11
|
},
|
|
13
12
|
onClick: () => window.open(o, "_self"),
|
|
14
13
|
children: [/* @__PURE__ */ r("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Goals.Desktop.js","names":[],"sources":["../../../src/components/Goals/Goals.Desktop.tsx"],"sourcesContent":["import { GoalsDataProps } from './Goals'\nimport QueryCount from '../QueryCount/QueryCount'\nimport { Box, Button } from '@mui/material'\n\nexport default function GoalsDesktop({\n asset,\n link,\n summary,\n countSql,\n title,\n isAssetIcon,\n linkText = 'Explore',\n}: GoalsDataProps) {\n return (\n <Box\n className=\"Goals__Card\"\n sx={{ cursor: 'pointer',
|
|
1
|
+
{"version":3,"file":"Goals.Desktop.js","names":[],"sources":["../../../src/components/Goals/Goals.Desktop.tsx"],"sourcesContent":["import { GoalsDataProps } from './Goals'\nimport QueryCount from '../QueryCount/QueryCount'\nimport { Box, Button } from '@mui/material'\n\nexport default function GoalsDesktop({\n asset,\n link,\n summary,\n countSql,\n title,\n isAssetIcon,\n linkText = 'Explore',\n cardWidth,\n}: GoalsDataProps & { cardWidth?: string }) {\n return (\n <Box\n className=\"Goals__Card\"\n sx={{ cursor: 'pointer', flex: `0 0 ${cardWidth ?? 'auto'}` }}\n onClick={() => window.open(link, '_self')}\n >\n <div\n className=\"Goals__Card__header\"\n style={{ background: isAssetIcon ? undefined : `url('${asset}')` }}\n >\n <p>\n <span className=\"Goals__Card__header__title\">\n {isAssetIcon && asset && (\n <img\n style={{ marginRight: '10px' }}\n className=\"Goals__Card__header__icon\"\n src={asset}\n alt={`${title} icon`}\n />\n )}\n {title}\n </span>\n {countSql && (\n <span className=\"Goals__Card__header__count\">\n <QueryCount parens={false} query={{ sql: countSql }} />\n </span>\n )}\n </p>\n </div>\n <div className=\"Goals__Card__summary\">\n <p> {summary} </p>\n <Button\n className=\"Goals__Card__summary__link\"\n variant=\"outlined\"\n color=\"secondary\"\n href={link}\n >\n {linkText}\n </Button>\n </div>\n </Box>\n )\n}\n"],"mappings":";;;;AAIA,SAAwB,EAAa,EACnC,UACA,SACA,YACA,aACA,UACA,gBACA,cAAW,WACX,gBAC0C;AAC1C,QACE,kBAAC,GAAD;EACE,WAAU;EACV,IAAI;GAAE,QAAQ;GAAW,MAAM,OAAO,KAAa;GAAU;EAC7D,eAAe,OAAO,KAAK,GAAM,QAAQ;YAH3C,CAKE,kBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,YAAY,IAAc,KAAA,IAAY,QAAQ,EAAM,KAAK;aAElE,kBAAC,KAAD,EAAA,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACG,KAAe,KACd,kBAAC,OAAD;KACE,OAAO,EAAE,aAAa,QAAQ;KAC9B,WAAU;KACV,KAAK;KACL,KAAK,GAAG,EAAM;KACd,CAAA,EAEH,EACI;OACN,KACC,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD;KAAY,QAAQ;KAAO,OAAO,EAAE,KAAK,GAAU;KAAI,CAAA;IAClD,CAAA,CAEP,EAAA,CAAA;GACA,CAAA,EACN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD,EAAA,UAAA;IAAG;IAAE;IAAQ;IAAK,EAAA,CAAA,EAClB,kBAAC,GAAD;IACE,WAAU;IACV,SAAQ;IACR,OAAM;IACN,MAAM;cAEL;IACM,CAAA,CACL;KACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Goals.d.ts","sourceRoot":"","sources":["../../../src/components/Goals/Goals.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"Goals.d.ts","sourceRoot":"","sources":["../../../src/components/Goals/Goals.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAcD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,2CAkItC;AACD,eAAe,KAAK,CAAA"}
|
|
@@ -15,19 +15,19 @@ var d = /* @__PURE__ */ function(e) {
|
|
|
15
15
|
return e.TABLEID = "TableId", e.COUNT_SQL = "CountSql", e.TITLE = "Title", e.SUMMARY = "Summary", e.LINK = "Link", e.ASSET = "Asset", e;
|
|
16
16
|
}(d || {}), f = 1200;
|
|
17
17
|
function p(p) {
|
|
18
|
-
let { entityId: m, isAssetIcon: h = !1, linkText: g } = p,
|
|
18
|
+
let { entityId: m, isAssetIcon: h = !1, linkText: g, itemsPerRow: _ = 3 } = p, v = t(f), { data: y } = r({
|
|
19
19
|
concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
|
|
20
20
|
entityId: m,
|
|
21
21
|
partMask: 5,
|
|
22
22
|
query: { sql: `select *
|
|
23
23
|
from ${m}
|
|
24
24
|
order by ItemOrder` }
|
|
25
|
-
}), { assets:
|
|
25
|
+
}), { assets: b, error: x } = i(m, y), S = n(d.TABLEID, y), C = n(d.COUNT_SQL, y), w = n(d.TITLE, y), T = n(d.SUMMARY, y), E = n(d.LINK, y), D = s(() => y?.queryResult.queryResults.rows.map((e, t) => {
|
|
26
26
|
let n = e.values;
|
|
27
27
|
n.some((e) => e === null) && console.warn("Row has null value(s) when no nulls expected");
|
|
28
|
-
let r =
|
|
29
|
-
|
|
30
|
-
let a = n[
|
|
28
|
+
let r = S > -1 ? n[S] : void 0, i;
|
|
29
|
+
C > -1 && n[C] ? i = n[C] : r && (i = `SELECT * FROM ${r}`);
|
|
30
|
+
let a = n[w], o = n[T], s = n[E], c = b?.[t] ?? "";
|
|
31
31
|
return {
|
|
32
32
|
countSql: i,
|
|
33
33
|
title: a,
|
|
@@ -37,34 +37,40 @@ function p(p) {
|
|
|
37
37
|
isAssetIcon: h
|
|
38
38
|
};
|
|
39
39
|
}), [
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
C,
|
|
41
|
+
b,
|
|
42
|
+
E,
|
|
43
|
+
y?.queryResult,
|
|
42
44
|
T,
|
|
43
|
-
|
|
44
|
-
w
|
|
45
|
-
x,
|
|
46
|
-
C
|
|
45
|
+
S,
|
|
46
|
+
w
|
|
47
47
|
]);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
48
|
+
if (x) return /* @__PURE__ */ u(e, { error: x });
|
|
49
|
+
if (!D) return /* @__PURE__ */ u(l, {});
|
|
50
|
+
if (v) {
|
|
51
|
+
let e = `calc((100% - ${_ * 20 + (_ - 1) * 7}px) / ${_} - 0.5px)`;
|
|
52
|
+
return /* @__PURE__ */ u(c, {
|
|
53
|
+
className: "Goals",
|
|
54
|
+
sx: {
|
|
55
|
+
display: "flex",
|
|
56
|
+
flexWrap: "wrap",
|
|
57
|
+
gap: "7px",
|
|
58
|
+
justifyContent: "center",
|
|
59
|
+
alignItems: "stretch"
|
|
60
|
+
},
|
|
61
|
+
children: D.map((t, n) => /* @__PURE__ */ u(a, {
|
|
62
|
+
...t,
|
|
63
|
+
linkText: g,
|
|
64
|
+
cardWidth: e
|
|
65
|
+
}, n))
|
|
66
|
+
});
|
|
67
|
+
} else return /* @__PURE__ */ u("div", {
|
|
62
68
|
className: "Goals",
|
|
63
|
-
children:
|
|
69
|
+
children: D.map((e, t) => /* @__PURE__ */ u(o, {
|
|
64
70
|
...e,
|
|
65
71
|
linkText: g
|
|
66
72
|
}, t))
|
|
67
|
-
})
|
|
73
|
+
});
|
|
68
74
|
}
|
|
69
75
|
//#endregion
|
|
70
76
|
export { p as Goals, p as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Goals.js","names":[],"sources":["../../../src/components/Goals/Goals.tsx"],"sourcesContent":["import useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport useGetGoalData from '@/utils/hooks/useGetGoalData'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport GoalsDesktop from './Goals.Desktop'\nimport GoalsMobile from './Goals.Mobile'\nimport { Box } from '@mui/material'\n\nexport type GoalsProps = {\n entityId: string\n isAssetIcon?: boolean // If true, the asset will be used as an icon instead of a background image.\n linkText?: string\n}\n\nexport type GoalsDataProps = {\n countSql?: string\n title: string\n summary: string\n link: string\n asset: string\n isAssetIcon: boolean\n linkText?: string\n}\n\nenum ExpectedColumns {\n TABLEID = 'TableId', // Both TableId or CountSql are used to indicate what Table rows to count.\n COUNT_SQL = 'CountSql', // Code uses CountSql over TableId if defined (if the CountSql column is in the schema and filled in).\n TITLE = 'Title',\n SUMMARY = 'Summary',\n LINK = 'Link',\n ASSET = 'Asset',\n}\n\n// PORTALS-2367\nconst GOALS_DESKTOP_MIN_BREAKPOINT = 1200\n\nexport function Goals(props: GoalsProps) {\n const { entityId, isAssetIcon = false, linkText } = props\n const showDesktop = useShowDesktop(GOALS_DESKTOP_MIN_BREAKPOINT)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select *\n from ${entityId}\n order by ItemOrder`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const { assets: goalAssets, error: goalError } = useGetGoalData(\n entityId,\n queryResultBundle,\n )\n\n const tableIdColumnIndex = getFieldIndex(\n ExpectedColumns.TABLEID,\n queryResultBundle,\n )\n const countSqlColumnIndex = getFieldIndex(\n ExpectedColumns.COUNT_SQL,\n queryResultBundle,\n )\n\n const titleColumnIndex = getFieldIndex(\n ExpectedColumns.TITLE,\n queryResultBundle,\n )\n const summaryColumnIndex = getFieldIndex(\n ExpectedColumns.SUMMARY,\n queryResultBundle,\n )\n const linkColumnIndex = getFieldIndex(ExpectedColumns.LINK, queryResultBundle)\n\n const goalsDataProps = useMemo(() => {\n return queryResultBundle?.queryResult!.queryResults.rows.map(\n (el, index): GoalsDataProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n const tableId =\n tableIdColumnIndex > -1 ? values[tableIdColumnIndex] : undefined\n let countSql\n if (countSqlColumnIndex > -1 && values[countSqlColumnIndex]) {\n countSql = values[countSqlColumnIndex]\n } else if (tableId) {\n countSql = `SELECT * FROM ${tableId}`\n }\n const title = values[titleColumnIndex]\n const summary = values[summaryColumnIndex]\n const link = values[linkColumnIndex]\n // assume that we recieve assets in order of rows and there is an asset for each item\n // can revisit if this isn't the case.\n const asset = goalAssets?.[index] ?? ''\n return {\n countSql,\n title,\n summary,\n link,\n asset,\n isAssetIcon,\n }\n },\n )\n }, [\n countSqlColumnIndex,\n goalAssets,\n linkColumnIndex,\n queryResultBundle?.queryResult,\n summaryColumnIndex,\n tableIdColumnIndex,\n titleColumnIndex,\n ])\n\n if (goalError) {\n return <ErrorBanner error={goalError} />\n }\n\n if (!goalsDataProps) {\n return <></>\n }\n\n if (showDesktop) {\n return (\n <Box\n className={`Goals`}\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '7px',\n
|
|
1
|
+
{"version":3,"file":"Goals.js","names":[],"sources":["../../../src/components/Goals/Goals.tsx"],"sourcesContent":["import useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport useGetGoalData from '@/utils/hooks/useGetGoalData'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport GoalsDesktop from './Goals.Desktop'\nimport GoalsMobile from './Goals.Mobile'\nimport { Box } from '@mui/material'\n\nexport type GoalsProps = {\n entityId: string\n isAssetIcon?: boolean // If true, the asset will be used as an icon instead of a background image.\n linkText?: string\n itemsPerRow?: number\n}\n\nexport type GoalsDataProps = {\n countSql?: string\n title: string\n summary: string\n link: string\n asset: string\n isAssetIcon: boolean\n linkText?: string\n}\n\nenum ExpectedColumns {\n TABLEID = 'TableId', // Both TableId or CountSql are used to indicate what Table rows to count.\n COUNT_SQL = 'CountSql', // Code uses CountSql over TableId if defined (if the CountSql column is in the schema and filled in).\n TITLE = 'Title',\n SUMMARY = 'Summary',\n LINK = 'Link',\n ASSET = 'Asset',\n}\n\n// PORTALS-2367\nconst GOALS_DESKTOP_MIN_BREAKPOINT = 1200\n\nexport function Goals(props: GoalsProps) {\n const { entityId, isAssetIcon = false, linkText, itemsPerRow = 3 } = props\n const showDesktop = useShowDesktop(GOALS_DESKTOP_MIN_BREAKPOINT)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select *\n from ${entityId}\n order by ItemOrder`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const { assets: goalAssets, error: goalError } = useGetGoalData(\n entityId,\n queryResultBundle,\n )\n\n const tableIdColumnIndex = getFieldIndex(\n ExpectedColumns.TABLEID,\n queryResultBundle,\n )\n const countSqlColumnIndex = getFieldIndex(\n ExpectedColumns.COUNT_SQL,\n queryResultBundle,\n )\n\n const titleColumnIndex = getFieldIndex(\n ExpectedColumns.TITLE,\n queryResultBundle,\n )\n const summaryColumnIndex = getFieldIndex(\n ExpectedColumns.SUMMARY,\n queryResultBundle,\n )\n const linkColumnIndex = getFieldIndex(ExpectedColumns.LINK, queryResultBundle)\n\n const goalsDataProps = useMemo(() => {\n return queryResultBundle?.queryResult!.queryResults.rows.map(\n (el, index): GoalsDataProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n const tableId =\n tableIdColumnIndex > -1 ? values[tableIdColumnIndex] : undefined\n let countSql\n if (countSqlColumnIndex > -1 && values[countSqlColumnIndex]) {\n countSql = values[countSqlColumnIndex]\n } else if (tableId) {\n countSql = `SELECT * FROM ${tableId}`\n }\n const title = values[titleColumnIndex]\n const summary = values[summaryColumnIndex]\n const link = values[linkColumnIndex]\n // assume that we recieve assets in order of rows and there is an asset for each item\n // can revisit if this isn't the case.\n const asset = goalAssets?.[index] ?? ''\n return {\n countSql,\n title,\n summary,\n link,\n asset,\n isAssetIcon,\n }\n },\n )\n }, [\n countSqlColumnIndex,\n goalAssets,\n linkColumnIndex,\n queryResultBundle?.queryResult,\n summaryColumnIndex,\n tableIdColumnIndex,\n titleColumnIndex,\n ])\n\n if (goalError) {\n return <ErrorBanner error={goalError} />\n }\n\n if (!goalsDataProps) {\n return <></>\n }\n\n if (showDesktop) {\n // Each card has margin:10px (20px horizontal) from .Goals__Card CSS.\n // flex-basis must be the content width only; total row = N*(flex-basis+20) + (N-1)*gap.\n // Subtract 0.5px epsilon to absorb sub-pixel rounding and prevent wrapping.\n const horizontalMarginPerCard = 20\n const cardWidth = `calc((100% - ${\n itemsPerRow * horizontalMarginPerCard + (itemsPerRow - 1) * 7\n }px) / ${itemsPerRow} - 0.5px)`\n return (\n <Box\n className={`Goals`}\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '7px',\n justifyContent: 'center',\n alignItems: 'stretch',\n }}\n >\n {goalsDataProps.map((props, index) => (\n <GoalsDesktop\n key={index}\n {...props}\n linkText={linkText}\n cardWidth={cardWidth}\n />\n ))}\n </Box>\n )\n } else {\n return (\n <div className={`Goals`}>\n {goalsDataProps.map((props, index) => (\n <GoalsMobile key={index} {...props} linkText={linkText} />\n ))}\n </div>\n )\n }\n}\nexport default Goals\n"],"mappings":";;;;;;;;;;;;;AA6BA,IAAK,IAAL,yBAAA,GAAA;QACE,EAAA,UAAU,WACV,EAAA,YAAY,YACZ,EAAA,QAAQ,SACR,EAAA,UAAU,WACV,EAAA,OAAO,QACP,EAAA,QAAQ;EANL,KAAA,EAAA,CAOJ,EAGK,IAA+B;AAErC,SAAgB,EAAM,GAAmB;CACvC,IAAM,EAAE,aAAU,iBAAc,IAAO,aAAU,iBAAc,MAAM,GAC/D,IAAc,EAAe,EAA6B,EAa1D,EAAE,MAAM,MACZ,EAAwB;EAZxB,cAAc;EACd;EACA,UACE;EAEF,OAAO,EACL,KAAK;mBACQ,EAAS;iCAEvB;EAGuB,CAAmB,EAEvC,EAAE,QAAQ,GAAY,OAAO,MAAc,EAC/C,GACA,EACD,EAEK,IAAqB,EACzB,EAAgB,SAChB,EACD,EACK,IAAsB,EAC1B,EAAgB,WAChB,EACD,EAEK,IAAmB,EACvB,EAAgB,OAChB,EACD,EACK,IAAqB,EACzB,EAAgB,SAChB,EACD,EACK,IAAkB,EAAc,EAAgB,MAAM,EAAkB,EAExE,IAAiB,QACd,GAAmB,YAAa,aAAa,KAAK,KACtD,GAAI,MAA0B;EAC7B,IAAM,IAAS,EAAG;AAClB,EAAI,EAAO,MAAK,MAAS,MAAU,KAAK,IAEtC,QAAQ,KAAK,+CAA+C;EAE9D,IAAM,IACJ,IAAqB,KAAK,EAAO,KAAsB,KAAA,GACrD;AACJ,EAAI,IAAsB,MAAM,EAAO,KACrC,IAAW,EAAO,KACT,MACT,IAAW,iBAAiB;EAE9B,IAAM,IAAQ,EAAO,IACf,IAAU,EAAO,IACjB,IAAO,EAAO,IAGd,IAAQ,IAAa,MAAU;AACrC,SAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACD;GAEJ,EACA;EACD;EACA;EACA;EACA,GAAmB;EACnB;EACA;EACA;EACD,CAAC;AAEF,KAAI,EACF,QAAO,kBAAC,GAAD,EAAa,OAAO,GAAa,CAAA;AAG1C,KAAI,CAAC,EACH,QAAO,kBAAA,GAAA,EAAK,CAAA;AAGd,KAAI,GAAa;EAKf,IAAM,IAAY,gBAChB,IAAc,MAA2B,IAAc,KAAK,EAC7D,QAAQ,EAAY;AACrB,SACE,kBAAC,GAAD;GACE,WAAW;GACX,IAAI;IACF,SAAS;IACT,UAAU;IACV,KAAK;IACL,gBAAgB;IAChB,YAAY;IACb;aAEA,EAAe,KAAK,GAAO,MAC1B,kBAAC,GAAD;IAEE,GAAI;IACM;IACC;IACX,EAJK,EAIL,CACF;GACE,CAAA;OAGR,QACE,kBAAC,OAAD;EAAK,WAAW;YACb,EAAe,KAAK,GAAO,MAC1B,kBAAC,GAAD;GAAyB,GAAI;GAAiB;GAAY,EAAxC,EAAwC,CAC1D;EACE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownTableOfContents.d.ts","sourceRoot":"","sources":["../../../../src/components/Markdown/widget/MarkdownTableOfContents.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MarkdownTableOfContents.d.ts","sourceRoot":"","sources":["../../../../src/components/Markdown/widget/MarkdownTableOfContents.tsx"],"names":[],"mappings":"AAWA,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,KAAK,EAAE,4BAA4B,2CAwBpC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { stripHTML as e } from "../MarkdownUtils.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
3
|
//#region src/components/Markdown/widget/MarkdownTableOfContents.tsx
|
|
3
|
-
var
|
|
4
|
+
var n = {
|
|
4
5
|
1: "toc-indent1",
|
|
5
6
|
2: "toc-indent2",
|
|
6
7
|
3: "toc-indent3",
|
|
@@ -8,16 +9,19 @@ var t = {
|
|
|
8
9
|
5: "toc-indent5",
|
|
9
10
|
6: "toc-indent6"
|
|
10
11
|
};
|
|
11
|
-
function
|
|
12
|
-
let { originalMarkup:
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
function r(r) {
|
|
13
|
+
let { originalMarkup: i } = r, a = [], o = /<h([1-6]) id="(.*)" .*toc="true">(.*)<\/h[1-6]>/gm, s = "";
|
|
14
|
+
return i.replace(o, (r, i, o, c) => {
|
|
15
|
+
let l = e(c);
|
|
16
|
+
return s += l, a.push(/* @__PURE__ */ t("div", { children: /* @__PURE__ */ t("a", {
|
|
17
|
+
role: "link",
|
|
18
|
+
className: `link ${n[Number(i)]}`,
|
|
19
|
+
"data-anchor": o,
|
|
20
|
+
children: l
|
|
21
|
+
}) }, l)), "";
|
|
22
|
+
}), /* @__PURE__ */ t("div", { children: a }, s);
|
|
19
23
|
}
|
|
20
24
|
//#endregion
|
|
21
|
-
export {
|
|
25
|
+
export { r as default };
|
|
22
26
|
|
|
23
27
|
//# sourceMappingURL=MarkdownTableOfContents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownTableOfContents.js","names":[],"sources":["../../../../src/components/Markdown/widget/MarkdownTableOfContents.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"MarkdownTableOfContents.js","names":[],"sources":["../../../../src/components/Markdown/widget/MarkdownTableOfContents.tsx"],"sourcesContent":["import { stripHTML } from '../MarkdownUtils'\n\nconst TOC_CLASS = {\n 1: 'toc-indent1',\n 2: 'toc-indent2',\n 3: 'toc-indent3',\n 4: 'toc-indent4',\n 5: 'toc-indent5',\n 6: 'toc-indent6',\n}\n\ntype MarkdownTableOfContentsProps = {\n originalMarkup: string\n}\n\nexport default function MarkdownTableOfContents(\n props: MarkdownTableOfContentsProps,\n) {\n const { originalMarkup } = props\n const elements: any[] = []\n const TOC_HEADER_REGEX_WITH_ID =\n /<h([1-6]) id=\"(.*)\" .*toc=\"true\">(.*)<\\/h[1-6]>/gm\n let text = ''\n originalMarkup.replace(TOC_HEADER_REGEX_WITH_ID, (p1, p2, p3, p4) => {\n const headingText = stripHTML(p4)\n text += headingText\n elements.push(\n <div key={headingText}>\n <a\n role=\"link\"\n className={`link ${TOC_CLASS[Number(p2) as keyof typeof TOC_CLASS]}`}\n data-anchor={p3}\n >\n {headingText}\n </a>\n </div>,\n )\n return ''\n })\n return <div key={text}>{elements}</div>\n}\n"],"mappings":";;;AAEA,IAAM,IAAY;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ;AAMD,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,sBAAmB,GACrB,IAAkB,EAAE,EACpB,IACJ,qDACE,IAAO;AAiBX,QAhBA,EAAe,QAAQ,IAA2B,GAAI,GAAI,GAAI,MAAO;EACnE,IAAM,IAAc,EAAU,EAAG;AAajC,SAZA,KAAQ,GACR,EAAS,KACP,kBAAC,OAAD,EAAA,UACE,kBAAC,KAAD;GACE,MAAK;GACL,WAAW,QAAQ,EAAU,OAAO,EAAG;GACvC,eAAa;aAEZ;GACC,CAAA,EACA,EARI,EAQJ,CACP,EACM;GACP,EACK,kBAAC,OAAD,EAAA,UAAiB,GAAe,EAAtB,EAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnQueryDataChange.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapper/useOnQueryDataChange.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,iCAAiC,CAAA;AAIxC,KAAK,2BAA2B,GAAG;IACjC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC5C,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,OAAO,EAAE,2BAA2B,
|
|
1
|
+
{"version":3,"file":"useOnQueryDataChange.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapper/useOnQueryDataChange.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,iCAAiC,CAAA;AAIxC,KAAK,2BAA2B,GAAG;IACjC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC5C,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,OAAO,EAAE,2BAA2B,QA4CrC"}
|