{"version":3,"sources":["webpack:///./src/templates/blog-post.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":["FeatureImage","Object","glamorous__WEBPACK_IMPORTED_MODULE_3__","b","_components_image__WEBPACK_IMPORTED_MODULE_5__","a","__webpack_exports__","default","props","post","data","markdownRemark","pageContext","images","renderAst","rehype_react__WEBPACK_IMPORTED_MODULE_2___default","createElement","react__WEBPACK_IMPORTED_MODULE_1___default","components","_custom_components__WEBPACK_IMPORTED_MODULE_7__","CustomComponents","Compiler","Glamor","_layouts_default__WEBPACK_IMPORTED_MODULE_4__","title","location","description","frontmatter","short","_components_common__WEBPACK_IMPORTED_MODULE_6__","h","fluid","featuredImage","childImageSharp","htmlAst","pageQuery","ImageWrapper","glamorous__WEBPACK_IMPORTED_MODULE_4__","span","display","marginTop","marginBottom","Caption","i","fontSize","fontWeight","_css_themes__WEBPACK_IMPORTED_MODULE_5__","d","Image","_ref","fixed","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","r","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","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","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","css","backgroundColor","_css_themes__WEBPACK_IMPORTED_MODULE_7__","key","react__WEBPACK_IMPORTED_MODULE_3__","bool","defaultProps","316","ImageGallery","state","currentImage","lightboxIsOpen","_handleOpen","image","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-blog-post-jsx-bc3766ed7c7c734dfefe.js","sourcesContent":["import React from 'react'\nimport RehypeReact from 'rehype-react'\nimport {graphql} from 'gatsby'\nimport glamorous from 'glamorous'\n\nimport Default from '../layouts/default'\nimport Image from '../components/image'\nimport {H1} from '../components/common'\n\n// Component remapping from HTML -> React glamorous components\nimport CustomComponents from './custom-components'\n\nconst FeatureImage = glamorous(Image)({})\n\nconst BlogPostTemplate = props => {\n const post = props.data.markdownRemark\n const pageContext = props.pageContext\n const images = pageContext.images\n\n const renderAst = new RehypeReact({\n createElement: React.createElement,\n components: CustomComponents({...props, images}),\n }).Compiler\n\n return (\n \n

{pageContext.title}

\n \n\n {/* Inject Markdown HTML String into React Component */}\n {/*
*/}\n {renderAst(post.htmlAst)}\n \n )\n}\n\nexport default BlogPostTemplate\n\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n markdownRemark(fields: {slug: {eq: $slug}}) {\n id\n htmlAst\n frontmatter {\n short\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