col-browser 2.0.0-rc.6

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/withDatasetKey.js","../src/withTheme.js","../src/config.js","../src/router.js","../src/api/dataset.js","../src/ColTree/treeCache.js","../src/ColTree/TaxonSources.js","../src/components/MergedDataBadge.js","../src/ColTree/ColTreeContext.js","../src/ColTree/ColTreeNode.js","../src/components/ErrorMsg.js","../src/api/sector.js","../src/ColTree/ColTree.js","../src/ColTree/NameAutocomplete.js","../src/components/DatasetCitation.js","../src/ColTree/index.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/@ant-design/fast-color/es/presetColors.js","../node_modules/@ant-design/fast-color/es/FastColor.js","../node_modules/@ant-design/colors/es/generate.js","../node_modules/@ant-design/colors/es/presets.js","../node_modules/@rc-component/util/es/Dom/canUseDom.js","../node_modules/@rc-component/util/es/Dom/contains.js","../node_modules/@rc-component/util/es/Dom/dynamicCSS.js","../node_modules/@rc-component/util/es/Dom/shadow.js","../node_modules/@rc-component/util/es/warning.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/BookOutlined.js","../node_modules/@ant-design/icons/es/icons/BookOutlined.js","../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/DownloadOutlined.js","../node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LinkOutlined.js","../node_modules/@ant-design/icons/es/icons/LinkOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MessageFilled.js","../node_modules/@ant-design/icons/es/icons/MessageFilled.js","../node_modules/@ant-design/icons-svg/es/asn/QuestionCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/QuestionCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/TagOutlined.js","../node_modules/@ant-design/icons/es/icons/TagOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/UpOutlined.js","../node_modules/@ant-design/icons/es/icons/UpOutlined.js","../src/components/Width.js","../src/Taxon/BorderedListItem.js","../src/Taxon/ReferencePopover.js","../src/components/DecisionBadge.js","../src/Taxon/TypeMaterial.js","../src/Taxon/TypeMaterialPopover.js","../src/Taxon/ShowMoreToggle.js","../src/Taxon/Synonyms.js","../src/api/enumeration.js","../src/Taxon/VernacularNames.js","../src/Taxon/DistributionsMap/descendantRanks.js","../src/Taxon/DistributionsMap/descendantFetch.js","../src/Taxon/DistributionsMap/colorAssignment.js","../src/Taxon/DistributionsMap/IncludedTaxaLegend.js","../src/Taxon/DistributionsMap/index.js","../src/Taxon/Distributions.js","../src/Taxon/Classification.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/components/Help.js","../src/components/PresentationItem.js","../src/Taxon/NameRelations.js","../src/Taxon/References.js","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/localizedFormat.js","../src/Taxon/Includes.js","../src/components/DatasetlogoWithFallback.js","../src/components/svg404.js","../src/components/Page404.js","../src/Taxon/TaxonBreakdown.js","../src/Taxon/SecondarySources.js","../src/Taxon/Feedback.js","../src/Taxon/index.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/SourceDataset/MetricsPresentation.js","../src/SourceDataset/Metrics.js","../src/SourceDataset/TaxonomicCoverage.js","../src/SourceDataset/AgentPresentation.js","../src/components/BibTex.js","../src/SourceDataset/index.js","../src/SourceDatasetList/index.js","../src/Taxon/BreakDownWrapper.js","../src/Taxon/DistributionsWrapper.js","../src/url/index.js","../src/index.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React from \"react\";\n\nconst warned = new Set();\n\nfunction warnDeprecation(componentName, message) {\n const key = `${componentName}:${message}`;\n if (warned.has(key)) return;\n warned.add(key);\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(`[col-browser] <${componentName}> ${message}`);\n }\n}\n\n// Standard shim: `catalogueKey` was renamed to `datasetKey`.\n// Accepts both, prefers `datasetKey`, warns once when only the\n// deprecated name is supplied.\nexport default function withDatasetKey(WrappedComponent) {\n const name =\n WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n const Wrapper = (props) => {\n const { catalogueKey, datasetKey, ...rest } = props;\n if (catalogueKey !== undefined && datasetKey === undefined) {\n warnDeprecation(\n name,\n \"the `catalogueKey` prop is deprecated; rename it to `datasetKey`.\"\n );\n }\n const resolvedDatasetKey =\n datasetKey !== undefined ? datasetKey : catalogueKey;\n return <WrappedComponent {...rest} datasetKey={resolvedDatasetKey} />;\n };\n Wrapper.displayName = `withDatasetKey(${name})`;\n return Wrapper;\n}\n\n// BibTex-specific shim: the old prop pair\n// <BibTex datasetKey={source} catalogueKey={catalogue} />\n// has been replaced by\n// <BibTex datasetKey={catalogue} sourceDatasetKey={source} />\n// so when the legacy `catalogueKey` is present the two values must swap.\nexport function withBibTexLegacyShim(WrappedComponent) {\n const name =\n WrappedComponent.displayName || WrappedComponent.name || \"BibTex\";\n\n const Wrapper = (props) => {\n const { catalogueKey, datasetKey, sourceDatasetKey, ...rest } = props;\n if (catalogueKey !== undefined) {\n warnDeprecation(\n name,\n \"the `catalogueKey` prop is deprecated; pass the catalogue as `datasetKey` and the source as `sourceDatasetKey`.\"\n );\n return (\n <WrappedComponent\n {...rest}\n datasetKey={catalogueKey}\n sourceDatasetKey={\n sourceDatasetKey !== undefined ? sourceDatasetKey : datasetKey\n }\n />\n );\n }\n return (\n <WrappedComponent\n {...rest}\n datasetKey={datasetKey}\n sourceDatasetKey={sourceDatasetKey}\n />\n );\n };\n Wrapper.displayName = `withBibTexLegacyShim(${name})`;\n return Wrapper;\n}\n","import React from \"react\";\nimport { ConfigProvider, theme as antdTheme } from \"antd\";\n\n// Optional antd theming. Embedders can pass:\n// - `theme`: a full antd ThemeConfig (token / algorithm / components),\n// forwarded straight to ConfigProvider.\n// - `darkMode`: convenience boolean. When true and theme.algorithm is not\n// set, antd's darkAlgorithm is applied.\n// When neither prop is provided we render the wrapped component directly,\n// without a ConfigProvider, so the library's defaults are untouched.\nexport function withTheme(Component) {\n const Wrapped = (props) => {\n const { theme, darkMode, ...rest } = props;\n\n if (!theme && !darkMode) {\n return <Component {...rest} />;\n }\n\n const merged = { ...(theme || {}) };\n if (darkMode && !merged.algorithm) {\n merged.algorithm = antdTheme.darkAlgorithm;\n }\n\n return (\n <ConfigProvider theme={merged}>\n <Component darkMode={darkMode} {...rest} />\n </ConfigProvider>\n );\n };\n Wrapped.displayName = `withTheme(${\n Component.displayName || Component.name || \"Component\"\n })`;\n return Wrapped;\n}\n\nexport default withTheme;\n","export default {\n dataApi: \"https://api.checklistbank.org/\",\n // Human-facing ChecklistBank portal. Used for outbound links to\n // dataset / publisher pages we don't host ourselves.\n clbPortal: \"https://www.checklistbank.org\",\n // GBIF API base (no trailing slash). Used for the occurrence count and\n // the v2 map tile endpoint.\n gbifApi: \"https://api.gbif.org\",\n // GBIF human-facing portal where the attribution link points. Stays on\n // demo.gbif.org until the multitaxonomy occurrence search ships on\n // www.gbif.org (expected mid-2026).\n gbifPortal: \"https://demo.gbif.org\",\n};","import React, { createContext, useContext } from \"react\";\n\n// One context provides the four navigation primitives every component\n// might want. Each top-level component (Taxon, Tree, Search,\n// SourceDataset, ...) builds this from its `onNavigateToX` / `hrefForX`\n// props and wraps its subtree in a Provider. Sub-components don't get\n// pathToX props anymore — they consume the context directly via <LinkTo>.\n\nconst noop = () => undefined;\n\nconst defaultRouter = {\n taxon: { onNavigate: null, hrefFor: null },\n tree: { onNavigate: null, hrefFor: null },\n search: { onNavigate: null, hrefFor: null },\n source: { onNavigate: null, hrefFor: null },\n};\n\nexport const RouterContext = createContext(defaultRouter);\n\nexport const useRouter = () => useContext(RouterContext);\n\n// Builds a context value from the top-level component's props.\n// Pass through whichever of the four navigation pairs are wired up.\nexport const buildRouter = (props) => ({\n taxon: {\n onNavigate: props.onNavigateToTaxon || null,\n hrefFor: props.hrefForTaxon || null,\n },\n tree: {\n onNavigate: props.onNavigateToTree || null,\n hrefFor: props.hrefForTree || null,\n },\n search: {\n onNavigate: props.onNavigateToSearch || null,\n hrefFor: props.hrefForSearch || null,\n },\n source: {\n onNavigate: props.onNavigateToSource || null,\n hrefFor: props.hrefForSource || null,\n },\n});\n\n// <LinkTo to=\"taxon\" args={id}>{children}</LinkTo>\n//\n// - Renders <a href={hrefFor(args)} onClick={...}> when both are wired.\n// - Renders <a href=\"#\" onClick={...}> when only onNavigate is wired.\n// - Renders <a href={hrefFor(args)}> when only hrefFor is wired.\n// - Renders plain <span> when neither is wired.\n//\n// `args` is whatever the host's onNavigate/hrefFor expects (usually an\n// id string, but tree+search may pass an object).\nexport const LinkTo = ({ to, args, children, className, style, title }) => {\n const router = useRouter();\n const slot = router[to];\n if (!slot) return <span style={style} className={className} title={title}>{children}</span>;\n const { onNavigate, hrefFor } = slot;\n const href = hrefFor ? hrefFor(args) : (onNavigate ? \"#\" : null);\n\n if (!onNavigate && !href) {\n return <span style={style} className={className} title={title}>{children}</span>;\n }\n const handleClick = onNavigate\n ? (e) => {\n // Let middle-click / cmd-click open in a new tab when an href is set.\n if (e.defaultPrevented) return;\n if (e.button !== 0) return;\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n e.preventDefault();\n onNavigate(args);\n }\n : undefined;\n return (\n <a\n href={href || undefined}\n onClick={handleClick}\n className={className}\n style={style}\n title={title}\n >\n {children}\n </a>\n );\n};\n\n// Imperative variant for code paths that don't render a link but want\n// to trigger navigation (e.g. tree-node click handlers that already\n// have their own onClick wiring).\nexport const useNavigateTo = (to) => {\n const router = useRouter();\n const slot = router[to];\n if (!slot || !slot.onNavigate) return noop;\n return slot.onNavigate;\n};\n","import axios from \"axios\";\nimport config from \"../config\";\n\nconst reflect = (p) =>\n p.then(\n (v) => v.data,\n (e) => null\n );\n\n// Bulk lookup using the API's `/source/simple?id=…&id=…` endpoint. One\n// HTTP request resolves all ids in the batch. The endpoint returns a\n// lightweight dataset object per id; results may come back in any order,\n// so we reorder by `key` to match what DataLoader expects (same length\n// and same order as the requested ids).\n//\n// Tolerates any failure mode (404, network error, malformed response, …)\n// by resolving every id in the failing batch to null. Returning the\n// expected-length array is critical — DataLoader rejects every pending\n// load() if the batch function rejects or returns the wrong length, and\n// the per-id load() rejections would in turn reject the Promise.all in\n// TaxonSources and leave the popover spinner stuck.\nexport const getDatasetsBatch = (ids, datasetKey) => {\n if (!ids?.length) return Promise.resolve([]);\n const nullsForAll = () => ids.map(() => null);\n const params = ids.map((id) => `id=${encodeURIComponent(id)}`).join(\"&\");\n return axios(`${config.dataApi}dataset/${datasetKey}/source/simple?${params}`)\n .then((res) => {\n try {\n const byKey = new Map();\n const arr = Array.isArray(res?.data) ? res.data : [];\n arr.forEach((d) => {\n if (d && d.key != null) byKey.set(d.key, d);\n });\n return ids.map((id) => byKey.get(id) ?? byKey.get(Number(id)) ?? null);\n } catch (parseErr) {\n return nullsForAll();\n }\n })\n .catch(() => nullsForAll());\n};\n\nexport const getPublishersBatch = (ids, datasetKey) => {\n return Promise.all(\n ids.map((i) =>\n reflect(axios(`${config.dataApi}dataset/${datasetKey}/sector/publisher/${i}`))\n )\n );\n};\n\nexport const getCatalogues = () => {\n return axios(`${config.dataApi}dataset/catalogues`).then(({ data }) =>\n getDatasetsBatch(data)\n );\n};\n\nexport const getDataset = (datasetKey) =>\n axios(`${config.dataApi}dataset/${datasetKey}`);\n\n// Lightweight dataset descriptor — includes `origin`, `title`, `version`,\n// `key`, etc. Used by Search to gate filter UI on the dataset's origin.\n// TODO: switch to `/dataset/{key}/simple` once that endpoint deploys.\n// The full /dataset/{key} response is a superset, so it works today.\nexport const getDatasetSimple = (datasetKey) =>\n axios(`${config.dataApi}dataset/${datasetKey}`);\n","import { createContext } from \"react\";\nimport DataLoader from \"dataloader\";\nimport { getDatasetsBatch, getPublishersBatch } from \"../api/dataset\";\n\n// Shared DataLoaders for the Tree subtree. Created once per (datasetKey,\n// mounted Tree) and provided via TreeCacheContext so every TaxonSources,\n// every sector-dataset decoration in ColTree, and any other in-tree\n// consumer hits the same in-memory cache. Without this, each TaxonSources\n// instance creates its own loader and the same source/publisher dataset\n// is fetched once per node it appears under.\n//\n// DataLoader batches calls inside a microtask and caches resolved values\n// indefinitely for the lifetime of the loader.\n\nexport const TreeCacheContext = createContext({\n datasetLoader: null,\n publisherLoader: null,\n});\n\nexport const createTreeCache = (datasetKey) => ({\n datasetLoader: new DataLoader((ids) => getDatasetsBatch(ids, datasetKey)),\n publisherLoader: new DataLoader((ids) =>\n getPublishersBatch(ids, datasetKey)\n ),\n});\n","import React from \"react\";\nimport { Popover, Spin, Divider } from \"antd\";\nimport DataLoader from \"dataloader\";\nimport _ from \"lodash\";\nimport { LinkTo } from \"../router\";\nimport { TreeCacheContext } from \"./treeCache\";\nimport { getDatasetsBatch, getPublishersBatch } from \"../api/dataset\";\nimport config from \"../config\";\n\nclass TaxonSources extends React.Component {\n static contextType = TreeCacheContext;\n\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n showInNode: false,\n loading: false,\n };\n }\n\n // Returns the shared cache from TreeCacheContext if available, or a\n // throwaway local DataLoader so the popover still works even if context\n // doesn't reach this instance (which used to leave the spinner stuck\n // because getData early-returned with no loading state set).\n getDatasetLoader = () => {\n const { datasetKey } = this.props;\n if (this.context?.datasetLoader) return this.context.datasetLoader;\n if (!this._localDatasetLoader) {\n this._localDatasetLoader = new DataLoader((ids) =>\n getDatasetsBatch(ids, datasetKey)\n );\n }\n return this._localDatasetLoader;\n };\n\n getPublisherLoader = () => {\n const { datasetKey } = this.props;\n if (this.context?.publisherLoader) return this.context.publisherLoader;\n if (!this._localPublisherLoader) {\n this._localPublisherLoader = new DataLoader((ids) =>\n getPublishersBatch(ids, datasetKey)\n );\n }\n return this._localPublisherLoader;\n };\n\n componentDidMount = () => {\n const { sourceDatasetKeys } = this.props;\n if (sourceDatasetKeys && sourceDatasetKeys.length < 4) {\n this.setState({ showInNode: true }, this.getData);\n }\n };\n\n getData = () => {\n const { sourceDatasetKeys } = this.props;\n if (!sourceDatasetKeys?.length) return;\n this.setState({ loading: true });\n const loader = this.getDatasetLoader();\n Promise.all(\n sourceDatasetKeys.map((s) => loader.load(s).catch(() => null))\n )\n .then((data) => {\n this.setState({ data: _.sortBy(data, [\"alias\"]), loading: false });\n })\n .catch(() => {\n this.setState({ data: [], loading: false });\n });\n };\n\n getPublisherData = () => {\n const { publisherDatasetKeys } = this.props;\n if (!publisherDatasetKeys) return;\n const loader = this.getPublisherLoader();\n Promise.all(\n Object.keys(publisherDatasetKeys).map((s) =>\n loader\n .load(s)\n .then((publisher) => ({\n ...publisher,\n datasets: publisherDatasetKeys[s],\n }))\n .catch(() => null)\n )\n )\n .then((data) => {\n this.setState({ publishers: _.sortBy(data.filter(Boolean), [\"alias\"]) });\n })\n .catch(() => {\n this.setState({ publishers: [] });\n });\n };\n\n render = () => {\n const { data, showInNode, popOverVisible, loading } = this.state;\n const { taxon, datasetKey } = this.props;\n const linkStyle = { color: \"orange\", fontSize: \"11px\" };\n const publisherUrl = (uuid) =>\n `${config.clbPortal}/dataset/${datasetKey}/publisher/${uuid}`;\n\n if (showInNode) {\n return data\n .filter((d) => !!d)\n .map((d, index) => (\n <LinkTo\n to=\"source\"\n args={d.key}\n key={d.key}\n className=\"col-tree-data-source\"\n style={linkStyle}\n >\n {(index ? \", \" : \"\") + (d.alias || d.key)}\n </LinkTo>\n ));\n }\n\n return (\n <div style={{ display: \"inline\" }} id={`taxon_sources_${taxon.id}`}>\n <Popover\n getPopupContainer={() =>\n document.getElementById(`taxon_sources_${taxon.id}`)\n }\n content={\n loading || data.length === 0 ? (\n <div\n style={{ minWidth: \"200px\", textAlign: \"center\", padding: \"8px 0\" }}\n >\n <Spin size=\"small\" />\n </div>\n ) : (\n <div style={{ maxWidth: \"500px\" }}>\n {data.length > 0 && (\n <div>\n {data\n .filter((d) => !!d)\n .map((d, index) => (\n <LinkTo\n to=\"source\"\n args={d.key}\n key={d.key}\n className=\"col-tree-data-source\"\n style={linkStyle}\n >\n {(index ? \", \" : \"\") + (d.alias || d.key)}\n </LinkTo>\n ))}\n </div>\n )}\n {this.state.publishers && this.state.publishers.length > 0 && (\n <div style={{ marginTop: \"12px\" }}>\n <strong>Publishers</strong>\n <div>\n {this.state.publishers\n .filter((d) => !!d)\n .map((d, index) => (\n <a\n key={d.id}\n href={publisherUrl(d.id)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={linkStyle}\n >\n {(index ? \", \" : \"\") + (d.alias || d.id)}\n {d.datasets?.length\n ? ` (${d.datasets.length.toLocaleString(\"en-GB\")})`\n : \"\"}\n </a>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n title={\n <div style={{ padding: \"4px 0\" }}>\n <span style={{ fontWeight: 500 }}>Sources for </span>\n <em>{taxon?.name}</em>\n <Divider style={{ margin: \"8px 0 0\" }} />\n </div>\n }\n open={popOverVisible}\n onOpenChange={(visible) =>\n this.setState({ popOverVisible: visible }, () => {\n if (visible && this.state.data.length === 0) this.getData();\n if (\n visible &&\n this.props.publisherDatasetKeys &&\n !this.state.publishers\n ) {\n this.getPublisherData();\n }\n })\n }\n trigger=\"click\"\n placement=\"rightTop\"\n >\n <a\n className=\"col-tree-data-source\"\n role=\"button\"\n tabIndex={0}\n style={{ cursor: \"pointer\", color: \"orange\", fontSize: \"11px\" }}\n onClick={(e) => e.preventDefault()}\n >\n Multiple sources\n </a>\n </Popover>\n </div>\n );\n };\n}\n\nexport default TaxonSources;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Tag, Popover } from \"antd\";\nimport btoa from \"btoa\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport { LinkTo } from \"../router\";\n\nconst createdByAlgorithm = {\n 14: \"The data was created by the homotypic grouping algorithm\"\n}\n\nconst MergedDataBadge = ({\n style = {},\n datasetKey,\n sourceDatasetKey,\n sourceId,\n popoverPlacement,\n verbatimSourceKey,\n sectorKey,\n createdBy\n}) => {\n const [sourceDataset, setSourceDataset] = useState(null);\n const [sourceDatasetLoading, setSourceDatasetLoading] = useState(false);\n const [sourceTaxon, setSourceTaxon] = useState(null);\n const [sourceTaxonLoading, setSourceTaxonLoading] = useState(null);\n const [verbatimRecord, setVerbatimRecord] = useState(null);\n const [verbatimRecordLoading, setVerbatimRecordLoading] = useState(false);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (open && sourceDatasetKey && sourceId) {\n getSourceTaxon()\n }\n if (open && sourceDatasetKey) {\n getSourceDataset()\n }\n if (open && verbatimSourceKey && !createdByAlgorithm[createdBy]) {\n getVerbatimRecord();\n }\n }, [sourceDatasetKey, sourceId, verbatimSourceKey, open]);\n\n \n\n const getSourceTaxon = () => {\n setSourceTaxonLoading(true);\n setSourceTaxon(null);\n axios(`${config.dataApi}dataset/${sourceDatasetKey}/taxon/${sourceId}`)\n .then((res) => {\n setSourceTaxonLoading(false);\n setSourceTaxon(res.data);\n })\n .catch((err) => {\n console.error(\"Error fetching source taxon:\", err);\n setSourceTaxonLoading(false);\n setSourceTaxon(null);\n });\n };\n\n const getSourceDataset = () => {\n setSourceDatasetLoading(true);\n setSourceDataset(null);\n axios(`${config.dataApi}dataset/${sourceDatasetKey}`)\n .then((res) => {\n setSourceDatasetLoading(false);\n setSourceDataset(res.data);\n })\n .catch((err) => {\n console.error(\"Error fetching source dataset:\", err);\n setSourceDatasetLoading(false);\n setSourceDataset(null);\n });\n };\n\n const getVerbatimRecord = () => {\n setVerbatimRecordLoading(true);\n setVerbatimRecord(null);\n axios(`${config.dataApi}dataset/${datasetKey}/verbatimsource/${verbatimSourceKey}`)\n .then((res) => {\n setVerbatimRecordLoading(false);\n setVerbatimRecord(res.data);\n })\n .catch((err) => {\n console.error(\"Error fetching verbatim record:\", err);\n setVerbatimRecordLoading(false);\n setVerbatimRecord(null);\n });\n };\n\n const idRef = useRef(Math.random().toString(36).substring(2, 15));\n\n return (!!sourceDatasetKey || !!verbatimSourceKey ) ? (\n <div style={{ display: \"inline\" }} id={idRef.current}>\n <Popover\n getPopupContainer={() => document.getElementById(idRef.current)}\n content={\n <div style={{ minWidth: \"300px\" }}>\n {(!verbatimSourceKey && !sourceId) &&sourceDatasetKey && <div>\n <strong>Source:</strong>{\" \"}\n {sourceDatasetLoading\n ? \"Loading...\"\n : <LinkTo to=\"source\" args={sourceDataset?.key}>{sourceDataset?.title}</LinkTo>}\n </div>}\n {sourceDatasetKey && sourceId && <div>\n <strong>Source:</strong>{\" \"}\n {sourceTaxonLoading\n ? \"Loading...\"\n : <a\n href={`https://www.checklistbank.org/dataset/${sourceDatasetKey}/taxon/${sourceId}`}\n dangerouslySetInnerHTML={ { __html: sourceTaxon?.labelHtml } }\n onClick={() => {\n window.location.href = `https://www.checklistbank.org/dataset/${sourceDatasetKey}/taxon/${sourceId}`;\n }}\n ></a> }\n </div>}\n {(!sourceId) && verbatimSourceKey && <div>\n <strong>Source:</strong>{\" \"}\n {!!createdByAlgorithm[createdBy] && <span>{createdByAlgorithm[createdBy]}</span>}\n {verbatimRecordLoading\n ? \"Loading...\"\n : !!verbatimRecord ? <> {<a\n href={`https://www.checklistbank.org/dataset/${verbatimRecord.sourceDatasetKey}/${(verbatimRecord.sourceEntity || \"\").replace(/\\s/g, \"\")}/${encodeURIComponent(verbatimRecord.sourceId)}`}\n dangerouslySetInnerHTML={ { __html: sourceDataset?.title ||verbatimRecord?.sourceEntity } }\n onClick={() => {\n window.location.href = `https://www.checklistbank.org/dataset/${verbatimRecord.sourceDatasetKey}/${(verbatimRecord.sourceEntity || \"\").replace(/\\s/g, \"\")}/${encodeURIComponent(verbatimRecord.sourceId)}`;\n }}\n ></a> }\n {verbatimRecord?.issues && verbatimRecord?.issues.length > 0 ? <div>\n <span>Issues: </span>\n {verbatimRecord.issues.map((issue, index) => (\n <Tag key={index} style={{ margin: \"2px\" }}>\n {issue}\n </Tag>\n ))}\n </div>: \"\"}\n </>:\"\" }\n </div>}\n </div>\n }\n trigger={\"click\"}\n placement={popoverPlacement || \"right\"}\n onOpenChange={setOpen}\n >\n <Tag\n color=\"purple\"\n /* onClick={(e) => {\n getSourceDataset();\n getSourceTaxon();\n if(!createdByAlgorithm[createdBy]){ getVerbatimRecord(); }\n }} */\n style={{\n cursor: \"pointer\",\n fontFamily: \"monospace\",\n fontSize: \"8px\",\n fontWeight: 900,\n padding: \"2px\",\n lineHeight: \"8px\",\n verticalAlign: \"middle\",\n marginRight: \"2px\",\n ...style,\n }}\n >\n XR\n </Tag>\n </Popover>\n </div>\n ) : (\n <div style={{ display: \"inline\" }}> <Tag\n color=\"purple\"\n style={{\n fontFamily: \"monospace\",\n fontSize: \"8px\",\n fontWeight: 900,\n padding: \"2px\",\n lineHeight: \"8px\",\n verticalAlign: \"middle\",\n marginRight: \"2px\",\n ...style,\n }}\n >\n XR\n </Tag></div>\n );\n};\n\nexport default MergedDataBadge;\n","import React from \"react\";\n\nexport const ColTreeContext = React.createContext();\n","import React from \"react\";\nimport { Tag } from \"antd\";\nimport _ from \"lodash\";\nimport TaxonSources from \"./TaxonSources\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport {ColTreeContext} from \"./ColTreeContext\"\nimport { LinkTo } from \"../router\";\n\nclass ColTreeNode extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n style: {},\n provisional: this.props.taxon.status === \"provisionally accepted\",\n loading: false,\n };\n }\n\n rankIsAboveSpecies = (rank) => {\n return this.props.rank.indexOf(rank) < this.props.rank.indexOf(\"species\");\n };\n\n render = () => {\n const {\n taxon,\n taxon: { sector, sourceDatasetKeys, publisherDatasetKeys },\n datasetKey,\n } = this.props;\n\n const sectorSourceDataset = _.get(sector, \"dataset\");\n/* const hasDatasetSectors = datasetSectors && ( sector && sector.subjectDatasetKey ? Object.keys(_.omit(datasetSectors, [sector.subjectDatasetKey])).length > 0 : true)\n */ \nconst hasDatasetSectors =\n(sourceDatasetKeys || []).filter((d) => sector?.subjectDatasetKey !== d)\n .length > 0;\n const estimate = taxon.estimate && taxon.estimates ? taxon.estimates.find(e => e.estimate === taxon.estimate) : null;\n // Virtual \"Not assigned\" placeholders inserted by the API\n // (insertPlaceholder=true) aren't real taxa, so they can't be linked\n // to a taxon page.\n const isPlaceholder =\n typeof taxon.id === \"string\" && taxon.id.indexOf(\"incertae-sedis\") > -1;\n\n return (\n <ColTreeContext.Consumer>\n {({ showInfo }) => (\n <div id={taxon.id}>\n <span>\n <span className=\"tree-node-rank\">{taxon.rank}: </span>\n {isPlaceholder ? (\n <span dangerouslySetInnerHTML={{ __html: taxon.labelHtml }} />\n ) : (\n <LinkTo to=\"taxon\" args={taxon.id}>\n <span dangerouslySetInnerHTML={{ __html: taxon.labelHtml }} />\n </LinkTo>\n )}\n {taxon?.merged && (\n <MergedDataBadge style={{ marginLeft: \"4px\" }} datasetKey={taxon?.datasetKey} verbatimSourceKey={taxon?.verbatimSourceKey}/>\n )}\n </span>\n {/* estimate && (\n <span>\n {\" \"}\n • <TaxonEstimate estimate={estimate} taxon={taxon} />\n </span>\n ) */}\n {showInfo && taxon.status === \"provisionally accepted\" && (\n <React.Fragment> • <Tag color=\"warning\" style={{marginRight: 0}}>\n prov.\n </Tag>\n </React.Fragment>\n )}\n\n {!_.isUndefined(taxon.count) &&\n this.rankIsAboveSpecies(taxon?.rank) && (\n <span>\n {\" \"}\n • {Number(taxon.count).toLocaleString()}{\" \"}\n {showInfo && !_.isUndefined(taxon.speciesEstimate) && (\n <span>\n {\" \"}\n of{\" \"}\n {Number(\n taxon.speciesEstimate\n ).toLocaleString()}{\" \"}\n est.{\" \"}\n </span>\n )}\n spp.\n </span>\n )} \n \n \n {showInfo && sector && (\n <span>\n <span> • </span>\n <LinkTo\n to=\"source\"\n args={sector.subjectDatasetKey}\n style={hasDatasetSectors ? {fontWeight: 'bold'} : null}\n className=\"col-tree-data-source\"\n >\n {_.get(sectorSourceDataset, \"alias\") || sector.subjectDatasetKey}{hasDatasetSectors && \", \"}\n </LinkTo>\n </span>\n )}\n {showInfo && hasDatasetSectors && (\n <React.Fragment> <TaxonSources\n sourceDatasetKeys={sourceDatasetKeys}\n publisherDatasetKeys={publisherDatasetKeys}\n taxon={taxon}\n datasetKey={datasetKey}\n />\n </React.Fragment>\n )}\n \n </div>\n )}\n </ColTreeContext.Consumer>\n\n );\n };\n}\n\nexport default ColTreeNode;\n","import React from 'react';\nimport _ from 'lodash';\n\nclass ErrorMsg extends React.Component {\n\n render() {\n\n const { error } = this.props;\n return (\n <div>\n {error.message && <h3>\n {error.message}\n </h3>}\n {_.get(error, 'response.data.message') && <p>\n {_.get(error, 'response.data.message')}\n </p>}\n {_.get(error, 'response.data.details') && <p>\n {_.get(error, 'response.data.details')}\n </p>}\n {_.get(error, 'config.method') && <p>\n HTTP method: <strong>{_.get(error, 'config.method').toUpperCase()}</strong>\n </p>}\n {_.get(error, 'response.request.responseURL') &&\n <p><a href={_.get(error, 'response.request.responseURL')} target=\"_blank\">{_.get(error, 'response.request.responseURL')}</a></p>}\n {_.get(error, 'config.data') && typeof _.get(error, 'config.data') === 'string' && <div>\n <h4>Body:</h4>\n <p>\n {_.get(error, 'config.data')}\n </p></div>}\n </div>\n\n );\n }\n}\n\n\n\nexport default ErrorMsg;\n","import axios from \"axios\";\nimport config from \"../config\";\n\nconst reflect = p => p.then(v => v.data, e => null);\n\nexport const getSectorsBatch = (ids, datasetKey) => {\n return Promise.all(\n ids.map(i => reflect(axios(`${config.dataApi}dataset/${datasetKey}/sector/${i}`)))\n );\n};\n","import React from \"react\";\nimport { Tree, Alert, Spin, Button, Skeleton } from \"antd\";\nimport _ from \"lodash\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport ColTreeNode from \"./ColTreeNode\";\nimport ErrorMsg from \"../components/ErrorMsg\";\nimport { getSectorsBatch } from \"../api/sector\";\nimport DataLoader from \"dataloader\";\nimport { TreeCacheContext } from \"./treeCache\";\n\nconst CHILD_PAGE_SIZE = 1000; // How many children will we load at a time\n\nclass LoadMoreChildrenTreeNode extends React.Component {\n constructor(props) {\n super(props);\n this.state = { loading: false };\n }\n\n onClick = () => {\n this.setState({ loading: true }, () =>\n this.props.onClick().then(() => this.setState({ loading: false }))\n );\n };\n render = () => {\n const { loading } = this.state;\n return (\n <React.Fragment>\n {loading && <Spin />}\n {!loading && (\n <a onClick={this.onClick}>\n <strong>Load more...</strong>\n </a>\n )}\n </React.Fragment>\n );\n };\n}\n\nclass ColTree extends React.Component {\n static contextType = TreeCacheContext;\n\n constructor(props) {\n super(props);\n\n this.state = {\n rootLoading: true,\n treeData: [],\n loadedKeys: [],\n expandedKeys: [],\n rootTotal: 0,\n error: null,\n nodeNotFoundErr: null,\n rank: []\n };\n this.treeRef = React.createRef();\n }\n\n // datasetLoader comes from the shared TreeCacheContext so multiple tree\n // nodes (and TaxonSources instances) share one in-memory cache instead\n // of each re-fetching the same source datasets.\n get datasetLoader() {\n return this.context.datasetLoader;\n }\n\n componentDidMount = () => {\n const { datasetKey } = this.props;\n this.loadRoot();\n this.sectorLoader = new DataLoader((ids) =>\n getSectorsBatch(ids, datasetKey)\n );\n this.getRank()\n const { treeRef } = this.props;\n treeRef(this);\n };\n\n componentDidUpdate = (prevProps) => {\n if (\n prevProps.defaultExpandKey !== this.props.defaultExpandKey ||\n prevProps.hideExtinct !== this.props.hideExtinct ||\n prevProps.insertPlaceholder !== this.props.insertPlaceholder\n ) {\n this.reloadRoot();\n }\n };\n\n getRank = () => {\n axios(`${config.dataApi}vocab/rank`).then((res) =>\n this.setState({ rank: res.data.map((r) => r.name) })\n );\n };\n\n reloadRoot = () =>\n this.setState(\n {\n rootLoading: true,\n treeData: [],\n loadedKeys: [],\n rootTotal: 0,\n error: null,\n nodeNotFoundErr: null,\n },\n this.loadRoot\n );\n\n \n\n loadRoot = async () => {\n const {\n showSourceTaxon,\n datasetKey,\n hideExtinct,\n insertPlaceholder,\n type,\n expandedTaxonKey,\n } = this.props;\n\n const defaultExpandKey = expandedTaxonKey;\n const { defaultTaxonKey } = this.props;\n\n this.setState({ rootLoading: true, treeData: [] });\n return axios(\n `${\n config.dataApi\n }dataset/${datasetKey}/tree?projectKey=${datasetKey}${type ? \"&type=\"+type :\"\"}&limit=${CHILD_PAGE_SIZE}&offset=${\n this.state.treeData.length\n }${hideExtinct ? `&extinct=false&extinct=` : \"\"}${insertPlaceholder ? \"&insertPlaceholder=true\" : \"\"}`\n )\n .then(this.decorateWithSectorsAndDataset)\n .then((res) => {\n const mainTreeData = res.data.result || [];\n const rootTotal = res.data.total;\n const treeData = mainTreeData.map((tx) => {\n let dataRef = {\n taxon: tx,\n key: tx.id,\n datasetKey,\n childCount: tx.childCount,\n isLeaf: tx.childCount === 0,\n childOffset: 0,\n };\n dataRef.title = (\n <ColTreeNode\n taxon={tx}\n \n \n datasetKey={datasetKey}\n showSourceTaxon={showSourceTaxon}\n reloadChildren={() => this.fetchChildPage(dataRef, true)}\n rank={this.state.rank}\n />\n );\n dataRef.ref = dataRef;\n return dataRef;\n });\n\n this.setState({\n rootTotal: rootTotal,\n rootLoading: false,\n treeData: [...this.state.treeData, ...treeData],\n expandedKeys:\n treeData.length < 10 ? treeData.map((n) => n.taxon.id).filter(n => n ===\"CS5HF\") : [],\n error: null,\n },\n () => {\n if (defaultExpandKey) {\n return this.expandToTaxon(defaultExpandKey);\n } else if (defaultTaxonKey) {\n return this.expandToTaxon(defaultTaxonKey);\n }\n });\n if (treeData.length === 1) {\n this.fetchChildPage(treeData[treeData.length - 1]);\n }\n })\n .catch((err) => {\n this.setState({\n treeData: [],\n rootLoading: false,\n expandedKeys: [],\n error: err,\n });\n });\n };\n\n expandToTaxon = async (defaultExpandKey) => {\n const {\n showSourceTaxon,\n datasetKey,\n hideExtinct,\n type\n } = this.props;\n\n this.setState({ rootLoading: true/* , treeData: [] */ });\n const { data } = await axios(\n `${\n config.dataApi\n }dataset/${datasetKey}/tree/${defaultExpandKey}?projectKey=${datasetKey}&insertPlaceholder=true${type ? \"&type=\"+type :\"\"}${\n hideExtinct ? `&extinct=false` : \"\"\n }`\n ).then((res) =>\n this.decorateWithSectorsAndDataset({\n data: { result: res.data },\n }).then(() => res)\n );\n\n if (data.length === 0) {\n return this.setState(\n {\n error: {\n message: `No classification found for Taxon ID: ${defaultExpandKey}`,\n },\n },\n this.loadRoot\n );\n }\n const tx = data[data.length - 1];\n let root = {\n taxon: tx,\n key: tx.id,\n datasetKey,\n childCount: tx.childCount,\n isLeaf: tx.childCount === 0,\n childOffset: 0,\n };\n root.title = (\n <ColTreeNode\n taxon={tx}\n \n \n datasetKey={datasetKey}\n showSourceTaxon={showSourceTaxon}\n rank={this.state.rank}\n reloadChildren={() => this.fetchChildPage(root, true)}\n />\n );\n\n root.ref = root;\n const root_ = root;\n for (let i = data.length - 2; i >= 0; i--) {\n const tx = data[i];\n const node = {\n taxon: tx,\n key: tx.id,\n datasetKey,\n childCount: tx.childCount,\n isLeaf: tx.childCount === 0,\n childOffset: 0,\n };\n node.ref = node;\n node.title = (\n <ColTreeNode\n taxon={tx}\n \n \n datasetKey={datasetKey}\n showSourceTaxon={showSourceTaxon}\n rank={this.state.rank}\n reloadChildren={() => this.fetchChildPage(node, true)}\n />\n );\n\n root.children = [node];\n root = node;\n }\n\n /* const treeData = [root_]; */\nconst { treeData } = this.state;\n var rootIndex = treeData.findIndex((x) => x.key == root_.key);\n treeData[rootIndex] = root_;\n const loadedKeys = [...data.map((t) => t.id).reverse()];\n\n this.setState({ treeData }, () =>\n this.reloadLoadedKeys(loadedKeys, defaultExpandKey)\n );\n };\n\n fetchChildPage = async (dataRef, reloadAll, dontUpdateState) => {\n const {\n showSourceTaxon,\n datasetKey,\n hideExtinct,\n insertPlaceholder,\n type\n } = this.props;\n const { treeData } = this.state;\n const childcount = _.get(dataRef, \"childCount\");\n const limit = CHILD_PAGE_SIZE;\n const offset = _.get(dataRef, \"childOffset\");\n const res = await axios(\n `${config.dataApi}dataset/${datasetKey}/tree/${\n dataRef.taxon.id //taxonKey\n }/children?limit=${limit}&offset=${offset}&projectKey=${datasetKey}${type ? \"&type=\"+type :\"\"}${\n hideExtinct ? `&extinct=false` : \"\"\n }${insertPlaceholder ? \"&insertPlaceholder=true\" : \"\"}`\n );\n await this.decorateWithSectorsAndDataset(res);\n\n const data = res.data.result\n ? res.data.result.map((tx) => {\n let childDataRef = {\n taxon: tx,\n key: tx.id,\n datasetKey,\n childCount: tx.childCount,\n isLeaf: tx.childCount === 0,\n childOffset: 0,\n parent: dataRef,\n name: tx.name,\n };\n\n childDataRef.title = (\n <ColTreeNode\n taxon={tx}\n \n \n datasetKey={datasetKey}\n showSourceTaxon={showSourceTaxon}\n rank={this.state.rank}\n reloadChildren={() => this.fetchChildPage(childDataRef, true)}\n />\n );\n childDataRef.ref = childDataRef;\n\n return childDataRef;\n })\n : [];\n\n // reloadAll is used to force reload all children from offset 0 - used when new children have been posted\n dataRef.children =\n dataRef.children && offset !== 0 && !reloadAll\n ? [...dataRef.children, ...data]\n : data;\n // If extinct are filtered out, you cannot rely on childCount\n if (res.data.last && dataRef.childCount > dataRef.children.length) {\n dataRef.childCount = dataRef.children.length;\n }\n if (!res.data.last) {\n const loadMoreFn = () => {\n dataRef.childOffset += CHILD_PAGE_SIZE;\n if (\n dataRef.children[dataRef.children.length - 1].key ===\n \"__loadMoreBTN__\"\n ) {\n dataRef.children = dataRef.children.slice(0, -1);\n }\n return this.fetchChildPage(dataRef, false);\n };\n dataRef.children = [\n ...dataRef.children,\n {\n title: (\n <LoadMoreChildrenTreeNode\n onClick={loadMoreFn}\n key=\"__loadMoreBTN__\"\n />\n ),\n key: \"__loadMoreBTN__\",\n childCount: 0,\n isLeaf: true,\n },\n ];\n }\n if (!dontUpdateState) {\n this.setState({\n treeData: [...treeData],\n loadedKeys: [...new Set([...this.state.loadedKeys, dataRef.key])],\n });\n }\n };\n\n decorateWithSectorsAndDataset = (res) => {\n if (!res.data.result) return res;\n return Promise.all(\n res.data.result\n .filter((tx) => !!tx.sectorDatasetKey)\n .map((tx) =>\n this.datasetLoader\n .load(tx.sectorDatasetKey)\n .then(\n (dataset) =>\n (tx.sector = {\n id: tx.sectorKey,\n subjectDatasetKey: tx.sectorDatasetKey,\n dataset: dataset,\n })\n )\n )\n ).then(() => res);\n };\n\n onLoadData = (treeNode, reloadAll = false) => {\n if (reloadAll) {\n treeNode.childOffset = 0;\n }\n return this.fetchChildPage(treeNode.ref, reloadAll);\n };\n\n findNode = (id, nodeArray) => {\n let node = null;\n\n node = nodeArray.find((n) => _.get(n, \"taxon.id\") === id);\n\n if (node) {\n return node;\n } else {\n const children = nodeArray.map((n) => _.get(n, \"children\") || []);\n const flattenedChildren = _.flatten(children); //.flat();\n if (flattenedChildren.length === 0) {\n return null;\n } else {\n return this.findNode(id, flattenedChildren);\n }\n }\n };\n\n pageThroughChildrenUntilTaxonFound = async (parentNode, taxonId) => {\n let node;\n while (!node && parentNode.children.length < parentNode.childCount) {\n parentNode.childOffset += CHILD_PAGE_SIZE;\n if (\n parentNode.children[parentNode.children.length - 1].key ===\n \"__loadMoreBTN__\"\n ) {\n parentNode.children = parentNode.children.slice(0, -1);\n }\n await this.fetchChildPage(parentNode, false, true);\n node = this.findNode(taxonId, parentNode.children);\n }\n if (!node) {\n node = parentNode.children.find((c) =>\n _.get(c, \"taxon.id\") ? c.taxon.id.indexOf(\"incertae-sedis\") > -1 : false\n );\n }\n return node;\n };\n\n reloadLoadedKeys = async (keys, expandKey, expandAll = true) => {\n this.setState({ rootLoading: true });\n const { loadedKeys: storedKeys } = this.state;\n // const defaultExpandKey = _.get(qs.parse(_.get(location, \"search\")), 'taxonKey');\n\n let { treeData } = this.state;\n const targetTaxon = expandKey ? this.findNode(expandKey, treeData) : null;\n const loadedKeys = keys ? [...keys] : [...storedKeys];\n for (let index = 0; index < loadedKeys.length; index++) {\n let node = this.findNode(loadedKeys[index], treeData);\n if (!node && targetTaxon && loadedKeys[index - 1]) {\n // If the node is not found look for insertae sedis nodes in the children of the parent and insert the 'Not assigned' between the parent and the node\n const parentNode = this.findNode(loadedKeys[index - 1], treeData);\n if (\n parentNode &&\n _.isArray(_.get(parentNode, \"children\")) &&\n parentNode.children.length > 0\n ) {\n node = await this.pageThroughChildrenUntilTaxonFound(\n parentNode,\n loadedKeys[index]\n );\n if (node) {\n loadedKeys.splice(index, 0, node.taxon.id);\n } else {\n // It has gone missing from the tree\n this.setState(\n {\n nodeNotFoundErr: (\n <span>Cannot find taxon {expandKey} in tree &#128549;</span>\n ),\n rootLoading: false,\n }/* ,\n () => {\n if (\n this.props.treeType === \"CATALOGUE\" &&\n typeof this.props.addMissingTargetKey === \"function\"\n ) {\n this.props.addMissingTargetKey(expandKey);\n }\n } */\n );\n }\n }\n }\n if (node) {\n await this.fetchChildPage(node, true, true);\n let targetNode = node.children.find(\n (c) => _.get(c, \"taxon.id\") === _.get(targetTaxon, \"taxon.id\")\n );\n if (\n targetTaxon &&\n index === loadedKeys.length - 2 &&\n _.get(node, \"taxon.id\") !== _.get(targetTaxon, \"taxon.id\") &&\n _.isArray(node.children) &&\n !targetNode\n ) {\n if (node.children.length < node.childCount) {\n // its the parent of the taxon we are after - if its not in the first page, insert it\n targetNode = await this.pageThroughChildrenUntilTaxonFound(\n node,\n _.get(targetTaxon, \"taxon.id\")\n );\n // node.children = [targetTaxon, ...node.children];\n if (targetNode) {\n this.setState({ treeData: [...this.state.treeData] }, () => {\n setTimeout(() => {\n const elmnt = document.getElementById(expandKey);\n elmnt.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n /* if (_.get(this, \"treeRef.current\")) {\n this.treeRef.current.scrollTo({ key: expandKey });\n } */\n }, 100);\n });\n } else {\n // It has gone missing from the tree\n this.setState(\n {\n nodeNotFoundErr: (\n <span>Cannot find taxon {expandKey} in tree &#128549;</span>\n ),\n rootLoading: false,\n },\n () => {\n if (\n this.props.treeType === \"CATALOGUE\" &&\n typeof this.props.addMissingTargetKey === \"function\"\n ) {\n this.props.addMissingTargetKey(expandKey);\n }\n }\n );\n }\n }\n }\n }\n }\n const newState = { loadedKeys, rootLoading: false };\n if (expandAll) {\n newState.expandedKeys = loadedKeys;\n }\n this.setState(newState, () => {\n if (expandKey) {\n setTimeout(() => {\n const elmnt = document.getElementById(expandKey);\n elmnt.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n /* if (_.get(this, \"treeRef.current\")) {\n this.treeRef.current.scrollTo({ key: expandKey });\n } */\n }, 100);\n }\n });\n };\n\n render() {\n const {\n error,\n rootTotal,\n rootLoading,\n treeData,\n defaultExpandAll,\n nodeNotFoundErr,\n loadedKeys,\n expandedKeys,\n } = this.state;\n const { treeType, dataset, height, expandedTaxonKey } = this.props;\n void height;\n const defaultExpandKey = expandedTaxonKey;\n\n return (\n <div>\n {error && (\n <React.Fragment>\n {_.get(error, \"response.data.code\") !== 404 ? (\n <Alert\n closable\n onClose={() => this.setState({ error: null })}\n style={{ marginTop: \"8px\" }}\n message={<ErrorMsg error={error} />}\n type=\"error\"\n />\n ) : (\n <Alert\n closable\n onClose={() => this.setState({ error: null })}\n style={{ marginTop: \"8px\" }}\n message={\n <Custom404\n error={error}\n treeType={treeType}\n dataset={dataset}\n loadRoot={this.loadRoot}\n />\n }\n type=\"warning\"\n />\n )}\n </React.Fragment>\n )}\n {nodeNotFoundErr && (\n <Alert\n closable\n onClose={() => this.setState({ nodeNotFoundErr: null })}\n style={{ marginTop: \"8px\" }}\n message={nodeNotFoundErr}\n type=\"warning\"\n />\n )}\n {rootLoading && <Skeleton paragraph={{ rows: 10 }} active />}\n {!rootLoading && treeData.length > 0 && (\n <Tree\n ref={this.treeRef}\n defaultExpandAll={defaultExpandAll}\n // height={height || 600}\n // defaultExpandedKeys={defaultExpandedKeys}\n loadData={this.onLoadData}\n onLoad={(loadedKeys) => this.setState({ loadedKeys })}\n loadedKeys={loadedKeys}\n expandedKeys={expandedKeys}\n treeData={treeData}\n filterTreeNode={(node) => node.key === defaultExpandKey}\n onExpand={(expandedKeys, obj) => {\n this.setState({ expandedKeys });\n if (this.props.onExpandedTaxonKeyChange) {\n this.props.onExpandedTaxonKeyChange(\n obj.expanded ? obj.node.key : null\n );\n }\n }}\n ></Tree>\n )}\n\n {!error && treeData.length < rootTotal && (\n <Button loading={rootLoading} onClick={this.loadRoot}>\n Load more{\" \"}\n </Button>\n )}\n </div>\n );\n }\n}\n\nexport default ColTree;\n","import React from \"react\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport { AutoComplete, Input , Select} from \"antd\";\nimport _ from \"lodash\";\nimport { debounce } from \"lodash\";\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 axios(\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 axios(\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;","import React from \"react\";\nimport ColTree from \"./ColTree\";\nimport _ from \"lodash\";\nimport NameAutocomplete from \"./NameAutocomplete\";\nimport axios from \"axios\";\nimport btoa from \"btoa\";\nimport { Row, Col, Checkbox } from \"antd\";\nimport { ColTreeContext } from \"./ColTreeContext\";\nimport { TreeCacheContext, createTreeCache } from \"./treeCache\";\nimport { getDataset } from \"../api/dataset\";\nimport Citation from \"../components/DatasetCitation\";\nimport { RouterContext, buildRouter } from \"../router\";\n\nconst INFRASPECIFIC_RANKS = [\n \"infraspecific name\",\n \"species\",\n \"variety\",\n \"form\",\n];\n\nclass ColTreeWrapper extends React.Component {\n static contextType = RouterContext;\n\n constructor(props) {\n super(props);\n if (this.props.auth) {\n axios.defaults.headers.common[\"Authorization\"] = `Basic ${btoa(\n this.props.auth\n )}`;\n }\n this.state = {\n hideExtinct: false,\n showInfo: false,\n dataset: null,\n };\n // Per-Tree DataLoader cache. Rebuilt only if datasetKey changes (rare).\n this.cache = createTreeCache(this.props.datasetKey);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.datasetKey !== this.props.datasetKey) {\n this.cache = createTreeCache(this.props.datasetKey);\n }\n }\n\n componentDidMount = async () => {\n const { datasetKey, citation } = this.props;\n if (citation) {\n try {\n const { data: dataset } = await getDataset(datasetKey);\n this.setState({ dataset });\n } catch (err) {\n // ignore\n }\n }\n };\n\n render = () => {\n const {\n datasetKey,\n defaultTaxonKey,\n expandedTaxonKey,\n onExpandedTaxonKeyChange,\n showTreeOptions,\n linkToSpeciesPage,\n citation,\n type,\n insertPlaceholder = true,\n } = this.props;\n const { hideExtinct, dataset } = this.state;\n\n const handleSelectName = (name) => {\n const key = _.get(name, \"key\");\n if (!key) return;\n const rank = _.get(name, \"rank\");\n if (linkToSpeciesPage && INFRASPECIFIC_RANKS.includes(rank)) {\n // Leaf-like selection: jump to the taxon page via the host's nav.\n const navigateToTaxon = this.context?.taxon?.onNavigate;\n if (navigateToTaxon) navigateToTaxon(key);\n } else if (onExpandedTaxonKeyChange) {\n onExpandedTaxonKeyChange(key);\n if (this.treeRef && this.treeRef.reloadRoot) this.treeRef.reloadRoot();\n }\n };\n\n const handleResetSearch = () => {\n if (onExpandedTaxonKeyChange) onExpandedTaxonKeyChange(null);\n };\n\n return (\n <div className=\"catalogue-of-life\">\n {citation === \"top\" && dataset && <Citation dataset={dataset} />}\n <TreeCacheContext.Provider value={this.cache}>\n <ColTreeContext.Provider value={this.state}>\n <Row>\n <Col flex=\"auto\">\n <NameAutocomplete\n hideExtinct={hideExtinct}\n datasetKey={datasetKey}\n style={{\n width: \"100%\",\n paddingTop: \"5px\",\n paddingBottom: \"5px\",\n }}\n defaultTaxonKey={expandedTaxonKey || null}\n onSelectName={handleSelectName}\n onResetSearch={handleResetSearch}\n />\n </Col>\n {showTreeOptions && (\n <Col style={{ paddingLeft: \"8px\" }}>\n <Checkbox\n onChange={({ target: { checked } }) => {\n this.setState({ showInfo: checked });\n }}\n >\n Source\n </Checkbox>\n\n <Checkbox\n defaultChecked={false}\n onChange={({ target: { checked } }) => {\n this.setState({ hideExtinct: checked });\n }}\n >\n Extant only\n </Checkbox>\n </Col>\n )}\n </Row>\n <ColTree\n insertPlaceholder={insertPlaceholder}\n hideExtinct={hideExtinct}\n datasetKey={datasetKey}\n defaultTaxonKey={defaultTaxonKey}\n expandedTaxonKey={expandedTaxonKey}\n onExpandedTaxonKeyChange={onExpandedTaxonKeyChange}\n treeRef={(ref) => (this.treeRef = ref)}\n type={type}\n />\n </ColTreeContext.Provider>\n </TreeCacheContext.Provider>\n {citation === \"bottom\" && dataset && <Citation dataset={dataset} />}\n </div>\n );\n };\n}\n\n// Public wrapper: takes controlled props + navigation callbacks, builds\n// the RouterContext, hands the rest down.\nexport default function Tree({\n datasetKey,\n defaultTaxonKey,\n expandedTaxonKey,\n onExpandedTaxonKeyChange,\n showTreeOptions,\n linkToSpeciesPage,\n citation,\n type,\n insertPlaceholder,\n auth,\n ...routerProps\n}) {\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n <ColTreeWrapper\n datasetKey={datasetKey}\n defaultTaxonKey={defaultTaxonKey}\n expandedTaxonKey={expandedTaxonKey}\n onExpandedTaxonKeyChange={onExpandedTaxonKeyChange}\n showTreeOptions={showTreeOptions}\n linkToSpeciesPage={linkToSpeciesPage}\n citation={citation}\n type={type}\n insertPlaceholder={insertPlaceholder}\n auth={auth}\n />\n </RouterContext.Provider>\n );\n}\n","import { createContext } from 'react';\nconst IconContext = /*#__PURE__*/createContext({});\nexport default IconContext;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// 36 Hex to reduce the size of the file\nexport default {\n aliceblue: '9ehhb',\n antiquewhite: '9sgk7',\n aqua: '1ekf',\n aquamarine: '4zsno',\n azure: '9eiv3',\n beige: '9lhp8',\n bisque: '9zg04',\n black: '0',\n blanchedalmond: '9zhe5',\n blue: '73',\n blueviolet: '5e31e',\n brown: '6g016',\n burlywood: '8ouiv',\n cadetblue: '3qba8',\n chartreuse: '4zshs',\n chocolate: '87k0u',\n coral: '9yvyo',\n cornflowerblue: '3xael',\n cornsilk: '9zjz0',\n crimson: '8l4xo',\n cyan: '1ekf',\n darkblue: '3v',\n darkcyan: 'rkb',\n darkgoldenrod: '776yz',\n darkgray: '6mbhl',\n darkgreen: 'jr4',\n darkgrey: '6mbhl',\n darkkhaki: '7ehkb',\n darkmagenta: '5f91n',\n darkolivegreen: '3bzfz',\n darkorange: '9yygw',\n darkorchid: '5z6x8',\n darkred: '5f8xs',\n darksalmon: '9441m',\n darkseagreen: '5lwgf',\n darkslateblue: '2th1n',\n darkslategray: '1ugcv',\n darkslategrey: '1ugcv',\n darkturquoise: '14up',\n darkviolet: '5rw7n',\n deeppink: '9yavn',\n deepskyblue: '11xb',\n dimgray: '442g9',\n dimgrey: '442g9',\n dodgerblue: '16xof',\n firebrick: '6y7tu',\n floralwhite: '9zkds',\n forestgreen: '1cisi',\n fuchsia: '9y70f',\n gainsboro: '8m8kc',\n ghostwhite: '9pq0v',\n goldenrod: '8j4f4',\n gold: '9zda8',\n gray: '50i2o',\n green: 'pa8',\n greenyellow: '6senj',\n grey: '50i2o',\n honeydew: '9eiuo',\n hotpink: '9yrp0',\n indianred: '80gnw',\n indigo: '2xcoy',\n ivory: '9zldc',\n khaki: '9edu4',\n lavenderblush: '9ziet',\n lavender: '90c8q',\n lawngreen: '4vk74',\n lemonchiffon: '9zkct',\n lightblue: '6s73a',\n lightcoral: '9dtog',\n lightcyan: '8s1rz',\n lightgoldenrodyellow: '9sjiq',\n lightgray: '89jo3',\n lightgreen: '5nkwg',\n lightgrey: '89jo3',\n lightpink: '9z6wx',\n lightsalmon: '9z2ii',\n lightseagreen: '19xgq',\n lightskyblue: '5arju',\n lightslategray: '4nwk9',\n lightslategrey: '4nwk9',\n lightsteelblue: '6wau6',\n lightyellow: '9zlcw',\n lime: '1edc',\n limegreen: '1zcxe',\n linen: '9shk6',\n magenta: '9y70f',\n maroon: '4zsow',\n mediumaquamarine: '40eju',\n mediumblue: '5p',\n mediumorchid: '79qkz',\n mediumpurple: '5r3rv',\n mediumseagreen: '2d9ip',\n mediumslateblue: '4tcku',\n mediumspringgreen: '1di2',\n mediumturquoise: '2uabw',\n mediumvioletred: '7rn9h',\n midnightblue: 'z980',\n mintcream: '9ljp6',\n mistyrose: '9zg0x',\n moccasin: '9zfzp',\n navajowhite: '9zest',\n navy: '3k',\n oldlace: '9wq92',\n olive: '50hz4',\n olivedrab: '472ub',\n orange: '9z3eo',\n orangered: '9ykg0',\n orchid: '8iu3a',\n palegoldenrod: '9bl4a',\n palegreen: '5yw0o',\n paleturquoise: '6v4ku',\n palevioletred: '8k8lv',\n papayawhip: '9zi6t',\n peachpuff: '9ze0p',\n peru: '80oqn',\n pink: '9z8wb',\n plum: '8nba5',\n powderblue: '6wgdi',\n purple: '4zssg',\n rebeccapurple: '3zk49',\n red: '9y6tc',\n rosybrown: '7cv4f',\n royalblue: '2jvtt',\n saddlebrown: '5fmkz',\n salmon: '9rvci',\n sandybrown: '9jn1c',\n seagreen: '1tdnb',\n seashell: '9zje6',\n sienna: '6973h',\n silver: '7ir40',\n skyblue: '5arjf',\n slateblue: '45e4t',\n slategray: '4e100',\n slategrey: '4e100',\n snow: '9zke2',\n springgreen: '1egv',\n steelblue: '2r1kk',\n tan: '87yx8',\n teal: 'pds',\n thistle: '8ggk8',\n tomato: '9yqfb',\n turquoise: '2j4r4',\n violet: '9b10u',\n wheat: '9ld4j',\n white: '9zldr',\n whitesmoke: '9lhpx',\n yellow: '9zl6o',\n yellowgreen: '61fzm'\n};","import presetColors from \"./presetColors\";\nconst round = Math.round;\n\n/**\n * Support format, alpha unit will check the % mark:\n * - rgba(102, 204, 255, .5) -> [102, 204, 255, 0.5]\n * - rgb(102 204 255 / .5) -> [102, 204, 255, 0.5]\n * - rgb(100%, 50%, 0% / 50%) -> [255, 128, 0, 0.5]\n * - hsl(270, 60, 40, .5) -> [270, 60, 40, 0.5]\n * - hsl(270deg 60% 40% / 50%) -> [270, 60, 40, 0.5]\n *\n * When `base` is provided, the percentage value will be divided by `base`.\n */\nfunction splitColorStr(str, parseNum) {\n const match = str\n // Remove str before `(`\n .replace(/^[^(]*\\((.*)/, '$1')\n // Remove str after `)`\n .replace(/\\).*/, '').match(/\\d*\\.?\\d+%?/g) || [];\n const numList = match.map(item => parseFloat(item));\n for (let i = 0; i < 3; i += 1) {\n numList[i] = parseNum(numList[i] || 0, match[i] || '', i);\n }\n\n // For alpha. 50% should be 0.5\n if (match[3]) {\n numList[3] = match[3].includes('%') ? numList[3] / 100 : numList[3];\n } else {\n // By default, alpha is 1\n numList[3] = 1;\n }\n return numList;\n}\nconst parseHSVorHSL = (num, _, index) => index === 0 ? num : num / 100;\n\n/** round and limit number to integer between 0-255 */\nfunction limitRange(value, max) {\n const mergedMax = max || 255;\n if (value > mergedMax) {\n return mergedMax;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n}\nexport class FastColor {\n /**\n * All FastColor objects are valid. So isValid is always true. This property is kept to be compatible with TinyColor.\n */\n isValid = true;\n\n /**\n * Red, R in RGB\n */\n r = 0;\n\n /**\n * Green, G in RGB\n */\n g = 0;\n\n /**\n * Blue, B in RGB\n */\n b = 0;\n\n /**\n * Alpha/Opacity, A in RGBA/HSLA\n */\n a = 1;\n\n // HSV privates\n _h;\n _hsl_s;\n _hsv_s;\n _l;\n _v;\n\n // intermediate variables to calculate HSL/HSV\n _max;\n _min;\n _brightness;\n constructor(input) {\n /**\n * Always check 3 char in the object to determine the format.\n * We not use function in check to save bundle size.\n * e.g. 'rgb' -> { r: 0, g: 0, b: 0 }.\n */\n function matchFormat(str) {\n return str[0] in input && str[1] in input && str[2] in input;\n }\n if (!input) {\n // Do nothing since already initialized\n } else if (typeof input === 'string') {\n const trimStr = input.trim();\n function matchPrefix(prefix) {\n return trimStr.startsWith(prefix);\n }\n if (/^#?[A-F\\d]{3,8}$/i.test(trimStr)) {\n this.fromHexString(trimStr);\n } else if (matchPrefix('rgb')) {\n this.fromRgbString(trimStr);\n } else if (matchPrefix('hsl')) {\n this.fromHslString(trimStr);\n } else if (matchPrefix('hsv') || matchPrefix('hsb')) {\n this.fromHsvString(trimStr);\n } else {\n // From preset color\n const presetColor = presetColors[trimStr.toLowerCase()];\n if (presetColor) {\n this.fromHexString(\n // Convert 36 hex to 16 hex\n parseInt(presetColor, 36).toString(16).padStart(6, '0'));\n }\n }\n } else if (input instanceof FastColor) {\n this.r = input.r;\n this.g = input.g;\n this.b = input.b;\n this.a = input.a;\n this._h = input._h;\n this._hsl_s = input._hsl_s;\n this._hsv_s = input._hsv_s;\n this._l = input._l;\n this._v = input._v;\n } else if (matchFormat('rgb')) {\n this.r = limitRange(input.r);\n this.g = limitRange(input.g);\n this.b = limitRange(input.b);\n this.a = typeof input.a === 'number' ? limitRange(input.a, 1) : 1;\n } else if (matchFormat('hsl')) {\n this.fromHsl(input);\n } else if (matchFormat('hsv')) {\n this.fromHsv(input);\n } else {\n throw new Error('@ant-design/fast-color: unsupported input ' + JSON.stringify(input));\n }\n }\n\n // ======================= Setter =======================\n\n setR(value) {\n return this._sc('r', value);\n }\n setG(value) {\n return this._sc('g', value);\n }\n setB(value) {\n return this._sc('b', value);\n }\n setA(value) {\n return this._sc('a', value, 1);\n }\n setHue(value) {\n const hsv = this.toHsv();\n hsv.h = value;\n return this._c(hsv);\n }\n\n // ======================= Getter =======================\n /**\n * Returns the perceived luminance of a color, from 0-1.\n * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n */\n getLuminance() {\n function adjustGamma(raw) {\n const val = raw / 255;\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }\n const R = adjustGamma(this.r);\n const G = adjustGamma(this.g);\n const B = adjustGamma(this.b);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n }\n getHue() {\n if (typeof this._h === 'undefined') {\n const delta = this.getMax() - this.getMin();\n if (delta === 0) {\n this._h = 0;\n } else {\n this._h = round(60 * (this.r === this.getMax() ? (this.g - this.b) / delta + (this.g < this.b ? 6 : 0) : this.g === this.getMax() ? (this.b - this.r) / delta + 2 : (this.r - this.g) / delta + 4));\n }\n }\n return this._h;\n }\n\n /**\n * @deprecated should use getHSVSaturation or getHSLSaturation instead\n */\n getSaturation() {\n return this.getHSVSaturation();\n }\n getHSVSaturation() {\n if (typeof this._hsv_s === 'undefined') {\n const delta = this.getMax() - this.getMin();\n if (delta === 0) {\n this._hsv_s = 0;\n } else {\n this._hsv_s = delta / this.getMax();\n }\n }\n return this._hsv_s;\n }\n getHSLSaturation() {\n if (typeof this._hsl_s === 'undefined') {\n const delta = this.getMax() - this.getMin();\n if (delta === 0) {\n this._hsl_s = 0;\n } else {\n const l = this.getLightness();\n this._hsl_s = delta / 255 / (1 - Math.abs(2 * l - 1));\n }\n }\n return this._hsl_s;\n }\n getLightness() {\n if (typeof this._l === 'undefined') {\n this._l = (this.getMax() + this.getMin()) / 510;\n }\n return this._l;\n }\n getValue() {\n if (typeof this._v === 'undefined') {\n this._v = this.getMax() / 255;\n }\n return this._v;\n }\n\n /**\n * Returns the perceived brightness of the color, from 0-255.\n * Note: this is not the b of HSB\n * @see http://www.w3.org/TR/AERT#color-contrast\n */\n getBrightness() {\n if (typeof this._brightness === 'undefined') {\n this._brightness = (this.r * 299 + this.g * 587 + this.b * 114) / 1000;\n }\n return this._brightness;\n }\n\n // ======================== Func ========================\n\n darken(amount = 10) {\n const h = this.getHue();\n const s = this.getSaturation();\n let l = this.getLightness() - amount / 100;\n if (l < 0) {\n l = 0;\n }\n return this._c({\n h,\n s,\n l,\n a: this.a\n });\n }\n lighten(amount = 10) {\n const h = this.getHue();\n const s = this.getSaturation();\n let l = this.getLightness() + amount / 100;\n if (l > 1) {\n l = 1;\n }\n return this._c({\n h,\n s,\n l,\n a: this.a\n });\n }\n\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n mix(input, amount = 50) {\n const color = this._c(input);\n const p = amount / 100;\n const calc = key => (color[key] - this[key]) * p + this[key];\n const rgba = {\n r: round(calc('r')),\n g: round(calc('g')),\n b: round(calc('b')),\n a: round(calc('a') * 100) / 100\n };\n return this._c(rgba);\n }\n\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n */\n tint(amount = 10) {\n return this.mix({\n r: 255,\n g: 255,\n b: 255,\n a: 1\n }, amount);\n }\n\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n */\n shade(amount = 10) {\n return this.mix({\n r: 0,\n g: 0,\n b: 0,\n a: 1\n }, amount);\n }\n onBackground(background) {\n const bg = this._c(background);\n const alpha = this.a + bg.a * (1 - this.a);\n const calc = key => {\n return round((this[key] * this.a + bg[key] * bg.a * (1 - this.a)) / alpha);\n };\n return this._c({\n r: calc('r'),\n g: calc('g'),\n b: calc('b'),\n a: alpha\n });\n }\n\n // ======================= Status =======================\n isDark() {\n return this.getBrightness() < 128;\n }\n isLight() {\n return this.getBrightness() >= 128;\n }\n\n // ======================== MISC ========================\n equals(other) {\n return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;\n }\n clone() {\n return this._c(this);\n }\n\n // ======================= Format =======================\n toHexString() {\n let hex = '#';\n const rHex = (this.r || 0).toString(16);\n hex += rHex.length === 2 ? rHex : '0' + rHex;\n const gHex = (this.g || 0).toString(16);\n hex += gHex.length === 2 ? gHex : '0' + gHex;\n const bHex = (this.b || 0).toString(16);\n hex += bHex.length === 2 ? bHex : '0' + bHex;\n if (typeof this.a === 'number' && this.a >= 0 && this.a < 1) {\n const aHex = round(this.a * 255).toString(16);\n hex += aHex.length === 2 ? aHex : '0' + aHex;\n }\n return hex;\n }\n\n /** CSS support color pattern */\n toHsl() {\n return {\n h: this.getHue(),\n s: this.getHSLSaturation(),\n l: this.getLightness(),\n a: this.a\n };\n }\n\n /** CSS support color pattern */\n toHslString() {\n const h = this.getHue();\n const s = round(this.getHSLSaturation() * 100);\n const l = round(this.getLightness() * 100);\n return this.a !== 1 ? `hsla(${h},${s}%,${l}%,${this.a})` : `hsl(${h},${s}%,${l}%)`;\n }\n\n /** Same as toHsb */\n toHsv() {\n return {\n h: this.getHue(),\n s: this.getHSVSaturation(),\n v: this.getValue(),\n a: this.a\n };\n }\n toRgb() {\n return {\n r: this.r,\n g: this.g,\n b: this.b,\n a: this.a\n };\n }\n toRgbString() {\n return this.a !== 1 ? `rgba(${this.r},${this.g},${this.b},${this.a})` : `rgb(${this.r},${this.g},${this.b})`;\n }\n toString() {\n return this.toRgbString();\n }\n\n // ====================== Privates ======================\n /** Return a new FastColor object with one channel changed */\n _sc(rgb, value, max) {\n const clone = this.clone();\n clone[rgb] = limitRange(value, max);\n return clone;\n }\n _c(input) {\n return new this.constructor(input);\n }\n getMax() {\n if (typeof this._max === 'undefined') {\n this._max = Math.max(this.r, this.g, this.b);\n }\n return this._max;\n }\n getMin() {\n if (typeof this._min === 'undefined') {\n this._min = Math.min(this.r, this.g, this.b);\n }\n return this._min;\n }\n fromHexString(trimStr) {\n const withoutPrefix = trimStr.replace('#', '');\n function connectNum(index1, index2) {\n return parseInt(withoutPrefix[index1] + withoutPrefix[index2 || index1], 16);\n }\n if (withoutPrefix.length < 6) {\n // #rgb or #rgba\n this.r = connectNum(0);\n this.g = connectNum(1);\n this.b = connectNum(2);\n this.a = withoutPrefix[3] ? connectNum(3) / 255 : 1;\n } else {\n // #rrggbb or #rrggbbaa\n this.r = connectNum(0, 1);\n this.g = connectNum(2, 3);\n this.b = connectNum(4, 5);\n this.a = withoutPrefix[6] ? connectNum(6, 7) / 255 : 1;\n }\n }\n fromHsl({\n h: _h,\n s,\n l,\n a\n }) {\n const h = (_h % 360 + 360) % 360;\n this._h = h;\n this._hsl_s = s;\n this._l = l;\n this.a = typeof a === 'number' ? a : 1;\n if (s <= 0) {\n const rgb = round(l * 255);\n this.r = rgb;\n this.g = rgb;\n this.b = rgb;\n return;\n }\n let r = 0,\n g = 0,\n b = 0;\n const huePrime = h / 60;\n const chroma = (1 - Math.abs(2 * l - 1)) * s;\n const secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n if (huePrime >= 0 && huePrime < 1) {\n r = chroma;\n g = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n r = secondComponent;\n g = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n g = chroma;\n b = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n g = secondComponent;\n b = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n r = secondComponent;\n b = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n r = chroma;\n b = secondComponent;\n }\n const lightnessModification = l - chroma / 2;\n this.r = round((r + lightnessModification) * 255);\n this.g = round((g + lightnessModification) * 255);\n this.b = round((b + lightnessModification) * 255);\n }\n fromHsv({\n h: _h,\n s,\n v,\n a\n }) {\n const h = (_h % 360 + 360) % 360;\n this._h = h;\n this._hsv_s = s;\n this._v = v;\n this.a = typeof a === 'number' ? a : 1;\n const vv = round(v * 255);\n this.r = vv;\n this.g = vv;\n this.b = vv;\n if (s <= 0) {\n return;\n }\n const hh = h / 60;\n const i = Math.floor(hh);\n const ff = hh - i;\n const p = round(v * (1.0 - s) * 255);\n const q = round(v * (1.0 - s * ff) * 255);\n const t = round(v * (1.0 - s * (1.0 - ff)) * 255);\n switch (i) {\n case 0:\n this.g = t;\n this.b = p;\n break;\n case 1:\n this.r = q;\n this.b = p;\n break;\n case 2:\n this.r = p;\n this.b = t;\n break;\n case 3:\n this.r = p;\n this.g = q;\n break;\n case 4:\n this.r = t;\n this.g = p;\n break;\n case 5:\n default:\n this.g = p;\n this.b = q;\n break;\n }\n }\n fromHsvString(trimStr) {\n const cells = splitColorStr(trimStr, parseHSVorHSL);\n this.fromHsv({\n h: cells[0],\n s: cells[1],\n v: cells[2],\n a: cells[3]\n });\n }\n fromHslString(trimStr) {\n const cells = splitColorStr(trimStr, parseHSVorHSL);\n this.fromHsl({\n h: cells[0],\n s: cells[1],\n l: cells[2],\n a: cells[3]\n });\n }\n fromRgbString(trimStr) {\n const cells = splitColorStr(trimStr, (num, txt) =>\n // Convert percentage to number. e.g. 50% -> 128\n txt.includes('%') ? round(num / 100 * 255) : num);\n this.r = cells[0];\n this.g = cells[1];\n this.b = cells[2];\n this.a = cells[3];\n }\n}","import { FastColor } from '@ant-design/fast-color';\nconst hueStep = 2; // 色相阶梯\nconst saturationStep = 0.16; // 饱和度阶梯,浅色部分\nconst saturationStep2 = 0.05; // 饱和度阶梯,深色部分\nconst brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\nconst brightnessStep2 = 0.15; // 亮度阶梯,深色部分\nconst lightColorCount = 5; // 浅色数量,主色上\nconst darkColorCount = 4; // 深色数量,主色下\n\n// 暗色主题颜色映射关系表\nconst darkColorMap = [{\n index: 7,\n amount: 15\n}, {\n index: 6,\n amount: 25\n}, {\n index: 5,\n amount: 30\n}, {\n index: 5,\n amount: 45\n}, {\n index: 5,\n amount: 65\n}, {\n index: 5,\n amount: 85\n}, {\n index: 4,\n amount: 90\n}, {\n index: 3,\n amount: 95\n}, {\n index: 2,\n amount: 97\n}, {\n index: 1,\n amount: 98\n}];\nfunction getHue(hsv, i, light) {\n let hue;\n // 根据色相不同,色相转向不同\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n return hue;\n}\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n let saturation;\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n }\n // 边界值修正\n if (saturation > 1) {\n saturation = 1;\n }\n // 第一格的 s 限制在 0.06-0.1 之间\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n return Math.round(saturation * 100) / 100;\n}\nfunction getValue(hsv, i, light) {\n let value;\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n // Clamp value between 0 and 1\n value = Math.max(0, Math.min(1, value));\n return Math.round(value * 100) / 100;\n}\nexport default function generate(color, opts = {}) {\n const patterns = [];\n const pColor = new FastColor(color);\n const hsv = pColor.toHsv();\n for (let i = lightColorCount; i > 0; i -= 1) {\n const c = new FastColor({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n });\n patterns.push(c);\n }\n patterns.push(pColor);\n for (let i = 1; i <= darkColorCount; i += 1) {\n const c = new FastColor({\n h: getHue(hsv, i),\n s: getSaturation(hsv, i),\n v: getValue(hsv, i)\n });\n patterns.push(c);\n }\n\n // dark theme patterns\n if (opts.theme === 'dark') {\n return darkColorMap.map(({\n index,\n amount\n }) => new FastColor(opts.backgroundColor || '#141414').mix(patterns[index], amount).toHexString());\n }\n return patterns.map(c => c.toHexString());\n}","// Generated by script. Do NOT modify!\n\nexport const presetPrimaryColors = {\n \"red\": \"#F5222D\",\n \"volcano\": \"#FA541C\",\n \"orange\": \"#FA8C16\",\n \"gold\": \"#FAAD14\",\n \"yellow\": \"#FADB14\",\n \"lime\": \"#A0D911\",\n \"green\": \"#52C41A\",\n \"cyan\": \"#13C2C2\",\n \"blue\": \"#1677FF\",\n \"geekblue\": \"#2F54EB\",\n \"purple\": \"#722ED1\",\n \"magenta\": \"#EB2F96\",\n \"grey\": \"#666666\"\n};\nexport const red = [\"#fff1f0\", \"#ffccc7\", \"#ffa39e\", \"#ff7875\", \"#ff4d4f\", \"#f5222d\", \"#cf1322\", \"#a8071a\", \"#820014\", \"#5c0011\"];\nred.primary = red[5];\nexport const volcano = [\"#fff2e8\", \"#ffd8bf\", \"#ffbb96\", \"#ff9c6e\", \"#ff7a45\", \"#fa541c\", \"#d4380d\", \"#ad2102\", \"#871400\", \"#610b00\"];\nvolcano.primary = volcano[5];\nexport const orange = [\"#fff7e6\", \"#ffe7ba\", \"#ffd591\", \"#ffc069\", \"#ffa940\", \"#fa8c16\", \"#d46b08\", \"#ad4e00\", \"#873800\", \"#612500\"];\norange.primary = orange[5];\nexport const gold = [\"#fffbe6\", \"#fff1b8\", \"#ffe58f\", \"#ffd666\", \"#ffc53d\", \"#faad14\", \"#d48806\", \"#ad6800\", \"#874d00\", \"#613400\"];\ngold.primary = gold[5];\nexport const yellow = [\"#feffe6\", \"#ffffb8\", \"#fffb8f\", \"#fff566\", \"#ffec3d\", \"#fadb14\", \"#d4b106\", \"#ad8b00\", \"#876800\", \"#614700\"];\nyellow.primary = yellow[5];\nexport const lime = [\"#fcffe6\", \"#f4ffb8\", \"#eaff8f\", \"#d3f261\", \"#bae637\", \"#a0d911\", \"#7cb305\", \"#5b8c00\", \"#3f6600\", \"#254000\"];\nlime.primary = lime[5];\nexport const green = [\"#f6ffed\", \"#d9f7be\", \"#b7eb8f\", \"#95de64\", \"#73d13d\", \"#52c41a\", \"#389e0d\", \"#237804\", \"#135200\", \"#092b00\"];\ngreen.primary = green[5];\nexport const cyan = [\"#e6fffb\", \"#b5f5ec\", \"#87e8de\", \"#5cdbd3\", \"#36cfc9\", \"#13c2c2\", \"#08979c\", \"#006d75\", \"#00474f\", \"#002329\"];\ncyan.primary = cyan[5];\nexport const blue = [\"#e6f4ff\", \"#bae0ff\", \"#91caff\", \"#69b1ff\", \"#4096ff\", \"#1677ff\", \"#0958d9\", \"#003eb3\", \"#002c8c\", \"#001d66\"];\nblue.primary = blue[5];\nexport const geekblue = [\"#f0f5ff\", \"#d6e4ff\", \"#adc6ff\", \"#85a5ff\", \"#597ef7\", \"#2f54eb\", \"#1d39c4\", \"#10239e\", \"#061178\", \"#030852\"];\ngeekblue.primary = geekblue[5];\nexport const purple = [\"#f9f0ff\", \"#efdbff\", \"#d3adf7\", \"#b37feb\", \"#9254de\", \"#722ed1\", \"#531dab\", \"#391085\", \"#22075e\", \"#120338\"];\npurple.primary = purple[5];\nexport const magenta = [\"#fff0f6\", \"#ffd6e7\", \"#ffadd2\", \"#ff85c0\", \"#f759ab\", \"#eb2f96\", \"#c41d7f\", \"#9e1068\", \"#780650\", \"#520339\"];\nmagenta.primary = magenta[5];\nexport const grey = [\"#a6a6a6\", \"#999999\", \"#8c8c8c\", \"#808080\", \"#737373\", \"#666666\", \"#404040\", \"#1a1a1a\", \"#000000\", \"#000000\"];\ngrey.primary = grey[5];\nexport const gray = grey;\nexport const presetPalettes = {\n red,\n volcano,\n orange,\n gold,\n yellow,\n lime,\n green,\n cyan,\n blue,\n geekblue,\n purple,\n magenta,\n grey\n};\nexport const redDark = [\"#2a1215\", \"#431418\", \"#58181c\", \"#791a1f\", \"#a61d24\", \"#d32029\", \"#e84749\", \"#f37370\", \"#f89f9a\", \"#fac8c3\"];\nredDark.primary = redDark[5];\nexport const volcanoDark = [\"#2b1611\", \"#441d12\", \"#592716\", \"#7c3118\", \"#aa3e19\", \"#d84a1b\", \"#e87040\", \"#f3956a\", \"#f8b692\", \"#fad4bc\"];\nvolcanoDark.primary = volcanoDark[5];\nexport const orangeDark = [\"#2b1d11\", \"#442a11\", \"#593815\", \"#7c4a15\", \"#aa6215\", \"#d87a16\", \"#e89a3c\", \"#f3b765\", \"#f8cf8d\", \"#fae3b7\"];\norangeDark.primary = orangeDark[5];\nexport const goldDark = [\"#2b2111\", \"#443111\", \"#594214\", \"#7c5914\", \"#aa7714\", \"#d89614\", \"#e8b339\", \"#f3cc62\", \"#f8df8b\", \"#faedb5\"];\ngoldDark.primary = goldDark[5];\nexport const yellowDark = [\"#2b2611\", \"#443b11\", \"#595014\", \"#7c6e14\", \"#aa9514\", \"#d8bd14\", \"#e8d639\", \"#f3ea62\", \"#f8f48b\", \"#fafab5\"];\nyellowDark.primary = yellowDark[5];\nexport const limeDark = [\"#1f2611\", \"#2e3c10\", \"#3e4f13\", \"#536d13\", \"#6f9412\", \"#8bbb11\", \"#a9d134\", \"#c9e75d\", \"#e4f88b\", \"#f0fab5\"];\nlimeDark.primary = limeDark[5];\nexport const greenDark = [\"#162312\", \"#1d3712\", \"#274916\", \"#306317\", \"#3c8618\", \"#49aa19\", \"#6abe39\", \"#8fd460\", \"#b2e58b\", \"#d5f2bb\"];\ngreenDark.primary = greenDark[5];\nexport const cyanDark = [\"#112123\", \"#113536\", \"#144848\", \"#146262\", \"#138585\", \"#13a8a8\", \"#33bcb7\", \"#58d1c9\", \"#84e2d8\", \"#b2f1e8\"];\ncyanDark.primary = cyanDark[5];\nexport const blueDark = [\"#111a2c\", \"#112545\", \"#15325b\", \"#15417e\", \"#1554ad\", \"#1668dc\", \"#3c89e8\", \"#65a9f3\", \"#8dc5f8\", \"#b7dcfa\"];\nblueDark.primary = blueDark[5];\nexport const geekblueDark = [\"#131629\", \"#161d40\", \"#1c2755\", \"#203175\", \"#263ea0\", \"#2b4acb\", \"#5273e0\", \"#7f9ef3\", \"#a8c1f8\", \"#d2e0fa\"];\ngeekblueDark.primary = geekblueDark[5];\nexport const purpleDark = [\"#1a1325\", \"#24163a\", \"#301c4d\", \"#3e2069\", \"#51258f\", \"#642ab5\", \"#854eca\", \"#ab7ae0\", \"#cda8f0\", \"#ebd7fa\"];\npurpleDark.primary = purpleDark[5];\nexport const magentaDark = [\"#291321\", \"#40162f\", \"#551c3b\", \"#75204f\", \"#a02669\", \"#cb2b83\", \"#e0529c\", \"#f37fb7\", \"#f8a8cc\", \"#fad2e3\"];\nmagentaDark.primary = magentaDark[5];\nexport const greyDark = [\"#151515\", \"#1f1f1f\", \"#2d2d2d\", \"#393939\", \"#494949\", \"#5a5a5a\", \"#6a6a6a\", \"#7b7b7b\", \"#888888\", \"#969696\"];\ngreyDark.primary = greyDark[5];\nexport const presetDarkPalettes = {\n red: redDark,\n volcano: volcanoDark,\n orange: orangeDark,\n gold: goldDark,\n yellow: yellowDark,\n lime: limeDark,\n green: greenDark,\n cyan: cyanDark,\n blue: blueDark,\n geekblue: geekblueDark,\n purple: purpleDark,\n magenta: magentaDark,\n grey: greyDark\n};","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n if (!root) {\n return false;\n }\n\n // Use native if support\n if (root.contains) {\n return root.contains(n);\n }\n\n // `document.contains` not support with IE11\n let node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}","import canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nconst APPEND_ORDER = 'data-rc-order';\nconst APPEND_PRIORITY = 'data-rc-priority';\nconst MARK_KEY = `rc-util-key`;\nconst containerCache = new Map();\nfunction getMark({\n mark\n} = {}) {\n if (mark) {\n return mark.startsWith('data-') ? mark : `data-${mark}`;\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n const head = document.querySelector('head');\n return head || document.body;\n}\nfunction getOrder(prepend) {\n if (prepend === 'queue') {\n return 'prependQueue';\n }\n return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n return Array.from((containerCache.get(container) || container).children).filter(node => node.tagName === 'STYLE');\n}\nexport function injectCSS(css, option = {}) {\n if (!canUseDom()) {\n return null;\n }\n const {\n csp,\n prepend,\n priority = 0\n } = option;\n const mergedOrder = getOrder(prepend);\n const isPrependQueue = mergedOrder === 'prependQueue';\n const styleNode = document.createElement('style');\n styleNode.setAttribute(APPEND_ORDER, mergedOrder);\n if (isPrependQueue && priority) {\n styleNode.setAttribute(APPEND_PRIORITY, `${priority}`);\n }\n if (csp?.nonce) {\n styleNode.nonce = csp?.nonce;\n }\n styleNode.innerHTML = css;\n const container = getContainer(option);\n const {\n firstChild\n } = container;\n if (prepend) {\n // If is queue `prepend`, it will prepend first style and then append rest style\n if (isPrependQueue) {\n const existStyle = (option.styles || findStyles(container)).filter(node => {\n // Ignore style which not injected by rc-util with prepend\n if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) {\n return false;\n }\n\n // Ignore style which priority less then new style\n const nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);\n return priority >= nodePriority;\n });\n if (existStyle.length) {\n container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n return styleNode;\n }\n }\n\n // Use `insertBefore` as `prepend`\n container.insertBefore(styleNode, firstChild);\n } else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nfunction findExistNode(key, option = {}) {\n let {\n styles\n } = option;\n styles ||= findStyles(getContainer(option));\n return styles.find(node => node.getAttribute(getMark(option)) === key);\n}\nexport function removeCSS(key, option = {}) {\n const existNode = findExistNode(key, option);\n if (existNode) {\n const container = getContainer(option);\n container.removeChild(existNode);\n }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n const cachedRealContainer = containerCache.get(container);\n\n // Find real container when not cached or cached container removed\n if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n const placeholderStyle = injectCSS('', option);\n const {\n parentNode\n } = placeholderStyle;\n containerCache.set(container, parentNode);\n container.removeChild(placeholderStyle);\n }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n containerCache.clear();\n}\nexport function updateCSS(css, key, originOption = {}) {\n const container = getContainer(originOption);\n const styles = findStyles(container);\n const option = {\n ...originOption,\n styles\n };\n\n // Sync real parent\n syncRealContainer(container, option);\n const existNode = findExistNode(key, option);\n if (existNode) {\n if (option.csp?.nonce && existNode.nonce !== option.csp?.nonce) {\n existNode.nonce = option.csp?.nonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n const newNode = injectCSS(css, option);\n newNode.setAttribute(getMark(option), key);\n return newNode;\n}","function getRoot(ele) {\n return ele?.getRootNode?.();\n}\n\n/**\n * Check if is in shadowRoot\n */\nexport function inShadow(ele) {\n return getRoot(ele) instanceof ShadowRoot;\n}\n\n/**\n * Return shadowRoot if possible\n */\nexport function getShadowRoot(ele) {\n return inShadow(ele) ? getRoot(ele) : null;\n}","/* eslint-disable no-console */\nlet warned = {};\nconst preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport const preMessage = fn => {\n preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n const finalMessage = preWarningFns.reduce((msg, preMessageFn) => preMessageFn(msg ?? '', 'warning'), message);\n if (finalMessage) {\n console.error(`Warning: ${finalMessage}`);\n }\n }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n const finalMessage = preWarningFns.reduce((msg, preMessageFn) => preMessageFn(msg ?? '', 'note'), message);\n if (finalMessage) {\n console.warn(`Note: ${finalMessage}`);\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","import { generate as generateColor } from '@ant-design/colors';\nimport { updateCSS } from \"@rc-component/util/es/Dom/dynamicCSS\";\nimport { getShadowRoot } from \"@rc-component/util/es/Dom/shadow\";\nimport { warningOnce } from \"@rc-component/util/es/warning\";\nimport React, { useContext, useEffect } from 'react';\nimport IconContext from \"./components/Context\";\nfunction camelCase(input) {\n return input.replace(/-(.)/g, (match, g) => g.toUpperCase());\n}\nexport function warning(valid, message) {\n warningOnce(valid, `[@ant-design/icons] ${message}`);\n}\nexport function isIconDefinition(target) {\n return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs(attrs = {}) {\n return Object.keys(attrs).reduce((acc, key) => {\n const val = attrs[key];\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc.class;\n break;\n default:\n delete acc[key];\n acc[camelCase(key)] = val;\n }\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return /*#__PURE__*/React.createElement(node.tag, {\n key,\n ...normalizeAttrs(node.attrs)\n }, (node.children || []).map((child, index) => generate(child, `${key}-${node.tag}-${index}`)));\n }\n return /*#__PURE__*/React.createElement(node.tag, {\n key,\n ...normalizeAttrs(node.attrs),\n ...rootProps\n }, (node.children || []).map((child, index) => generate(child, `${key}-${node.tag}-${index}`)));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n}\n\n// These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\nexport const svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport const iconStyles = `\n.anticon {\n display: inline-flex;\n align-items: center;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n vertical-align: inherit;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin {\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n`;\nexport const useInsertStyles = eleRef => {\n const {\n csp,\n prefixCls,\n layer\n } = useContext(IconContext);\n let mergedStyleStr = iconStyles;\n if (prefixCls) {\n mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);\n }\n if (layer) {\n mergedStyleStr = `@layer ${layer} {\\n${mergedStyleStr}\\n}`;\n }\n useEffect(() => {\n const ele = eleRef.current;\n const shadowRoot = getShadowRoot(ele);\n updateCSS(mergedStyleStr, '@ant-design-icons', {\n prepend: !layer,\n csp,\n attachTo: shadowRoot\n });\n }, []);\n};","import * as React from 'react';\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from \"../utils\";\nconst twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\nfunction setTwoToneColors({\n primaryColor,\n secondaryColor\n}) {\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\nfunction getTwoToneColors() {\n return {\n ...twoToneColorPalette\n };\n}\nconst IconBase = props => {\n const {\n icon,\n className,\n onClick,\n style,\n primaryColor,\n secondaryColor,\n ...restProps\n } = props;\n const svgRef = React.useRef(null);\n let colors = twoToneColorPalette;\n if (primaryColor) {\n colors = {\n primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n useInsertStyles(svgRef);\n warning(isIconDefinition(icon), `icon should be icon definiton, but got ${icon}`);\n if (!isIconDefinition(icon)) {\n return null;\n }\n let target = icon;\n if (target && typeof target.icon === 'function') {\n target = {\n ...target,\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n };\n }\n return generate(target.icon, `svg-${target.name}`, {\n className,\n onClick,\n style,\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n ...restProps,\n ref: svgRef\n });\n};\nIconBase.displayName = 'IconReact';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","import ReactIcon from \"./IconBase\";\nimport { normalizeTwoToneColors } from \"../utils\";\nexport function setTwoToneColor(twoToneColor) {\n const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);\n return ReactIcon.setTwoToneColors({\n primaryColor,\n secondaryColor\n });\n}\nexport function getTwoToneColor() {\n const colors = ReactIcon.getTwoToneColors();\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n return [colors.primaryColor, colors.secondaryColor];\n}","'use client';\n\nfunction _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); }\nimport * as React from 'react';\nimport { clsx } from 'clsx';\nimport { blue } from '@ant-design/colors';\nimport Context from \"./Context\";\nimport ReactIcon from \"./IconBase\";\nimport { getTwoToneColor, setTwoToneColor } from \"./twoTonePrimaryColor\";\nimport { normalizeTwoToneColors } from \"../utils\";\n// Initial setting\n// should move it to antd main repo?\nsetTwoToneColor(blue.primary);\n\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720\n\nconst Icon = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n // affect outter <i>...</i>\n className,\n // affect inner <svg>...</svg>\n icon,\n spin,\n rotate,\n tabIndex,\n onClick,\n // other\n twoToneColor,\n ...restProps\n } = props;\n const {\n prefixCls = 'anticon',\n rootClassName\n } = React.useContext(Context);\n const classString = clsx(rootClassName, prefixCls, {\n [`${prefixCls}-${icon.name}`]: !!icon.name,\n [`${prefixCls}-spin`]: !!spin || icon.name === 'loading'\n }, className);\n let iconTabIndex = tabIndex;\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n }\n const svgStyle = rotate ? {\n msTransform: `rotate(${rotate}deg)`,\n transform: `rotate(${rotate}deg)`\n } : undefined;\n const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n role: \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n ref: ref,\n tabIndex: iconTabIndex,\n onClick: onClick,\n className: classString\n }), /*#__PURE__*/React.createElement(ReactIcon, {\n icon: icon,\n primaryColor: primaryColor,\n secondaryColor: secondaryColor,\n style: svgStyle\n }));\n});\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nif (process.env.NODE_ENV !== 'production') {\n Icon.displayName = 'AntdIcon';\n}\nexport default Icon;","// This icon file is generated automatically.\nvar BookOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0022.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z\" } }] }, \"name\": \"book\", \"theme\": \"outlined\" };\nexport default BookOutlined;\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 BookOutlinedSvg from \"@ant-design/icons-svg/es/asn/BookOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst BookOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: BookOutlinedSvg\n}));\n\n/**![book](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTgzMiA2NEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNjAgNzJoOTZ2MjA5LjlMNjIxLjUgMzEyIDU3MiAzNDcuNFYxMzZ6bTIyMCA3NTJIMjMyVjEzNmgyODB2Mjk2LjljMCAzLjMgMSA2LjYgMyA5LjNhMTUuOSAxNS45IDAgMDAyMi4zIDMuN2w4My44LTU5LjkgODEuNCA1OS40YzIuNyAyIDYgMy4xIDkuNCAzLjEgOC44IDAgMTYtNy4yIDE2LTE2VjEzNmg2NHY3NTJ6IiAvPjwvc3ZnPg==) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(BookOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'BookOutlined';\n}\nexport default RefIcon;","// 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 DownloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"download\", \"theme\": \"outlined\" };\nexport default DownloadOutlined;\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 DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst DownloadOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownloadOutlinedSvg\n}));\n\n/**![download](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUwNS43IDY2MWE4IDggMCAwMDEyLjYgMGwxMTItMTQxLjdjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc0LjFWMTY4YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYzMzguM0g0MDBjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45bDExMiAxNDEuOHpNODc4IDYyNmgtNjBjLTQuNCAwLTggMy42LTggOHYxNTRIMjE0VjYzNGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTk4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY4NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2MzRjMC00LjQtMy42LTgtOC04eiIgLz48L3N2Zz4=) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(DownloadOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DownloadOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar LinkOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M574 665.4a8.03 8.03 0 00-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 00-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 000 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 000 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 00-11.3 0L372.3 598.7a8.03 8.03 0 000 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z\" } }] }, \"name\": \"link\", \"theme\": \"outlined\" };\nexport default LinkOutlined;\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 LinkOutlinedSvg from \"@ant-design/icons-svg/es/asn/LinkOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst LinkOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LinkOutlinedSvg\n}));\n\n/**![link](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTU3NCA2NjUuNGE4LjAzIDguMDMgMCAwMC0xMS4zIDBMNDQ2LjUgNzgxLjZjLTUzLjggNTMuOC0xNDQuNiA1OS41LTIwNCAwLTU5LjUtNTkuNS01My44LTE1MC4yIDAtMjA0bDExNi4yLTExNi4yYzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTM5LjgtMzkuOGE4LjAzIDguMDMgMCAwMC0xMS4zIDBMMTkxLjQgNTI2LjVjLTg0LjYgODQuNi04NC42IDIyMS41IDAgMzA2czIyMS41IDg0LjYgMzA2IDBsMTE2LjItMTE2LjJjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM0w1NzQgNjY1LjR6bTI1OC42LTQ3NGMtODQuNi04NC42LTIyMS41LTg0LjYtMzA2IDBMNDEwLjMgMzA3LjZhOC4wMyA4LjAzIDAgMDAwIDExLjNsMzkuNyAzOS43YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTE2LjItMTE2LjJjNTMuOC01My44IDE0NC42LTU5LjUgMjA0IDAgNTkuNSA1OS41IDUzLjggMTUwLjIgMCAyMDRMNjY1LjMgNTYyLjZhOC4wMyA4LjAzIDAgMDAwIDExLjNsMzkuOCAzOS44YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTE2LjItMTE2LjJjODQuNS04NC42IDg0LjUtMjIxLjUgMC0zMDYuMXpNNjEwLjEgMzcyLjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwTDM3Mi4zIDU5OC43YTguMDMgOC4wMyAwIDAwMCAxMS4zbDM5LjYgMzkuNmMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDIyNi40LTIyNi40YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTM5LjUtMzkuNnoiIC8+PC9zdmc+) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(LinkOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'LinkOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar MessageFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.3 338.4a447.57 447.57 0 00-96.1-143.3 443.09 443.09 0 00-143-96.3A443.91 443.91 0 00512 64h-2c-60.5.3-119 12.3-174.1 35.9a444.08 444.08 0 00-141.7 96.5 445 445 0 00-95 142.8A449.89 449.89 0 0065 514.1c.3 69.4 16.9 138.3 47.9 199.9v152c0 25.4 20.6 46 45.9 46h151.8a447.72 447.72 0 00199.5 48h2.1c59.8 0 117.7-11.6 172.3-34.3A443.2 443.2 0 00827 830.5c41.2-40.9 73.6-88.7 96.3-142 23.5-55.2 35.5-113.9 35.8-174.5.2-60.9-11.6-120-34.8-175.6zM312.4 560c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.4 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48z\" } }] }, \"name\": \"message\", \"theme\": \"filled\" };\nexport default MessageFilled;\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 MessageFilledSvg from \"@ant-design/icons-svg/es/asn/MessageFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst MessageFilled = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: MessageFilledSvg\n}));\n\n/**![message](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNC4zIDMzOC40YTQ0Ny41NyA0NDcuNTcgMCAwMC05Ni4xLTE0My4zIDQ0My4wOSA0NDMuMDkgMCAwMC0xNDMtOTYuM0E0NDMuOTEgNDQzLjkxIDAgMDA1MTIgNjRoLTJjLTYwLjUuMy0xMTkgMTIuMy0xNzQuMSAzNS45YTQ0NC4wOCA0NDQuMDggMCAwMC0xNDEuNyA5Ni41IDQ0NSA0NDUgMCAwMC05NSAxNDIuOEE0NDkuODkgNDQ5Ljg5IDAgMDA2NSA1MTQuMWMuMyA2OS40IDE2LjkgMTM4LjMgNDcuOSAxOTkuOXYxNTJjMCAyNS40IDIwLjYgNDYgNDUuOSA0NmgxNTEuOGE0NDcuNzIgNDQ3LjcyIDAgMDAxOTkuNSA0OGgyLjFjNTkuOCAwIDExNy43LTExLjYgMTcyLjMtMzQuM0E0NDMuMiA0NDMuMiAwIDAwODI3IDgzMC41YzQxLjItNDAuOSA3My42LTg4LjcgOTYuMy0xNDIgMjMuNS01NS4yIDM1LjUtMTEzLjkgMzUuOC0xNzQuNS4yLTYwLjktMTEuNi0xMjAtMzQuOC0xNzUuNnpNMzEyLjQgNTYwYy0yNi40IDAtNDcuOS0yMS41LTQ3LjktNDhzMjEuNS00OCA0Ny45LTQ4IDQ3LjkgMjEuNSA0Ny45IDQ4LTIxLjQgNDgtNDcuOSA0OHptMTk5LjYgMGMtMjYuNCAwLTQ3LjktMjEuNS00Ny45LTQ4czIxLjUtNDggNDcuOS00OCA0Ny45IDIxLjUgNDcuOSA0OC0yMS41IDQ4LTQ3LjkgNDh6bTE5OS42IDBjLTI2LjQgMC00Ny45LTIxLjUtNDcuOS00OHMyMS41LTQ4IDQ3LjktNDggNDcuOSAyMS41IDQ3LjkgNDgtMjEuNSA0OC00Ny45IDQ4eiIgLz48L3N2Zz4=) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(MessageFilled);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'MessageFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar QuestionCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\" } }] }, \"name\": \"question-circle\", \"theme\": \"outlined\" };\nexport default QuestionCircleOutlined;\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 QuestionCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/QuestionCircleOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst QuestionCircleOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: QuestionCircleOutlinedSvg\n}));\n\n/**![question-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnoiIC8+PHBhdGggZD0iTTYyMy42IDMxNi43QzU5My42IDI5MC40IDU1NCAyNzYgNTEyIDI3NnMtODEuNiAxNC41LTExMS42IDQwLjdDMzY5LjIgMzQ0IDM1MiAzODAuNyAzNTIgNDIwdjcuNmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjQyMGMwLTQ0LjEgNDMuMS04MCA5Ni04MHM5NiAzNS45IDk2IDgwYzAgMzEuMS0yMiA1OS42LTU2LjEgNzIuNy0yMS4yIDguMS0zOS4yIDIyLjMtNTIuMSA0MC45LTEzLjEgMTktMTkuOSA0MS44LTE5LjkgNjQuOVY2MjBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtMjIuN2E0OC4zIDQ4LjMgMCAwMTMwLjktNDQuOGM1OS0yMi43IDk3LjEtNzQuNyA5Ny4xLTEzMi41LjEtMzkuMy0xNy4xLTc2LTQ4LjMtMTAzLjN6TTQ3MiA3MzJhNDAgNDAgMCAxMDgwIDAgNDAgNDAgMCAxMC04MCAweiIgLz48L3N2Zz4=) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(QuestionCircleOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'QuestionCircleOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar TagOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 000 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\" } }] }, \"name\": \"tag\", \"theme\": \"outlined\" };\nexport default TagOutlined;\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 TagOutlinedSvg from \"@ant-design/icons-svg/es/asn/TagOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst TagOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: TagOutlinedSvg\n}));\n\n/**![tag](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkzOCA0NTguOGwtMjkuNi0zMTIuNmMtMS41LTE2LjItMTQuNC0yOS0zMC42LTMwLjZMNTY1LjIgODZoLS40Yy0zLjIgMC01LjcgMS03LjYgMi45TDg4LjkgNTU3LjJhOS45NiA5Ljk2IDAgMDAwIDE0LjFsMzYzLjggMzYzLjhjMS45IDEuOSA0LjQgMi45IDcuMSAyLjlzNS4yLTEgNy4xLTIuOWw0NjguMy00NjguM2MyLTIuMSAzLTUgMi44LTh6TTQ1OS43IDgzNC43TDE4OS4zIDU2NC4zIDU4OSAxNjQuNiA4MzYgMTg4bDIzLjQgMjQ3LTM5OS43IDM5OS43ek02ODAgMjU2Yy00OC41IDAtODggMzkuNS04OCA4OHMzOS41IDg4IDg4IDg4IDg4LTM5LjUgODgtODgtMzkuNS04OC04OC04OHptMCAxMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyeiIgLz48L3N2Zz4=) */\nconst RefIcon = /*#__PURE__*/React.forwardRef(TagOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'TagOutlined';\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;","/**\n * This source code partially taken from here https://github.com/leanjscom/react-width\n * And idea is the same as here https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\n * More details here https://www.hawatel.com/blog/handle-window-resize-in-react/\n * The reason is that window.innerWidth works incorrect initially returning wrong value on first detection\n * That is why I took this solution https://stackoverflow.com/a/26191207/2185053\n */\n\nimport React from 'react';\n\nexport const EXTRA_LARGE = 4;\nexport const LARGE = 3;\nexport const MEDIUM = 2;\nexport const SMALL = 1;\n\nexport class Width extends React.Component {\n static EXTRA_LARGE = EXTRA_LARGE;\n static LARGE = LARGE;\n static MEDIUM = MEDIUM;\n static SMALL = SMALL;\n\n // Like a Bootstrap Grid Layout\n static EXTRA_LARGE_WIDTH = 1200;\n static LARGE_WIDTH = 992;\n static MEDIUM_WIDTH = 768;\n // static SMALL_WIDTH = 576;\n\n constructor(props) {\n super(props);\n\n this.deferTime = null;\n this.resizeInterval = 166;\n this.state = { width: null };\n }\n\n componentDidMount() {\n if (window) {\n window.addEventListener('resize', this.handleResize);\n }\n this.updateWidth();\n }\n\n componentWillUnmount() {\n if (window) {\n window.removeEventListener('resize', this.handleResize);\n }\n clearTimeout(this.deferTime);\n }\n\n handleResize = () => {\n clearTimeout(this.deferTime);\n this.deferTime = setTimeout(\n () => {\n this.updateWidth();\n },\n this.resizeInterval\n );\n };\n\n updateWidth = () => {\n let innerWidth = this.getViewportWidth();\n let width;\n\n if (innerWidth >= Width.EXTRA_LARGE_WIDTH) {\n width = Width.EXTRA_LARGE;\n } else if (innerWidth >= Width.LARGE_WIDTH) {\n width = Width.LARGE;\n } else if (innerWidth >= Width.MEDIUM_WIDTH) {\n width = Width.MEDIUM;\n } else {\n width = Width.SMALL;\n }\n\n if (width !== this.state.width) {\n this.setState({\n width\n });\n }\n };\n\n getViewportWidth() {\n return window.innerWidth && document.documentElement.clientWidth ?\n Math.min(window.innerWidth, document.documentElement.clientWidth) :\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.querySelector('body').clientWidth;\n }\n\n render() {\n return this.props.children(this.state.width);\n }\n}\n\nconst withWidth = () => WrappedComponent => {\n class WithWidth extends Width {\n render() {\n return <WrappedComponent {...this.props} width={this.state.width}/>;\n }\n }\n\n return WithWidth;\n};\n\nexport default withWidth;","import React from 'react';\nimport injectSheet from 'react-jss';\nimport { Row, Col } from 'antd';\n\n\n// Wrappers\nimport withWidth, { MEDIUM } from '../components/Width';\n\nconst styles = {\n formItem: {\n paddingBottom: 0,\n width: '100%',\n clear: 'both'\n },\n label: {\n display: 'block',\n color: 'rgba(0, 0, 0, 0.85)'\n },\n content: {\n wordBreak: 'break-word',\n marginBottom: 0\n },\n noContent: {\n wordBreak: 'break-word',\n color: '#bbb',\n marginBottom: 0\n },\n contentCol: {\n wordBreak: 'break-word'\n },\n smallMargin: {\n marginBottom: 5,\n marginTop: 5\n },\n mediumMargin: {\n marginBottom: 10,\n marginTop: 10\n }\n};\n\n/**\n * Component responsible for data display in a read mode\n * @param size - how dense should the layout be. options: 'small', 'medium' (default).\n * @param classes - passed from injectSheet wrapper, CSS styles from styles object above\n * @param children - wrapped content\n * @param width - passed from withWidth wrapper, data about current page size\n * @returns {*}\n * @constructor\n */\nconst BorderedListItem = ({ classes, children, size }) => {\n const getValue = () => {\n let value;\n\n if (Array.isArray(children) && children.length > 0) {\n value = children.map((item, i) => (<span className={classes.content} key={i}>{item}</span>));\n } else if (!Array.isArray(children) && typeof children !== 'undefined') {\n value = <span className={classes.content}>{children}</span>;\n }\n\n return value;\n };\n\n\n const marginSize = size === 'medium' ? classes.mediumMargin : classes.smallMargin;\n return (\n <Row className={classes.formItem}>\n \n <Col span={24} className={marginSize}>\n {getValue()}\n </Col>\n </Row>\n );\n};\n\n\n\nexport default withWidth()(injectSheet(styles)(BorderedListItem));\n","import React from \"react\";\nimport { BookOutlined } from \"@ant-design/icons\";\nimport { Popover, Spin } from \"antd\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport _ from \"lodash\";\nimport ErrorMsg from \"../components/ErrorMsg\";\n\nclass ReferencePopover extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n reference: [],\n loading: false,\n error: null,\n };\n }\n\n getData = () => {\n const { referenceId, datasetKey, references } = this.props;\n if (referenceId) {\n const refIds = !_.isArray(referenceId) ? [referenceId] : referenceId;\n const reference = [];\n this.setState({ loading: true });\n Promise.allSettled(\n refIds.map((id) => _.get(references, id) ? Promise.resolve(reference.push(references[id])) :\n\n axios(\n `${config.dataApi}dataset/${datasetKey}/reference/${id}`\n ).then((res) => reference.push(res.data)).catch(err => this.setState({error: err}))\n\n \n )\n ).then(() => this.setState({ reference, loading: false }));\n }\n };\n\n getContent = () => {\n const { error, reference, loading } = this.state;\n if (loading) {\n return <Spin />;\n } else if (error) {\n return <ErrorMsg error={error}/>;\n } else if (reference.length === 1) {\n return reference[0].citation;\n } else {\n return (\n <ul>\n {reference.map((r) => (\n <li key={r.id}>{r.citation}</li>\n ))}\n </ul>\n );\n }\n };\n\n scrollToReference = (e, id) => {\n // Default <a href=\"#col-reference-{id}\"> behaviour writes the hash into\n // window.location, which hijacks hosts using hash-based routing (the\n // GitHub Pages demo, COL portal preview). Scroll without touching the\n // URL.\n const el = document.getElementById(`col-reference-${id}`);\n if (el) {\n e.preventDefault();\n el.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }\n };\n\n render = () => {\n const { referenceId, referenceIndexMap, trigger } = this.props;\n const refIds = !_.isArray(referenceId) ? [referenceId] : referenceId;\n let icon = referenceIndexMap && _.get(referenceIndexMap, refIds[0])\n ? refIds.map((r) => (\n <a\n key={r}\n className=\"col-reference-link\"\n href={`#col-reference-${r}`}\n onClick={(e) => this.scrollToReference(e, r)}\n >\n {`[${referenceIndexMap[r]}]`}\n </a>\n ))\n : <BookOutlined style={{ cursor: \"pointer\" }} />;\n\n return referenceId ? (\n <div id={`reference_${referenceId}`} key={`reference_${referenceId}`} style={this.props.style}>\n <Popover\n getPopupContainer={() =>\n document.getElementById(`reference_${referenceId}`)\n }\n placement={this.props.placement || \"left\"}\n title=\"Reference\"\n onOpenChange={(visible) => visible && this.getData()}\n content={<div style={{ maxWidth: \"500px\" }}>{this.getContent()}</div>}\n trigger={trigger || \"hover\"}\n >\n {icon}\n </Popover>\n </div>\n ) : (\n \"\"\n );\n };\n}\n\nexport default ReferencePopover;\n","import React, { useEffect, useState, useRef } from \"react\";\n\nimport { Tag, Popover } from \"antd\";\n\nconst DecisionBadge = ({ style = {}, decision, popoverPlacement }) => {\n const idRef = useRef(Math.random().toString(36).substring(2, 15));\n\n const {\n subject, \n originalSubjectId, \n subjectDatasetKey, \n datasetKey, \n created, \n createdBy, \n modified,\n modifiedBy,\n ...rest} = decision;\n return (<div style={{ display: \"inline\" }} id={idRef.current}>\n <Popover\n getPopupContainer={() => document.getElementById(idRef.current)}\n title={\"Editorial decision\"}\n content={\n <div style={{overflow: \"scroll\"}}> <pre\n style={{ fontSize: \"10px\", fontFamily: \"monospace\", width: \"400px\" }}\n >\n {JSON.stringify(rest, null, 2)}\n </pre></div>\n }\n placement={popoverPlacement || \"right\"}\n\n trigger=\"click\"\n >\n <Tag\n color=\"gold\"\n style={{\n cursor: \"pointer\",\n fontFamily: \"monospace\",\n fontSize: \"8px\",\n fontWeight: 900,\n padding: \"2px\",\n lineHeight: \"8px\",\n verticalAlign: \"middle\",\n marginRight: \"2px\",\n ...style,\n }}\n >\n DC\n </Tag>\n </Popover>\n </div>\n \n)};\n\nexport default DecisionBadge;\n","import React from \"react\";\nimport config from \"../config\";\nimport _ from \"lodash\";\nimport BorderedListItem from \"./BorderedListItem\";\nimport linkify from \"linkify-html\";\nimport { Tag, Space, Tooltip } from \"antd\";\nimport {LinkOutlined} from \"@ant-design/icons\";\n\nimport MergedDataBadge from \"../components/MergedDataBadge\";\n\nexport const getTypeColor = (status) => {\n const typeStatus = status ? status.toUpperCase() : \"\";\n\n if ([\"HOLOTYPE\", \"LECTOTYPE\", \"NEOTYPE\"].includes(typeStatus)) {\n return \"#e2614a\";\n }\n if ([\"PARATYPE\", \"PARALECTOTYPE\", \"SYNTYPE\"].includes(typeStatus)) {\n return \"#f1eb0b\";\n }\n if ([\"ALLOTYPE\"].includes(typeStatus)) {\n return \"#7edaff\";\n }\n return null;\n};\n\nconst getLinks = (dataset, s) => {\n let gbifOccLink =\n dataset?.gbifKey &&\n dataset?.gbifPublisherKey === config?.plaziGbifPublisherKey\n ? `https://www.gbif.org/occurrence/${dataset?.gbifKey}/${s.id}`\n : \"\";\n if (!gbifOccLink && s?.link?.startsWith(\"https://www.gbif.org/occurrence/\")) {\n gbifOccLink = s?.link;\n }\n const ncbiLink =\n s?.associatedSequences && s?.associatedSequences.indexOf(\"ncbi.\") > -1\n ? s?.associatedSequences\n : \"\";\n return (\n (gbifOccLink || ncbiLink) && (\n <span id={`${s.id}-type-material-links`}>\n <Space>\n {gbifOccLink && (\n <Tooltip title=\"Occurrence in GBIF\" getPopupContainer={() => document.getElementById(`${s.id}-type-material-links`) || document.body}>\n <a style={{marginLeft: 4}} href={gbifOccLink} target=\"_blank\" rel=\"noreferrer\">\n GBIF <LinkOutlined />\n </a>\n </Tooltip>\n )}\n {ncbiLink && (\n <Tooltip title=\"DNA sequence in GenBank\">\n <a href={ncbiLink} target=\"_blank\" rel=\"noreferrer\">\n GenBank <LinkOutlined />\n </a>\n </Tooltip>\n )}\n </Space>\n </span>\n )\n );\n};\n\nconst TypeMaterial = ({ dataset, data, nameID, style }) => {\n return data[nameID] ? (\n <div style={style}>\n {data[nameID].map((s) => (\n <BorderedListItem key={s.id}>\n <Tag color={getTypeColor(s?.status)}>{s?.status}</Tag>{\" \"}\n {s.merged && (\n <MergedDataBadge\n createdBy={s?.createdBy}\n datasetKey={s?.datasetKey}\n verbatimSourceKey={s?.verbatimSourceKey}\n sourceDatasetKey={s?.sourceDatasetKey}\n />\n )}\n {getLinks(dataset, s)}{\" \"}\n {s?.citation && (\n <span\n dangerouslySetInnerHTML={{ __html: linkify(s?.citation || \"\") }}\n ></span>\n )}\n </BorderedListItem>\n ))}\n </div>\n ) : null;\n};\n\n\n\nexport default TypeMaterial;\n","import React from \"react\";\nimport { TagOutlined } from \"@ant-design/icons\";\nimport { Popover, Spin, Tag } from \"antd\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport _ from \"lodash\";\nimport { getTypeColor } from \"./TypeMaterial\";\nimport linkify from \"linkify-html\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\n\nclass TypeMaterialPopover extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n typeMaterial: [],\n loading: false,\n error: null,\n };\n }\n\n getData = () => {\n const { nameId, datasetKey, references } = this.props;\n if (referenceId) {\n const refIds = !_.isArray(referenceId) ? [referenceId] : referenceId;\n const typeMaterial = [];\n this.setState({ loading: true });\n Promise.all(\n refIds.map((id) =>\n _.get(references, id)\n ? Promise.resolve(typeMaterial.push(references[nameId]))\n : axios(\n `${\n config.dataApi\n }dataset/${datasetKey}/name/${encodeURIComponent(nameId)}/types`\n ).then((res) => typeMaterial.push(res.data))\n )\n ).then(() => this.setState({ typeMaterial, loading: false }));\n }\n };\n\n getContent = () => {\n const { typeMaterial, nameId } = this.props;\n const data = typeMaterial?.[nameId] || [];\n if (data.length > 0) {\n return (\n <div>\n {data.map((s) => (\n <div key={s.id} style={{ marginBottom: \"8px\" }} >\n \n <Tag color={getTypeColor(s?.status)}>{s?.status}</Tag>\n {s.merged && (\n <>\n <MergedDataBadge />{\" \"}\n </>\n )}\n {s?.citation && (\n <span\n dangerouslySetInnerHTML={{\n __html: linkify(s?.citation || \"\"),\n }}\n ></span>\n )}\n </div>\n ))}\n </div>\n );\n }\n };\n\n render = () => {\n const { typeMaterial, nameId } = this.props;\n const data = typeMaterial?.[nameId] || [];\n\n return data.length > 0 ? (\n <Popover\n getPopupContainer={() =>\n document.getElementById(`type_popover_${nameId}`)\n }\n placement={this.props.placement || \"left\"}\n title=\"Type Material\"\n content={<div style={{ maxWidth: \"500px\" }}>{this.getContent()}</div>}\n trigger=\"click\"\n >\n {\" \"}\n <TagOutlined style={{ cursor: \"pointer\" }} id={`type_popover_${nameId}`} />\n </Popover>\n ) : (\n \"\"\n );\n };\n}\n\nexport default TypeMaterialPopover;\n","const ShowMoreToggle = ({ total, visible, showAll, onChange }) => {\n if (total <= visible && !showAll) return null;\n return (\n <a onClick={() => onChange(!showAll)} style={{ cursor: \"pointer\" }}>\n {showAll ? \"Show less\" : `Show all (${total})`}\n </a>\n );\n};\n\nexport default ShowMoreToggle;\n","import { useState } from \"react\";\nimport _ from \"lodash\";\nimport BorderedListItem from \"./BorderedListItem\";\nimport ReferencePopover from \"./ReferencePopover\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport DecisionBadge from \"../components/DecisionBadge\";\nimport TypeMaterialPopover from \"./TypeMaterialPopover\";\nimport ShowMoreToggle from \"./ShowMoreToggle\";\n\nconst TOP_N = 5;\n\nconst SynonymsTable = ({\n datasetKey,\n data,\n style,\n nomStatus,\n references,\n decisions,\n typeMaterial,\n referenceIndexMap,\n primarySource,\n}) => {\n const [showAll, setShowAll] = useState(false);\n\n const getNomStatus = (taxon) =>\n !nomStatus\n ? _.get(taxon, \"name.nomStatus\")\n : nomStatus[_.get(taxon, \"name.nomStatus\")][\n (_.get(taxon, \"name.code\"), \"zoological\")\n ];\n\n const sorter = (a, b) => {\n if (\n _.get(a, \"name.combinationAuthorship.year\") &&\n _.get(b, \"name.combinationAuthorship.year\")\n ) {\n return (\n _.get(b, \"name.combinationAuthorship.year\") -\n _.get(a, \"name.combinationAuthorship.year\")\n );\n } else {\n if (_.get(a, \"name.scientificName\") < _.get(b, \"name.scientificName\")) {\n return -1;\n } else {\n return 1;\n }\n }\n };\n\n // Flatten render order so truncation can count rendered lines exactly.\n // Each item is one BorderedListItem. Heterotypic groups become a leader\n // (homotypic=false, \"=\") followed by their nested homotypic members\n // (homotypic=true + indent, \"≡\").\n const items = [];\n if (data.homotypic) {\n [...data.homotypic].sort(sorter).forEach((s) => {\n items.push({ syn: s, homotypic: true, indent: false });\n });\n }\n if (data.heterotypicGroups) {\n [...data.heterotypicGroups]\n .sort((a, b) => sorter(a[0], b[0]))\n .forEach((group) => {\n group.forEach((s, i) => {\n items.push({ syn: s, homotypic: i > 0, indent: i > 0 });\n });\n });\n }\n\n const total = items.length;\n const visibleItems = showAll ? items : items.slice(0, TOP_N);\n\n const renderItem = ({ syn: s, homotypic, indent }) => (\n <BorderedListItem key={_.get(s, \"name.id\")}>\n <span style={indent ? { marginLeft: \"10px\" } : null}>\n {homotypic === true ? \"≡ \" : \"= \"}{\" \"}\n <span\n dangerouslySetInnerHTML={{\n __html: _.get(\n s,\n \"labelHtml\",\n `${_.get(s, \"name.scientificName\")} ${_.get(\n s,\n \"name.authorship\",\n \"\"\n )}`\n ),\n }}\n />\n </span>{\" \"}\n {s?.sourceDatasetKey &&\n _.get(primarySource, \"key\") !== s?.sourceDatasetKey && (\n <MergedDataBadge\n createdBy={s?.createdBy}\n datasetKey={s.datasetKey}\n sourceDatasetKey={s?.sourceDatasetKey}\n verbatimSourceKey={s.verbatimSourceKey}\n />\n )}{\" \"}\n {decisions?.[s?.id] && <DecisionBadge decision={decisions?.[s?.id]} />}\n <TypeMaterialPopover\n datasetKey={datasetKey}\n typeMaterial={typeMaterial}\n nameId={_.get(s, \"name.id\")}\n placement=\"top\"\n />{\" \"}\n {_.get(s, \"name.nomStatus\") ? `(${getNomStatus(s)})` : \"\"}{\" \"}\n {_.get(s, \"status\") === \"misapplied\" && _.get(s, \"accordingTo\")\n ? _.get(s, \"accordingTo\")\n : \"\"}\n {_.get(s, \"status\") === \"ambiguous synonym\" && \"(Ambiguous)\"}\n <ReferencePopover\n datasetKey={datasetKey}\n references={references}\n referenceIndexMap={referenceIndexMap}\n referenceId={\n _.get(s, \"name.publishedInId\")\n ? [_.get(s, \"name.publishedInId\"), ...(s.referenceIds || [])]\n : s.referenceIds\n }\n placement=\"top\"\n style={{ display: \"inline-block\" }}\n />\n </BorderedListItem>\n );\n\n return (\n <div style={style}>\n {visibleItems.map(renderItem)}\n <ShowMoreToggle\n total={total}\n visible={TOP_N}\n showAll={showAll}\n onChange={setShowAll}\n />\n </div>\n );\n};\n\nexport default SynonymsTable;\n","// import axiosInstance from './util/axiosInstance';\nimport axios from \"axios\";\nimport config from \"../config\";\n\nexport const getFrequency = () => {\n return axios(`${config.dataApi}vocab/frequency`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getDatasetType = () => {\n return axios(`${config.dataApi}vocab/datasettype`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getDataFormatType = () => {\n return axios(`${config.dataApi}vocab/dataformat`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getDatasetOrigin = () => {\n return axios(`${config.dataApi}vocab/datasetorigin`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getRank = () => {\n return axios(`${config.dataApi}vocab/rank`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getTaxonomicStatus = () => {\n return axios(`${config.dataApi}vocab/taxonomicstatus`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getIssue = () => {\n return axios(`${config.dataApi}vocab/issue`).then(res =>\n res.data\n );\n};\n\nexport const getNameType = () => {\n return axios(`${config.dataApi}vocab/nametype`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getNameField = () => {\n return axios(`${config.dataApi}vocab/namefield`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getNomStatus = () => {\n return axios(`${config.dataApi}vocab/nomstatus`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getLicense = () => {\n return axios(`${config.dataApi}vocab/license`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getNomCode = () => {\n return axios(`${config.dataApi}vocab/nomcode`).then(res =>\n res.data\n );\n};\n\nexport const getImportState = () => {\n return axios(`${config.dataApi}vocab/importstate`).then(res =>\n res.data\n );\n};\n\nexport const getLifezones = () => {\n return axios(`${config.dataApi}vocab/lifezone`).then(res =>\n res.data\n );\n};\n\nexport const getSectorImportState = () => {\n return axios(`${config.dataApi}vocab/sectorimport$state`).then(res =>\n res.data.map(e => e.name)\n );\n};\n\nexport const getCountries = () => {\n return axios(`${config.dataApi}vocab/country`).then(res =>\n res.data\n );\n};\n\nexport const getTaxGroup = () => {\n return axios(`${config.dataApi}vocab/taxgroup`).then(res =>\n res.data\n );\n};\n\n\n\n\n","import React from \"react\";\nimport { Table } from \"antd\";\nimport _ from \"lodash\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport ReferencePopover from \"./ReferencePopover\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport ShowMoreToggle from \"./ShowMoreToggle\";\n\nimport { getCountries } from \"../api/enumeration\";\n\nclass VernacularNamesTable extends React.Component {\n constructor(props) {\n super(props);\n const {references} = this.props;\n this.state = {\n data: this.props.data ? [...this.props.data] : [],\n showAll: false,\n countryAlpha3: {},\n countryAlpha2: {},\n columns: [\n {\n title: \"\",\n dataIndex: \"merged\",\n key: \"merged\",\n width: 12,\n render: (text, record) =>\n record?.merged ? <MergedDataBadge createdBy={record?.createdBy} datasetKey={record?.datasetKey} verbatimSourceKey={record?.verbatimSourceKey} sourceDatasetKey={record?.sourceDatasetKey} /> : \"\",\n },\n {\n title: \"Original name\",\n dataIndex: \"name\",\n key: \"name\",\n },\n {\n title: \"Transliterated name\",\n dataIndex: \"latin\",\n key: \"latin\",\n },\n {\n title: \"Language\",\n dataIndex: \"language\",\n key: \"language\",\n\n render: (text, record) =>\n record.languageName ? record.languageName : text,\n },\n {\n title: \"Country of use\",\n dataIndex: \"country\",\n key: \"country\",\n\n render: (text, record) =>\n record.countryTitle ? record.countryTitle : text,\n },\n {\n title: \"\",\n dataIndex: \"referenceId\",\n key: \"referenceId\",\n\n render: (text, record) => {\n return text ? (\n <ReferencePopover\n referenceId={text}\n references={references}\n datasetKey={this.props.datasetKey}\n placement=\"left\"\n ></ReferencePopover>\n ) : (\n \"\"\n );\n },\n },\n ],\n };\n }\n componentDidMount = () => {\n const { data } = this.props;\n\n getCountries()\n .then((res) => {\n const countryAlpha3 = {};\n const countryAlpha2 = {};\n res.forEach((c) => {\n countryAlpha3[c.alpha3] = c;\n countryAlpha2[c.alpha2] = c;\n });\n const newData = data.map((d) =>\n this.decorateWithCountryByCode(d, countryAlpha2, countryAlpha3)\n );\n this.setState({ data: newData });\n return Promise.all(newData.map(this.decorateWithLanguageByCode));\n })\n .then(() => {\n this.state.data.sort((a, b) =>\n a.languageName > b.languageName ? 1 : -1\n );\n this.setState({ data: [...this.state.data] });\n });\n };\n\n decorateWithCountryByCode = (name, countryAlpha2, countryAlpha3) => {\n if (countryAlpha2 && name.country && name.country.length === 2) {\n return {\n ...name,\n countryTitle: _.get(countryAlpha2, `[${name.country}].title`) || \"\",\n };\n } else if (countryAlpha3 && name.country && name.country.length === 3) {\n return {\n ...name,\n countryTitle: _.get(countryAlpha3, `[${name.country}].title`) || \"\",\n };\n } else {\n return name;\n }\n };\n\n decorateWithLanguageByCode = (name) => {\n return !name.language\n ? Promise.resolve()\n : axios(`${config.dataApi}vocab/language/${name.language}`)\n .then((res) => {\n name.languageName = res.data;\n })\n .catch((error) => console.log(error));\n };\n render() {\n const { style } = this.props;\n const { data, columns, showAll } = this.state;\n const visible = showAll ? data : data.slice(0, 5);\n\n return (\n <>\n <Table\n style={style}\n className=\"colplus-taxon-page-list\"\n columns={columns}\n dataSource={visible}\n rowKey=\"id\"\n pagination={false}\n size=\"middle\"\n />\n <ShowMoreToggle\n total={data.length}\n visible={5}\n showAll={showAll}\n onChange={(v) => this.setState({ showAll: v })}\n />\n </>\n );\n }\n}\n\nexport default VernacularNamesTable;\n","export const INFRASPECIFIC_RANKS = [\n \"subspecies\",\n \"variety\",\n \"subvariety\",\n \"form\",\n \"subform\",\n \"infraspecific name\",\n];\n\nexport const getDescendantRanks = (focalRank, rankOrder) => {\n const focalIdx = rankOrder.indexOf(focalRank);\n if (focalIdx === -1) return [];\n return INFRASPECIFIC_RANKS.filter((r) => {\n const i = rankOrder.indexOf(r);\n return i > focalIdx;\n });\n};\n","import axios from \"axios\";\nimport config from \"../../config\";\nimport { getDescendantRanks } from \"./descendantRanks\";\n\nconst POOL_SIZE = 16;\n\nconst isMappable = (r) =>\n r?.area?.gazetteer !== \"text\" && !!r?.area?.globalId;\n\nconst runPool = async (items, worker, size) => {\n const results = new Array(items.length);\n let next = 0;\n const runners = Array.from({ length: Math.min(size, items.length) }, async () => {\n while (true) {\n const i = next++;\n if (i >= items.length) return;\n results[i] = await worker(items[i], i);\n }\n });\n await Promise.all(runners);\n return results;\n};\n\nconst searchDescendants = async (datasetKey, focalId, ranks) => {\n if (ranks.length === 0) return [];\n const params = new URLSearchParams();\n params.append(\"TAXON_ID\", focalId);\n ranks.forEach((r) => params.append(\"rank\", r));\n [\"accepted\", \"provisionally accepted\"].forEach((s) =>\n params.append(\"status\", s)\n );\n params.append(\"limit\", \"1000\");\n const url = `${config.dataApi}dataset/${datasetKey}/nameusage/search?${params}`;\n const res = await axios(url);\n const list = res?.data?.result || [];\n return list\n .filter((u) => u?.usage?.id)\n .map((u) => ({\n id: u.usage.id,\n scientificName:\n u.usage?.name?.scientificName || u.usage?.label || u.usage.id,\n rank: u.usage?.name?.rank,\n parentId: u.usage?.parentId,\n }));\n};\n\nconst fetchDistributions = async (datasetKey, taxonId) => {\n const url = `${config.dataApi}dataset/${datasetKey}/taxon/${encodeURIComponent(taxonId)}/distribution`;\n try {\n const res = await axios(url);\n return Array.isArray(res?.data) ? res.data : [];\n } catch {\n return [];\n }\n};\n\n/**\n * Fetch all infraspecific descendants of `focalTaxon` and their distributions.\n * Returns { taxa, descendantsFailed } where each taxon carries `mappable` (the\n * mappable subset of its distributions) and `distributions` (the full list).\n */\nexport const fetchDescendants = async ({ datasetKey, focalTaxon, rankOrder }) => {\n const ranks = getDescendantRanks(focalTaxon?.name?.rank, rankOrder);\n let descendantsFailed = false;\n let list = [];\n try {\n list = await searchDescendants(datasetKey, focalTaxon.id, ranks);\n } catch {\n descendantsFailed = true;\n return { taxa: [], descendantsFailed };\n }\n\n const distributions = await runPool(\n list,\n (t) => fetchDistributions(datasetKey, t.id),\n POOL_SIZE\n );\n\n const taxa = list.map((t, i) => {\n const all = distributions[i] || [];\n return { ...t, distributions: all, mappable: all.filter(isMappable) };\n });\n return { taxa, descendantsFailed };\n};\n","export const VIVID_PALETTE = [\n \"#E58606\",\n \"#5D69B1\",\n \"#52BCA3\",\n \"#99C945\",\n \"#CC61B0\",\n \"#24796C\",\n \"#DAA51B\",\n \"#2F8AC4\",\n \"#764E9F\",\n \"#ED645A\",\n \"#CC3A8E\",\n \"#A5AA99\",\n];\n\nconst rankIndex = (rank, rankOrder) => {\n const i = rankOrder.indexOf(rank);\n return i === -1 ? rankOrder.length : i;\n};\n\nexport const assignColors = (taxa, rankOrder) => {\n const sorted = [...taxa].sort((a, b) => {\n const ra = rankIndex(a.rank, rankOrder);\n const rb = rankIndex(b.rank, rankOrder);\n if (ra !== rb) return ra - rb;\n return a.scientificName.localeCompare(b.scientificName);\n });\n const out = {};\n sorted.forEach((t, i) => {\n out[t.id] = VIVID_PALETTE[i % VIVID_PALETTE.length];\n });\n return out;\n};\n","import { useState } from \"react\";\n\nconst wrapStyle = {\n position: \"absolute\",\n bottom: 8,\n left: 8,\n zIndex: 1000,\n background: \"#fff\",\n borderRadius: 4,\n boxShadow: \"0 1px 4px rgba(0,0,0,0.2)\",\n padding: \"6px 8px\",\n fontSize: 12,\n lineHeight: 1.5,\n maxWidth: 260,\n};\n\nconst scrollStyle = {\n maxHeight: 240,\n overflowY: \"auto\",\n};\n\nconst groupHeadingStyle = {\n fontWeight: 600,\n marginTop: 4,\n};\n\nconst firstGroupHeadingStyle = {\n ...groupHeadingStyle,\n marginTop: 0,\n};\n\nconst rowStyle = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n paddingLeft: 4,\n};\n\nconst swatchStyle = (color) => ({\n display: \"inline-block\",\n width: 12,\n height: 12,\n background: color,\n border: \"1px solid rgba(0,0,0,0.15)\",\n borderRadius: 2,\n flex: \"0 0 auto\",\n});\n\nconst footerToggleStyle = {\n marginTop: 6,\n cursor: \"pointer\",\n color: \"#1890ff\",\n fontSize: 11,\n};\n\nconst footerWrapStyle = {\n marginTop: 4,\n borderTop: \"1px solid #eee\",\n paddingTop: 4,\n color: \"#666\",\n};\n\nconst footerGroupHeadingStyle = {\n fontWeight: 600,\n marginTop: 4,\n};\n\nconst footerFirstGroupHeadingStyle = {\n ...footerGroupHeadingStyle,\n marginTop: 0,\n};\n\nconst footerNameStyle = {\n fontStyle: \"italic\",\n paddingLeft: 4,\n};\n\nconst totalCount = (groups) =>\n groups.reduce((sum, g) => sum + g.taxa.length, 0);\n\nconst GbifHexEntry = () => (\n <div style={rowStyle}>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" aria-hidden=\"true\">\n <polygon\n points=\"3,1 9,1 11,6 9,11 3,11 1,6\"\n fill=\"#de1e6e\"\n stroke=\"rgba(0,0,0,0.25)\"\n strokeWidth=\"0.75\"\n />\n </svg>\n <span>GBIF occurrences</span>\n </div>\n);\n\nconst IncludedTaxaLegend = ({ visibleGroups, unmappableGroups, showGbif }) => {\n const [showUnmappable, setShowUnmappable] = useState(false);\n const visibleCount = totalCount(visibleGroups);\n const unmappableCount = totalCount(unmappableGroups);\n if (visibleCount === 0 && unmappableCount === 0 && !showGbif) return null;\n return (\n <div style={wrapStyle}>\n <div style={scrollStyle}>\n {visibleGroups.map((g, i) => (\n <div key={g.rank}>\n <div style={i === 0 ? firstGroupHeadingStyle : groupHeadingStyle}>\n {g.label}\n </div>\n {g.taxa.map((t) => (\n <div key={t.id} style={rowStyle}>\n <span style={swatchStyle(t.color)} />\n <span style={{ fontStyle: \"italic\" }}>\n {t.displayName || t.scientificName}\n </span>\n </div>\n ))}\n </div>\n ))}\n {showGbif && <GbifHexEntry />}\n </div>\n {unmappableCount > 0 && (\n <>\n <div\n style={footerToggleStyle}\n onClick={() => setShowUnmappable((v) => !v)}\n >\n {showUnmappable ? \"− Hide\" : \"+\"} {unmappableCount} without map data\n </div>\n {showUnmappable && (\n <div style={footerWrapStyle}>\n {unmappableGroups.map((g, i) => (\n <div key={g.rank}>\n <div\n style={\n i === 0\n ? footerFirstGroupHeadingStyle\n : footerGroupHeadingStyle\n }\n >\n {g.label}\n </div>\n {g.taxa.map((t) => (\n <div key={t.id} style={footerNameStyle}>\n {t.displayName || t.scientificName}\n </div>\n ))}\n </div>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n );\n};\n\nexport default IncludedTaxaLegend;\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport maplibregl from \"maplibre-gl\";\nimport \"maplibre-gl/dist/maplibre-gl.css\";\nimport \"./treeControl.css\";\nimport axios from \"axios\";\nimport config from \"../../config\";\nimport { fetchDescendants } from \"./descendantFetch\";\nimport { getDescendantRanks, INFRASPECIFIC_RANKS } from \"./descendantRanks\";\nimport { assignColors } from \"./colorAssignment\";\nimport IncludedTaxaLegend from \"./IncludedTaxaLegend\";\n\nconst POPUP_FIELDS = [\n \"establishmentMeans\",\n \"degreeOfEstablishment\",\n \"pathway\",\n \"threatStatus\",\n \"year\",\n \"lifeStage\",\n];\n\nexport const ESTABLISHMENT_MEANS = [\n { key: \"nativeendemic\", label: \"Native endemic\", color: \"#0F8554\" },\n { key: \"native\", label: \"Native\", color: \"#87C55F\" },\n { key: \"nativereintroduced\", label: \"Native reintroduced\", color: \"#C9DB74\" },\n { key: \"introduced\", label: \"Introduced\", color: \"#FE88B1\" },\n {\n key: \"introducedassistedcolonisation\",\n label: \"Introduced assisted colonisation\",\n color: \"#DCB0F2\",\n },\n { key: \"vagrant\", label: \"Vagrant\", color: \"#F6CF71\" },\n { key: \"uncertain\", label: \"Uncertain\", color: \"#8BE0A4\" },\n];\n\nconst ESTABLISHMENT_COLORS = Object.fromEntries(\n ESTABLISHMENT_MEANS.map((m) => [m.key, m.color])\n);\nexport const MISSING_COLOR = \"#66C5CC\";\n\nconst normalizeKey = (v) =>\n String(v || \"\")\n .toLowerCase()\n .replace(/[^a-z]/g, \"\");\n\nconst resolveKey = (record) => {\n const raw = record?.establishmentMeans;\n if (raw == null || raw === \"\") return null;\n const k = normalizeKey(raw);\n return ESTABLISHMENT_COLORS[k] ? k : \"uncertain\";\n};\n\nconst colorFor = (record) => {\n const k = resolveKey(record);\n return k == null ? MISSING_COLOR : ESTABLISHMENT_COLORS[k];\n};\n\nconst POSITRON_STYLE =\n \"https://basemaps.cartocdn.com/gl/positron-gl-style/style.json\";\n\n// sessionStorage key for the GBIF overlay toggle. Persists across navigations\n// within a tab so a user who turns the overlay off on one taxon page sees it\n// off on the next (when that page actually has distribution polygons to fall\n// back to). GBIF-only maps ignore this and always show the overlay.\nconst GBIF_VISIBLE_STORAGE_KEY = \"col-browser:gbif-visible\";\n\nconst readStoredGbifVisible = (defaultValue) => {\n try {\n const v = window.sessionStorage.getItem(GBIF_VISIBLE_STORAGE_KEY);\n if (v === \"true\") return true;\n if (v === \"false\") return false;\n } catch {\n // sessionStorage can throw in private browsing or restrictive contexts.\n }\n return defaultValue;\n};\n\nconst writeStoredGbifVisible = (visible) => {\n try {\n window.sessionStorage.setItem(\n GBIF_VISIBLE_STORAGE_KEY,\n visible ? \"true\" : \"false\"\n );\n } catch {\n // ignore\n }\n};\n\n// GBIF v2 occurrence-density tile path (multitaxonomy). Concatenated with\n// config.gbifApi at request time.\nconst GBIF_TILE_PATH =\n \"/v2/map/occurrence/density/{z}/{x}/{y}@1x.png\" +\n \"?srs=EPSG%3A3857&style=iNaturalist.poly&bin=hex&hexPerTile=64\" +\n \"&hasCoordinate=true&hasGeospatialIssue=false&occurrenceStatus=PRESENT\" +\n \"&checklistKey={checklistKey}&taxonKey={taxonKey}\";\n\n// Layer IDs\nconst FOCAL_SOURCE = \"col-focal-distributions\";\nconst FOCAL_FILL = \"col-focal-fill\";\nconst FOCAL_LINE = \"col-focal-line\";\nconst GBIF_SOURCE = \"col-gbif-occurrences\";\nconst GBIF_LAYER = \"col-gbif-occurrences\";\nconst descendantSourceId = (id) => `col-descendant-${id}`;\nconst descendantFillId = (id) => `col-descendant-fill-${id}`;\nconst descendantLineId = (id) => `col-descendant-line-${id}`;\n\nconst cache = new Map();\n\nconst fetchShape = (gazetteer, id) => {\n const key = `${gazetteer}:${id}`;\n if (cache.has(key)) return cache.get(key);\n const url = `${config.dataApi}vocab/area/${key}`;\n const p = axios(url, {\n headers: { Accept: \"application/geo+json\" },\n }).then(\n (r) => r.data,\n () => null\n );\n cache.set(key, p);\n return p;\n};\n\nconst escapeHtml = (s) =>\n String(s)\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\");\n\nconst popupHtml = (record) => {\n const title = record?.area?.name || record?.area?.globalId || \"\";\n const rows = POPUP_FIELDS.map((f) => [f, record?.[f]])\n .filter(([, v]) => v != null && v !== \"\")\n .map(\n ([k, v]) =>\n `<div><strong>${escapeHtml(k)}:</strong> ${escapeHtml(v)}</div>`\n )\n .join(\"\");\n return `<div style=\"min-width:180px\"><div style=\"font-weight:600;margin-bottom:4px\">${escapeHtml(\n title\n )}</div>${rows}</div>`;\n};\n\nconst descendantPopupHtml = (taxon, record) => {\n const head =\n `<div style=\"font-weight:600;font-style:italic;margin-bottom:4px\">${escapeHtml(\n taxon.scientificName\n )}</div>` +\n `<div style=\"color:#888;margin-bottom:4px\">${escapeHtml(taxon.rank || \"\")}</div>`;\n return head + popupHtml(record);\n};\n\nconst RANK_LABEL_PLURAL = {\n subspecies: \"subspecies\",\n variety: \"varieties\",\n subvariety: \"subvarieties\",\n form: \"forms\",\n subform: \"subforms\",\n \"infraspecific name\": \"infraspecific names\",\n};\nconst rankLabelPlural = (rank) => RANK_LABEL_PLURAL[rank] || rank;\n\nconst epithet = (scientificName) => {\n if (!scientificName) return \"\";\n const tokens = scientificName.trim().split(/\\s+/);\n return tokens[tokens.length - 1];\n};\n\n// Hex swatch + label for the GBIF density layer.\nconst GbifLegendEntry = () => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" aria-hidden=\"true\">\n <polygon\n points=\"3,1 9,1 11,6 9,11 3,11 1,6\"\n fill=\"#de1e6e\"\n stroke=\"rgba(0,0,0,0.25)\"\n strokeWidth=\"0.75\"\n />\n </svg>\n <span>GBIF occurrences</span>\n </div>\n);\n\n// Compute bounds [[minLng,minLat],[maxLng,maxLat]] of a FeatureCollection.\nconst computeBounds = (features) => {\n let minLng = Infinity,\n minLat = Infinity,\n maxLng = -Infinity,\n maxLat = -Infinity;\n const visit = (coords) => {\n if (typeof coords[0] === \"number\") {\n const [lng, lat] = coords;\n if (lng < minLng) minLng = lng;\n if (lng > maxLng) maxLng = lng;\n if (lat < minLat) minLat = lat;\n if (lat > maxLat) maxLat = lat;\n } else {\n for (let i = 0; i < coords.length; i++) visit(coords[i]);\n }\n };\n for (let i = 0; i < features.length; i++) {\n const g = features[i]?.geometry;\n if (g?.coordinates) visit(g.coordinates);\n }\n if (minLng === Infinity) return null;\n return [\n [minLng, minLat],\n [maxLng, maxLat],\n ];\n};\n\nconst flattenFeatures = (geojson) => {\n if (!geojson) return [];\n if (geojson.type === \"FeatureCollection\") return geojson.features || [];\n return [geojson];\n};\n\nconst supported = () => {\n if (typeof maplibregl?.supported === \"function\") return maplibregl.supported();\n // Newer maplibre-gl uses isWebGLSupported / no helper — assume true at SSR time.\n return typeof WebGLRenderingContext !== \"undefined\";\n};\n\nconst DistributionsMap = ({\n records,\n onUnmappable,\n datasetKey,\n focalTaxon,\n rankOrder,\n gbifChecklistKey,\n // true | null → show GBIF layer; false → GBIF API returned 0 occurrences,\n // grey out the toggle and skip loading tiles. Defaults to true so the\n // component works without the count check.\n gbifAvailable = true,\n}) => {\n const containerRef = useRef(null);\n const mapRef = useRef(null);\n const popupRef = useRef(null);\n const recordMapRef = useRef(new Map()); // recordKey → record\n const descendantTaxonMapRef = useRef(new Map()); // taxonId → taxon\n const descendantRecordMapRef = useRef(new Map()); // recordKey → { taxon, record }\n const focalAttachedRef = useRef(false);\n const gbifAttachedRef = useRef(false);\n const descendantLayersRef = useRef(new Set()); // taxonIds currently attached\n\n const [styleReady, setStyleReady] = useState(false);\n const [focalReady, setFocalReady] = useState(false);\n const [descendantState, setDescendantState] = useState({\n status: \"idle\", // idle | loading | ready | empty | error\n taxa: [],\n });\n const [focalVisible, setFocalVisible] = useState(true);\n // GBIF-only maps (no distribution polygons) always show the overlay\n // regardless of any saved preference — there's nothing else to look at.\n const isGbifOnly = !!gbifChecklistKey && (!records || records.length === 0);\n const [gbifVisible, setGbifVisible] = useState(() =>\n isGbifOnly ? true : readStoredGbifVisible(true)\n );\n const [visibleTaxonIds, setVisibleTaxonIds] = useState(new Set());\n const [controlOpen, setControlOpen] = useState(false);\n const fetchTriggeredRef = useRef(false);\n\n const handleToggleGbif = () => {\n setGbifVisible((v) => {\n const next = !v;\n // Only persist when this page has distribution polygons — otherwise\n // saving a toggle-off here would affect maps that have nothing else to\n // show, which the consumer explicitly asked us to keep visible.\n if (!isGbifOnly) writeStoredGbifVisible(next);\n return next;\n });\n };\n\n const presentMeans = useMemo(() => {\n if (!records?.length) return [];\n const seen = new Set();\n records.forEach((r) => {\n const k = resolveKey(r);\n if (k != null) seen.add(k);\n });\n return ESTABLISHMENT_MEANS.filter((m) => seen.has(m.key));\n }, [records]);\n\n const descendantColors = useMemo(() => {\n if (descendantState.status !== \"ready\") return {};\n return assignColors(\n descendantState.taxa.filter((t) => t.mappable.length > 0),\n rankOrder || []\n );\n }, [descendantState, rankOrder]);\n\n const descendantLegend = useMemo(() => {\n if (descendantState.status !== \"ready\") {\n return { visibleGroups: [], unmappableGroups: [] };\n }\n const decorate = (t) => ({\n ...t,\n color: descendantColors[t.id],\n displayName: epithet(t.scientificName),\n });\n const groupByRank = (taxa) => {\n const byRank = {};\n taxa.forEach((t) => {\n (byRank[t.rank] = byRank[t.rank] || []).push(decorate(t));\n });\n return INFRASPECIFIC_RANKS.filter((r) => byRank[r]).map((r) => ({\n rank: r,\n label: rankLabelPlural(r),\n taxa: byRank[r],\n }));\n };\n const visibleGroups = groupByRank(\n descendantState.taxa.filter(\n (t) => t.mappable.length > 0 && visibleTaxonIds.has(t.id)\n )\n );\n const unmappableGroups = groupByRank(\n descendantState.taxa.filter((t) => t.mappable.length === 0)\n );\n return { visibleGroups, unmappableGroups };\n }, [descendantState, descendantColors, visibleTaxonIds]);\n\n const showDescendantLegend = descendantLegend.visibleGroups.length > 0;\n\n // Mount map once.\n useEffect(() => {\n if (!containerRef.current || mapRef.current) return;\n if (!supported()) return;\n const map = new maplibregl.Map({\n container: containerRef.current,\n style: POSITRON_STYLE,\n center: [0, 20],\n zoom: 1,\n minZoom: 0,\n attributionControl: false,\n renderWorldCopies: true,\n });\n map.addControl(\n new maplibregl.AttributionControl({ compact: true }),\n \"bottom-right\"\n );\n map.addControl(\n new maplibregl.NavigationControl({ showCompass: false }),\n \"top-left\"\n );\n mapRef.current = map;\n\n map.on(\"load\", () => {\n setStyleReady(true);\n // Start the attribution control collapsed. MapLibre opens it by\n // default in compact mode and only closes it on drag; remove the\n // `compact-show` class to hide the inner attribution text until the\n // user clicks the (i) button.\n const attrib = map\n .getContainer()\n .querySelector(\".maplibregl-ctrl-attrib\");\n if (attrib) attrib.classList.remove(\"maplibregl-compact-show\");\n });\n\n const resizeObserver =\n typeof ResizeObserver !== \"undefined\"\n ? new ResizeObserver(() => map.resize())\n : null;\n if (resizeObserver) resizeObserver.observe(containerRef.current);\n\n return () => {\n if (resizeObserver) resizeObserver.disconnect();\n if (popupRef.current) {\n popupRef.current.remove();\n popupRef.current = null;\n }\n map.remove();\n mapRef.current = null;\n focalAttachedRef.current = false;\n gbifAttachedRef.current = false;\n descendantLayersRef.current = new Set();\n };\n }, []);\n\n // Focal taxon polygons.\n useEffect(() => {\n if (!styleReady || !records?.length) return;\n const map = mapRef.current;\n if (!map) return;\n let cancelled = false;\n setFocalReady(false);\n\n Promise.allSettled(\n records.map((r) =>\n fetchShape(r.area.gazetteer, r.area.id).then((geojson) => ({\n record: r,\n geojson,\n }))\n )\n ).then((results) => {\n if (cancelled) return;\n const features = [];\n const recordMap = new Map();\n let failures = 0;\n results.forEach((res, i) => {\n if (res.status !== \"fulfilled\" || !res.value.geojson) {\n failures += 1;\n return;\n }\n const { record, geojson } = res.value;\n const color = colorFor(record);\n const recordKey = `focal-${i}`;\n recordMap.set(recordKey, record);\n flattenFeatures(geojson).forEach((f) => {\n features.push({\n ...f,\n properties: {\n ...(f.properties || {}),\n _recordKey: recordKey,\n _color: color,\n },\n });\n });\n });\n recordMapRef.current = recordMap;\n\n const data = { type: \"FeatureCollection\", features };\n if (map.getSource(FOCAL_SOURCE)) {\n map.getSource(FOCAL_SOURCE).setData(data);\n } else {\n // GBIF raster may already be on the map (its effect runs synchronously\n // while this one is async). Insert focal layers below GBIF so the\n // occurrence overlay always paints on top.\n const beforeId = map.getLayer(GBIF_LAYER) ? GBIF_LAYER : undefined;\n map.addSource(FOCAL_SOURCE, { type: \"geojson\", data });\n map.addLayer(\n {\n id: FOCAL_FILL,\n type: \"fill\",\n source: FOCAL_SOURCE,\n paint: {\n \"fill-color\": [\"coalesce\", [\"get\", \"_color\"], MISSING_COLOR],\n \"fill-opacity\": 0.65,\n },\n },\n beforeId\n );\n map.addLayer(\n {\n id: FOCAL_LINE,\n type: \"line\",\n source: FOCAL_SOURCE,\n paint: {\n \"line-color\": [\"coalesce\", [\"get\", \"_color\"], MISSING_COLOR],\n \"line-width\": 1,\n },\n },\n beforeId\n );\n map.on(\"click\", FOCAL_FILL, onFocalClick);\n map.on(\"mouseenter\", FOCAL_FILL, onMouseEnter);\n map.on(\"mouseleave\", FOCAL_FILL, onMouseLeave);\n focalAttachedRef.current = true;\n }\n\n if (features.length > 0) {\n const bounds = computeBounds(features);\n if (bounds) map.fitBounds(bounds, { padding: 20, animate: false });\n }\n if (typeof onUnmappable === \"function\") onUnmappable(failures);\n setFocalReady(true);\n });\n\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [styleReady, records]);\n\n // Focal click handler — defined as stable closure that reads ref.\n const onFocalClick = (e) => {\n const map = mapRef.current;\n if (!map) return;\n const feature = e.features?.[0];\n const key = feature?.properties?._recordKey;\n const record = key ? recordMapRef.current.get(key) : null;\n if (!record) return;\n if (popupRef.current) popupRef.current.remove();\n popupRef.current = new maplibregl.Popup({ closeButton: true, maxWidth: \"320px\" })\n .setLngLat(e.lngLat)\n .setHTML(popupHtml(record))\n .addTo(map);\n };\n\n const onMouseEnter = () => {\n const map = mapRef.current;\n if (map) map.getCanvas().style.cursor = \"pointer\";\n };\n const onMouseLeave = () => {\n const map = mapRef.current;\n if (map) map.getCanvas().style.cursor = \"\";\n };\n\n // Sync focal visibility.\n useEffect(() => {\n const map = mapRef.current;\n if (!map || !focalAttachedRef.current) return;\n const v = focalVisible ? \"visible\" : \"none\";\n if (map.getLayer(FOCAL_FILL)) map.setLayoutProperty(FOCAL_FILL, \"visibility\", v);\n if (map.getLayer(FOCAL_LINE)) map.setLayoutProperty(FOCAL_LINE, \"visibility\", v);\n }, [focalVisible, focalReady]);\n\n // GBIF raster layer — added always last so it sits on top.\n useEffect(() => {\n if (!styleReady) return;\n const map = mapRef.current;\n if (!map) return;\n const removeGbif = () => {\n if (map.getLayer(GBIF_LAYER)) map.removeLayer(GBIF_LAYER);\n if (map.getSource(GBIF_SOURCE)) map.removeSource(GBIF_SOURCE);\n gbifAttachedRef.current = false;\n };\n removeGbif();\n if (!gbifChecklistKey || !focalTaxon?.id) return;\n // GBIF API said this taxon has 0 occurrences — skip the tile request.\n if (gbifAvailable === false) return;\n const url = (config.gbifApi + GBIF_TILE_PATH)\n .replace(\"{checklistKey}\", encodeURIComponent(gbifChecklistKey))\n .replace(\"{taxonKey}\", encodeURIComponent(focalTaxon.id));\n // Link to GBIF's multitaxonomy occurrence search for the focal taxon.\n // Lives on demo.gbif.org (config.gbifPortal) until that feature moves to\n // the production portal; same checklistKey we pass to the tile API.\n const searchUrl =\n config.gbifPortal +\n \"/occurrence/search?checklist_key=\" +\n encodeURIComponent(gbifChecklistKey) +\n \"&taxon_key=\" +\n encodeURIComponent(focalTaxon.id);\n map.addSource(GBIF_SOURCE, {\n type: \"raster\",\n tiles: [url],\n tileSize: 256,\n attribution:\n '<a href=\"' +\n searchUrl +\n '\" target=\"_blank\" rel=\"noopener\">GBIF</a> occurrence data',\n });\n map.addLayer({\n id: GBIF_LAYER,\n type: \"raster\",\n source: GBIF_SOURCE,\n paint: { \"raster-opacity\": 0.9 },\n layout: { visibility: gbifVisible ? \"visible\" : \"none\" },\n });\n gbifAttachedRef.current = true;\n // Intentionally no cleanup return: deps changes are handled by the\n // removeGbif() call at the top of the next run, and unmount is handled\n // by the mount effect's map.remove() which disposes everything. If we\n // returned removeGbif here, it could run after map.remove() (React\n // runs cleanups in reverse declaration order on unmount) and throw\n // because MapLibre nulls map.style during remove().\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [styleReady, gbifChecklistKey, focalTaxon?.id, gbifAvailable]);\n\n // Sync GBIF visibility.\n useEffect(() => {\n const map = mapRef.current;\n if (!map || !gbifAttachedRef.current) return;\n const v = gbifVisible ? \"visible\" : \"none\";\n if (map.getLayer(GBIF_LAYER)) map.setLayoutProperty(GBIF_LAYER, \"visibility\", v);\n }, [gbifVisible]);\n\n // Descendant layers — added once when state.status becomes \"ready\".\n useEffect(() => {\n if (!styleReady) return;\n const map = mapRef.current;\n if (!map) return;\n // Tear down previous descendant layers.\n descendantLayersRef.current.forEach((id) => {\n if (map.getLayer(descendantFillId(id))) map.removeLayer(descendantFillId(id));\n if (map.getLayer(descendantLineId(id))) map.removeLayer(descendantLineId(id));\n if (map.getSource(descendantSourceId(id))) map.removeSource(descendantSourceId(id));\n });\n descendantLayersRef.current = new Set();\n descendantTaxonMapRef.current = new Map();\n descendantRecordMapRef.current = new Map();\n\n if (descendantState.status !== \"ready\") return;\n const colors = descendantColors;\n descendantState.taxa.forEach((t) => {\n if (t.mappable.length === 0) return;\n descendantTaxonMapRef.current.set(t.id, t);\n Promise.allSettled(\n t.mappable.map((rec) =>\n fetchShape(rec.area.gazetteer, rec.area.id).then((geojson) => ({\n record: rec,\n geojson,\n }))\n )\n ).then((results) => {\n if (!mapRef.current) return;\n const features = [];\n results.forEach((res, i) => {\n if (res.status !== \"fulfilled\" || !res.value.geojson) return;\n const { record, geojson } = res.value;\n const recordKey = `desc-${t.id}-${i}`;\n descendantRecordMapRef.current.set(recordKey, { taxon: t, record });\n flattenFeatures(geojson).forEach((f) => {\n features.push({\n ...f,\n properties: {\n ...(f.properties || {}),\n _recordKey: recordKey,\n },\n });\n });\n });\n const color = colors[t.id] || MISSING_COLOR;\n const data = { type: \"FeatureCollection\", features };\n const srcId = descendantSourceId(t.id);\n if (mapRef.current.getSource(srcId)) {\n mapRef.current.getSource(srcId).setData(data);\n } else {\n mapRef.current.addSource(srcId, { type: \"geojson\", data });\n const fillId = descendantFillId(t.id);\n const lineId = descendantLineId(t.id);\n const beforeId = mapRef.current.getLayer(GBIF_LAYER) ? GBIF_LAYER : undefined;\n mapRef.current.addLayer(\n {\n id: fillId,\n type: \"fill\",\n source: srcId,\n paint: { \"fill-color\": color, \"fill-opacity\": 0.55 },\n layout: { visibility: \"none\" },\n },\n beforeId\n );\n mapRef.current.addLayer(\n {\n id: lineId,\n type: \"line\",\n source: srcId,\n paint: { \"line-color\": color, \"line-width\": 2 },\n layout: { visibility: \"none\" },\n },\n beforeId\n );\n mapRef.current.on(\"click\", fillId, onDescendantClick);\n mapRef.current.on(\"mouseenter\", fillId, onMouseEnter);\n mapRef.current.on(\"mouseleave\", fillId, onMouseLeave);\n descendantLayersRef.current.add(t.id);\n }\n });\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [styleReady, descendantState, descendantColors]);\n\n const onDescendantClick = (e) => {\n const map = mapRef.current;\n if (!map) return;\n const feature = e.features?.[0];\n const key = feature?.properties?._recordKey;\n const data = key ? descendantRecordMapRef.current.get(key) : null;\n if (!data) return;\n if (popupRef.current) popupRef.current.remove();\n popupRef.current = new maplibregl.Popup({ closeButton: true, maxWidth: \"320px\" })\n .setLngLat(e.lngLat)\n .setHTML(descendantPopupHtml(data.taxon, data.record))\n .addTo(map);\n };\n\n // Sync descendant visibility.\n useEffect(() => {\n const map = mapRef.current;\n if (!map) return;\n descendantLayersRef.current.forEach((id) => {\n const v = visibleTaxonIds.has(id) ? \"visible\" : \"none\";\n if (map.getLayer(descendantFillId(id))) {\n map.setLayoutProperty(descendantFillId(id), \"visibility\", v);\n }\n if (map.getLayer(descendantLineId(id))) {\n map.setLayoutProperty(descendantLineId(id), \"visibility\", v);\n }\n });\n }, [visibleTaxonIds, descendantState]);\n\n // Trigger descendant fetch (on control open).\n const triggerDescendantFetch = () => {\n if (fetchTriggeredRef.current) return;\n if (!datasetKey || !focalTaxon || !rankOrder) return;\n const focalRank = focalTaxon?.name?.rank;\n if (!focalRank) return;\n if (focalRank !== \"species\" && !INFRASPECIFIC_RANKS.includes(focalRank)) return;\n const ranks = getDescendantRanks(focalRank, rankOrder);\n if (ranks.length === 0) return;\n fetchTriggeredRef.current = true;\n setDescendantState({ status: \"loading\", taxa: [] });\n fetchDescendants({ datasetKey, focalTaxon, rankOrder }).then(\n ({ taxa, descendantsFailed }) => {\n if (descendantsFailed) {\n setDescendantState({ status: \"error\", taxa: [] });\n return;\n }\n if (taxa.length === 0) {\n setDescendantState({ status: \"empty\", taxa: [] });\n return;\n }\n setDescendantState({ status: \"ready\", taxa });\n }\n );\n };\n\n const openControl = () => {\n setControlOpen(true);\n triggerDescendantFetch();\n };\n\n // Group descendants by rank for the control panel.\n const descendantsByRank = useMemo(() => {\n if (descendantState.status !== \"ready\") return [];\n const byRank = {};\n descendantState.taxa\n .filter((t) => t.mappable.length > 0)\n .forEach((t) => {\n (byRank[t.rank] = byRank[t.rank] || []).push(t);\n });\n return INFRASPECIFIC_RANKS.filter((r) => byRank[r]).map((r) => ({\n rank: r,\n label: rankLabelPlural(r),\n taxa: byRank[r].slice().sort((a, b) =>\n a.scientificName.localeCompare(b.scientificName)\n ),\n }));\n }, [descendantState]);\n\n const toggleTaxon = (id) => {\n setVisibleTaxonIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const toggleRankGroup = (rankTaxa) => {\n setVisibleTaxonIds((prev) => {\n const next = new Set(prev);\n const allOn = rankTaxa.every((t) => prev.has(t.id));\n rankTaxa.forEach((t) => {\n if (allOn) next.delete(t.id);\n else next.add(t.id);\n });\n return next;\n });\n };\n\n if (!supported()) {\n return (\n <div\n style={{\n padding: 12,\n background: \"#fafafa\",\n border: \"1px solid #eee\",\n borderRadius: 4,\n color: \"#666\",\n fontSize: 12,\n }}\n >\n Maps require WebGL, which your browser doesn't support.\n </div>\n );\n }\n\n const focalName = focalTaxon?.name?.scientificName || \"This taxon\";\n\n return (\n <div className=\"col-distributions-map\" style={{ position: \"relative\" }}>\n <div\n ref={containerRef}\n style={{ height: 360, width: \"100%\", background: \"#f5f5f5\" }}\n />\n\n <LayerControl\n open={controlOpen}\n onOpen={openControl}\n onClose={() => setControlOpen(false)}\n focalName={focalName}\n focalReady={focalReady}\n focalVisible={focalVisible}\n onToggleFocal={() => setFocalVisible((v) => !v)}\n gbifEnabled={!!gbifChecklistKey}\n gbifVisible={gbifVisible}\n gbifAvailable={gbifAvailable}\n onToggleGbif={handleToggleGbif}\n descendantStatus={descendantState.status}\n descendantsByRank={descendantsByRank}\n descendantColors={descendantColors}\n visibleTaxonIds={visibleTaxonIds}\n onToggleTaxon={toggleTaxon}\n onToggleRankGroup={toggleRankGroup}\n onRetry={() => {\n fetchTriggeredRef.current = false;\n setDescendantState({ status: \"idle\", taxa: [] });\n triggerDescendantFetch();\n }}\n />\n\n {!showDescendantLegend &&\n (presentMeans.length > 0 ||\n (gbifChecklistKey && gbifAvailable !== false && gbifVisible)) && (\n <div\n style={{\n position: \"absolute\",\n bottom: 8,\n left: 8,\n zIndex: 1,\n background: \"#fff\",\n borderRadius: 4,\n boxShadow: \"0 1px 4px rgba(0,0,0,0.2)\",\n padding: \"6px 8px\",\n fontSize: 12,\n lineHeight: 1.5,\n }}\n >\n {presentMeans.map((m) => (\n <div\n key={m.key}\n style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}\n >\n <span\n style={{\n display: \"inline-block\",\n width: 12,\n height: 12,\n background: m.color,\n border: \"1px solid rgba(0,0,0,0.15)\",\n borderRadius: 2,\n }}\n />\n <span>{m.label}</span>\n </div>\n ))}\n {gbifChecklistKey && gbifAvailable !== false && gbifVisible && (\n <GbifLegendEntry />\n )}\n </div>\n )}\n {showDescendantLegend && (\n <IncludedTaxaLegend\n visibleGroups={descendantLegend.visibleGroups}\n unmappableGroups={descendantLegend.unmappableGroups}\n showGbif={!!gbifChecklistKey && gbifAvailable !== false && gbifVisible}\n />\n )}\n </div>\n );\n};\n\n// Layer toggle panel — collapsed \"+\" button at top-right that expands on click.\nconst LayerControl = ({\n open,\n onOpen,\n onClose,\n focalName,\n focalReady,\n focalVisible,\n onToggleFocal,\n gbifEnabled,\n gbifVisible,\n gbifAvailable,\n onToggleGbif,\n descendantStatus,\n descendantsByRank,\n descendantColors,\n visibleTaxonIds,\n onToggleTaxon,\n onToggleRankGroup,\n onRetry,\n}) => {\n if (!open) {\n return (\n <button\n type=\"button\"\n onClick={onOpen}\n onMouseEnter={onOpen}\n title=\"Layers\"\n style={{\n position: \"absolute\",\n top: 10,\n right: 10,\n zIndex: 2,\n width: 30,\n height: 30,\n background: \"#fff\",\n border: \"1px solid rgba(0,0,0,0.2)\",\n borderRadius: 4,\n cursor: \"pointer\",\n fontSize: 18,\n lineHeight: \"26px\",\n padding: 0,\n boxShadow: \"0 1px 4px rgba(0,0,0,0.2)\",\n }}\n >\n +\n </button>\n );\n }\n return (\n <div\n style={{\n position: \"absolute\",\n top: 10,\n right: 10,\n zIndex: 2,\n background: \"#fff\",\n borderRadius: 4,\n boxShadow: \"0 1px 4px rgba(0,0,0,0.2)\",\n padding: \"6px 10px\",\n fontSize: 12,\n lineHeight: 1.5,\n maxHeight: 320,\n overflowY: \"auto\",\n minWidth: 160,\n }}\n onMouseLeave={onClose}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <input\n type=\"checkbox\"\n checked={focalVisible}\n disabled={!focalReady}\n onChange={onToggleFocal}\n />\n <span style={{ fontStyle: \"italic\" }}>{focalName}</span>\n </div>\n {gbifEnabled && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n opacity: gbifAvailable === false ? 0.5 : 1,\n }}\n title={\n gbifAvailable === false\n ? \"GBIF has no occurrence records for this taxon.\"\n : undefined\n }\n >\n <input\n type=\"checkbox\"\n checked={gbifAvailable === false ? false : gbifVisible}\n disabled={gbifAvailable === false}\n onChange={onToggleGbif}\n />\n <span>GBIF occurrences</span>\n </div>\n )}\n {descendantStatus === \"loading\" && (\n <div style={{ marginTop: 6, color: \"#888\" }}>Loading descendants…</div>\n )}\n {descendantStatus === \"error\" && (\n <div style={{ marginTop: 6, color: \"#888\" }}>\n Couldn&apos;t load descendants.{\" \"}\n <a onClick={onRetry} style={{ cursor: \"pointer\" }}>\n Retry\n </a>\n </div>\n )}\n {descendantStatus === \"ready\" &&\n descendantsByRank.map((group) => {\n const allOn = group.taxa.every((t) => visibleTaxonIds.has(t.id));\n const someOn = group.taxa.some((t) => visibleTaxonIds.has(t.id));\n return (\n <div key={group.rank} style={{ marginTop: 6 }}>\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n fontWeight: 600,\n }}\n >\n <input\n type=\"checkbox\"\n checked={allOn}\n ref={(el) => {\n if (el) el.indeterminate = !allOn && someOn;\n }}\n onChange={() => onToggleRankGroup(group.taxa)}\n />\n {group.label}\n </label>\n <div style={{ paddingLeft: 18 }}>\n {group.taxa.map((t) => (\n <label\n key={t.id}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n }}\n >\n <input\n type=\"checkbox\"\n checked={visibleTaxonIds.has(t.id)}\n onChange={() => onToggleTaxon(t.id)}\n />\n <span\n style={{\n display: \"inline-block\",\n width: 10,\n height: 10,\n background: descendantColors[t.id],\n border: \"1px solid rgba(0,0,0,0.15)\",\n borderRadius: 2,\n }}\n />\n <span style={{ fontStyle: \"italic\" }}>\n {epithet(t.scientificName)}\n </span>\n </label>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default DistributionsMap;\n","import { useState, useEffect } from \"react\";\nimport { Radio } from \"antd\";\nimport _ from \"lodash\";\nimport ReferencePopover from \"./ReferencePopover\";\nimport config from \"../config\";\nimport axios from \"axios\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport DistributionsMap from \"./DistributionsMap\";\n\nconst isMappable = (r) =>\n r?.area?.gazetteer !== \"text\" && !!r?.area?.globalId;\n\nconst ListView = ({ datasetKey, data }) => {\n const [iso3Map, setIso3Map] = useState({});\n\n useEffect(() => {\n let isIso = false;\n for (let i = 0; i < data.length; i++) {\n if (data[i].gazetteer === \"iso\") {\n isIso = true;\n break;\n }\n }\n if (isIso) {\n axios(`${config.dataApi}vocab/country`).then((res) => {\n setIso3Map(_.keyBy(res.data, \"alpha3\"));\n });\n }\n }, []);\n\n return (\n <div>\n {data.map((s, i) => (\n <span key={i}>\n {s?.merged && (\n <MergedDataBadge\n createdBy={s?.createdBy}\n datasetKey={s.datasetKey}\n sourceDatasetKey={s?.sourceDatasetKey}\n verbatimSourceKey={s?.verbatimSourceKey}\n style={{ marginRight: \"4px\" }}\n />\n )}\n {(_.get(iso3Map, `[${_.get(s, \"area.name\")}].name`)\n ? _.startCase(_.get(iso3Map, `[${_.get(s, \"area.name\")}].name`))\n : null) ||\n _.get(s, \"area.name\") ||\n _.get(s, \"area.globalId\")}{\" \"}\n {s.referenceId && (\n <ReferencePopover\n datasetKey={datasetKey}\n referenceId={s.referenceId}\n placement=\"bottom\"\n />\n )}\n {i < data.length - 1 && \", \"}\n </span>\n ))}\n </div>\n );\n};\n\nconst DistributionsTable = ({\n datasetKey,\n data,\n style,\n showDistributionMap,\n focalTaxon,\n rankOrder,\n gbifChecklistKey,\n}) => {\n const mappable = data.filter(isMappable);\n const baseUnmappable = data.length - mappable.length;\n const hasGbifConfigured = !!gbifChecklistKey;\n const hasAnyRecords = data.length > 0;\n const [view, setView] = useState(\"map\");\n const [fetchFailures, setFetchFailures] = useState(0);\n\n // null = unknown (loading or unconfigured), number = occurrence count.\n const [gbifCount, setGbifCount] = useState(null);\n useEffect(() => {\n if (!gbifChecklistKey || !focalTaxon?.id) {\n setGbifCount(null);\n return undefined;\n }\n setGbifCount(null);\n let cancelled = false;\n axios\n .get(`${config.gbifApi}/v1/occurrence/search`, {\n params: {\n checklistKey: gbifChecklistKey,\n taxonKey: focalTaxon.id,\n hasCoordinate: true,\n hasGeospatialIssue: false,\n occurrenceStatus: 'PRESENT',\n limit: 0,\n },\n })\n .then(\n (res) => {\n if (!cancelled) setGbifCount(res?.data?.count ?? 0);\n },\n () => {\n // On API failure, treat as \"unknown\" — leave the toggle enabled\n // rather than greying it out for an outage.\n if (!cancelled) setGbifCount(null);\n }\n );\n return () => {\n cancelled = true;\n };\n }, [gbifChecklistKey, focalTaxon?.id]);\n\n // true → GBIF has occurrences (or unknown — still loading or API failed)\n // false → GBIF returned count = 0\n const gbifAvailable = !hasGbifConfigured\n ? false\n : gbifCount === null || gbifCount > 0;\n\n const allMappableFailed =\n mappable.length > 0 && fetchFailures >= mappable.length;\n const showMap =\n showDistributionMap &&\n (mappable.length > 0 || gbifAvailable) &&\n !(mappable.length > 0 && allMappableFailed && !gbifAvailable);\n\n // GBIF configured but found 0 occurrences AND nothing else mappable → say so.\n if (\n !showMap &&\n hasGbifConfigured &&\n mappable.length === 0 &&\n gbifCount === 0\n ) {\n return (\n <div style={style}>\n <span style={{ color: \"#888\" }}>\n No occurrence data on GBIF for this taxon.\n </span>\n </div>\n );\n }\n\n // Fall back to the plain list when there's no map to show.\n if (!showMap) {\n if (!hasAnyRecords) return null;\n return (\n <div style={style}>\n <ListView datasetKey={datasetKey} data={data} />\n </div>\n );\n }\n\n const unmappable = baseUnmappable + fetchFailures;\n const showToggle = hasAnyRecords;\n const activeView = showToggle ? view : \"map\";\n\n return (\n <div style={style}>\n {showToggle ? (\n <Radio.Group\n size=\"small\"\n value={activeView}\n onChange={(e) => setView(e.target.value)}\n style={{ marginBottom: 8 }}\n >\n <Radio.Button value=\"map\">Map</Radio.Button>\n <Radio.Button value=\"list\">List</Radio.Button>\n </Radio.Group>\n ) : (\n // Reserve the vertical space the Map/List toggle would occupy so the\n // map's top edge lines up with the \"Distributions\" label.\n <div style={{ height: 24, marginBottom: 8 }} />\n )}\n {activeView === \"map\" ? (\n <>\n <DistributionsMap\n records={mappable}\n onUnmappable={setFetchFailures}\n datasetKey={datasetKey}\n focalTaxon={focalTaxon}\n rankOrder={rankOrder}\n gbifChecklistKey={gbifChecklistKey}\n gbifAvailable={gbifAvailable}\n />\n {showToggle && unmappable > 0 && (\n <div style={{ marginTop: 6 }}>\n <a onClick={() => setView(\"list\")} style={{ cursor: \"pointer\" }}>\n +{unmappable} distribution{unmappable === 1 ? \"\" : \"s\"} not on\n map\n </a>\n </div>\n )}\n </>\n ) : (\n <ListView datasetKey={datasetKey} data={data} />\n )}\n </div>\n );\n};\n\nexport default DistributionsTable;\n","import React from \"react\";\nimport { LinkTo } from \"../router\";\n\nconst rankStyle = {\n color: \"rgba(0, 0, 0, 0.45)\",\n fontSize: \"11px\",\n};\n\nconst ClassificationTable = ({ data, style }) => (\n <div style={style}>\n {\" \"}\n {data.map((t, i) => (\n <div style={{ float: \"left\", marginRight: \"3px\" }} key={t.rank}>\n <span style={rankStyle}>{t.rank}: </span>\n <LinkTo to=\"taxon\" args={t.id}>\n <span dangerouslySetInnerHTML={{ __html: t.labelHtml }} />\n </LinkTo>\n {i < data.length - 1 && \" >\"}\n </div>\n ))}\n </div>\n);\n\nexport default ClassificationTable;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import React from 'react';\nimport { QuestionCircleOutlined } from '@ant-design/icons';\nimport { Tooltip } from 'antd';\nimport injectSheet from 'react-jss';\n\nconst styles = {\n tip: {\n color: 'rgba(0,0,0,.45)',\n marginLeft: '4px',\n },\n icon: {\n marginTop: '4px'\n }\n};\n\nconst Help = ({ title, classes }) => {\n return (\n <React.Fragment>\n {title && <span className={classes.tip}>\n <Tooltip title={title} getPopupContainer={() =>\n document.getElementsByClassName(`catalogue-of-life`)[0]\n }>\n <QuestionCircleOutlined className={classes.icon} />\n </Tooltip>\n </span>}\n </React.Fragment>\n );\n};\n\n\n\nexport default injectSheet(styles)(Help);","import React from 'react';\nimport injectSheet from 'react-jss';\nimport { Row, Col } from 'antd';\nimport PropTypes from 'prop-types';\n\nimport Help from './Help';\n\n// Wrappers\nimport withWidth, { MEDIUM } from './Width';\n\nconst styles = {\n formItem: {\n paddingBottom: 0,\n width: '100%',\n clear: 'both',\n borderBottom: '1px solid #eee',\n '&:last-of-type': {\n border: 'none'\n },\n '&>div': {\n paddingLeft: 10,\n paddingRight: 10\n }\n },\n label: {\n display: 'block',\n color: 'rgba(0, 0, 0, 0.85)'\n },\n content: {\n wordBreak: 'break-word',\n marginBottom: 0\n },\n noContent: {\n wordBreak: 'break-word',\n color: '#bbb',\n marginBottom: 0\n },\n contentCol: {\n wordBreak: 'break-word'\n },\n smallMargin: {\n marginBottom: 3,\n marginTop: 3\n },\n mediumMargin: {\n marginBottom: 10,\n marginTop: 10\n }\n};\n\n/**\n * Component responsible for data display in a read mode\n * @param label - label text\n * @param helpText - text to be displayed as a tip\n * @param md - Label column width on medium devices - seconds column is the reamining.\n * @param size - how dense should the layout be. options: 'small', 'medium' (default).\n * @param classes - passed from injectSheet wrapper, CSS styles from styles object above\n * @param children - wrapped content\n * @param width - passed from withWidth wrapper, data about current page size\n * @returns {*}\n * @constructor\n */\nconst PresentationItem = ({ label, helpText, classes, children, width, md, size }) => {\n const getValue = () => {\n let value;\n\n if (Array.isArray(children) && children.length > 0) {\n value = children.map((item, i) => (<span className={classes.content} key={i}>{item}</span>));\n } else if (!Array.isArray(children) && typeof children !== 'undefined') {\n value = <span className={classes.content}>{children}</span>;\n }\n\n return value;\n };\n\n const medium = md || 8;\n const mediumCol2 = medium < 24 ? 24 - medium : 24;\n const marginSize = size === 'medium' ? classes.mediumMargin : classes.smallMargin;\n return (\n <Row className={classes.formItem}>\n <Col sm={24} md={medium} style={width < MEDIUM ? { marginBottom: 0 } : {}} className={marginSize}>\n <div>\n <dt className={classes.label}>\n {label}\n <Help title={helpText}/>\n </dt>\n </div>\n </Col>\n <Col sm={24} md={mediumCol2} style={width < MEDIUM ? { marginTop: 0 } : {}} className={marginSize}>\n {getValue()}\n </Col>\n </Row>\n );\n};\n\nPresentationItem.propTypes = {\n label: PropTypes.string.isRequired,\n helpText: PropTypes.object\n};\n\nexport default withWidth()(injectSheet(styles)(PresentationItem));\n","import React from \"react\";\nimport PresentationItem from \"../components/PresentationItem\";\nimport _ from \"lodash\";\n\nconst getLabel = (r, reverse) => {\n if (!reverse) {\n // return `${_.capitalize(r.type)} ${typeMap[r.type] ? typeMap[r.type] : \"\"}`;\n switch (r.type) {\n case \"spelling correction\":\n return \"Spelling correction of\";\n case \"based on\":\n return \"Based on\";\n case \"replacement name\":\n return \"Replacement name of\";\n case \"later homonym\":\n return \"Later homonym of\";\n case \"superfluous\":\n return \"Superfluous name for\";\n case \"basionym\":\n return \"Basionym\";\n case \"type\":\n return \"Type\";\n default:\n return _.capitalize(r.type);\n }\n } else {\n switch (r.type) {\n case \"spelling correction\":\n return \"Has spelling correction\";\n case \"based on\":\n return \"Other name based on this\";\n case \"replacement name\":\n return \"Replaced by\";\n case \"later homonym\":\n return \"Has later homonym\";\n case \"superfluous\":\n return \"Has superfluous name\";\n case \"basionym\":\n return \"Basionym of\";\n case \"type\":\n return \"Type of\";\n default:\n return _.capitalize(r.type);\n }\n }\n};\n\n\n\nconst NameRelations = ({ data, md, reverse }) =>\n data.map((r, idx) => {\n \n return (\n <PresentationItem\n md={md}\n key={idx}\n label={getLabel(r, reverse)}\n helpText={r.note}\n >\n\n {/*<span dangerouslySetInnerHTML={{ __html: r.relatedName.labelHtml }}></span> */}\n {!reverse && (\n <span\n dangerouslySetInnerHTML={{\n __html: r.relatedName.labelHtml,\n }}\n />\n )}\n {reverse && (\n <span\n dangerouslySetInnerHTML={{\n __html: r.name.labelHtml,\n }}\n />\n )}\n </PresentationItem>\n );\n });\n\nexport default NameRelations;\n\n","import React, { useEffect } from \"react\";\nimport _ from \"lodash\";\nimport linkify from \"linkify-html\";\nimport { Row, Col } from \"antd\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport DOMPurify from \"dompurify\";\n\nconst ReferencesTable = ({\n data,\n referenceIndexMap,\n style,\n primarySourceDatasetKey,\n}) => {\n useEffect(() => {}, [referenceIndexMap]);\n return (\n <div style={style} className=\"col-reference-link-container\">\n {_.values(data).map((s) => (\n <Row key={s.id}>\n <Col style={{ paddingRight: \"5px\" }}>\n {_.get(referenceIndexMap, s.id) && (\n <span>{`[${_.get(referenceIndexMap, s.id)}]`}</span>\n )}\n </Col>\n <Col span={20}>\n {s?.sourceDataset?.key !== primarySourceDatasetKey && (\n <MergedDataBadge\n createdBy={s?.createdBy}\n datasetKey={s.datasetKey}\n verbatimSourceKey={s?.verbatimSourceKey}\n sourceDatasetKey={s?.sourceDataset?.key}\n />\n )}\n <span\n id={`col-reference-${s.id}`}\n dangerouslySetInnerHTML={{\n __html: linkify(DOMPurify.sanitize(s.citation)),\n }}\n ></span>\n </Col>\n </Row>\n ))}\n </div>\n );\n};\n\nexport default ReferencesTable;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),Y=_.prototype;return O.prototype=Y,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){Y[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","import React from \"react\";\nimport _ from \"lodash\";\nimport PresentationItem from \"../components/PresentationItem\";\nimport { LinkTo } from \"../router\";\n\nconst IncludesTable = ({ data, style, rank, taxon }) => {\n const rankToPlural = rank.reduce(\n (acc, cur) => ((acc[cur.value] = cur.plural), acc),\n {}\n );\n return (\n <div style={style}>\n {\" \"}\n {data\n .filter((t) => t.value !== taxon.name.rank)\n .sort((a, b) => rank.indexOf(a.value) - rank.indexOf(b.value))\n .map((t) => (\n <PresentationItem\n md={6}\n label={_.startCase(rankToPlural[t.value] || t.value)}\n classes={{ formItem: { borderBottom: \"none\" } }}\n key={t.value}\n >\n <LinkTo\n to=\"search\"\n args={{\n TAXON_ID: taxon.id,\n rank: t.value,\n status: [\"accepted\", \"provisionally accepted\"],\n }}\n >\n {t.count}\n </LinkTo>\n </PresentationItem>\n ))}\n </div>\n );\n};\n\nexport default IncludesTable;\n","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;","export default `%3Csvg width='423px' height='341px' viewBox='0 0 423 341' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EGroup 4%3C/title%3E%3Cg id='Ant-Design-Pro-3.0' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='404' transform='translate(-484.000000, -221.000000)'%3E%3Cg id='Group-4' transform='translate(464.000000, 222.000000)'%3E%3Cg id='Group-5' transform='translate(75.417348, 0.163879)' stroke='%23A3B1BF' stroke-width='1.62' opacity='0.6' stroke-linejoin='round' stroke-dasharray='12.15'%3E%3Cpath d='M169.575185,288.890375 C103.647066,288.890375 50.2010204,235.455806 50.2010204,169.540425 C50.2010204,103.625045 103.647066,50.1904762 169.575185,50.1904762 C235.50394,50.1904762 288.94935,103.625045 288.94935,169.540425 C288.94935,235.455806 235.50394,288.890375 169.575185,288.890375 Z' id='Stroke-1'%3E%3C/path%3E%3Cpath d='M169.405699,338.555288 C76.0274364,338.555288 0.329411882,262.872619 0.329411882,169.513299 C0.329411882,76.1539786 76.0274364,0.471309613 169.405699,0.471309613 C262.783961,0.471309613 338.481985,76.1539786 338.481985,169.513299 C338.481985,262.872619 262.783961,338.555288 169.405699,338.555288 Z' id='Stroke-3'%3E%3C/path%3E%3C/g%3E%3Cpolygon id='Fill-6' fill='%23F5F5F5' transform='translate(106.914750, 199.432805) rotate(22.000000) translate(-106.914750, -199.432805) ' points='97.7112298 198.803016 116.11827 190.231152 107.544667 208.634458'%3E%3C/polygon%3E%3Cpolygon id='Stroke-7' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(106.914750, 199.432805) rotate(22.000000) translate(-106.914750, -199.432805) ' points='97.7112298 198.803016 116.11827 190.231152 107.544667 208.634458'%3E%3C/polygon%3E%3Cpolygon id='Fill-8' transform='translate(58.996118, 219.767028) rotate(22.000000) translate(-58.996118, -219.767028) ' points='38.8543444 215.183828 54.4119879 199.629341 79.1378915 224.350228 63.580248 239.904716'%3E%3C/polygon%3E%3Cpolygon id='Stroke-9' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(58.996118, 219.767028) rotate(22.000000) translate(-58.996118, -219.767028) ' points='38.8543444 215.183828 54.4119879 199.629341 79.1378915 224.350228 63.580248 239.904716'%3E%3C/polygon%3E%3Cpolygon id='Fill-10' fill='%23F5F5F5' transform='translate(71.226096, 214.577614) rotate(22.000000) translate(-71.226096, -214.577614) ' points='51.4642422 198.657893 55.3028278 194.820086 90.9879502 230.497335 87.1487294 234.335141'%3E%3C/polygon%3E%3Cpolygon id='Stroke-11' stroke='%23A3B1BF' stroke-width='1.62' fill='%23F0F2F5' stroke-linejoin='round' transform='translate(71.226096, 214.577614) rotate(22.000000) translate(-71.226096, -214.577614) ' points='51.4642422 198.657893 55.3028278 194.820086 90.9879502 230.497335 87.1487294 234.335141'%3E%3C/polygon%3E%3Cpolygon id='Fill-12' transform='translate(84.698338, 273.903349) rotate(22.000000) translate(-84.698338, -273.903349) ' points='56.0769883 259.690379 70.4821667 245.288122 113.319688 288.116319 98.9145099 302.518575'%3E%3C/polygon%3E%3Cpolygon id='Stroke-13' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(84.698338, 273.903349) rotate(22.000000) translate(-84.698338, -273.903349) ' points='56.0769883 259.690379 70.4821667 245.288122 113.319688 288.116319 98.9145099 302.518575'%3E%3C/polygon%3E%3Cpolygon id='Fill-14' transform='translate(75.456149, 212.782520) rotate(22.000000) translate(-75.456149, -212.782520) ' points='63.8911557 203.879723 66.5512281 201.22019 87.0211429 221.685318 84.3604352 224.34485'%3E%3C/polygon%3E%3Cpolygon id='Stroke-15' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(75.456149, 212.782520) rotate(22.000000) translate(-75.456149, -212.782520) ' points='63.8911557 203.879723 66.5512281 201.22019 87.0211429 221.685318 84.3604352 224.34485'%3E%3C/polygon%3E%3Cpolygon id='Fill-16' fill='%23F5F5F5' transform='translate(78.176142, 202.618192) rotate(22.000000) translate(-78.176142, -202.618192) ' points='74.4026766 205.006817 80.5652518 198.845492 81.9496076 200.229567 75.7870324 206.390892'%3E%3C/polygon%3E%3Cpolygon id='Stroke-17' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(78.176142, 202.618192) rotate(22.000000) translate(-78.176142, -202.618192) ' points='74.4026766 205.006817 80.5652518 198.845492 81.9496076 200.229567 75.7870324 206.390892'%3E%3C/polygon%3E%3Cpolygon id='Fill-18' fill='%23F5F5F5' transform='translate(84.676979, 217.928886) rotate(22.000000) translate(-84.676979, -217.928886) ' points='80.9035138 220.317511 87.066089 214.156186 88.4504448 215.540261 82.2878696 221.701586'%3E%3C/polygon%3E%3Cpolygon id='Stroke-19' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(84.676979, 217.928886) rotate(22.000000) translate(-84.676979, -217.928886) ' points='80.9035138 220.317511 87.066089 214.156186 88.4504448 215.540261 82.2878696 221.701586'%3E%3C/polygon%3E%3Cpolygon id='Fill-20' transform='translate(70.238421, 242.404581) rotate(22.000000) translate(-70.238421, -242.404581) ' points='67.8493111 238.631881 74.0118863 244.793206 72.6275305 246.177281 66.4649553 240.015956'%3E%3C/polygon%3E%3Cpolygon id='Stroke-21' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(70.238421, 242.404581) rotate(22.000000) translate(-70.238421, -242.404581) ' points='67.8493111 238.631881 74.0118863 244.793206 72.6275305 246.177281 66.4649553 240.015956'%3E%3C/polygon%3E%3Cpolygon id='Fill-22' transform='translate(48.081755, 224.398789) rotate(22.000000) translate(-48.081755, -224.398789) ' points='35.1127107 220.725179 36.3242602 211.432376 61.0507992 236.153899 51.756111 237.365203'%3E%3C/polygon%3E%3Cpolygon id='Stroke-23' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(48.081755, 224.398789) rotate(22.000000) translate(-48.081755, -224.398789) ' points='35.1127107 220.725179 36.3242602 211.432376 61.0507992 236.153899 51.756111 237.365203'%3E%3C/polygon%3E%3Cpolygon id='Fill-24' transform='translate(38.612968, 228.416820) rotate(22.000000) translate(-38.612968, -228.416820) ' points='32.9179858 217.470622 26.2496982 216.056058 50.9762371 240.777581 49.5613861 234.110647'%3E%3C/polygon%3E%3Cpolygon id='Stroke-25' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(38.612968, 228.416820) rotate(22.000000) translate(-38.612968, -228.416820) ' points='32.9179858 217.470622 26.2496982 216.056058 50.9762371 240.777581 49.5613861 234.110647'%3E%3C/polygon%3E%3Cpolygon id='Fill-26' transform='translate(31.086342, 221.523909) rotate(22.000000) translate(-31.086342, -221.523909) ' points='32.6469986 217.297684 26.8592604 218.37941 34.2314793 225.750133 35.3134242 219.963569'%3E%3C/polygon%3E%3Cpolygon id='Stroke-27' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(31.086342, 221.523909) rotate(22.000000) translate(-31.086342, -221.523909) ' points='32.6469986 217.297684 26.8592604 218.37941 34.2314793 225.750133 35.3134242 219.963569'%3E%3C/polygon%3E%3Cpolygon id='Fill-28' transform='translate(38.344372, 238.617819) rotate(22.000000) translate(-38.344372, -238.617819) ' points='39.9050284 234.391595 34.1172902 235.47332 41.4895091 242.844044 42.571454 237.05748'%3E%3C/polygon%3E%3Cpolygon id='Stroke-29' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(38.344372, 238.617819) rotate(22.000000) translate(-38.344372, -238.617819) ' points='39.9050284 234.391595 34.1172902 235.47332 41.4895091 242.844044 42.571454 237.05748'%3E%3C/polygon%3E%3Cpolygon id='Fill-30' fill='%23F0F2F5' transform='translate(75.352798, 203.766862) rotate(22.000000) translate(-75.352798, -203.766862) ' points='71.4417859 201.708217 73.2937351 199.856644 79.2638092 205.824871 77.4118601 207.67708'%3E%3C/polygon%3E%3Cpolygon id='Stroke-31' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(75.352798, 203.766862) rotate(22.000000) translate(-75.352798, -203.766862) ' points='71.4417859 201.708217 73.2937351 199.856644 79.2638092 205.824871 77.4118601 207.67708'%3E%3C/polygon%3E%3Cpolygon id='Fill-32' fill='%23F0F2F5' transform='translate(81.871541, 219.119730) rotate(22.000000) translate(-81.871541, -219.119730) ' points='77.9605297 217.061085 79.8124789 215.209512 85.7825531 221.177739 83.9306039 223.029948'%3E%3C/polygon%3E%3Cpolygon id='Stroke-33' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(81.871541, 219.119730) rotate(22.000000) translate(-81.871541, -219.119730) ' points='77.9605297 217.061085 79.8124789 215.209512 85.7825531 221.177739 83.9306039 223.029948'%3E%3C/polygon%3E%3Cpolygon id='Fill-34' transform='translate(68.034935, 237.215417) rotate(22.000000) translate(-68.034935, -237.215417) ' points='65.1594898 237.106164 67.9256601 234.340555 70.9103796 237.324669 68.1442092 240.090278'%3E%3C/polygon%3E%3Cpolygon id='Stroke-35' stroke='%23A3B1BF' stroke-width='1.62' fill='%23F5F5F5' stroke-linejoin='round' transform='translate(68.034935, 237.215417) rotate(22.000000) translate(-68.034935, -237.215417) ' points='65.1594898 237.106164 67.9256601 234.340555 70.9103796 237.324669 68.1442092 240.090278'%3E%3C/polygon%3E%3Cpath d='M90.2556147,213.065319 C79.2271463,202.039088 74.6433339,188.153875 78.4889079,179.512775 C79.1248602,178.084237 80.8319571,175.429786 84.5339495,179.131027 C88.2353065,182.832268 120.560237,215.150007 123.931865,218.52095 C127.303492,221.891894 125.245065,224.192545 123.817508,224.827733 C115.174655,228.675068 101.284718,224.092186 90.2556147,213.065319 Z' id='Fill-36' fill='%23F5F5F5' transform='translate(101.453924, 201.708917) rotate(22.000000) translate(-101.453924, -201.708917) '%3E%3C/path%3E%3Cpath d='M90.2556147,213.065319 C79.2271463,202.039088 74.6433339,188.153875 78.4889079,179.512775 C79.1248602,178.084237 80.8319571,175.429786 84.5339495,179.131027 C88.2353065,182.832268 120.560237,215.150007 123.931865,218.52095 C127.303492,221.891894 125.245065,224.192545 123.817508,224.827733 C115.174655,228.675068 101.284718,224.092186 90.2556147,213.065319 Z' id='Stroke-38' stroke='%23A3B1BF' stroke-width='1.62' fill='%23F0F2F5' stroke-linejoin='round' transform='translate(101.453924, 201.708917) rotate(22.000000) translate(-101.453924, -201.708917) '%3E%3C/path%3E%3Cpolygon id='Fill-40' fill='%23F0F2F5' transform='translate(86.633853, 208.038961) rotate(22.000000) translate(-86.633853, -208.038961) ' points='77.9716233 201.230061 79.8235724 199.378488 95.2960835 214.84786 93.4441343 216.699433'%3E%3C/polygon%3E%3Cpolygon id='Stroke-42' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(86.633853, 208.038961) rotate(22.000000) translate(-86.633853, -208.038961) ' points='77.9716233 201.230061 79.8235724 199.378488 95.2960835 214.84786 93.4441343 216.699433'%3E%3C/polygon%3E%3Cpath d='M121.635514,196.068815 C120.517356,197.186746 118.704797,197.186746 117.586639,196.068815 C116.469116,194.950884 116.469116,193.138692 117.586639,192.020761 C118.704797,190.903465 120.517356,190.903465 121.635514,192.020761 C122.753672,193.138692 122.753672,194.950884 121.635514,196.068815' id='Fill-44' fill='%23A3B1BF' transform='translate(119.611315, 194.045026) rotate(22.000000) translate(-119.611315, -194.045026) '%3E%3C/path%3E%3Cpolygon id='Fill-46' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(81.250567, 248.056422) rotate(22.000000) translate(-81.250567, -248.056422) ' points='81.2505672 249.672341 79.6343206 248.056422 81.2505672 246.440503 82.8668137 248.056422'%3E%3C/polygon%3E%3Cpolygon id='Stroke-48' transform='translate(81.250567, 248.056422) rotate(22.000000) translate(-81.250567, -248.056422) ' points='81.2505672 249.672341 79.6343206 248.056422 81.2505672 246.440503 82.8668137 248.056422'%3E%3C/polygon%3E%3Cpolygon id='Fill-50' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(82.702196, 251.475282) rotate(22.000000) translate(-82.702196, -251.475282) ' points='82.7021965 253.091201 81.0859499 251.475282 82.7021965 249.859363 84.318443 251.475282'%3E%3C/polygon%3E%3Cpolygon id='Stroke-52' transform='translate(82.702196, 251.475282) rotate(22.000000) translate(-82.702196, -251.475282) ' points='82.7021965 253.091201 81.0859499 251.475282 82.7021965 249.859363 84.318443 251.475282'%3E%3C/polygon%3E%3Cpolygon id='Fill-54' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(84.153791, 254.894059) rotate(22.000000) translate(-84.153791, -254.894059) ' points='84.1537906 256.509978 82.5375441 254.894059 84.1537906 253.278141 85.7700372 254.894059'%3E%3C/polygon%3E%3Cpolygon id='Stroke-56' transform='translate(84.153791, 254.894059) rotate(22.000000) translate(-84.153791, -254.894059) ' points='84.1537906 256.509978 82.5375441 254.894059 84.1537906 253.278141 85.7700372 254.894059'%3E%3C/polygon%3E%3Cpolygon id='Fill-58' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(85.605385, 258.312837) rotate(22.000000) translate(-85.605385, -258.312837) ' points='85.6053848 259.928756 83.9891383 258.312837 85.6053848 256.696918 87.2216313 258.312837'%3E%3C/polygon%3E%3Cpolygon id='Stroke-60' transform='translate(85.605385, 258.312837) rotate(22.000000) translate(-85.605385, -258.312837) ' points='85.6053848 259.928756 83.9891383 258.312837 85.6053848 256.696918 87.2216313 258.312837'%3E%3C/polygon%3E%3Cpolygon id='Fill-62' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(78.094482, 249.395723) rotate(22.000000) translate(-78.094482, -249.395723) ' points='78.0944819 251.011642 76.4782353 249.395723 78.0944819 247.779804 79.7107284 249.395723'%3E%3C/polygon%3E%3Cpolygon id='Stroke-64' transform='translate(78.094482, 249.395723) rotate(22.000000) translate(-78.094482, -249.395723) ' points='78.0944819 251.011642 76.4782353 249.395723 78.0944819 247.779804 79.7107284 249.395723'%3E%3C/polygon%3E%3Cpolygon id='Fill-66' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(79.546052, 252.814559) rotate(22.000000) translate(-79.546052, -252.814559) ' points='79.5460522 254.430478 77.9298057 252.814559 79.5460522 251.198641 81.1622988 252.814559'%3E%3C/polygon%3E%3Cpolygon id='Stroke-68' transform='translate(79.546052, 252.814559) rotate(22.000000) translate(-79.546052, -252.814559) ' points='79.5460522 254.430478 77.9298057 252.814559 79.5460522 251.198641 81.1622988 252.814559'%3E%3C/polygon%3E%3Cpolygon id='Fill-70' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(80.997705, 256.233360) rotate(22.000000) translate(-80.997705, -256.233360) ' points='80.9977053 257.849279 79.3814588 256.23336 80.9977053 254.617442 82.6139518 256.23336'%3E%3C/polygon%3E%3Cpolygon id='Stroke-72' transform='translate(80.997705, 256.233360) rotate(22.000000) translate(-80.997705, -256.233360) ' points='79.3814588 256.23336 80.9977053 254.617442 82.6139518 256.23336 80.9977053 257.849279'%3E%3C/polygon%3E%3Cpolygon id='Fill-74' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(82.449276, 259.652197) rotate(22.000000) translate(-82.449276, -259.652197) ' points='82.4492757 261.268115 80.8330292 259.652197 82.4492757 258.036278 84.0655222 259.652197'%3E%3C/polygon%3E%3Cpolygon id='Stroke-76' transform='translate(82.449276, 259.652197) rotate(22.000000) translate(-82.449276, -259.652197) ' points='82.4492757 261.268115 80.8330292 259.652197 82.4492757 258.036278 84.0655222 259.652197'%3E%3C/polygon%3E%3Cpolygon id='Fill-78' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(74.938373, 250.735083) rotate(22.000000) translate(-74.938373, -250.735083) ' points='74.9383727 252.351002 73.3221262 250.735083 74.9383727 249.119164 76.5546193 250.735083'%3E%3C/polygon%3E%3Cpolygon id='Stroke-80' transform='translate(74.938373, 250.735083) rotate(22.000000) translate(-74.938373, -250.735083) ' points='74.9383727 252.351002 73.3221262 250.735083 74.9383727 249.119164 76.5546193 250.735083'%3E%3C/polygon%3E%3Cpolygon id='Fill-82' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(76.389967, 254.153860) rotate(22.000000) translate(-76.389967, -254.153860) ' points='76.3899669 255.769779 74.7737204 254.15386 76.3899669 252.537942 78.0062134 254.15386'%3E%3C/polygon%3E%3Cpolygon id='Stroke-84' transform='translate(76.389967, 254.153860) rotate(22.000000) translate(-76.389967, -254.153860) ' points='76.3899669 255.769779 74.7737204 254.15386 76.3899669 252.537942 78.0062134 254.15386'%3E%3C/polygon%3E%3Cpolygon id='Fill-86' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(77.841620, 257.572661) rotate(22.000000) translate(-77.841620, -257.572661) ' points='77.84162 259.18858 76.2253735 257.572661 77.84162 255.956743 79.4578665 257.572661'%3E%3C/polygon%3E%3Cpolygon id='Stroke-88' transform='translate(77.841620, 257.572661) rotate(22.000000) translate(-77.841620, -257.572661) ' points='77.84162 259.18858 76.2253735 257.572661 77.84162 255.956743 79.4578665 257.572661'%3E%3C/polygon%3E%3Cpolygon id='Fill-90' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(79.293190, 260.991498) rotate(22.000000) translate(-79.293190, -260.991498) ' points='79.2931904 262.607416 77.6769438 260.991498 79.2931904 259.375579 80.9094369 260.991498'%3E%3C/polygon%3E%3Cpolygon id='Stroke-92' transform='translate(79.293190, 260.991498) rotate(22.000000) translate(-79.293190, -260.991498) ' points='79.2931904 262.607416 77.6769438 260.991498 79.2931904 259.375579 80.9094369 260.991498'%3E%3C/polygon%3E%3Cpolygon id='Fill-94' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(71.782287, 252.074384) rotate(22.000000) translate(-71.782287, -252.074384) ' points='71.7822874 253.690302 70.1660409 252.074384 71.7822874 250.458465 73.3985339 252.074384'%3E%3C/polygon%3E%3Cpolygon id='Stroke-96' transform='translate(71.782287, 252.074384) rotate(22.000000) translate(-71.782287, -252.074384) ' points='71.7822874 253.690302 70.1660409 252.074384 71.7822874 250.458465 73.3985339 252.074384'%3E%3C/polygon%3E%3Cpolygon id='Fill-98' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(73.233882, 255.493161) rotate(22.000000) translate(-73.233882, -255.493161) ' points='73.2338816 257.10908 71.6176351 255.493161 73.2338816 253.877242 74.8501281 255.493161'%3E%3C/polygon%3E%3Cpolygon id='Stroke-100' transform='translate(73.233882, 255.493161) rotate(22.000000) translate(-73.233882, -255.493161) ' points='73.2338816 257.10908 71.6176351 255.493161 73.2338816 253.877242 74.8501281 255.493161'%3E%3C/polygon%3E%3Cpolygon id='Fill-102' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(74.685535, 258.911962) rotate(22.000000) translate(-74.685535, -258.911962) ' points='74.6855347 260.527881 73.0692881 258.911962 74.6855347 257.296044 76.3017812 258.911962'%3E%3C/polygon%3E%3Cpolygon id='Stroke-104' transform='translate(74.685535, 258.911962) rotate(22.000000) translate(-74.685535, -258.911962) ' points='74.6855347 260.527881 73.0692881 258.911962 74.6855347 257.296044 76.3017812 258.911962'%3E%3C/polygon%3E%3Cpolygon id='Fill-106' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(76.137105, 262.330799) rotate(22.000000) translate(-76.137105, -262.330799) ' points='76.137105 263.946717 74.5208585 262.330799 76.137105 260.71488 77.7533516 262.330799'%3E%3C/polygon%3E%3Cpolygon id='Stroke-108' transform='translate(76.137105, 262.330799) rotate(22.000000) translate(-76.137105, -262.330799) ' points='76.137105 263.946717 74.5208585 262.330799 76.137105 260.71488 77.7533516 262.330799'%3E%3C/polygon%3E%3Cpolygon id='Fill-110' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(68.626202, 253.413685) rotate(22.000000) translate(-68.626202, -253.413685) ' points='68.6262021 255.029603 67.0099556 253.413685 68.6262021 251.797766 70.2424486 253.413685'%3E%3C/polygon%3E%3Cpolygon id='Stroke-112' transform='translate(68.626202, 253.413685) rotate(22.000000) translate(-68.626202, -253.413685) ' points='68.6262021 255.029603 67.0099556 253.413685 68.6262021 251.797766 70.2424486 253.413685'%3E%3C/polygon%3E%3Cpolygon id='Fill-114' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(70.077796, 256.832462) rotate(22.000000) translate(-70.077796, -256.832462) ' points='70.0777963 258.448381 68.4615497 256.832462 70.0777963 255.216543 71.6940428 256.832462'%3E%3C/polygon%3E%3Cpolygon id='Stroke-116' transform='translate(70.077796, 256.832462) rotate(22.000000) translate(-70.077796, -256.832462) ' points='70.0777963 258.448381 68.4615497 256.832462 70.0777963 255.216543 71.6940428 256.832462'%3E%3C/polygon%3E%3Cpolygon id='Fill-118' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(71.529426, 260.251322) rotate(22.000000) translate(-71.529426, -260.251322) ' points='71.5294256 261.867241 69.913179 260.251322 71.5294256 258.635403 73.1456721 260.251322'%3E%3C/polygon%3E%3Cpolygon id='Stroke-120' transform='translate(71.529426, 260.251322) rotate(22.000000) translate(-71.529426, -260.251322) ' points='71.5294256 261.867241 69.913179 260.251322 71.5294256 258.635403 73.1456721 260.251322'%3E%3C/polygon%3E%3Cpolygon id='Fill-122' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(72.981020, 263.670099) rotate(22.000000) translate(-72.981020, -263.670099) ' points='72.9810197 265.286018 71.3647732 263.670099 72.9810197 262.054181 74.5972663 263.670099'%3E%3C/polygon%3E%3Cpolygon id='Stroke-124' transform='translate(72.981020, 263.670099) rotate(22.000000) translate(-72.981020, -263.670099) ' points='72.9810197 265.286018 71.3647732 263.670099 72.9810197 262.054181 74.5972663 263.670099'%3E%3C/polygon%3E%3Cpolygon id='Fill-126' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(88.852907, 265.961362) rotate(22.000000) translate(-88.852907, -265.961362) ' points='88.8529067 267.577281 87.2366602 265.961362 88.8529067 264.345443 90.4691533 265.961362'%3E%3C/polygon%3E%3Cpolygon id='Stroke-128' transform='translate(88.852907, 265.961362) rotate(22.000000) translate(-88.852907, -265.961362) ' points='88.8529067 267.577281 87.2366602 265.961362 88.8529067 264.345443 90.4691533 265.961362'%3E%3C/polygon%3E%3Cpolygon id='Fill-130' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(90.304501, 269.380139) rotate(22.000000) translate(-90.304501, -269.380139) ' points='90.3045009 270.996058 88.6882544 269.380139 90.3045009 267.764221 91.9207474 269.380139'%3E%3C/polygon%3E%3Cpolygon id='Stroke-132' transform='translate(90.304501, 269.380139) rotate(22.000000) translate(-90.304501, -269.380139) ' points='90.3045009 270.996058 88.6882544 269.380139 90.3045009 267.764221 91.9207474 269.380139'%3E%3C/polygon%3E%3Cpolygon id='Fill-134' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(91.756130, 272.798999) rotate(22.000000) translate(-91.756130, -272.798999) ' points='91.7561302 274.414918 90.1398837 272.798999 91.7561302 271.183081 93.3723767 272.798999'%3E%3C/polygon%3E%3Cpolygon id='Stroke-136' transform='translate(91.756130, 272.798999) rotate(22.000000) translate(-91.756130, -272.798999) ' points='91.7561302 274.414918 90.1398837 272.798999 91.7561302 271.183081 93.3723767 272.798999'%3E%3C/polygon%3E%3Cpolygon id='Fill-138' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(93.207724, 276.217777) rotate(22.000000) translate(-93.207724, -276.217777) ' points='93.2077244 277.833695 91.5914778 276.217777 93.2077244 274.601858 94.8239709 276.217777'%3E%3C/polygon%3E%3Cpolygon id='Stroke-140' transform='translate(93.207724, 276.217777) rotate(22.000000) translate(-93.207724, -276.217777) ' points='93.2077244 277.833695 91.5914778 276.217777 93.2077244 274.601858 94.8239709 276.217777'%3E%3C/polygon%3E%3Cpolygon id='Fill-142' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(85.696821, 267.300663) rotate(22.000000) translate(-85.696821, -267.300663) ' points='85.6968214 268.916582 84.0805749 267.300663 85.6968214 265.684744 87.313068 267.300663'%3E%3C/polygon%3E%3Cpolygon id='Stroke-144' transform='translate(85.696821, 267.300663) rotate(22.000000) translate(-85.696821, -267.300663) ' points='85.6968214 268.916582 84.0805749 267.300663 85.6968214 265.684744 87.313068 267.300663'%3E%3C/polygon%3E%3Cpolygon id='Fill-146' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(87.148416, 270.719440) rotate(22.000000) translate(-87.148416, -270.719440) ' points='87.1484156 272.335359 85.5321691 270.71944 87.1484156 269.103521 88.7646621 270.71944'%3E%3C/polygon%3E%3Cpolygon id='Stroke-148' transform='translate(87.148416, 270.719440) rotate(22.000000) translate(-87.148416, -270.719440) ' points='87.1484156 272.335359 85.5321691 270.71944 87.1484156 269.103521 88.7646621 270.71944'%3E%3C/polygon%3E%3Cpolygon id='Fill-150' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(88.599986, 274.138276) rotate(22.000000) translate(-88.599986, -274.138276) ' points='88.599986 275.754195 86.9837394 274.138276 88.599986 272.522358 90.2162325 274.138276'%3E%3C/polygon%3E%3Cpolygon id='Stroke-152' transform='translate(88.599986, 274.138276) rotate(22.000000) translate(-88.599986, -274.138276) ' points='88.599986 275.754195 86.9837394 274.138276 88.599986 272.522358 90.2162325 274.138276'%3E%3C/polygon%3E%3Cpolygon id='Fill-154' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(90.051639, 277.557078) rotate(22.000000) translate(-90.051639, -277.557078) ' points='90.0516391 279.172996 88.4353925 277.557078 90.0516391 275.941159 91.6678856 277.557078'%3E%3C/polygon%3E%3Cpolygon id='Stroke-156' transform='translate(90.051639, 277.557078) rotate(22.000000) translate(-90.051639, -277.557078) ' points='90.0516391 279.172996 88.4353925 277.557078 90.0516391 275.941159 91.6678856 277.557078'%3E%3C/polygon%3E%3Cpolygon id='Fill-158' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(82.540736, 268.639964) rotate(22.000000) translate(-82.540736, -268.639964) ' points='82.5407361 270.255882 80.9244896 268.639964 82.5407361 267.024045 84.1569826 268.639964'%3E%3C/polygon%3E%3Cpolygon id='Stroke-160' transform='translate(82.540736, 268.639964) rotate(22.000000) translate(-82.540736, -268.639964) ' points='82.5407361 270.255882 80.9244896 268.639964 82.5407361 267.024045 84.1569826 268.639964'%3E%3C/polygon%3E%3Cpolygon id='Fill-162' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(83.992306, 272.058800) rotate(22.000000) translate(-83.992306, -272.058800) ' points='83.9923065 273.674719 82.3760599 272.0588 83.9923065 270.442881 85.608553 272.0588'%3E%3C/polygon%3E%3Cpolygon id='Stroke-164' transform='translate(83.992306, 272.058800) rotate(22.000000) translate(-83.992306, -272.058800) ' points='83.9923065 273.674719 82.3760599 272.0588 83.9923065 270.442881 85.608553 272.0588'%3E%3C/polygon%3E%3Cpolygon id='Fill-166' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(85.443901, 275.477577) rotate(22.000000) translate(-85.443901, -275.477577) ' points='85.4439007 277.093496 83.8276541 275.477577 85.4439007 273.861659 87.0601472 275.477577'%3E%3C/polygon%3E%3Cpolygon id='Stroke-168' transform='translate(85.443901, 275.477577) rotate(22.000000) translate(-85.443901, -275.477577) ' points='85.4439007 277.093496 83.8276541 275.477577 85.4439007 273.861659 87.0601472 275.477577'%3E%3C/polygon%3E%3Cpolygon id='Fill-170' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(86.895554, 278.896378) rotate(22.000000) translate(-86.895554, -278.896378) ' points='86.8955537 280.512297 85.2793072 278.896378 86.8955537 277.28046 88.5118003 278.896378'%3E%3C/polygon%3E%3Cpolygon id='Stroke-172' transform='translate(86.895554, 278.896378) rotate(22.000000) translate(-86.895554, -278.896378) ' points='86.8955537 280.512297 85.2793072 278.896378 86.8955537 277.28046 88.5118003 278.896378'%3E%3C/polygon%3E%3Cpolygon id='Fill-174' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(79.384651, 269.979265) rotate(22.000000) translate(-79.384651, -269.979265) ' points='79.3846508 271.595183 77.7684043 269.979265 79.3846508 268.363346 81.0008973 269.979265'%3E%3C/polygon%3E%3Cpolygon id='Stroke-176' transform='translate(79.384651, 269.979265) rotate(22.000000) translate(-79.384651, -269.979265) ' points='79.3846508 271.595183 77.7684043 269.979265 79.3846508 268.363346 81.0008973 269.979265'%3E%3C/polygon%3E%3Cpolygon id='Fill-178' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(80.836221, 273.398101) rotate(22.000000) translate(-80.836221, -273.398101) ' points='80.8362212 275.01402 79.2199746 273.398101 80.8362212 271.782182 82.4524677 273.398101'%3E%3C/polygon%3E%3Cpolygon id='Stroke-180' transform='translate(80.836221, 273.398101) rotate(22.000000) translate(-80.836221, -273.398101) ' points='80.8362212 275.01402 79.2199746 273.398101 80.8362212 271.782182 82.4524677 273.398101'%3E%3C/polygon%3E%3Cpolygon id='Fill-182' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(82.287815, 276.816878) rotate(22.000000) translate(-82.287815, -276.816878) ' points='82.2878153 278.432797 80.6715688 276.816878 82.2878153 275.20096 83.9040619 276.816878'%3E%3C/polygon%3E%3Cpolygon id='Stroke-184' transform='translate(82.287815, 276.816878) rotate(22.000000) translate(-82.287815, -276.816878) ' points='82.2878153 278.432797 80.6715688 276.816878 82.2878153 275.20096 83.9040619 276.816878'%3E%3C/polygon%3E%3Cpolygon id='Fill-186' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(83.739445, 280.235738) rotate(22.000000) translate(-83.739445, -280.235738) ' points='83.7394446 281.851657 82.1231981 280.235738 83.7394446 278.61982 85.3556912 280.235738'%3E%3C/polygon%3E%3Cpolygon id='Stroke-188' transform='translate(83.739445, 280.235738) rotate(22.000000) translate(-83.739445, -280.235738) ' points='83.7394446 281.851657 82.1231981 280.235738 83.7394446 278.61982 85.3556912 280.235738'%3E%3C/polygon%3E%3Cpolygon id='Fill-190' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(76.228483, 271.318601) rotate(22.000000) translate(-76.228483, -271.318601) ' points='76.2284828 272.934519 74.6122362 271.318601 76.2284828 269.702682 77.8447293 271.318601'%3E%3C/polygon%3E%3Cpolygon id='Stroke-192' transform='translate(76.228483, 271.318601) rotate(22.000000) translate(-76.228483, -271.318601) ' points='76.2284828 272.934519 74.6122362 271.318601 76.2284828 269.702682 77.8447293 271.318601'%3E%3C/polygon%3E%3Cpolygon id='Fill-194' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(77.680136, 274.737402) rotate(22.000000) translate(-77.680136, -274.737402) ' points='77.6801358 276.353321 76.0638893 274.737402 77.6801358 273.121483 79.2963824 274.737402'%3E%3C/polygon%3E%3Cpolygon id='Stroke-196' transform='translate(77.680136, 274.737402) rotate(22.000000) translate(-77.680136, -274.737402) ' points='77.6801358 276.353321 76.0638893 274.737402 77.6801358 273.121483 79.2963824 274.737402'%3E%3C/polygon%3E%3Cpolygon id='Fill-198' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(79.131730, 278.156179) rotate(22.000000) translate(-79.131730, -278.156179) ' points='79.13173 279.772098 77.5154835 278.156179 79.13173 276.540261 80.7479765 278.156179'%3E%3C/polygon%3E%3Cpolygon id='Stroke-200' transform='translate(79.131730, 278.156179) rotate(22.000000) translate(-79.131730, -278.156179) ' points='79.13173 279.772098 77.5154835 278.156179 79.13173 276.540261 80.7479765 278.156179'%3E%3C/polygon%3E%3Cpolygon id='Fill-202' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(80.583359, 281.575039) rotate(22.000000) translate(-80.583359, -281.575039) ' points='80.5833593 283.190958 78.9671128 281.575039 80.5833593 279.959121 82.1996058 281.575039'%3E%3C/polygon%3E%3Cpolygon id='Stroke-204' transform='translate(80.583359, 281.575039) rotate(22.000000) translate(-80.583359, -281.575039) ' points='80.5833593 283.190958 78.9671128 281.575039 80.5833593 279.959121 82.1996058 281.575039'%3E%3C/polygon%3E%3Cpolygon id='Fill-206' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(96.455246, 283.866302) rotate(22.000000) translate(-96.455246, -283.866302) ' points='96.4552463 285.48222 94.8389998 283.866302 96.4552463 282.250383 98.0714929 283.866302'%3E%3C/polygon%3E%3Cpolygon id='Stroke-208' transform='translate(96.455246, 283.866302) rotate(22.000000) translate(-96.455246, -283.866302) ' points='96.4552463 285.48222 94.8389998 283.866302 96.4552463 282.250383 98.0714929 283.866302'%3E%3C/polygon%3E%3Cpolygon id='Fill-210' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(97.906840, 287.285079) rotate(22.000000) translate(-97.906840, -287.285079) ' points='97.9068405 288.900998 96.290594 287.285079 97.9068405 285.66916 99.523087 287.285079'%3E%3C/polygon%3E%3Cpolygon id='Stroke-212' transform='translate(97.906840, 287.285079) rotate(22.000000) translate(-97.906840, -287.285079) ' points='97.9068405 288.900998 96.290594 287.285079 97.9068405 285.66916 99.523087 287.285079'%3E%3C/polygon%3E%3Cpolygon id='Fill-214' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(99.358435, 290.703856) rotate(22.000000) translate(-99.358435, -290.703856) ' points='99.3584347 292.319775 97.7421881 290.703856 99.3584347 289.087938 100.974681 290.703856'%3E%3C/polygon%3E%3Cpolygon id='Stroke-216' transform='translate(99.358435, 290.703856) rotate(22.000000) translate(-99.358435, -290.703856) ' points='99.3584347 292.319775 97.7421881 290.703856 99.3584347 289.087938 100.974681 290.703856'%3E%3C/polygon%3E%3Cpolygon id='Fill-218' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(100.810064, 294.122716) rotate(22.000000) translate(-100.810064, -294.122716) ' points='100.810064 295.738635 99.1938174 294.122716 100.810064 292.506798 102.42631 294.122716'%3E%3C/polygon%3E%3Cpolygon id='Stroke-220' transform='translate(100.810064, 294.122716) rotate(22.000000) translate(-100.810064, -294.122716) ' points='100.810064 295.738635 99.1938174 294.122716 100.810064 292.506798 102.42631 294.122716'%3E%3C/polygon%3E%3Cpolygon id='Fill-222' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(93.299102, 285.205579) rotate(22.000000) translate(-93.299102, -285.205579) ' points='93.2991021 286.821497 91.6828556 285.205579 93.2991021 283.58966 94.9153486 285.205579'%3E%3C/polygon%3E%3Cpolygon id='Stroke-224' transform='translate(93.299102, 285.205579) rotate(22.000000) translate(-93.299102, -285.205579) ' points='93.2991021 286.821497 91.6828556 285.205579 93.2991021 283.58966 94.9153486 285.205579'%3E%3C/polygon%3E%3Cpolygon id='Fill-226' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(94.750755, 288.624380) rotate(22.000000) translate(-94.750755, -288.624380) ' points='94.7507552 290.240299 93.1345086 288.62438 94.7507552 287.008461 96.3670017 288.62438'%3E%3C/polygon%3E%3Cpolygon id='Stroke-228' transform='translate(94.750755, 288.624380) rotate(22.000000) translate(-94.750755, -288.624380) ' points='94.7507552 290.240299 93.1345086 288.62438 94.7507552 287.008461 96.3670017 288.62438'%3E%3C/polygon%3E%3Cpolygon id='Fill-230' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(96.202326, 292.043216) rotate(22.000000) translate(-96.202326, -292.043216) ' points='96.2023255 293.659135 94.586079 292.043216 96.2023255 290.427297 97.8185721 292.043216'%3E%3C/polygon%3E%3Cpolygon id='Stroke-232' transform='translate(96.202326, 292.043216) rotate(22.000000) translate(-96.202326, -292.043216) ' points='96.2023255 293.659135 94.586079 292.043216 96.2023255 290.427297 97.8185721 292.043216'%3E%3C/polygon%3E%3Cpolygon id='Fill-234' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(97.653979, 295.462017) rotate(22.000000) translate(-97.653979, -295.462017) ' points='97.6539786 297.077936 96.0377321 295.462017 97.6539786 293.846099 99.2702252 295.462017'%3E%3C/polygon%3E%3Cpolygon id='Stroke-236' transform='translate(97.653979, 295.462017) rotate(22.000000) translate(-97.653979, -295.462017) ' points='97.6539786 297.077936 96.0377321 295.462017 97.6539786 293.846099 99.2702252 295.462017'%3E%3C/polygon%3E%3Cpolygon id='Fill-238' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(90.143017, 286.544880) rotate(22.000000) translate(-90.143017, -286.544880) ' points='90.1430168 288.160798 88.5267702 286.54488 90.1430168 284.928961 91.7592633 286.54488'%3E%3C/polygon%3E%3Cpolygon id='Stroke-240' transform='translate(90.143017, 286.544880) rotate(22.000000) translate(-90.143017, -286.544880) ' points='90.1430168 288.160798 88.5267702 286.54488 90.1430168 284.928961 91.7592633 286.54488'%3E%3C/polygon%3E%3Cpolygon id='Fill-242' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(91.594670, 289.963681) rotate(22.000000) translate(-91.594670, -289.963681) ' points='91.5946698 291.5796 89.9784233 289.963681 91.5946698 288.347762 93.2109164 289.963681'%3E%3C/polygon%3E%3Cpolygon id='Stroke-244' transform='translate(91.594670, 289.963681) rotate(22.000000) translate(-91.594670, -289.963681) ' points='91.5946698 291.5796 89.9784233 289.963681 91.5946698 288.347762 93.2109164 289.963681'%3E%3C/polygon%3E%3Cpolygon id='Fill-246' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(93.046240, 293.382517) rotate(22.000000) translate(-93.046240, -293.382517) ' points='93.0462402 294.998436 91.4299937 293.382517 93.0462402 291.766598 94.6624868 293.382517'%3E%3C/polygon%3E%3Cpolygon id='Stroke-248' transform='translate(93.046240, 293.382517) rotate(22.000000) translate(-93.046240, -293.382517) ' points='93.0462402 294.998436 91.4299937 293.382517 93.0462402 291.766598 94.6624868 293.382517'%3E%3C/polygon%3E%3Cpolygon id='Fill-250' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(94.497893, 296.801318) rotate(22.000000) translate(-94.497893, -296.801318) ' points='94.4978933 298.417237 92.8816468 296.801318 94.4978933 295.1854 96.1141398 296.801318'%3E%3C/polygon%3E%3Cpolygon id='Stroke-252' transform='translate(94.497893, 296.801318) rotate(22.000000) translate(-94.497893, -296.801318) ' points='94.4978933 298.417237 92.8816468 296.801318 94.4978933 295.1854 96.1141398 296.801318'%3E%3C/polygon%3E%3Cpolygon id='Fill-254' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(86.986931, 287.884181) rotate(22.000000) translate(-86.986931, -287.884181) ' points='86.9869315 289.500099 85.3706849 287.884181 86.9869315 286.268262 88.603178 287.884181'%3E%3C/polygon%3E%3Cpolygon id='Stroke-256' transform='translate(86.986931, 287.884181) rotate(22.000000) translate(-86.986931, -287.884181) ' points='86.9869315 289.500099 85.3706849 287.884181 86.9869315 286.268262 88.603178 287.884181'%3E%3C/polygon%3E%3Cpolygon id='Fill-258' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(88.438585, 291.302982) rotate(22.000000) translate(-88.438585, -291.302982) ' points='88.4385845 292.9189 86.822338 291.302982 88.4385845 289.687063 90.0548311 291.302982'%3E%3C/polygon%3E%3Cpolygon id='Stroke-260' transform='translate(88.438585, 291.302982) rotate(22.000000) translate(-88.438585, -291.302982) ' points='88.4385845 292.9189 86.822338 291.302982 88.4385845 289.687063 90.0548311 291.302982'%3E%3C/polygon%3E%3Cpolygon id='Fill-262' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(89.890155, 294.721818) rotate(22.000000) translate(-89.890155, -294.721818) ' points='89.8901549 296.337737 88.2739084 294.721818 89.8901549 293.105899 91.5064014 294.721818'%3E%3C/polygon%3E%3Cpolygon id='Stroke-264' transform='translate(89.890155, 294.721818) rotate(22.000000) translate(-89.890155, -294.721818) ' points='89.8901549 296.337737 88.2739084 294.721818 89.8901549 293.105899 91.5064014 294.721818'%3E%3C/polygon%3E%3Cpolygon id='Fill-266' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(91.341749, 298.140595) rotate(22.000000) translate(-91.341749, -298.140595) ' points='91.3417491 299.756514 89.7255025 298.140595 91.3417491 296.524677 92.9579956 298.140595'%3E%3C/polygon%3E%3Cpolygon id='Stroke-268' transform='translate(91.341749, 298.140595) rotate(22.000000) translate(-91.341749, -298.140595) ' points='91.3417491 299.756514 89.7255025 298.140595 91.3417491 296.524677 92.9579956 298.140595'%3E%3C/polygon%3E%3Cpolygon id='Fill-270' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(83.830846, 289.223482) rotate(22.000000) translate(-83.830846, -289.223482) ' points='83.8308461 290.8394 82.2145996 289.223482 83.8308461 287.607563 85.4470927 289.223482'%3E%3C/polygon%3E%3Cpolygon id='Stroke-272' transform='translate(83.830846, 289.223482) rotate(22.000000) translate(-83.830846, -289.223482) ' points='82.2145996 289.223482 83.8308461 287.607563 85.4470927 289.223482 83.8308461 290.8394'%3E%3C/polygon%3E%3Cpolygon id='Fill-274' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(85.282417, 292.642318) rotate(22.000000) translate(-85.282417, -292.642318) ' points='85.2824165 294.258236 83.66617 292.642318 85.2824165 291.026399 86.898663 292.642318'%3E%3C/polygon%3E%3Cpolygon id='Stroke-276' transform='translate(85.282417, 292.642318) rotate(22.000000) translate(-85.282417, -292.642318) ' points='85.2824165 294.258236 83.66617 292.642318 85.2824165 291.026399 86.898663 292.642318'%3E%3C/polygon%3E%3Cpolygon id='Fill-278' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(86.734070, 296.061119) rotate(22.000000) translate(-86.734070, -296.061119) ' points='86.7340696 297.677038 85.1178231 296.061119 86.7340696 294.4452 88.3503161 296.061119'%3E%3C/polygon%3E%3Cpolygon id='Stroke-280' transform='translate(86.734070, 296.061119) rotate(22.000000) translate(-86.734070, -296.061119) ' points='86.7340696 297.677038 85.1178231 296.061119 86.7340696 294.4452 88.3503161 296.061119'%3E%3C/polygon%3E%3Cpolygon id='Fill-282' fill-opacity='0.6' fill='%23A3B1BF' transform='translate(88.185664, 299.479896) rotate(22.000000) translate(-88.185664, -299.479896) ' points='88.1856638 301.095815 86.5694172 299.479896 88.1856638 297.863978 89.8019103 299.479896'%3E%3C/polygon%3E%3Cpolygon id='Stroke-284' transform='translate(88.185664, 299.479896) rotate(22.000000) translate(-88.185664, -299.479896) ' points='88.1856638 301.095815 86.5694172 299.479896 88.1856638 297.863978 89.8019103 299.479896'%3E%3C/polygon%3E%3Cpolygon id='Fill-286' transform='translate(37.779995, 163.402514) rotate(22.000000) translate(-37.779995, -163.402514) ' points='51.9961666 192.018058 66.401345 177.615802 23.5644587 134.78697 9.15864501 149.189862'%3E%3C/polygon%3E%3Cpolygon id='Fill-290' transform='translate(50.400318, 195.682118) rotate(22.000000) translate(-50.400318, -195.682118) ' points='54.1737837 198.070743 48.0112085 191.909418 46.6268527 193.293493 52.7894279 199.454818'%3E%3C/polygon%3E%3Cpolygon id='Stroke-292' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(50.400318, 195.682118) rotate(22.000000) translate(-50.400318, -195.682118) ' points='54.1737837 198.070743 48.0112085 191.909418 46.6268527 193.293493 52.7894279 199.454818'%3E%3C/polygon%3E%3Cpolygon id='Fill-294' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(52.603532, 200.871447) rotate(22.000000) translate(-52.603532, -200.871447) ' points='52.712807 203.746308 55.4789773 200.980699 52.4942579 197.996585 49.7280876 200.762195'%3E%3C/polygon%3E%3Cpolygon id='Stroke-296' stroke='%23A3B1BF' stroke-width='1.62' fill='%23FFFFFF' stroke-linejoin='round' transform='translate(52.603532, 200.871447) rotate(22.000000) translate(-52.603532, -200.871447) ' points='52.712807 203.746308 55.4789773 200.980699 52.4942579 197.996585 49.7280876 200.762195'%3E%3C/polygon%3E%3Cpolygon id='Fill-298' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(53.983257, 183.836778) rotate(22.000000) translate(-53.983257, -183.836778) ' points='52.3670108 183.836778 53.9832574 185.452697 55.5995039 183.836778 53.9832574 182.22086'%3E%3C/polygon%3E%3Cpolygon id='Stroke-300' transform='translate(53.983257, 183.836778) rotate(22.000000) translate(-53.983257, -183.836778) ' points='52.3670108 183.836778 53.9832574 185.452697 55.5995039 183.836778 53.9832574 182.22086'%3E%3C/polygon%3E%3Cpolygon id='Fill-302' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(52.531663, 180.418001) rotate(22.000000) translate(-52.531663, -180.418001) ' points='50.9154167 180.418001 52.5316632 182.03392 54.1479097 180.418001 52.5316632 178.802082'%3E%3C/polygon%3E%3Cpolygon id='Stroke-304' transform='translate(52.531663, 180.418001) rotate(22.000000) translate(-52.531663, -180.418001) ' points='50.9154167 180.418001 52.5316632 182.03392 54.1479097 180.418001 52.5316632 178.802082'%3E%3C/polygon%3E%3Cpolygon id='Fill-306' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(51.080034, 176.999141) rotate(22.000000) translate(-51.080034, -176.999141) ' points='49.4637874 176.999141 51.0800339 178.61506 52.6962805 176.999141 51.0800339 175.383222'%3E%3C/polygon%3E%3Cpolygon id='Stroke-308' transform='translate(51.080034, 176.999141) rotate(22.000000) translate(-51.080034, -176.999141) ' points='49.4637874 176.999141 51.0800339 178.61506 52.6962805 176.999141 51.0800339 175.383222'%3E%3C/polygon%3E%3Cpolygon id='Fill-310' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(49.628440, 173.580364) rotate(22.000000) translate(-49.628440, -173.580364) ' points='48.0121932 173.580364 49.6284397 175.196282 51.2446863 173.580364 49.6284397 171.964445'%3E%3C/polygon%3E%3Cpolygon id='Stroke-312' transform='translate(49.628440, 173.580364) rotate(22.000000) translate(-49.628440, -173.580364) ' points='48.0121932 173.580364 49.6284397 175.196282 51.2446863 173.580364 49.6284397 171.964445'%3E%3C/polygon%3E%3Cpolygon id='Fill-314' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(50.827172, 185.176079) rotate(22.000000) translate(-50.827172, -185.176079) ' points='49.2109255 185.176079 50.8271721 186.791998 52.4434186 185.176079 50.8271721 183.560161'%3E%3C/polygon%3E%3Cpolygon id='Stroke-316' transform='translate(50.827172, 185.176079) rotate(22.000000) translate(-50.827172, -185.176079) ' points='49.2109255 185.176079 50.8271721 186.791998 52.4434186 185.176079 50.8271721 183.560161'%3E%3C/polygon%3E%3Cpolygon id='Fill-318' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(49.375578, 181.757302) rotate(22.000000) translate(-49.375578, -181.757302) ' points='47.7593313 181.757302 49.3755779 183.373221 50.9918244 181.757302 49.3755779 180.141383'%3E%3C/polygon%3E%3Cpolygon id='Stroke-320' transform='translate(49.375578, 181.757302) rotate(22.000000) translate(-49.375578, -181.757302) ' points='47.7593313 181.757302 49.3755779 183.373221 50.9918244 181.757302 49.3755779 180.141383'%3E%3C/polygon%3E%3Cpolygon id='Fill-322' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(47.923949, 178.338442) rotate(22.000000) translate(-47.923949, -178.338442) ' points='46.3077021 178.338442 47.9239486 179.954361 49.5401951 178.338442 47.9239486 176.722523'%3E%3C/polygon%3E%3Cpolygon id='Stroke-324' transform='translate(47.923949, 178.338442) rotate(22.000000) translate(-47.923949, -178.338442) ' points='46.3077021 178.338442 47.9239486 179.954361 49.5401951 178.338442 47.9239486 176.722523'%3E%3C/polygon%3E%3Cpolygon id='Fill-326' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(46.472354, 174.919665) rotate(22.000000) translate(-46.472354, -174.919665) ' points='44.8561079 174.919665 46.4723544 176.535583 48.088601 174.919665 46.4723544 173.303746'%3E%3C/polygon%3E%3Cpolygon id='Stroke-328' transform='translate(46.472354, 174.919665) rotate(22.000000) translate(-46.472354, -174.919665) ' points='44.8561079 174.919665 46.4723544 176.535583 48.088601 174.919665 46.4723544 173.303746'%3E%3C/polygon%3E%3Cpolygon id='Fill-330' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(47.671087, 186.515380) rotate(22.000000) translate(-47.671087, -186.515380) ' points='46.0548402 186.51538 47.6710867 188.131299 49.2873333 186.51538 47.6710867 184.899461'%3E%3C/polygon%3E%3Cpolygon id='Stroke-332' transform='translate(47.671087, 186.515380) rotate(22.000000) translate(-47.671087, -186.515380) ' points='46.0548402 186.51538 47.6710867 188.131299 49.2873333 186.51538 47.6710867 184.899461'%3E%3C/polygon%3E%3Cpolygon id='Fill-334' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(46.219493, 183.096603) rotate(22.000000) translate(-46.219493, -183.096603) ' points='44.603246 183.096603 46.2194926 184.712521 47.8357391 183.096603 46.2194926 181.480684'%3E%3C/polygon%3E%3Cpolygon id='Stroke-336' transform='translate(46.219493, 183.096603) rotate(22.000000) translate(-46.219493, -183.096603) ' points='44.603246 183.096603 46.2194926 184.712521 47.8357391 183.096603 46.2194926 181.480684'%3E%3C/polygon%3E%3Cpolygon id='Fill-338' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(44.767839, 179.677802) rotate(22.000000) translate(-44.767839, -179.677802) ' points='43.1515929 179.677802 44.7678395 181.29372 46.384086 179.677802 44.7678395 178.061883'%3E%3C/polygon%3E%3Cpolygon id='Stroke-340' transform='translate(44.767839, 179.677802) rotate(22.000000) translate(-44.767839, -179.677802) ' points='43.1515929 179.677802 44.7678395 181.29372 46.384086 179.677802 44.7678395 178.061883'%3E%3C/polygon%3E%3Cpolygon id='Fill-342' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(43.316269, 176.258965) rotate(22.000000) translate(-43.316269, -176.258965) ' points='41.7000226 176.258965 43.3162691 177.874884 44.9325156 176.258965 43.3162691 174.643047'%3E%3C/polygon%3E%3Cpolygon id='Stroke-344' transform='translate(43.316269, 176.258965) rotate(22.000000) translate(-43.316269, -176.258965) ' points='41.7000226 176.258965 43.3162691 177.874884 44.9325156 176.258965 43.3162691 174.643047'%3E%3C/polygon%3E%3Cpolygon id='Fill-346' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(44.514978, 187.854740) rotate(22.000000) translate(-44.514978, -187.854740) ' points='42.8987311 187.85474 44.5149776 189.470659 46.1312242 187.85474 44.5149776 186.238821'%3E%3C/polygon%3E%3Cpolygon id='Stroke-348' transform='translate(44.514978, 187.854740) rotate(22.000000) translate(-44.514978, -187.854740) ' points='42.8987311 187.85474 44.5149776 189.470659 46.1312242 187.85474 44.5149776 186.238821'%3E%3C/polygon%3E%3Cpolygon id='Fill-350' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(43.063348, 184.435880) rotate(22.000000) translate(-43.063348, -184.435880) ' points='41.4471018 184.43588 43.0633483 186.051799 44.6795949 184.43588 43.0633483 182.819961'%3E%3C/polygon%3E%3Cpolygon id='Stroke-352' transform='translate(43.063348, 184.435880) rotate(22.000000) translate(-43.063348, -184.435880) ' points='41.4471018 184.43588 43.0633483 186.051799 44.6795949 184.43588 43.0633483 182.819961'%3E%3C/polygon%3E%3Cpolygon id='Fill-354' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(41.611754, 181.017103) rotate(22.000000) translate(-41.611754, -181.017103) ' points='39.9955076 181.017103 41.6117542 182.633021 43.2280007 181.017103 41.6117542 179.401184'%3E%3C/polygon%3E%3Cpolygon id='Stroke-356' transform='translate(41.611754, 181.017103) rotate(22.000000) translate(-41.611754, -181.017103) ' points='39.9955076 181.017103 41.6117542 182.633021 43.2280007 181.017103 41.6117542 179.401184'%3E%3C/polygon%3E%3Cpolygon id='Fill-358' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(40.160184, 177.598266) rotate(22.000000) translate(-40.160184, -177.598266) ' points='38.5439373 177.598266 40.1601838 179.214185 41.7764303 177.598266 40.1601838 175.982348'%3E%3C/polygon%3E%3Cpolygon id='Stroke-360' transform='translate(40.160184, 177.598266) rotate(22.000000) translate(-40.160184, -177.598266) ' points='38.5439373 177.598266 40.1601838 179.214185 41.7764303 177.598266 40.1601838 175.982348'%3E%3C/polygon%3E%3Cpolygon id='Fill-362' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(41.358892, 189.194041) rotate(22.000000) translate(-41.358892, -189.194041) ' points='39.7426458 189.194041 41.3588923 190.80996 42.9751388 189.194041 41.3588923 187.578122'%3E%3C/polygon%3E%3Cpolygon id='Stroke-364' transform='translate(41.358892, 189.194041) rotate(22.000000) translate(-41.358892, -189.194041) ' points='39.7426458 189.194041 41.3588923 190.80996 42.9751388 189.194041 41.3588923 187.578122'%3E%3C/polygon%3E%3Cpolygon id='Fill-366' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(39.907263, 185.775181) rotate(22.000000) translate(-39.907263, -185.775181) ' points='38.2910165 185.775181 39.907263 187.3911 41.5235095 185.775181 39.907263 184.159262'%3E%3C/polygon%3E%3Cpolygon id='Stroke-368' transform='translate(39.907263, 185.775181) rotate(22.000000) translate(-39.907263, -185.775181) ' points='38.2910165 185.775181 39.907263 187.3911 41.5235095 185.775181 39.907263 184.159262'%3E%3C/polygon%3E%3Cpolygon id='Fill-370' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(38.455669, 182.356404) rotate(22.000000) translate(-38.455669, -182.356404) ' points='36.8394223 182.356404 38.4556688 183.972322 40.0719154 182.356404 38.4556688 180.740485'%3E%3C/polygon%3E%3Cpolygon id='Stroke-372' transform='translate(38.455669, 182.356404) rotate(22.000000) translate(-38.455669, -182.356404) ' points='36.8394223 182.356404 38.4556688 183.972322 40.0719154 182.356404 38.4556688 180.740485'%3E%3C/polygon%3E%3Cpolygon id='Fill-374' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(37.004016, 178.937602) rotate(22.000000) translate(-37.004016, -178.937602) ' points='35.3877692 178.937602 37.0040158 180.553521 38.6202623 178.937602 37.0040158 177.321684'%3E%3C/polygon%3E%3Cpolygon id='Stroke-376' transform='translate(37.004016, 178.937602) rotate(22.000000) translate(-37.004016, -178.937602) ' points='35.3877692 178.937602 37.0040158 180.553521 38.6202623 178.937602 37.0040158 177.321684'%3E%3C/polygon%3E%3Cpolygon id='Fill-378' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(46.380894, 165.931897) rotate(22.000000) translate(-46.380894, -165.931897) ' points='44.7646475 165.931897 46.380894 167.547816 47.9971405 165.931897 46.380894 164.315979'%3E%3C/polygon%3E%3Cpolygon id='Stroke-380' transform='translate(46.380894, 165.931897) rotate(22.000000) translate(-46.380894, -165.931897) ' points='44.7646475 165.931897 46.380894 167.547816 47.9971405 165.931897 46.380894 164.315979'%3E%3C/polygon%3E%3Cpolygon id='Fill-382' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(44.929324, 162.513061) rotate(22.000000) translate(-44.929324, -162.513061) ' points='43.3130771 162.513061 44.9293236 164.12898 46.5455702 162.513061 44.9293236 160.897143'%3E%3C/polygon%3E%3Cpolygon id='Stroke-384' transform='translate(44.929324, 162.513061) rotate(22.000000) translate(-44.929324, -162.513061) ' points='43.3130771 162.513061 44.9293236 164.12898 46.5455702 162.513061 44.9293236 160.897143'%3E%3C/polygon%3E%3Cpolygon id='Fill-386' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(43.477729, 159.094284) rotate(22.000000) translate(-43.477729, -159.094284) ' points='41.8614829 159.094284 43.4777295 160.710203 45.093976 159.094284 43.4777295 157.478365'%3E%3C/polygon%3E%3Cpolygon id='Stroke-388' transform='translate(43.477729, 159.094284) rotate(22.000000) translate(-43.477729, -159.094284) ' points='41.8614829 159.094284 43.4777295 160.710203 45.093976 159.094284 43.4777295 157.478365'%3E%3C/polygon%3E%3Cpolygon id='Fill-390' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(42.026100, 155.675424) rotate(22.000000) translate(-42.026100, -155.675424) ' points='40.4098536 155.675424 42.0261002 157.291342 43.6423467 155.675424 42.0261002 154.059505'%3E%3C/polygon%3E%3Cpolygon id='Stroke-392' transform='translate(42.026100, 155.675424) rotate(22.000000) translate(-42.026100, -155.675424) ' points='40.4098536 155.675424 42.0261002 157.291342 43.6423467 155.675424 42.0261002 154.059505'%3E%3C/polygon%3E%3Cpolygon id='Fill-394' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(43.224809, 167.271198) rotate(22.000000) translate(-43.224809, -167.271198) ' points='41.6085622 167.271198 43.2248087 168.887117 44.8410552 167.271198 43.2248087 165.65528'%3E%3C/polygon%3E%3Cpolygon id='Stroke-396' transform='translate(43.224809, 167.271198) rotate(22.000000) translate(-43.224809, -167.271198) ' points='41.6085622 167.271198 43.2248087 168.887117 44.8410552 167.271198 43.2248087 165.65528'%3E%3C/polygon%3E%3Cpolygon id='Fill-398' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(41.773238, 163.852362) rotate(22.000000) translate(-41.773238, -163.852362) ' points='40.1569918 163.852362 41.7732383 165.468281 43.3894848 163.852362 41.7732383 162.236443'%3E%3C/polygon%3E%3Cpolygon id='Stroke-400' transform='translate(41.773238, 163.852362) rotate(22.000000) translate(-41.773238, -163.852362) ' points='40.1569918 163.852362 41.7732383 165.468281 43.3894848 163.852362 41.7732383 162.236443'%3E%3C/polygon%3E%3Cpolygon id='Fill-402' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(40.321585, 160.433561) rotate(22.000000) translate(-40.321585, -160.433561) ' points='38.7053387 160.433561 40.3215852 162.04948 41.9378318 160.433561 40.3215852 158.817642'%3E%3C/polygon%3E%3Cpolygon id='Stroke-404' transform='translate(40.321585, 160.433561) rotate(22.000000) translate(-40.321585, -160.433561) ' points='38.7053387 160.433561 40.3215852 162.04948 41.9378318 160.433561 40.3215852 158.817642'%3E%3C/polygon%3E%3Cpolygon id='Fill-406' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(38.869991, 157.014784) rotate(22.000000) translate(-38.869991, -157.014784) ' points='37.2537445 157.014784 38.8699911 158.630702 40.4862376 157.014784 38.8699911 155.398865'%3E%3C/polygon%3E%3Cpolygon id='Stroke-408' transform='translate(38.869991, 157.014784) rotate(22.000000) translate(-38.869991, -157.014784) ' points='37.2537445 157.014784 38.8699911 158.630702 40.4862376 157.014784 38.8699911 155.398865'%3E%3C/polygon%3E%3Cpolygon id='Fill-410' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(40.068723, 168.610499) rotate(22.000000) translate(-40.068723, -168.610499) ' points='38.4524768 168.610499 40.0687234 170.226418 41.6849699 168.610499 40.0687234 166.994581'%3E%3C/polygon%3E%3Cpolygon id='Stroke-412' transform='translate(40.068723, 168.610499) rotate(22.000000) translate(-40.068723, -168.610499) ' points='38.4524768 168.610499 40.0687234 170.226418 41.6849699 168.610499 40.0687234 166.994581'%3E%3C/polygon%3E%3Cpolygon id='Fill-414' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(38.617129, 165.191722) rotate(22.000000) translate(-38.617129, -165.191722) ' points='37.0008827 165.191722 38.6171292 166.807641 40.2333757 165.191722 38.6171292 163.575803'%3E%3C/polygon%3E%3Cpolygon id='Stroke-416' transform='translate(38.617129, 165.191722) rotate(22.000000) translate(-38.617129, -165.191722) ' points='37.0008827 165.191722 38.6171292 166.807641 40.2333757 165.191722 38.6171292 163.575803'%3E%3C/polygon%3E%3Cpolygon id='Fill-418' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(37.165500, 161.772862) rotate(22.000000) translate(-37.165500, -161.772862) ' points='35.5492534 161.772862 37.1654999 163.388781 38.7817464 161.772862 37.1654999 160.156943'%3E%3C/polygon%3E%3Cpolygon id='Stroke-420' transform='translate(37.165500, 161.772862) rotate(22.000000) translate(-37.165500, -161.772862) ' points='35.5492534 161.772862 37.1654999 163.388781 38.7817464 161.772862 37.1654999 160.156943'%3E%3C/polygon%3E%3Cpolygon id='Fill-422' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(35.713906, 158.354085) rotate(22.000000) translate(-35.713906, -158.354085) ' points='34.0976592 158.354085 35.7139057 159.970003 37.3301523 158.354085 35.7139057 156.738166'%3E%3C/polygon%3E%3Cpolygon id='Stroke-424' transform='translate(35.713906, 158.354085) rotate(22.000000) translate(-35.713906, -158.354085) ' points='34.0976592 158.354085 35.7139057 159.970003 37.3301523 158.354085 35.7139057 156.738166'%3E%3C/polygon%3E%3Cpolygon id='Fill-426' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(36.912638, 169.949800) rotate(22.000000) translate(-36.912638, -169.949800) ' points='35.2963915 169.9498 36.912638 171.565719 38.5288846 169.9498 36.912638 168.333882'%3E%3C/polygon%3E%3Cpolygon id='Stroke-428' transform='translate(36.912638, 169.949800) rotate(22.000000) translate(-36.912638, -169.949800) ' points='35.2963915 169.9498 36.912638 171.565719 38.5288846 169.9498 36.912638 168.333882'%3E%3C/polygon%3E%3Cpolygon id='Fill-430' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(35.461068, 166.530964) rotate(22.000000) translate(-35.461068, -166.530964) ' points='33.8448211 166.530964 35.4610677 168.146883 37.0773142 166.530964 35.4610677 164.915045'%3E%3C/polygon%3E%3Cpolygon id='Stroke-432' transform='translate(35.461068, 166.530964) rotate(22.000000) translate(-35.461068, -166.530964) ' points='33.8448211 166.530964 35.4610677 168.146883 37.0773142 166.530964 35.4610677 164.915045'%3E%3C/polygon%3E%3Cpolygon id='Fill-434' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(34.009415, 163.112163) rotate(22.000000) translate(-34.009415, -163.112163) ' points='32.3931681 163.112163 34.0094146 164.728081 35.6256611 163.112163 34.0094146 161.496244'%3E%3C/polygon%3E%3Cpolygon id='Stroke-436' transform='translate(34.009415, 163.112163) rotate(22.000000) translate(-34.009415, -163.112163) ' points='32.3931681 163.112163 34.0094146 164.728081 35.6256611 163.112163 34.0094146 161.496244'%3E%3C/polygon%3E%3Cpolygon id='Fill-438' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(32.557820, 159.693385) rotate(22.000000) translate(-32.557820, -159.693385) ' points='30.9415739 159.693385 32.5578204 161.309304 34.174067 159.693385 32.5578204 158.077467'%3E%3C/polygon%3E%3Cpolygon id='Stroke-440' transform='translate(32.557820, 159.693385) rotate(22.000000) translate(-32.557820, -159.693385) ' points='30.9415739 159.693385 32.5578204 161.309304 34.174067 159.693385 32.5578204 158.077467'%3E%3C/polygon%3E%3Cpolygon id='Fill-442' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(33.756553, 171.289101) rotate(22.000000) translate(-33.756553, -171.289101) ' points='32.1403062 171.289101 33.7565527 172.90502 35.3727993 171.289101 33.7565527 169.673182'%3E%3C/polygon%3E%3Cpolygon id='Stroke-444' transform='translate(33.756553, 171.289101) rotate(22.000000) translate(-33.756553, -171.289101) ' points='32.1403062 171.289101 33.7565527 172.90502 35.3727993 171.289101 33.7565527 169.673182'%3E%3C/polygon%3E%3Cpolygon id='Fill-446' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(32.304959, 167.870324) rotate(22.000000) translate(-32.304959, -167.870324) ' points='30.688712 167.870324 32.3049586 169.486242 33.9212051 167.870324 32.3049586 166.254405'%3E%3C/polygon%3E%3Cpolygon id='Stroke-448' transform='translate(32.304959, 167.870324) rotate(22.000000) translate(-32.304959, -167.870324) ' points='30.688712 167.870324 32.3049586 169.486242 33.9212051 167.870324 32.3049586 166.254405'%3E%3C/polygon%3E%3Cpolygon id='Fill-450' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(30.853329, 164.451464) rotate(22.000000) translate(-30.853329, -164.451464) ' points='29.2370827 164.451464 30.8533293 166.067382 32.4695758 164.451464 30.8533293 162.835545'%3E%3C/polygon%3E%3Cpolygon id='Stroke-452' transform='translate(30.853329, 164.451464) rotate(22.000000) translate(-30.853329, -164.451464) ' points='29.2370827 164.451464 30.8533293 166.067382 32.4695758 164.451464 30.8533293 162.835545'%3E%3C/polygon%3E%3Cpolygon id='Fill-454' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(29.401735, 161.032686) rotate(22.000000) translate(-29.401735, -161.032686) ' points='27.7854886 161.032686 29.4017351 162.648605 31.0179816 161.032686 29.4017351 159.416768'%3E%3C/polygon%3E%3Cpolygon id='Stroke-456' transform='translate(29.401735, 161.032686) rotate(22.000000) translate(-29.401735, -161.032686) ' points='27.7854886 161.032686 29.4017351 162.648605 31.0179816 161.032686 29.4017351 159.416768'%3E%3C/polygon%3E%3Cpolygon id='Fill-458' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(38.778613, 148.026981) rotate(22.000000) translate(-38.778613, -148.026981) ' points='37.1623668 148.026981 38.7786133 149.6429 40.3948599 148.026981 38.7786133 146.411063'%3E%3C/polygon%3E%3Cpolygon id='Stroke-460' transform='translate(38.778613, 148.026981) rotate(22.000000) translate(-38.778613, -148.026981) ' points='37.1623668 148.026981 38.7786133 149.6429 40.3948599 148.026981 38.7786133 146.411063'%3E%3C/polygon%3E%3Cpolygon id='Fill-462' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(37.326984, 144.608121) rotate(22.000000) translate(-37.326984, -144.608121) ' points='35.7107375 144.608121 37.3269841 146.22404 38.9432306 144.608121 37.3269841 142.992203'%3E%3C/polygon%3E%3Cpolygon id='Stroke-464' transform='translate(37.326984, 144.608121) rotate(22.000000) translate(-37.326984, -144.608121) ' points='35.7107375 144.608121 37.3269841 146.22404 38.9432306 144.608121 37.3269841 142.992203'%3E%3C/polygon%3E%3Cpolygon id='Fill-466' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(35.875390, 141.189344) rotate(22.000000) translate(-35.875390, -141.189344) ' points='34.2591433 141.189344 35.8753899 142.805263 37.4916364 141.189344 35.8753899 139.573425'%3E%3C/polygon%3E%3Cpolygon id='Stroke-468' transform='translate(35.875390, 141.189344) rotate(22.000000) translate(-35.875390, -141.189344) ' points='34.2591433 141.189344 35.8753899 142.805263 37.4916364 141.189344 35.8753899 139.573425'%3E%3C/polygon%3E%3Cpolygon id='Fill-470' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(34.423796, 137.770567) rotate(22.000000) translate(-34.423796, -137.770567) ' points='32.8075492 137.770567 34.4237957 139.386485 36.0400422 137.770567 34.4237957 136.154648'%3E%3C/polygon%3E%3Cpolygon id='Stroke-472' fill='%23B2BECA' transform='translate(34.423796, 137.770567) rotate(22.000000) translate(-34.423796, -137.770567) ' points='34.4237957 139.386485 36.0400422 137.770567 34.4237957 136.154648 32.8075492 137.770567'%3E%3C/polygon%3E%3Cpolygon id='Fill-474' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(35.622528, 149.366282) rotate(22.000000) translate(-35.622528, -149.366282) ' points='34.0062815 149.366282 35.622528 150.982201 37.2387746 149.366282 35.622528 147.750364'%3E%3C/polygon%3E%3Cpolygon id='Stroke-476' transform='translate(35.622528, 149.366282) rotate(22.000000) translate(-35.622528, -149.366282) ' points='34.0062815 149.366282 35.622528 150.982201 37.2387746 149.366282 35.622528 147.750364'%3E%3C/polygon%3E%3Cpolygon id='Fill-478' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(34.170875, 145.947481) rotate(22.000000) translate(-34.170875, -145.947481) ' points='32.5546284 145.947481 34.1708749 147.5634 35.7871215 145.947481 34.1708749 144.331563'%3E%3C/polygon%3E%3Cpolygon id='Stroke-480' transform='translate(34.170875, 145.947481) rotate(22.000000) translate(-34.170875, -145.947481) ' points='32.5546284 145.947481 34.1708749 147.5634 35.7871215 145.947481 34.1708749 144.331563'%3E%3C/polygon%3E%3Cpolygon id='Fill-482' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(32.719305, 142.528645) rotate(22.000000) translate(-32.719305, -142.528645) ' points='31.103058 142.528645 32.7193046 144.144564 34.3355511 142.528645 32.7193046 140.912726'%3E%3C/polygon%3E%3Cpolygon id='Stroke-484' transform='translate(32.719305, 142.528645) rotate(22.000000) translate(-32.719305, -142.528645) ' points='31.103058 142.528645 32.7193046 144.144564 34.3355511 142.528645 32.7193046 140.912726'%3E%3C/polygon%3E%3Cpolygon id='Fill-486' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(31.267651, 139.109844) rotate(22.000000) translate(-31.267651, -139.109844) ' points='29.651405 139.109844 31.2676515 140.725763 32.883898 139.109844 31.2676515 137.493925'%3E%3C/polygon%3E%3Cpolygon id='Stroke-488' transform='translate(31.267651, 139.109844) rotate(22.000000) translate(-31.267651, -139.109844) ' points='29.651405 139.109844 31.2676515 140.725763 32.883898 139.109844 31.2676515 137.493925'%3E%3C/polygon%3E%3Cpolygon id='Fill-490' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(32.466384, 150.705559) rotate(22.000000) translate(-32.466384, -150.705559) ' points='30.8501373 150.705559 32.4663838 152.321478 34.0826303 150.705559 32.4663838 149.089641'%3E%3C/polygon%3E%3Cpolygon id='Stroke-492' transform='translate(32.466384, 150.705559) rotate(22.000000) translate(-32.466384, -150.705559) ' points='30.8501373 150.705559 32.4663838 152.321478 34.0826303 150.705559 32.4663838 149.089641'%3E%3C/polygon%3E%3Cpolygon id='Fill-494' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(31.014790, 147.286782) rotate(22.000000) translate(-31.014790, -147.286782) ' points='29.3985431 147.286782 31.0147896 148.902701 32.6310362 147.286782 31.0147896 145.670863'%3E%3C/polygon%3E%3Cpolygon id='Stroke-496' transform='translate(31.014790, 147.286782) rotate(22.000000) translate(-31.014790, -147.286782) ' points='29.3985431 147.286782 31.0147896 148.902701 32.6310362 147.286782 31.0147896 145.670863'%3E%3C/polygon%3E%3Cpolygon id='Fill-498' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(29.563219, 143.867946) rotate(22.000000) translate(-29.563219, -143.867946) ' points='27.9469727 143.867946 29.5632192 145.483865 31.1794658 143.867946 29.5632192 142.252027'%3E%3C/polygon%3E%3Cpolygon id='Stroke-500' transform='translate(29.563219, 143.867946) rotate(22.000000) translate(-29.563219, -143.867946) ' points='27.9469727 143.867946 29.5632192 145.483865 31.1794658 143.867946 29.5632192 142.252027'%3E%3C/polygon%3E%3Cpolygon id='Fill-502' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(28.111566, 140.449145) rotate(22.000000) translate(-28.111566, -140.449145) ' points='26.4953196 140.449145 28.1115662 142.065063 29.7278127 140.449145 28.1115662 138.833226'%3E%3C/polygon%3E%3Cpolygon id='Stroke-504' transform='translate(28.111566, 140.449145) rotate(22.000000) translate(-28.111566, -140.449145) ' points='26.4953196 140.449145 28.1115662 142.065063 29.7278127 140.449145 28.1115662 138.833226'%3E%3C/polygon%3E%3Cpolygon id='Fill-506' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(29.310298, 152.044860) rotate(22.000000) translate(-29.310298, -152.044860) ' points='27.6940519 152.04486 29.3102985 153.660779 30.926545 152.04486 29.3102985 150.428942'%3E%3C/polygon%3E%3Cpolygon id='Stroke-508' transform='translate(29.310298, 152.044860) rotate(22.000000) translate(-29.310298, -152.044860) ' points='27.6940519 152.04486 29.3102985 153.660779 30.926545 152.04486 29.3102985 150.428942'%3E%3C/polygon%3E%3Cpolygon id='Fill-510' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(27.858704, 148.626083) rotate(22.000000) translate(-27.858704, -148.626083) ' points='26.2424578 148.626083 27.8587043 150.242002 29.4749508 148.626083 27.8587043 147.010164'%3E%3C/polygon%3E%3Cpolygon id='Stroke-512' transform='translate(27.858704, 148.626083) rotate(22.000000) translate(-27.858704, -148.626083) ' points='26.2424578 148.626083 27.8587043 150.242002 29.4749508 148.626083 27.8587043 147.010164'%3E%3C/polygon%3E%3Cpolygon id='Fill-514' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(26.407134, 145.207247) rotate(22.000000) translate(-26.407134, -145.207247) ' points='24.7908874 145.207247 26.4071339 146.823166 28.0233805 145.207247 26.4071339 143.591328'%3E%3C/polygon%3E%3Cpolygon id='Stroke-516' transform='translate(26.407134, 145.207247) rotate(22.000000) translate(-26.407134, -145.207247) ' points='24.7908874 145.207247 26.4071339 146.823166 28.0233805 145.207247 26.4071339 143.591328'%3E%3C/polygon%3E%3Cpolygon id='Fill-518' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(24.955481, 141.788446) rotate(22.000000) translate(-24.955481, -141.788446) ' points='23.3392343 141.788446 24.9554808 143.404364 26.5717274 141.788446 24.9554808 140.172527'%3E%3C/polygon%3E%3Cpolygon id='Stroke-520' transform='translate(24.955481, 141.788446) rotate(22.000000) translate(-24.955481, -141.788446) ' points='23.3392343 141.788446 24.9554808 143.404364 26.5717274 141.788446 24.9554808 140.172527'%3E%3C/polygon%3E%3Cpolygon id='Fill-522' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(26.154213, 153.384161) rotate(22.000000) translate(-26.154213, -153.384161) ' points='24.5379666 153.384161 26.1542132 155.00008 27.7704597 153.384161 26.1542132 151.768243'%3E%3C/polygon%3E%3Cpolygon id='Stroke-524' transform='translate(26.154213, 153.384161) rotate(22.000000) translate(-26.154213, -153.384161) ' points='24.5379666 153.384161 26.1542132 155.00008 27.7704597 153.384161 26.1542132 151.768243'%3E%3C/polygon%3E%3Cpolygon id='Fill-526' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(24.702619, 149.965384) rotate(22.000000) translate(-24.702619, -149.965384) ' points='23.0863724 149.965384 24.702619 151.581303 26.3188655 149.965384 24.702619 148.349465'%3E%3C/polygon%3E%3Cpolygon id='Stroke-528' transform='translate(24.702619, 149.965384) rotate(22.000000) translate(-24.702619, -149.965384) ' points='23.0863724 149.965384 24.702619 151.581303 26.3188655 149.965384 24.702619 148.349465'%3E%3C/polygon%3E%3Cpolygon id='Fill-530' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(23.250966, 146.546583) rotate(22.000000) translate(-23.250966, -146.546583) ' points='21.6347194 146.546583 23.2509659 148.162502 24.8672124 146.546583 23.2509659 144.930664'%3E%3C/polygon%3E%3Cpolygon id='Stroke-532' transform='translate(23.250966, 146.546583) rotate(22.000000) translate(-23.250966, -146.546583) ' points='21.6347194 146.546583 23.2509659 148.162502 24.8672124 146.546583 23.2509659 144.930664'%3E%3C/polygon%3E%3Cpolygon id='Fill-534' fill-opacity='0.8' fill='%23A3B1BF' transform='translate(21.799396, 143.127747) rotate(22.000000) translate(-21.799396, -143.127747) ' points='20.183149 143.127747 21.7993955 144.743665 23.4156421 143.127747 21.7993955 141.511828'%3E%3C/polygon%3E%3Cpolygon id='Stroke-536' transform='translate(21.799396, 143.127747) rotate(22.000000) translate(-21.799396, -143.127747) ' points='20.183149 143.127747 21.7993955 144.743665 23.4156421 143.127747 21.7993955 141.511828'%3E%3C/polygon%3E%3Cpath d='M129.314819,189.942425 C126.372666,187.000233 124.490222,184.112668 125.110927,183.492089 C125.731631,182.87151 128.619783,184.753573 131.562571,187.695129 C134.504724,190.637321 136.387169,193.524886 135.766464,194.145465 C135.145759,194.766044 132.257608,192.883981 129.314819,189.942425 Z' id='Fill-538' fill='%23F5F5F5' transform='translate(130.438695, 188.818777) rotate(22.000000) translate(-130.438695, -188.818777) '%3E%3C/path%3E%3Cpath d='M129.314819,189.942425 C126.372666,187.000233 124.490222,184.112668 125.110927,183.492089 C125.731631,182.87151 128.619783,184.753573 131.562571,187.695129 C134.504724,190.637321 136.387169,193.524886 135.766464,194.145465 C135.145759,194.766044 132.257608,192.883981 129.314819,189.942425 Z' id='Stroke-540' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(130.438695, 188.818777) rotate(22.000000) translate(-130.438695, -188.818777) '%3E%3C/path%3E%3Cpath d='M136.083433,187.715086 C130.20421,181.837055 126.443133,176.067006 127.683272,174.827118 C128.92341,173.587231 134.69463,177.347545 140.573854,183.225576 C146.453713,189.104243 150.21479,194.874292 148.974651,196.114179 C147.734513,197.354066 141.963293,193.593752 136.083433,187.715086 Z' id='Fill-542' fill='%23F5F5F5' transform='translate(138.328961, 185.470648) rotate(22.000000) translate(-138.328961, -185.470648) '%3E%3C/path%3E%3Cpath d='M136.083433,187.715086 C130.20421,181.837055 126.443133,176.067006 127.683272,174.827118 C128.92341,173.587231 134.69463,177.347545 140.573854,183.225576 C146.453713,189.104243 150.21479,194.874292 148.974651,196.114179 C147.734513,197.354066 141.963293,193.593752 136.083433,187.715086 Z' id='Stroke-544' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(138.328961, 185.470648) rotate(22.000000) translate(-138.328961, -185.470648) '%3E%3C/path%3E%3Cpath d='M146.697288,183.650834 C138.818086,175.773231 133.777481,168.04045 135.43947,166.378798 C137.101459,164.717146 144.835809,169.756729 152.715011,177.634332 C160.594213,185.511936 165.634818,193.244716 163.972829,194.906369 C162.310839,196.568021 154.57649,191.528438 146.697288,183.650834 Z' id='Fill-546' fill-opacity='0.35' fill='%23F5F5F5' transform='translate(149.706149, 180.642583) rotate(22.000000) translate(-149.706149, -180.642583) '%3E%3C/path%3E%3Cpath d='M146.697288,183.650834 C138.818086,175.773231 133.777481,168.04045 135.43947,166.378798 C137.101459,164.717146 144.835809,169.756729 152.715011,177.634332 C160.594213,185.511936 165.634818,193.244716 163.972829,194.906369 C162.310839,196.568021 154.57649,191.528438 146.697288,183.650834 Z' id='Stroke-548' stroke='%23A3B1BF' stroke-width='1.62' stroke-linejoin='round' transform='translate(149.706149, 180.642583) rotate(22.000000) translate(-149.706149, -180.642583) '%3E%3C/path%3E%3Cpath d='M65.2279553,90.2345285 C62.4548336,90.0320836 60.4105231,89.3345405 60.4105231,88.5051511 C60.4105231,87.676673 62.4503446,86.9797514 65.2188187,86.7764428 C65.4149139,84.0068366 66.0879499,81.9659221 66.8880741,81.9659221 C67.6881984,81.9659221 68.3612344,84.0068366 68.5573295,86.7764428 C71.3258036,86.9797514 73.3656251,87.676673 73.3656251,88.5051511 C73.3656251,89.3345405 71.3213146,90.0320836 68.548193,90.2345285 C68.3410329,92.9408238 67.6762073,94.9210242 66.8880741,94.9210242 C66.0999409,94.9210242 65.4351154,92.9408238 65.2279553,90.2345285 Z' id='Oval-80-Copy-3' fill-opacity='0.4' fill='%23A3B1BF' opacity='0.85' transform='translate(66.888074, 88.443473) rotate(-340.000000) translate(-66.888074, -88.443473) '%3E%3C/path%3E%3Cpath d='M118.775569,329.140492 L118.424988,329.526146 C117.522244,330.5192 115.985396,330.592411 114.992341,329.689667 C114.596934,329.330218 114.331035,328.850456 114.235803,328.324641 L114.143075,327.812647 L113.669257,327.599091 C112.445737,327.047635 111.900921,325.608734 112.452377,324.385214 C112.672015,323.8979 113.046204,323.496601 113.516991,323.243469 L113.97521,322.997095 L114.032158,322.478985 C114.178786,321.144967 115.379087,320.182398 116.713105,320.329026 C117.24418,320.387399 117.741214,320.61917 118.127299,320.988476 L118.503957,321.348765 L119.01334,321.242962 C120.327346,320.970031 121.613813,321.813989 121.886744,323.127995 C121.995449,323.651349 121.928561,324.195943 121.696437,324.677436 L121.470742,325.145594 L121.728812,325.597409 C122.394441,326.762759 121.989337,328.247061 120.823987,328.91269 C120.359975,329.177726 119.82154,329.282421 119.292023,329.21057 L118.775569,329.140492 Z' id='Star-1-Copy-16' fill-opacity='0.4' fill='%23A3B1BF'%3E%3C/path%3E%3Cpath d='M432.83752,120.004816 L432.837087,120.005044 L432.837087,120.005044 C432.092472,120.396429 431.171561,120.110079 430.780176,119.365464 C430.624337,119.068978 430.570573,118.729391 430.627206,118.399266 L430.627206,118.399266 L430.627206,118.399266 L430.627206,118.399266 C430.024845,117.812233 430.01242,116.848039 430.599453,116.245678 C430.833262,116.005765 431.139652,115.849637 431.471171,115.801474 L431.471471,115.801431 L431.471471,115.801431 L431.471471,115.801431 C431.843891,115.046982 432.757399,114.737288 433.511848,115.109709 C433.812195,115.25797 434.055308,115.501083 434.20357,115.801431 L434.20357,115.801431 L434.203869,115.801474 L434.203869,115.801474 C435.036229,115.922398 435.612963,116.695187 435.492039,117.527547 C435.443876,117.859067 435.287748,118.165457 435.047835,118.399266 L435.047835,118.399266 L435.047835,118.399266 L435.047835,118.399266 C435.190066,119.228364 434.63325,120.015783 433.804152,120.158014 C433.474027,120.214647 433.134439,120.160883 432.837954,120.005044 L432.83752,120.004816 Z' id='Star-1-Copy-18' fill-opacity='0.4' fill='%23A3B1BF' transform='translate(432.837619, 117.566125) rotate(-3.000000) translate(-432.837619, -117.566125) '%3E%3C/path%3E%3Cpath d='M99.7727703,38.762372 L99.0266308,39.1545584 L99.0266308,39.1545584 C97.8386845,39.7789675 96.36948,39.3221304 95.7450708,38.134184 C95.4964477,37.6611755 95.4106732,37.1194035 95.5010241,36.5927278 L95.6433921,35.7628333 L95.0407812,35.1755563 L95.0407812,35.1755563 C94.0796578,34.2388893 94.059832,32.7004261 94.996499,31.7393027 C95.369563,31.3564979 95.8584376,31.1073808 96.3874089,31.0305329 L97.2206742,30.9094778 L97.5937913,30.1536188 L97.5937913,30.1536188 C98.1878378,28.950202 99.6449697,28.4562097 100.848387,29.0502562 C101.327469,29.2867472 101.715258,29.6745363 101.951749,30.1536188 L102.324866,30.9094778 L103.158132,31.0305329 L103.158132,31.0305329 C104.486241,31.223478 105.406474,32.4565366 105.213529,33.7846464 C105.136681,34.3136177 104.887564,34.8024923 104.504759,35.1755563 L103.902148,35.7628333 L104.044516,36.5927278 L104.044516,36.5927278 C104.27143,37.9154575 103.383095,39.1716915 102.060366,39.398605 C101.53369,39.4889559 100.991918,39.4031814 100.51891,39.1545584 L99.7727703,38.762372 Z' id='Star-1-Copy-19' fill-opacity='0.4' fill='%23A3B1BF' transform='translate(99.772928, 34.116388) rotate(19.000000) translate(-99.772928, -34.116388) '%3E%3C/path%3E%3Cpath d='M396.631073,305.744172 L396.098125,305.608596 C394.797498,305.277731 394.01135,303.955146 394.342215,302.654518 C394.473956,302.136643 394.772729,301.676633 395.192288,301.345694 L395.623376,301.00566 L395.587617,300.458372 C395.500116,299.119176 396.514815,297.962609 397.854012,297.875108 C398.387399,297.840257 398.917395,297.982247 399.361919,298.279089 L399.818473,298.583965 L400.329362,298.380373 C401.576068,297.883555 402.989473,298.491459 403.486291,299.738164 C403.684076,300.23448 403.712777,300.782145 403.567956,301.296416 L403.418882,301.825788 L403.76981,302.247972 C404.627682,303.280038 404.486471,304.812135 403.454406,305.670007 C403.043346,306.011688 402.531095,306.208301 401.996987,306.229395 L401.44896,306.251039 L401.15585,306.715309 C400.439401,307.850123 398.938655,308.189275 397.80384,307.472826 C397.351988,307.187555 397.006767,306.761296 396.821614,306.260029 L396.631073,305.744172 Z' id='Star-1-Copy-20' fill-opacity='0.4' fill='%23A3B1BF'%3E%3C/path%3E%3Cpath d='M439.755536,146.347757 L439.755103,146.347984 L439.755103,146.347984 C439.010488,146.739369 438.089577,146.45302 437.698192,145.708405 C437.542353,145.411919 437.488589,145.072331 437.545222,144.742206 L437.545222,144.742206 L437.545222,144.742206 L437.545222,144.742206 C436.942861,144.155173 436.930436,143.190979 437.517469,142.588619 C437.751277,142.348705 438.057668,142.192577 438.389187,142.144415 L438.389487,142.144371 L438.389487,142.144371 L438.389487,142.144371 C438.761907,141.389923 439.675415,141.080228 440.429864,141.452649 C440.730211,141.600911 440.973324,141.844024 441.121586,142.144371 L441.121586,142.144371 L441.121885,142.144415 L441.121885,142.144415 C441.954245,142.265338 442.530978,143.038128 442.410055,143.870488 C442.361892,144.202007 442.205764,144.508398 441.965851,144.742206 L441.965851,144.742206 L441.965851,144.742206 L441.965851,144.742206 C442.108082,145.571305 441.551266,146.358723 440.722168,146.500955 C440.392043,146.557588 440.052455,146.503823 439.755969,146.347984 L439.755536,146.347757 Z' id='Star-1-Copy-21' fill-opacity='0.4' fill='%23A3B1BF' transform='translate(439.755635, 143.909066) rotate(-12.000000) translate(-439.755635, -143.909066) '%3E%3C/path%3E%3Cpath d='M244.621971,220.61341 C277.15945,220.61341 303.536288,194.242112 303.536288,161.711467 C303.536288,129.180822 277.15945,102.809524 244.621971,102.809524 C212.084491,102.809524 185.707653,129.180822 185.707653,161.711467 C185.707653,194.242112 212.084491,220.61341 244.621971,220.61341 Z' id='Oval-8-Copy-2' fill-opacity='0.66' fill='%23A3B1BF'%3E%3C/path%3E%3Cpath d='M245.345696,141.060063 C241.146656,141.060063 237.880736,142.342349 235.547936,144.906921 C233.215136,147.354921 232.107056,150.618921 232.107056,154.698921 L236.714336,154.698921 C236.714336,151.842921 237.355856,149.628063 238.638896,147.996063 C240.038576,146.072635 242.196416,145.140063 245.112416,145.140063 C247.561856,145.140063 249.486416,145.781206 250.827776,147.180063 C252.110816,148.462349 252.810656,150.269206 252.810656,152.600635 C252.810656,154.232635 252.227456,155.748063 251.061056,157.205206 C250.711136,157.671492 250.011296,158.370921 249.078176,159.303492 C245.928896,162.101206 244.004336,164.316063 243.187856,166.064635 C242.488016,167.521778 242.138096,169.212063 242.138096,171.135492 L242.138096,172.476063 L246.803696,172.476063 L246.803696,171.135492 C246.803696,169.561778 247.153616,168.162921 247.911776,166.880635 C248.494976,165.831492 249.369776,164.782349 250.652816,163.674921 C253.218896,161.401778 254.793536,159.886349 255.376736,159.186921 C256.834736,157.263492 257.592896,154.990349 257.592896,152.367492 C257.592896,148.870349 256.484816,146.130921 254.326976,144.149206 C252.052496,142.050921 249.078176,141.060063 245.345696,141.060063 Z M244.470896,176.556063 C243.479456,176.556063 242.662976,176.847492 241.963136,177.546921 C241.263296,178.188063 240.971696,179.004063 240.971696,179.994921 C240.971696,180.985778 241.263296,181.801778 241.963136,182.501206 C242.662976,183.142349 243.479456,183.492063 244.470896,183.492063 C245.462336,183.492063 246.278816,183.142349 246.978656,182.501206 C247.678496,181.860063 248.028416,181.044063 248.028416,179.994921 C248.028416,179.004063 247.678496,178.188063 247.036976,177.546921 C246.337136,176.847492 245.462336,176.556063 244.470896,176.556063 Z' id='?' fill='%23FFFFFF'%3E%3C/path%3E%3Cpath d='M223.261662,133.139924 C229.077338,129.782947 239.631808,125.828273 236.274126,120.013819 C232.916444,114.199364 220.565868,115.043746 214.750193,118.400722 C208.934517,121.757699 202.729834,131.623951 206.087516,137.438405 C209.445198,143.252859 217.445986,136.4969 223.261662,133.139924' id='Oval-8-Copy-2' fill='%23FAFAFA'%3E%3C/path%3E%3Cpath d='M249.679003,119.820589 C252.365149,119.820589 254.5427,117.643495 254.5427,114.957913 C254.5427,112.272332 252.365149,110.095238 249.679003,110.095238 C246.992857,110.095238 244.815306,112.272332 244.815306,114.957913 C244.815306,117.643495 246.992857,119.820589 249.679003,119.820589 Z' id='Oval-10-Copy' fill='%23FAFAFA'%3E%3C/path%3E%3Cpath d='M421.5,321.5 L423,323' id='Line-2' stroke='%23979797' stroke-linecap='square'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E`","import React from \"react\";\nimport svg404 from './svg404';\nexport default () => (\n <React.Fragment>\n <div\n style={{\n minHeight: 'calc(100vh - 100px)',\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }}\n className=\"catalogue-of-life\"\n >\n <div style={{\n backgroundImage: `url(\"data:image/svg+xml,${svg404}\")`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n padding: \"170px 176px 200px 224px\"\n }}>\n <div style={{ textAlign: \"center\", fontWeight: 800 }}>\n <h1>404</h1>\n </div>\n <div style={{ textAlign: \"center\", fontWeight: 800 }}>\n <p>Sorry, this page does not exist.</p>\n </div>\n \n\n </div>\n </div>\n </React.Fragment>\n);\n","import React, { useState, useEffect } from \"react\";\nimport config from \"../config\";\nimport axios from \"axios\";\nimport Highcharts from \"highcharts\";\nimport \"highcharts/modules/exporting\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport _ from \"lodash\";\nimport { Spin, Row, Col, Switch } from \"antd\";\nimport { useNavigateTo } from \"../router\";\n\nconst MAX_SLICES_PER_RING = 100;\nconst canonicalRanks = [\n \"kingdom\",\n \"phylum\",\n \"class\",\n \"order\",\n \"family\",\n \"genus\",\n \"species\",\n];\n\nconst notAssignedLabel = (rk) => (rk ? `Not assigned ${rk}` : \"Not assigned\");\n\nconst sortAndClip = (nodes) => {\n if (!nodes || nodes.length === 0) return [];\n const sorted = [...nodes].sort((a, b) => (b.species || 0) - (a.species || 0));\n return sorted.length <= MAX_SLICES_PER_RING\n ? sorted\n : sorted.slice(0, MAX_SLICES_PER_RING);\n};\n\n// Append a \"Not assigned <rank>\" slice for the difference between a parent's\n// total species count and the sum of its visible children. Covers two cases:\n// 1. species that sit directly under the parent without an intermediate rank\n// 2. species under children that were clipped out by sortAndClip\nconst padNotAssigned = (kids, parentSpecies) => {\n const sorted = sortAndClip(kids || []);\n const sum = sorted.reduce((a, n) => a + (n.species || 0), 0);\n if (sum >= parentSpecies) return sorted;\n return [\n ...sorted,\n {\n name: notAssignedLabel(_.get(sorted, \"[0].rank\", \"\")),\n species: parentSpecies - sum,\n children: [],\n },\n ];\n};\n\nconst TaxonBreakdown = ({\n taxon,\n datasetKey,\n rank = [],\n dataset,\n level = 1,\n showLevelSwitch = false,\n darkMode,\n}) => {\n const navigateToTaxon = useNavigateTo(\"taxon\");\n const [options, setOptions] = useState(null);\n const [loading, setLoading] = useState(false);\n const [invalid, setInvalid] = useState(false);\n // The chart's effective level is controlled internally when the switch\n // is enabled, so toggling can refetch + re-render the chart. Otherwise\n // the prop drives directly.\n const [activeLevel, setActiveLevel] = useState(level);\n useEffect(() => {\n setActiveLevel(level);\n }, [level]);\n useEffect(() => {\n if (taxon?.id && datasetKey) {\n getData();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [taxon, datasetKey, activeLevel]);\n\n const getOverView = async () => {\n const res = await axios(\n `${\n config.dataApi\n }dataset/${datasetKey}/nameusage/search?TAXON_ID=${encodeURIComponent(\n taxon.id\n )}&facet=rank&status=accepted&status=provisionally%20accepted&limit=0`\n );\n return _.keyBy(_.get(res, \"data.facets.rank\", []), \"value\");\n };\n\n const getData = async () => {\n setLoading(true);\n try {\n const counts = await getOverView();\n\n // confirm the focal taxon has at least one child rank with content\n const ranks = canonicalRanks;\n let taxonRankIdx = ranks.indexOf(_.get(taxon, \"name.rank\"));\n if (taxonRankIdx === -1) {\n let rankIndex = rank.indexOf(_.get(taxon, \"name.rank\")) + 1;\n while (taxonRankIdx === -1 && rankIndex < rank.length - 1) {\n const canonicalRankIndex = ranks.indexOf(rank[rankIndex]);\n if (canonicalRankIndex > -1) {\n taxonRankIdx = canonicalRankIndex - 1;\n }\n rankIndex++;\n }\n }\n let childRank;\n let childRankIndex = taxonRankIdx + 1;\n while (!childRank && childRankIndex < ranks.length) {\n const nextRank = _.get(ranks, `[${childRankIndex}]`);\n if (nextRank && _.get(counts, `${nextRank}.count`, 0) > 0) {\n childRank = nextRank;\n } else {\n childRankIndex++;\n }\n }\n if (!childRank) {\n setInvalid(true);\n setLoading(false);\n return;\n }\n\n const res = await axios(\n `${config.dataApi}dataset/${datasetKey}/taxon/${taxon.id}/breakdown?level=${activeLevel}`\n );\n const children = res.data || [];\n const totalSpecies = _.get(counts, \"species.count\", 0);\n\n setLoading(false);\n buildChart(children, totalSpecies);\n } catch (err) {\n setLoading(false);\n }\n };\n\n const buildChart = (children, totalSpecies) => {\n const DOI = dataset.doi ? \"https://doi.org/\" + dataset.doi : null;\n const baseColors = Highcharts.getOptions().colors;\n // Colour used for outer-ring \"gap\" slices: match the page background so\n // the wedge reads as empty space rather than overlapping the inner pie.\n // Follows the explicit `darkMode` prop if given, otherwise prefers-color-scheme.\n const prefersDark =\n typeof darkMode === \"boolean\"\n ? darkMode\n : typeof window !== \"undefined\" &&\n typeof window.matchMedia === \"function\" &&\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const gapColor = prefersDark ? \"#1f1f1f\" : \"#ffffff\";\n const taxonClickHandler = {\n click: (e) => {\n if (e.point._id) {\n navigateToTaxon(e.point._id);\n }\n },\n };\n\n // Inner pie: direct children of the focal taxon. Pad with a single\n // \"Not assigned <rank>\" slice if focal-taxon species don't fully sum up.\n const innerNodes = padNotAssigned(children, totalSpecies);\n const innerData = innerNodes.map((n, i) => ({\n name: n.name,\n y: n.species,\n _id: n.id,\n color: baseColors[i % baseColors.length],\n _kids: n.children,\n }));\n\n // Outer ring: children of each inner slice (grandchildren of focal),\n // coloured as a monochrome brightness shift of the parent so each\n // family of arcs reads as one hue group. Only rendered when level >= 2\n // AND the response actually carries that depth. With level=1 we draw\n // a single-ring pie even if the API returned nested children.\n const outerData = [];\n const hasOuterData =\n activeLevel >= 2 && innerData.some((s) => s._kids && s._kids.length > 0);\n if (hasOuterData) {\n innerData.forEach((slice) => {\n const sorted = sortAndClip(slice._kids || []);\n const sum = sorted.reduce((a, n) => a + (n.species || 0), 0);\n sorted.forEach((g, j) => {\n const t = sorted.length > 1 ? j / (sorted.length - 1) : 0;\n const shift = -0.1 + t * 0.4;\n outerData.push({\n name: g.name,\n y: g.species,\n _id: g.id,\n color: Highcharts.color(slice.color).brighten(shift).get(),\n });\n });\n // Where children don't fully account for the inner slice, add a\n // transparent gap slice so the outer ring stays angularly aligned\n // with the inner pie but the missing portion reads as empty space\n // (rather than a labelled \"Not assigned\" wedge).\n if (sum < slice.y) {\n outerData.push({\n name: notAssignedLabel(_.get(sorted, \"[0].rank\", \"\")),\n y: slice.y - sum,\n color: gapColor,\n borderColor: gapColor,\n borderWidth: 0,\n dataLabels: { enabled: false },\n });\n }\n });\n }\n\n const clean = (rows) => rows.map(({ _kids, ...rest }) => rest);\n const grandTotal = totalSpecies || innerData.reduce((a, s) => a + s.y, 0);\n\n const innerLabelStyle = {\n color: \"contrast\",\n textOutline: \"1px contrast\",\n fontWeight: \"bold\",\n };\n\n // Inner-ring data labels: only positioned inside the ring when there's\n // an outer ring fighting for the external label gutter. With just one\n // ring (level=1) the labels live outside the chart, same as the outer\n // ring at level=2, with the slice name + species count.\n const innerDataLabels = hasOuterData\n ? {\n formatter: function () {\n return this.y > grandTotal / 10 ? this.point.name : null;\n },\n distance: -30,\n style: innerLabelStyle,\n }\n : {\n formatter: function () {\n return this.y > 1\n ? \"<b>\" +\n this.point.name +\n \":</b> \" +\n this.y.toLocaleString(\"en-GB\")\n : null;\n },\n };\n\n const series = [\n {\n name: \"Species\",\n data: clean(innerData),\n size: hasOuterData ? \"60%\" : \"85%\",\n dataLabels: innerDataLabels,\n point: { events: taxonClickHandler },\n },\n ];\n if (hasOuterData) {\n series.push({\n name: \"Species\",\n data: outerData,\n size: \"85%\",\n innerSize: \"60%\",\n dataLabels: {\n formatter: function () {\n return this.y > 1\n ? \"<b>\" +\n this.point.name +\n \":</b> \" +\n this.y.toLocaleString(\"en-GB\")\n : null;\n },\n },\n point: { events: taxonClickHandler },\n });\n }\n\n setOptions({\n chart: { type: \"pie\" },\n credits: {\n text: `${taxon.name.scientificName} in ${dataset.title}${\n dataset.version ? \" (\" + dataset.version + \")\" : \"\"\n }. ${(dataset.doi ? \"DOI:\" + dataset.doi : null) || dataset.url || \"\"}`,\n href: DOI || dataset.url || \"\",\n },\n title: { text: \"\" },\n plotOptions: { pie: { shadow: false, center: [\"50%\", \"50%\"] } },\n tooltip: {},\n series,\n responsive: {\n rules: [\n {\n condition: { maxWidth: 400 },\n chartOptions: {\n series: hasOuterData\n ? [{}, { dataLabels: { enabled: false } }]\n : [{}],\n },\n },\n ],\n },\n exporting: {\n chartOptions: {\n plotOptions: { series: { dataLabels: { enabled: true } } },\n },\n fallbackToExportServer: false,\n },\n });\n };\n\n if (invalid) return null;\n\n // Place the level toggle inside the chart's top-right area, just left of\n // the Highcharts context-menu (≡) icon, so it doesn't consume an extra\n // row. Colourless switch with lvl1 / lvl2 labels.\n const levelSwitch = showLevelSwitch ? (\n <Switch\n size=\"small\"\n checked={activeLevel === 2}\n onChange={(checked) => setActiveLevel(checked ? 2 : 1)}\n checkedChildren=\"lvl2\"\n unCheckedChildren=\"lvl1\"\n style={{\n position: \"absolute\",\n top: 11,\n right: 44,\n zIndex: 2,\n background: activeLevel === 2 ? \"#8c8c8c\" : \"#bfbfbf\",\n }}\n />\n ) : null;\n\n return (\n <div style={{ position: \"relative\" }}>\n {levelSwitch}\n {loading || !options ? (\n <Row style={{ padding: \"48px\" }}>\n <Col flex=\"auto\"></Col>\n <Col>\n <Spin size=\"large\" />\n </Col>\n <Col flex=\"auto\"></Col>\n </Row>\n ) : (\n <HighchartsReact highcharts={Highcharts} options={options} />\n )}\n </div>\n );\n};\n\nexport default TaxonBreakdown;\n","import React, { useState, useEffect } from \"react\";\nimport _ from \"lodash\";\nimport { getDatasetsBatch } from \"../api/dataset\";\nimport DataLoader from \"dataloader\";\n\nconst SecondarySources = ({ info, datasetKey }) => {\n const [datasets, setDatasets] = useState({});\n\n useEffect(() => {\n if (info?.source?.secondarySources) getDatasets();\n }, [info]);\n\n const datasetLoader = new DataLoader((ids) => getDatasetsBatch(ids, datasetKey));\n\n const getDatasets = async () => {\n const data = {};\n try {\n await Promise.all(\n Object.keys(info?.source?.secondarySources || {}).map((key) =>\n datasetLoader\n .load(info?.source?.secondarySources[key].datasetKey)\n .then((dataset) => {\n data[dataset.key] = dataset;\n })\n )\n );\n } catch (error) {\n console.log(error);\n }\n setDatasets(data);\n };\n\n return info?.source?.secondarySources\n ? Object.keys(info?.source?.secondarySources || {}).map((key) => (\n <React.Fragment key={key}>\n {_.startCase(key)}:{\" \"}\n <a\n href={`https://www.checklistbank.org/dataset/${info?.source?.secondarySources?.[key]?.datasetKey}/taxon/${encodeURIComponent(info?.source?.secondarySources?.[key]?.id)}`}\n >\n {datasets[info?.source?.secondarySources?.[key]?.datasetKey]?.title ||\n info?.source?.secondarySources?.[key]?.datasetKey}\n </a>\n </React.Fragment>\n ))\n : null;\n};\n\nexport default SecondarySources;\n","import React, { useState } from \"react\";\nimport axios from \"axios\";\nimport { Button, Form, Input, message, Modal , Spin, Alert, Row, Col} from \"antd\";\nimport config from \"../config\";\nimport { MessageFilled, DownloadOutlined } from \"@ant-design/icons\";\nimport { set } from \"lodash\";\n\nconst axiosNoAuth = axios.create({\n transformRequest: (data, headers) => {\n delete headers.common.Authorization;\n headers[\"Content-Type\"] = \"application/json\";\n return JSON.stringify(data);\n }\n})\n\nmessage.config({\n getContainer: () => document.getElementsByClassName(\"catalogue-of-life\")[0],\n});\n\nconst getMsg = (error) => {\n \n return error?.response?.data?.message || error?.message || \"An error occurred\"\n \n}\nconst ErrorMessage = ({ error }) => {\n\nreturn <div style={{margin: \"6px\"}}><span>{getMsg(error)}</span></div>\n\n}\n\n\nexport const Feedback = ({ datasetKey, taxonKey }) => {\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n const [visible, setVisible] = useState(false);\n const [error, setError] = useState(null);\n const [issueUrl, setIssueUrl] = useState(null);\nconst onFinishFailed = ({ errorFields }) => {\n form.scrollToField(errorFields[0].name);\n };\n const submitData = (values) => {\n axiosNoAuth\n .post(\n `${config.dataApi}dataset/${datasetKey}/nameusage/${taxonKey}/feedback`,\n values\n )\n .then((res) => {\n console.log(res);\n setLoading(false);\n setIssueUrl(res.data);\n })\n .catch((err) => {\n setLoading(false);\n setError(err);\n });\n };\n const layout = {\n labelCol: {\n span: 6,\n },\n wrapperCol: {\n span: 18,\n },\n };\n return (\n <>\n <Modal\n getContainer={\".catalogue-of-life\"}\n title=\"Feedback\"\n open={visible}\n destroyOnClose={true}\n onOk={() => {\n if(issueUrl){\n setVisible(false);\n setIssueUrl(null);\n return;\n } else {\n setLoading(true);\n form\n .validateFields()\n .then((values) => {\n form.resetFields();\n return submitData(values);\n })\n } \n }}\n onCancel={() => setVisible(false)}\n confirmLoading={loading}\n >\n {error && <Alert\n style={{ marginBottom: \"10px\" }}\n message={<ErrorMessage error={error} />}\n type=\"error\"\n onClose={() => setError(null)}\n closable\n />}\n\n {issueUrl && <p>Thank you, your feedback was saved. You can follow for progress and further discussion <a target=\"_blank\" href={issueUrl}>here.</a></p>}\n \n {!issueUrl && <> <p>\n We will create a <a href=\"https://github.com/CatalogueofLife/data/issues\" target=\"_blank\">github issue</a> which you can monitor or use to further discuss with us.\n </p>\n <Spin spinning={loading}>\n <Form\n {...layout}\n \n form={form}\n onFinish={submitData}\n onFinishFailed={onFinishFailed}\n >\n <Form.Item name=\"message\" label=\"Message\" rules={[{required: true}]}>\n <Input.TextArea rows={8} />\n </Form.Item>\n <Form.Item\n name=\"email\"\n label=\"Email (optional)\"\n rules={[\n {\n type: \"email\",\n }\n ]}\n >\n <Input type=\"email\" />\n </Form.Item>\n </Form>\n </Spin></>}\n </Modal>\n <Row><Col flex=\"auto\"></Col><Col></Col><Button href={`https://www.checklistbank.org/dataset/${datasetKey}/download?taxonID=${taxonKey}`} style={{marginTop: \"12px\", marginRight: \"4px\"} }size=\"small\">Download <DownloadOutlined/></Button><Button style={{marginTop: \"12px\"} }size=\"small\" onClick={() => setVisible(true)}>Feedback <MessageFilled /></Button></Row>\n \n </>\n );\n};\n","import React from \"react\";\nimport config from \"../config\";\nimport { getSectorsBatch } from \"../api/sector\";\nimport { getDatasetsBatch } from \"../api/dataset\";\nimport DataLoader from \"dataloader\";\nimport axios from \"axios\";\nimport { LinkOutlined, DownloadOutlined } from \"@ant-design/icons\";\nimport { Alert, Tag, Row, Col, Button, Rate, Tooltip } from \"antd\";\n// import SynonymTable from \"./Synonyms\";\nimport Synonyms from \"./Synonyms\";\nimport TypeMaterial from \"./TypeMaterial\";\n\nimport VernacularNames from \"./VernacularNames\";\nimport Distributions from \"./Distributions\";\nimport Classification from \"./Classification\";\nimport NameRelations from \"./NameRelations\";\nimport References from \"./References\";\nimport ErrorMsg from \"../components/ErrorMsg\";\nimport _ from \"lodash\";\nimport PresentationItem from \"../components/PresentationItem\";\nimport dayjs from \"dayjs\";\nimport localizedFormat from \"dayjs/plugin/localizedFormat\";\ndayjs.extend(localizedFormat);\nimport { RouterContext, buildRouter, LinkTo } from \"../router\";\nimport BooleanValue from \"../components/BooleanValue\";\n// import ReferencePopover from \"./ReferencePopover\"\nimport IncludesTable from \"./Includes\";\nimport DatasetlogoWithFallback from \"../components/DatasetlogoWithFallback\";\nimport btoa from \"btoa\";\nimport Page404 from \"../components/Page404\";\nimport TaxonBreakdown from \"./TaxonBreakdown\";\nimport SecondarySources from \"./SecondarySources\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport DecisionBadge from \"../components/DecisionBadge\";\nimport { Feedback } from \"./Feedback\";\nconst md = 5;\n\nclass TaxonPage extends React.Component {\n static contextType = RouterContext;\n\n constructor(props) {\n super(props);\n if (this.props.auth) {\n axios.defaults.headers.common[\"Authorization\"] = `Basic ${btoa(\n this.props.auth\n )}`;\n }\n this.state = {\n taxon: null,\n info: null,\n taxonLoading: true,\n datasetLoading: true,\n infoLoading: true,\n infoError: null,\n taxonError: null,\n verbatimLoading: true,\n verbatimError: null,\n verbatim: null,\n logoUrl: null,\n sourceDataset: null,\n includes: [],\n rank: [],\n nomStatus: null,\n catalogue: null,\n referenceIndexMap: {},\n sourceDatasetKeyMap: null,\n };\n }\n\n componentDidMount = () => {\n const { taxonKey } = this.props;\n this.getCatalogue();\n if (taxonKey) {\n this.getTaxon(taxonKey);\n this.getInfo(taxonKey);\n this.getRank(taxonKey);\n this.getIncludes(taxonKey);\n this.getNomStatus(taxonKey);\n }\n };\n\n componentDidUpdate(prevProps) {\n if (prevProps.taxonKey !== this.props.taxonKey && this.props.taxonKey) {\n const taxonKey = this.props.taxonKey;\n this.getTaxon(taxonKey);\n this.getInfo(taxonKey);\n this.getRank(taxonKey);\n this.getIncludes(taxonKey);\n this.getNomStatus(taxonKey);\n }\n }\n\n getTaxon = (taxonKey) => {\n const { datasetKey, pageTitleTemplate } = this.props;\n this.setState({ loading: true });\n axios(`${config.dataApi}dataset/${datasetKey}/taxon/${taxonKey}`)\n .then((res) => {\n let promises = [res];\n if (pageTitleTemplate && _.get(res, \"data.label\")) {\n document.title = pageTitleTemplate.replace(\n \"__taxon__\",\n res.data.label\n );\n }\n if (_.get(res, \"data.name.publishedInId\")) {\n promises.push(\n axios(\n `${config.dataApi}dataset/${datasetKey}/reference/${_.get(\n res,\n \"data.name.publishedInId\"\n )}`\n ).then((publishedIn) => {\n res.data.name.publishedIn = publishedIn.data;\n return res;\n })\n );\n }\n\n if (_.get(res, \"data.name\")) {\n promises.push(\n axios(\n `${config.dataApi}dataset/${datasetKey}/name/${_.get(\n res,\n \"data.name.id\"\n )}/relations`\n ).then((relations) => {\n res.data.name.relations = relations.data;\n return Promise.allSettled(\n relations.data.map((r) => {\n return axios(\n `${config.dataApi}dataset/${datasetKey}/name/${r.relatedNameId}`\n ).then((n) => {\n r.relatedName = n.data;\n });\n })\n ).then((results) => {\n return results\n .filter((r) => (r.status = \"fulfilled\"))\n .map((r) => r.value);\n });\n })\n );\n }\n // sector keys are only present if its a catalogue\n if (_.get(res, \"data.sectorKey\")) {\n axios(\n `${config.dataApi}dataset/${datasetKey}/sector/${_.get(\n res,\n \"data.sectorKey\"\n )}`\n ).then((sector) => {\n axios(\n `${config.dataApi}dataset/${datasetKey}/logo/source/${_.get(\n sector,\n \"data.subjectDatasetKey\"\n )}`\n )\n .then(() => {\n this.setState({\n logoUrl: `${\n config.dataApi\n }dataset/${datasetKey}/logo/source/${_.get(\n sector,\n \"data.subjectDatasetKey\"\n )}?size=MEDIUM`,\n });\n })\n .catch(() => {\n // ignore, there is no logo\n });\n\n axios(\n `${config.dataApi}dataset/${datasetKey}/source/${_.get(\n sector,\n \"data.subjectDatasetKey\"\n )}`\n ).then((dataset) => {\n this.setState({ sourceDataset: dataset.data });\n });\n });\n }\n\n return Promise.allSettled(promises).then((results) => {\n return results\n .filter((r) => (r.status = \"fulfilled\"))\n .map((r) => r.value);\n });\n })\n .then((res) => {\n this.setState({\n taxonLoading: false,\n taxon: res[0].data,\n taxonError: null,\n });\n })\n .catch((err) => {\n if (_.get(err, \"response.status\") === 404) {\n this.fetchSynonymAndRedirect(taxonKey);\n } else {\n this.setState({ taxonLoading: false, taxonError: err, taxon: null });\n }\n });\n };\n\n getCatalogue = () => {\n const { datasetKey } = this.props;\n axios(`${config.dataApi}dataset/${datasetKey}`)\n .then((res) => {\n this.setState({ catalogue: res.data });\n })\n .catch((err) => {\n // ignore\n });\n };\n datasetLoader = new DataLoader((ids) =>\n getDatasetsBatch(ids, this.props.datasetKey)\n );\n sectorLoader = new DataLoader((ids) =>\n getSectorsBatch(ids, this.props.datasetKey)\n );\n\n decorateWithSectorsAndDataset = async (synonyms) => {\n const { datasetKey } = this.props;\n /* const sectorLoader = new DataLoader((ids) =>\n getSectorsBatch(ids, datasetKey)\n ); */\n const sourceDatasetsMap = {};\n for (const type of [\"misapplied\", \"heterotypic\", \"homotypic\"].filter(\n (t) => !!synonyms[t]\n )) {\n await Promise.allSettled(\n synonyms[type]\n .filter((tx) => !!tx.sectorKey)\n .map((tx) =>\n this.sectorLoader.load(tx.sectorKey, datasetKey).then((r) => {\n tx.sector = r;\n return this.datasetLoader\n .load(r.subjectDatasetKey)\n .then((dataset) => {\n // tx.sector.dataset = dataset\n tx.sourceDatasetKey = dataset.key;\n sourceDatasetsMap[dataset.key] = dataset;\n });\n })\n )\n );\n }\n if (synonyms?.heterotypicGroups) {\n for (const arr of synonyms?.heterotypicGroups) {\n await Promise.allSettled(\n arr\n .filter((tx) => !!tx.sectorKey)\n .map((tx) =>\n this.sectorLoader.load(tx.sectorKey, datasetKey).then((r) => {\n tx.sector = r;\n return this.datasetLoader\n .load(r.subjectDatasetKey)\n .then((dataset) => {\n // tx.sector.dataset = dataset\n tx.sourceDatasetKey = dataset.key;\n sourceDatasetsMap[dataset.key] = dataset;\n });\n })\n )\n );\n }\n }\n\n return Object.keys(sourceDatasetsMap).length > 0 ? sourceDatasetsMap : null;\n };\n\n getInfo = async (taxonKey) => {\n const { datasetKey } = this.props;\n\n\n try {\n const res = await axios(\n `${config.dataApi}dataset/${datasetKey}/taxon/${taxonKey}/info`\n );\n let referenceIndexMap = {};\n if (_.get(res, \"data.references\")) {\n Object.keys(res.data.references).forEach((k, i) => {\n referenceIndexMap[k] = (i + 1).toString();\n });\n await Promise.allSettled(\n Object.keys(res.data.references)\n .map((key) => res.data.references[key])\n .filter((ref) => !!ref.sectorKey)\n .map((ref) =>\n this.sectorLoader.load(ref.sectorKey).then((r) => {\n ref.sector = r;\n return this.datasetLoader\n .load(r.subjectDatasetKey)\n .then((dataset) => {\n // tx.sector.dataset = dataset\n ref.sourceDataset = dataset;\n // sourceDatasetsMap[dataset.key] = dataset;\n });\n })\n )\n );\n }\n if (res?.data?.vernacularNames) {\n await Promise.allSettled(\n res.data.vernacularNames.filter((name) => !!name.sectorKey).map((name) =>\n this.sectorLoader.load(name.sectorKey).then((r) => {\n name.sector = r;\n name.sourceDatasetKey = r.subjectDatasetKey;\n })\n )\n );\n }\n if (res?.data?.distributions) {\n await Promise.allSettled(\n res.data.distributions.filter((dist) => !!dist.sectorKey).map((dist) =>\n this.sectorLoader.load(dist.sectorKey).then((r) => {\n dist.sector = r;\n dist.sourceDatasetKey = r.subjectDatasetKey;\n })\n )\n );\n }\n let sourceDatasetKeyMap = _.get(res, \"data.synonyms\")\n ? await this.decorateWithSectorsAndDataset(_.get(res, \"data.synonyms\"))\n : null;\n\n if (res?.data?.nameRelations && res?.data?.names) {\n res?.data?.nameRelations.forEach((rel) => {\n rel.relatedName = res?.data?.names?.[rel?.relatedNameId];\n rel.name = res?.data?.names?.[rel?.nameId];\n });\n }\n this.setState({\n infoLoading: false,\n info: res.data,\n classification: res?.data?.classification,\n infoError: null,\n referenceIndexMap,\n sourceDatasetKeyMap,\n });\n } catch (err) {\n if (_.get(err, \"response.status\") === 404) {\n this.fetchSynonymAndRedirect(taxonKey);\n } else {\n this.setState({ infoLoading: false, infoError: err, info: null });\n }\n }\n };\n\n getRank = () => {\n axios(`${config.dataApi}vocab/rank`).then((res) =>\n this.setState({ rank: res.data.map((r) => r.name) })\n );\n };\n\n getNomStatus = () => {\n axios(`${config.dataApi}vocab/nomstatus`).then((res) =>\n this.setState({\n nomStatus: res.data.reduce((a, c) => ((a[c.name] = c), a), {}),\n })\n );\n };\n\n getIncludes = (taxonKey) => {\n const { datasetKey } = this.props;\n\n axios(\n `${config.dataApi}dataset/${datasetKey}/nameusage/search?TAXON_ID=${taxonKey}&facet=rank&status=accepted&status=provisionally%20accepted&limit=0`\n )\n .then((res) => {\n this.setState({\n includesLoading: false,\n includes: _.get(res, \"data.facets.rank\") || [],\n });\n })\n .catch((err) => {\n this.setState({\n includesLoading: false,\n includes: [],\n });\n });\n };\n\n fetchSynonymAndRedirect = (taxonKey) => {\n const { datasetKey } = this.props;\n const navigateToTaxon = this.context?.taxon?.onNavigate;\n\n axios(`${config.dataApi}dataset/${datasetKey}/synonym/${taxonKey}`)\n .then((res) => {\n const acceptedId = _.get(res, \"data.accepted.id\");\n if (acceptedId && navigateToTaxon) navigateToTaxon(acceptedId);\n })\n .catch((err) => {\n if (_.get(err, \"response.status\") === 404) {\n this.setState({ status: 404 });\n }\n });\n };\n\n render() {\n const {\n datasetKey,\n showDistributionMap,\n gbifChecklistKey,\n } = this.props;\n const {\n taxon,\n info,\n classification,\n sourceDataset,\n includes,\n rank,\n nomStatus,\n taxonError,\n synonymsError,\n classificationError,\n infoError,\n status,\n catalogue,\n referenceIndexMap,\n } = this.state;\n const genusRankIndex = rank ? rank.indexOf(\"genus\") : -1;\n\n /* const synonyms =\n info && info.synonyms && info.synonyms.length > 0\n ? info.synonyms.filter((s) => s.status !== \"misapplied\")\n : [];\n const misapplied =\n info && info.synonyms && info.synonyms.length > 0\n ? info.synonyms.filter((s) => s.status === \"misapplied\")\n : []; */\n const homotypic = _.get(info, \"synonyms.homotypic\", []);\n const heterotypic = _.get(info, \"synonyms.heterotypic\", []);\n const misapplied = _.get(info, \"synonyms.misapplied\", []);\n const synonyms = [\n ...homotypic.map((h) => ({ ...h, __homotypic: true })),\n ...heterotypic,\n ];\n return status === 404 ? (\n <Page404 />\n ) : (\n <React.Fragment>\n <div\n className=\"catalogue-of-life\"\n style={{\n padding: 24,\n minHeight: 280,\n margin: \"16px 0\",\n fontSize: \"12px\",\n }}\n >\n {taxonError && (\n <Alert message={<ErrorMsg error={taxonError} />} type=\"error\" />\n )}\n {taxon && (\n <Row align=\"bottom\">\n <Col flex=\"auto\">\n \n <div style={{marginLeft: info?.usage?.merged ? \"-22px\": 0}}>\n {info?.usage?.merged && \n <MergedDataBadge \n style={{marginBottom: \"10px\"}}\n createdBy={info?.usage?.createdBy}\n datasetKey={info?.usage?.datasetKey} \n verbatimSourceKey={info?.usage?.verbatimSourceKey} \n sourceDatasetKey={info?.source?.sourceDatasetKey} \n sourceId={info?.source?.sourceId} \n />}\n <h1\n style={{\n fontSize: \"30px\",\n fontWeight: \"400\",\n paddingLeft: \"10px\",\n display: \"inline\",\n textTransform: \"none\",\n }}\n dangerouslySetInnerHTML={{\n __html: taxon.labelHtml,\n }}\n /></div>\n </Col>\n <Col span={1}>\n <a href=\"\"></a>\n {taxon.provisional && <Tag color=\"red\">Provisional</Tag>}\n </Col>\n {sourceDataset && (\n <Col span={5} style={{ textAlign: \"right\" }}>\n <DatasetlogoWithFallback\n auth={this.props.auth}\n style={{\n maxWidth: \"100%\",\n height: \"auto\",\n marginRight: \"8px\",\n }}\n datasetKey={datasetKey}\n sourceDatasetKey={sourceDataset.key}\n />\n </Col>\n )}\n </Row>\n )}\n {_.get(taxon, \"id\") && (\n <PresentationItem\n md={md}\n label={_.get(this.props, \"identifierLabel\", \"Identifier\")}\n >\n {_.get(taxon, \"id\")}{\" \"}\n <a\n href={`https://www.checklistbank.org/dataset/${datasetKey}/taxon/${_.get(\n taxon,\n \"id\"\n )}`}\n >\n <LinkOutlined />\n </a>\n <Tooltip title={\"Download data for this taxon and descendants\"}\n getPopupContainer={() => document.getElementById(`col-download-${_.get(taxon, \"id\")}`) || document.body}\n >\n <a\n style={{ marginLeft: \"5px\" }}\n id={`col-download-${_.get(taxon, \"id\")}`}\n target=\"_blank\"\n href={`http://checklistbank.org/dataset/${datasetKey}/download?taxonID=${encodeURIComponent(_.get(\n taxon,\n \"id\"\n ))}`}\n >\n <DownloadOutlined />\n </a>\n </Tooltip>\n </PresentationItem>\n )}\n {_.get(taxon, \"labelHtml\") && (\n <PresentationItem md={md} label=\"Name\">\n <span\n dangerouslySetInnerHTML={{\n __html: taxon.labelHtml,\n }}\n />\n </PresentationItem>\n )}\n {_.get(taxon, \"name.publishedIn.citation\") && (\n <PresentationItem md={md} label=\"Published in\">\n {_.get(info, \"source.secondarySources['published in']\") && \n <MergedDataBadge \n sourceDatasetKey={_.get(info, \"source.secondarySources['published in'].datasetKey\")} \n sourceId={_.get(info, \"source.secondarySources['published in'].id\")} />} \n {_.get(taxon, \"name.publishedIn.citation\")}\n </PresentationItem>\n )}\n {_.get(taxon, \"status\") && (\n <PresentationItem md={md} label=\"Checklist status\">\n {`${_.get(taxon, \"status\")} ${_.get(taxon, \"name.rank\")}`}\n {info?.decisions?.[taxon?.id] && (\n <>\n &nbsp;with{\" \"}\n {info?.decisions?.[taxon?.id]?.mode}{\" \"}\n decision\n <DecisionBadge\n style={{ marginLeft: \"10px\" }}\n decision={\n info?.decisions?.[taxon?.id]\n }\n />\n </>\n )}\n </PresentationItem>\n )}\n\n {_.get(taxon, \"name.nomStatus\") && nomStatus && (\n <PresentationItem md={md} label=\"Nomenclatural Status\">\n {\n nomStatus[_.get(taxon, \"name.nomStatus\")][\n (_.get(taxon, \"name.code\"), \"zoological\")\n ]\n }\n </PresentationItem>\n )}\n {/* <PresentationItem md={md} label=\"Extinct\">\n <BooleanValue value={_.get(taxon, \"extinct\")} />\n </PresentationItem> */}\n {/* \n <PresentationItem md={md} label=\"Fossil\">\n <BooleanValue value={_.get(taxon, \"fossil\")} />\n </PresentationItem>\n <PresentationItem md={md} label=\"Recent\">\n <BooleanValue value={_.get(taxon, \"recent\")} />\n </PresentationItem> */}\n\n {/* {_.get(taxon, \"name.relations\") && taxon.name.relations.length > 0 && \n <NameRelations\n md={md}\n style={{ marginTop: \"-3px\" }}\n data={taxon.name.relations}\n />} */}\n {infoError && (\n <Alert message={<ErrorMsg error={infoError} />} type=\"error\" />\n )}\n {_.get(info, \"synonyms\") && (\n <PresentationItem md={md} label=\"Synonyms and combinations\">\n <Synonyms\n primarySource={sourceDataset}\n data={_.get(info, \"synonyms\")}\n decisions={_.get(info, \"decisions\")}\n references={_.get(info, \"references\")}\n typeMaterial={_.get(info, \"typeMaterial\")}\n referenceIndexMap={referenceIndexMap}\n style={{ marginTop: \"-3px\" }}\n /* datasetKey={datasetKey}\n */ datasetKey={datasetKey}\n />\n </PresentationItem>\n )}\n {_.get(info, \"typeMaterial\") &&\n info.typeMaterial[info?.usage?.name?.id] && (\n <PresentationItem md={md} label=\"Type material\">\n <TypeMaterial\n data={_.get(info, \"typeMaterial\")}\n nameID={_.get(taxon, \"name.id\")}\n />\n </PresentationItem>\n )}\n {_.get(info, \"nameRelations\") &&\n info.nameRelations.filter((rel) => rel?.usageId === taxon?.id)\n .length > 0 && (\n <NameRelations\n md={md}\n style={{ marginTop: \"-3px\" }}\n data={info.nameRelations.filter(\n (rel) => rel?.usageId === taxon?.id\n )}\n />\n )}\n {_.get(info, \"nameRelations\") &&\n info.nameRelations.filter((rel) => rel?.usageId !== taxon?.id)\n .length > 0 && (\n <NameRelations\n md={md}\n reverse={true}\n style={{ marginTop: \"-3px\" }}\n data={info.nameRelations.filter(\n (rel) => rel?.usageId !== taxon?.id\n )}\n />\n )}\n\n {/* {synonyms && synonyms.length > 0 && (\n <PresentationItem md={md} label=\"Synonyms and Combinations\">\n <SynonymTable\n data={synonyms}\n nomStatus={nomStatus}\n references={_.get(info, \"references\")}\n referenceIndexMap={referenceIndexMap}\n style={{ marginTop: \"-3px\" }}\n datasetKey={datasetKey}\n />\n </PresentationItem>\n )}\n\n {misapplied && misapplied.length > 0 && (\n <PresentationItem md={md} label=\"Misapplied names\">\n <SynonymTable\n data={misapplied}\n references={_.get(info, \"references\")}\n referenceIndexMap={referenceIndexMap}\n style={{ marginBottom: 16, marginTop: \"-3px\" }}\n datasetKey={datasetKey}\n primarySource={sourceDataset}\n />\n </PresentationItem>\n )} */}\n {synonymsError && (\n <Alert message={<ErrorMsg error={synonymsError} />} type=\"error\" />\n )}\n {classificationError && (\n <Alert\n message={<ErrorMsg error={classificationError} />}\n type=\"error\"\n />\n )}\n {classification && (\n <PresentationItem md={md} label=\"Classification\">\n <Classification\n style={{ marginTop: \"-3px\", marginLeft: \"-3px\" }}\n data={classification}\n taxon={taxon}\n datasetKey={datasetKey}\n />\n </PresentationItem>\n )}\n {((taxon &&\n rank.indexOf(_.get(taxon, \"name.rank\")) < genusRankIndex &&\n rank.indexOf(_.get(taxon, \"name.rank\")) > -1) ||\n (_.get(taxon, \"name.rank\") === \"unranked\" &&\n _.get(taxon, \"name.scientificName\") === \"Biota\")) && (\n <PresentationItem md={md} label=\"Breakdown\">\n <TaxonBreakdown\n taxon={taxon}\n datasetKey={datasetKey}\n rank={rank}\n dataset={catalogue}\n showLevelSwitch\n />\n </PresentationItem>\n )}\n {includes.length > 1 && rank && taxon && (\n <PresentationItem md={md} label=\"Statistics\">\n <IncludesTable\n style={{ marginTop: \"-3px\", marginLeft: \"-3px\" }}\n data={includes}\n rank={rank}\n taxon={taxon}\n />\n </PresentationItem>\n )}\n {_.get(info, \"vernacularNames\") && taxon && (\n <PresentationItem md={md} label=\"Vernacular names\">\n <VernacularNames\n style={{ marginTop: \"-3px\", marginLeft: \"-3px\" }}\n data={info.vernacularNames}\n references={_.get(info, \"references\")}\n datasetKey={taxon.datasetKey}\n />\n </PresentationItem>\n )}\n {(_.get(info, \"distributions\") ||\n (showDistributionMap && gbifChecklistKey && taxon)) && (\n <PresentationItem md={md} label=\"Distributions\">\n <Distributions\n style={{ marginTop: \"-3px\" }}\n data={info?.distributions || []}\n datasetKey={datasetKey}\n showDistributionMap={showDistributionMap}\n focalTaxon={taxon}\n rankOrder={rank}\n gbifChecklistKey={gbifChecklistKey}\n />\n </PresentationItem>\n )}\n {_.get(taxon, \"environments\") && (\n <PresentationItem md={md} label=\"Environment(s)\">\n {_.get(taxon, \"environments\").join(\", \")}\n </PresentationItem>\n )}\n\n {_.get(taxon, \"remarks\") && (\n <PresentationItem md={md} label=\"Additional Data\">\n {taxon.remarks}\n </PresentationItem>\n )}\n\n <Row>\n {_.get(taxon, \"accordingTo\") && (\n <Col span={12}>\n <PresentationItem md={md * 2} label=\"According to\">\n {`${_.get(taxon, \"accordingTo\")}`}\n {_.get(taxon, \"accordingToDate\") &&\n `, ${dayjs(_.get(taxon, \"accordingToDate\")).format(\"LL\")}`}\n </PresentationItem>\n </Col>\n )}\n {/* <Col span={12}>\n {_.get(taxon, \"origin\") && (\n <PresentationItem md={md * 2} label=\"Origin\">\n {_.get(taxon, \"origin\")}\n </PresentationItem>\n )}\n </Col> */}\n </Row>\n {_.get(taxon, \"scrutinizer\") && (\n <Col span={12}>\n <PresentationItem md={md * 2} label=\"Taxonomic scrutiny\">\n {`${_.get(taxon, \"scrutinizer\")}${\n _.get(taxon, \"scrutinizerDate\")\n ? \", \" + _.get(taxon, \"scrutinizerDate\")\n : \"\"\n }`}\n </PresentationItem>\n </Col>\n )}\n {_.get(sourceDataset, \"title\") && (\n <PresentationItem md={md} label=\"Source\">\n <div style={{ display: \"inline-block\" }}>\n {info?.usage?.merged && \n <MergedDataBadge \n createdBy={info?.usage?.createdBy}\n datasetKey={info?.usage?.datasetKey} \n verbatimSourceKey={info?.usage?.verbatimSourceKey} \n sourceDatasetKey={info?.source?.sourceDatasetKey} \n sourceId={info?.source?.sourceId} \n />}{\" \"}\n {info?.source && info?.source?.sourceId && (\n <>\n <a\n href={`https://www.checklistbank.org/dataset/${info?.source?.sourceDatasetKey}/taxon/${info?.source?.sourceId}`}\n >\n {info?.source?.sourceId}\n </a>{\" \"}\n in{\" \"}\n </>\n )}\n <LinkTo to=\"source\" args={_.get(sourceDataset, \"key\")}>\n {`${_.get(sourceDataset, \"alias\")}: ${_.get(\n sourceDataset,\n \"title\"\n )}`}\n </LinkTo>\n <span style={{ marginLeft: \"10px\" }}>\n {_.get(sourceDataset, \"completeness\") &&\n _.get(sourceDataset, \"completeness\") + \"%\"}\n </span>\n {_.get(sourceDataset, \"confidence\") && (\n <Rate\n style={{ marginLeft: \"10px\" }}\n value={_.get(sourceDataset, \"confidence\")}\n disabled\n />\n )}\n </div>\n </PresentationItem>\n )}\n {_.get(taxon, \"link\") && (\n <PresentationItem md={md} label=\"Link to original resource\">\n <a href={_.get(taxon, \"link\")}>{_.get(taxon, \"link\")}</a>\n </PresentationItem>\n )}\n {info?.source?.secondarySources && (\n <PresentationItem md={md} label=\"Secondary Sources\">\n <SecondarySources info={info} datasetKey={datasetKey} />\n </PresentationItem>\n )}\n {/* {this.state?.sourceDatasetKeyMap && (\n <PresentationItem md={md} label=\"Synonym Sources\">\n <SourceDatasets\n datasetKey={this.props.datasetKey}\n primarySourceDatasetKey={info?.source?.sourceDatasetKey}\n sourceDatasetKeyMap={this.state.sourceDatasetKeyMap}\n />\n </PresentationItem>\n )} */}\n {_.get(info, \"references\") && (\n <PresentationItem md={md} label=\"References\">\n <References\n referenceIndexMap={referenceIndexMap}\n primarySourceDatasetKey={info?.source?.sourceDatasetKey}\n data={_.get(info, \"references\")}\n style={{ marginTop: \"-3px\" }}\n />\n </PresentationItem>\n )}\n {window?.location?.hostname?.endsWith(\"catalogueoflife.org\") && <PresentationItem md={md} label=\"\">\n <Feedback taxonKey={this?.state?.taxon?.id} datasetKey={this.props.datasetKey} />\n </PresentationItem>}\n </div>\n </React.Fragment>\n );\n }\n}\n\n// Public wrapper: takes the controlled props + navigation callbacks,\n// builds the RouterContext, hands the rest down to TaxonPage.\nexport default function Taxon({\n taxonKey,\n datasetKey,\n pageTitleTemplate,\n identifierLabel,\n showDistributionMap,\n gbifChecklistKey,\n auth,\n ...routerProps\n}) {\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n <TaxonPage\n taxonKey={taxonKey}\n datasetKey={datasetKey}\n pageTitleTemplate={pageTitleTemplate}\n identifierLabel={identifierLabel}\n showDistributionMap={showDistributionMap}\n gbifChecklistKey={gbifChecklistKey}\n auth={auth}\n />\n </RouterContext.Provider>\n );\n}\n","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 _ from \"lodash\";\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 _ from \"lodash\";\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 axios from 'axios';\nimport config from \"../config\";\nimport { CloseCircleOutlined } from '@ant-design/icons';\nimport { AutoComplete, Input, Button } from 'antd';\nimport _ from 'lodash'\nimport {debounce} from 'lodash';\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 axios(`${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 axios(`${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 axios from \"axios\";\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 _ from \"lodash\";\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 axios(`${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 axios(`${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 axios from \"axios\";\nimport btoa from \"btoa\";\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 if (auth) {\n axios.defaults.headers.common[\"Authorization\"] = `Basic ${btoa(auth)}`;\n }\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 React from \"react\";\nimport { Skeleton } from \"antd\";\nimport PresentationItem from \"../components/PresentationItem\";\nimport _ from \"lodash\";\nimport { LinkTo } from \"../router\";\n\nconst getLivingTaxa = (metrics, rank) =>\n (_.get(metrics, `taxaByRankCount.${rank}`) || 0) -\n (_.get(metrics, `extinctTaxaByRankCount.${rank}`) || 0);\nconst getExtinctTaxa = (metrics, rank) =>\n _.get(metrics, `extinctTaxaByRankCount.${rank}`) || 0;\n\n// Filter object passed to the `search` slot's onNavigate / hrefFor.\n// The URL adapter knows how to turn this into a query string.\nconst baseFilters = (dataset) => {\n const f = dataset.key\n ? { SECTOR_DATASET_KEY: dataset.key }\n : { SECTOR_PUBLISHER_KEY: dataset.id };\n if (_.isArray(dataset.sectorModes)) f.sectorMode = dataset.sectorModes;\n return f;\n};\n\nexport default ({ metrics, rank, style, dataset }) =>\n metrics && rank ? (\n <div style={style}>\n <React.Fragment>\n <PresentationItem label=\"Living species\">\n {dataset ? (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(dataset),\n rank: \"species\",\n extinct: [\"false\", \"_NULL\"],\n }}\n >\n {getLivingTaxa(metrics, \"species\").toLocaleString(\"en-GB\")}\n </LinkTo>\n ) : (\n getLivingTaxa(metrics, \"species\").toLocaleString(\"en-GB\")\n )}\n </PresentationItem>\n <PresentationItem label=\"Extinct species\">\n {dataset ? (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(dataset),\n rank: \"species\",\n extinct: \"true\",\n }}\n >\n {getExtinctTaxa(metrics, \"species\").toLocaleString(\"en-GB\")}\n </LinkTo>\n ) : (\n getExtinctTaxa(metrics, \"species\").toLocaleString(\"en-GB\")\n )}\n </PresentationItem>\n </React.Fragment>\n {metrics.taxaByRankCount &&\n Object.keys(metrics.taxaByRankCount)\n .sort((a, b) => rank.indexOf(b) - rank.indexOf(a))\n .map((k) => (\n <PresentationItem label={`${_.startCase(k)}`} key={k}>\n {dataset ? (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(dataset),\n rank: k,\n status: [\"accepted\", \"provisionally accepted\"],\n }}\n >\n {metrics.taxaByRankCount[k].toLocaleString(\"en-GB\")}\n </LinkTo>\n ) : (\n metrics.taxaByRankCount[k].toLocaleString(\"en-GB\")\n )}\n </PresentationItem>\n ))}\n <PresentationItem label=\"Synonyms\" key=\"Synonyms\">\n {dataset ? (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(dataset),\n status: [\"misapplied\", \"synonym\", \"ambiguous synonym\"],\n }}\n >\n {(metrics.synonymCount || 0).toLocaleString(\"en-GB\")}\n </LinkTo>\n ) : (\n (metrics.synonymCount || 0).toLocaleString(\"en-GB\")\n )}\n </PresentationItem>\n <PresentationItem label=\"Common names\" key=\"vernaculars\">\n {(metrics.vernacularCount || 0).toLocaleString(\"en-GB\")}\n </PresentationItem>\n <PresentationItem label=\"Total number of names\" key=\"names\">\n {dataset ? (\n <LinkTo to=\"search\" args={baseFilters(dataset)}>\n {(metrics.nameCount || 0).toLocaleString(\"en-GB\")}\n </LinkTo>\n ) : (\n (metrics.nameCount || 0).toLocaleString(\"en-GB\")\n )}\n </PresentationItem>\n </div>\n ) : (\n <PresentationItem label=\"\">\n <Skeleton active paragraph={{ rows: 4 }} />\n </PresentationItem>\n );\n","import React from \"react\";\nimport config from \"../config\";\nimport axios from \"axios\";\nimport MetricsPresentation from \"./MetricsPresentation\"\nimport _ from \"lodash\";\n\n\nclass Metrics extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n metrics: null,\n rank: null,\n loading: true,\n };\n }\n\n componentDidMount() {\n this.getData();\n this.getRank();\n }\n\n getData = () => {\n const { dataset, datasetKey } = this.props;\n axios(\n `${config.dataApi}dataset/${datasetKey}/source/${dataset.key}/metrics`\n ).then((res) => {\n this.setState({ metrics: res.data });\n });\n };\n\n getRank = () => {\n axios(`${config.dataApi}vocab/rank`).then((res) =>\n this.setState({ rank: res.data.map((r) => r.name) })\n );\n };\n render = () => <MetricsPresentation {...this.state} dataset={this.props.dataset} />\n}\n\nexport default Metrics;\n","import React from \"react\";\nimport config from \"../config\";\nimport axios from \"axios\";\nimport {Skeleton} from \"antd\";\nimport _ from \"lodash\";\nimport { LinkTo } from \"../router\";\n\nclass TaxonomicCoverage extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: true,\n taxonMap: null\n };\n }\n\n componentDidMount() {\n this.getData();\n }\n\n getData = () => {\n const { dataset, datasetKey } = this.props;\n const taxonMap = {};\n axios(\n `${config.dataApi}dataset/${datasetKey}/sector?limit=1000&subjectDatasetKey=${dataset.key}`\n ).then((res) => {\n return Promise.allSettled(\n res.data.result.filter(t => !!t?.target).map((t) =>\n axios(\n `${config.dataApi}dataset/${datasetKey}/nameusage/search?TAXON_ID=${t?.target?.id}${t?.subject?.rank ? \"&rank=\"+t?.subject?.rank : \"\"}&q=${t?.subject?.name}`\n ).then((usages) => {\n const taxon = _.get(usages, \"data.result[0]\");\n if (taxon) {\n const path = taxon.classification\n .slice(1, taxon.classification.length - 1)\n .map((t) => t.name)\n .join(\" > \");\n if (taxonMap[path]) {\n taxonMap[path].push(\n taxon.classification[taxon.classification.length - 1]\n );\n } else {\n taxonMap[path] = [\n taxon.classification[taxon.classification.length - 1],\n ];\n }\n }\n })\n .catch(err => {\n console.log(t)\n console.log(err)})\n )\n ).then(() => this.setState({ taxonMap, loading: false }));\n });\n };\n\n render = () => {\n const { taxonMap } = this.state;\n const { style } = this.props;\n return taxonMap\n ? (Object.keys(taxonMap).length > 0 ? Object.keys(taxonMap).sort((a,b) => a.length - b.length).map((k) => (\n <div style={style} key={k}>\n <span>{k}{k !== \"\" ? \":\" : \"\"}</span>{\" \"}\n {taxonMap[k].map((tx, idx) => (\n <React.Fragment key={idx}>\n <LinkTo to=\"tree\" args={{ taxonKey: tx.id }}>{tx.name}</LinkTo>\n {idx !== taxonMap[k].length - 1 ? \", \" : \"\"}\n </React.Fragment>\n ))}\n </div>\n )) : \"N/A\")\n :\n <Skeleton active paragraph={{ rows: 4 }} />\n ;\n };\n}\n\nexport default TaxonomicCoverage;\n","import React from \"react\";\nimport _ from \"lodash\";\n\nconst AgentPresentation = ({ agent, countryAlpha2, style, noLinks }) => {\n const country = _.get(agent, \"country\")\n ? _.get(\n countryAlpha2,\n `[${_.get(agent, \"country\")}].title`,\n _.get(agent, \"country\")\n )\n : null;\n return agent ? (\n <span style={style}>\n {(agent.given || agent.family) && (\n <span style={{ display: \"block\" }}>\n {[agent.family, agent.given].filter((a) => !!a).join(\", \")}\n </span>\n )}\n {agent.orcid &&\n (noLinks ? (\n <div>\n <img\n src=\"https://www.checklistbank.org/images/orcid_16x16.png\"\n style={{ flex: \"0 0 auto\" }}\n alt=\"\"\n ></img>{\" \"}\n {agent.orcid}\n </div>\n ) : (\n <a\n style={{ display: \"block\" }}\n href={`https://orcid.org/${agent.orcid}`}\n >\n <img\n src=\"https://www.checklistbank.org/images/orcid_16x16.png\"\n style={{ flex: \"0 0 auto\" }}\n alt=\"\"\n ></img>{\" \"}\n {agent.orcid}\n </a>\n ))}\n {agent.organisation && (\n <span style={{ display: \"block\" }}>{agent.organisation}</span>\n )}\n {agent.rorid &&\n (noLinks ? (\n <div>\n <img\n src=\"https://www.checklistbank.org/images/ror-logo-small.png\"\n style={{ flex: \"0 0 auto\", height: \"20px\" }}\n alt=\"\"\n ></img>{\" \"}\n {agent.rorid}\n </div>\n ) : (\n <a\n style={{ display: \"block\" }}\n href={`https://ror.org/${agent.rorid}`}\n >\n <img\n src=\"https://www.checklistbank.org/images/ror-logo-small.png\"\n style={{ flex: \"0 0 auto\", height: \"20px\" }}\n alt=\"\"\n ></img>{\" \"}\n {agent.rorid}\n </a>\n ))}\n\n {agent.department && (\n <span style={{ display: \"block\" }}>{agent.department}</span>\n )}\n {(agent.city || agent.state || country) && (\n <span style={{ display: \"block\" }}>\n {[agent.city, agent.state, country].filter((a) => !!a).join(\", \")}\n </span>\n )}\n \n </span>\n ) : null;\n};\n\n\n\nexport default AgentPresentation;\n","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","import React from \"react\";\nimport config from \"../config\";\nimport btoa from \"btoa\";\nimport axios from \"axios\";\nimport { Alert, Rate, Row, Col, Button, Tooltip } from \"antd\";\nimport ErrorMsg from \"../components/ErrorMsg\";\nimport DatasetlogoWithFallback from \"../components/DatasetlogoWithFallback\";\nimport Metrics from \"./Metrics\";\nimport _ from \"lodash\";\nimport PresentationItem from \"../components/PresentationItem\";\nimport TaxonomicCoverage from \"./TaxonomicCoverage\";\nimport { RouterContext, buildRouter } from \"../router\";\nimport AgentPresentation from \"./AgentPresentation\";\nimport { getCountries } from \"../api/enumeration\";\nimport BibTex from \"../components/BibTex\";\nimport { LinkOutlined } from \"@ant-design/icons\";\nimport { marked } from \"marked\";\nimport DOMPurify from \"dompurify\";\n// import ReferencePopover from \"./ReferencePopover\"\nconst IDENTIFIER_TYPES = {\n col: \"https://www.checklistbank.org/dataset/\",\n gbif: \"https://www.gbif.org/dataset/\",\n plazi: \"http://publication.plazi.org/id/\",\n doi: \"https://doi.org/\",\n};\nclass SourceDatasetPage extends React.Component {\n constructor(props) {\n super(props);\n if (this.props.auth) {\n axios.defaults.headers.common[\"Authorization\"] = `Basic ${btoa(\n this.props.auth\n )}`;\n }\n this.state = {\n datasetLoading: true,\n data: null,\n rank: null,\n countryAlpha2: {},\n };\n }\n\n componentDidMount = () => {\n this.getData();\n getCountries().then((res) => {\n const countryAlpha2 = {};\n res.forEach((c) => {\n countryAlpha2[c.alpha2] = c;\n });\n this.setState({ countryAlpha2 });\n });\n };\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.sourceDatasetKey !== this.props.sourceDatasetKey ||\n prevProps.datasetKey !== this.props.datasetKey\n ) {\n this.getData();\n }\n }\n\n getData = () => {\n const { datasetKey, sourceDatasetKey, pageTitleTemplate } = this.props;\n if (!sourceDatasetKey) return;\n\n axios(`${config.dataApi}dataset/${datasetKey}/source/${sourceDatasetKey}`)\n .then((dataset) => {\n if (pageTitleTemplate && _.get(dataset, \"data.title\")) {\n document.title = pageTitleTemplate.replace(\n \"__dataset__\",\n dataset.data.title\n );\n }\n this.setState({ data: dataset.data, datasetError: null });\n })\n .catch((err) => this.setState({ datasetError: err, data: null }));\n };\n\n getRank = () => {\n axios(`${config.dataApi}vocab/rank`).then((res) =>\n this.setState({ rank: res.data.map((r) => r.name) })\n );\n };\n\n render() {\n const { datasetKey } = this.props;\n const { data, countryAlpha2, datasetError } = this.state;\n\n return (\n <React.Fragment>\n <div\n className=\"catalogue-of-life\"\n style={{\n background: \"#fff\",\n padding: 24,\n minHeight: 280,\n margin: \"16px 0\",\n fontSize: \"12px\",\n }}\n >\n {datasetError && (\n <Alert message={<ErrorMsg error={datasetError} />} type=\"error\" />\n )}\n {data && (\n <Row>\n <Col flex=\"auto\">\n {/* <h1\n style={{ fontSize: \"30px\", fontWeight: '400', paddingLeft: \"10px\" , display: 'inline-block', textTransform: 'none'}}\n \n >Database details</h1> */}\n <h1\n style={{\n fontSize: \"30px\",\n fontWeight: \"400\",\n paddingLeft: \"10px\",\n display: \"inline-block\",\n textTransform: \"none\",\n }}\n >\n {data.title}\n </h1>\n {data && (\n <React.Fragment>\n <br />\n <BibTex\n style={{ marginLeft: \"8px\", height: \"32px\" }}\n datasetKey={datasetKey}\n sourceDatasetKey={\n datasetKey !== data.key ? data.key : undefined\n }\n />\n </React.Fragment>\n )}\n </Col>\n\n <Col style={{ textAlign: \"right\" }}>\n <DatasetlogoWithFallback\n auth={this.props.auth}\n style={{\n maxWidth: \"100%\",\n height: \"auto\",\n marginRight: \"8px\",\n }}\n datasetKey={datasetKey}\n sourceDatasetKey={data.key}\n />\n </Col>\n </Row>\n )}\n\n {data && (\n <React.Fragment>\n <PresentationItem label=\"Short name\">\n {data.alias}\n <Tooltip\n title=\"Visit in COL Checklistbank\"\n getPopupContainer={() =>\n document.getElementsByClassName(`catalogue-of-life`)[0]\n }\n >\n <Button\n type=\"link\"\n href={`https://www.checklistbank.org/dataset/${data.key}`}\n >\n <LinkOutlined />{\" \"}\n </Button>\n </Tooltip>\n </PresentationItem>\n <PresentationItem label=\"Full name\">\n {data.title}\n </PresentationItem>\n {(data.version || data.issued) && (\n <PresentationItem\n label={`${data.version ? \"Version\" : \"\"}${\n data.version && data.issued ? \" / \" : \"\"\n }${data.issued ? \"Issued\" : \"\"}`}\n >\n {(data.version || data.issued) &&\n `${data.version ? data.version : \"\"}${\n data.issued ? \" / \" + data.issued : \"\"\n }`}\n </PresentationItem>\n )}\n <PresentationItem label=\"DOI\">\n {data.doi ? (\n <a href={`https://doi.org/${data.doi}`}>\n <img\n src=\"https://www.checklistbank.org/images/DOI_logo.png\"\n style={{ flex: \"0 0 auto\", height: \"16px\" }}\n alt=\"\"\n ></img>\n {data.doi}\n </a>\n ) : (\n \"-\"\n )}\n </PresentationItem>\n {data.contact && !_.isEmpty(data.contact) && (\n <PresentationItem label=\"Contact\">\n <AgentPresentation\n countryAlpha2={countryAlpha2}\n agent={data.contact}\n />\n </PresentationItem>\n )}\n {data.publisher && !_.isEmpty(data.publisher) && (\n <PresentationItem label=\"Publisher\">\n <AgentPresentation\n countryAlpha2={countryAlpha2}\n agent={data.publisher}\n />\n </PresentationItem>\n )}\n {data.creator && (\n <PresentationItem label=\"Creator\">\n <Row gutter={[8, 8]}>\n {data.creator.map((a) => (\n <Col span={8}>\n <AgentPresentation\n countryAlpha2={countryAlpha2}\n agent={a}\n />\n </Col>\n ))}\n </Row>\n </PresentationItem>\n )}\n {data.editor && (\n <PresentationItem label=\"Editor\">\n <Row gutter={[8, 8]}>\n {data.editor.map((a) => (\n <Col span={8}>\n <AgentPresentation\n countryAlpha2={countryAlpha2}\n agent={a}\n />\n </Col>\n ))}\n </Row>\n </PresentationItem>\n )}\n {data.contributor && (\n <PresentationItem label=\"Contributor\">\n <Row gutter={[8, 8]}>\n {data.contributor.map((a) => (\n <Col span={8}>\n <AgentPresentation\n countryAlpha2={countryAlpha2}\n agent={a}\n />\n </Col>\n ))}\n </Row>\n </PresentationItem>\n )}\n <PresentationItem label=\"Taxonomic coverage\">\n <TaxonomicCoverage\n dataset={data}\n datasetKey={datasetKey}\n />\n </PresentationItem>\n <Metrics\n datasetKey={datasetKey}\n dataset={data}\n />\n <PresentationItem label=\"Abstract\">\n \n {data.description ? (\n <span\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(marked.parse(data.description)),\n }}\n ></span>\n ) : \"\"}\n </PresentationItem>\n <PresentationItem label=\"Taxonomic scope\">\n {data.taxonomicScope || \"-\"}\n </PresentationItem>\n <PresentationItem label=\"Geographic scope\">\n {data.geographicScope || \"-\"}\n </PresentationItem>\n <PresentationItem label=\"Temporal scope\">\n {data.temporalScope || \"-\"}\n </PresentationItem>\n {/* <PresentationItem label=\"Origin\">\n {data.origin}\n </PresentationItem> */}\n {/* <PresentationItem label=\"Type\">{data.type}</PresentationItem>\n */}{\" \"}\n <PresentationItem label=\"License\">\n {data.license || \"-\"}\n </PresentationItem>\n <PresentationItem label=\"Checklist Confidence\">\n {<Rate value={data.confidence} disabled></Rate>}\n </PresentationItem>\n <PresentationItem label=\"Completeness\">\n {data.completeness}\n </PresentationItem>\n <PresentationItem label=\"Url (website)\">\n {data.url ? (\n <a href={data.url} target=\"_blank\">\n {data.url}\n </a>\n ) : (\n \"-\"\n )}\n </PresentationItem>\n {/* <PresentationItem label=\"Logo Url\">\n {data.url && (\n <a href={data.logoUrl} target=\"_blank\">\n {data.logoUrl}\n </a>\n )}\n </PresentationItem> */}\n <PresentationItem label=\"ISSN\">\n {data.issn ? (\n <a\n href={`https://portal.issn.org/resource/ISSN/${data.issn}`}\n >\n {data.issn}\n </a>\n ) : (\n \"-\"\n )}\n </PresentationItem>\n <PresentationItem label=\"GBIF key\">\n {data.gbifKey ? (\n <a href={`https://www.gbif.org/dataset/${data.gbifKey}`}>\n {data.gbifKey}\n </a>\n ) : (\n \"-\"\n )}\n </PresentationItem>\n {/* <PresentationItem label=\"GBIF publisher key\">\n {data.gbifPublisherKey && (\n <a\n href={`https://www.gbif.org/publisher/${data.gbifPublisherKey}`}\n >\n {data.gbifPublisherKey}\n </a>\n )}\n </PresentationItem> */}\n <PresentationItem label=\"Identifiers\">\n {data.identifier ? (\n <ol\n style={{\n listStyle: \"none\",\n paddingInlineStart: \"0px\",\n }}\n >\n {Object.keys(data.identifier).map((i) => (\n <li\n style={{\n float: \"left\",\n marginRight: \"8px\",\n }}\n >\n {`${i.toUpperCase()}: `}\n {IDENTIFIER_TYPES[i] ? (\n <a\n href={`${IDENTIFIER_TYPES[i]}${data.identifier[i]}`}\n target=\"_blank\"\n >\n {data.identifier[i]}\n </a>\n ) : (\n data.identifier[i]\n )}\n </li>\n ))}\n </ol>\n ) : (\n \"-\"\n )}\n </PresentationItem>\n <PresentationItem label=\"Citation\">\n {data.citation && (\n <span\n dangerouslySetInnerHTML={{ __html: data.citation }}\n ></span>\n )}\n </PresentationItem>\n {/* <PresentationItem label=\"Derived from (sourceKey)\">\n {data.sourceKey}\n </PresentationItem> */}\n <PresentationItem label=\"Source\">\n {data.source && _.isArray(data.source)\n ? data.source.map(\n (s) =>\n !!s &&\n (s.citation ? (\n <div\n style={{ display: \"inline-block\" }}\n dangerouslySetInnerHTML={{ __html: s.citation }}\n ></div>\n ) : (\n s.title\n ))\n )\n : \"-\"}\n </PresentationItem>\n {/* <PresentationItem label=\"Created\">\n {`${data.created} by ${data.createdByUser}`}\n </PresentationItem>\n <PresentationItem label=\"Modified\">\n {`${data.modified} by ${data.modifiedByUser}`}\n </PresentationItem> */}\n {/* <section className=\"code-box\" style={{marginTop: '32px'}}>\n <div className=\"code-box-title\">Settings</div>\n </section> */}\n </React.Fragment>\n )}\n </div>\n </React.Fragment>\n );\n }\n}\n\nexport default function SourceDataset({\n sourceDatasetKey,\n datasetKey,\n pageTitleTemplate,\n auth,\n ...routerProps\n}) {\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n <SourceDatasetPage\n sourceDatasetKey={sourceDatasetKey}\n datasetKey={datasetKey}\n pageTitleTemplate={pageTitleTemplate}\n auth={auth}\n />\n </RouterContext.Provider>\n );\n}\n","import React from \"react\";\nimport axios from \"axios\";\nimport { Table, Alert, Row, Col, Tooltip, Checkbox } from \"antd\";\nimport config from \"../config\";\nimport btoa from \"btoa\";\nimport _ from \"lodash\";\nimport ErrorMsg from \"../components/ErrorMsg\";\nimport DatasetlogoWithFallback from \"../components/DatasetlogoWithFallback\";\nimport MetricsPresentation from \"../SourceDataset/MetricsPresentation\";\nimport PresentationItem from \"../components/PresentationItem\";\nimport MergedDataBadge from \"../components/MergedDataBadge\";\nimport { RouterContext, buildRouter, LinkTo } from \"../router\";\nconst baseFilters = (record) => {\n const f = record.key\n ? { SECTOR_DATASET_KEY: record.key }\n : { SECTOR_PUBLISHER_KEY: record.id };\n if (_.isArray(record.sectorModes)) f.sectorMode = record.sectorModes;\n return f;\n};\nconst getLivingSpecies = (record, rank) =>\n _.get(record, `metrics.taxaByRankCount.${rank || \"species\"}`) || 0;\nconst getExtinctSpecies = (record) =>\n _.get(record, \"metrics.extinctTaxaByRankCount.species\") || 0;\nconst getSearchParam = (dataset) =>\n dataset.key\n ? `SECTOR_DATASET_KEY=${dataset.key}`\n : `SECTOR_PUBLISHER_KEY=${dataset.id}`;\n\nconst getColumns = (\n datasetKey,\n auth,\n hasPublishers\n) =>\n [\n {\n title: \"Title\",\n\n dataIndex: [\"alias\"],\n key: \"title\",\n ellipsis: true,\n render: (text, record) => {\n return (\n <>\n {record.id ? (\n <span>\n <MergedDataBadge style={{marginLeft: \"0px\"}} /> {\"Publisher: \"}{\" \"}\n <a\n href={`https://www.checklistbank.org/dataset/${datasetKey}/publisher/${record.id}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n /* onClick={() => {\n window.location.href = `https://www.checklistbank.org/dataset/${datasetKey}/publisher/${record.id}`;\n }} */\n dangerouslySetInnerHTML={{ __html: text }}\n />{\" \"}\n </span>\n ) : (\n <>\n {\" \"}\n {!!record?.merged && <MergedDataBadge style={{marginLeft: \"0px\"}} />}{\" \"}\n <LinkTo to=\"source\" args={record.key}>\n {record.alias || record.title}\n </LinkTo>\n {!!record?.taxonomicScope && <br/>}\n </>\n )}\n {!!record?.taxonomicScope && record?.taxonomicScope/* (\n <div style={{ width: \"90%\", wordBreak: \"break-all\" }}>\n {record.taxonomicScope.length > 200\n ? record.taxonomicScope.substring(0, 200) + \"...\"\n : record.taxonomicScope}\n </div>\n ) */}\n </>\n );\n },\n width: \"30%\",\n sorter: (a, b) =>\n a.alias && b.alias ? a.alias.localeCompare(b.alias) : 0,\n // defaultSortOrder: 'ascend'\n },\n {\n title: \"Datasets\",\n dataIndex: [\"metrics\", \"datasetCount\"],\n key: \"datasets\",\n render: (text, record) =>\n _.get(record, \"metrics.datasetCount\", 1).toLocaleString(\"en-GB\"),\n },\n /* {\n title: \"Version\",\n dataIndex: [\"version\"],\n key: \"version\"\n }, */\n/* {\n title: \"\",\n dataIndex: [\"logo\"],\n key: \"logo\",\n render: (text, record) => (\n <DatasetlogoWithFallback\n auth={auth}\n datasetKey={datasetKey}\n datasetKey={record.key}\n style={{ maxHeight: \"32px\" }}\n size=\"SMALL\"\n />\n ),\n }, */\n /* {\n title: \"Taxonomic scope\",\n dataIndex: [\"taxonomicScope\"],\n key: \"taxonomicScope\",\n ellipsis: true,\n\n }, */\n {\n title: (\n <Tooltip\n placement=\"topLeft\"\n title={\"Count of all accepted families including extinct species\"}\n getPopupContainer={() => document.getElementById(\"familyCount\")}\n >\n <span id=\"familyCount\">Families</span>\n </Tooltip>\n ),\n dataIndex: [\"metrics\", \"taxaByRankCount\", \"family\"],\n key: \"species\",\n render: (text, record) => (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(record),\n rank: \"family\",\n status: [\"accepted\", \"provisionally accepted\"],\n }}\n >\n {getLivingSpecies(record, \"family\").toLocaleString(\"en-GB\")}\n </LinkTo>\n ),\n sorter: (a, b) => getLivingSpecies(a,\"family\") - getLivingSpecies(b,\"family\"),\n },\n {\n title: (\n <Tooltip\n placement=\"topLeft\"\n title={\"Count of all accepted genera including extinct species\"}\n getPopupContainer={() => document.getElementById(\"genusCount\")}\n >\n <span id=\"genusCount\">Genera</span>\n </Tooltip>\n ),\n dataIndex: [\"metrics\", \"taxaByRankCount\", \"genus\"],\n key: \"species\",\n render: (text, record) => (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(record),\n rank: \"genus\",\n status: [\"accepted\", \"provisionally accepted\"],\n }}\n >\n {getLivingSpecies(record, \"genus\").toLocaleString(\"en-GB\")}\n </LinkTo>\n ),\n sorter: (a, b) => getLivingSpecies(a,\"genus\") - getLivingSpecies(b,\"genus\"),\n },\n {\n title: (\n <Tooltip\n placement=\"topLeft\"\n title={\"Count of all accepted species including extinct species\"}\n getPopupContainer={() => document.getElementById(\"speciesCount\")}\n >\n <span id=\"speciesCount\">Species</span>\n </Tooltip>\n ),\n dataIndex: [\"metrics\", \"taxaByRankCount\", \"species\"],\n key: \"species\",\n render: (text, record) => (\n <LinkTo\n to=\"search\"\n args={{\n ...baseFilters(record),\n rank: \"species\",\n status: [\"accepted\", \"provisionally accepted\"],\n }}\n >\n {getLivingSpecies(record).toLocaleString(\"en-GB\")}\n </LinkTo>\n ),\n sorter: (a, b) => getLivingSpecies(a) - getLivingSpecies(b),\n },\n\n ].filter((clm) => (!hasPublishers ? clm.key !== \"datasets\" : true));\n\nclass SourceDatasetListPage extends React.Component {\n constructor(props) {\n super(props);\n if (this.props.auth) {\n axios.defaults.headers.common[\"Authorization\"] = `Basic ${btoa(\n this.props.auth\n )}`;\n }\n this.state = {\n data: [],\n rank: null,\n hasPublishers: false,\n loading: false,\n showMerged: true,\n };\n }\n\n componentDidMount = () => {\n this.getData();\n this.getRank();\n };\n\n /* \n getDataOLD = () => {\n this.setState({ loading: true });\n const { datasetKey } = this.props;\n \n axios(`${config.dataApi}dataset/${datasetKey}/source`)\n .then((res) => {\n return Promise.all(\n res.data.map((r) => \n axios(\n `${config.dataApi}dataset/${datasetKey}/source/${r.key}/metrics`\n ).then((res) => ({...r, metrics: res.data}))\n \n )\n );\n \n })\n .then(data => {\n\n this.setState({\n loading: false,\n data: data,\n err: null\n });\n })\n .catch(err => {\n this.setState({ loading: false, error: err, data: [] });\n });\n }; */\n\n getData = () => {\n this.setState({ loading: true });\n const { datasetKey } = this.props;\n Promise.all([\n axios(\n /* `${config.dataApi}dataset?limit=1000&contributesTo=${datasetKey}&sortBy=alias` */\n // `${config.dataApi}dataset/${datasetKey}/source?inclPublisherSources=false`\n `${config.dataApi}dataset/${datasetKey}/source?splitMerge=true`\n ),\n axios(`${config.dataApi}dataset/${datasetKey}/sector/publisher?limit=1000`),\n ])\n .then(([res, publisherRes]) => {\n let columns = {};\n const datasetData = res.data || [];\n const publisherData = _.get(publisherRes, \"data.result\", []);\n if (publisherData.length > 0) {\n this.setState({ hasPublishers: true });\n }\n return Promise.all([\n ...publisherData.map((r) => {\n return this.getPublisherMetrics(datasetKey, r.id).then(\n (metrics) => {\n // columns = _.merge(columns, metrics);\n return {\n ...r,\n metrics: metrics,\n };\n }\n );\n }),\n ...datasetData.map((r) => {\n return this.getMetrics(datasetKey, r).then((metrics) => {\n columns = _.merge(columns, metrics);\n return {\n ...r,\n metrics: metrics,\n };\n });\n }),\n ]);\n })\n .then((data) => {\n this.setState({\n loading: false,\n data: data\n .filter((p) => !p?.id || (!!p?.id && p?.metrics?.sectorCount > 0))\n .sort((a, b) => {\n if (!!a.id && !b.id) {\n return a;\n } else if (!!b.id && !a.id) {\n return b;\n } else if (a.alias && b.alias) {\n return a.alias.localeCompare(b.alias) === 0\n ? a.merged === true\n ? 1\n : -1\n : a.alias.localeCompare(b.alias);\n } else {\n return 0;\n }\n }),\n err: null,\n });\n })\n .catch((err) => {\n this.setState({ loading: false, error: err, data: [] });\n });\n };\n\n getMetrics = (datasetKey, source) => {\n return axios(\n `${config.dataApi}dataset/${datasetKey}/source/${source?.key}/metrics?merged=${source?.merged}`\n ).then((res) => res.data);\n };\n getPublisherMetrics = (datasetKey, publisherId) => {\n return axios(\n `${config.dataApi}dataset/${datasetKey}/sector/publisher/${publisherId}/metrics`\n ).then((res) => res.data);\n };\n\n getRank = () => {\n axios(`${config.dataApi}vocab/rank`).then((res) =>\n this.setState({ rank: res.data.map((r) => r.name) })\n );\n };\n\n render() {\n const { data, loading, rank, hasPublishers, error } = this.state;\n const { datasetKey } = this.props;\n\n return (\n <div\n className=\"catalogue-of-life\"\n style={{\n background: \"#fff\",\n padding: 24,\n minHeight: 280,\n margin: \"16px 0\",\n }}\n >\n <Row>\n {error && (\n <Alert\n style={{ marginBottom: \"10px\" }}\n message={<ErrorMsg error={error} />}\n type=\"error\"\n />\n )}\n </Row>\n\n <Row>\n <Col span={12} style={{ marginBottom: \"8px\" }}>\n Include <MergedDataBadge />{\" \"}\n <Checkbox\n checked={this.state.showMerged}\n onChange={({ target: { checked } }) =>\n this.setState({\n showMerged: checked,\n })\n }\n />\n </Col>\n <Col span={12} style={{ textAlign: \"right\", marginBottom: \"8px\" }}>\n {/* {`Source datasets: ${data\n .filter((d) => {\n if (!this.state.showMerged && d?.merged) {\n return false;\n }\n if (!d?.metrics?.publisherKey) {\n return true;\n } else {\n return !(\n d?.metrics?.datasetCount === 0 ||\n d?.metrics?.usagesCount === 0\n );\n }\n })\n .length.toLocaleString(\"en-GB\")}`} */}\n {`Source datasets: ${data.reduce((acc, d) => {\n if (!this.state.showMerged && (d?.merged || !!d?.id)) {\n return acc;\n }\n if (!d?.metrics?.publisherKey) {\n return acc + 1;\n }\n if (d?.metrics?.publisherKey) {\n return acc + d?.metrics?.datasetCount;\n }\n },0).toLocaleString(\"en-GB\")}`}\n </Col>\n </Row>\n {!error && (\n <Table\n size=\"small\"\n columns={getColumns(datasetKey, this.props.auth, hasPublishers)}\n dataSource={data.filter((d) => {\n if (!this.state.showMerged && (d?.merged || !!d?.id)) {\n return false;\n }\n \n if (!d?.metrics?.publisherKey) {\n return true;\n } else {\n return !(\n d?.metrics?.datasetCount === 0 ||\n d?.metrics?.usagesCount === 0\n );\n }\n })}\n loading={loading}\n rowKey={(record) => `${record.key || record.id}-${record.merged}`}\n showSorterTooltip={false}\n pagination={false}\n expandedRowRender={(dataset) => (\n <div style={{ marginLeft: \"40px\" }}>\n \n <Row>\n <Col flex=\"auto\" style={{paddingLeft: \"8px\"}}><h3>{dataset?.title}</h3></Col>\n <Col>\n <DatasetlogoWithFallback\n auth={this.props.auth}\n datasetKey={datasetKey}\n sourceDatasetKey={dataset.key}\n style={{ maxHeight: \"64px\" }}\n size=\"MEDIUM\"\n />\n </Col>\n </Row>\n <MetricsPresentation\n metrics={dataset.metrics}\n dataset={dataset}\n rank={rank}\n />\n <div style={{ marginTop: \"12px\" }}>\n {dataset?.version && (\n <PresentationItem md={8} label={`Dataset version`}>\n {dataset.version}\n </PresentationItem>\n )}\n\n {dataset?.taxonomicScope && (\n <PresentationItem md={8} label={`Taxonomic scope`}>\n {dataset.taxonomicScope}\n </PresentationItem>\n )}\n </div>\n\n {dataset.citation && (\n <div style={{ marginTop: \"12px\" }}>\n <PresentationItem md={24} label={`Citation`}>\n <div\n dangerouslySetInnerHTML={{ __html: dataset.citation }}\n ></div>\n </PresentationItem>\n </div>\n )}\n </div>\n )}\n />\n )}\n </div>\n );\n }\n}\n\nexport default function SourceDatasetList({\n datasetKey,\n auth,\n ...routerProps\n}) {\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n <SourceDatasetListPage datasetKey={datasetKey} auth={auth} />\n </RouterContext.Provider>\n );\n}\n","import TaxonBreakdown from \"./TaxonBreakdown\";\nimport React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport { Row, Col, Spin } from \"antd\";\nimport { RouterContext, buildRouter } from \"../router\";\n\nexport const BreakDownWrapper = ({\n taxonId,\n datasetKey,\n level = 1,\n showLevelSwitch = false,\n darkMode,\n ...routerProps\n}) => {\n const [taxon, setTaxon] = useState(null);\n const [dataset, setDataset] = useState(null);\n const [rank, setRank] = useState([]);\n\n useEffect(() => {\n if (taxonId && datasetKey) getTaxon();\n if (datasetKey) {\n getDataset();\n getRank();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [taxonId, datasetKey]);\n\n const getRank = () =>\n axios(`${config.dataApi}vocab/rank`).then((res) =>\n setRank(res.data.map((r) => r.name))\n );\n const getTaxon = () =>\n axios(`${config.dataApi}dataset/${datasetKey}/taxon/${taxonId}`).then(\n (res) => setTaxon(res.data)\n );\n const getDataset = () =>\n axios(`${config.dataApi}dataset/${datasetKey}`).then((res) =>\n setDataset(res.data)\n );\n\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n {!!taxon && !!dataset && rank.length > 0 ? (\n <TaxonBreakdown\n taxon={taxon}\n datasetKey={datasetKey}\n rank={rank}\n dataset={dataset}\n level={level}\n showLevelSwitch={showLevelSwitch}\n darkMode={darkMode}\n />\n ) : (\n <Row justify=\"center\" style={{ padding: \"24px\" }}>\n <Col>\n <Spin size=\"large\" />\n </Col>\n </Row>\n )}\n </RouterContext.Provider>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport config from \"../config\";\nimport { Row, Col, Spin } from \"antd\";\nimport Distributions from \"./Distributions\";\nimport { RouterContext, buildRouter } from \"../router\";\n\n// Standalone wrapper around the Taxon page's Distributions block.\n// Loads the focal taxon, its info (which carries the distributions array),\n// and the rank vocabulary — same data the Taxon page already loads — so\n// embedders can drop the map onto any page given just (datasetKey, taxonId).\nexport const DistributionsWrapper = ({\n taxonId,\n datasetKey,\n gbifChecklistKey,\n style,\n ...routerProps\n}) => {\n const [taxon, setTaxon] = useState(null);\n const [distributions, setDistributions] = useState(null);\n const [rank, setRank] = useState([]);\n\n useEffect(() => {\n let cancelled = false;\n setTaxon(null);\n setDistributions(null);\n\n if (!taxonId || !datasetKey) return undefined;\n\n axios(`${config.dataApi}vocab/rank`).then((res) => {\n if (!cancelled) setRank(res.data.map((r) => r.name));\n });\n axios(\n `${config.dataApi}dataset/${datasetKey}/taxon/${encodeURIComponent(taxonId)}`\n ).then((res) => {\n if (!cancelled) setTaxon(res.data);\n });\n axios(\n `${config.dataApi}dataset/${datasetKey}/taxon/${encodeURIComponent(taxonId)}/info`\n ).then((res) => {\n if (!cancelled) setDistributions(res?.data?.distributions || []);\n });\n\n return () => {\n cancelled = true;\n };\n }, [taxonId, datasetKey]);\n\n return (\n <RouterContext.Provider value={buildRouter(routerProps)}>\n {!taxon || distributions === null || rank.length === 0 ? (\n <Row justify=\"center\" style={{ padding: \"24px\" }}>\n <Col>\n <Spin size=\"large\" />\n </Col>\n </Row>\n ) : (\n <Distributions\n data={distributions}\n datasetKey={datasetKey}\n focalTaxon={taxon}\n rankOrder={rank}\n gbifChecklistKey={gbifChecklistKey}\n showDistributionMap={true}\n style={style}\n />\n )}\n </RouterContext.Provider>\n );\n};\n\nexport default DistributionsWrapper;\n","import React, { useState, useEffect, useMemo, useCallback } from \"react\";\nimport qs from \"query-string\";\n\n// withRouting(Component, options): adapts a controlled col-browser\n// component to read/write the host page's URL.\n//\n// options.kind — one of \"taxon\" | \"tree\" | \"source\" | \"sourceList\" |\n// \"search\" | \"taxonBreakdown\" | \"taxonDistribution\" |\n// \"bibtex\"\n// options.mode — \"path\" (recommended for the COL portal) or \"hash\"\n// (used by the GitHub Pages demo)\n// options.navigation — \"spa\" (default) or \"reload\". Controls what the four\n// onNavigateToX callbacks do when an in-component\n// action triggers cross-page navigation (e.g. a\n// Highcharts pie segment click with no <a href>\n// fallback). \"spa\" uses history.pushState — right\n// for SPA hosts (react-router, Next.js, TanStack\n// Router). \"reload\" calls window.location.assign,\n// forcing the browser to load the target page —\n// right for static / multi-page hosts (a Jekyll\n// portal, the GitHub Pages demo, any plain HTML).\n// The in-component state callbacks\n// (onExpandedTaxonKeyChange, onFiltersChange) always\n// use pushState so they don't reload the page while\n// the user is interacting with a single component.\n// options.paths — prefix strings for the four navigation targets, e.g.\n// { taxon: \"/taxon/\", tree: \"/tree\", search: \"/search\",\n// source: \"/source/\" }. For hash mode, the prefixes\n// are applied to window.location.hash (without the\n// leading #). Both modes use plain pathnames; query\n// strings are only used for `expandedTaxonKey` (Tree)\n// and `filters` (Search).\n//\n// All wrappers provide the four hrefForX + onNavigateToX pairs, derived\n// from `paths` and the active routing mode. Kind-specific wrappers also\n// inject the controlled identifier and the appropriate change handler\n// (e.g. `filters` + `onFiltersChange` for Search).\n\nconst isHash = (mode) => mode === \"hash\";\n\nconst readLocationKind = (mode) => {\n if (isHash(mode)) {\n const raw = (typeof window !== \"undefined\" && window.location.hash) || \"\";\n const hash = raw.startsWith(\"#\") ? raw.slice(1) : raw;\n const qIdx = hash.indexOf(\"?\");\n return {\n path: qIdx >= 0 ? hash.slice(0, qIdx) : hash,\n search: qIdx >= 0 ? hash.slice(qIdx) : \"\",\n };\n }\n return {\n path: (typeof window !== \"undefined\" && window.location.pathname) || \"\",\n search: (typeof window !== \"undefined\" && window.location.search) || \"\",\n };\n};\n\nconst writeLocation = (mode, path, search) => {\n const searchStr = search && Object.keys(search).length > 0\n ? `?${qs.stringify(search, { arrayFormat: \"none\" })}`\n : \"\";\n if (isHash(mode)) {\n const next = `${path}${searchStr}`;\n window.location.hash = next;\n } else {\n const url = `${path}${searchStr}`;\n window.history.pushState(null, \"\", url);\n // notify any listeners (the adapter subscribes via popstate / hashchange)\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n};\n\nconst subscribe = (mode, cb) => {\n const evt = isHash(mode) ? \"hashchange\" : \"popstate\";\n window.addEventListener(evt, cb);\n return () => window.removeEventListener(evt, cb);\n};\n\n// Build href: the URL the host would land on for each target.\nconst hrefFor = (mode, prefix, args) => {\n if (!prefix) return null;\n const arg = args == null ? \"\" : typeof args === \"object\" ? \"\" : String(args);\n const tail = typeof args === \"object\" && args && Object.keys(args).length > 0\n ? `?${qs.stringify(args, { arrayFormat: \"none\" })}`\n : \"\";\n const url = `${prefix}${arg}${tail}`;\n return isHash(mode) ? `#${url}` : url;\n};\n\nconst navigate = (mode, navigation, prefix, args) => {\n if (!prefix) return;\n if (navigation === \"reload\") {\n // Force a real browser navigation. hrefFor builds the same URL the\n // adapter would render in href= attributes, so the imperative and\n // anchor paths land on identical URLs.\n const url = hrefFor(mode, prefix, args);\n if (url != null && typeof window !== \"undefined\") {\n window.location.assign(url);\n }\n return;\n }\n // Default \"spa\" behaviour: pushState + popstate so an SPA host re-renders.\n let path = prefix;\n let search = null;\n if (typeof args === \"string\" || typeof args === \"number\") {\n path = `${prefix}${args}`;\n } else if (args && typeof args === \"object\") {\n search = args;\n }\n writeLocation(mode, path, search);\n};\n\nconst buildNavProps = (mode, navigation, paths) => ({\n hrefForTaxon: (id) => hrefFor(mode, paths.taxon, id),\n hrefForTree: (a) => hrefFor(mode, paths.tree, a),\n hrefForSearch: (a) => hrefFor(mode, paths.search, a),\n hrefForSource: (id) => hrefFor(mode, paths.source, id),\n\n onNavigateToTaxon: (id) => navigate(mode, navigation, paths.taxon, id),\n onNavigateToTree: (a) => navigate(mode, navigation, paths.tree, a),\n onNavigateToSearch: (a) => navigate(mode, navigation, paths.search, a),\n onNavigateToSource: (id) => navigate(mode, navigation, paths.source, id),\n});\n\n// Extract the last path segment after a prefix, ignoring trailing slash.\nconst lastSegmentAfter = (path, prefix) => {\n if (!prefix) return undefined;\n if (!path.startsWith(prefix)) {\n // Allow matching when the host wraps in a base path; fall back to\n // \"anything after the prefix substring\".\n const i = path.indexOf(prefix);\n if (i < 0) return undefined;\n return path.slice(i + prefix.length).split(\"/\").filter(Boolean).pop();\n }\n return path.slice(prefix.length).split(\"/\").filter(Boolean).pop();\n};\n\nexport function withRouting(Component, options) {\n const { kind, mode = \"path\", navigation = \"spa\", paths = {} } = options;\n\n const Wrapped = (props) => {\n const [tick, setTick] = useState(0);\n useEffect(() => subscribe(mode, () => setTick((t) => t + 1)), []);\n\n const { path, search } = readLocationKind(mode);\n\n const navProps = useMemo(() => buildNavProps(mode, navigation, paths), []);\n\n // Controlled identifier per kind.\n let extra = {};\n if (kind === \"taxon\") {\n extra.taxonKey = lastSegmentAfter(path, paths.taxon);\n } else if (kind === \"source\") {\n extra.sourceDatasetKey = lastSegmentAfter(path, paths.source);\n } else if (kind === \"taxonBreakdown\") {\n extra.taxonId = lastSegmentAfter(path, paths.taxonBreakdown);\n } else if (kind === \"taxonDistribution\") {\n extra.taxonId = lastSegmentAfter(path, paths.taxonDistribution);\n } else if (kind === \"bibtex\") {\n extra.sourceDatasetKey = lastSegmentAfter(path, paths.bibtex);\n } else if (kind === \"tree\") {\n const parsed = qs.parse(search);\n extra.expandedTaxonKey = parsed.taxonKey || undefined;\n extra.onExpandedTaxonKeyChange = useCallback((id) => {\n const cur = readLocationKind(mode);\n const next = qs.parse(cur.search);\n if (id) next.taxonKey = id;\n else delete next.taxonKey;\n writeLocation(mode, cur.path || paths.tree || \"/\", next);\n }, []);\n } else if (kind === \"search\") {\n const parsed = qs.parse(search, { arrayFormat: \"none\" });\n extra.filters = parsed;\n extra.onFiltersChange = useCallback((filters) => {\n const cur = readLocationKind(mode);\n writeLocation(mode, cur.path || paths.search || \"/\", filters);\n }, []);\n }\n // sourceList: no controlled identifier; only nav callbacks.\n\n return <Component {...navProps} {...extra} {...props} />;\n };\n Wrapped.displayName = `withRouting(${\n Component.displayName || Component.name || \"Component\"\n })`;\n return Wrapped;\n}\n\nexport default withRouting;\n","import './index.less';\nimport withDatasetKey, { withBibTexLegacyShim } from \"./withDatasetKey\";\nimport { withTheme } from \"./withTheme\";\nimport colTree from \"./ColTree\"\nimport taxon from \"./Taxon\"\nimport search from \"./Search\"\nimport sourceDataset from \"./SourceDataset\"\nimport sourceDatasetList from \"./SourceDatasetList\"\nimport bibTex from \"./components/BibTex\"\nimport { BreakDownWrapper } from './Taxon/BreakDownWrapper';\nimport { DistributionsWrapper } from './Taxon/DistributionsWrapper';\nexport { withRouting } from './url';\nexport const Tree = withTheme(withDatasetKey(colTree));\nexport const Taxon = withTheme(withDatasetKey(taxon));\nexport const Search = withTheme(withDatasetKey(search));\nexport const SourceDataset = withTheme(withDatasetKey(sourceDataset));\nexport const SourceDatasetList = withTheme(withDatasetKey(sourceDatasetList));\nexport const BibTex = withTheme(withBibTexLegacyShim(bibTex));\nexport const TaxonBreakdown = withTheme(BreakDownWrapper);\nexport const TaxonDistribution = withTheme(DistributionsWrapper);\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","warned","warnDeprecation","message","withDatasetKey","WrappedComponent","Wrapper","catalogueKey","datasetKey","rest","resolvedDatasetKey","jsx","withBibTexLegacyShim","sourceDatasetKey","withTheme","Component","Wrapped","theme","darkMode","merged","antdTheme","ConfigProvider","noop","defaultRouter","RouterContext","createContext","useRouter","useContext","buildRouter","LinkTo","to","args","className","style","title","slot","onNavigate","hrefFor","href","handleClick","e","useNavigateTo","reflect","p","v","getDatasetsBatch","ids","nullsForAll","params","id","axios","res","byKey","d","getPublishersBatch","i","getDataset","getDatasetSimple","TreeCacheContext","createTreeCache","DataLoader","TaxonSources","__publicField","_a","sourceDatasetKeys","loader","s","data","_","publisherDatasetKeys","publisher","showInNode","popOverVisible","loading","taxon","linkStyle","publisherUrl","uuid","index","Popover","Spin","jsxs","Divider","visible","createdByAlgorithm","MergedDataBadge","sourceId","popoverPlacement","verbatimSourceKey","sectorKey","createdBy","sourceDataset","setSourceDataset","useState","sourceDatasetLoading","setSourceDatasetLoading","sourceTaxon","setSourceTaxon","sourceTaxonLoading","setSourceTaxonLoading","verbatimRecord","setVerbatimRecord","verbatimRecordLoading","setVerbatimRecordLoading","open","setOpen","useEffect","getSourceTaxon","getSourceDataset","getVerbatimRecord","err","idRef","useRef","Fragment","issue","Tag","ColTreeContext","ColTreeNode","rank","sector","sectorSourceDataset","hasDatasetSectors","isPlaceholder","showInfo","ErrorMsg","error","getSectorsBatch","CHILD_PAGE_SIZE","LoadMoreChildrenTreeNode","ColTree","treeRef","prevProps","r","showSourceTaxon","hideExtinct","insertPlaceholder","expandedTaxonKey","defaultExpandKey","defaultTaxonKey","mainTreeData","rootTotal","treeData","tx","dataRef","n","root","root_","rootIndex","x","loadedKeys","t","reloadAll","dontUpdateState","limit","offset","childDataRef","loadMoreFn","dataset","treeNode","nodeArray","flattenedChildren","parentNode","taxonId","c","expandKey","expandAll","storedKeys","targetTaxon","targetNode","newState","rootLoading","defaultExpandAll","nodeNotFoundErr","expandedKeys","treeType","height","Alert","Skeleton","Tree","obj","Button","NameSearchAutocomplete","usageId","q","minRank","extinct","url","val","selectedTaxon","names","searchTerm","o","Highlighter","placeHolder","autoFocus","disabled","options","randomID","Select","debounce","Citation","INFRASPECIFIC_RANKS","ColTreeWrapper","citation","onExpandedTaxonKeyChange","showTreeOptions","linkToSpeciesPage","handleSelectName","navigateToTaxon","_b","handleResetSearch","Row","Col","NameAutocomplete","Checkbox","checked","ref","btoa","auth","routerProps","IconContext","f","clsx","presetColors","round","splitColorStr","str","parseNum","match","numList","item","parseHSVorHSL","num","limitRange","max","mergedMax","FastColor","input","matchFormat","matchPrefix","prefix","trimStr","presetColor","hsv","adjustGamma","raw","R","G","B","delta","l","amount","h","color","calc","rgba","background","bg","alpha","other","hex","rHex","gHex","bHex","aHex","rgb","clone","withoutPrefix","connectNum","index1","index2","_h","a","g","b","huePrime","chroma","secondComponent","lightnessModification","vv","hh","ff","cells","txt","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","getHue","light","hue","getSaturation","saturation","getValue","generate","opts","patterns","pColor","blue","canUseDom","contains","APPEND_ORDER","APPEND_PRIORITY","MARK_KEY","containerCache","getMark","mark","getContainer","option","getOrder","prepend","findStyles","container","injectCSS","css","csp","priority","mergedOrder","isPrependQueue","styleNode","firstChild","existStyle","nodePriority","findExistNode","styles","syncRealContainer","cachedRealContainer","placeholderStyle","updateCSS","originOption","existNode","_c","newNode","getRoot","ele","inShadow","getShadowRoot","preWarningFns","preMessage","fn","warning","valid","finalMessage","msg","preMessageFn","note","resetWarned","call","method","warningOnce","noteOnce","camelCase","isIconDefinition","target","normalizeAttrs","attrs","acc","rootProps","child","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","iconStyles","useInsertStyles","eleRef","prefixCls","layer","mergedStyleStr","shadowRoot","twoToneColorPalette","setTwoToneColors","secondaryColor","getTwoToneColors","IconBase","icon","onClick","restProps","svgRef","colors","setTwoToneColor","ReactIcon","getTwoToneColor","_extends","source","Icon","spin","rotate","tabIndex","rootClassName","Context","classString","iconTabIndex","svgStyle","BookOutlined","AntdIcon","BookOutlinedSvg","RefIcon","DownOutlined","DownOutlinedSvg","DownloadOutlined","DownloadOutlinedSvg","LinkOutlined","LinkOutlinedSvg","MessageFilled","MessageFilledSvg","QuestionCircleOutlined","QuestionCircleOutlinedSvg","TagOutlined","TagOutlinedSvg","UpOutlined","UpOutlinedSvg","EXTRA_LARGE","LARGE","MEDIUM","SMALL","_Width","innerWidth","width","Width","withWidth","WithWidth","BorderedListItem","classes","size","marginSize","BorderedListItem$1","injectSheet","ReferencePopover","referenceId","references","refIds","reference","el","referenceIndexMap","trigger","DecisionBadge","decision","subject","originalSubjectId","subjectDatasetKey","created","modified","modifiedBy","getTypeColor","status","typeStatus","getLinks","gbifOccLink","ncbiLink","Space","Tooltip","TypeMaterial","nameID","linkify","TypeMaterialPopover","nameId","typeMaterial","ShowMoreToggle","total","showAll","onChange","TOP_N","SynonymsTable","nomStatus","decisions","primarySource","setShowAll","getNomStatus","sorter","items","group","visibleItems","renderItem","homotypic","indent","getCountries","getTaxGroup","VernacularNamesTable","countryAlpha3","countryAlpha2","newData","text","record","columns","Table","getDescendantRanks","focalRank","rankOrder","focalIdx","POOL_SIZE","isMappable","runPool","worker","results","next","runners","searchDescendants","focalId","ranks","u","_e","_d","_f","fetchDistributions","fetchDescendants","focalTaxon","descendantsFailed","list","distributions","all","VIVID_PALETTE","rankIndex","assignColors","taxa","sorted","ra","rb","out","wrapStyle","scrollStyle","groupHeadingStyle","firstGroupHeadingStyle","rowStyle","swatchStyle","footerToggleStyle","footerWrapStyle","footerGroupHeadingStyle","footerFirstGroupHeadingStyle","footerNameStyle","totalCount","groups","sum","GbifHexEntry","IncludedTaxaLegend","visibleGroups","unmappableGroups","showGbif","showUnmappable","setShowUnmappable","visibleCount","unmappableCount","POPUP_FIELDS","ESTABLISHMENT_MEANS","ESTABLISHMENT_COLORS","m","MISSING_COLOR","normalizeKey","resolveKey","colorFor","POSITRON_STYLE","GBIF_VISIBLE_STORAGE_KEY","readStoredGbifVisible","defaultValue","writeStoredGbifVisible","GBIF_TILE_PATH","FOCAL_SOURCE","FOCAL_FILL","FOCAL_LINE","GBIF_SOURCE","GBIF_LAYER","descendantSourceId","descendantFillId","descendantLineId","cache","fetchShape","gazetteer","escapeHtml","popupHtml","rows","descendantPopupHtml","RANK_LABEL_PLURAL","rankLabelPlural","epithet","scientificName","tokens","GbifLegendEntry","computeBounds","features","minLng","minLat","maxLng","maxLat","visit","coords","lng","lat","flattenFeatures","geojson","supported","maplibregl","DistributionsMap","records","onUnmappable","gbifChecklistKey","gbifAvailable","containerRef","mapRef","popupRef","recordMapRef","descendantTaxonMapRef","descendantRecordMapRef","focalAttachedRef","gbifAttachedRef","descendantLayersRef","styleReady","setStyleReady","focalReady","setFocalReady","descendantState","setDescendantState","focalVisible","setFocalVisible","isGbifOnly","gbifVisible","setGbifVisible","visibleTaxonIds","setVisibleTaxonIds","controlOpen","setControlOpen","fetchTriggeredRef","handleToggleGbif","presentMeans","useMemo","seen","descendantColors","descendantLegend","decorate","groupByRank","byRank","showDescendantLegend","map","attrib","resizeObserver","cancelled","recordMap","failures","recordKey","beforeId","onFocalClick","onMouseEnter","onMouseLeave","bounds","feature","searchUrl","rec","srcId","fillId","lineId","onDescendantClick","triggerDescendantFetch","openControl","descendantsByRank","toggleTaxon","prev","toggleRankGroup","rankTaxa","allOn","focalName","LayerControl","onOpen","onClose","onToggleFocal","gbifEnabled","onToggleGbif","descendantStatus","onToggleTaxon","onToggleRankGroup","onRetry","someOn","ListView","iso3Map","setIso3Map","isIso","DistributionsTable","showDistributionMap","mappable","baseUnmappable","hasGbifConfigured","hasAnyRecords","view","setView","fetchFailures","setFetchFailures","gbifCount","setGbifCount","allMappableFailed","showMap","unmappable","showToggle","activeView","Radio","rankStyle","ClassificationTable","w","y","z","A","reactIs_production_min","hasSymbol","REACT_PROVIDER_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","getOwnPropertySymbols","propIsEnumerable","toObject","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","from","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","has","printWarning","loggedTypeFailures","checkPropTypes","typeSpecs","values","location","getStack","typeSpecName","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","step","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","Help","Help$1","PresentationItem","label","helpText","md","medium","mediumCol2","PropTypes","PresentationItem$1","getLabel","reverse","NameRelations","idx","ReferencesTable","primarySourceDatasetKey","DOMPurify","module","this","$","M","D","S","O","Y","IncludesTable","rankToPlural","cur","DatasetlogoWithFallback","fallBack","svg404","Page404","MAX_SLICES_PER_RING","canonicalRanks","notAssignedLabel","rk","sortAndClip","nodes","padNotAssigned","kids","parentSpecies","TaxonBreakdown","level","showLevelSwitch","setOptions","setLoading","invalid","setInvalid","activeLevel","setActiveLevel","getData","getOverView","counts","taxonRankIdx","canonicalRankIndex","childRank","childRankIndex","nextRank","totalSpecies","buildChart","DOI","baseColors","Highcharts","gapColor","taxonClickHandler","innerData","outerData","hasOuterData","slice","j","shift","clean","_kids","grandTotal","innerDataLabels","series","levelSwitch","Switch","HighchartsReact","SecondarySources","info","datasets","setDatasets","getDatasets","datasetLoader","_j","_i","_g","_m","_l","_k","axiosNoAuth","headers","getMsg","ErrorMessage","Feedback","taxonKey","form","Form","setVisible","setError","issueUrl","setIssueUrl","onFinishFailed","errorFields","submitData","layout","Modal","Input","dayjs","localizedFormat","TaxonPage","pageTitleTemplate","promises","publishedIn","relations","synonyms","sourceDatasetsMap","arr","dist","sourceDatasetKeyMap","rel","acceptedId","classification","includes","taxonError","synonymsError","classificationError","infoError","catalogue","genusRankIndex","heterotypic","Synonyms","Classification","VernacularNames","Distributions","_n","_o","_p","_q","_r","_s","_t","_u","_v","Rate","_x","References","_y","_A","_z","_C","_B","Taxon","identifierLabel","maxParents","truncate","clazzification","classificationRankMap","curr","kingdom","familyOrClosestAlternative","Search","SearchBox","event","FormItem","Option","formItemLayout","MultiValueFilter","selected","vocab","vocabKeys","RowDetail","issues","usage","vernacularNames","issueMap","vn","AutoComplete","DatasetAutocomplete","defaultDatasetKey","contributesTo","RadioGroup","FACET_VOCAB","PAGE_SIZE","FACET_LIMIT","defaultParams","getColumns","NameSearchPage","taxGroups","filters","params_","qs","pagination","query","newParams","notNullParams","result","facets","advancedFilters","facetRanks","facetTaxonomicStatus","facetNomStatus","facetNomType","facetNomField","facetAuthorship","extinctLabel","facetExtinct","facetEnvironment","facetGroup","facetAuthorshipYear","evt","onFiltersChange","NameSearch","getLivingTaxa","metrics","getExtinctTaxa","baseFilters","MetricsPresentation","Metrics","TaxonomicCoverage","taxonMap","usages","path","AgentPresentation","agent","noLinks","country","BibTex","defaultStyle","IDENTIFIER_TYPES","SourceDatasetPage","datasetError","marked","SourceDataset","getLivingSpecies","hasPublishers","clm","SourceDatasetListPage","publisherRes","datasetData","publisherData","publisherId","SourceDatasetList","BreakDownWrapper","setTaxon","setDataset","setRank","getTaxon","getRank","DistributionsWrapper","setDistributions","isHash","mode","readLocationKind","hash","qIdx","writeLocation","search","searchStr","subscribe","cb","arg","tail","navigate","navigation","buildNavProps","paths","lastSegmentAfter","withRouting","kind","tick","setTick","navProps","extra","parsed","useCallback","colTree","sourceDatasetList","bibTex","TaxonDistribution"],"mappings":"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","x_google_ignoreList":[0,1,2,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,67,68,69,70,71,72,73,74,75,76,81,82]}