{"version":3,"sources":["webpack:///./src/pages/reviews.jsx","webpack:///./src/components/image.jsx","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/gatsby-image/index.js","webpack:///./src/components/card-hover.jsx","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./src/components/media-preview.jsx"],"names":["MediaPreviewWrapper","glamorous__WEBPACK_IMPORTED_MODULE_4__","b","div","_glamorous$div","display","flexDirection","flexWrap","Object","_css_themes__WEBPACK_IMPORTED_MODULE_5__","h","j","justifyContent","renderMediaPreviews","edges","Glamor","createElement","lodash__WEBPACK_IMPORTED_MODULE_0___default","a","map","_ref","_ref$node","node","_ref$node$frontmatter","frontmatter","image","title","author","review","path","fields","_components_media_preview__WEBPACK_IMPORTED_MODULE_7__","key","Reviews","_ref2","location","data","_layouts_default__WEBPACK_IMPORTED_MODULE_6__","react__WEBPACK_IMPORTED_MODULE_1___default","Fragment","_components_common__WEBPACK_IMPORTED_MODULE_8__","i","books","podcasts","films","propTypes","prop_types__WEBPACK_IMPORTED_MODULE_2__","shape","arrayOf","any","isRequired","pageQuery","ImageWrapper","span","marginTop","marginBottom","Caption","fontSize","fontWeight","d","Image","fluid","fixed","caption","gatsby_image__WEBPACK_IMPORTED_MODULE_3___default","string","__webpack_exports__","c","call","this","276","e","t","__webpack_require__","createHTML","278","_interopRequireDefault","exports","__esModule","default","io","_inheritsLoose2","_assertThisInitialized2","_objectWithoutProperties2","_extends2","_react","_propTypes","convertProps","props","convertedProps","resolutions","sizes","imageCache","inImageCache","src","listeners","isWebpSupportedCache","isWebpSupported","elem","window","document","getContext","toDataURL","indexOf","noscriptImg","srcSet","alt","width","height","opacity","transitionDelay","Img","style","onLoad","otherProps","position","top","left","transition","objectFit","objectPosition","object","func","_React$Component","_this","isVisible","imgLoaded","IOSupported","IntersectionObserver","state","handleRef","bind","_proto","prototype","ref","_this2","el","cb","entries","forEach","entry","l","target","isIntersecting","intersectionRatio","unobserve","rootMargin","observe","push","listenToIntersections","setState","render","bgColor","_this3","_convertProps","className","outerWrapperClassName","_convertProps$style","_convertProps$imgStyl","imgStyle","_convertProps$placeho","placeholderStyle","backgroundColor","Tag","imagePlaceholderStyle","imageStyle","fadeIn","srcWebp","srcSetWebp","overflow","paddingBottom","aspectRatio","base64","tracedSVG","bottom","right","dangerouslySetInnerHTML","__html","_image","divStyle","Component","defaultProps","fixedObject","number","fluidObject","bool","oneOfType","_default","Hover","glamorous__WEBPACK_IMPORTED_MODULE_1__","paddingLeft","paddingRight","margin","&:hover .hover-backdrop","cursor","transform","HoverBackdrop","pointerEvents","background","_css_themes__WEBPACK_IMPORTED_MODULE_2__","orange","boxShadow","black","borderRadius","children","css","$export","fails","defined","quot","tag","attribute","value","S","String","p1","replace","module","NAME","exec","O","P","F","test","toLowerCase","split","length","MediaPreviewContentWrapper","flexGrow","alignItems","textAlign","MediaPreviewDescription","MediaPreview","_components_card_hover__WEBPACK_IMPORTED_MODULE_5__","flexBasis","_components_common__WEBPACK_IMPORTED_MODULE_7__","q","gatsby__WEBPACK_IMPORTED_MODULE_3__","to","_components_image__WEBPACK_IMPORTED_MODULE_6__","childImageSharp","u"],"mappings":"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","file":"component---src-pages-reviews-jsx-a740cc89d250ac90135c.js","sourcesContent":["import _ from 'lodash'\nimport React from 'react'\nimport {number, any, shape, arrayOf} from 'prop-types'\nimport {Link, graphql} from 'gatsby'\nimport glamorous from 'glamorous'\n\nimport {mediaMaxWidth, sm} from '../css/themes'\n\nimport Default from '../layouts/default'\nimport MediaPreview from '../components/media-preview'\nimport {H2} from '../components/common'\n\nconst MediaPreviewWrapper = glamorous.div({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n [mediaMaxWidth(sm)]: {\n justifyContent: 'center',\n },\n})\n\nconst renderMediaPreviews = edges => (\n \n {_.map(edges, ({node: {frontmatter: {image, title, author, review}, fields: {path}}}) => {\n return (\n \n )\n })}\n \n)\n\nconst Reviews = ({location, data}) => (\n \n \n 📚 Books
\n {renderMediaPreviews(data.books.edges)}\n \n\n \n 🎙 Podcasts
\n {renderMediaPreviews(data.podcasts.edges)}\n \n\n \n 🎬 Films
\n {renderMediaPreviews(data.films.edges)}\n \n \n)\n\nReviews.propTypes = {\n data: shape({\n books: shape({\n edges: arrayOf(\n shape({\n node: any,\n })\n ),\n }).isRequired,\n podcasts: shape({\n edges: arrayOf(\n shape({\n node: any,\n })\n ),\n }).isRequired,\n films: shape({\n edges: arrayOf(\n shape({\n node: any,\n })\n ),\n }).isRequired,\n }).isRequired,\n}\n\nexport default Reviews\n\nexport const pageQuery = graphql`\n query AllReviews {\n books: allMarkdownRemark(filter: {frontmatter: {type: {eq: \"book\"}}}) {\n edges {\n node {\n ...reviewAll\n }\n }\n }\n podcasts: allMarkdownRemark(filter: {frontmatter: {type: {eq: \"podcast\"}}}) {\n edges {\n node {\n ...reviewAll\n }\n }\n }\n films: allMarkdownRemark(filter: {frontmatter: {type: {eq: \"film\"}}}) {\n edges {\n node {\n ...reviewAll\n }\n }\n }\n }\n`\n","import React from 'react'\nimport {any, string} from 'prop-types'\nimport Img from 'gatsby-image'\nimport glamorous from 'glamorous'\n\nimport {getThemeStyles} from '../css/themes'\n\nconst ImageWrapper = glamorous.span({\n display: 'block',\n marginTop: '2rem',\n marginBottom: '2rem',\n})\nconst Caption = glamorous.i(\n {\n marginTop: '0.25rem',\n marginBottom: '0.25rem',\n fontSize: '0.9rem',\n fontWeight: 'normal',\n },\n getThemeStyles('i')\n)\nconst Image = ({fluid, fixed, caption}) => (\n \n
\n {caption && {caption}}\n \n)\nImage.propTypes = {\n fixed: any,\n fluid: any,\n caption: string,\n}\n\nexport default Image\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\n// Handle legacy names for image queries.\nvar convertProps = function convertProps(props) {\n var convertedProps = (0, _extends2.default)({}, props);\n\n if (convertedProps.resolutions) {\n convertedProps.fixed = convertedProps.resolutions;\n delete convertedProps.resolutions;\n }\n\n if (convertedProps.sizes) {\n convertedProps.fluid = convertedProps.sizes;\n delete convertedProps.sizes;\n }\n\n return convertedProps;\n}; // Cache if we've seen an image before so we don't both with\n// lazy-loading & fading in on subsequent mounts.\n\n\nvar imageCache = {};\n\nvar inImageCache = function inImageCache(props) {\n var convertedProps = convertProps(props); // Find src\n\n var src = convertedProps.fluid ? convertedProps.fluid.src : convertedProps.fixed.src;\n\n if (imageCache[src]) {\n return true;\n } else {\n imageCache[src] = true;\n return false;\n }\n};\n\nvar io;\nvar listeners = [];\n\nfunction getIO() {\n if (typeof io === \"undefined\" && typeof window !== \"undefined\" && window.IntersectionObserver) {\n io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n listeners.forEach(function (l) {\n if (l[0] === entry.target) {\n // Edge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(l[0]);\n l[1]();\n }\n }\n });\n });\n }, {\n rootMargin: \"200px\"\n });\n }\n\n return io;\n}\n\nvar listenToIntersections = function listenToIntersections(el, cb) {\n getIO().observe(el);\n listeners.push([el, cb]);\n};\n\nvar isWebpSupportedCache = null;\n\nvar isWebpSupported = function isWebpSupported() {\n if (isWebpSupportedCache !== null) {\n return isWebpSupportedCache;\n }\n\n var elem = typeof window !== \"undefined\" ? window.document.createElement(\"canvas\") : {};\n\n if (elem.getContext && elem.getContext(\"2d\")) {\n isWebpSupportedCache = elem.toDataURL(\"image/webp\").indexOf(\"data:image/webp\") === 0;\n } else {\n isWebpSupportedCache = false;\n }\n\n return isWebpSupportedCache;\n};\n\nvar noscriptImg = function noscriptImg(props) {\n // Check if prop exists before adding each attribute to the string output below to prevent\n // HTML validation issues caused by empty values like width=\"\" and height=\"\"\n var src = props.src ? \"src=\\\"\" + props.src + \"\\\" \" : \"src=\\\"\\\" \"; // required attribute\n\n var srcSet = props.srcSet ? \"srcset=\\\"\" + props.srcSet + \"\\\" \" : \"\";\n var sizes = props.sizes ? \"sizes=\\\"\" + props.sizes + \"\\\" \" : \"\";\n var title = props.title ? \"title=\\\"\" + props.title + \"\\\" \" : \"\";\n var alt = props.alt ? \"alt=\\\"\" + props.alt + \"\\\" \" : \"alt=\\\"\\\" \"; // required attribute\n\n var width = props.width ? \"width=\\\"\" + props.width + \"\\\" \" : \"\";\n var height = props.height ? \"height=\\\"\" + props.height + \"\\\" \" : \"\";\n var opacity = props.opacity ? props.opacity : \"1\";\n var transitionDelay = props.transitionDelay ? props.transitionDelay : \"0.5s\";\n return \"
\";\n};\n\nvar Img = function Img(props) {\n var style = props.style,\n onLoad = props.onLoad,\n otherProps = (0, _objectWithoutProperties2.default)(props, [\"style\", \"onLoad\"]);\n return _react.default.createElement(\"img\", (0, _extends2.default)({}, otherProps, {\n onLoad: onLoad,\n style: (0, _extends2.default)({\n position: \"absolute\",\n top: 0,\n left: 0,\n transition: \"opacity 0.5s\",\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n objectPosition: \"center\"\n }, style)\n }));\n};\n\nImg.propTypes = {\n style: _propTypes.default.object,\n onLoad: _propTypes.default.func\n};\n\nvar Image =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inheritsLoose2.default)(Image, _React$Component);\n\n function Image(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // If this browser doesn't support the IntersectionObserver API\n // we default to start downloading the image right away.\n\n var isVisible = true;\n var imgLoaded = true;\n var IOSupported = false; // If this image has already been loaded before then we can assume it's\n // already in the browser cache so it's cheap to just show directly.\n\n var seenBefore = inImageCache(props);\n\n if (!seenBefore && typeof window !== \"undefined\" && window.IntersectionObserver) {\n isVisible = false;\n imgLoaded = false;\n IOSupported = true;\n } // Always don't render image while server rendering\n\n\n if (typeof window === \"undefined\") {\n isVisible = false;\n imgLoaded = false;\n }\n\n _this.state = {\n isVisible: isVisible,\n imgLoaded: imgLoaded,\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));\n return _this;\n }\n\n var _proto = Image.prototype;\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.state.IOSupported && ref) {\n listenToIntersections(ref, function () {\n _this2.setState({\n isVisible: true,\n imgLoaded: false\n });\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _convertProps = convertProps(this.props),\n title = _convertProps.title,\n alt = _convertProps.alt,\n className = _convertProps.className,\n outerWrapperClassName = _convertProps.outerWrapperClassName,\n _convertProps$style = _convertProps.style,\n style = _convertProps$style === void 0 ? {} : _convertProps$style,\n _convertProps$imgStyl = _convertProps.imgStyle,\n imgStyle = _convertProps$imgStyl === void 0 ? {} : _convertProps$imgStyl,\n _convertProps$placeho = _convertProps.placeholderStyle,\n placeholderStyle = _convertProps$placeho === void 0 ? {} : _convertProps$placeho,\n fluid = _convertProps.fluid,\n fixed = _convertProps.fixed,\n backgroundColor = _convertProps.backgroundColor,\n Tag = _convertProps.Tag;\n\n var bgColor;\n\n if (typeof backgroundColor === \"boolean\") {\n bgColor = \"lightgray\";\n } else {\n bgColor = backgroundColor;\n }\n\n var imagePlaceholderStyle = (0, _extends2.default)({\n opacity: this.state.imgLoaded ? 0 : 1,\n transitionDelay: \"0.25s\"\n }, imgStyle, placeholderStyle);\n var imageStyle = (0, _extends2.default)({\n opacity: this.state.imgLoaded || this.props.fadeIn === false ? 1 : 0\n }, imgStyle);\n\n if (fluid) {\n var image = fluid; // Use webp by default if browser supports it\n\n if (image.srcWebp && image.srcSetWebp && isWebpSupported()) {\n image.src = image.srcWebp;\n image.srcSet = image.srcSetWebp;\n } // The outer div is necessary to reset the z-index to 0.\n\n\n return _react.default.createElement(Tag, {\n className: (outerWrapperClassName ? outerWrapperClassName : \"\") + \" gatsby-image-outer-wrapper\",\n style: {\n // Let users set component to be absolutely positioned.\n position: style.position === \"absolute\" ? \"initial\" : \"relative\"\n }\n }, _react.default.createElement(Tag, {\n className: (className ? className : \"\") + \" gatsby-image-wrapper\",\n style: (0, _extends2.default)({\n position: \"relative\",\n overflow: \"hidden\"\n }, style),\n ref: this.handleRef\n }, _react.default.createElement(Tag, {\n style: {\n width: \"100%\",\n paddingBottom: 100 / image.aspectRatio + \"%\"\n }\n }), image.base64 && _react.default.createElement(Img, {\n alt: alt,\n title: title,\n src: image.base64,\n style: imagePlaceholderStyle\n }), image.tracedSVG && _react.default.createElement(Img, {\n alt: alt,\n title: title,\n src: image.tracedSVG,\n style: imagePlaceholderStyle\n }), bgColor && _react.default.createElement(Tag, {\n title: title,\n style: {\n backgroundColor: bgColor,\n position: \"absolute\",\n top: 0,\n bottom: 0,\n opacity: !this.state.imgLoaded ? 1 : 0,\n transitionDelay: \"0.35s\",\n right: 0,\n left: 0\n }\n }), this.state.isVisible && _react.default.createElement(Img, {\n alt: alt,\n title: title,\n srcSet: image.srcSet,\n src: image.src,\n sizes: image.sizes,\n style: imageStyle,\n onLoad: function onLoad() {\n _this3.state.IOSupported && _this3.setState({\n imgLoaded: true\n });\n _this3.props.onLoad && _this3.props.onLoad();\n }\n }), _react.default.createElement(\"noscript\", {\n dangerouslySetInnerHTML: {\n __html: noscriptImg((0, _extends2.default)({\n alt: alt,\n title: title\n }, image))\n }\n })));\n }\n\n if (fixed) {\n var _image = fixed;\n var divStyle = (0, _extends2.default)({\n position: \"relative\",\n overflow: \"hidden\",\n display: \"inline-block\",\n width: _image.width,\n height: _image.height\n }, style);\n\n if (style.display === \"inherit\") {\n delete divStyle.display;\n } // Use webp by default if browser supports it\n\n\n if (_image.srcWebp && _image.srcSetWebp && isWebpSupported()) {\n _image.src = _image.srcWebp;\n _image.srcSet = _image.srcSetWebp;\n } // The outer div is necessary to reset the z-index to 0.\n\n\n return _react.default.createElement(Tag, {\n className: (outerWrapperClassName ? outerWrapperClassName : \"\") + \" gatsby-image-outer-wrapper\",\n style: {\n // Let users set component to be absolutely positioned.\n position: style.position === \"absolute\" ? \"initial\" : \"relative\"\n }\n }, _react.default.createElement(Tag, {\n className: (className ? className : \"\") + \" gatsby-image-wrapper\",\n style: divStyle,\n ref: this.handleRef\n }, _image.base64 && _react.default.createElement(Img, {\n alt: alt,\n title: title,\n src: _image.base64,\n style: imagePlaceholderStyle\n }), _image.tracedSVG && _react.default.createElement(Img, {\n alt: alt,\n title: title,\n src: _image.tracedSVG,\n style: imagePlaceholderStyle\n }), bgColor && _react.default.createElement(Tag, {\n title: title,\n style: {\n backgroundColor: bgColor,\n width: _image.width,\n opacity: !this.state.imgLoaded ? 1 : 0,\n transitionDelay: \"0.25s\",\n height: _image.height\n }\n }), this.state.isVisible && _react.default.createElement(Img, {\n alt: alt,\n title: title,\n width: _image.width,\n height: _image.height,\n srcSet: _image.srcSet,\n src: _image.src,\n style: imageStyle,\n onLoad: function onLoad() {\n _this3.setState({\n imgLoaded: true\n });\n\n _this3.props.onLoad && _this3.props.onLoad();\n }\n }), _react.default.createElement(\"noscript\", {\n dangerouslySetInnerHTML: {\n __html: noscriptImg((0, _extends2.default)({\n alt: alt,\n title: title,\n width: _image.width,\n height: _image.height\n }, _image))\n }\n })));\n }\n\n return null;\n };\n\n return Image;\n}(_react.default.Component);\n\nImage.defaultProps = {\n fadeIn: true,\n alt: \"\",\n Tag: \"div\"\n};\n\nvar fixedObject = _propTypes.default.shape({\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n src: _propTypes.default.string.isRequired,\n srcSet: _propTypes.default.string.isRequired,\n base64: _propTypes.default.string,\n tracedSVG: _propTypes.default.string,\n srcWebp: _propTypes.default.string,\n srcSetWebp: _propTypes.default.string\n});\n\nvar fluidObject = _propTypes.default.shape({\n aspectRatio: _propTypes.default.number.isRequired,\n src: _propTypes.default.string.isRequired,\n srcSet: _propTypes.default.string.isRequired,\n sizes: _propTypes.default.string.isRequired,\n base64: _propTypes.default.string,\n tracedSVG: _propTypes.default.string,\n srcWebp: _propTypes.default.string,\n srcSetWebp: _propTypes.default.string\n});\n\nImage.propTypes = {\n resolutions: fixedObject,\n sizes: fluidObject,\n fixed: fixedObject,\n fluid: fluidObject,\n fadeIn: _propTypes.default.bool,\n title: _propTypes.default.string,\n alt: _propTypes.default.string,\n className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n // Support Glamor's css prop.\n outerWrapperClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n style: _propTypes.default.object,\n imgStyle: _propTypes.default.object,\n placeholderStyle: _propTypes.default.object,\n position: _propTypes.default.string,\n backgroundColor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),\n onLoad: _propTypes.default.func,\n Tag: _propTypes.default.string\n};\nvar _default = Image;\nexports.default = _default;","import React from 'react'\nimport glamorous from 'glamorous'\nimport {colors, hexToRgba} from '../css/themes'\n\nconst Hover = glamorous.div({\n position: 'relative',\n paddingLeft: '1rem',\n paddingRight: '1rem',\n margin: '0.5rem',\n '&:hover .hover-backdrop': {\n cursor: 'pointer',\n opacity: 0.18,\n transform: 'none',\n },\n})\n\nconst HoverBackdrop = glamorous.div({\n position: 'absolute',\n pointerEvents: 'none',\n top: '-4px',\n bottom: '-4px',\n left: '-4px',\n right: '-4px',\n background: colors.orange,\n boxShadow: `0 0 40px 3px ${hexToRgba(colors.black, 0.4)}`,\n borderRadius: '8px',\n transition: 'all 320ms ease-out',\n transform: 'scale(1.03)',\n opacity: 0,\n})\n\nconst CardHover = ({style, children}) => (\n \n \n {children}\n \n)\n\nexport default CardHover\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","import React from 'react'\nimport {string, shape, any} from 'prop-types'\nimport {Link} from 'gatsby'\nimport glamorous from 'glamorous'\n\nimport CardHover from '../components/card-hover'\nimport Image from '../components/image'\nimport {LinkStyled, Strong} from '../components/common'\n\n/*\n * 1. Book preview\n * 2. Podcast Preview\n * 3. Film Preview\n *\n * All of these have some sort of image with a subtitle description\n */\n\nconst MediaPreviewContentWrapper = glamorous.div({\n display: 'flex',\n marginBottom: '2rem',\n flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'center',\n textAlign: 'center',\n})\n\nconst MediaPreviewDescription = glamorous.div({\n marginTop: '0.15rem',\n fontSize: '0.85rem',\n})\n\nconst MediaPreview = ({path, image, title, author}) => {\n return (\n \n \n \n \n {image && }\n \n {title}\n \n \n \n \n \n )\n}\n\nMediaPreview.propTypes = {\n path: string,\n image: shape({\n childImageSharp: shape({\n fixed: any,\n }).isRequired,\n }).isRequired,\n title: string.isRequired,\n author: string.isRequired,\n}\n\nexport default MediaPreview\n"],"sourceRoot":""}