{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/modules/pressReleasesListing/Card.tsx","webpack://@verndale/toolkit/./src/js/modules/pressReleasesListing/index.tsx"],"names":["url","date","heading","description","React","endpoint","initialButtonLabel","itemsPerPage","page","setPage","showButton","setShowButton","buttonLabel","setButtonLabel","items","setItems","fetchResults","response","data","itemsLeft","buttonCount","item","Card","__spreadValues"],"mappings":"oKAsBA,QAb+C,CAAC,CAC9C,IAAAA,EACA,KAAAC,EACA,QAAAC,EACA,YAAAC,CACF,IACEC,gBAAC,KAAE,KAAMJ,EAAK,UAAU,cAAc,EACpCI,gBAAC,KAAE,UAAU,oBAAoB,EAAEH,CAAK,EACxCG,gBAAC,MAAG,UAAU,uBAAuB,EAAEF,CAAQ,EAC9CC,GAAeC,gBAAC,KAAE,UAAU,2BAA2B,EAAED,CAAY,CACxE,E,6UCuDF,QApDkE,CAAC,CACjE,SAAAE,EACA,YAAaC,EACb,aAAAC,EAAe,IACjB,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIL,WAAe,CAAC,EAClC,CAACM,EAAYC,CAAa,EAAIP,WAAwB,EAAK,EAC3D,CAACQ,EAAaC,CAAc,EAAIT,WAAuB,EAAE,EACzD,CAACU,EAAOC,CAAQ,EAAIX,WAAmC,CAAC,CAAC,EAEzDY,EAAeZ,cAAkB,IAAM,CAC3C,MAAM,GAAGC,UAAiBG,kBAAqBD,GAAc,EAC1D,KAAKU,GAAYA,EAAS,KAAK,CAAC,EAChC,KAAMC,GAA2B,CAChCH,EAAS,CAAC,GAAGD,EAAO,GAAGI,EAAK,KAAK,CAAC,EAClC,MAAMC,EAAYD,EAAK,WAAaV,EAAO,SAASD,EAAc,EAAE,EAC9Da,EACJD,EAAY,SAASZ,EAAc,EAAE,EAAIA,EAAeY,EAC1DR,EAAcQ,EAAY,CAAC,EAE3BN,EACEP,EAAmB,QAAQ,UAAWc,EAAY,SAAS,CAAC,CAC9D,CACF,CAAC,CACL,EAAG,CAACf,EAAUG,CAAI,CAAC,EAEnB,OAAAJ,YAAgB,IAAM,CACpBY,EAAa,CACf,EAAG,CAACR,CAAI,CAAC,EAGPJ,2BAAA,KACEA,gBAAC,MAAG,UAAU,8BAA8B,EACzCU,EAAM,IAAIO,GACTjB,gBAAC,MAAG,IAAKiB,EAAK,EAAE,EACdjB,gBAACkB,EAAAC,EAAA,GAASF,EAAM,CAClB,CACD,CACH,EACCX,GAAcE,GACbR,gBAAC,UACC,KAAK,SACL,UAAU,+CACV,QAAS,IAAMK,EAAQD,EAAO,CAAC,CAAC,EAEhCJ,gBAAC,YAAMQ,CAAY,CACrB,CAEJ,CAEJ,C","file":"scripts/5160.2f56e73de78fb9eeef43.js","sourcesContent":["import * as React from 'react';\n\ntype PressReleasesCardProps = {\n  url: string;\n  date: string;\n  heading: string;\n  description?: string;\n};\n\nconst Card: React.FC<PressReleasesCardProps> = ({\n  url,\n  date,\n  heading,\n  description\n}) => (\n  <a href={url} className=\"release-card\">\n    <p className=\"release-card__date\">{date}</p>\n    <h3 className=\"release-card__heading\">{heading}</h3>\n    {description && <p className=\"release-card__description\">{description}</p>}\n  </a>\n);\n\nexport default Card;\n","import * as React from 'react';\nimport Card from './Card';\n\ntype PressReleasesListingProps = {\n  endpoint: string;\n  itemsPerPage?: string;\n  buttonLabel: string;\n};\n\ntype PressReleaseItem = {\n  id: string;\n  url: string;\n  heading: string;\n  date: string;\n  description?: string;\n};\n\ntype EndpointResponse = {\n  totalItems: number;\n  items: PressReleaseItem[];\n};\n\nconst PressReleasesListing: React.FC<PressReleasesListingProps> = ({\n  endpoint,\n  buttonLabel: initialButtonLabel,\n  itemsPerPage = '12'\n}) => {\n  const [page, setPage] = React.useState(1);\n  const [showButton, setShowButton] = React.useState<boolean>(false);\n  const [buttonLabel, setButtonLabel] = React.useState<string>('');\n  const [items, setItems] = React.useState<PressReleaseItem[]>([]);\n\n  const fetchResults = React.useCallback(() => {\n    fetch(`${endpoint}?page=${page}&itemsPerPage=${itemsPerPage}`)\n      .then(response => response.json())\n      .then((data: EndpointResponse) => {\n        setItems([...items, ...data.items]);\n        const itemsLeft = data.totalItems - page * parseInt(itemsPerPage, 10);\n        const buttonCount =\n          itemsLeft > parseInt(itemsPerPage, 10) ? itemsPerPage : itemsLeft;\n        setShowButton(itemsLeft > 0);\n\n        setButtonLabel(\n          initialButtonLabel.replace('[count]', buttonCount.toString())\n        );\n      });\n  }, [endpoint, page]);\n\n  React.useEffect(() => {\n    fetchResults();\n  }, [page]);\n\n  return (\n    <>\n      <ul className=\"press-releases-listing__list\">\n        {items.map(item => (\n          <li key={item.id}>\n            <Card {...item} />\n          </li>\n        ))}\n      </ul>\n      {showButton && buttonLabel && (\n        <button\n          type=\"button\"\n          className=\"btn btn--primary press-releases-listing__btn\"\n          onClick={() => setPage(page + 1)}\n        >\n          <span>{buttonLabel}</span>\n        </button>\n      )}\n    </>\n  );\n};\n\nexport default PressReleasesListing;\n"],"sourceRoot":""}