{"version":3,"sources":["webpack://@elegantstack/gatsby-starter-flexiblog-education/../node_modules/dedupe/index.js","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/blog/gatsby-blog-core/src/templates/collection.category.js","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/blog/gatsby-blog-pages/src/containers/Collection.jsx","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/CardList/CardList.Slider.Styles.js","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/CardList/CardList.Slider.jsx","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/CardList/CardList.jsx","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/utils/reduceArray.js","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/PageTitle/PageTitle.jsx","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/utils/normalizeSlug.js","webpack://@elegantstack/gatsby-starter-flexiblog-education/../packages/flow-ui/flow-ui-components/src/Pagination/Pagination.jsx"],"names":["module","exports","client","hasher","JSON","stringify","clone","lookup","i","length","elem","hashed","push","Collection","data","posts","collectionInfo","props","Seo","title","name","Divider","effectProps","effect","PageTitle","header","subheader","running","description","totalCount","nodes","CardList","variant","columns","omitCategory","pageContext","collectionType","Pagination","pageInfo","slide","width","transition","opacity","transform","transformOrigin","left","fade","display","alignItems","controlBottom","top","bottom","ml","textAlign","verticalAlign","controlCenter","right","controlOver","p","bg","Slider","loadable","CardListSlider","React","ref","slidesToScroll","smoothAutoScroll","autoPlay","autoplaySpeed","dots","arrows","centerMode","centerPadding","controlPosition","beforeChange","children","context","useThemeUI","animationSettings","autoplay","cssEase","mobileSettings","swipeToSlide","responsiveSettings","theme","breakpoints","map","breakpoint","index","rSlidesToShow","rSlidesToScroll","parseInt","settings","slidesToShow","speed","infinite","responsive","css","styles","prevArrow","sx","nextArrow","loadableFallback","slice","fallback","defaultProps","rows","withTitleLink","limit","skip","distinct","slider","aside","asNavFor","loading","rest","reducedNodes","array","newArray","dedupe","node","id","reduceArray","titleLink","category","slug","sectionKey","hashCode","join","cardListVariant","buildResponsiveVariant","changeSlide","current","slickPause","slickGoTo","cards","Card","key","onMouseOver","onFocus","undefined","Section","count","fontSize","fontWeight","color","runninghead","mb","as","replace","wrapper","justifyContent","borderRadius","maxWidth","mx","item","number","py","button","minWidth","currentPage","pageCount","hasPreviousPage","hasNextPage","basePath","prefixPath","normalizeSlug","pagingPath","prevLink","nextLink","Link","to"],"mappings":"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","file":"component---packages-blog-gatsby-blog-core-src-templates-collection-category-js-1bad1a4c20fa58075f81.js","sourcesContent":["'use strict';\n\nfunction dedupe(client, hasher) {\n hasher = hasher || JSON.stringify;\n var clone = [];\n var lookup = {};\n\n for (var i = 0; i < client.length; i++) {\n var elem = client[i];\n var hashed = hasher(elem);\n\n if (!lookup[hashed]) {\n clone.push(elem);\n lookup[hashed] = true;\n }\n }\n\n return clone;\n}\n\nmodule.exports = dedupe;","import { graphql } from 'gatsby'\nimport Collection from '../containers/Collection'\n\nexport default Collection\n\nexport const pageQuery = graphql`\n query allArticleByCategoryQuery($skip: Int!, $limit: Int!, $slug: String!) {\n collectionInfo: articleCategory(slug: { eq: $slug }) {\n id\n name\n slug\n description\n }\n\n posts: allArticle(\n filter: {\n private: { ne: true }\n draft: {ne: true}\n category: { slug: { eq: $slug } }\n }\n sort: { fields: [date], order: DESC }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n ...ArticlePreview\n ...ArticleThumbnailRegular\n }\n ...ArticlePagination\n }\n }\n`\n","import React from 'react'\nimport { Layout, Stack, Main, PreFooter } from '@layout'\nimport PageTitle from '@components/PageTitle'\nimport Pagination from '@components/Pagination'\nimport CardList from '@components/CardList'\nimport Divider from '@components/Divider'\nimport Seo from '@widgets/Seo'\n\nconst PageCollection = ({ data: { posts, collectionInfo }, ...props }) => (\n \n \n \n \n \n \n \n \n
\n {posts.nodes && (\n \n )}\n
\n
\n \n \n \n \n
\n)\n\nexport default PageCollection\n","export default {\n slide: {\n width: `full`,\n '.slick-slide': {\n transition: `all 600ms ease`,\n opacity: 1,\n transform: [null, `scale(1)`],\n transformOrigin: `left`\n },\n '.slick-slide.slick-active + :not(.slick-active)': {\n opacity: [null, 0],\n transform: [null, `scale(0.7)`]\n },\n '.slick-track': {\n left: `0 !important`\n }\n },\n fade: {\n width: `full`,\n '.slick-slide:not(.slick-active)': {\n left: `-9999px !important` //fix overlapping slides in fade mode\n },\n '.slick-track': {\n display: `flex`,\n alignItems: `center`,\n left: `0 !important`\n }\n },\n controlBottom: {\n '.slick-prev, .slick-next': {\n top: `auto`,\n bottom: 3,\n left: `50%`,\n transform: `translate(-125%, 0)`\n },\n '.slick-next': {\n ml: 5\n },\n '.slick-dots': {\n textAlign: `center`,\n width: [`full`, `auto`],\n top: [`100%`, `auto`],\n bottom: 0\n },\n '.slick-dots li': {\n verticalAlign: `middle`\n }\n },\n controlCenter: {\n '.slick-prev, .slick-next': {\n top: `50%`,\n left: `50%`,\n transform: `translate(-125%, -50%)`\n },\n '.slick-next': {\n ml: 5\n },\n '.slick-dots': {\n textAlign: `center`,\n width: [`full`, `auto`],\n top: [`100%`, `auto`],\n bottom: 4,\n right: 4\n }\n },\n controlOver: {\n width: `full`,\n '.slick-prev, .slick-next': {\n top: `auto`,\n bottom: [-2, 3],\n left: [4, 6]\n },\n '.slick-next': {\n ml: 5\n },\n '.slick-dots': {\n textAlign: `center`,\n width: `auto`,\n top: [`auto`, 5],\n bottom: [3, `auto`],\n left: [2, 4],\n p: 0,\n ml: 3\n },\n '.slick-dots li': {\n display: [`inline-block`, `block`]\n },\n '.slick-dots li.slick-active button': {\n bg: `alpha`\n }\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { IconButton, css, useThemeUI } from 'theme-ui'\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa'\nimport 'slick-carousel/slick/slick.css'\nimport './CardList.Slider.css'\nimport styles from './CardList.Slider.Styles'\n\nimport loadable from '@loadable/component'\nconst Slider = loadable(() =>\n import(\n /* webpackChunkName: 'react-slick' */ /* webpackPrefetch: true */ 'react-slick'\n )\n)\n\nconst CardListSlider = React.forwardRef((props, ref) => {\n const {\n columns,\n slidesToScroll,\n smoothAutoScroll,\n autoPlay,\n autoplaySpeed,\n fade,\n dots,\n arrows,\n centerMode,\n centerPadding,\n controlPosition,\n beforeChange,\n children\n } = props\n\n const context = useThemeUI()\n\n const animationSettings = {\n slidesToScroll: 1,\n autoplay: true,\n cssEase: 'linear'\n }\n\n const mobileSettings = {\n centerMode: fade ? false : true,\n centerPadding: '40px',\n swipeToSlide: true,\n arrows: false,\n dots: dots && fade ? true : false\n }\n\n const responsiveSettings = context.theme.breakpoints.map(\n (breakpoint, index) => {\n const rSlidesToShow =\n columns[index >= columns.length ? columns.length - 1 : index]\n const rSlidesToScroll =\n slidesToScroll[\n index >= slidesToScroll.length ? slidesToScroll.length - 1 : index\n ]\n return {\n breakpoint: parseInt(breakpoint),\n settings: {\n slidesToShow: rSlidesToShow,\n slidesToScroll: rSlidesToScroll,\n ...(index === 0 ? mobileSettings : {})\n }\n }\n }\n )\n let settings = {\n ref,\n beforeChange,\n slidesToShow: columns[columns.length - 1],\n slidesToScroll: slidesToScroll[slidesToScroll.length - 1],\n speed: 800,\n dots,\n arrows,\n centerMode,\n centerPadding,\n infinite: true,\n cssEase: fade ? 'ease-out' : 'cubic-bezier(0.23, 1, 0.32, 1)',\n fade,\n responsive: responsiveSettings,\n css: css({\n ...(fade ? styles.fade : styles.slide),\n ...(controlPosition === 'bottom' && styles.controlBottom),\n ...(controlPosition === 'center' && styles.controlCenter),\n ...(controlPosition === 'over' && styles.controlOver)\n }),\n prevArrow: (\n \n \n \n ),\n nextArrow: (\n \n \n \n )\n }\n\n if (smoothAutoScroll) {\n settings = {\n ...settings,\n ...animationSettings,\n speed: 10000,\n autoplaySpeed: 0,\n arrows: false,\n dots: false\n }\n }\n\n if (!smoothAutoScroll && autoPlay) {\n settings = {\n ...settings,\n ...animationSettings,\n speed: 300,\n autoplaySpeed\n }\n }\n\n const loadableFallback = children.slice(0, columns[columns.length - 1])\n\n return (\n \n {children}\n \n )\n})\n\nexport default CardListSlider\n\nCardListSlider.defaultProps = {\n fade: false,\n dots: true,\n arrows: true,\n centerMode: false,\n centerPadding: '50px',\n autoPlay: false,\n autoplaySpeed: 3000,\n smoothAutoScroll: false,\n slidesToScroll: [1],\n rows: 1,\n controlPosition: 'sides'\n}\n\nCardListSlider.propTypes = {\n fade: PropTypes.bool,\n dots: PropTypes.bool,\n arrows: PropTypes.bool,\n centerMode: PropTypes.bool,\n centerPadding: PropTypes.string,\n autoPlay: PropTypes.bool,\n autoplaySpeed: PropTypes.number,\n smoothAutoScroll: PropTypes.bool,\n columns: PropTypes.arrayOf(PropTypes.number),\n slidesToScroll: PropTypes.arrayOf(PropTypes.number),\n controlPosition: PropTypes.oneOf(['bottom', 'over', 'sides', 'center'])\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Box } from 'theme-ui'\nimport buildResponsiveVariant from '@components/utils/buildResponsiveVariant'\nimport hashCode from '@components/utils/hashCode'\nimport reduceArray from '@components/utils/reduceArray'\nimport Section from '@components/Section'\nimport CardListSlider from './CardList.Slider'\nimport Card from '@components/Card'\n\nconst SLIDER_VARIANT_GROUP = 'lists.cards.slider'\nconst FIXED_VARIANT_GROUP = 'lists.cards.fixed'\n\nconst CardList = React.forwardRef((props, ref) => {\n const {\n nodes,\n variant,\n title,\n withTitleLink,\n limit,\n skip,\n distinct,\n slider,\n aside,\n asNavFor,\n loading,\n ...rest\n } = props\n\n const reducedNodes = reduceArray(nodes, { distinct, limit, skip })\n if (!reducedNodes || !reducedNodes.length) return null\n\n //Section title link for viewing more posts from same category\n const titleLink = withTitleLink\n ? reducedNodes[0].category && reducedNodes[0].category.slug\n : ''\n\n //Unique key for section\n const sectionKey =\n title && `${hashCode(reducedNodes.map(node => node.id).join())}`\n\n //Build responsive variant for card list\n const cardListVariant = buildResponsiveVariant(\n slider ? SLIDER_VARIANT_GROUP : FIXED_VARIANT_GROUP,\n variant\n )\n\n const changeSlide = index => {\n if (asNavFor && asNavFor.current) {\n asNavFor.current.slickPause()\n asNavFor.current.slickGoTo(index)\n }\n }\n\n //Array of cards\n const cards = reducedNodes.map((node, index) => (\n changeSlide(index)}\n onFocus={() => changeSlide(index)}\n //In sliders with fade effect apply loading to the first card only\n loading={props.fade ? (index === 0 ? loading : undefined) : loading}\n {...node}\n {...rest}\n />\n ))\n\n //Cards List (Fixed or Slider)\n const CardList = () => (\n \n {slider ? (\n changeSlide(index)}\n {...rest}\n >\n {cards}\n \n ) : (\n cards\n )}\n \n )\n\n return title ? (\n
\n \n
\n ) : (\n \n )\n})\n\nexport default CardList\n\nCardList.defaultProps = {\n variant: 'vertical',\n columns: [1],\n aside: false\n}\n\nCardList.propTypes = {\n variant: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.oneOf([\n 'horizontal',\n 'horizontal-aside',\n 'horizontal-md',\n 'horizontal-lg',\n 'horizontal-cover',\n 'horizontal-cover-hero',\n 'horizontal-cover-wide',\n 'horizontal-hero',\n 'vertical-cover',\n 'vertical',\n 'search'\n ])\n ]),\n loading: PropTypes.oneOf(['lazy', 'auto', 'eager']),\n columns: PropTypes.array,\n title: PropTypes.string,\n withTitleLink: PropTypes.bool,\n nodes: PropTypes.array,\n distinct: PropTypes.bool,\n limit: PropTypes.number,\n skip: PropTypes.number,\n aside: PropTypes.bool\n}\n","import dedupe from 'dedupe'\n\nexport default (array, { limit, skip, distinct }) => {\n if (!array) return null\n\n if (!limit && !skip && !distinct) return array\n\n let newArray = array\n\n //Remove duplicate array\n if (distinct) {\n newArray = dedupe(newArray, node => node.id)\n }\n\n // Skip specified number of first elements\n if (skip) {\n newArray = newArray.slice(skip)\n }\n\n //Limit total number of array\n if (limit) {\n newArray = newArray.slice(0, limit)\n }\n\n return newArray\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Heading, Text, Badge } from 'theme-ui'\n\nconst styles = {\n count: {\n fontSize: 4\n },\n subheader: {\n fontWeight: `body`,\n color: `omegaDark`\n },\n runninghead: {\n fontWeight: `body`,\n color: `omegaDark`,\n mb: 0\n }\n}\n\nconst PageTitle = ({ header, subheader, running, totalCount }) => {\n return (\n
\n \n {header}{' '}\n {totalCount && (\n \n {' '}\n {totalCount}\n \n )}\n \n {subheader && (\n \n {subheader}\n \n )}\n {running && (\n \n {running}\n \n )}\n
\n )\n}\n\nexport default PageTitle\n\nPageTitle.propTypes = {\n title: PropTypes.string,\n subheader: PropTypes.string,\n running: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n totalCount: PropTypes.number\n}\n","// normalize use of trailing slash\nexport default slug => slug.replace(/\\/*$/, `/`)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'gatsby'\nimport { Button, Flex, Box } from 'theme-ui'\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa'\nimport normalizeSlug from '@components/utils/normalizeSlug'\n\nconst pagingParam = 'page'\n\nconst styles = {\n wrapper: {\n justifyContent: `space-between`,\n alignItems: `center`,\n textAlign: `center`,\n borderRadius: `full`,\n bg: `contentBg`,\n maxWidth: [`none`, 500],\n mx: `auto`,\n p: 1\n },\n item: {\n width: `1/3`\n },\n number: {\n py: 2\n },\n button: {\n minWidth: `full`\n }\n}\n\nconst Pagination = ({\n currentPage,\n pageCount,\n hasPreviousPage,\n hasNextPage,\n basePath = '',\n slug = ''\n}) => {\n if (!hasNextPage && !hasPreviousPage) return ''\n let prefixPath = normalizeSlug(basePath + slug)\n let pagingPath = normalizeSlug(prefixPath + pagingParam)\n\n const prevLink =\n currentPage >= 3 ? `${pagingPath}${currentPage - 1}` : prefixPath\n const nextLink = `${pagingPath}${currentPage + 1}`\n\n return (\n \n \n {hasPreviousPage && (\n \n )}\n \n \n Page {currentPage} of {pageCount}\n \n \n {hasNextPage && (\n \n )}\n \n \n )\n}\n\nexport default Pagination\n\nPagination.propTypes = {\n currentPage: PropTypes.number,\n pageCount: PropTypes.number,\n hasPreviousPage: PropTypes.bool,\n hasNextPage: PropTypes.bool,\n slug: PropTypes.string,\n pagingParam: PropTypes.string\n}\n"],"sourceRoot":""}