col-browser 2.0.0 → 2.1.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 (73) hide show
  1. package/README.md +17 -0
  2. package/es/bibtex.js +8 -0
  3. package/es/bibtex.js.map +1 -0
  4. package/es/chunks/AntdIcon-B1nMlqyh.js +984 -0
  5. package/es/chunks/AntdIcon-B1nMlqyh.js.map +1 -0
  6. package/es/chunks/BibTex-BqzD3qLB.js +13 -0
  7. package/es/chunks/BibTex-BqzD3qLB.js.map +1 -0
  8. package/es/chunks/DatasetCitation-bkPmDDYB.js +119 -0
  9. package/es/chunks/DatasetCitation-bkPmDDYB.js.map +1 -0
  10. package/es/chunks/DatasetlogoWithFallback-CbP7vRs_.js +823 -0
  11. package/es/chunks/DatasetlogoWithFallback-CbP7vRs_.js.map +1 -0
  12. package/es/chunks/Distributions-DDYEbGhW.js +1110 -0
  13. package/es/chunks/Distributions-DDYEbGhW.js.map +1 -0
  14. package/es/chunks/ErrorMsg-K8k5PPTp.js +26 -0
  15. package/es/chunks/ErrorMsg-K8k5PPTp.js.map +1 -0
  16. package/es/chunks/LinkOutlined-2IkQWTV7.js +22 -0
  17. package/es/chunks/LinkOutlined-2IkQWTV7.js.map +1 -0
  18. package/es/chunks/MergedDataBadge-DsTsn5Xu.js +134 -0
  19. package/es/chunks/MergedDataBadge-DsTsn5Xu.js.map +1 -0
  20. package/es/chunks/MetricsPresentation-U_CO8JoH.js +66 -0
  21. package/es/chunks/MetricsPresentation-U_CO8JoH.js.map +1 -0
  22. package/es/chunks/TaxonBreakdown-BshFaQql.js +205 -0
  23. package/es/chunks/TaxonBreakdown-BshFaQql.js.map +1 -0
  24. package/es/chunks/config-BPRXv9x8.js +31 -0
  25. package/es/chunks/config-BPRXv9x8.js.map +1 -0
  26. package/es/chunks/dataset-DvQG4NjA.js +30 -0
  27. package/es/chunks/dataset-DvQG4NjA.js.map +1 -0
  28. package/es/chunks/enumeration-yDQXSZsf.js +12 -0
  29. package/es/chunks/enumeration-yDQXSZsf.js.map +1 -0
  30. package/es/chunks/index-CNK3JADR.js +95 -0
  31. package/es/chunks/index-CNK3JADR.js.map +1 -0
  32. package/es/chunks/jsx-runtime-BzflLqGi.js +283 -0
  33. package/es/chunks/jsx-runtime-BzflLqGi.js.map +1 -0
  34. package/es/chunks/router-CssZk5qZ.js +109 -0
  35. package/es/chunks/router-CssZk5qZ.js.map +1 -0
  36. package/es/chunks/sector-BnVzMnMO.js +9 -0
  37. package/es/chunks/sector-BnVzMnMO.js.map +1 -0
  38. package/es/chunks/withDatasetKey-BgMY05XE.js +48 -0
  39. package/es/chunks/withDatasetKey-BgMY05XE.js.map +1 -0
  40. package/es/col-browser.css +1 -1
  41. package/es/index.js +18 -7964
  42. package/es/index.js.map +1 -1
  43. package/es/routing.js +5 -0
  44. package/es/routing.js.map +1 -0
  45. package/es/search.js +803 -0
  46. package/es/search.js.map +1 -0
  47. package/es/sourceDataset.js +453 -0
  48. package/es/sourceDataset.js.map +1 -0
  49. package/es/sourceDatasetList.js +366 -0
  50. package/es/sourceDatasetList.js.map +1 -0
  51. package/es/taxon.js +1643 -0
  52. package/es/taxon.js.map +1 -0
  53. package/es/taxonBreakdown.js +42 -0
  54. package/es/taxonBreakdown.js.map +1 -0
  55. package/es/taxonDistribution.js +48 -0
  56. package/es/taxonDistribution.js.map +1 -0
  57. package/es/tree.js +821 -0
  58. package/es/tree.js.map +1 -0
  59. package/package.json +51 -9
  60. package/types/bibtex.d.ts +1 -0
  61. package/types/index.d.ts +158 -0
  62. package/types/routing.d.ts +1 -0
  63. package/types/search.d.ts +1 -0
  64. package/types/sourceDataset.d.ts +1 -0
  65. package/types/sourceDatasetList.d.ts +1 -0
  66. package/types/taxon.d.ts +1 -0
  67. package/types/taxonBreakdown.d.ts +1 -0
  68. package/types/taxonDistribution.d.ts +1 -0
  69. package/types/tree.d.ts +1 -0
  70. package/umd/col-browser.js +20478 -27048
  71. package/umd/col-browser.js.map +1 -1
  72. package/umd/col-browser.min.js +5 -13
  73. package/umd/col-browser.min.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sources":["../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/UpOutlined.js","../node_modules/@ant-design/icons/es/icons/UpOutlined.js","../src/Search/Classification.js","../src/Search/SearchBox.js","../src/Search/MultiValueFilter.js","../src/Search/RowDetail.js","../src/components/DatasetAutocomplete.js","../src/Search/NameSearch.js","../src/Search/index.js","../src/entries/search.js"],"sourcesContent":["// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst DownOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownOutlinedSvg\n}));\n\n/**![down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4NCAyNTZoLTc1Yy01LjEgMC05LjkgMi41LTEyLjkgNi42TDUxMiA2NTQuMiAyMjcuOSAyNjIuNmMtMy00LjEtNy44LTYuNi0xMi45LTYuNmgtNzVjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDM1Mi42IDQ4Ni4xYzEyLjggMTcuNiAzOSAxNy42IDUxLjcgMGwzNTIuNi00ODYuMWMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3oiIC8+PC9zdmc+) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(DownOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DownOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar UpOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\" } }] }, \"name\": \"up\", \"theme\": \"outlined\" };\nexport default UpOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport UpOutlinedSvg from \"@ant-design/icons-svg/es/asn/UpOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst UpOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: UpOutlinedSvg\n}));\n\n/**![up](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5MC41IDc1NS4zTDUzNy45IDI2OS4yYy0xMi44LTE3LjYtMzktMTcuNi01MS43IDBMMTMzLjUgNzU1LjNBOCA4IDAgMDAxNDAgNzY4aDc1YzUuMSAwIDkuOS0yLjUgMTIuOS02LjZMNTEyIDM2OS44bDI4NC4xIDM5MS42YzMgNC4xIDcuOCA2LjYgMTIuOSA2LjZoNzVjNi41IDAgMTAuMy03LjQgNi41LTEyLjd6IiAvPjwvc3ZnPg==) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(UpOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'UpOutlined';\n}\nexport default RefIcon;","import React from \"react\";\nimport { LinkTo } from \"../router\";\n\nconst ranks = [\"family\", \"superfamily\", \"order\", \"subclass\", \"class\", \"superclass\", \"subphylum\", \"phylum\"];\n\nexport default ({ classification, maxParents = classification.length, truncate }) => {\n const clazzification = classification.slice(Math.max(classification.length - maxParents));\n if (truncate) {\n const classificationRankMap = classification.reduce((acc, curr) => (acc[curr.rank] = curr, acc), {});\n\n const kingdom = classificationRankMap[\"kingdom\"];\n let familyOrClosestAlternative;\n for (let i = 0; i < ranks.length; i++) {\n if (classificationRankMap[ranks[i]]) {\n familyOrClosestAlternative = classificationRankMap[ranks[i]];\n break;\n }\n }\n if (kingdom && familyOrClosestAlternative) {\n return (\n <React.Fragment>\n <LinkTo to=\"taxon\" args={kingdom.id}>{kingdom.name}</LinkTo>\n {familyOrClosestAlternative.rank === \"phylum\" ? \" > \" : \" > ... > \"}\n <LinkTo to=\"taxon\" args={familyOrClosestAlternative.id}>{familyOrClosestAlternative.name}</LinkTo>\n </React.Fragment>\n );\n } else if (kingdom) {\n return <LinkTo to=\"taxon\" args={kingdom.id}>{kingdom.name}</LinkTo>;\n } else {\n return null;\n }\n } else {\n return clazzification.map((t, key) => (\n <React.Fragment key={key}>\n <LinkTo to=\"taxon\" args={t.id}>{t.name}</LinkTo>\n {!Object.is(clazzification.length - 1, key) && \" > \"}\n </React.Fragment>\n ));\n }\n};\n","import React from \"react\";\nimport { CloseCircleOutlined } from '@ant-design/icons';\nimport { Input } from \"antd\";\n// test\nconst Search = Input.Search;\n\nclass SearchBox extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n search: \"\"\n };\n }\n componentDidMount = () => {\n if (this.props.defaultValue) {\n this.setState({ search: this.props.defaultValue });\n }\n };\n componentDidUpdate = (prevProps) => {\n\n if (prevProps.defaultValue !== this.props.defaultValue) {\n this.setState({ search: this.props.defaultValue});\n }\n }\n\n resetSearch = () => {\n this.setState({ search: \"\" }, () => {\n this.props.onSearch(this.state.search);\n });\n }\n render = () => {\n \n return (\n <Search\n style={this.props.style || null}\n placeholder=\"Search query\"\n value={this.state.search}\n onSearch={value => this.props.onSearch(this.state.search)}\n onChange={event => this.setState({ search: event.target.value})}\n addonAfter={this.props.addonAfter}\n allowClear\n autoFocus={true}\n />\n );\n };\n}\n\nexport default SearchBox;\n","import React from \"react\";\n\nimport { Form, Select } from \"antd\";\nimport { isArray, snakeCase, startCase } from \"lodash-es\";\n\n\nconst FormItem = Form.Item;\n\nconst Option = Select.Option;\n\nconst formItemLayout = {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 24 },\n md: { span: 8 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 24 },\n md: { span: 16 },\n },\n };\n\nclass MultiValueFilter extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n selected: this.props.selected,\n randomID: (Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)\n };\n }\n\n\n handleChange = selected => {\n \n this.setState({ selected }, () => {\n this.props.onChange(selected);\n });\n };\n\n render = () => {\n const {defaultValue, label, vocab} = this.props;\n const {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 const vocabKeys = new Set([...vocab.map(i => i.value)]);\n let val; \n if(defaultValue && isArray(defaultValue)){\n val = defaultValue.filter(v => vocabKeys.has(v))\n } else if(defaultValue){\n val = [defaultValue].filter(v => vocabKeys.has(v))\n }\n return (\n <FormItem\n {...formItemLayout}\n label={label}\n style={{marginBottom: '8px', width: \"100%\"}}\n >\n <div id={`${snakeCase(label)}_${randomID}`}>\n <Select\n showSearch\n // style={{ width: \"100%\" }}\n mode=\"multiple\"\n placeholder=\"Please select\"\n value={val}\n onChange={this.handleChange}\n getPopupContainer={() =>\n document.getElementById(`${snakeCase(label)}_${randomID}`)\n }\n >\n {vocab.map((i) => {\n return (typeof i === 'string') ? <Option key={i} value={i}>{startCase(i)}</Option> : <Option key={i.value} value={i.value}>{i.label}</Option>\n })}\n </Select>\n </div>\n </FormItem>\n );\n };\n}\n\nexport default MultiValueFilter;\n","import React from \"react\";\nimport { Row, Col, Tag, Tooltip } from \"antd\";\nimport Classification from \"./Classification\";\nimport { get, initial } from \"lodash-es\";\n\nconst RowDetail = ({ issues, usage, classification, vernacularNames, issueMap }) => (\n <React.Fragment>\n {get(usage, \"id\") && (\n <Row style={{ marginBottom: \"10px\" }}>\n <Col\n span={3}\n style={{\n textAlign: \"right\",\n paddingRight: \"16px\",\n fontWeight: \"bold\"\n }}\n >\n ID:\n </Col>\n <Col span={18}>{get(usage, \"id\")}</Col>\n </Row>\n )}\n {classification && (\n <Row style={{ marginBottom: \"10px\" }}>\n <Col\n span={3}\n style={{\n textAlign: \"right\",\n paddingRight: \"16px\",\n fontWeight: \"bold\"\n }}\n >\n Classification:\n </Col>\n <Col span={18}>\n <Classification\n classification={initial(classification)}\n />\n </Col>\n </Row>\n )}\n {vernacularNames && (\n <Row>\n <Col\n span={3}\n style={{\n textAlign: \"right\",\n paddingRight: \"16px\",\n fontWeight: \"bold\"\n }}\n >\n Vernacular:\n </Col>\n <Col span={18} style={{paddingBottom: \"12px\"}}>\n {vernacularNames.slice(0, 8).map(vn => vn.name).join(\", \")}\n </Col>\n </Row>\n )} \n { /* issues && (\n <Row>\n <Col\n span={3}\n style={{\n textAlign: \"right\",\n paddingRight: \"16px\",\n fontWeight: \"bold\"\n }}\n >\n Issues:\n </Col>\n <Col span={18}>\n {issues.map(i => (\n <Tooltip key={i} title={get(issueMap, `[${i}].description`)}>\n {\" \"}\n <Tag key={i} color={get(issueMap, `[${i}].color`)}>\n {i}\n </Tag>\n </Tooltip>\n ))}\n </Col>\n </Row>\n ) */}\n </React.Fragment>\n);\n\nexport default RowDetail;\n","import React from 'react';\nimport client from \"../api/client\";\nimport config from \"../config\";\nimport { CloseCircleOutlined } from '@ant-design/icons';\nimport { AutoComplete, Input, Button } from 'antd';\nimport { debounce, get } from \"lodash-es\";\nimport Highlighter from \"react-highlight-words\";\n\nconst Option = AutoComplete.Option;\n\nclass DatasetAutocomplete extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.getDatasets = debounce(this.getDatasets, 500);\n\n this.state = {\n datasets: [],\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 \n\n componentDidMount = () => {\n const {defaultDatasetKey} = this.props;\n if(defaultDatasetKey){\n this.setDefaultValue(defaultDatasetKey)\n }\n }\n\n componentDidUpdate = (prevProps) => {\n const { defaultDatasetKey} = this.props;\n if(defaultDatasetKey && defaultDatasetKey !== prevProps.defaultDatasetKey){\n this.setDefaultValue(defaultDatasetKey)\n } else if(prevProps.defaultDatasetKey && !defaultDatasetKey){\n this.setState({value: ''})\n }\n }\n\n componentWillUnmount() {\n this.getDatasets.cancel();\n }\n\n setDefaultValue = (defaultDatasetKey) => {\n client(`${config.dataApi}dataset/${defaultDatasetKey}`)\n .then(res => {\n this.setState({value: get(res, 'data.title') || ''})\n this.props.onSelectDataset(res.data)\n })\n }\n\n getDatasets = (q) => {\n const {contributesTo} = this.props;\n client(`${config.dataApi}dataset?q=${q}&limit=30${contributesTo ? '&contributesTo='+contributesTo : ''}`)\n .then((res) => {\n this.setState({ datasets: res.data.result})\n })\n .catch((err) => {\n this.setState({ datasets: [], err })\n })\n }\n onSelectDataset = (val, obj) => {\n this.setState({value: val})\n this.props.onSelectDataset({key: obj.key, title: val})\n }\n onReset = () => {\n this.setState({ value: \"\", names: [] }, this.props.onResetSearch);\n }\n render = () => {\n const {value, randomID} = this.state;\n const {style} = this.props\n // const randomID = (Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1)*(Math.floor(Math.random() * 100) +1);\n \n\n const options = this.state.datasets ? this.state.datasets.map((o) => {\n const text = `${o.alias || o.title} [${o.key}]`;\n return {\n key: o.key,\n value: text,\n label: (\n <Highlighter\n highlightStyle={{ fontWeight: \"bold\", padding: 0 }}\n searchWords={value.split(\" \")}\n autoEscape\n textToHighlight={text}\n />\n ),\n data: o\n }\n \n }) : [];\n\n return <div id={`dataset_autocomplete_${randomID}`}><AutoComplete\n onSelect={this.onSelectDataset}\n onSearch={(q) => (!!q ? this.getDatasets(q) : this.onReset())}\n options={options}\n placeholder={this.props.placeHolder || \"Find dataset\"}\n style={style ? style : { width: '100%' }}\n onChange={(value) => this.setState({value})}\n value={value}\n getPopupContainer={() =>\n document.getElementById(`dataset_autocomplete_${randomID}`)\n }\n >\n <Input.Search allowClear />\n </AutoComplete></div>\n }\n\n}\n\nexport default DatasetAutocomplete;","import React from \"react\";\nimport client from \"../api/client\";\nimport { UpOutlined, DownOutlined } from \"@ant-design/icons\";\nimport { LinkTo } from \"../router\";\nimport { getDatasetSimple } from \"../api/dataset\";\nimport { getTaxGroup } from \"../api/enumeration\";\nimport {\n Table,\n Alert,\n Row,\n Col,\n Button,\n Form,\n Radio,\n Select,\n} from \"antd\";\nimport config from \"../config\";\nimport qs from \"query-string\";\nimport Classification from \"./Classification\";\nimport SearchBox from \"./SearchBox\";\nimport MultiValueFilter from \"./MultiValueFilter\";\nimport RowDetail from \"./RowDetail\";\nimport { forEach, get, initial, isArray, isEmpty, isEqual, merge, startCase } from \"lodash-es\";\nimport ErrorMsg from \"../components/ErrorMsg\";\nimport NameAutocomplete from \"../ColTree/NameAutocomplete\";\nimport DatasetAutocomplete from \"../components/DatasetAutocomplete\";\nimport Citation from \"../components/DatasetCitation\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\n\nconst FormItem = Form.Item;\nconst RadioGroup = Radio.Group;\nconst FACET_VOCAB = [\n \"rank\",\n \"issue\",\n \"status\",\n \"nomStatus\",\n \"nameType\",\n \"field\",\n \"authorship\",\n \"extinct\",\n \"environment\",\n \"group\",\n \"authorshipYear\",\n];\nconst PAGE_SIZE = 50;\nconst FACET_LIMIT = 50;\nconst defaultParams = {\n limit: 50,\n offset: 0,\n facet: FACET_VOCAB, //[\"rank\", \"issue\", \"status\", \"nomStatus\", \"nameType\", \"field\"],\n facetLimit: FACET_LIMIT,\n sortBy: \"relevance\",\n};\n\nconst getColumns = () => [\n {\n title: \"\",\n dataIndex: [\"usage\", \"merged\"],\n key: \"merged\",\n width: 12,\n render: (text, record) =>\n record?.usage?.merged ? <MergedDataBadge datasetKey={record?.usage?.datasetKey} verbatimSourceKey={record?.usage?.verbatimSourceKey} /> : \"\",\n },\n {\n title: \"Scientific Name\",\n dataIndex: [\"usage\", \"labelHtml\"],\n key: \"scientificName\",\n render: (text, record) => {\n const id =\n get(record, \"usage.accepted.id\") || get(record, \"usage.id\");\n return (\n <LinkTo to=\"taxon\" args={id}>\n <span dangerouslySetInnerHTML={{ __html: text }} />\n </LinkTo>\n );\n },\n width: 200,\n sorter: true,\n },\n {\n title: \"Status\",\n dataIndex: [\"usage\", \"status\"],\n key: \"status\",\n width: 200,\n render: (text, record) => {\n return ![\"synonym\", \"ambiguous synonym\", \"misapplied\"].includes(text) ? (\n text\n ) : (\n <React.Fragment key={get(record, \"usage.id\")}>\n {text} {text === \"misapplied\" ? \"to \" : \"of \"}\n <span\n dangerouslySetInnerHTML={{\n __html: get(record, \"usage.accepted.labelHtml\"),\n }}\n />\n </React.Fragment>\n );\n },\n },\n {\n title: \"Rank\",\n dataIndex: [\"usage\", \"name\", \"rank\"],\n key: \"rank\",\n width: 60,\n sorter: true,\n },\n {\n title: \"Classification\",\n dataIndex: [\"usage\", \"classification\"],\n key: \"parents\",\n width: 180,\n render: (text, record) => {\n return !get(record, \"classification\") ? (\n \"\"\n ) : (\n <Classification\n key={get(record, \"usage.id\")}\n classification={initial(record.classification)}\n truncate={true}\n datasetKey={get(record, \"usage.name.datasetKey\")}\n />\n );\n },\n },\n];\n\nclass NameSearchPage extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n advancedFilters: false,\n columns: getColumns(),\n params: {},\n taxGroups: [],\n pagination: {\n pageSize: PAGE_SIZE,\n current: 1,\n showQuickJumper: true,\n pageSizeOptions: [50, 100, 500, 1000],\n },\n loading: false,\n dataset: null,\n };\n }\n\n componentDidMount = async () => {\n this.parseParamsAndGetData();\n const { datasetKey } = this.props;\n // Single dataset lookup. Stores both the descriptor (used by the\n // citation footer when enabled) and the lowercase origin, which gates\n // the source-dataset and Content filter UI.\n try {\n const { data: dataset } = await getDatasetSimple(datasetKey);\n this.setState({\n dataset,\n datasetOrigin: (dataset?.origin || \"\").toLowerCase(),\n });\n } catch (err) {}\n try {\n const taxGroups = await getTaxGroup();\n this.setState({ taxGroups });\n } catch (err) {}\n };\n\n componentDidUpdate = (prevProps) => {\n if (!isEqual(prevProps.filters, this.props.filters)) {\n this.parseParamsAndGetData();\n }\n };\n\n getRank = () => {\n client(`${config.dataApi}vocab/rank`).then((res) =>\n this.setState({ rank: res.data.map((r) => r.name) })\n );\n };\n parseParamsAndGetData = () => {\n const { defaultTaxonKey, filters } = this.props;\n let params = { ...(filters || {}) };\n if (defaultTaxonKey && !params.TAXON_ID) {\n params.TAXON_ID = defaultTaxonKey;\n }\n if (isEmpty(params)) {\n params = defaultParams;\n this.pushParams(defaultParams);\n } else if (!params.facet) {\n params.facet = FACET_VOCAB;\n }\n if (!params.facetLimit) {\n params.facetLimit = FACET_LIMIT;\n }\n\n // fuzzy is no longer a separate API parameter; it's now the FUZZY type value\n delete params.fuzzy;\n\n if (!params.limit) {\n params.limit = PAGE_SIZE;\n }\n if (!params.offset) {\n params.offset = 0;\n }\n this.setState(\n {\n params,\n pagination: {\n pageSize: params.limit || PAGE_SIZE,\n current:\n Number(params.offset || 0) / Number(params.limit || PAGE_SIZE) + 1,\n showQuickJumper: true,\n pageSizeOptions: [50, 100, 500, 1000],\n },\n },\n this.getData\n );\n };\n\n pushParams = (params) => {\n const next = { ...params };\n if (!next.q) delete next.q;\n if (this.props.onFiltersChange) this.props.onFiltersChange(next);\n };\n\n getData = () => {\n const { params } = this.state;\n this.setState({ loading: true });\n const { datasetKey } = this.props;\n\n const url = `${config.dataApi}dataset/${datasetKey}/nameusage/search`;\n const params_ = get(params, \"status\")\n ? params\n : { ...params, status: \"_NOT_NULL\" };\n client(`${url}?${qs.stringify(params_)}`)\n .then((res) => {\n const pagination = { ...this.state.pagination };\n pagination.total = res.data.total;\n\n this.setState({\n loading: false,\n data: res.data,\n err: null,\n pagination,\n });\n })\n .catch((err) => {\n this.setState({ loading: false, error: err, data: [] });\n });\n };\n handleTableChange = (pagination, filters, sorter) => {\n let query = merge(this.state.params, {\n limit: pagination.pageSize,\n offset: (pagination.current - 1) * pagination.pageSize,\n ...filters,\n });\n if (sorter && sorter.field) {\n if (sorter.field[sorter.field.length - 1] === \"labelHtml\") {\n query.sortBy = \"name\";\n } else if (sorter.field[sorter.field.length - 1] === \"rank\") {\n query.sortBy = \"taxonomic\";\n } else {\n query.sortBy = sorter.field[sorter.field.length - 1];\n }\n }\n if (sorter && sorter.order === \"descend\") {\n query.reverse = true;\n } else {\n query.reverse = false;\n }\n this.setState({ params: query }, () => this.pushParams(query));\n };\n\n updateSearch = (params) => {\n let newParams = { ...this.state.params, offset: 0, limit: 50 };\n forEach(params, (v, k) => {\n newParams[k] = v;\n });\n const notNullParams = Object.keys(newParams).reduce(\n (acc, cur) => (\n newParams[cur] !== null && (acc[cur] = newParams[cur]), acc\n ),\n {}\n );\n this.setState({ params: notNullParams }, () =>\n this.pushParams(notNullParams)\n );\n };\n\n resetSearch = () => {\n this.setState(\n {\n params: defaultParams,\n },\n () => this.pushParams(defaultParams)\n );\n };\n\n toggleAdvancedFilters = () => {\n this.setState({ advancedFilters: !this.state.advancedFilters });\n };\n\n render() {\n const {\n data: { result, facets },\n loading,\n error,\n params,\n pagination,\n advancedFilters,\n dataset,\n taxGroups,\n } = this.state;\n const { datasetKey, defaultTaxonKey, citation } = this.props;\n const facetRanks = get(facets, \"rank\")\n ? facets.rank.map((r) => ({\n value: r.value,\n label: `${startCase(r.value)} (${r.count.toLocaleString(\"en-GB\")})`,\n }))\n : null;\n const facetIssues = get(facets, \"issue\")\n ? facets.issue.map((i) => ({\n value: i.value,\n label: `${startCase(i.value)} (${i.count.toLocaleString(\"en-GB\")})`,\n }))\n : null;\n const facetTaxonomicStatus = get(facets, \"status\")\n ? facets.status.map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : null;\n const facetNomStatus = get(facets, \"nomStatus\")\n ? facets.nomStatus.map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : null;\n const facetNomType = get(facets, \"nameType\")\n ? facets.nameType.map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : null;\n const facetNomField = get(facets, \"field\")\n ? facets.field.map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : null;\n const facetAuthorship = get(facets, \"authorship\")\n ? facets[\"authorship\"].map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : [];\n const extinctLabel = (v) => {\n if (v === \"1\" || v === true || v === \"true\") return \"Extinct\";\n if (v === \"0\" || v === false || v === \"false\") return \"Extant\";\n return \"Unknown\";\n };\n const facetExtinct = get(facets, \"extinct\")\n ? facets[\"extinct\"].map((s) => ({\n value: s.value,\n label: `${extinctLabel(s?.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : [];\n const facetEnvironment = get(facets, \"environment\")\n ? facets[\"environment\"].map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : [];\n const facetGroup = get(facets, \"group\")\n ? facets[\"group\"].map((s) => ({\n value: s.value,\n label: `${startCase(s.value)} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : [];\n const facetAuthorshipYear = get(facets, \"authorshipYear\")\n ? facets[\"authorshipYear\"].map((s) => ({\n value: s.value,\n label: `${s.value} (${s.count.toLocaleString(\"en-GB\")})`,\n }))\n : [];\n\n return (\n <div\n className=\"catalogue-of-life\"\n style={{\n padding: 24,\n minHeight: 280,\n margin: \"16px 0\",\n }}\n >\n {citation === \"top\" && dataset && <Citation dataset={dataset} />}\n\n <Row>\n {error && (\n <Alert\n style={{ marginBottom: \"10px\" }}\n message={<ErrorMsg error={error} />}\n type=\"error\"\n />\n )}\n </Row>\n <Row>\n <Col xs={24} sm={24} md={12} style={{ marginBottom: \"8px\" }}>\n <SearchBox\n defaultValue={get(this.props.filters || {}, \"q\")}\n onSearch={(value) => this.updateSearch({ q: value })}\n onResetSearch={(value) => this.updateSearch({ q: null })}\n style={{ marginBottom: \"8px\", width: \"100%\" }}\n />\n\n <NameAutocomplete\n datasetKey={datasetKey}\n minRank=\"GENUS\"\n defaultTaxonKey={\n get(params, \"TAXON_ID\") || defaultTaxonKey || null\n }\n onSelectName={(value) => {\n this.updateSearch({ TAXON_ID: value.key });\n }}\n onResetSearch={(value) => {\n this.updateSearch({ TAXON_ID: null });\n }}\n placeHolder=\"Filter by higher taxon\"\n sortBy=\"relevance\"\n autoFocus={false}\n />\n\n {(this.state.datasetOrigin === \"xrelease\" ||\n this.state.datasetOrigin === \"release\") && (\n <div style={{ marginTop: \"8px\", marginBottom: \"8px\" }}>\n <DatasetAutocomplete\n contributesTo={Number(datasetKey)}\n onSelectDataset={(value) => {\n this.updateSearch({ SECTOR_DATASET_KEY: value.key });\n }}\n defaultDatasetKey={\n get(params, \"SECTOR_DATASET_KEY\") || null\n }\n onResetSearch={(value) => {\n this.updateSearch({ SECTOR_DATASET_KEY: null });\n }}\n placeHolder=\"Filter by source dataset\"\n autoFocus={false}\n />\n </div>\n )}\n <div style={{ marginTop: \"10px\" }}>\n <Form layout=\"inline\">\n <FormItem label=\"Matching\" >\n <RadioGroup\n size=\"small\"\n onChange={(evt) => {\n this.updateSearch({ type: evt.target.value });\n }}\n value={params.type || \"WHOLE_WORDS\"}\n optionType=\"button\"\n options={[\n { value: \"EXACT\", label: \"Exact\" },\n { value: \"WHOLE_WORDS\", label: \"Words\" },\n { value: \"PREFIX\", label: \"Prefix\" },\n { value: \"FUZZY\", label: \"Fuzzy\" },\n ]}\n ></RadioGroup>\n </FormItem>\n \n </Form>\n <Form layout=\"inline\">\n {(this.state.datasetOrigin === \"xrelease\" ||\n this.state.datasetOrigin === \"project\") && (\n <FormItem label=\"Content\">\n <RadioGroup\n style={{ marginLeft: \"8px\" }}\n size=\"small\"\n onChange={(evt) => {\n this.updateSearch({ sectorMode: evt.target.value.split(\",\")\n .filter((v) => v !== \"\")});\n }}\n value={isArray(params?.sectorMode) ? params?.sectorMode?.join(\",\") : params?.sectorMode || \"\"}\n optionType=\"button\"\n options={[\n { value: \"\", label: \"All\" },\n { value: \"attach,union\", label: \"Base\" },\n { value: \"merge\", label: \"Extended\" },\n ]}\n ></RadioGroup>\n </FormItem>\n )}\n <FormItem>\n <Select\n mode=\"multiple\"\n allowClear\n size=\"small\"\n style={{ minWidth: 200 }}\n placeholder=\"Search fields\"\n value={isArray(params?.content) ? params.content : (params?.content ? [params.content] : [])}\n onChange={(value) => this.updateSearch({ content: value.length ? value : null })}\n options={[\n { value: \"SCIENTIFIC_NAME\", label: \"Scientific name\" },\n { value: \"AUTHORSHIP\", label: \"Authorship\" },\n { value: \"VERNACULAR_NAME\", label: \"Vernacular name\" },\n ]}\n />\n </FormItem>\n </Form>\n \n </div>\n </Col>\n <Col xs={24} sm={24} md={12}>\n {/* <MultiValueFilter\n defaultValue={get(params, \"issue\")}\n onChange={value => this.updateSearch({ issue: value })}\n vocab={facetIssues || []}\n label=\"Issues\"\n /> */}\n\n <MultiValueFilter\n defaultValue={get(params, \"rank\")}\n onChange={(value) => this.updateSearch({ rank: value })}\n vocab={facetRanks || []}\n label=\"Ranks\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"status\")}\n onChange={(value) => this.updateSearch({ status: value })}\n vocab={facetTaxonomicStatus || []}\n label=\"Status\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"environment\")}\n onChange={(value) =>\n this.updateSearch({ environment: value })\n }\n vocab={facetEnvironment}\n label=\"Environment\"\n />\n <MultiValueFilter\n // defaultValue={get(params, \"extinct\")}\n onChange={(value) => this.updateSearch({ extinct: value })}\n vocab={facetExtinct}\n label=\"Extinct\"\n />\n {advancedFilters && (\n <React.Fragment>\n <MultiValueFilter\n defaultValue={get(params, \"nomstatus\")}\n onChange={(value) => this.updateSearch({ nomstatus: value })}\n vocab={facetNomStatus || []}\n label=\"Nomenclatural status\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"nameType\")}\n onChange={(value) => this.updateSearch({ nameType: value })}\n vocab={facetNomType || []}\n label=\"Name type\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"field\")}\n onChange={(value) => this.updateSearch({ field: value })}\n vocab={facetNomField || []}\n label=\"Name field\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"authorship\")}\n onChange={(value) => this.updateSearch({ authorship: value })}\n vocab={facetAuthorship}\n label=\"Authorship\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"group\")}\n onChange={(value) => this.updateSearch({ group: value })}\n vocab={facetGroup}\n label=\"Taxonomic group\"\n />\n <MultiValueFilter\n defaultValue={get(params, \"authorshipYear\")}\n onChange={(value) => this.updateSearch({ authorshipYear: value })}\n vocab={facetAuthorshipYear}\n label=\"Authorship year\"\n />\n </React.Fragment>\n )}\n <div style={{ textAlign: \"right\", marginBottom: \"8px\" }}>\n <a\n style={{ marginLeft: 8, fontSize: 12 }}\n onClick={this.toggleAdvancedFilters}\n >\n Advanced{\" \"}\n {this.state.advancedFilters ? <UpOutlined /> : <DownOutlined />}\n </a>\n </div>\n </Col>\n </Row>\n <Row>\n <Col span={12} style={{ textAlign: \"left\", marginBottom: \"8px\" }}>\n <Button type=\"primary\" danger onClick={this.resetSearch}>\n Reset all\n </Button>\n </Col>\n <Col span={12} style={{ textAlign: \"right\", marginBottom: \"8px\" }}>\n {pagination &&\n !isNaN(pagination.total) &&\n `results: ${pagination.total.toLocaleString(\"en-GB\")}`}\n </Col>\n </Row>\n {!error && (\n <Table\n size=\"small\"\n columns={this.state.columns}\n scroll={{ x: \"max-content\" }}\n dataSource={result}\n loading={loading}\n pagination={this.state.pagination}\n onChange={this.handleTableChange}\n rowKey={(record) => record.usage.id}\n showSorterTooltip={false}\n expandedRowRender={(record) => (\n <RowDetail\n {...record}\n datasetKey={datasetKey}\n />\n )}\n />\n )}\n {citation === \"bottom\" && dataset && <Citation dataset={dataset} />}\n </div>\n );\n }\n}\n\nexport default NameSearchPage;\n","import React from \"react\";\nimport NameSearch from \"./NameSearch\";\nimport client, { setAuth } from \"../api/client\";\nimport { RouterContext, buildRouter } from \"../router\";\n\nexport default function Search({\n datasetKey,\n filters,\n onFiltersChange,\n defaultTaxonKey,\n citation,\n auth,\n ...routerProps\n}) {\n setAuth(auth);\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n <NameSearch\n datasetKey={datasetKey}\n filters={filters}\n onFiltersChange={onFiltersChange}\n defaultTaxonKey={defaultTaxonKey}\n citation={citation}\n />\n </RouterContext.Provider>\n );\n}\n","import withDatasetKey from \"../withDatasetKey\";\nimport { withTheme } from \"../withTheme\";\nimport search from \"../Search\";\n\nexport const Search = withTheme(withDatasetKey(search));\n"],"names":["DownOutlined","_extends","target","source","key","props","ref","React","AntdIcon","DownOutlinedSvg","RefIcon","UpOutlined","UpOutlinedSvg","ranks","Classification","classification","maxParents","truncate","clazzification","classificationRankMap","acc","curr","kingdom","familyOrClosestAlternative","i","jsxs","jsx","LinkTo","t","Search","Input","SearchBox","__publicField","prevProps","value","event","FormItem","Form","Option","Select","formItemLayout","MultiValueFilter","selected","defaultValue","label","vocab","randomID","vocabKeys","val","isArray","v","snakeCase","RowDetail","issues","usage","vernacularNames","issueMap","get","Row","Col","initial","vn","AutoComplete","DatasetAutocomplete","defaultDatasetKey","client","config","res","q","contributesTo","err","obj","style","options","o","text","Highlighter","debounce","RadioGroup","Radio","FACET_VOCAB","PAGE_SIZE","FACET_LIMIT","defaultParams","getColumns","record","_a","MergedDataBadge","_b","_c","id","NameSearchPage","datasetKey","dataset","getDatasetSimple","taxGroups","getTaxGroup","isEqual","r","defaultTaxonKey","filters","params","isEmpty","next","url","params_","qs","pagination","sorter","query","merge","newParams","forEach","k","notNullParams","cur","result","facets","loading","error","advancedFilters","citation","facetRanks","startCase","facetTaxonomicStatus","s","facetNomStatus","facetNomType","facetNomField","facetAuthorship","extinctLabel","facetExtinct","facetEnvironment","facetGroup","facetAuthorshipYear","Citation","Alert","ErrorMsg","NameAutocomplete","evt","Button","Table","onFiltersChange","auth","routerProps","setAuth","RouterContext","buildRouter","NameSearch","withTheme","withDatasetKey","search"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -0,0 +1,453 @@
1
+ var C = Object.defineProperty;
2
+ var _ = (i, o, s) => o in i ? C(i, o, { enumerable: !0, configurable: !0, writable: !0, value: s }) : i[o] = s;
3
+ var c = (i, o, s) => _(i, typeof o != "symbol" ? o + "" : o, s);
4
+ import { a as A } from "./chunks/withDatasetKey-BgMY05XE.js";
5
+ import { c as x, w as I } from "./chunks/config-BPRXv9x8.js";
6
+ import { j as t } from "./chunks/jsx-runtime-BzflLqGi.js";
7
+ import h from "react";
8
+ import { c as u, L as K, s as T, R, b as M } from "./chunks/router-CssZk5qZ.js";
9
+ import { Skeleton as E, Alert as P, Row as j, Col as m, Tooltip as L, Button as F, Rate as O } from "antd";
10
+ import { E as N } from "./chunks/ErrorMsg-K8k5PPTp.js";
11
+ import { D as z, P as l } from "./chunks/DatasetlogoWithFallback-CbP7vRs_.js";
12
+ import { M as B } from "./chunks/MetricsPresentation-U_CO8JoH.js";
13
+ import { get as p, isEmpty as S, isArray as H } from "lodash-es";
14
+ import { g as U } from "./chunks/enumeration-yDQXSZsf.js";
15
+ import { B as W } from "./chunks/BibTex-BqzD3qLB.js";
16
+ import { marked as G } from "marked";
17
+ import V from "dompurify";
18
+ import { R as q } from "./chunks/LinkOutlined-2IkQWTV7.js";
19
+ class X extends h.Component {
20
+ constructor(s) {
21
+ super(s);
22
+ c(this, "getData", () => {
23
+ const { dataset: s, datasetKey: e } = this.props;
24
+ u(
25
+ `${x.dataApi}dataset/${e}/source/${s.key}/metrics`
26
+ ).then((r) => {
27
+ this.setState({ metrics: r.data });
28
+ });
29
+ });
30
+ c(this, "getRank", () => {
31
+ u(`${x.dataApi}vocab/rank`).then(
32
+ (s) => this.setState({ rank: s.data.map((e) => e.name) })
33
+ );
34
+ });
35
+ c(this, "render", () => /* @__PURE__ */ t.jsx(B, { ...this.state, dataset: this.props.dataset }));
36
+ this.state = {
37
+ metrics: null,
38
+ rank: null,
39
+ loading: !0
40
+ };
41
+ }
42
+ componentDidMount() {
43
+ this.getData(), this.getRank();
44
+ }
45
+ }
46
+ class Y extends h.Component {
47
+ constructor(s) {
48
+ super(s);
49
+ c(this, "getData", () => {
50
+ const { dataset: s, datasetKey: e } = this.props, r = {};
51
+ u(
52
+ `${x.dataApi}dataset/${e}/sector?limit=1000&subjectDatasetKey=${s.key}`
53
+ ).then((n) => Promise.allSettled(
54
+ n.data.result.filter((a) => !!(a != null && a.target)).map(
55
+ (a) => {
56
+ var b, k, w, $;
57
+ return u(
58
+ `${x.dataApi}dataset/${e}/nameusage/search?TAXON_ID=${(b = a == null ? void 0 : a.target) == null ? void 0 : b.id}${(k = a == null ? void 0 : a.subject) != null && k.rank ? "&rank=" + ((w = a == null ? void 0 : a.subject) == null ? void 0 : w.rank) : ""}&q=${($ = a == null ? void 0 : a.subject) == null ? void 0 : $.name}`
59
+ ).then((f) => {
60
+ const d = p(f, "data.result[0]");
61
+ if (d) {
62
+ const y = d.classification.slice(1, d.classification.length - 1).map((v) => v.name).join(" > ");
63
+ r[y] ? r[y].push(
64
+ d.classification[d.classification.length - 1]
65
+ ) : r[y] = [
66
+ d.classification[d.classification.length - 1]
67
+ ];
68
+ }
69
+ }).catch((f) => {
70
+ console.log(a), console.log(f);
71
+ });
72
+ }
73
+ )
74
+ ).then(() => this.setState({ taxonMap: r, loading: !1 })));
75
+ });
76
+ c(this, "render", () => {
77
+ const { taxonMap: s } = this.state, { style: e } = this.props;
78
+ return s ? Object.keys(s).length > 0 ? Object.keys(s).sort((r, n) => r.length - n.length).map((r) => /* @__PURE__ */ t.jsxs("div", { style: e, children: [
79
+ /* @__PURE__ */ t.jsxs("span", { children: [
80
+ r,
81
+ r !== "" ? ":" : ""
82
+ ] }),
83
+ " ",
84
+ s[r].map((n, a) => /* @__PURE__ */ t.jsxs(h.Fragment, { children: [
85
+ /* @__PURE__ */ t.jsx(K, { to: "tree", args: { taxonKey: n.id }, children: n.name }),
86
+ a !== s[r].length - 1 ? ", " : ""
87
+ ] }, a))
88
+ ] }, r)) : "N/A" : /* @__PURE__ */ t.jsx(E, { active: !0, paragraph: { rows: 4 } });
89
+ });
90
+ this.state = {
91
+ loading: !0,
92
+ taxonMap: null
93
+ };
94
+ }
95
+ componentDidMount() {
96
+ this.getData();
97
+ }
98
+ }
99
+ const g = ({ agent: i, countryAlpha2: o, style: s, noLinks: e }) => {
100
+ const r = p(i, "country") ? p(
101
+ o,
102
+ `[${p(i, "country")}].title`,
103
+ p(i, "country")
104
+ ) : null;
105
+ return i ? /* @__PURE__ */ t.jsxs("span", { style: s, children: [
106
+ (i.given || i.family) && /* @__PURE__ */ t.jsx("span", { style: { display: "block" }, children: [i.family, i.given].filter((n) => !!n).join(", ") }),
107
+ i.orcid && (e ? /* @__PURE__ */ t.jsxs("div", { children: [
108
+ /* @__PURE__ */ t.jsx(
109
+ "img",
110
+ {
111
+ src: "https://www.checklistbank.org/images/orcid_16x16.png",
112
+ style: { flex: "0 0 auto" },
113
+ alt: ""
114
+ }
115
+ ),
116
+ " ",
117
+ i.orcid
118
+ ] }) : /* @__PURE__ */ t.jsxs(
119
+ "a",
120
+ {
121
+ style: { display: "block" },
122
+ href: `https://orcid.org/${i.orcid}`,
123
+ children: [
124
+ /* @__PURE__ */ t.jsx(
125
+ "img",
126
+ {
127
+ src: "https://www.checklistbank.org/images/orcid_16x16.png",
128
+ style: { flex: "0 0 auto" },
129
+ alt: ""
130
+ }
131
+ ),
132
+ " ",
133
+ i.orcid
134
+ ]
135
+ }
136
+ )),
137
+ i.organisation && /* @__PURE__ */ t.jsx("span", { style: { display: "block" }, children: i.organisation }),
138
+ i.rorid && (e ? /* @__PURE__ */ t.jsxs("div", { children: [
139
+ /* @__PURE__ */ t.jsx(
140
+ "img",
141
+ {
142
+ src: "https://www.checklistbank.org/images/ror-logo-small.png",
143
+ style: { flex: "0 0 auto", height: "20px" },
144
+ alt: ""
145
+ }
146
+ ),
147
+ " ",
148
+ i.rorid
149
+ ] }) : /* @__PURE__ */ t.jsxs(
150
+ "a",
151
+ {
152
+ style: { display: "block" },
153
+ href: `https://ror.org/${i.rorid}`,
154
+ children: [
155
+ /* @__PURE__ */ t.jsx(
156
+ "img",
157
+ {
158
+ src: "https://www.checklistbank.org/images/ror-logo-small.png",
159
+ style: { flex: "0 0 auto", height: "20px" },
160
+ alt: ""
161
+ }
162
+ ),
163
+ " ",
164
+ i.rorid
165
+ ]
166
+ }
167
+ )),
168
+ i.department && /* @__PURE__ */ t.jsx("span", { style: { display: "block" }, children: i.department }),
169
+ (i.city || i.state || r) && /* @__PURE__ */ t.jsx("span", { style: { display: "block" }, children: [i.city, i.state, r].filter((n) => !!n).join(", ") })
170
+ ] }) : null;
171
+ }, D = {
172
+ col: "https://www.checklistbank.org/dataset/",
173
+ gbif: "https://www.gbif.org/dataset/",
174
+ plazi: "http://publication.plazi.org/id/",
175
+ doi: "https://doi.org/"
176
+ };
177
+ class J extends h.Component {
178
+ constructor(s) {
179
+ super(s);
180
+ c(this, "componentDidMount", () => {
181
+ this.getData(), U().then((s) => {
182
+ const e = {};
183
+ s.forEach((r) => {
184
+ e[r.alpha2] = r;
185
+ }), this.setState({ countryAlpha2: e });
186
+ });
187
+ });
188
+ c(this, "getData", () => {
189
+ const { datasetKey: s, sourceDatasetKey: e, pageTitleTemplate: r } = this.props;
190
+ e && u(`${x.dataApi}dataset/${s}/source/${e}`).then((n) => {
191
+ r && p(n, "data.title") && (document.title = r.replace(
192
+ "__dataset__",
193
+ n.data.title
194
+ )), this.setState({ data: n.data, datasetError: null });
195
+ }).catch((n) => this.setState({ datasetError: n, data: null }));
196
+ });
197
+ c(this, "getRank", () => {
198
+ u(`${x.dataApi}vocab/rank`).then(
199
+ (s) => this.setState({ rank: s.data.map((e) => e.name) })
200
+ );
201
+ });
202
+ T(this.props.auth), this.state = {
203
+ datasetLoading: !0,
204
+ data: null,
205
+ rank: null,
206
+ countryAlpha2: {}
207
+ };
208
+ }
209
+ componentDidUpdate(s) {
210
+ (s.sourceDatasetKey !== this.props.sourceDatasetKey || s.datasetKey !== this.props.datasetKey) && this.getData();
211
+ }
212
+ render() {
213
+ const { datasetKey: s } = this.props, { data: e, countryAlpha2: r, datasetError: n } = this.state;
214
+ return /* @__PURE__ */ t.jsx(h.Fragment, { children: /* @__PURE__ */ t.jsxs(
215
+ "div",
216
+ {
217
+ className: "catalogue-of-life",
218
+ style: {
219
+ background: "#fff",
220
+ padding: 24,
221
+ minHeight: 280,
222
+ margin: "16px 0",
223
+ fontSize: "12px"
224
+ },
225
+ children: [
226
+ n && /* @__PURE__ */ t.jsx(P, { message: /* @__PURE__ */ t.jsx(N, { error: n }), type: "error" }),
227
+ e && /* @__PURE__ */ t.jsxs(j, { children: [
228
+ /* @__PURE__ */ t.jsxs(m, { flex: "auto", children: [
229
+ /* @__PURE__ */ t.jsx(
230
+ "h1",
231
+ {
232
+ style: {
233
+ fontSize: "30px",
234
+ fontWeight: "400",
235
+ paddingLeft: "10px",
236
+ display: "inline-block",
237
+ textTransform: "none"
238
+ },
239
+ children: e.title
240
+ }
241
+ ),
242
+ e && /* @__PURE__ */ t.jsxs(h.Fragment, { children: [
243
+ /* @__PURE__ */ t.jsx("br", {}),
244
+ /* @__PURE__ */ t.jsx(
245
+ W,
246
+ {
247
+ style: { marginLeft: "8px", height: "32px" },
248
+ datasetKey: s,
249
+ sourceDatasetKey: s !== e.key ? e.key : void 0
250
+ }
251
+ )
252
+ ] })
253
+ ] }),
254
+ /* @__PURE__ */ t.jsx(m, { style: { textAlign: "right" }, children: /* @__PURE__ */ t.jsx(
255
+ z,
256
+ {
257
+ auth: this.props.auth,
258
+ style: {
259
+ maxWidth: "100%",
260
+ height: "auto",
261
+ marginRight: "8px"
262
+ },
263
+ datasetKey: s,
264
+ sourceDatasetKey: e.key
265
+ }
266
+ ) })
267
+ ] }),
268
+ e && /* @__PURE__ */ t.jsxs(h.Fragment, { children: [
269
+ /* @__PURE__ */ t.jsxs(l, { label: "Short name", children: [
270
+ e.alias,
271
+ /* @__PURE__ */ t.jsx(
272
+ L,
273
+ {
274
+ title: "Visit in COL Checklistbank",
275
+ getPopupContainer: () => document.getElementsByClassName("catalogue-of-life")[0],
276
+ children: /* @__PURE__ */ t.jsxs(
277
+ F,
278
+ {
279
+ type: "link",
280
+ href: `https://www.checklistbank.org/dataset/${e.key}`,
281
+ children: [
282
+ /* @__PURE__ */ t.jsx(q, {}),
283
+ " "
284
+ ]
285
+ }
286
+ )
287
+ }
288
+ )
289
+ ] }),
290
+ /* @__PURE__ */ t.jsx(l, { label: "Full name", children: e.title }),
291
+ (e.version || e.issued) && /* @__PURE__ */ t.jsx(
292
+ l,
293
+ {
294
+ label: `${e.version ? "Version" : ""}${e.version && e.issued ? " / " : ""}${e.issued ? "Issued" : ""}`,
295
+ children: (e.version || e.issued) && `${e.version ? e.version : ""}${e.issued ? " / " + e.issued : ""}`
296
+ }
297
+ ),
298
+ /* @__PURE__ */ t.jsx(l, { label: "DOI", children: e.doi ? /* @__PURE__ */ t.jsxs("a", { href: `https://doi.org/${e.doi}`, children: [
299
+ /* @__PURE__ */ t.jsx(
300
+ "img",
301
+ {
302
+ src: "https://www.checklistbank.org/images/DOI_logo.png",
303
+ style: { flex: "0 0 auto", height: "16px" },
304
+ alt: ""
305
+ }
306
+ ),
307
+ e.doi
308
+ ] }) : "-" }),
309
+ e.contact && !S(e.contact) && /* @__PURE__ */ t.jsx(l, { label: "Contact", children: /* @__PURE__ */ t.jsx(
310
+ g,
311
+ {
312
+ countryAlpha2: r,
313
+ agent: e.contact
314
+ }
315
+ ) }),
316
+ e.publisher && !S(e.publisher) && /* @__PURE__ */ t.jsx(l, { label: "Publisher", children: /* @__PURE__ */ t.jsx(
317
+ g,
318
+ {
319
+ countryAlpha2: r,
320
+ agent: e.publisher
321
+ }
322
+ ) }),
323
+ e.creator && /* @__PURE__ */ t.jsx(l, { label: "Creator", children: /* @__PURE__ */ t.jsx(j, { gutter: [8, 8], children: e.creator.map((a) => /* @__PURE__ */ t.jsx(m, { span: 8, children: /* @__PURE__ */ t.jsx(
324
+ g,
325
+ {
326
+ countryAlpha2: r,
327
+ agent: a
328
+ }
329
+ ) })) }) }),
330
+ e.editor && /* @__PURE__ */ t.jsx(l, { label: "Editor", children: /* @__PURE__ */ t.jsx(j, { gutter: [8, 8], children: e.editor.map((a) => /* @__PURE__ */ t.jsx(m, { span: 8, children: /* @__PURE__ */ t.jsx(
331
+ g,
332
+ {
333
+ countryAlpha2: r,
334
+ agent: a
335
+ }
336
+ ) })) }) }),
337
+ e.contributor && /* @__PURE__ */ t.jsx(l, { label: "Contributor", children: /* @__PURE__ */ t.jsx(j, { gutter: [8, 8], children: e.contributor.map((a) => /* @__PURE__ */ t.jsx(m, { span: 8, children: /* @__PURE__ */ t.jsx(
338
+ g,
339
+ {
340
+ countryAlpha2: r,
341
+ agent: a
342
+ }
343
+ ) })) }) }),
344
+ /* @__PURE__ */ t.jsx(l, { label: "Taxonomic coverage", children: /* @__PURE__ */ t.jsx(
345
+ Y,
346
+ {
347
+ dataset: e,
348
+ datasetKey: s
349
+ }
350
+ ) }),
351
+ /* @__PURE__ */ t.jsx(
352
+ X,
353
+ {
354
+ datasetKey: s,
355
+ dataset: e
356
+ }
357
+ ),
358
+ /* @__PURE__ */ t.jsx(l, { label: "Abstract", children: e.description ? /* @__PURE__ */ t.jsx(
359
+ "span",
360
+ {
361
+ dangerouslySetInnerHTML: {
362
+ __html: V.sanitize(G.parse(e.description))
363
+ }
364
+ }
365
+ ) : "" }),
366
+ /* @__PURE__ */ t.jsx(l, { label: "Taxonomic scope", children: e.taxonomicScope || "-" }),
367
+ /* @__PURE__ */ t.jsx(l, { label: "Geographic scope", children: e.geographicScope || "-" }),
368
+ /* @__PURE__ */ t.jsx(l, { label: "Temporal scope", children: e.temporalScope || "-" }),
369
+ " ",
370
+ /* @__PURE__ */ t.jsx(l, { label: "License", children: e.license || "-" }),
371
+ /* @__PURE__ */ t.jsx(l, { label: "Checklist Confidence", children: /* @__PURE__ */ t.jsx(O, { value: e.confidence, disabled: !0 }) }),
372
+ /* @__PURE__ */ t.jsx(l, { label: "Completeness", children: e.completeness }),
373
+ /* @__PURE__ */ t.jsx(l, { label: "Url (website)", children: e.url ? /* @__PURE__ */ t.jsx("a", { href: e.url, target: "_blank", children: e.url }) : "-" }),
374
+ /* @__PURE__ */ t.jsx(l, { label: "ISSN", children: e.issn ? /* @__PURE__ */ t.jsx(
375
+ "a",
376
+ {
377
+ href: `https://portal.issn.org/resource/ISSN/${e.issn}`,
378
+ children: e.issn
379
+ }
380
+ ) : "-" }),
381
+ /* @__PURE__ */ t.jsx(l, { label: "GBIF key", children: e.gbifKey ? /* @__PURE__ */ t.jsx("a", { href: `https://www.gbif.org/dataset/${e.gbifKey}`, children: e.gbifKey }) : "-" }),
382
+ /* @__PURE__ */ t.jsx(l, { label: "Identifiers", children: e.identifier ? /* @__PURE__ */ t.jsx(
383
+ "ol",
384
+ {
385
+ style: {
386
+ listStyle: "none",
387
+ paddingInlineStart: "0px"
388
+ },
389
+ children: Object.keys(e.identifier).map((a) => /* @__PURE__ */ t.jsxs(
390
+ "li",
391
+ {
392
+ style: {
393
+ float: "left",
394
+ marginRight: "8px"
395
+ },
396
+ children: [
397
+ `${a.toUpperCase()}: `,
398
+ D[a] ? /* @__PURE__ */ t.jsx(
399
+ "a",
400
+ {
401
+ href: `${D[a]}${e.identifier[a]}`,
402
+ target: "_blank",
403
+ children: e.identifier[a]
404
+ }
405
+ ) : e.identifier[a]
406
+ ]
407
+ }
408
+ ))
409
+ }
410
+ ) : "-" }),
411
+ /* @__PURE__ */ t.jsx(l, { label: "Citation", children: e.citation && /* @__PURE__ */ t.jsx(
412
+ "span",
413
+ {
414
+ dangerouslySetInnerHTML: { __html: e.citation }
415
+ }
416
+ ) }),
417
+ /* @__PURE__ */ t.jsx(l, { label: "Source", children: e.source && H(e.source) ? e.source.map(
418
+ (a) => !!a && (a.citation ? /* @__PURE__ */ t.jsx(
419
+ "div",
420
+ {
421
+ style: { display: "inline-block" },
422
+ dangerouslySetInnerHTML: { __html: a.citation }
423
+ }
424
+ ) : a.title)
425
+ ) : "-" })
426
+ ] })
427
+ ]
428
+ }
429
+ ) });
430
+ }
431
+ }
432
+ function Q({
433
+ sourceDatasetKey: i,
434
+ datasetKey: o,
435
+ pageTitleTemplate: s,
436
+ auth: e,
437
+ ...r
438
+ }) {
439
+ return /* @__PURE__ */ t.jsx(R.Provider, { value: M(r), children: /* @__PURE__ */ t.jsx(
440
+ J,
441
+ {
442
+ sourceDatasetKey: i,
443
+ datasetKey: o,
444
+ pageTitleTemplate: s,
445
+ auth: e
446
+ }
447
+ ) });
448
+ }
449
+ const me = I(A(Q));
450
+ export {
451
+ me as SourceDataset
452
+ };
453
+ //# sourceMappingURL=sourceDataset.js.map