{"version":3,"sources":["webpack:///./src/templates/ResearchingPageTemplate/ResearchingPageTemplate.js","webpack:///./node_modules/ramda/es/internal/_clone.js","webpack:///./node_modules/ramda/es/internal/_cloneRegExp.js","webpack:///./node_modules/ramda/es/internal/_xreduceBy.js","webpack:///./node_modules/ramda/es/reduceBy.js","webpack:///./node_modules/ramda/es/groupBy.js","webpack:///./src/components/Layout/LayoutFullWidth.js","webpack:///./src/templates/ResearchingPageTemplate/ResearchingPageTemplate.module.css"],"names":["groupByYear","pipe","groupBy","publication","publishedDate","format","Date","ResearchingPageTemplate","data","page","publications","edges","intro","frontmatter","_publications","flattenNodes","publicationsByYear","breadcrumbs","label","thickness","reverse","Object","keys","map","year","key","className","styles","yearGroup","tabsHeader","type","tag","yearLabel","slug","to","publicationTitle","title","ResearchingPage","header","pageQuery","_clone","value","refFrom","refTo","deep","pattern","copy","copiedValue","len","length","idx","valueOf","RegExp","source","global","ignoreCase","multiline","sticky","unicode","XReduceBy","valueFn","valueAcc","keyFn","xf","this","inputs","prototype","_xfBase","init","result","_has","input","_curryN","_dispatchable","list","_reduce","acc","elt","_curry2","_checkForMethod","item","push","LayoutFullWidth","children","useSiteMetadata","description","headerProps","image","backgroundUrl","module","exports"],"mappings":"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","file":"component---src-templates-researching-page-template-researching-page-template-js-c0f7b029b6c3144b7cf0.js","sourcesContent":["/* eslint-disable react/prop-types */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { graphql } from 'gatsby'\nimport { pipe, groupBy, reverse } from 'ramda'\nimport { MDXProvider } from '@mdx-js/react'\n\nimport LayoutFullWidth from '../../components/Layout/LayoutFullWidth'\nimport headerProps from '../../components/propTypes/headerProps'\nimport {\n Typography,\n Divider,\n AggregatorTemplate,\n TransitionLink,\n} from '../../components'\nimport styles from './ResearchingPageTemplate.module.css'\nimport { flattenNodes } from '../../utils'\nimport format from 'date-fns/format'\n\nconst groupByYear = pipe(\n groupBy(\n publication =>\n publication.publishedDate &&\n format(new Date(publication.publishedDate), 'yyyy'),\n ),\n)\n\nexport const ResearchingPageTemplate = ({ data }) => {\n const {\n page,\n publications: { edges: publications },\n } = data\n const { frontmatter } = page\n const { intro } = frontmatter\n\n const _publications = flattenNodes(publications)\n const publicationsByYear = groupByYear(_publications)\n\n return (\n \n \n \n\n {reverse(Object.keys(publicationsByYear)).map(year => {\n {\n /* const publicationsByMonth = groupBy(publication =>\n format(new Date(publication.publishedDate), 'MMM'),\n )(publicationsByYear[year])\n\n const months = eachMonthOfInterval({\n start: new Date(2019, 12, 1),\n end: new Date(2020, 11, 1),\n })\n\n const firstMonth = find(month => {\n const formattedDate = format(new Date(month), 'MMM')\n return publicationsByMonth[formattedDate] !== undefined\n })(months) */\n }\n\n return (\n
\n
\n \n {year}\n \n
\n {publicationsByYear[year].map(publication => (\n \n \n {publication.title}{' '}\n \n {format(\n new Date(publication.publishedDate),\n 'dd MMMM yyyy',\n )}\n \n \n \n ))}\n {/* \n
\n \n {year}\n \n\n \n {months.map(month => {\n const formattedMonth = format(new Date(month), 'MMM')\n return (\n publicationsByMonth[formattedMonth] && (\n \n {formattedMonth}\n \n )\n )\n })}\n \n
\n\n {months.map(month => {\n const formattedMonth = format(new Date(month), 'MMM')\n return (\n publicationsByMonth[formattedMonth] && (\n \n {pipe(\n sortBy(release =>\n format(new Date(release.publishedDate), 'dd'),\n ),\n reverse,\n )(publicationsByMonth[formattedMonth]).map(\n publication => {\n return (\n \n \n {publication.title}{' '}\n \n {format(\n new Date(publication.publishedDate),\n 'dd MMMM yyyy',\n )}\n \n \n \n )\n },\n )}\n \n )\n )\n })}\n
*/}\n
\n )\n })}\n \n
\n )\n}\n\nResearchingPageTemplate.propTypes = {}\n\nconst ResearchingPage = ({ data }) => {\n const {\n page: {\n frontmatter: { header },\n },\n } = data\n return (\n \n \n \n )\n}\n\nResearchingPage.propTypes = {\n page: PropTypes.shape({\n frontmatter: PropTypes.shape({\n header: headerProps,\n }),\n }),\n publications: PropTypes.arrayOf(\n PropTypes.shape({\n node: PropTypes.shape({\n frontmatter: PropTypes.shape({\n title: PropTypes.string,\n excerpt: PropTypes.string,\n publisher: PropTypes.string,\n publishedDate: PropTypes.string,\n }),\n }),\n }),\n ),\n}\n\nexport default ResearchingPage\n\nexport const pageQuery = graphql`\n query ResearchingPageTemplate($slug: String!) {\n page: mdx(fields: { slug: { eq: $slug } }) {\n frontmatter {\n ...headerFields\n ...introFields\n }\n }\n publications: allMdx(\n filter: {\n fields: { contentType: { eq: \"publications\" } }\n frontmatter: { publishedDate: { ne: \"\" } }\n }\n sort: { fields: frontmatter___publishedDate, order: DESC }\n ) {\n edges {\n node {\n id\n fields {\n slug\n }\n frontmatter {\n title\n publisher\n publishedDate\n excerpt\n }\n }\n }\n }\n }\n`\n","import _cloneRegExp from \"./_cloneRegExp.js\";\nimport type from \"../type.js\";\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Array} refFrom Array containing the source references\n * @param {Array} refTo Array containing the copied source references\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\n\nexport default function _clone(value, refFrom, refTo, deep) {\n var copy = function copy(copiedValue) {\n var len = refFrom.length;\n var idx = 0;\n\n while (idx < len) {\n if (value === refFrom[idx]) {\n return refTo[idx];\n }\n\n idx += 1;\n }\n\n refFrom[idx + 1] = value;\n refTo[idx + 1] = copiedValue;\n\n for (var key in value) {\n copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key];\n }\n\n return copiedValue;\n };\n\n switch (type(value)) {\n case 'Object':\n return copy({});\n\n case 'Array':\n return copy([]);\n\n case 'Date':\n return new Date(value.valueOf());\n\n case 'RegExp':\n return _cloneRegExp(value);\n\n default:\n return value;\n }\n}","import \"core-js/modules/es6.regexp.constructor\";\nexport default function _cloneRegExp(pattern) {\n return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : ''));\n}","import _curryN from \"./_curryN.js\";\nimport _has from \"./_has.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XReduceBy = /*#__PURE__*/function () {\n function XReduceBy(valueFn, valueAcc, keyFn, xf) {\n this.valueFn = valueFn;\n this.valueAcc = valueAcc;\n this.keyFn = keyFn;\n this.xf = xf;\n this.inputs = {};\n }\n\n XReduceBy.prototype['@@transducer/init'] = _xfBase.init;\n\n XReduceBy.prototype['@@transducer/result'] = function (result) {\n var key;\n\n for (key in this.inputs) {\n if (_has(key, this.inputs)) {\n result = this.xf['@@transducer/step'](result, this.inputs[key]);\n\n if (result['@@transducer/reduced']) {\n result = result['@@transducer/value'];\n break;\n }\n }\n }\n\n this.inputs = null;\n return this.xf['@@transducer/result'](result);\n };\n\n XReduceBy.prototype['@@transducer/step'] = function (result, input) {\n var key = this.keyFn(input);\n this.inputs[key] = this.inputs[key] || [key, this.valueAcc];\n this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);\n return result;\n };\n\n return XReduceBy;\n}();\n\nvar _xreduceBy = /*#__PURE__*/_curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) {\n return new XReduceBy(valueFn, valueAcc, keyFn, xf);\n});\n\nexport default _xreduceBy;","import _clone from \"./internal/_clone.js\";\nimport _curryN from \"./internal/_curryN.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _has from \"./internal/_has.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xreduceBy from \"./internal/_xreduceBy.js\";\n/**\n * Groups the elements of the list according to the result of calling\n * the String-returning function `keyFn` on each element and reduces the elements\n * of each group to a single value via the reducer function `valueFn`.\n *\n * This function is basically a more general [`groupBy`](#groupBy) function.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category List\n * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a}\n * @param {Function} valueFn The function that reduces the elements of each group to a single\n * value. Receives two values, accumulator for a particular group and the current element.\n * @param {*} acc The (initial) accumulator value for each group.\n * @param {Function} keyFn The function that maps the list's element into a key.\n * @param {Array} list The array to group.\n * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of\n * `valueFn` for elements which produced that key when passed to `keyFn`.\n * @see R.groupBy, R.reduce\n * @example\n *\n * const groupNames = (acc, {name}) => acc.concat(name)\n * const toGrade = ({score}) =>\n * score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A'\n *\n * var students = [\n * {name: 'Abby', score: 83},\n * {name: 'Bart', score: 62},\n * {name: 'Curt', score: 88},\n * {name: 'Dora', score: 92},\n * ]\n *\n * reduceBy(groupNames, [], toGrade, students)\n * //=> {\"A\": [\"Dora\"], \"B\": [\"Abby\", \"Curt\"], \"F\": [\"Bart\"]}\n */\n\nvar reduceBy = /*#__PURE__*/_curryN(4, [], /*#__PURE__*/_dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) {\n return _reduce(function (acc, elt) {\n var key = keyFn(elt);\n acc[key] = valueFn(_has(key, acc) ? acc[key] : _clone(valueAcc, [], [], false), elt);\n return acc;\n }, {}, list);\n}));\n\nexport default reduceBy;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport reduceBy from \"./reduceBy.js\";\n/**\n * Splits a list into sub-lists stored in an object, based on the result of\n * calling a String-returning function on each element, and grouping the\n * results according to values returned.\n *\n * Dispatches to the `groupBy` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> String) -> [a] -> {String: [a]}\n * @param {Function} fn Function :: a -> String\n * @param {Array} list The array to group\n * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements\n * that produced that key when passed to `fn`.\n * @see R.reduceBy, R.transduce\n * @example\n *\n * const byGrade = R.groupBy(function(student) {\n * const score = student.score;\n * return score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A';\n * });\n * const students = [{name: 'Abby', score: 84},\n * {name: 'Eddy', score: 58},\n * // ...\n * {name: 'Jack', score: 69}];\n * byGrade(students);\n * // {\n * // 'A': [{name: 'Dianne', score: 99}],\n * // 'B': [{name: 'Abby', score: 84}]\n * // // ...,\n * // 'F': [{name: 'Eddy', score: 58}]\n * // }\n */\n\nvar groupBy = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('groupBy', /*#__PURE__*/reduceBy(function (acc, item) {\n if (acc == null) {\n acc = [];\n }\n\n acc.push(item);\n return acc;\n}, null)));\n\nexport default groupBy;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Navbar from '../partials/NavBar/Navbar'\nimport useSiteMetadata from '../graphqlFragments/SiteMetadata'\nimport { Footer } from '..'\nimport Head from './Head'\nimport headerProps from '../propTypes/headerProps'\nimport PrimaryHeader from '../elements/PrimaryHeader/PrimaryHeader'\n\nconst LayoutFullWidth = ({ header, children }) => {\n const { title, description } = useSiteMetadata()\n const headerProps = {\n ...header,\n image: header.backgroundUrl,\n }\n\n return (\n <>\n \n \n \n {children}\n