{"version":3,"sources":["webpack:///./js/react/partners/listing/PartnerItemsListingFilter.tsx","webpack:///./js/react/partners/listing/PartnerItemsListingFilterRoot.tsx","webpack:///./js/react/checkbox/Checkbox.tsx"],"names":["PartnerItemsListingFilter","partnerId","selectedPage","onSelectPage","useQueryParam","withDefault","NumberParam","selectedFilters","onSelectFilters","ArrayParam","data","setData","useState","selectedFilterJson","JSON","stringify","useEffect","async","query","page","topics","res","fetch","queryString","ok","resData","json","getData","filterPopulated","obj","keys","Object","length","map","filterKey","filters","filterIsPopulated","React","createElement","Fragment","className","renderFilter","filterObj","Checkbox","name","onChange","event","target","HTMLInputElement","currentItems","Set","has","value","delete","add","PartnerItemsListingFilterRoot","useHabitat","QueryParamProvider","reachHistory","globalHistory","Router","primary","default","option","id","key","checked","includes","type","htmlFor"],"mappings":"wKAuEeA,MAnEoB,IAAmB,IAAnB,UAAEC,GAAiB,EAClD,MAAOC,EAAe,EAAGC,GAAgBC,YAAc,OAAQC,YAAYC,IAAa,KACjFC,EAAiBC,GAAmBJ,YAAc,SAAUC,YAAYI,IAAY,MACpFC,EAAMC,GAAWC,mBAAS,MAE3BC,EAAqBC,KAAKC,UAAUR,GAiB1C,GAhBAS,oBAAU,MAENC,iBACI,MAAMC,EAAQ,CACVC,KAAMjB,EACNkB,OAAQb,GAAmB,IAAIA,IAG7Bc,QAAYC,MAAM,uBAAD,OAAwBrB,EAAxB,kBAA2CsB,IAAYR,UAAUG,KACxF,IAAKG,EAAIG,GACL,OAEJ,MAAMC,QAAiBJ,EAAIK,OAC3Bf,EAAQc,GAZZE,IAcD,CAACd,EAAoBX,KACnBQ,EACD,OAAO,KAEX,MAAMkB,EAcN,SAA2BC,GACvB,MAAMC,EAAOC,OAAOD,KAAKD,GACzB,IAAIG,EAAS,EAMb,OALAF,EAAKG,IAAIC,KACDxB,aAAJ,EAAIA,EAAMyB,QAAQf,UACdY,EAAStB,aAAH,EAAGA,EAAMyB,QAAQf,OAAOe,QAAQH,UAGvCA,EAAS,EAtBII,CAAkB1B,EAAKyB,SAC/C,OAAQE,IAAMC,cAAcC,WAAU,KAAMX,EAAmBS,IAAMC,cAAc,MAAO,CAAEE,UAAW,kDACnGH,IAAMC,cAAc,MAAO,CAAEE,UAAW,sCACpCH,IAAMC,cAAc,MAAO,CAAEE,UAAW,2BAA6BZ,GAAmBlB,EAAKyB,SAAWM,EAAa,SAAU/B,aAAX,EAAWA,EAAMyB,QAAQf,WAAc,MAqBnK,SAASqB,EAAaP,EAAWQ,GAC7B,OAAQL,IAAMC,cAAcC,WAAU,KAClCF,IAAMC,cAAc,MAAO,CAAEE,UAAW,qCACpCH,IAAMC,cAAcK,IAAU,CAAEjC,KAAMgC,EAAUP,QAASS,KAAMV,EAAW3B,gBAAiBA,EAAiBsC,SAAWC,IAC/G,GAAIA,EAAMC,kBAAkBC,iBAAkB,CAC1C,MAAMC,EAAe,IAAIC,IAAI3C,GACzB0C,EAAaE,IAAIL,EAAMC,OAAOK,OAC9BH,EAAaI,OAAOP,EAAMC,OAAOK,OAGjCH,EAAaK,IAAIR,EAAMC,OAAOK,OAElC5C,EAAgB,IAAIyC,GAAe,UACnC9C,EAAa,EAAG,kB,QCvD7BoD,UANuB,KAClC,MAAM,UAAEtD,GAAcuD,cACtB,OAAQnB,IAAMC,cAAcmB,IAAoB,CAAEC,aAAcC,KAC5DtB,IAAMC,cAAcsB,IAAQ,CAAEC,SAAS,GACnCxB,IAAMC,cAActC,EAA2B,CAAEC,UAAWA,EAAW6D,SAAS,Q,gCCT5F,qBASenB,IARG,IAA8C,IAA9C,KAAEjC,EAAF,KAAQkC,EAAR,gBAAcrC,EAAd,SAA+BsC,GAAe,EAC5D,OAAQR,IAAMC,cAAcC,WAAU,KAAM7B,EAAKuB,IAAI8B,IAAU,MAC3D,MAAMC,EAAE,UAAGD,EAAOC,UAAV,QAAgB,GACxB,OAAQ3B,IAAMC,cAAc,MAAO,CAAE2B,IAAKD,EAAIxB,UAAW,wDACrDH,IAAMC,cAAc,QAAS,CAAE0B,GAAIA,EAAIxB,UAAW,0CAA2C0B,QAAS3D,EAAgB4D,SAASH,GAAKpB,KAAMA,EAAMwB,KAAM,WAAYhB,MAAOY,EAAInB,SAAUA,IACvLR,IAAMC,cAAc,QAAS,CAAEE,UAAW,aAAc6B,QAASL,GAAMD,EAAOnB","file":"partner-items-listing-filter-a0db9e50f7052403f6ec.js","sourcesContent":["import queryString from 'query-string';\r\nimport React, { Fragment, useState, useEffect, } from 'react';\r\nimport { NumberParam, useQueryParam, withDefault, ArrayParam } from 'use-query-params';\r\nimport Checkbox from '../../checkbox/Checkbox';\r\nconst PartnerItemsListingFilter = ({ partnerId, }) => {\r\n const [selectedPage = 1, onSelectPage] = useQueryParam('page', withDefault(NumberParam, 1));\r\n const [selectedFilters, onSelectFilters] = useQueryParam('topics', withDefault(ArrayParam, []));\r\n const [data, setData] = useState(null);\r\n // Serialise for comparison check.\r\n const selectedFilterJson = JSON.stringify(selectedFilters);\r\n useEffect(() => {\r\n getData();\r\n async function getData() {\r\n const query = {\r\n page: selectedPage,\r\n topics: selectedFilters && [...selectedFilters],\r\n };\r\n // Use partner projects for tags list because all items are bound to them\r\n const res = await fetch(`/api/partnerproject/${partnerId}/load/?${queryString.stringify(query)}`);\r\n if (!res.ok) {\r\n return;\r\n }\r\n const resData = (await res.json());\r\n setData(resData);\r\n }\r\n }, [selectedFilterJson, selectedPage]);\r\n if (!data) {\r\n return null;\r\n }\r\n const filterPopulated = filterIsPopulated(data.filters);\r\n return (React.createElement(Fragment, null, filterPopulated ? (React.createElement(\"div\", { className: `standard-banner standard-banner--sub site-wide` },\r\n React.createElement(\"div\", { className: `grid-container grid-container--six` },\r\n React.createElement(\"div\", { className: \"grid-column form-orange\" }, filterPopulated && data.filters && renderFilter(\"topics\", data?.filters.topics))))) : null));\r\n function renderFilters(obj) {\r\n const keys = Object.keys(obj);\r\n return keys.map(filterKey => {\r\n const filterObj = data?.filters.topics;\r\n if (!filterObj) {\r\n return null;\r\n }\r\n return renderFilter(filterKey, filterObj);\r\n });\r\n }\r\n function filterIsPopulated(obj) {\r\n const keys = Object.keys(obj);\r\n let length = 0;\r\n keys.map(filterKey => {\r\n if (data?.filters.topics) {\r\n length = data?.filters.topics.filters.length;\r\n }\r\n });\r\n return length > 0;\r\n }\r\n function renderFilter(filterKey, filterObj) {\r\n return (React.createElement(Fragment, null,\r\n React.createElement(\"div\", { className: \"checkboxes checkboxes--horizontal\" },\r\n React.createElement(Checkbox, { data: filterObj.filters, name: filterKey, selectedFilters: selectedFilters, onChange: (event) => {\r\n if (event.target instanceof HTMLInputElement) {\r\n const currentItems = new Set(selectedFilters);\r\n if (currentItems.has(event.target.value)) {\r\n currentItems.delete(event.target.value);\r\n }\r\n else {\r\n currentItems.add(event.target.value);\r\n }\r\n onSelectFilters([...currentItems], 'pushIn');\r\n onSelectPage(1, 'pushIn');\r\n }\r\n } }))));\r\n }\r\n};\r\nexport default PartnerItemsListingFilter;\r\n","import React from 'react';\r\nimport { globalHistory, Router } from '@reach/router';\r\nimport { QueryParamProvider } from 'use-query-params';\r\nimport PartnerItemsListingFilter from './PartnerItemsListingFilter';\r\nimport { useHabitat } from '@react/shared/HabitatContext';\r\nconst PartnerItemsListingFilterRoot = () => {\r\n const { partnerId } = useHabitat();\r\n return (React.createElement(QueryParamProvider, { reachHistory: globalHistory },\r\n React.createElement(Router, { primary: false },\r\n React.createElement(PartnerItemsListingFilter, { partnerId: partnerId, default: true }))));\r\n};\r\nexport default PartnerItemsListingFilterRoot;\r\n","import React, { Fragment } from 'react';\r\nconst Checkbox = ({ data, name, selectedFilters, onChange }) => {\r\n return (React.createElement(Fragment, null, data.map(option => {\r\n const id = option.id ?? '';\r\n return (React.createElement(\"div\", { key: id, className: \"form-input-container form-input-container--clickable\" },\r\n React.createElement(\"input\", { id: id, className: \"form-clickable form-clickable--checkbox\", checked: selectedFilters.includes(id), name: name, type: \"checkbox\", value: id, onChange: onChange }),\r\n React.createElement(\"label\", { className: \"form-label\", htmlFor: id }, option.name)));\r\n })));\r\n};\r\nexport default Checkbox;\r\n"],"sourceRoot":""}