{"version":3,"sources":["webpack:///./js/react/Filters/Filters.tsx","webpack:///./js/react/Card/Card.tsx","webpack:///./js/react/Resource/ResourceListing.tsx","webpack:///./js/react/Resource/ResourceListingRoot.tsx"],"names":["Filters","options","setOptions","filters","title","apiRequestFilters","isAllDisplayed","length","viewAllClassName","classNames","filters__option","React","createElement","className","htmlFor","id","checked","type","value","onChange","map","filter","index","isSelected","undefined","includes","optionClassName","key","event","addOption","currentItems","Set","has","target","add","CardLayout","Card","item","cardClassNames","backgroundColour","resourceType","Video","Tool","href","url","isTrending","src","imageUrl","role","category","footNote","ResourceListing","useState","resourceData","setResourceData","useQueryParam","withDefault","ArrayParam","resources","setResource","filterData","setFilterData","nodeid","useHabitat","useEffect","fetch","headers","accept","res","ok","json","response","getFilters","params","nodeId","queryString","stringify","getResources","Fragment","label","apiRequestName","ResourceListingRoot","Router","QueryParamProvider","ReactRouterRoute","Route"],"mappings":"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","file":"20-33d1c81a3a17c4d9d644.js","sourcesContent":["import classNames from 'classnames';\r\nimport React from 'react';\r\nconst Filters = ({ options, setOptions, filters, title, apiRequestFilters, }) => {\r\n const isAllDisplayed = (options?.length ?? 0) === 0;\r\n const viewAllClassName = classNames({\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n filters__option: true,\r\n 'filters__option--selected': isAllDisplayed,\r\n });\r\n return (React.createElement(\"div\", { className: \"filters\" },\r\n React.createElement(\"div\", { className: \"filters__container\" },\r\n React.createElement(\"div\", { className: \"filters__title\" }, title),\r\n React.createElement(\"div\", { className: \"filters__options\" },\r\n React.createElement(\"div\", { className: viewAllClassName },\r\n React.createElement(\"label\", { htmlFor: \"view-all\" },\r\n React.createElement(\"input\", { id: \"view-all\", checked: options.length === 0, type: \"checkbox\", value: 'View All', onChange: () => {\r\n setOptions([], 'pushIn');\r\n } }),\r\n \"View All\")),\r\n filters &&\r\n filters.map((filter, index) => {\r\n const isSelected = apiRequestFilters !== undefined\r\n ? options.includes(apiRequestFilters[index])\r\n : options.includes(filter);\r\n const optionClassName = classNames({\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n filters__option: true,\r\n 'filters__option--selected': isSelected,\r\n });\r\n return (React.createElement(\"div\", { className: optionClassName, key: filter },\r\n React.createElement(\"label\", { htmlFor: filter },\r\n React.createElement(\"input\", { id: filter, checked: isSelected, type: \"checkbox\", value: apiRequestFilters !== undefined ? apiRequestFilters[index] : filter, onChange: (event) => {\r\n let addOption = true;\r\n let currentItems = new Set(options);\r\n if (currentItems.has(event.target.value)) {\r\n addOption = false;\r\n }\r\n currentItems = new Set([]);\r\n if (addOption) {\r\n currentItems.add(event.target.value);\r\n }\r\n setOptions([...currentItems], 'pushIn');\r\n } }),\r\n filter)));\r\n })))));\r\n};\r\nexport default Filters;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nvar CardLayout;\r\n(function (CardLayout) {\r\n CardLayout[\"Video\"] = \"Video\";\r\n CardLayout[\"Tool\"] = \"Tool\";\r\n})(CardLayout || (CardLayout = {}));\r\nconst Card = ({ item }) => {\r\n const cardClassNames = classNames({\r\n [`card card--${item.backgroundColour}`]: true,\r\n 'card--video': item.resourceType === CardLayout.Video,\r\n 'card--tool': item.resourceType === CardLayout.Tool,\r\n });\r\n return (React.createElement(\"a\", { className: cardClassNames, href: item.url },\r\n React.createElement(\"div\", { className: \"card__inner\" },\r\n React.createElement(\"div\", { className: \"card__header\" },\r\n React.createElement(\"div\", { className: \"card__tags\" },\r\n React.createElement(\"small\", { className: \"card__tag-type\" }, item.resourceType),\r\n item.isTrending ? (React.createElement(\"small\", { className: \"card__tag-desc\" },\r\n React.createElement(\"img\", { src: \"/sitefiles/src/img/icons/icon-trending-arrow.svg\" }),\r\n \" Trending\")) : null),\r\n item.resourceType !== CardLayout.Tool && (React.createElement(\"img\", { className: \"card__image\", src: item.imageUrl, role: \"presentation\" }))),\r\n React.createElement(\"div\", { className: \"card__content\" },\r\n React.createElement(\"div\", { className: \"card__category-title\" }, item.category),\r\n React.createElement(\"div\", { className: \"card__title\" },\r\n item.resourceType === CardLayout.Video && (React.createElement(\"img\", { className: \"card__video-icon\", src: \"/sitefiles/src/img/icons/icon-video-circle.svg\" })),\r\n item.title),\r\n React.createElement(\"small\", { className: \"card__minutes\" }, item.footNote)))));\r\n};\r\nexport default Card;\r\n","import Filters from '@react/Filters/Filters';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { ArrayParam, useQueryParam, withDefault } from 'use-query-params';\r\nimport Card from '../Card/Card';\r\nimport queryString from 'query-string';\r\nimport { useHabitat } from '../shared/HabitatContext';\r\nconst ResourceListing = () => {\r\n const [resourceData, setResourceData] = useState(null);\r\n const [resources, setResource] = useQueryParam('resourceType', withDefault(ArrayParam, []));\r\n const [filterData, setFilterData] = useState(null);\r\n const { nodeid } = useHabitat();\r\n useEffect(() => {\r\n getFilters();\r\n async function getFilters() {\r\n const res = await fetch('/umbraco/api/ResourceApi/getresourcefilters', {\r\n headers: { accept: 'application/json' },\r\n });\r\n if (!res.ok) {\r\n return;\r\n }\r\n const response = (await res.json());\r\n setFilterData(response);\r\n }\r\n }, []);\r\n useEffect(() => {\r\n getResources();\r\n async function getResources() {\r\n let params = null;\r\n const nodeId = nodeid;\r\n params = {\r\n nodeId,\r\n type: [...resources],\r\n };\r\n let url = '/umbraco/api/ResourceApi/getresources';\r\n if (params !== null) {\r\n url += '?';\r\n url += queryString.stringify({ ...params });\r\n }\r\n const res = await fetch(url, {\r\n headers: { accept: 'application/json' },\r\n });\r\n if (!res.ok) {\r\n return;\r\n }\r\n const response = (await res.json());\r\n setResourceData(response);\r\n }\r\n }, [resources]);\r\n return (React.createElement(Fragment, null,\r\n filterData !== null && filterData.length > 0 && (React.createElement(Filters, { filters: filterData.map(filter => filter.label), setOptions: setResource, options: resources, title: \"Choose resource type:\", apiRequestFilters: filterData.map(filter => filter.apiRequestName) })),\r\n resourceData !== null && (React.createElement(\"div\", { className: \"grid-container grid-container--learn grid-container--third-listing\" }, resourceData.map(item => (React.createElement(\"div\", { className: \"grid-column\", key: item.url },\r\n React.createElement(Card, { item: item }))))))));\r\n};\r\nexport default ResourceListing;\r\n","import React, { Fragment } from 'react';\r\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\r\nimport { QueryParamProvider } from 'use-query-params';\r\nimport ResourceListing from './ResourceListing';\r\nconst ResourceListingRoot = () => (React.createElement(Fragment, null,\r\n React.createElement(Router, null,\r\n React.createElement(QueryParamProvider, { ReactRouterRoute: Route },\r\n React.createElement(ResourceListing, null)))));\r\nexport default ResourceListingRoot;\r\n"],"sourceRoot":""}