{"version":3,"sources":["webpack:///./src/templates/review-page.jsx","webpack:///./src/components/image.jsx","webpack:///./src/components/map.jsx","webpack:///./src/components/button.jsx","webpack:///./src/templates/custom-components.jsx","webpack:///./src/components/video.jsx","webpack:///./src/components/gallery.jsx"],"names":["ratingMap","1","2","3","renderAst","rehype_react__WEBPACK_IMPORTED_MODULE_4___default","a","createElement","react__WEBPACK_IMPORTED_MODULE_1___default","components","Object","_custom_components__WEBPACK_IMPORTED_MODULE_5__","Compiler","__webpack_exports__","default","_ref","location","data","node","pageContext","review","edges","htmlAst","_node$frontmatter","frontmatter","title","author","rating","url","image","Glamor","_layouts_default__WEBPACK_IMPORTED_MODULE_6__","glamorous__WEBPACK_IMPORTED_MODULE_3__","b","Div","css","display","flexDirection","_components_image__WEBPACK_IMPORTED_MODULE_7__","fixed","childImageSharp","marginLeft","_components_common__WEBPACK_IMPORTED_MODULE_8__","h","r","Span","fontSize","href","target","rel","pageQuery","ImageWrapper","glamorous__WEBPACK_IMPORTED_MODULE_4__","span","marginTop","marginBottom","Caption","i","fontWeight","_css_themes__WEBPACK_IMPORTED_MODULE_5__","d","Image","fluid","caption","gatsby_image__WEBPACK_IMPORTED_MODULE_3___default","propTypes","prop_types__WEBPACK_IMPORTED_MODULE_2__","any","string","p","call","this","n","282","e","t","o","c","s","l","u","m","f","mapboxAccessToken","MapContainer","glamorous__WEBPACK_IMPORTED_MODULE_7__","div","position","width","minHeight","_css_themes__WEBPACK_IMPORTED_MODULE_11__","MapComponent","mapRef","map","client","_forwardGeocode","locations","limit","Promise","all","lodash__WEBPACK_IMPORTED_MODULE_4___default","_this","forwardGeocode","query","mode","autocomplete","send","_computeBoundingBox","features","points","lineString","_turf_turf__WEBPACK_IMPORTED_MODULE_10__","bbox","_fitMapToBounds","boundingBox","fitBounds","linear","padding","top","bottom","left","right","_initMapbox","theme","_mapbox_mapbox_sdk_services_geocoding__WEBPACK_IMPORTED_MODULE_8___default","accessToken","mapbox_gl__WEBPACK_IMPORTED_MODULE_9___default","Map","container","style","scrollZoom","_initFlight","props","start","end","then","geodata","locationsFeatures","get","_renderMapFlight","_initLocation","feature","first","_renderMapLocation","center","on","addSource","type","addLayer","id","source","paint","circle-radius","circle-color","orange","origin","destination","last","route","geometry","coordinates","point","lineDistance","distance","units","arc","reduce","range","array","concat","along","line-width","line-color","layout","icon-image","icon-rotate","icon-allow-overlap","prototype","componentDidMount","componentDidUpdate","prevProps","setStyle","diff","componentWillUnmount","render","_this2","styleMap","ref","el","react__WEBPACK_IMPORTED_MODULE_5__","Component","prop_types__WEBPACK_IMPORTED_MODULE_6__","shape","isRequired","oneOf","zoom","number","ButtonStyled","button","_css_themes__WEBPACK_IMPORTED_MODULE_4__","Button","children","react__WEBPACK_IMPORTED_MODULE_1__","314","CustomComponents","images","imageData","imageMap","lodash__WEBPACK_IMPORTED_MODULE_2___default","compact","_Object$assign","originalName","fluidData","_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default","assign","h1","_components_common__WEBPACK_IMPORTED_MODULE_11__","h2","h3","j","h4","k","h5","h6","em","strong","hr","_components_button__WEBPACK_IMPORTED_MODULE_7__","_components_map__WEBPACK_IMPORTED_MODULE_6__","gallery","galleryProps","photos","JSON","parse","newPhotos","_ref2","src","_decimalToFraction","_utils__WEBPACK_IMPORTED_MODULE_5__","aspectRatio","numerator","height","denominator","originalImg","base64","_components_gallery__WEBPACK_IMPORTED_MODULE_10__","img","imgProps","_components_image__WEBPACK_IMPORTED_MODULE_8__","video","videoProps","sourcesArr","sources","newProps","controls","_components_video__WEBPACK_IMPORTED_MODULE_9__","prop_types__WEBPACK_IMPORTED_MODULE_4__","arrayOf","object","315","VideoWrapper","glamorous__WEBPACK_IMPORTED_MODULE_5__","VideoComponent","_videoRef","_playPromise","_handleScroll","debounce","_utils__WEBPACK_IMPORTED_MODULE_6__","play","pause","window","addEventListener","removeEventListener","split","Video","innerRef","loop","playsInline","autoplay","backgroundColor","_css_themes__WEBPACK_IMPORTED_MODULE_7__","key","react__WEBPACK_IMPORTED_MODULE_3__","bool","defaultProps","316","ImageGallery","state","currentImage","lightboxIsOpen","_handleOpen","setState","index","_handleClose","_handlePrev","_handleNext","react_photo_gallery__WEBPACK_IMPORTED_MODULE_4___default","onClick","_","react_images__WEBPACK_IMPORTED_MODULE_5___default","onClose","onClickPrev","onClickNext","isOpen","showCloseButton","showImageCount","backdropClosesModal","alt","columns","margin","func","ImageComponent"],"mappings":"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","file":"component---src-templates-review-page-jsx-e837245eabe640aba679.js","sourcesContent":["import React from 'react'\nimport {} from 'prop-types'\nimport {graphql} from 'gatsby'\nimport glamorous from 'glamorous'\nimport RehypeReact from 'rehype-react'\n\nimport CustomComponents from './custom-components'\n\nimport Default from '../layouts/default'\nimport Image from '../components/image'\nimport {H1, P, A} from '../components/common'\n\nconst ratingMap = {\n 1: '🥇',\n 2: '🥈',\n 3: '🥉',\n}\n\nconst renderAst = new RehypeReact({\n createElement: React.createElement,\n components: CustomComponents(),\n}).Compiler\n\nconst ReviewPage = ({location, data, pageContext}) => {\n const node = data.review.edges[0].node\n const {\n htmlAst,\n frontmatter: {title, author, rating, url, image},\n } = node\n\n return (\n \n \n \n \n

{title}

\n

\n by {author}\n
\n Rating {` `}\n {ratingMap[rating]}\n
\n \n Amazon\n \n

\n
\n
\n {renderAst(htmlAst)}\n
\n )\n}\n\nexport default ReviewPage\n\nexport const pageQuery = graphql`\n query ReviewBySlug($slug: String!) {\n review: allMarkdownRemark(filter: {fields: {slug: {eq: $slug}}}) {\n edges {\n node {\n htmlAst\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","import _ from 'lodash'\nimport React, {Component} from 'react'\nimport {string, number, shape, oneOf} from 'prop-types'\nimport glamorous, {withTheme} from 'glamorous'\n\nimport GeocodingClient from '@mapbox/mapbox-sdk/services/geocoding'\nimport mapboxgl from 'mapbox-gl'\nimport * as turf from '@turf/turf'\n\nimport {colors, getThemeStyles} from '../css/themes'\n\nconst mapboxAccessToken =\n 'pk.eyJ1IjoianJ5aW8iLCJhIjoiY2pmY3B4bjhkMW42MjMzb2Zkc3JoNWNrNyJ9.zIp9h3epjar5s5HbHJFEeQ'\nconst mapboxStyleLight = 'mapbox://styles/mapbox/light-v9'\nconst mapboxStyleDark = 'mapbox://styles/mapbox/dark-v9'\n\nconst MapContainer = glamorous.div(\n {\n position: 'relative',\n width: '100%',\n minHeight: '20rem',\n marginTop: '2rem',\n marginBottom: '2rem',\n },\n getThemeStyles('map')\n)\n\nclass MapComponent extends Component {\n static propTypes = {\n // Theme\n theme: shape({type: string.isRequired}),\n // Map Types\n type: oneOf(['flight', 'location']).isRequired,\n // Flight Props\n start: string,\n end: string,\n // Location Props\n location: string,\n zoom: number,\n }\n\n mapRef = null\n map = null\n client = null\n\n /*\n * Helpers\n */\n _forwardGeocode = (locations, limit = 1) => {\n return Promise.all(\n _.map(locations, location =>\n this.client\n .forwardGeocode({query: location, mode: 'mapbox.places'}, {limit, autocomplete: false})\n .send()\n )\n )\n }\n\n _computeBoundingBox = features => {\n const points = _.map(features, 'center')\n const lineString = turf.lineString(points)\n const boundingBox = turf.bbox(lineString)\n return boundingBox\n }\n\n _fitMapToBounds = boundingBox => {\n this.map.fitBounds(boundingBox, {linear: true, padding: {top: 0, bottom: 0, left: 20, right: 20}})\n }\n\n /*\n * Map Initialization\n */\n _initMapbox = theme => {\n // Mapbox API client for geocode searching\n this.client = new GeocodingClient({accessToken: mapboxAccessToken})\n\n // MapboxGL instance\n mapboxgl.accessToken = mapboxAccessToken\n this.map = new mapboxgl.Map({\n container: this.mapRef,\n style: theme,\n scrollZoom: false,\n })\n }\n\n _initFlight = () => {\n this._forwardGeocode([this.props.start, this.props.end]).then(geodata => {\n const locationsFeatures = _.map(geodata, data => _.get(data, 'body.features[0]'))\n this._renderMapFlight(locationsFeatures)\n })\n }\n\n _initLocation = () => {\n this._forwardGeocode([this.props.location]).then(geodata => {\n const feature = _.get(_.first(geodata), 'body.features[0]')\n this._renderMapLocation(feature)\n })\n }\n\n /*\n * Map Render\n */\n _renderMapLocation = feature => {\n const origin = feature.center\n\n this.map.on('load', () => {\n this.map.addSource('single-location', {\n type: 'geojson',\n data: {\n type: 'FeatureCollection',\n features: [feature],\n },\n })\n this.map.addLayer({\n id: 'point',\n source: 'single-location',\n type: 'circle',\n paint: {\n 'circle-radius': 5,\n 'circle-color': colors.orange,\n },\n })\n this._fitMapToBounds(feature.bbox)\n // const marker = new mapboxgl.Marker({anchor: 'center'})\n // marker.setLngLat(origin).addTo(this.map)\n })\n }\n\n _renderMapFlight = features => {\n const origin = features[0].center\n const destination = _.last(features).center\n const route = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: {\n type: 'LineString',\n coordinates: [origin, destination],\n },\n },\n ],\n }\n\n const point = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: destination,\n },\n },\n ],\n }\n\n // Draw an arc between the `origin` & `destination` of the two points\n const lineDistance = turf.distance(origin, destination, {units: 'kilometers'})\n const arc = _.reduce(\n _.range(lineDistance),\n (array, i) => [\n ...array,\n turf.along(route.features[0], (i / 1000) * lineDistance, {units: 'kilometers'}).geometry.coordinates,\n ],\n []\n )\n\n // Update the route with calculated arc coordinates\n route.features[0].geometry.coordinates = arc\n\n const boundingBox = this._computeBoundingBox(features)\n this._fitMapToBounds(boundingBox)\n\n this.map.on('resize', () => {\n this._fitMapToBounds(boundingBox)\n })\n this.map.on('load', () => {\n this.map.addSource('route', {\n type: 'geojson',\n data: route,\n })\n\n this.map.addSource('point', {\n type: 'geojson',\n data: point,\n })\n\n this.map.addLayer({\n id: 'route',\n source: 'route',\n type: 'line',\n paint: {\n 'line-width': 2,\n 'line-color': '#007cbf',\n },\n })\n\n // Plane\n this.map.addLayer({\n id: 'point',\n source: 'point',\n type: 'symbol',\n layout: {\n 'icon-image': 'airport-15',\n 'icon-rotate': 90,\n 'icon-allow-overlap': true,\n },\n })\n })\n }\n\n /*\n * Lifecycle Methods\n */\n componentDidMount() {\n if (!this.mapRef) return\n\n // Attempt to get local theme\n const theme = this.props.theme.type === 'dark' ? mapboxStyleDark : mapboxStyleLight\n\n // Initialize Map instance\n this._initMapbox(theme)\n\n if (this.props.type === 'flight' && this.props.start && this.props.end) {\n return this._initFlight()\n }\n\n if (this.props.type === 'location' && this.props.location) {\n return this._initLocation()\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.theme && prevProps.theme && this.props.theme.type !== prevProps.theme.type) {\n if (this.map) {\n const theme = this.props.theme.type === 'dark' ? mapboxStyleDark : mapboxStyleLight\n this.map.setStyle(theme, {diff: false})\n }\n }\n }\n\n componentWillUnmount() {\n this.mapRef = null\n }\n\n /*\n * Render Methods\n */\n render() {\n return (\n \n
(this.mapRef = el)} />\n \n )\n }\n}\n\nconst styleMap = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n}\n\nexport default withTheme(MapComponent)\n","import React, {Component} from 'react'\nimport {} from 'prop-types'\nimport glamorous from 'glamorous'\nimport {getThemeStyles} from '../css/themes'\n\nconst ButtonStyled = glamorous.button({}, getThemeStyles('button'))\n\nexport default class Button extends Component {\n render() {\n return {this.props.children}\n }\n}\n","import _ from 'lodash'\nimport React from 'react'\nimport {object, shape, arrayOf} from 'prop-types'\n\nimport {decimalToFraction} from '../utils'\nimport {default as MapComponent} from '../components/map'\nimport Button from '../components/button'\nimport Image from '../components/image'\nimport Video from '../components/video'\nimport Gallery from '../components/gallery'\nimport {H1, H2, H3, H4, H5, H6, P, A, I, EM, Strong, HR} from '../components/common'\n\n// Construct a map of [originalName] -> imageFluidData\nconst makeImageMap = images => {\n const imageData = _.map(_.compact(images), 'childImageSharp.fluid')\n return _.reduce(\n imageData,\n (map, {originalName, ...fluidData}) => ({\n ...map,\n [originalName]: fluidData,\n }),\n {}\n )\n}\n\nconst CustomComponents = (props = {}) => {\n const imageMap = makeImageMap(props.images) || {}\n return {\n h1: H1,\n h2: H2,\n h3: H3,\n h4: H4,\n h5: H5,\n h6: H6,\n p: P,\n a: A,\n i: I,\n em: EM,\n strong: Strong,\n hr: HR,\n button: Button,\n map: MapComponent,\n gallery: galleryProps => {\n let photos = []\n try {\n photos = JSON.parse(galleryProps.photos)\n } catch (e) {}\n // Transform gatsby-plugin-sharp fluid properties into react-photo-gallery properties\n // - Convert aspectRatio decimal to fraction\n const newPhotos = _.map(photos, ({src}) => {\n const imageData = imageMap[src]\n if (!imageData) return null\n\n const {numerator: width, denominator: height} = decimalToFraction(imageData.aspectRatio)\n // Remove these fields to Gallery>img\n delete imageData.originalImg\n delete imageData.aspectRatio\n delete imageData.base64\n // Add height/width values for Gallery\n return {\n ...imageData,\n width,\n height,\n }\n })\n return \n },\n img: imgProps => {\n const fluid = imageMap[imgProps.src]\n return \n },\n video: videoProps => {\n let sourcesArr = []\n try {\n sourcesArr = JSON.parse(videoProps.sources)\n } catch (e) {}\n\n const newProps = {\n ...props,\n controls: videoProps.controls === 'true',\n sources: sourcesArr,\n }\n return