{"version":3,"sources":["webpack:///./src/components/base/ImageUrl.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./src/components/modules/Tooltip.js","webpack:///./src/svg/icn-arrow-right.js","webpack:///./src/svg/icn-loading.js","webpack:///./src/components/modules/CollectionSearch.js","webpack:///./src/pages/collection/search.js","webpack:///./src/svg/icn-search.js","webpack:///./src/svg/icn-play.js","webpack:///./src/svg/icn-close.js"],"names":["defaultSizes","sm","md","lg","xl","xxl","ImageUrl","src","alt","figcaption","className","wrapperClassname","sizes","Object","assign","useState","imgLoaded","setImgLoaded","imgRef","useRef","useEffect","current","complete","srcSet","media","ref","classnames","ImageUrl__loaded","onLoad","_assertThisInitialized","self","ReferenceError","Tooltip","data","style","displayImage","images","pb3","pr3","name","keys","values","map","key","index","IconArrowRight","width","height","viewBox","stroke","strokeWidth","fill","fillRule","transform","x1","y1","x2","y2","IconLoading","circleInterval","radius","w","h","dashOffset","strokeDashoffset","circle","percent","circleUpdate","circumference","Math","PI","offset","strokeDasharray","setInterval","clearInterval","r","cx","cy","CollectionSearch","props","state","sortbyItem","active","sortAscending","searchTerm","searchResults","noSearchResults","isLoading","freshSearch","resultsIndex","showTooltip","Array","tooltipClassName","tooltipLeft","CollectionSearchWrapper","React","createRef","SearchInput","SortbyParent","SortbyCategory","SortbyName","SortbyDecade","onSearchChange","bind","onSearch","onSearchCancel","doSearch","onSortClick","sortItemsBy","onLinkEnter","onLinkLeave","onpopstate","componentDidMount","this","focus","searchString","window","location","search","substring","addEventListener","length","searchTermHumanized","decodeURI","setState","componentWillUnmount","removeEventListener","e","target","value","preventDefault","searchTermUri","encodeURI","trim","url","href","split","history","replaceState","document","title","endsWith","items","fetch","method","body","JSON","stringify","query","query_string","default_operator","then","response","json","forEach","item","push","_source","catch","error","console","warn","sortbyThing","sortitAscending","slice","sortField","ascending","sort","a","b","toLowerCase","Medium","Year","arr","left","clientX","getBoundingClientRect","tooltipPosition","clientY","innerHeight","innerWidth","render","type","id","placeholder","onChange","dn","onClick","db","onMouseLeave","Link","to","slug","onMouseEnter","Component","Search","closeNavTo","setCloseNavTo","fromTaxon","setFromTaxon","Layout","pageTitle","shouldAnimate","IconSearch","IconPlay","points","IconClose"],"mappings":"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","file":"component---src-pages-collection-search-js-57aa75929ddb0670311f.js","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport classnames from 'classnames';\nconst defaultSizes = {\n sm: 960,\n md: 1400,\n lg: 1800,\n xl: 2028,\n xxl: 2704\n};\n\nconst ImageUrl = ({\n src,\n alt = '',\n figcaption = null,\n className = '',\n wrapperClassname = '',\n sizes = {}\n}) => {\n sizes = Object.assign(defaultSizes, sizes);\n const [imgLoaded, setImgLoaded] = useState(false);\n const imgRef = useRef(null);\n\n // Use the useEffect to check if the image was loaded\n // *too quickly* to trigger the onLoad event\n useEffect(() => {\n if (imgRef.current?.complete) {\n setImgLoaded(true);\n }\n }, []);\n return (\n
\n \n \n \n \n \n {\n setImgLoaded(true);\n }}\n />\n \n {figcaption &&
{figcaption}
}\n
\n );\n};\n\nexport default ImageUrl;\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import React from 'react';\nimport classnames from 'classnames';\nimport ImageUrl from 'components/base/ImageUrl';\n\nconst Tooltip = ({ data, className = '', style }) => {\n // Eventually, the `sideways` value in the classnames call\n // will have an actual check for whether to display sideways\n // probably based on the image width\n const displayImage = data.images.images\n ? data.images.images[0]\n : data.images['360_images']\n ? data.images['360_images'][0]\n : null;\n const sideways = false;\n return (\n \n {displayImage && (\n \n \n \n )}\n

{data.name}

\n
    \n {Object.keys(data.values).map((key, index) => {\n return (\n
  • \n {key}: {data.values[key]}\n
  • \n );\n })}\n
\n \n );\n};\n\nexport default Tooltip;\n","import React from 'react';\n\nconst IconArrowRight = ({ className = '' }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IconArrowRight;\n","/* eslint react-hooks/exhaustive-deps: 0 */\nimport React, { useState, useRef, useEffect } from 'react';\n\nconst IconLoading = ({ className = '', radius = 10, w = 24, h = 24 }) => {\n const [dashOffset, strokeDashoffset] = useState(0);\n const circle = useRef(null);\n let circleInterval;\n let percent = 0;\n\n const circleUpdate = () => {\n // let circle = document.querySelector('circle');\n let circumference = radius * 2 * Math.PI;\n const offset = circumference - (percent / 100) * circumference;\n circle.current.style.strokeDashoffset = offset;\n strokeDashoffset(offset);\n percent = (percent + 1) % 100;\n };\n\n useEffect(() => {\n let circumference = radius * 2 * Math.PI;\n circle.current.style.strokeDasharray = `${circumference} ${circumference}`;\n circle.current.style.strokeDashoffset = `${circumference}`;\n circleInterval = setInterval(circleUpdate, 10);\n return () => clearInterval(circleInterval);\n }, [radius, circleInterval, circle]);\n\n return (\n \n \n \n );\n};\n\nexport default IconLoading;\n","import React, { Component } from 'react';\nimport Link from 'components/base/Link';\nimport Tooltip from 'components/modules/Tooltip';\nimport { slug } from 'components/utils/helpers';\nimport classnames from 'classnames';\nimport IconArrowRight from 'svg/icn-arrow-right';\nimport IconPlay from 'svg/icn-play';\nimport IconLoading from 'svg/icn-loading';\nimport IconClose from 'svg/icn-close';\n\nconst esEndpoint =\n 'https://oy5fxv675k.execute-api.us-east-2.amazonaws.com/default/mal-endpoint';\n\nclass CollectionSearch extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n sortbyItem: { active: 'name' },\n sortAscending: true,\n searchTerm: '',\n searchResults: [],\n noSearchResults: false,\n isLoading: false,\n freshSearch: false,\n resultsIndex: 25,\n showTooltip: new Array(1000).fill(false),\n tooltipClassName: '',\n tooltipLeft: 0\n };\n\n this.CollectionSearchWrapper = React.createRef();\n this.SearchInput = React.createRef();\n this.SortbyParent = React.createRef();\n this.SortbyCategory = React.createRef();\n this.SortbyName = React.createRef();\n this.SortbyDecade = React.createRef();\n\n this.onSearchChange = this.onSearchChange.bind(this);\n this.onSearch = this.onSearch.bind(this);\n this.onSearchCancel = this.onSearchCancel.bind(this);\n this.doSearch = this.doSearch.bind(this);\n this.onSortClick = this.onSortClick.bind(this);\n this.sortItemsBy = this.sortItemsBy.bind(this);\n this.onLinkEnter = this.onLinkEnter.bind(this);\n this.onLinkLeave = this.onLinkLeave.bind(this);\n this.onpopstate = this.onpopstate.bind(this);\n }\n\n componentDidMount() {\n this.SearchInput.current.focus();\n const searchString = window.location.search.substring(1);\n window.addEventListener('popstate', this.onpopstate);\n if (searchString.length) {\n const searchTermHumanized = decodeURI(searchString);\n this.setState({\n searchTerm: searchTermHumanized\n });\n this.doSearch(searchTermHumanized);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('popstate', this.onpopstate);\n }\n\n onpopstate() {\n const searchString = window.location.search.substring(1);\n if (searchString.length) {\n const searchTermHumanized = decodeURI(searchString);\n this.setState({\n searchTerm: searchTermHumanized,\n isLoading: true\n });\n this.doSearch(searchTermHumanized);\n } else {\n this.onSearchCancel();\n this.setState({\n searchResults: []\n });\n }\n }\n\n onSearchChange(e) {\n this.setState({\n searchTerm: e.target.value,\n freshSearch: false,\n noSearchResults: false\n });\n }\n\n onSearch(e) {\n e.preventDefault();\n const { searchTerm } = this.state;\n if (searchTerm !== '') {\n let searchTermUri = encodeURI(searchTerm.trim());\n this.doSearch(searchTerm);\n let url = window.location.href.split('?')[0];\n window.history.replaceState(\n {},\n document.title,\n `${url}${url.endsWith('/') ? '' : '/'}?${searchTermUri}`\n );\n } else {\n this.onSearchCancel();\n }\n }\n\n onSearchCancel() {\n this.SearchInput.current.value = '';\n this.setState({\n searchTerm: '',\n noSearchResults: false,\n searchResults: [],\n freshSearch: false\n });\n this.SearchInput.current.focus();\n const url = window.location.href.split('?')[0];\n window.history.replaceState({}, document.title, url);\n }\n\n doSearch(searchTerm) {\n this.setState({\n isLoading: true,\n noSearchResults: false,\n searchResults: []\n });\n let items = [];\n fetch(esEndpoint, {\n method: 'POST',\n body: JSON.stringify({\n query: {\n query_string: {\n query: searchTerm,\n default_operator: 'AND'\n }\n }\n })\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n data.forEach(item => {\n items.push(item._source);\n });\n this.setState({\n noSearchResults: items.length === 0,\n isLoading: false,\n freshSearch: true,\n searchResults: this.sortItemsBy(items, 'name')\n });\n })\n .catch(error => {\n console.warn(error);\n });\n }\n\n onSortClick(e, ref, sortbyThing) {\n // If we're not already sorting by this\n const { sortbyItem, sortAscending, searchResults } = this.state;\n\n if (sortbyThing !== sortbyItem.active) {\n let sortitAscending = sortAscending;\n this.setState({\n searchResults: this.sortItemsBy(\n searchResults,\n sortbyThing,\n sortitAscending\n ).slice(),\n sortbyItem: { active: sortbyThing }\n });\n } else {\n // we want to flip ascending / descending\n let sortitAscending = !sortAscending;\n this.setState({\n searchResults: this.sortItemsBy(\n searchResults,\n sortbyThing,\n sortitAscending\n ).slice(),\n sortAscending: !sortAscending\n });\n }\n }\n\n sortItemsBy(items, sortField, ascending = true) {\n // return searchResults as sorted by `sortField`\n let sortedResults = [];\n if (sortField === 'name') {\n sortedResults = items.sort((a, b) => {\n if (ascending) {\n return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;\n } else {\n return a.name.toLowerCase() < b.name.toLowerCase() ? 1 : -1;\n }\n });\n } else if (sortField === 'category') {\n sortedResults = items.sort((a, b) => {\n if (ascending) {\n return a.values.Medium.toLowerCase() > b.values.Medium.toLowerCase()\n ? 1\n : -1;\n } else {\n return a.values.Medium.toLowerCase() < b.values.Medium.toLowerCase()\n ? 1\n : -1;\n }\n });\n } else {\n // Sort the results by year\n sortedResults = items.sort((a, b) => {\n a.values.Year = a.values.Year || 'Unknown';\n b.values.Year = b.values.Year || 'Unknown';\n if (ascending) {\n return a.values.Year.toLowerCase() > b.values.Year.toLowerCase()\n ? 1\n : -1;\n } else {\n return a.values.Year.toLowerCase() < b.values.Year.toLowerCase()\n ? 1\n : -1;\n }\n });\n // Put all the unknown dates at the end of the list\n sortedResults = sortedResults.sort((a, b) => {\n return a.values.Year === 'Unknown' ? 1 : -1;\n });\n }\n return sortedResults;\n }\n\n onLinkEnter(e, index) {\n // Show the tooltip\n let arr = new Array(1000).fill(false);\n arr[index] = true;\n\n this.setState({\n showTooltip: arr\n });\n // Set the tooltip left position\n // and classnames (for quadrant)\n let left =\n e.clientX -\n this.CollectionSearchWrapper.current.getBoundingClientRect().left -\n 40;\n this.setState({\n tooltipLeft: left\n });\n let tooltipPosition = 'Tooltip--';\n if (e.clientY > window.innerHeight / 2) {\n tooltipPosition += 'bottom-';\n } else {\n tooltipPosition += 'top-';\n }\n if (e.clientX > window.innerWidth / 2) {\n tooltipPosition += 'right';\n } else {\n tooltipPosition += 'left';\n }\n this.setState({\n tooltipClassName: tooltipPosition\n });\n }\n\n onLinkLeave() {\n this.setState({\n showTooltip: new Array(100).fill(false)\n });\n }\n\n render() {\n const { className } = this.props;\n const {\n isLoading,\n searchResults,\n searchTerm,\n freshSearch,\n sortAscending,\n resultsIndex,\n sortbyItem,\n noSearchResults,\n showTooltip,\n tooltipLeft,\n tooltipClassName\n } = this.state;\n return (\n \n
\n
\n \n \n {isLoading ? : }\n \n {\n e.preventDefault();\n this.onSearchCancel();\n }}\n >\n \n \n \n
\n
\n {searchResults.length > 0 && (\n
    \n \n {\n this.onSortClick(e, this.SortbyName, 'name');\n }}\n >\n Name\n \n \n {\n this.onSortClick(e, this.SortbyDecade, 'decade');\n }}\n >\n Year\n \n \n {\n this.onSortClick(e, this.SortbyCategory, 'category');\n }}\n >\n Category\n \n \n \n
\n )}\n
    \n {noSearchResults && (\n
  • \n No results were found\n
  • \n )}\n {searchResults.slice(0, resultsIndex).map((item, index) => {\n return (\n
  • \n
    \n {\n this.onLinkEnter(e, index);\n }}\n >\n {item.name}\n \n
    \n
    \n {item.values.Year || 'Unknown'}\n
    \n
    \n \n {item.values.Medium}\n \n
    \n {showTooltip[index] && (\n \n )}\n
  • \n );\n })}\n {(isLoading || resultsIndex < searchResults.length) && (\n
  • \n {isLoading ? (\n \n ) : (\n <>\n {resultsIndex < searchResults.length && (\n {\n // show more search results...\n this.setState({\n resultsIndex: resultsIndex + 25\n });\n }}\n >\n Load more...\n \n )}\n \n )}\n
  • \n )}\n
\n
\n \n );\n }\n}\n\nexport default CollectionSearch;\n","import React, { useState, useEffect } from 'react';\nimport Layout from 'components/Layout';\nimport Link from 'components/base/Link';\nimport CollectionSearch from 'components/modules/CollectionSearch';\nimport IconSearch from 'svg/icn-search';\nimport IconClose from 'svg/icn-close';\n\nconst Search = () => {\n const [closeNavTo, setCloseNavTo] = useState('/collection');\n const [fromTaxon, setFromTaxon] = useState(false);\n useEffect(() => {\n setCloseNavTo(\n window.history.state && window.history.state.fromTaxon\n ? `/${window.history.state.fromTaxon}`\n : '/collection'\n );\n setFromTaxon(\n window.history.state && window.history.state.fromTaxon\n ? window.history.state.fromTaxon\n : false\n );\n }, []);\n return (\n \n
\n
    \n \n \n \n \n \n Index\n \n
\n
\n {/* The search + search results */}\n \n
\n );\n};\n\nexport default Search;\n","import React from 'react';\n\nconst IconSearch = ({ className = '' }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IconSearch;\n","import React from 'react';\n\nconst IconPlay = ({ className = '' }) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IconPlay;\n","import React from 'react';\n\nconst IconClose = ({ className = '' }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IconClose;\n"],"sourceRoot":""}