{"version":3,"sources":["bundle.svg","artwork/scenarios/jobs-and-economy.svg","artwork/scenarios/mobility.svg","artwork/scenarios/sustainability.svg","artwork/scenarios/urban-transformation.svg","artwork/scenarios/jobs-and-economy@2x.jpg","artwork/scenarios/mobility@2x.jpg","artwork/scenarios/sustainability@2x.jpg","artwork/scenarios/urban-transformation@2x.jpg","../../lib/vendor/DrawSVGPlugin.js","../../lib/styles/colors.js","../../lib/state/actionTypes.js","../../lib/state/actions.js","../../lib/state/reducers.js","../../lib/state/reducers.ui.js","../../lib/helpers/bemClassString.js","../../lib/helpers/getProps.js","components/Artwork.js","components/CallToAction.js","components/Footer.js","../../lib/helpers/unorphan.js","../../lib/helpers/urlFor.js","components/OffsiteLink.js","components/FooterNav.js","components/InlineSVG.js","components/Intro.js","../../lib/styles/breakpoints.js","components/Nav.js","components/Placeholder.js","../../lib/styles/sizes.js","components/Slideshow.js","components/Waypoint.js","consts.js","containers/Layout.js","containers/NotFound.js","artwork/scenarios/JobsAndEconomy.js","artwork/scenarios/Mobility.js","artwork/scenarios/Sustainability.js","artwork/scenarios/UrbanTransformation.js","../../lib/helpers/scaleCoordinate.js","containers/Scenario.js","containers/Scenarios.js","containers/AboutScenarios.js","../../lib/init.js","index.js","../../lib/helpers/slugify.js","artwork/scenarios/jobs-and-economy.jpg","artwork/scenarios/mobility.jpg","artwork/scenarios/sustainability.jpg","artwork/scenarios/urban-transformation.jpg"],"names":["module","exports","__webpack_require__","p","global","_gsScope","this","window","_gsQueue","push","DrawSVGPlugin","_doc","document","_getComputedStyle","defaultView","getComputedStyle","_numbersExp","_isEdge","navigator","userAgent","indexOf","getDistance","x1","y1","x2","y2","scaleX","scaleY","parseFloat","Math","sqrt","unwrap","element","nodeType","TweenLite","selector","length","getLength","bbox","points","prevPoint","i","rx","ry","type","tagName","toLowerCase","getAttribute","getScreenCTM","a","d","getBBox","e","width","height","style","strokeDasharray","getTotalLength","console","log","match","PI","getPosition","cs","dash","offset","strokeDashoffset","substr","max","_gsDefine","plugin","propName","API","version","overwriteProps","init","target","value","tween","index","start","end","overage","_style","defaultStart","s","undefined","parse","_length","_dash","_offset","_addTween","strokeLinecap","strokeLinejoin","strokeMiterlimit","set","ratio","_firstPT","_super","setRatio","call","pop","GreenSockGlobals","AQUA","BLUE","GRAY","ORANGE","PURPLE","ACCORD","ATLAS","BLACK","BLUEPRINTS","GREEN","LIME","OFFWHITE","PRIMER","RED","SCENARIOS","SHAREDSTREETS","SILVER","YELLOW","WHITE","CLOSE_NAV","GET_CONTENT","OPEN_NAV","SET_CITY","SET_INTERACTIVE_EL","SET_MAP","SET_NAV_OFFSET","SET_TAG","SET_WAYPOINT","SET_ZOOM","actions_openNav","converter","pluralize","reduce","state","arguments","action","content","payload","cities","lastModified","features","flat","city","properties","id","Object","objectSpread","coordinates","geometry","categories","keys","key","category","lodash","filter","map","tags","categoryTags","tagKey","title","short","summary","includes","sort","currentCityId","policyCategory","find","c","test","policyTags","t","currentCity","currentCityPolicyTags","similarCities","accumulator","cityId","policyTagTitles","policySummary","matchingPolicyTags","similarity","isQuartileMatch","quartile","tag","concat","listify_default","toWords","Boolean","similarCityData","name","region","countryCode","byPolicy","bySize","slice","reverse","zoomLevel","cityReducer","hasMap","navOffset","tagId","tagReducer","isNavOpen","hash","scrollingElement","scrollTop","pathname","reducers_ui_reduce","interactiveEl","waypoints","defineProperty","position","currentPosition","MODIFIERS","helpers_bemClassString","_ref","_ref$props","props","className","styleProps","newKey","replace","toString","config","modifiers","bem_classnames_default","helpers_getProps","htmlProps","assign","Artwork","onClick","getProps","symbol","__html","react_default","createElement","dangerouslySetInnerHTML","CallToAction","artwork","components_Artwork","children","Footer","OffsiteLink","to","src","alt","unorphanify","els","unorphan_default","urlFor","params","slugify_default","subtitle","getPath","join","href","rel","FooterNav","_props$links","links","color","text","url","Component","Link","slugify","backgroundColor","processSVG","data","prefix","split","InlineSVG","maxWidth","svgRef","containerStyles","padding","paddingBottom","ref","viewBox","overflow","top","left","Intro","minMid","matchMedia","NARROW","MID","minStandard","STANDARD","maxMid","print","SectionMenu","isOpen","isMobile","scenarios","section","hideMobile","isTitle","link","bemClassString","display","Toggle","_ref2","closeNav","openNav","Nav","_this","classCallCheck","possibleConstructorReturn","getPrototypeOf","handleClickOutside","handleHover","debounce","handleResize","bind","assertThisInitialized","matches","setState","hoverListener","remove","hoverIntent","el","addEventListener","unorphan","removeEventListener","_this2","_this$props","colors","navRef","onMouseLeave","React","PureComponent","connect","get","dispatch","event","actions","classList","contains","onClickOutside","Placeholder","sizes_marginX","marginNarrowX","SlideshowItem","active","imageWidth","itemRef","introWidth","isIntro","isStart","lastIndex","marginX","scrollTo","isActive","isPrevious","isNext","hasCursorImage","browser","msie","msedge","introStyles","marginLeft","marginRight","styles","classString","bem","imgClassString","paginationProps","stopPropagation","Pagination","handlePaginationClick","targetIndex","_ref3","isEnd","PaginationDot","_ref4","imageNames","Slideshow","handleSwipe","setDimensions","images","listEl","isValidElement","getImages","toConsumableArray","img","basename","extname","nextProps","nextState","isNarrow","viewportWidth","innerWidth","restartWidth","totalWidth","sum","direction","viewerEl","isAnimating","targetX","_this$state","targetEl","offsetLeft","scroll","ease","inOutExpo","duration","_this3","_this$props$className","_this$state2","wrapperStyles","paddingRight","startIndex","itemProps","paginationOptions","react_hammerjs_es","onSwipe","options","recognizers","swipe","threshold","velocity","imageProps","restartEl","ownProps","setWaypoint","cjs_default","onPositionChange","SITE_HOST","process","Layout","layoutRef","_this$props$ogType","ogType","site","_this$props2","_this$props2$title","_this$props2$descript","description","_this$props2$image","image","isRoot","isNavSticky","Helmet_default","property","path","data-route","data-page","components_Nav","sections","NotFound","JobsAndEconomy","animate","fetch","svgUrl","then","res","svgData","isLoaded","catch","error","prevProps","prevState","visibility","roadway","pause","wheels","resume","kill","ROADWAY1","getElementById","ROADWAY2","ROADWAY3","LEFT_WHEEL","RIGHT_WHEEL","TimelineMax","repeat","yoyo","TweenMax","opacity","SHOW","HIDE","delay","add","rotation","play","Mobility","timeline","HANDICAP","GROCERY","KIDS","DOGS","Sustainability","EYE_UP","EYE_DOWN","EYE_RIGHT","EYE_LEFT","BOX_UP","BOX_RIGHT","BOX_DOWN","CAR_UP","CAR_RIGHT","CAR_LEFT","fromTo","speed","drawSVG","UrbanTransformation","googleAll","eyes","forEach","eye","pupilEl","pupil","_ref$x","x","_ref$y","y","_ref$oldMin","oldMin","_ref$oldMax","oldMax","_ref$newMin","newMin","_ref$newMax","newMax","scaleCoordinate","innerHeight","clientX","clientY","setAttribute","google","SECTIONS","tree","zone","nodes","hName","hProperties","unwrapImages","token","Image","illustration","photo","Markdown","scenario","slug","remark","use","align","right","reactRenderer","sanitize","remarkReactComponents","blockquote","h1","h2","h3","_ref5","Slideshow_Slideshow","processSync","contents","Poster","_ref6","Scenario","containers_Layout","lead","Scenario_Markdown","jobs-and-the-economy","jobsAndEconomyUrl","srcSet","jobsAndEconomy2xUrl","mobility","mobilityUrl","mobility2xUrl","sustainability","sustainabilityUrl","sustainability2xUrl","urban-transformation","urbanTransformationUrl","urbanTransformation2xUrl","Scenarios","Scenarios_Scenario","AboutScenarios","routes","svgBundleUrl","bowser_default","location","history","esm_history","listen","tetherTooltips","close","ROUTES","route","shortid","enhancer","redux_es","es","built_default","singleton_default","devToolsExtension","f","store","router","ui","loglevel_default","SENTRY_DSN","install","Raven","search","querySelector","insertAdjacentHTML","rootEl","react_redux_es","Switch","firstChild","removeChild","hasChildNodes","react_dom_default","hydrate","render","mount","es_Route","exact","component","kebabCase"],"mappings":"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","file":"static/js/main.ec6be4bb.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/bundle.fbfa3202.svg\";","module.exports = __webpack_public_path__ + \"static/media/jobs-and-economy.d35bb3a8.svg\";","module.exports = __webpack_public_path__ + \"static/media/mobility.d88a67ca.svg\";","module.exports = __webpack_public_path__ + \"static/media/sustainability.70208c21.svg\";","module.exports = __webpack_public_path__ + \"static/media/urban-transformation.1b656c96.svg\";","module.exports = __webpack_public_path__ + \"static/media/jobs-and-economy@2x.e7644d5e.jpg\";","module.exports = __webpack_public_path__ + \"static/media/mobility@2x.81c9d9c3.jpg\";","module.exports = __webpack_public_path__ + \"static/media/sustainability@2x.c4df541d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/urban-transformation@2x.969013c0.jpg\";","/*!\n * VERSION: 0.1.4\n * DATE: 2017-06-19\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2017, GreenSock. All rights reserved.\n * DrawSVGPlugin is a Club GreenSock membership benefit; You must have a valid membership to use\n * this code without violating the terms of use. Visit http://greensock.com/club/ to sign up or get more details.\n * This work is subject to the software agreement that was issued with your membership.\n *\n * @author: Jack Doyle, jack@greensock.com\n */\nvar _gsScope = typeof module !== \"undefined\" && module.exports && typeof global !== \"undefined\" ? global : this || window; //helps ensure compatibility with AMD/RequireJS and CommonJS/Node\n\n\n(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function () {\n var _doc = _gsScope.document,\n _getComputedStyle = _doc.defaultView ? _doc.defaultView.getComputedStyle : function () {},\n _numbersExp = /(?:(-|-=|\\+=)?\\d*\\.?\\d*(?:e[-+]?\\d+)?)[0-9]/ig,\n _isEdge = ((_gsScope.navigator || {}).userAgent || \"\").indexOf(\"Edge\") !== -1,\n //Microsoft Edge has a bug that causes it not to redraw the path correctly if the stroke-linecap is anything other than \"butt\" (like \"round\") and it doesn't match the stroke-linejoin. A way to trigger it is to change the stroke-miterlimit, so we'll only do that if/when we have to (to maximize performance)\n DrawSVGPlugin;\n\n function getDistance(x1, y1, x2, y2, scaleX, scaleY) {\n x2 = (parseFloat(x2 || 0) - parseFloat(x1 || 0)) * scaleX;\n y2 = (parseFloat(y2 || 0) - parseFloat(y1 || 0)) * scaleY;\n return Math.sqrt(x2 * x2 + y2 * y2);\n }\n\n function unwrap(element) {\n if (typeof element === \"string\" || !element.nodeType) {\n element = _gsScope.TweenLite.selector(element);\n\n if (element.length) {\n element = element[0];\n }\n }\n\n return element;\n } //accepts values like \"100%\" or \"20% 80%\" or \"20 50\" and parses it into an absolute start and end position on the line/stroke based on its length. Returns an an array with the start and end values, like [0, 243]\n\n\n function parse(value, length, defaultStart) {\n var i = value.indexOf(\" \"),\n s,\n e;\n\n if (i === -1) {\n s = defaultStart !== undefined ? defaultStart + \"\" : value;\n e = value;\n } else {\n s = value.substr(0, i);\n e = value.substr(i + 1);\n }\n\n s = s.indexOf(\"%\") !== -1 ? parseFloat(s) / 100 * length : parseFloat(s);\n e = e.indexOf(\"%\") !== -1 ? parseFloat(e) / 100 * length : parseFloat(e);\n return s > e ? [e, s] : [s, e];\n }\n\n function getLength(element) {\n if (!element) {\n return 0;\n }\n\n element = unwrap(element);\n var type = element.tagName.toLowerCase(),\n scaleX = 1,\n scaleY = 1,\n length,\n bbox,\n points,\n prevPoint,\n i,\n rx,\n ry;\n\n if (element.getAttribute(\"vector-effect\") === \"non-scaling-stroke\") {\n //non-scaling-stroke basically scales the shape and then strokes it at the screen-level (after transforms), thus we need to adjust the length accordingly.\n scaleY = element.getScreenCTM();\n scaleX = scaleY.a;\n scaleY = scaleY.d;\n }\n\n try {\n //IE bug: calling .getTotalLength() locks the repaint area of the stroke to whatever its current dimensions are on that frame/tick. To work around that, we must call getBBox() to force IE to recalculate things.\n bbox = element.getBBox(); //solely for fixing bug in IE - we don't actually use the bbox.\n } catch (e) {//firefox has a bug that throws an error if the element isn't visible.\n }\n\n if ((!bbox || !bbox.width && !bbox.height) && (type === \"rect\" || type === \"circle\" || type === \"ellipse\")) {\n //if the element isn't visible, try to discern width/height using its attributes.\n bbox = {\n width: parseFloat(element.getAttribute(type === \"rect\" ? \"width\" : type === \"circle\" ? \"r\" : \"rx\")),\n height: parseFloat(element.getAttribute(type === \"rect\" ? \"height\" : type === \"circle\" ? \"r\" : \"ry\"))\n };\n\n if (type !== \"rect\") {\n bbox.width *= 2;\n bbox.height *= 2;\n }\n }\n\n if (type === \"path\") {\n prevPoint = element.style.strokeDasharray;\n element.style.strokeDasharray = \"none\";\n length = element.getTotalLength() || 0;\n\n if (scaleX !== scaleY) {\n console.log(\"Warning: length cannot be measured accurately when vector-effect is non-scaling-stroke and the element isn't proportionally scaled.\");\n }\n\n length *= (scaleX + scaleY) / 2;\n element.style.strokeDasharray = prevPoint;\n } else if (type === \"rect\") {\n length = bbox.width * 2 * scaleX + bbox.height * 2 * scaleY;\n } else if (type === \"line\") {\n length = getDistance(element.getAttribute(\"x1\"), element.getAttribute(\"y1\"), element.getAttribute(\"x2\"), element.getAttribute(\"y2\"), scaleX, scaleY);\n } else if (type === \"polyline\" || type === \"polygon\") {\n points = element.getAttribute(\"points\").match(_numbersExp) || [];\n\n if (type === \"polygon\") {\n points.push(points[0], points[1]);\n }\n\n length = 0;\n\n for (i = 2; i < points.length; i += 2) {\n length += getDistance(points[i - 2], points[i - 1], points[i], points[i + 1], scaleX, scaleY) || 0;\n }\n } else if (type === \"circle\" || type === \"ellipse\") {\n rx = bbox.width / 2 * scaleX;\n ry = bbox.height / 2 * scaleY;\n length = Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n }\n\n return length || 0;\n }\n\n function getPosition(element, length) {\n if (!element) {\n return [0, 0];\n }\n\n element = unwrap(element);\n length = length || getLength(element) + 1;\n\n var cs = _getComputedStyle(element),\n dash = cs.strokeDasharray || \"\",\n offset = parseFloat(cs.strokeDashoffset),\n i = dash.indexOf(\",\");\n\n if (i < 0) {\n i = dash.indexOf(\" \");\n }\n\n dash = i < 0 ? length : parseFloat(dash.substr(0, i)) || 0.00001;\n\n if (dash > length) {\n dash = length;\n }\n\n return [Math.max(0, -offset), Math.max(0, dash - offset)];\n }\n\n DrawSVGPlugin = _gsScope._gsDefine.plugin({\n propName: \"drawSVG\",\n API: 2,\n version: \"0.1.4\",\n global: true,\n overwriteProps: [\"drawSVG\"],\n init: function init(target, value, tween, index) {\n if (!target.getBBox) {\n return false;\n }\n\n var length = getLength(target) + 1,\n start,\n end,\n overage,\n cs;\n this._style = target.style;\n\n if (typeof value === \"function\") {\n value = value(index, target);\n }\n\n if (value === true || value === \"true\") {\n value = \"0 100%\";\n } else if (!value) {\n value = \"0 0\";\n } else if ((value + \"\").indexOf(\" \") === -1) {\n value = \"0 \" + value;\n }\n\n start = getPosition(target, length);\n end = parse(value, length, start[0]);\n this._length = length + 10;\n\n if (start[0] === 0 && end[0] === 0) {\n overage = Math.max(0.00001, end[1] - length); //allow people to go past the end, like values of 105% because for some paths, Firefox doesn't return an accurate getTotalLength(), so it could end up coming up short.\n\n this._dash = length + overage;\n this._offset = length - start[1] + overage;\n\n this._addTween(this, \"_offset\", this._offset, length - end[1] + overage, \"drawSVG\");\n } else {\n this._dash = start[1] - start[0] || 0.000001; //some browsers render artifacts if dash is 0, so we use a very small number in that case.\n\n this._offset = -start[0];\n\n this._addTween(this, \"_dash\", this._dash, end[1] - end[0] || 0.00001, \"drawSVG\");\n\n this._addTween(this, \"_offset\", this._offset, -end[0], \"drawSVG\");\n }\n\n if (_isEdge) {\n //to work around a bug in Microsoft Edge, animate the stroke-miterlimit by 0.0001 just to trigger the repaint (only necessary if stroke-linecap isn't \"butt\"; also unnecessary if it's \"round\" and stroke-linejoin is also \"round\"). Imperceptible, relatively high-performance, and effective. Another option was to set the \"d\" attribute to its current value on every tick, but that seems like it'd be much less performant.\n cs = _getComputedStyle(target);\n end = cs.strokeLinecap;\n\n if (end !== \"butt\" && end !== cs.strokeLinejoin) {\n end = parseFloat(cs.strokeMiterlimit);\n\n this._addTween(target.style, \"strokeMiterlimit\", end, end + 0.0001, \"strokeMiterlimit\");\n }\n }\n\n return true;\n },\n //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)\n set: function set(ratio) {\n if (this._firstPT) {\n this._super.setRatio.call(this, ratio);\n\n this._style.strokeDashoffset = this._offset;\n\n if (ratio === 1 || ratio === 0) {\n this._style.strokeDasharray = this._offset < 0.001 && this._length - this._dash <= 10 ? \"none\" : this._offset === this._dash ? \"0px, 999999px\" : this._dash + \"px,\" + this._length + \"px\";\n } else {\n this._style.strokeDasharray = this._dash + \"px,\" + this._length + \"px\";\n }\n }\n }\n });\n DrawSVGPlugin.getLength = getLength;\n DrawSVGPlugin.getPosition = getPosition;\n});\n\nif (_gsScope._gsDefine) {\n _gsScope._gsQueue.pop()();\n} //export to AMD/RequireJS and CommonJS/Node (precursor to full modular build system coming at a later date)\n\n\n(function (name) {\n var getGlobal = function getGlobal() {\n return (_gsScope.GreenSockGlobals || _gsScope)[name];\n };\n\n if (typeof module !== \"undefined\" && module.exports) {\n //node\n require(\"gsap/TweenLite\");\n\n module.exports = getGlobal();\n }\n})(\"DrawSVGPlugin\");","var AQUA = 'hsl(147, 59%, 67%)';\nvar BLACK = 'hsl(0, 0%, 0%)';\nvar BLUE = 'rgb(150, 215, 240)';\nvar GRAY = 'hsl(0, 0%, 65%)';\nvar GREEN = 'hsl(147, 59%, 67%)';\nvar LIME = 'hsl(68, 100%, 45%)';\nvar OFFWHITE = 'hsl(0, 0%, 96%)';\nvar ORANGE = 'hsl(36, 82%, 56%)';\nvar PURPLE = 'hsl(223, 100%, 79%)';\nvar SILVER = 'hsl(210, 4%, 91%)';\nvar YELLOW = 'hsl(44, 100%, 60%)';\nvar RED = '#ff8264';\nvar WHITE = 'hsl(0, 100%, 100%)';\nvar ACCORD = PURPLE;\nvar ATLAS = AQUA;\nvar BLUEPRINTS = BLUE;\nvar PRIMER = GRAY;\nvar SCENARIOS = ORANGE;\nvar SHAREDSTREETS = RED;\nmodule.exports = {\n ACCORD: ACCORD,\n ATLAS: ATLAS,\n AQUA: AQUA,\n BLACK: BLACK,\n BLUE: BLUE,\n BLUEPRINTS: BLUEPRINTS,\n GRAY: GRAY,\n GREEN: GREEN,\n LIME: LIME,\n OFFWHITE: OFFWHITE,\n ORANGE: ORANGE,\n PRIMER: PRIMER,\n PURPLE: PURPLE,\n RED: RED,\n SCENARIOS: SCENARIOS,\n SHAREDSTREETS: SHAREDSTREETS,\n SILVER: SILVER,\n YELLOW: YELLOW,\n WHITE: WHITE\n};","export var CLOSE_NAV = 'CLOSE_NAV';\nexport var GET_CONTENT = 'GET_CONTENT';\nexport var OPEN_NAV = 'OPEN_NAV';\nexport var SET_CITY = 'SET_CITY';\nexport var SET_INTERACTIVE_EL = 'SET_INTERACTIVE_EL';\nexport var SET_MAP = 'SET_MAP';\nexport var SET_NAV_OFFSET = 'SET_NAV_OFFSET';\nexport var SET_TAG = 'SET_TAG';\nexport var SET_WAYPOINT = 'SET_WAYPOINT';\nexport var SET_ZOOM = 'SET_ZOOM';","import { CLOSE_NAV, GET_CONTENT, OPEN_NAV, SET_CITY, SET_INTERACTIVE_EL, SET_MAP, SET_NAV_OFFSET, SET_TAG, SET_WAYPOINT, SET_ZOOM } from './actionTypes';\n/**\n * Close nav drawer\n *\n * @returns {Action} payload\n */\n\nexport function closeNav() {\n return {\n type: CLOSE_NAV\n };\n}\n/**\n * Get Content\n *\n * @returns {Action} payload\n */\n\nexport function getContent(data) {\n return {\n type: GET_CONTENT,\n payload: data\n };\n}\n/**\n * Open nav drawer\n *\n * @returns {Action} payload\n */\n\nexport function openNav() {\n return {\n type: OPEN_NAV\n };\n}\n/**\n * Set city\n *\n * @returns {Action} payload\n */\n\nexport function setCity(id) {\n return {\n type: SET_CITY,\n payload: id\n };\n}\n/**\n * Set interactive element\n *\n * @returns {Action} payload\n */\n\nexport function setInteractiveEl(id) {\n return {\n type: SET_INTERACTIVE_EL,\n payload: id\n };\n}\n/**\n * Set map\n *\n * @returns {Action} payload\n */\n\nexport function setMap() {\n return {\n type: SET_MAP\n };\n}\n/**\n * Set sticky navigation offset\n *\n * @returns {Action} payload\n */\n\nexport function setNavOffset(offset) {\n return {\n type: SET_NAV_OFFSET,\n payload: offset\n };\n}\n/**\n * Set tag\n *\n * @returns {Action} payload\n */\n\nexport function setTag(tag) {\n return {\n type: SET_TAG,\n payload: tag\n };\n}\n/**\n * Set waypoint position\n *\n * @returns {Action} payload\n */\n\nexport function setWaypoint(_ref) {\n var name = _ref.name,\n position = _ref.position;\n return {\n type: SET_WAYPOINT,\n payload: {\n name: name,\n position: position\n }\n };\n}\n/**\n * Set map zoom level\n *\n * @returns {Action} payload\n */\n\nexport function setZoom(level) {\n return {\n type: SET_ZOOM,\n payload: level\n };\n}","import _objectSpread from \"/home/circleci/global-av-survey/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread\";\nimport listify from 'listify';\nimport { intersection, flatten, shuffle, sortBy, values } from 'lodash';\nimport { CLOSE_NAV, GET_CONTENT, OPEN_NAV, SET_CITY, SET_MAP, SET_NAV_OFFSET, SET_TAG, SET_ZOOM } from './actionTypes';\n\nvar converter = require('number-to-words');\n\nvar pluralize = require('pluralize');\n\nexport default function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case GET_CONTENT:\n var content = action.payload;\n if (!content.cities) return content;\n content.lastModified = content.cities.lastModified; // flatten geojson data\n\n content.cities = content.cities.features.reduce(function (flat, city) {\n flat[city.properties.id] = _objectSpread({}, city.properties, {\n coordinates: city.geometry.coordinates\n });\n return flat;\n }, {}); // add city lists to each category\n\n content.categories = Object.keys(content.categories).reduce(function (categories, key) {\n var category = content.categories[key];\n category.cities = values(content.cities).filter(function (city) {\n return category.id === city.category;\n }).map(function (city) {\n return city.id;\n });\n categories[key] = category;\n return categories;\n }, {}); // convert tag mappings to arrays for iteration\n\n content.tags = Object.keys(content.tags).reduce(function (tags, key) {\n var categoryTags = Object.keys(content.tags[key]).map(function (tagKey) {\n var id = content.tags[key][tagKey].id.toLowerCase(); // normalize\n\n return {\n id: id,\n category: key,\n title: tagKey,\n short: content.tags[key][tagKey].short,\n summary: content.tags[key][tagKey].summary,\n cities: values(content.cities).filter(function (city) {\n return city.tags.includes(id);\n }).map(function (city) {\n return city.id;\n }).sort()\n };\n });\n tags[key] = categoryTags;\n return tags;\n }, {});\n return content;\n\n case SET_CITY:\n return cityReducer(state, action.payload);\n\n case SET_MAP:\n return _objectSpread({}, state, {\n hasMap: true\n });\n\n case SET_NAV_OFFSET:\n return _objectSpread({}, state, {\n navOffset: action.payload\n });\n\n case SET_TAG:\n return tagReducer(state, action.payload);\n\n case SET_ZOOM:\n return _objectSpread({}, state, {\n zoomLevel: action.payload\n });\n\n case OPEN_NAV:\n return _objectSpread({}, state, {\n isNavOpen: true\n });\n\n case CLOSE_NAV:\n return _objectSpread({}, state, {\n isNavOpen: false\n });\n\n case '@@router/LOCATION_CHANGE':\n if (action.payload.hash) return state;\n if (document.scrollingElement) document.scrollingElement.scrollTop = 0;\n var zoomLevel = action.payload.pathname === '/' ? 'fitBounds' : null;\n return _objectSpread({}, state, {\n zoomLevel: zoomLevel,\n city: null,\n hasMap: false,\n isNavOpen: false,\n navOffset: null,\n similarCities: null,\n tag: null\n });\n\n default:\n return state;\n }\n} // city reducer\n\nfunction cityReducer(state, currentCityId) {\n var policyCategory = Object.keys(state.tags).find(function (c) {\n return /policy/i.test(c);\n });\n var policyTags = state.tags[policyCategory].map(function (t) {\n return t.id;\n });\n var currentCity = state.cities[currentCityId];\n var currentCityPolicyTags = currentCity.tags.filter(function (id) {\n return policyTags.includes(id);\n }); // get more like this\n\n var similarCities = shuffle(Object.keys(state.cities)).reduce(function (accumulator, cityId) {\n if (cityId === currentCityId) return accumulator;\n var city = state.cities[cityId];\n var matchingPolicyTags = intersection(city.tags, currentCityPolicyTags);\n var similarity = matchingPolicyTags.length;\n var isQuartileMatch = city.quartile === currentCity.quartile;\n var policyTagTitles;\n var policySummary;\n\n if (matchingPolicyTags.length) {\n policyTagTitles = matchingPolicyTags.map(function (id) {\n return state.tags[policyCategory].find(function (tag) {\n return tag.id === id;\n });\n }).map(function (tag) {\n return tag && \"\".concat(tag.title, \"\");\n });\n policySummary = intersection(city.tags, policyTags).length > 1 ? \"\".concat(listify(policyTagTitles).toLowerCase(), \" and \").concat(converter.toWords(intersection(city.tags, policyTags).length - 1), \" other \").concat(pluralize('area', intersection(city.tags, policyTags).length - 1)) : \"\".concat(listify(policyTagTitles).toLowerCase());\n } else if (isQuartileMatch) {\n policyTagTitles = city.tags.map(function (id) {\n return state.tags[policyCategory].find(function (tag) {\n return tag.id === id;\n });\n }).map(function (tag) {\n return tag && \"\".concat(tag.title, \"\");\n }).filter(Boolean);\n policySummary = \"\".concat(listify(policyTagTitles).toLowerCase());\n }\n\n var similarCityData = {\n id: city.id,\n name: city.name,\n category: city.category,\n region: city.region,\n countryCode: city.countryCode,\n similarity: similarity,\n policySummary: policySummary\n };\n if (similarity) accumulator.byPolicy.push(similarCityData);\n if (isQuartileMatch) accumulator.bySize.push(similarCityData);\n return accumulator;\n }, {\n byPolicy: [],\n bySize: []\n });\n return _objectSpread({}, state, {\n city: currentCity,\n similarCities: {\n byPolicy: sortBy(similarCities.byPolicy, 'similarity').slice(0, 4).reverse(),\n bySize: similarCities.bySize.slice(0, 4)\n },\n zoomLevel: null\n });\n} // tag reducer\n\n\nfunction tagReducer(state, tagId) {\n var tags = flatten(values(state.tags));\n return _objectSpread({}, state, {\n city: null,\n similarCities: null,\n tag: tags.find(function (t) {\n return t.id === tagId;\n }),\n zoomLevel: null\n });\n}","import _defineProperty from \"/home/circleci/global-av-survey/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"/home/circleci/global-av-survey/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread\";\nimport { SET_INTERACTIVE_EL, SET_WAYPOINT } from './actionTypes';\nexport default function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case SET_INTERACTIVE_EL:\n return _objectSpread({}, state, {\n interactiveEl: action.payload\n });\n\n case SET_WAYPOINT:\n return _objectSpread({}, state, {\n waypoints: _objectSpread({}, state.waypoints, _defineProperty({}, action.payload.name, action.payload.position.currentPosition))\n });\n\n default:\n return _objectSpread({}, state, {\n waypoints: {}\n });\n }\n}","import bemClassNames from 'bem-classnames';\nimport { kebabCase } from 'lodash';\nvar MODIFIERS = ['artwork', 'category', 'name'];\n\nfunction bemClassString(_ref) {\n var name = _ref.name,\n _ref$props = _ref.props,\n props = _ref$props === void 0 ? {} : _ref$props;\n // custom classes\n var className = props.className && ' ' + props.className || '';\n var styleProps = Object.keys(props).reduce(function (hash, key) {\n // normalize boolean keys\n var newKey = kebabCase(key.replace(/^is/, '')); // normalize string/number values\n\n if (typeof props[key] === 'string') {\n hash[newKey] = kebabCase(props[key]);\n } else if (typeof props[key] === 'number') {\n hash[newKey] = props[key].toString() + 'x';\n } else {\n hash[newKey] = props[key];\n }\n\n return hash;\n }, {});\n var config = {\n name: name,\n modifiers: [].concat(Object.keys(styleProps).filter(function (key) {\n return typeof styleProps[key] === 'boolean';\n })).concat(Object.keys(styleProps).filter(function (key) {\n return MODIFIERS.includes(key);\n }))\n };\n return (bemClassNames(config, styleProps) + className).replace(/-x/g, 'x');\n}\n\nexport default bemClassString;","import { pick, pickBy } from 'lodash';\nimport bemClassString from './bemClassString';\n\nfunction getProps(_ref) {\n var name = _ref.name,\n props = _ref.props,\n state = _ref.state;\n var htmlProps = pick(props, ['id', 'className', 'style']);\n var styleProps = pick(props, ['artwork', 'category', 'className', 'name']);\n htmlProps.className = bemClassString({\n name: name,\n state: state,\n props: Object.assign({}, styleProps, state, pickBy(props, function (value) {\n return typeof value === 'boolean';\n }))\n });\n return htmlProps;\n}\n\nexport default getProps;","import getProps from '@global-av-survey/lib/helpers/getProps';\n\nimport React from 'react';\n\nfunction Artwork ({ name, className, width, height, onClick, style }) {\n const htmlProps = getProps({ name: 'Artwork', props: { className, name } });\n\n let symbol = {\n __html: ``\n };\n\n return (\n \n );\n}\n\nexport default Artwork;\n","import React from 'react';\nimport Artwork from './Artwork';\nimport getProps from '@global-av-survey/lib/helpers/getProps';\n\nexport default function CallToAction (props) {\n const { className, artwork } = props;\n\n const htmlProps = getProps({ name: 'CallToAction', props: { artwork, className } });\n\n return (\n
\n
\n \n
\n {props.children}\n
\n );\n}\n","import getProps from '@global-av-survey/lib/helpers/getProps';\n\nimport React from 'react';\nimport { OffsiteLink } from '../components';\n\n/**\n * Footer\n */\n\nexport default function Footer ({ className }) {\n const htmlProps = getProps({ name: 'Footer', props: { className } });\n\n return (\n
\n
\n
\n

\n Presented by the National League of Cities Center for City Solutions\n

\n \n \"NLC\n \n
\n
\n

\n Supported by Bloomberg Philanthropies as part of the Bloomberg Aspen Initiative on Cities and Autonomous Vehicles\n

\n\n \n \"Bloomberg\n \n \n \"The\n \n
\n

Privacy Policy

\n
\n
\n );\n}\n","import unorphan from 'unorphan';\nexport default function unorphanify() {\n var els = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'h1, h2, h3, h4, h5, h6, p';\n unorphan(els);\n}","import slugify from './slugify';\n\nfunction getPath(name, params) {\n switch (name) {\n case 'city':\n return ['global-atlas', params.region, params.countryCode, params.id];\n\n case 'country':\n return ['global-atlas', params.region, params.countryCode];\n\n case 'region':\n return ['global-atlas', params.region];\n\n case 'scenario':\n return [slugify(params.subtitle)];\n\n default:\n return [''];\n }\n}\n\nexport default function urlFor(name, params) {\n var path = getPath(name, params);\n return '/' + path.map(slugify).join('/');\n}","import getProps from '@global-av-survey/lib/helpers/getProps';\n\nimport React from 'react';\n\nexport default function OffsiteLink ({ className, children, style, to }) {\n const htmlProps = getProps({ name: 'OffsiteLink', props: { className, style } });\n\n return (\n \n {children}\n \n );\n}\n","import { getProps, slugify } from '@global-av-survey/lib/helpers';\n\nimport React from 'react';\nimport { Link } from 'react-router-dom';\nimport OffsiteLink from './OffsiteLink';\n\n/**\n * FooterNav\n */\n\nexport default function FooterNav (props) {\n const { className, links = [], title } = props;\n\n const htmlProps = getProps({ name: 'FooterNav', props: { className } });\n\n return (\n \n );\n}\n","import React from 'react';\n\nfunction processSVG (data, prefix) {\n return data\n .split(/\\n/)\n .slice(2, -1)\n .join('')\n .replace(/id=\"/g, `id=\"${prefix}-`)\n .replace(/href=\"#/g, `href=\"#${prefix}-`)\n .replace(/url\\(#/g, `url(#${prefix}-`)\n}\n\nexport default function InlineSVG ({ className, data, height, width, maxWidth, svgRef, prefix, url }) {\n if (maxWidth && typeof maxWidth === 'boolean') maxWidth = `${width}px`;\n\n // https://css-tricks.com/scale-svg/\n const ratio = (height / width) * 100;\n\n const containerStyles = {\n maxWidth,\n position: 'relative',\n width: '100%',\n height: 0,\n padding: 0,\n paddingBottom: `${ratio}%`\n };\n\n const artworkStyles = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n };\n\n return (\n
\n \n
\n );\n}\n","import getProps from '@global-av-survey/lib/helpers/getProps';\n\nimport React from 'react';\n\n/**\n * Intro\n */\n\nexport default function Intro ({ className, children }) {\n const htmlProps = getProps({ name: 'Intro', props: { className } });\n\n return (\n
\n {children}\n
\n );\n}\n","export var NARROW = 500;\nexport var MID = 1090;\nexport var STANDARD = 1460;\nexport var minNarrow = window.matchMedia(\"(min-width: \".concat(NARROW + 1, \"px)\"));\nexport var minMid = window.matchMedia(\"(min-width: \".concat(MID + 1, \"px)\"));\nexport var minStandard = window.matchMedia(\"(min-width: \".concat(STANDARD + 1, \"px)\"));\nexport var maxStandard = window.matchMedia(\"(max-width: \".concat(STANDARD, \"px)\"));\nexport var maxMid = window.matchMedia(\"(max-width: \".concat(MID, \"px)\"));\nexport var maxNarrow = window.matchMedia(\"(max-width: \".concat(NARROW, \"px)\"));\nexport var print = window.matchMedia('print');\nexport var landscape = window.matchMedia('(orientation: landscape)');","import { debounce, get } from 'lodash';\nimport { bemClassString, getProps, unorphan, urlFor } from '@global-av-survey/lib/helpers';\n\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport onClickOutside from 'react-onclickoutside';\nimport hoverIntent from 'hoverintent';\n\nimport Artwork from './Artwork';\nimport * as actions from '@global-av-survey/lib/state/actions';\nimport { maxMid } from '@global-av-survey/lib/styles/breakpoints';\nimport { BLACK, WHITE } from '@global-av-survey/lib/styles/colors';\n\n/**\n * Nav\n */\n\nfunction SectionMenu ({ isOpen, isMobile, scenarios, section }) {\n let links = [{\n text: 'Explore',\n url: '#',\n backgroundColor: BLACK,\n color: WHITE,\n hideMobile: isMobile\n }].concat(Object.keys(scenarios).map(title => ({\n text: title,\n url: urlFor('scenario', scenarios[title]),\n backgroundColor: scenarios[title].color\n })), {\n text: 'About',\n url: '/about',\n backgroundColor: BLACK,\n color: WHITE,\n },{\n text: 'Home',\n url: '/',\n backgroundColor: BLACK,\n color: WHITE,\n });\n\n if (links && links.length) links[0].isTitle = true;\n\n return (\n
\n {links.filter(link => !link.hideMobile).map(link => (\n \n ))}\n
\n );\n}\n\nfunction Toggle ({ closeNav, openNav, isMobile, isOpen }) {\n if (isOpen && isMobile) return ;\n if (isMobile) return ;\n return ;\n}\n\nfunction mapStateToProps (state) {\n return {\n colors: get(state, 'content.colors'),\n scenarios: get(state, 'content.scenarios'),\n isNavOpen: get(state, 'content.isNavOpen')\n };\n}\n\nfunction mapDispatchToProps (dispatch) {\n return {\n closeNav: () => dispatch(actions.closeNav()),\n openNav: (event) => {\n if (event === 'hover') return dispatch(actions.openNav());\n\n // whitelist open triggers to avoid close/open conflict\n const allowed = [\n 'Nav__content',\n 'Nav__section-menu-link--title',\n 'Nav__toggle'\n ];\n\n const classList = event.target.classList;\n\n if (\n event.target.classList &&\n allowed.find(className => classList.contains(className)) &&\n !classList.contains('Artwork--nav-close')\n ) {\n dispatch(actions.openNav());\n }\n }\n };\n}\n\nclass Nav extends React.PureComponent {\n constructor (props) {\n super(props);\n\n this.handleClickOutside = props.closeNav;\n this.handleHover = debounce(props.openNav, 500);\n this.handleResize = this.handleResize.bind(this);\n\n this.state = {};\n }\n\n handleResize () {\n if (maxMid.matches === this.state.isMobile) return;\n const isMobile = maxMid.matches;\n\n this.setState({ isMobile });\n\n if (isMobile) {\n this.hoverListener && this.hoverListener.remove();\n } else {\n this.hoverListener = hoverIntent(this.el, this.props.openNav.bind(null, 'hover'), this.props.closeNav);\n }\n }\n\n componentDidMount () {\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n unorphan('.Nav a');\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.handleResize);\n }\n\n render () {\n const {\n className,\n closeNav,\n colors,\n isNavOpen,\n navRef,\n openNav,\n scenarios,\n } = this.props;\n\n const {\n isMobile\n } = this.state;\n\n const htmlProps = getProps({\n name: 'Nav',\n props: {\n className,\n isOpen: isNavOpen\n }\n });\n\n return (\n \n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(\n onClickOutside(Nav)\n);\n","import React from 'react';\n\nexport default function Placeholder ({ className, height, width, maxWidth }) {\n if (maxWidth && typeof maxWidth === 'boolean') maxWidth = `${width}px`;\n\n // https://css-tricks.com/scale-svg/\n const ratio = (height / width) * 100;\n\n const containerStyles = {\n maxWidth,\n position: 'relative',\n width: '100%',\n height: 0,\n padding: 0,\n paddingBottom: `${ratio}%`\n };\n\n const placeholderStyles = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n };\n\n return (\n
\n \n
\n );\n}\n","import { minMid } from './breakpoints';\nvar marginX = 50;\nvar marginNarrowX = 10;\nvar marginY = 50;\nvar marginNarrowY = 10;\nvar paddingY = 25;\nvar paddingNarrowY = 20;\nexport function getMarginX() {\n return minMid.matches ? marginX : marginNarrowX;\n}\nexport function getMarginY() {\n return minMid.matches ? marginY : marginNarrowY;\n}\nexport function getPaddingY() {\n return minMid.matches ? paddingY : paddingNarrowY;\n}","import { basename, extname } from 'path';\n\nimport browser from 'bowser';\nimport { sum } from 'lodash';\nimport ease from 'ease-component';\nimport scroll from 'scroll';\nimport { bem, getProps } from '@global-av-survey/lib/helpers';\nimport { minMid, maxMid, minStandard, STANDARD, print } from '@global-av-survey/lib/styles/breakpoints';\nimport { getMarginX } from '@global-av-survey/lib/styles/sizes';\nimport Hammer from 'react-hammerjs';\n\nimport React from 'react';\nimport { Artwork } from '.';\n\nfunction getImages (children) {\n const listEl = children.find(el => el.type === 'ul');\n if (!listEl) return null;\n\n return listEl.props.children\n .filter(React.isValidElement)\n .map(el => el.props.children[0].props);\n}\n\nfunction SlideshowItem ({\n active,\n alt,\n children,\n imageWidth,\n itemRef,\n index,\n introWidth,\n isIntro,\n isStart,\n lastIndex,\n marginX,\n scrollTo,\n src\n}) {\n const isActive = active === index;\n const isPrevious = index < active;\n const isNext = index > active;\n\n const hasCursorImage = !browser.msie && !browser.msedge;\n\n let introStyles = {};\n\n if (!print.matches) {\n introStyles = {\n width: introWidth,\n marginLeft: marginX,\n marginRight: marginX\n };\n };\n\n if (isIntro) {\n return (\n
\n

Slideshow:

\n {children.filter(el => el.type !== 'ul')}\n {maxMid.matches &&

Swipe to advance the slideshow →

}\n
\n );\n }\n\n const styles = {\n width: imageWidth,\n marginRight: marginX\n };\n\n const classString = bem({\n name: 'Slideshow__item',\n props: { isActive }\n });\n\n const imgClassString = bem({\n name: 'Slideshow__item-image',\n props: { isActive, isPrevious, isNext }\n });\n\n const paginationProps = {\n hasCursorImage,\n index,\n isStart,\n lastIndex,\n marginX,\n scrollTo\n };\n\n return (\n
\n
{ event.stopPropagation(); scrollTo(index) }}>\n {alt}\n {isActive && minMid.matches && }\n
\n
{alt}
\n
\n );\n}\n\nfunction handlePaginationClick({ index, targetIndex, scrollTo }, event) {\n event.stopPropagation();\n if (index === 0 && targetIndex <= 1) return;\n scrollTo(targetIndex);\n}\n\nfunction Pagination ({ isStart, hasCursorImage, index, lastIndex, marginX, scrollTo }) {\n const isEnd = index === lastIndex;\n\n const classString = bem({\n name: 'Slideshow__pagination',\n props: { isStart, isEnd }\n });\n\n return (\n
\n {!isStart && (\n
\n {!hasCursorImage && }\n
\n )}\n {!isEnd && (\n
\n {!hasCursorImage && }\n
\n )}\n
\n );\n}\n\nfunction PaginationDot ({ active, imageNames, index, scrollTo }) {\n const isActive = minMid.matches\n ? (active - 1) === index\n : active === index;\n\n const targetIndex = minMid.matches\n ? index + 1\n : index;\n\n return (\n scrollTo(targetIndex)}\n type=\"button\"\n >\n Jump\n \n );\n}\n\nexport default class Slideshow extends React.PureComponent {\n constructor (props) {\n super(props);\n\n this.handleSwipe = this.handleSwipe.bind(this);\n this.scrollTo = this.scrollTo.bind(this);\n this.setDimensions = this.setDimensions.bind(this);\n\n const images = getImages(this.props.children);\n\n this.els = [];\n\n this.state = {\n active: 0,\n images: [\n { isIntro: true },\n ...images\n ],\n imageNames: [\n 'intro',\n ...images.map(img => basename(img.src, extname(img.src)))\n ]\n };\n }\n\n componentDidMount () {\n this.setDimensions();\n window.addEventListener('resize', this.setDimensions);\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.setDimensions);\n }\n\n componentWillUpdate (nextProps, nextState) {\n if (this.state.isNarrow === nextState.isNarrow) return;\n\n nextState.isNarrow\n ? this.setState({ active: 0 })\n : this.setState({ active: 1 });\n }\n\n setDimensions () {\n const marginX = getMarginX();\n\n const viewportWidth = minStandard.matches\n ? STANDARD\n : window.innerWidth;\n\n let imageWidth;\n let introWidth;\n\n if (minMid.matches) {\n imageWidth = viewportWidth * 0.55;\n introWidth = (viewportWidth - imageWidth - (marginX * 4)) / 2;\n } else {\n imageWidth = viewportWidth * 0.80;\n introWidth = imageWidth;\n }\n\n const restartWidth = minMid.matches\n ? 130\n : 60 + marginX; // hardcoded because refs are unavailable until width is set\n\n const totalWidth = sum([].concat(\n marginX,\n introWidth,\n marginX,\n this.state.images.map(i => imageWidth + marginX),\n restartWidth,\n marginX,\n ));\n\n this.setState({\n imageWidth,\n introWidth,\n marginX,\n width: totalWidth,\n isNarrow: maxMid.matches,\n });\n\n this.scrollTo(this.state.active);\n }\n\n handleSwipe (event) {\n if (event.direction === 4) this.scrollTo(this.state.active - 1);\n if (event.direction === 2) this.scrollTo(this.state.active + 1);\n }\n\n scrollTo (index) {\n if (!this.viewerEl || this.state.isAnimating === true) return;\n if (index < 0) return;\n if (index >= this.state.images.length) return;\n\n const { introWidth, marginX } = this.state;\n const targetEl = this.els[index];\n\n let targetX;\n if (index === 0) targetX = 0;\n\n if (targetEl) {\n targetX = minMid.matches\n ? targetEl.offsetLeft - (introWidth + marginX * 2)\n : targetEl.offsetLeft - marginX;\n }\n\n if (targetX === undefined) return;\n\n this.setState({ isAnimating: true });\n\n if (document.scrollingElement) {\n scroll.left(this.viewerEl, targetX, { ease: ease.inOutExpo, duration: 1000 }, () => {\n this.setState({\n isAnimating: false,\n active: index\n });\n });\n }\n }\n\n render () {\n const { children, className = '' } = this.props;\n const { active, images, imageNames, imageWidth, introWidth, isAnimating, marginX, width } = this.state;\n\n if (!width) return null;\n\n const wrapperStyles = {\n width,\n paddingRight: introWidth + marginX\n };\n\n const startIndex = minMid.matches\n ? 1\n : 0;\n\n const isStart = startIndex === active;\n\n const itemProps = {\n active,\n children,\n imageWidth,\n introWidth,\n marginX,\n scrollTo: this.scrollTo,\n };\n\n const paginationProps = {\n active,\n imageNames,\n scrollTo: this.scrollTo,\n };\n\n const paginationOptions = minMid.matches\n ? images.slice(1)\n : images;\n\n const htmlProps = getProps({ name: 'Slideshow', props: { className, isAnimating } });\n\n const hammerOptions = {\n recognizers: {\n swipe: {\n threshold: 1,\n velocity: .3\n }\n }\n };\n\n return (\n
this.el = el}>\n
\n
\n {paginationOptions.map((img, index) => (\n \n ))}\n
\n
\n
this.viewerEl = el}>\n \n
\n
\n {images.map((imageProps, index) => (\n this.els[index] = el}\n index={index}\n lastIndex={images.length - 1}\n />\n ))}\n
this.restartEl = el}>\n \n
\n
\n
\n
\n
\n
\n );\n }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport ReactWaypoint from 'react-waypoint';\nimport { setWaypoint } from '@global-av-survey/lib/state/actions';\nimport getProps from '@global-av-survey/lib/helpers/getProps';\n\nfunction mapDispatchToProps (dispatch, ownProps) {\n return {\n setWaypoint: position => dispatch(setWaypoint({ position, name: ownProps.name })),\n };\n}\n\nfunction Waypoint (props) {\n const { children, setWaypoint, name, style } = props;\n const htmlProps = getProps({ name: 'Waypoint', props: { name, style } });\n\n return (\n \n
\n {children}\n
\n
\n );\n}\n\nexport default connect(null, mapDispatchToProps)(Waypoint);\n","export const SITE_HOST = process.env.REACT_APP_SITE_HOST;\n","import { get } from 'lodash';\nimport getProps from '@global-av-survey/lib/helpers/getProps';\n\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport { Footer, Nav } from '../components';\n\nimport { SITE_HOST } from '../consts';\n\n/**\n * Layout\n */\n\nfunction mapStateToProps (state) {\n return {\n isNavOpen: get(state, 'content.isNavOpen'),\n pathname: get(state, 'router.location.pathname'),\n sections: get(state, 'content.sections'),\n site: get(state, 'content.site'),\n };\n}\n\nclass Layout extends React.PureComponent {\n render () {\n const {\n category,\n children,\n isNavOpen,\n layoutRef,\n name,\n navRef,\n ogType = 'website',\n pathname,\n site\n } = this.props;\n\n let {\n title = site.title,\n description = site.description,\n image = site.image\n } = this.props;\n\n const isRoot = pathname === '/';\n\n const htmlProps = getProps({\n name: 'Layout',\n props: {\n category,\n isNavOpen,\n isNavSticky: true\n }\n });\n\n if (!isRoot) title = `${title} / ${site.title}`;\n\n return (\n
\n \n {title}\n \n \n \n \n {ogType && }\n \n {description && (\n \n \n \n \n \n )}\n {image && (\n \n \n \n \n \n \n \n )}\n
\n
\n
\n );\n }\n}\n\nexport default connect(mapStateToProps)(Layout);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Intro } from '../components';\n\nexport default function NotFound () {\n return (\n
\n \n

\n Our autonomously navigating robot brains were not able to locate the resource you requested, but perhaps you would be interested in some evolving stories from the future or urban mobility?\n

\n
\n
\n );\n}\n","import React from 'react';\nimport { InlineSVG, Placeholder } from '../../components';\nimport { TimelineMax, TweenMax } from 'gsap';\n\nimport svgUrl from './jobs-and-economy.svg';\n\nconst delay = 0.3;\nconst rotation = 0.7;\n\nexport default class JobsAndEconomy extends React.PureComponent {\n constructor () {\n super();\n this.state = {};\n this.animate = this.animate.bind(this);\n }\n\n componentDidMount () {\n window.fetch(svgUrl)\n .then(res => res.text())\n .then(data => {\n this.svgData = data;\n this.setState({ isLoaded: true });\n })\n .catch(window.log.error);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.isLoaded !== this.state.isLoaded) this.animate();\n }\n\n componentWillReceiveProps (nextProps) {\n if (!this.state.isLoaded) return;\n\n if (nextProps.visibility === 'hidden') {\n this.roadway.pause();\n this.wheels.pause();\n } else {\n this.roadway.resume();\n this.wheels.resume();\n }\n }\n\n componentWillUnmount () {\n this.roadway.kill();\n this.wheels.kill();\n }\n\n animate () {\n const ROADWAY1 = document.getElementById('jobs-roadway-1');\n const ROADWAY2 = document.getElementById('jobs-roadway-2');\n const ROADWAY3 = document.getElementById('jobs-roadway-3');\n const LEFT_WHEEL = document.getElementById('jobs-wheel-left');\n const RIGHT_WHEEL = document.getElementById('jobs-wheel-right');\n\n this.roadway = new TimelineMax({ repeat: -1 });\n this.wheels = new TimelineMax({ repeat: -1, yoyo: true });\n\n TweenMax.set([\n ROADWAY1,\n ROADWAY2,\n ROADWAY3,\n ], { opacity: 0 });\n\n const SHOW = { opacity: 1 };\n const HIDE = { delay, opacity: 0 };\n\n this.roadway.add([\n TweenMax.to(ROADWAY1, 0, SHOW),\n TweenMax.to(ROADWAY1, 0, HIDE),\n TweenMax.to(ROADWAY2, 0, SHOW),\n TweenMax.to(ROADWAY2, 0, HIDE),\n TweenMax.to(ROADWAY3, 0, SHOW),\n TweenMax.to(ROADWAY3, 0, HIDE),\n ], '+=0', 'sequence', 0);\n\n this.wheels.add([\n TweenMax.to(LEFT_WHEEL, 0.2, { rotation }),\n TweenMax.to(RIGHT_WHEEL, 0.2, { rotation: rotation * -1 }),\n ], '+=0');\n\n this.roadway.play();\n this.wheels.play();\n }\n\n render () {\n if (!this.state.isLoaded) {\n return (\n \n );\n }\n\n return (\n \n );\n }\n}\n","import React from 'react';\nimport { InlineSVG, Placeholder } from '../../components';\nimport { TimelineMax, TweenMax } from 'gsap';\n\nimport svgUrl from './mobility.svg';\n\nconst delay = 1;\n\nexport default class Mobility extends React.PureComponent {\n constructor () {\n super();\n this.state = {};\n this.animate = this.animate.bind(this);\n }\n\n componentWillReceiveProps (nextProps) {\n if (!this.state.isLoaded || !this.timeline) return;\n\n (nextProps.visibility === 'hidden')\n ? this.timeline.pause()\n : this.timeline.resume();\n }\n\n componentDidMount () {\n window.fetch(svgUrl)\n .then(res => res.text())\n .then(data => {\n this.svgData = data;\n this.setState({ isLoaded: true });\n })\n .catch(console.error);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.isLoaded !== this.state.isLoaded) this.animate();\n }\n\n componentWillUnmount () {\n this.timeline.kill();\n }\n\n animate () {\n const HANDICAP = document.getElementById('mobility-handicap');\n const GROCERY = document.getElementById('mobility-grocery');\n const KIDS = document.getElementById('mobility-kids');\n const DOGS = document.getElementById('mobility-dogs');\n\n this.timeline = new TimelineMax({ repeat: -1 });\n\n TweenMax.set([\n HANDICAP,\n GROCERY,\n KIDS,\n DOGS\n ], { opacity: 0 });\n\n const SHOW = { opacity: 1 };\n const HIDE = { delay, opacity: 0 };\n\n this.timeline.add([\n TweenMax.to(HANDICAP, 0, SHOW),\n TweenMax.to(HANDICAP, 0, HIDE),\n TweenMax.to(GROCERY, 0, SHOW),\n TweenMax.to(GROCERY, 0, HIDE),\n TweenMax.to(KIDS, 0, SHOW),\n TweenMax.to(KIDS, 0, HIDE),\n TweenMax.to(DOGS, 0, SHOW),\n TweenMax.to(DOGS, 0, HIDE),\n ], '+=0', 'sequence', 0);\n\n this.timeline.play(4);\n }\n\n render () {\n if (!this.state.isLoaded) {\n return (\n \n );\n }\n\n return (\n \n );\n }\n}\n","import React from 'react';\nimport { InlineSVG, Placeholder } from '../../components';\nimport { TimelineMax, TweenMax } from 'gsap';\nimport '@global-av-survey/lib/vendor/DrawSVGPlugin';\n\nimport svgUrl from './sustainability.svg';\n\nconst speed = 4;\n\nexport default class Sustainability extends React.PureComponent {\n constructor () {\n super();\n this.state = {};\n this.animate = this.animate.bind(this);\n }\n\n componentWillReceiveProps (nextProps) {\n if (!this.state.isLoaded) return;\n\n if (nextProps.visibility === 'hidden') {\n this.timeline.pause();\n } else {\n this.timeline.resume();\n }\n }\n\n componentDidMount () {\n window.fetch(svgUrl)\n .then(res => res.text())\n .then(data => {\n this.svgData = data;\n this.setState({ isLoaded: true });\n })\n .catch(window.log.error);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.isLoaded !== this.state.isLoaded) this.animate();\n }\n\n componentWillUnmount () {\n this.timeline.kill();\n }\n\n animate () {\n const EYE_UP = document.getElementById('sustainability-eye-up');\n const EYE_DOWN = document.getElementById('sustainability-eye-down');\n const EYE_RIGHT = document.getElementById('sustainability-eye-right');\n const EYE_LEFT = document.getElementById('sustainability-eye-left');\n const BOX_UP = document.getElementById('sustainability-box-up');\n const BOX_RIGHT = document.getElementById('sustainability-box-right');\n const BOX_DOWN = document.getElementById('sustainability-box-down');\n const CAR_UP = document.getElementById('sustainability-car-up');\n const CAR_RIGHT = document.getElementById('sustainability-car-right');\n const CAR_LEFT = document.getElementById('sustainability-car-left');\n\n this.timeline = new TimelineMax({ repeat: -1 });\n\n this.timeline.add([\n TweenMax.fromTo(EYE_UP, speed/2, {drawSVG: '0%' }, {drawSVG: '0% 100%'}),\n TweenMax.fromTo(EYE_RIGHT, speed, {drawSVG: '0 0'}, {drawSVG: '0 100%'}),\n TweenMax.fromTo(EYE_DOWN, speed, {drawSVG: '100% 100%' },{drawSVG: '100% 0'}),\n TweenMax.fromTo(EYE_LEFT, speed/2, {drawSVG: '100% 100%' },{drawSVG: '0 100%'}),\n TweenMax.fromTo(CAR_UP, speed/2, {drawSVG: '0% 0%' }, {drawSVG: '0% 100%'}),\n TweenMax.fromTo(CAR_RIGHT, speed/2, {drawSVG: '0%' }, {drawSVG: '0% 100%'}),\n TweenMax.fromTo(CAR_LEFT, speed, {drawSVG: '100% 100%' },{drawSVG: '0 100%'}),\n TweenMax.fromTo(BOX_UP, speed/2, {drawSVG: '0%' }, {drawSVG: '0% 100%'}),\n TweenMax.fromTo(BOX_RIGHT, speed/2, {drawSVG: '0 0' }, {drawSVG: '100% 0%'}),\n TweenMax.fromTo(BOX_DOWN, speed/2, {drawSVG: '100% 100%'}, {drawSVG: '100% 0'}),\n ]);\n\n this.timeline.add([\n TweenMax.fromTo(EYE_UP, speed/2, {drawSVG: '0% 100%' }, {drawSVG: '100% 100%'}),\n TweenMax.fromTo(EYE_RIGHT, speed, {drawSVG: '0 100%'}, {drawSVG: '100% 100%'}),\n TweenMax.fromTo(EYE_DOWN, speed, {drawSVG: '100% 0' },{drawSVG: '0 0'}),\n TweenMax.fromTo(EYE_LEFT, speed/2, {drawSVG: '0% 100%' },{drawSVG: '0% 0%'}),\n TweenMax.fromTo(CAR_UP, speed/2, {drawSVG: '0% 100%' }, {drawSVG: '100% 100%'}),\n TweenMax.fromTo(CAR_RIGHT, speed/2, {drawSVG: '0% 100%' }, {drawSVG: '100% 100%'}),\n TweenMax.fromTo(CAR_LEFT, speed, {drawSVG: '0% 100%' },{drawSVG: '0 0'}),\n TweenMax.fromTo(BOX_UP, speed/2, {drawSVG: '0% 100%' }, {drawSVG: '100% 100%'}),\n TweenMax.fromTo(BOX_RIGHT, speed/2, {drawSVG: '100% 0' }, {drawSVG: '100% 100%'}),\n TweenMax.fromTo(BOX_DOWN, speed/2, {drawSVG: '100% 0%'}, {drawSVG: '0 0'}),\n ]);\n\n this.timeline.play();\n }\n\n render () {\n if (!this.state.isLoaded) {\n return (\n \n );\n }\n\n return (\n \n );\n }\n}\n","import React from 'react';\nimport { InlineSVG, Placeholder } from '../../components';\nimport { scaleCoordinate } from '@global-av-survey/lib/helpers';\n\nimport svgUrl from './urban-transformation.svg';\n\nfunction google (els, event) {\n const eyeEl = els[0];\n const eye = eyeEl.getBBox();\n const pupilEl = els[1];\n const pupil = pupilEl.getBBox();\n\n const oldMin = [\n 0,\n 0\n ];\n\n const oldMax = [\n window.innerWidth,\n window.innerHeight\n ];\n\n const newMin = [\n eye.x,\n eye.y\n ];\n\n const newMax = [\n eye.x + eye.width - (pupil.width / 2),\n eye.y + eye.height - (pupil.height / 2)\n ];\n\n const target = scaleCoordinate({ oldMin, oldMax, newMin, newMax, x: event.clientX, y: event.clientY });\n\n pupilEl.setAttribute('cx', target.x);\n pupilEl.setAttribute('cy', target.y);\n}\n\nexport default class UrbanTransformation extends React.PureComponent {\n constructor () {\n super();\n this.state = {};\n this.googleAll = this.googleAll.bind(this);\n }\n\n componentDidMount () {\n window.fetch(svgUrl)\n .then(res => res.text())\n .then(data => {\n this.svgData = data;\n this.setState({ isLoaded: true });\n })\n .catch(window.log.error);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.isLoaded !== this.state.isLoaded) {\n this.eyes = [\n [\n document.getElementById('urban-left-bus-eye'),\n document.getElementById('urban-left-bus-pupil')\n ],\n [\n document.getElementById('urban-right-bus-eye'),\n document.getElementById('urban-right-bus-pupil')\n ],\n [\n document.getElementById('urban-left-barrier-eye'),\n document.getElementById('urban-left-barrier-pupil')\n ],\n [\n document.getElementById('urban-right-barrier-eye'),\n document.getElementById('urban-right-barrier-pupil')\n ],\n [\n document.getElementById('urban-left-bike-eye'),\n document.getElementById('urban-left-bike-pupil')\n\n ],\n [\n document.getElementById('urban-right-bike-eye'),\n document.getElementById('urban-right-bike-pupil')\n ]\n ];\n\n window.addEventListener('mousemove', this.googleAll);\n }\n }\n\n componentWillUnmount () {\n window.removeEventListener('mousemove', this.googleAll);\n }\n\n googleAll (event) {\n this.eyes.forEach(eye => google(eye, event));\n }\n\n render () {\n if (!this.state.isLoaded) {\n return (\n \n );\n }\n\n return (\n \n );\n }\n}\n","export default function scaleCoordinate(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$oldMin = _ref.oldMin,\n oldMin = _ref$oldMin === void 0 ? [0, 0] : _ref$oldMin,\n _ref$oldMax = _ref.oldMax,\n oldMax = _ref$oldMax === void 0 ? [0, 0] : _ref$oldMax,\n _ref$newMin = _ref.newMin,\n newMin = _ref$newMin === void 0 ? [0, 0] : _ref$newMin,\n _ref$newMax = _ref.newMax,\n newMax = _ref$newMax === void 0 ? [0, 0] : _ref$newMax;\n return {\n x: (newMax[0] - newMin[0]) * (x - oldMin[0]) / (oldMax[0] - oldMin[0]) + newMin[0],\n y: (newMax[1] - newMin[1]) * (y - oldMin[1]) / (oldMax[1] - oldMin[1]) + newMin[1]\n };\n}","import { get } from 'lodash';\nimport { bem, slugify, urlFor, unorphan } from '@global-av-survey/lib/helpers';\n\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { Layout, NotFound } from '../containers';\nimport { CallToAction, FooterNav, Slideshow } from '../components';\n\nimport {\n JobsAndEconomy,\n Mobility,\n Sustainability,\n UrbanTransformation,\n} from '../artwork/scenarios';\n\nimport remark from 'remark';\nimport reactRenderer from 'remark-react';\nimport align from 'remark-align';\nimport zone from 'mdast-zone';\n\nconst SECTIONS = [\n 'download',\n 'intro',\n 'slideshow'\n];\n\nfunction sections () {\n return tree => SECTIONS.forEach(name => zone(tree, name, mutate.bind(null, name)));\n\n function mutate (name, start, nodes, end) {\n return [\n start,\n {\n type: 'element',\n data: {\n hName: 'section',\n hProperties: {\n className: `Scenario__${name}`\n }\n },\n children: nodes,\n },\n end\n ];\n }\n}\n\nfunction unwrapImages () {\n return tree => {\n tree.children = tree.children.map(token => {\n if (token.type !== 'paragraph') return token;\n if (!token.children || token.children[0].type !== 'image') return token;\n return token.children[0];\n });\n\n return tree;\n };\n}\n\nfunction Image ({ alt, src }) {\n const classString = bem({\n name: 'Scenario__image',\n props: {\n illustration: src.includes('svg'),\n photo: !src.includes('svg')\n }\n });\n\n return (\n
\n {alt}\n
\n

{alt}

\n
\n
\n );\n}\n\nfunction mapStateToProps (state, ownProps) {\n const slug = ownProps.match.params.slug;\n const content = state.content.scenarios;\n const key = Object.keys(content).find(key => slugify(content[key].subtitle) === slug);\n\n return {\n pathname: get(state, 'router.location.pathname'),\n scenario: content[key],\n scenarios: get(state, 'content.scenarios'),\n title: key\n };\n}\n\nclass Markdown extends React.PureComponent {\n render () {\n const { scenario, slug } = this.props;\n\n if (!scenario.text) return null;\n\n return remark()\n .use(sections)\n .use(unwrapImages)\n .use(align, {\n left: 'pull-left',\n right: 'pull-right'\n })\n .use(reactRenderer, {\n prefix: slug,\n sanitize: false,\n remarkReactComponents: {\n blockquote: ({ children }) => (\n
\n {children}\n
\n ),\n h1: ({ children }) => (\n

\n {children}\n

\n ),\n h2: ({ children }) => (\n

\n {children}\n

\n ),\n h3: ({ children }) => (\n

\n {children}\n

\n ),\n img: Image,\n section: (props) => {\n switch (props.className) {\n case 'Scenario__download':\n return ;\n case 'Scenario__slideshow':\n return ;\n default:\n return
;\n }\n }\n },\n })\n .processSync(scenario.text).contents;\n }\n}\n\nfunction Poster ({ slug, visibility }) {\n let Component;\n if (slug === 'mobility') Component = Mobility;\n if (slug === 'jobs-and-the-economy') Component = JobsAndEconomy;\n if (slug === 'sustainability') Component = Sustainability;\n if (slug === 'urban-transformation') Component = UrbanTransformation;\n\n if (!Component) return null;\n return ;\n}\n\nclass Scenario extends React.PureComponent {\n componentDidMount () {\n unorphan('.Scenarios__body > div > p');\n }\n\n componentDidUpdate () {\n unorphan('.Scenarios__body > div > p');\n }\n\n render () {\n const { match, pathname, scenario, scenarios, title, visibility } = this.props;\n\n if (!scenario) return ;\n\n const slug = match.params.slug;\n\n const links = Object.keys(scenarios)\n .filter(title => urlFor('scenario', scenarios[title]) !== pathname)\n .map(title => ({\n color: scenarios[title].color,\n text: title,\n url: urlFor('scenario', scenarios[title])\n }));\n\n return (\n \n
\n

{scenario.subtitle}

\n \n
\n

{scenario.lead}

\n
\n \n
\n \n
\n
\n
\n );\n }\n}\n\nexport default connect(mapStateToProps)(Scenario);\n","import { slugify, unorphan, urlFor } from '@global-av-survey/lib/helpers';\n\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Layout } from '../containers';\nimport { OffsiteLink } from '../components';\n\nimport jobsAndEconomyUrl from '../artwork/scenarios/jobs-and-economy.jpg';\nimport jobsAndEconomy2xUrl from '../artwork/scenarios/jobs-and-economy@2x.jpg';\nimport mobilityUrl from '../artwork/scenarios/mobility.jpg';\nimport mobility2xUrl from '../artwork/scenarios/mobility@2x.jpg';\nimport sustainabilityUrl from '../artwork/scenarios/sustainability.jpg';\nimport sustainability2xUrl from '../artwork/scenarios/sustainability@2x.jpg';\nimport urbanTransformationUrl from '../artwork/scenarios/urban-transformation.jpg';\nimport urbanTransformation2xUrl from '../artwork/scenarios/urban-transformation@2x.jpg';\n\nfunction mapStateToProps (state) {\n return {\n scenarios: Object.keys(state.content.scenarios).map(title => ({\n title,\n ...state.content.scenarios[title],\n }))\n };\n}\n\nconst artwork = {\n 'jobs-and-the-economy': {\n src: jobsAndEconomyUrl,\n srcSet: `${jobsAndEconomyUrl} 1x, ${jobsAndEconomy2xUrl} 2x`,\n width: 600,\n height: 400\n },\n 'mobility': {\n src: mobilityUrl,\n srcSet: `${mobilityUrl} 1x, ${mobility2xUrl} 2x`,\n width: 600,\n height: 400\n },\n 'sustainability': {\n src: sustainabilityUrl,\n srcSet: `${sustainabilityUrl} 1x, ${sustainability2xUrl} 2x`,\n width: 600,\n height: 400\n },\n 'urban-transformation': {\n src: urbanTransformationUrl,\n srcSet: `${urbanTransformationUrl} 1x, ${urbanTransformation2xUrl} 2x`,\n width: 600,\n height: 400\n }\n};\n\nfunction Scenario ({ scenario }) {\n const props = {\n to: urlFor('scenario', scenario),\n className: 'Scenarios__item',\n style: {\n backgroundColor: scenario.color\n }\n };\n\n const slug = slugify(scenario.subtitle);\n\n return (\n \n

{scenario.subtitle}:

\n

{scenario.title}

\n \n \n );\n}\n\nclass Scenarios extends React.PureComponent {\n componentDidMount () {\n unorphan('p');\n }\n\n componentDidUpdate () {\n unorphan('p');\n }\n\n\n render () {\n const { scenarios } = this.props;\n\n return (\n \n
\n
\n
\n

\n The full story of autonomous vehicles is yet to be written. We created four stories that explain how cities could shape the driverless future.\n

\n\n
\n {scenarios.map((scenario, index) => )}\n
\n\n

\n The unstoppable forces of automation and artificial intelligence are changing the way we move through, work in, and design cities.\n

\n\n
\n
\n

\n Autonomous vehicles (AVs) are already on our streets, with pilots taking place in cities nationwide. Before long, we can expect to see thousands of autonomous vehicles on roadways, autonomous buses and transit vehicles providing rides, and autonomous conveyors shuttling back and forth on sidewalks making deliveries.\n

\n

\n The full story, however has not yet been written. While we will inevitably see rapid expansion of autonomous transportation in commercial trucks, driverless buses, trains, shuttles, and more—transportation systems as a whole will also be revolutionized. Yet this change comes at a time when our shared networks – vital arteries for commerce and interaction - are already clogged.\n

\n

\n So while technology has the potential to address the challenges facing these platforms for commerce and human interaction, effective government will be critical in pushing innovation forward. That future is already starting to unfold, but cities can prepare themselves to play a more informed, active role in shaping it.\n

\n
\n
\n

\n This is why at the National League of Cities we have developed—and continue to work on—a series of research reports and analyses to help city leaders prepare for these shifts.\n

\n

\n Explore the links below to see four possible futures that describe what AVs could mean for cities. The scenarios, developed by the Bloomberg Aspen Initiative on Cities and Autonomous Vehicles, and reported by journalist Greg Lindsay, are part and parcel of NLC’s larger initiative to provide city leaders with the tools that they need to build our cities of the future.\n

\n

\n For cities that want to get up to speed quickly on key facts, emerging trends, and urban policy issues raised by the arrival of autonomous vehicles and found out more about how cities are taking a hands-on approach to learning, Bloomberg Philanthropies has published a primer and a global atlas of city-led AV pilots covering more than 100 city-led AV pilots worldwide.\n

\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default connect(mapStateToProps)(Scenarios);\n","//import { unorphan } from '@global-av-survey/lib/helpers';\nimport React from 'react';\nimport { Layout } from '.';\nimport { OffsiteLink } from '../components';\n\n// using the About page CSS\nexport default class AboutScenarios extends React.PureComponent {\n componentDidMount () {\n //unorphan();\n }\n\n componentDidUpdate () {\n //unorphan();\n }\n\n render () {\n\n return (\n \n
\n
\n

\n About this Site\n

\n
\n
\n

\n The scenarios on this website were developed by Bits and Atoms and Dash Marshall with support from the Bloomberg Aspen Initiative on Cities and Autonomous Vehicles.\n

\n\n

\n Foresight and Scenario Development: Bits and Atoms and Dash Marshall\n

\n

\n Production Coordination: Melissa De la Cruz\n

\n

\n Graphic design and Illustration: Ryan Thacker\n

\n

\n Code: Push the Red Button\n

\n

\n Scenario reporting: Greg Lindsay\n

\n

\n Scenario Illustrations: Kristin Boydstun, Nick Iluzada, and Studio Muti\n

\n

\n Scenario Advisory Group:\n Shaun Abrahamson (Urban.Us),\n Varun Adhibatla (Argo),\n Francesca Birks (Arup),\n Garry Golden (FutureThink),\n Eric Goldwyn (NYU Marron Institute),\n Greg Lindsay (Senior Fellow, New Cities),\n Chelsea Mauldin (Public Policy Lab),\n Ritchie Yao (Dash Marshall)\n

\n
\n
\n
\n );\n }\n}\n","import _objectSpread from \"/home/circleci/global-av-survey/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread\";\nimport 'scrollingelement'; // polyfill document.scrollingElement\n\nimport browser from 'bowser'; // IE 11 polyfills\n\nimport 'core-js/fn/array/find';\nimport 'core-js/fn/array/includes';\nimport 'core-js/fn/string/includes';\nimport 'core-js/fn/string/repeat';\nimport 'core-js/fn/math/sign';\nimport 'core-js/fn/math/trunc';\nimport 'core-js/fn/number/is-nan';\nimport 'core-js/fn/object/assign';\nimport 'core-js/fn/object/values';\nimport 'core-js/fn/symbol';\nimport 'core-js/fn/typed/uint8-clamped-array';\nimport 'dom4'; // for SVG classList\n// helpers\n\nimport { generate as UID } from 'shortid'; // logging\n\nimport { default as log, logRoutes } from './helpers/logger';\nimport Raven from 'raven-js';\nimport createRavenMiddleware from 'raven-for-redux'; // react\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Switch } from 'react-router-dom';\nimport { ConnectedRouter, routerReducer, routerMiddleware } from 'react-router-redux';\nimport { createBrowserHistory } from 'history';\nimport { applyMiddleware, createStore, combineReducers, compose } from 'redux';\nimport { Provider } from 'react-redux';\nimport * as actions from './state/actions';\nimport reducers from './state/reducers';\nimport uiReducers from './state/reducers.ui';\nexport default function init(_ref) {\n var content = _ref.content,\n routes = _ref.routes,\n svgBundleUrl = _ref.svgBundleUrl;\n if (browser.msie && browser.version <= 11) window.location = 'http://outdatedbrowser.com'; // routing\n\n var history = createBrowserHistory();\n history.listen(function () {\n if (!window.tetherTooltips) return;\n window.tetherTooltips.forEach(function (t) {\n return t.close();\n });\n });\n var ROUTES = routes.map(function (route) {\n return _objectSpread({}, route, {\n key: UID()\n });\n });\n if (process.env.NODE_ENV !== 'production') logRoutes(ROUTES); // redux\n\n var enhancer = compose(applyMiddleware(routerMiddleware(history)), applyMiddleware(createRavenMiddleware(Raven)), window.devToolsExtension ? window.devToolsExtension() : function (f) {\n return f;\n });\n var store = createStore(combineReducers({\n content: reducers,\n router: routerReducer,\n ui: uiReducers\n }), {}, enhancer); // logging\n\n window.log = log;\n if (process.env.NODE_ENV !== 'production') log.setLevel('debug');\n var SENTRY_DSN = process.env.REACT_APP_SENTRY_DSN;\n\n if (SENTRY_DSN) {\n Raven.config(SENTRY_DSN).install();\n window.Raven = Raven;\n if (/testException/.test(window.location.search)) test.reduce(function () {\n return true;\n });\n } // fetch svg sprite and mount\n\n\n store.dispatch(actions.getContent(content));\n window.fetch(svgBundleUrl).then(function (res) {\n return res.text();\n }).then(function (svgData) {\n document.querySelector('#svg').insertAdjacentHTML('beforeend', svgData);\n mount({\n store: store,\n history: history,\n routes: ROUTES\n });\n }).catch(log.error);\n}\n\nfunction mount(_ref2) {\n var store = _ref2.store,\n history = _ref2.history,\n routes = _ref2.routes;\n var rootEl = document.getElementById('root');\n var tree = React.createElement(Provider, {\n store: store\n }, React.createElement(ConnectedRouter, {\n history: history\n }, React.createElement(Switch, {}, routes)));\n if (rootEl.firstChild) rootEl.removeChild(rootEl.firstChild);\n rootEl.hasChildNodes() ? ReactDOM.hydrate(tree, rootEl) : ReactDOM.render(tree, rootEl);\n}","import './bundle.css';\nimport svgBundleUrl from './bundle.svg';\nimport init from '@global-av-survey/lib/init';\n\nimport React from 'react';\nimport { Route } from 'react-router-dom';\nimport { NotFound, Scenario, Scenarios, AboutScenarios } from './containers';\n\nimport content from './content.json';\n\nconst routes = [\n ,\n ,\n ,\n \n];\n\ninit({\n routes,\n svgBundleUrl,\n content: { ...content }\n});\n","var kebabCase = require('lodash/kebabCase');\n\nfunction slugify() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return kebabCase(text.replace(/&/g, 'and'));\n}\n\nmodule.exports = slugify;","module.exports = __webpack_public_path__ + \"static/media/jobs-and-economy.62d241cd.jpg\";","module.exports = __webpack_public_path__ + \"static/media/mobility.4fd368f9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/sustainability.29d9fd71.jpg\";","module.exports = __webpack_public_path__ + \"static/media/urban-transformation.df87dddc.jpg\";"],"sourceRoot":""}