col-browser 2.3.9 → 2.4.0

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 (53) hide show
  1. package/README.md +29 -0
  2. package/es/bibtex.js +2 -2
  3. package/es/chunks/{BibTex-CPaVr-5w.js → BibTex-79CCKAOK.js} +2 -2
  4. package/es/chunks/{BibTex-CPaVr-5w.js.map → BibTex-79CCKAOK.js.map} +1 -1
  5. package/es/chunks/{DatasetCitation-JpNSTWz-.js → DatasetCitation-BXtAmjdZ.js} +2 -2
  6. package/es/chunks/{DatasetCitation-JpNSTWz-.js.map → DatasetCitation-BXtAmjdZ.js.map} +1 -1
  7. package/es/chunks/{DatasetlogoWithFallback-BhWvpgDn.js → DatasetlogoWithFallback-Dava2uqZ.js} +2 -2
  8. package/es/chunks/{DatasetlogoWithFallback-BhWvpgDn.js.map → DatasetlogoWithFallback-Dava2uqZ.js.map} +1 -1
  9. package/es/chunks/{Distributions-CKn1-Qze.js → Distributions-Bd4hFYdS.js} +3 -3
  10. package/es/chunks/{Distributions-CKn1-Qze.js.map → Distributions-Bd4hFYdS.js.map} +1 -1
  11. package/es/chunks/{MergedDataBadge-DK4XUXsL.js → MergedDataBadge-C1CgoRFz.js} +2 -2
  12. package/es/chunks/{MergedDataBadge-DK4XUXsL.js.map → MergedDataBadge-C1CgoRFz.js.map} +1 -1
  13. package/es/chunks/{TaxonBreakdown-BYRnP8bH.js → TaxonBreakdown-DeWamLu_.js} +2 -2
  14. package/es/chunks/{TaxonBreakdown-BYRnP8bH.js.map → TaxonBreakdown-DeWamLu_.js.map} +1 -1
  15. package/es/chunks/{XrGutter-CORP2r5Y.js → XrGutter-CU7_QPAp.js} +2 -2
  16. package/es/chunks/{XrGutter-CORP2r5Y.js.map → XrGutter-CU7_QPAp.js.map} +1 -1
  17. package/es/chunks/config-D1NH4DTr.js +22 -0
  18. package/es/chunks/config-D1NH4DTr.js.map +1 -0
  19. package/es/chunks/{dataset-BuF063rn.js → dataset-BL6g4w0G.js} +2 -2
  20. package/es/chunks/{dataset-BuF063rn.js.map → dataset-BL6g4w0G.js.map} +1 -1
  21. package/es/chunks/{enumeration-CC8SblcI.js → enumeration-DM8Hb36g.js} +2 -2
  22. package/es/chunks/{enumeration-CC8SblcI.js.map → enumeration-DM8Hb36g.js.map} +1 -1
  23. package/es/chunks/{sector-Behb-WCC.js → sector-Qeo1zPxr.js} +2 -2
  24. package/es/chunks/{sector-Behb-WCC.js.map → sector-Qeo1zPxr.js.map} +1 -1
  25. package/es/chunks/withTheme-Dh6PRuII.js +17 -0
  26. package/es/chunks/withTheme-Dh6PRuII.js.map +1 -0
  27. package/es/config.js +5 -0
  28. package/es/config.js.map +1 -0
  29. package/es/index.js +4 -2
  30. package/es/index.js.map +1 -1
  31. package/es/search.js +14 -13
  32. package/es/search.js.map +1 -1
  33. package/es/sourceDataset.js +7 -6
  34. package/es/sourceDataset.js.map +1 -1
  35. package/es/sourceDatasetList.js +16 -15
  36. package/es/sourceDatasetList.js.map +1 -1
  37. package/es/taxon.js +215 -214
  38. package/es/taxon.js.map +1 -1
  39. package/es/taxonBreakdown.js +23 -22
  40. package/es/taxonBreakdown.js.map +1 -1
  41. package/es/taxonDistribution.js +20 -19
  42. package/es/taxonDistribution.js.map +1 -1
  43. package/es/tree.js +422 -411
  44. package/es/tree.js.map +1 -1
  45. package/package.json +5 -1
  46. package/types/config.d.ts +1 -0
  47. package/types/index.d.ts +21 -0
  48. package/umd/col-browser.js +42 -16
  49. package/umd/col-browser.js.map +1 -1
  50. package/umd/col-browser.min.js +4 -4
  51. package/umd/col-browser.min.js.map +1 -1
  52. package/es/chunks/config-B2Z9BaEd.js +0 -30
  53. package/es/chunks/config-B2Z9BaEd.js.map +0 -1
package/README.md CHANGED
@@ -181,6 +181,35 @@ The COL portal uses `mode: 'path'`. The GitHub Pages demo uses `mode: 'hash'` ag
181
181
 
182
182
  For SPA frameworks where the adapter doesn't fit (a custom router, Redux state, no URL at all), every component also works as a plain controlled component — see [Bypassing the adapter](#bypassing-the-adapter-custom-router-redux-no-url-at-all).
183
183
 
184
+ ### API endpoint (optional)
185
+
186
+ By default every component reads from the production ChecklistBank API (`https://api.checklistbank.org/`). To point them at the dev API — or a local backend — call `configure()` once before mounting:
187
+
188
+ ```jsx
189
+ // ES module — from the barrel …
190
+ import { configure } from 'col-browser';
191
+ // … or from its own subpath, if you only import single components:
192
+ import { configure } from 'col-browser/config';
193
+
194
+ configure({ dataApi: 'https://api.dev.checklistbank.org/' });
195
+ ```
196
+
197
+ ```html
198
+ <!-- UMD -->
199
+ <script>
200
+ ColBrowser.configure({ dataApi: 'https://api.dev.checklistbank.org/' });
201
+ </script>
202
+ ```
203
+
204
+ | Key | Default | Used for |
205
+ |---|---|---|
206
+ | `dataApi` | `https://api.checklistbank.org/` | every ChecklistBank API request |
207
+ | `clbPortal` | `https://www.checklistbank.org` | outbound links to dataset / publisher pages |
208
+ | `gbifApi` | `https://api.gbif.org` | occurrence counts and distribution-map tiles |
209
+ | `gbifPortal` | `https://www.gbif.org` | the GBIF occurrence-search attribution link |
210
+
211
+ `configure()` merges into the shared config, so keys you leave out keep their current value, and trailing slashes are normalised — pass the URL in either form. Components read the base URL as they render and as they fire each request, so call `configure()` before mounting; to switch endpoints at runtime, remount afterwards (the demo app does this with a React `key`).
212
+
184
213
  ### Theming (optional)
185
214
 
186
215
  Every top-level component accepts two optional theming props. When neither is set, the library's defaults are used and no Ant Design `ConfigProvider` is mounted.
package/es/bibtex.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { w as i } from "./chunks/withDatasetKey-BgMY05XE.js";
2
- import { w as m } from "./chunks/config-B2Z9BaEd.js";
3
- import { B as o } from "./chunks/BibTex-CPaVr-5w.js";
2
+ import { w as m } from "./chunks/withTheme-Dh6PRuII.js";
3
+ import { B as o } from "./chunks/BibTex-79CCKAOK.js";
4
4
  const a = m(i(o));
5
5
  export {
6
6
  a as BibTex
@@ -1,6 +1,6 @@
1
1
  import { j as s } from "./jsx-runtime-BzflLqGi.js";
2
2
  import "react";
3
- import { c as o } from "./config-B2Z9BaEd.js";
3
+ import { c as o } from "./config-D1NH4DTr.js";
4
4
  const b = ({ datasetKey: t, sourceDatasetKey: i, style: r = {} }) => {
5
5
  const a = {
6
6
  height: "40px"
@@ -10,4 +10,4 @@ const b = ({ datasetKey: t, sourceDatasetKey: i, style: r = {} }) => {
10
10
  export {
11
11
  b as B
12
12
  };
13
- //# sourceMappingURL=BibTex-CPaVr-5w.js.map
13
+ //# sourceMappingURL=BibTex-79CCKAOK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BibTex-CPaVr-5w.js","sources":["../../src/components/BibTex.js"],"sourcesContent":["import React from \"react\";\nimport config from \"../config\";\n\nconst BibTex = ({ datasetKey, sourceDatasetKey, style = {} }) => {\nconst defaultStyle = {\n height: \"40px\"\n}\nconst url = sourceDatasetKey ? `${config.dataApi}dataset/${datasetKey}/source/${sourceDatasetKey}.bib` : `${config.dataApi}dataset/${datasetKey}.bib`\n\n return (\n <a href={url} >\n <img src=\"https://www.checklistbank.org/images/bibtex_logo.png\" style={{...defaultStyle, ...style}} />\n </a>\n );\n};\n\nexport default BibTex;\n"],"names":["BibTex","datasetKey","sourceDatasetKey","style","defaultStyle","url","config","jsx"],"mappings":";;;AAGA,MAAMA,IAAS,CAAC,EAAE,YAAAC,GAAY,kBAAAC,GAAkB,OAAAC,IAAQ,CAAA,QAAS;AACjE,QAAMC,IAAe;AAAA,IACjB,QAAQ;AAAA,EAAA,GAENC,IAAMH,IAAmB,GAAGI,EAAO,OAAO,WAAWL,CAAU,WAAWC,CAAgB,SAAS,GAAGI,EAAO,OAAO,WAAWL,CAAU;AAE7I,SACEM,gBAAAA,EAAAA,IAAC,KAAA,EAAE,MAAMF,GACP,gCAAC,OAAA,EAAI,KAAI,wDAAuD,OAAO,EAAC,GAAGD,GAAc,GAAGD,EAAA,GAAQ,GACtG;AAEJ;"}
1
+ {"version":3,"file":"BibTex-79CCKAOK.js","sources":["../../src/components/BibTex.js"],"sourcesContent":["import React from \"react\";\nimport config from \"../config\";\n\nconst BibTex = ({ datasetKey, sourceDatasetKey, style = {} }) => {\nconst defaultStyle = {\n height: \"40px\"\n}\nconst url = sourceDatasetKey ? `${config.dataApi}dataset/${datasetKey}/source/${sourceDatasetKey}.bib` : `${config.dataApi}dataset/${datasetKey}.bib`\n\n return (\n <a href={url} >\n <img src=\"https://www.checklistbank.org/images/bibtex_logo.png\" style={{...defaultStyle, ...style}} />\n </a>\n );\n};\n\nexport default BibTex;\n"],"names":["BibTex","datasetKey","sourceDatasetKey","style","defaultStyle","url","config","jsx"],"mappings":";;;AAGA,MAAMA,IAAS,CAAC,EAAE,YAAAC,GAAY,kBAAAC,GAAkB,OAAAC,IAAQ,CAAA,QAAS;AACjE,QAAMC,IAAe;AAAA,IACjB,QAAQ;AAAA,EAAA,GAENC,IAAMH,IAAmB,GAAGI,EAAO,OAAO,WAAWL,CAAU,WAAWC,CAAgB,SAAS,GAAGI,EAAO,OAAO,WAAWL,CAAU;AAE7I,SACEM,gBAAAA,EAAAA,IAAC,KAAA,EAAE,MAAMF,GACP,gCAAC,OAAA,EAAI,KAAI,wDAAuD,OAAO,EAAC,GAAGD,GAAc,GAAGD,EAAA,GAAQ,GACtG;AAEJ;"}
@@ -4,7 +4,7 @@ var o = (s, n, t) => g(s, typeof n != "symbol" ? n + "" : n, t);
4
4
  import { j as l } from "./jsx-runtime-BzflLqGi.js";
5
5
  import f from "react";
6
6
  import { c as u } from "./router-CssZk5qZ.js";
7
- import { c as p } from "./config-B2Z9BaEd.js";
7
+ import { c as p } from "./config-D1NH4DTr.js";
8
8
  import { Select as x } from "antd";
9
9
  import { debounce as S, get as i } from "lodash-es";
10
10
  import $ from "react-highlight-words";
@@ -116,4 +116,4 @@ export {
116
116
  R as C,
117
117
  M as N
118
118
  };
119
- //# sourceMappingURL=DatasetCitation-JpNSTWz-.js.map
119
+ //# sourceMappingURL=DatasetCitation-BXtAmjdZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatasetCitation-JpNSTWz-.js","sources":["../../src/ColTree/NameAutocomplete.js","../../src/components/DatasetCitation.js"],"sourcesContent":["import React from \"react\";\nimport client from \"../api/client\";\nimport config from \"../config\";\nimport { AutoComplete, Input , Select} from \"antd\";\nimport { debounce, get } from \"lodash-es\";\nimport Highlighter from \"react-highlight-words\";\n\n\nclass NameSearchAutocomplete extends React.Component {\n constructor(props) {\n super(props);\n\n this.getNames = debounce(this.getNames, 500);\n this.state = {\n options: [],\n value: \"\",\n randomID: (Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)\n };\n }\n\n componentDidMount = () => {\n const { defaultTaxonKey } = this.props;\n if (defaultTaxonKey) {\n this.setDefaultValue(defaultTaxonKey);\n }\n };\n\n componentDidUpdate = (prevProps) => {\n const { defaultTaxonKey } = this.props;\n if (defaultTaxonKey !== prevProps.defaultTaxonKey) {\n if (defaultTaxonKey) {\n this.setDefaultValue(defaultTaxonKey);\n } else {\n this.setState({ value: \"\", options: [] });\n }\n }\n };\n\n componentWillUnmount() {\n this.getNames.cancel();\n }\n\n setDefaultValue = (usageId) => {\n const { datasetKey } = this.props;\n client(\n `${config.dataApi}dataset/${datasetKey}/nameusage/search?USAGE_ID=${usageId}`\n ).then((res) => {\n this.setState({ value: get(res, \"data.result[0].usage.label\") || \"\" });\n });\n };\n getNames = (q) => {\n const { datasetKey, minRank, extinct /* hideExtinct */ } = this.props;\n const {value} = this.state;\n const url = datasetKey\n ? `${config.dataApi}dataset/${datasetKey}/nameusage/suggest`\n : `${config.dataApi}name/search`;\n\n client(\n `${url}?limit=25&q=${q}${\n minRank ? `&minRank=${minRank}` : \"\"\n }${extinct ? `&extinct=${extinct}`:''}`\n )\n .then((res) => {\n this.setState({\n // names: res.data || [],\n options: this.getOptions(res.data || [], value)\n });\n })\n .catch((err) => {\n this.setState({ options: [], err });\n });\n };\n onSelectName = (val, obj) => {\n const selectedTaxon = get(obj, \"data.acceptedUsageId\")\n ? {\n key: get(obj, \"data.acceptedUsageId\"),\n rank: get(obj, \"data.rank\"),\n title: get(obj, \"data.parentOrAcceptedName\"),\n }\n : { key: get(obj, \"data.usageId\"), rank: get(obj, \"data.rank\"), title: get(obj, \"data.name\") };\n this.setState({ value: val });\n this.props.onSelectName(selectedTaxon);\n };\n onReset = () => {\n this.setState({ value: \"\", options: [] }, this.props.onResetSearch);\n };\n\n getOptions = (names, searchTerm) => {\n return names.map((o) => {\n return {\n key: o.usageId,\n value: o.usageId, //o.suggestion,\n label: (\n <Highlighter\n highlightStyle={{ fontWeight: \"bold\", padding: 0 }}\n searchWords={searchTerm ? searchTerm.split(\" \") : []}\n autoEscape\n textToHighlight={o.suggestion}\n />\n ),\n data: o,\n };\n });\n }\n render = () => {\n const { placeHolder, autoFocus, disabled } = this.props;\n const { value , options, randomID} = this.state;\n //const randomID = (Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1);\n\n // const options = this.getOptions(this.state.names, value)\n\n return (\n <div id={`taxon_autocomplete_${randomID}`} className=\"taxon-autocomplete\">\n <Select\n value={value || undefined}\n defaultActiveFirstOption={false}\n suffixIcon={null}\n showSearch\n allowClear\n notFoundContent={null}\n\n style={this.props.style ? this.props.style : { width: \"100%\" }}\n options={options}\n filterOption={false}\n onSelect={this.onSelectName}\n onClear={this.onReset}\n onSearch={(q) => (!!q ? this.getNames(q) : this.onReset())}\n placeholder={placeHolder || \"Find taxon\"}\n autoFocus={autoFocus === false ? false : true}\n disabled={disabled}\n getPopupContainer={() => {\n console.log(`Test ${randomID}`)\n return document.getElementById(`taxon_autocomplete_${randomID}`)\n }\n \n }\n \n >\n \n </Select>\n {/* <AutoComplete\n style={this.props.style ? this.props.style : { width: \"100%\" }}\n options={options}\n onSelect={this.onSelectName}\n onSearch={(q) => (!!q ? this.getNames(q) : this.onReset())}\n placeholder={placeHolder || \"Find taxon\"}\n onChange={(value) => {\n if(value){\n this.setState({ value })\n } else {\n setTimeout(this.onReset, 50); \n }\n }}\n value={value}\n autoFocus={autoFocus === false ? false : true}\n disabled={disabled}\n getPopupContainer={() => {\n console.log(`Test ${randomID}`)\n return document.getElementById(`taxon_autocomplete_${randomID}`)\n }\n \n }\n \n >\n <Input.Search allowClear />\n </AutoComplete> */}\n \n </div> \n );\n };\n}\n\nexport default NameSearchAutocomplete;\n","import React from 'react';\n\n\nconst Citation = ({ dataset }) => {\n\n return (\n <div className=\"col-dataset-citation\">\n <div className=\"col-dataset-citation-title\">{dataset.citation ? <span dangerouslySetInnerHTML={{__html: dataset.citation}}></span> : dataset.title}</div>\n <div className=\"col-dataset-citation-source\"> - accessed through <a href={`https://www.checklistbank.org/dataset/${dataset.key}`}>ChecklistBank</a></div>\n </div>\n );\n};\n\n\nexport default Citation;"],"names":["NameSearchAutocomplete","React","props","__publicField","defaultTaxonKey","prevProps","usageId","datasetKey","client","config","res","get","q","minRank","extinct","value","url","err","val","obj","selectedTaxon","names","searchTerm","o","jsx","Highlighter","placeHolder","autoFocus","disabled","options","randomID","Select","debounce","Citation","dataset","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"DatasetCitation-BXtAmjdZ.js","sources":["../../src/ColTree/NameAutocomplete.js","../../src/components/DatasetCitation.js"],"sourcesContent":["import React from \"react\";\nimport client from \"../api/client\";\nimport config from \"../config\";\nimport { AutoComplete, Input , Select} from \"antd\";\nimport { debounce, get } from \"lodash-es\";\nimport Highlighter from \"react-highlight-words\";\n\n\nclass NameSearchAutocomplete extends React.Component {\n constructor(props) {\n super(props);\n\n this.getNames = debounce(this.getNames, 500);\n this.state = {\n options: [],\n value: \"\",\n randomID: (Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)\n };\n }\n\n componentDidMount = () => {\n const { defaultTaxonKey } = this.props;\n if (defaultTaxonKey) {\n this.setDefaultValue(defaultTaxonKey);\n }\n };\n\n componentDidUpdate = (prevProps) => {\n const { defaultTaxonKey } = this.props;\n if (defaultTaxonKey !== prevProps.defaultTaxonKey) {\n if (defaultTaxonKey) {\n this.setDefaultValue(defaultTaxonKey);\n } else {\n this.setState({ value: \"\", options: [] });\n }\n }\n };\n\n componentWillUnmount() {\n this.getNames.cancel();\n }\n\n setDefaultValue = (usageId) => {\n const { datasetKey } = this.props;\n client(\n `${config.dataApi}dataset/${datasetKey}/nameusage/search?USAGE_ID=${usageId}`\n ).then((res) => {\n this.setState({ value: get(res, \"data.result[0].usage.label\") || \"\" });\n });\n };\n getNames = (q) => {\n const { datasetKey, minRank, extinct /* hideExtinct */ } = this.props;\n const {value} = this.state;\n const url = datasetKey\n ? `${config.dataApi}dataset/${datasetKey}/nameusage/suggest`\n : `${config.dataApi}name/search`;\n\n client(\n `${url}?limit=25&q=${q}${\n minRank ? `&minRank=${minRank}` : \"\"\n }${extinct ? `&extinct=${extinct}`:''}`\n )\n .then((res) => {\n this.setState({\n // names: res.data || [],\n options: this.getOptions(res.data || [], value)\n });\n })\n .catch((err) => {\n this.setState({ options: [], err });\n });\n };\n onSelectName = (val, obj) => {\n const selectedTaxon = get(obj, \"data.acceptedUsageId\")\n ? {\n key: get(obj, \"data.acceptedUsageId\"),\n rank: get(obj, \"data.rank\"),\n title: get(obj, \"data.parentOrAcceptedName\"),\n }\n : { key: get(obj, \"data.usageId\"), rank: get(obj, \"data.rank\"), title: get(obj, \"data.name\") };\n this.setState({ value: val });\n this.props.onSelectName(selectedTaxon);\n };\n onReset = () => {\n this.setState({ value: \"\", options: [] }, this.props.onResetSearch);\n };\n\n getOptions = (names, searchTerm) => {\n return names.map((o) => {\n return {\n key: o.usageId,\n value: o.usageId, //o.suggestion,\n label: (\n <Highlighter\n highlightStyle={{ fontWeight: \"bold\", padding: 0 }}\n searchWords={searchTerm ? searchTerm.split(\" \") : []}\n autoEscape\n textToHighlight={o.suggestion}\n />\n ),\n data: o,\n };\n });\n }\n render = () => {\n const { placeHolder, autoFocus, disabled } = this.props;\n const { value , options, randomID} = this.state;\n //const randomID = (Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1);\n\n // const options = this.getOptions(this.state.names, value)\n\n return (\n <div id={`taxon_autocomplete_${randomID}`} className=\"taxon-autocomplete\">\n <Select\n value={value || undefined}\n defaultActiveFirstOption={false}\n suffixIcon={null}\n showSearch\n allowClear\n notFoundContent={null}\n\n style={this.props.style ? this.props.style : { width: \"100%\" }}\n options={options}\n filterOption={false}\n onSelect={this.onSelectName}\n onClear={this.onReset}\n onSearch={(q) => (!!q ? this.getNames(q) : this.onReset())}\n placeholder={placeHolder || \"Find taxon\"}\n autoFocus={autoFocus === false ? false : true}\n disabled={disabled}\n getPopupContainer={() => {\n console.log(`Test ${randomID}`)\n return document.getElementById(`taxon_autocomplete_${randomID}`)\n }\n \n }\n \n >\n \n </Select>\n {/* <AutoComplete\n style={this.props.style ? this.props.style : { width: \"100%\" }}\n options={options}\n onSelect={this.onSelectName}\n onSearch={(q) => (!!q ? this.getNames(q) : this.onReset())}\n placeholder={placeHolder || \"Find taxon\"}\n onChange={(value) => {\n if(value){\n this.setState({ value })\n } else {\n setTimeout(this.onReset, 50); \n }\n }}\n value={value}\n autoFocus={autoFocus === false ? false : true}\n disabled={disabled}\n getPopupContainer={() => {\n console.log(`Test ${randomID}`)\n return document.getElementById(`taxon_autocomplete_${randomID}`)\n }\n \n }\n \n >\n <Input.Search allowClear />\n </AutoComplete> */}\n \n </div> \n );\n };\n}\n\nexport default NameSearchAutocomplete;\n","import React from 'react';\n\n\nconst Citation = ({ dataset }) => {\n\n return (\n <div className=\"col-dataset-citation\">\n <div className=\"col-dataset-citation-title\">{dataset.citation ? <span dangerouslySetInnerHTML={{__html: dataset.citation}}></span> : dataset.title}</div>\n <div className=\"col-dataset-citation-source\"> - accessed through <a href={`https://www.checklistbank.org/dataset/${dataset.key}`}>ChecklistBank</a></div>\n </div>\n );\n};\n\n\nexport default Citation;"],"names":["NameSearchAutocomplete","React","props","__publicField","defaultTaxonKey","prevProps","usageId","datasetKey","client","config","res","get","q","minRank","extinct","value","url","err","val","obj","selectedTaxon","names","searchTerm","o","jsx","Highlighter","placeHolder","autoFocus","disabled","options","randomID","Select","debounce","Citation","dataset","jsxs"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { j as l } from "./jsx-runtime-BzflLqGi.js";
2
2
  import n from "react";
3
- import { c } from "./config-B2Z9BaEd.js";
3
+ import { c } from "./config-D1NH4DTr.js";
4
4
  class m extends n.Component {
5
5
  constructor(t) {
6
6
  super(t), this.state = { error: !0, loading: !0 };
@@ -21,4 +21,4 @@ class m extends n.Component {
21
21
  export {
22
22
  m as D
23
23
  };
24
- //# sourceMappingURL=DatasetlogoWithFallback-BhWvpgDn.js.map
24
+ //# sourceMappingURL=DatasetlogoWithFallback-Dava2uqZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatasetlogoWithFallback-BhWvpgDn.js","sources":["../../src/components/DatasetlogoWithFallback.js"],"sourcesContent":["import React from \"react\";\nimport config from \"../config\";\n\nclass DatasetlogoWithFallback extends React.Component {\n constructor(props) {\n super(props);\n this.state = { error: true, loading: true };\n }\n render() {\n\n const {fallBack = null, datasetKey, sourceDatasetKey, style, size = 'MEDIUM'} = this.props;\n const {error, loading} = this.state;\n return (loading || !error) ?\n <img\n style={style}\n src={`${config.dataApi}dataset/${datasetKey}/logo/source/${sourceDatasetKey}?size=${size}`}\n onLoad={() => this.setState({error: false, loading: false})}\n onError={() => this.setState({error: true, loading: false})}\n /> : fallBack;\n \n ;\n }\n}\nexport default DatasetlogoWithFallback;"],"names":["DatasetlogoWithFallback","React","props","fallBack","datasetKey","sourceDatasetKey","style","size","error","loading","jsx","config"],"mappings":";;;AAGA,MAAMA,UAAgCC,EAAM,UAAU;AAAA,EACpD,YAAYC,GAAO;AACjB,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,OAAO,IAAM,SAAS,GAAA;AAAA,EACvC;AAAA,EACA,SAAS;AAEL,UAAM,EAAC,UAAAC,IAAW,MAAM,YAAAC,GAAY,kBAAAC,GAAkB,OAAAC,GAAO,MAAAC,IAAO,aAAY,KAAK,OAC/E,EAAC,OAAAC,GAAO,SAAAC,EAAA,IAAW,KAAK;AAChC,WAAQA,KAAW,CAACD,IAChBE,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAAJ;AAAA,QACA,KAAK,GAAGK,EAAO,OAAO,WAAWP,CAAU,gBAAgBC,CAAgB,SAASE,CAAI;AAAA,QACxF,QAAQ,MAAM,KAAK,SAAS,EAAC,OAAO,IAAO,SAAS,IAAM;AAAA,QAC1D,SAAS,MAAM,KAAK,SAAS,EAAC,OAAO,IAAM,SAAS,GAAA,CAAM;AAAA,MAAA;AAAA,IAAA,IACvDJ;AAAA,EAGX;AACF;"}
1
+ {"version":3,"file":"DatasetlogoWithFallback-Dava2uqZ.js","sources":["../../src/components/DatasetlogoWithFallback.js"],"sourcesContent":["import React from \"react\";\nimport config from \"../config\";\n\nclass DatasetlogoWithFallback extends React.Component {\n constructor(props) {\n super(props);\n this.state = { error: true, loading: true };\n }\n render() {\n\n const {fallBack = null, datasetKey, sourceDatasetKey, style, size = 'MEDIUM'} = this.props;\n const {error, loading} = this.state;\n return (loading || !error) ?\n <img\n style={style}\n src={`${config.dataApi}dataset/${datasetKey}/logo/source/${sourceDatasetKey}?size=${size}`}\n onLoad={() => this.setState({error: false, loading: false})}\n onError={() => this.setState({error: true, loading: false})}\n /> : fallBack;\n \n ;\n }\n}\nexport default DatasetlogoWithFallback;"],"names":["DatasetlogoWithFallback","React","props","fallBack","datasetKey","sourceDatasetKey","style","size","error","loading","jsx","config"],"mappings":";;;AAGA,MAAMA,UAAgCC,EAAM,UAAU;AAAA,EACpD,YAAYC,GAAO;AACjB,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,OAAO,IAAM,SAAS,GAAA;AAAA,EACvC;AAAA,EACA,SAAS;AAEL,UAAM,EAAC,UAAAC,IAAW,MAAM,YAAAC,GAAY,kBAAAC,GAAkB,OAAAC,GAAO,MAAAC,IAAO,aAAY,KAAK,OAC/E,EAAC,OAAAC,GAAO,SAAAC,EAAA,IAAW,KAAK;AAChC,WAAQA,KAAW,CAACD,IAChBE,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAAJ;AAAA,QACA,KAAK,GAAGK,EAAO,OAAO,WAAWP,CAAU,gBAAgBC,CAAgB,SAASE,CAAI;AAAA,QACxF,QAAQ,MAAM,KAAK,SAAS,EAAC,OAAO,IAAO,SAAS,IAAM;AAAA,QAC1D,SAAS,MAAM,KAAK,SAAS,EAAC,OAAO,IAAM,SAAS,GAAA,CAAM;AAAA,MAAA;AAAA,IAAA,IACvDJ;AAAA,EAGX;AACF;"}
@@ -7,10 +7,10 @@ import st, { useState as L, useRef as C, useMemo as se, useEffect as $ } from "r
7
7
  import { Spin as ot, Popover as at, Radio as ue } from "antd";
8
8
  import { isArray as Le, get as O, keyBy as it, startCase as ct } from "lodash-es";
9
9
  import { c as ne, p as lt } from "./router-CssZk5qZ.js";
10
- import { c as z } from "./config-B2Z9BaEd.js";
10
+ import { c as z } from "./config-D1NH4DTr.js";
11
11
  import { E as dt } from "./ErrorMsg-K8k5PPTp.js";
12
12
  import { I as ut } from "./AntdIcon-B1nMlqyh.js";
13
- import { M as pt } from "./MergedDataBadge-DK4XUXsL.js";
13
+ import { M as pt } from "./MergedDataBadge-C1CgoRFz.js";
14
14
  import { P as ft } from "./PresentationItem-C4yZ555-.js";
15
15
  import D from "maplibre-gl";
16
16
  import "maplibre-gl/dist/maplibre-gl.css";
@@ -1166,4 +1166,4 @@ export {
1166
1166
  dn as D,
1167
1167
  bt as R
1168
1168
  };
1169
- //# sourceMappingURL=Distributions-CKn1-Qze.js.map
1169
+ //# sourceMappingURL=Distributions-Bd4hFYdS.js.map