{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?9ed0","webpack:///./src/App.vue","webpack:///./src/modules/windy.js","webpack:///src/App.vue","webpack:///./src/App.vue?60d0","webpack:///./src/App.vue?315a","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_c","_self","directives","rawName","caption","dat","expression","staticClass","attrs","on","shortcuts","showDat","model","mapCountryLineWidth","callback","$$v","mapCountryLineOpacity","mapLandColor","mapSatelliteOpacity","compositeOptions","compositeSelected","birdsOn","birdsColor","birdsActive","VELOCITY_SCALE","$set","MAX_PARTICLE_AGE","PARTICLE_MULTIPLIER","FADE_TRANSPARENCY","COLOR_ALPHA","mammalsOn","mammalsColor","mammalsActive","amphibsOn","amphibsColor","amphibsActive","_e","showCaption","_m","style","_v","toggleDat","class","hide","staticStyle","staticRenderFns","Windy","params","config","INTENSITY_SCALE_STEP","MAX_WIND_INTENSITY","PARTICLE_LINE_WIDTH","FRAME_RATE","NULL_WIND_VECTOR","FADE_FILL_STYLE","COLOR_RAMP","COMPOSITE_OPERATION","bilinearInterpolateVector","x","y","g00","g10","g01","g11","rx","ry","a","b","u","v","Math","sqrt","createWindBuilder","uComp","vComp","uData","vData","header","interpolate","createBuilder","forEach","record","parameterCategory","parameterNumber","buildGrid","builder","λ0","lo1","φ0","la1","Δλ","dx","Δφ","dy","ni","nx","nj","ny","date","Date","refTime","setHours","getHours","forecastTime","grid","isContinuous","floor","row","λ","φ","floorMod","fi","ci","fj","cj","isValue","undefined","distort","projection","scale","wind","windy","distortion","τ","PI","H","pow","hλ","hφ","pλ","project","pφ","k","cos","createField","columns","bounds","field","column","round","release","randomize","safetyNet","random","width","height","buildBounds","upperLeft","lowerRight","max","yMax","min","ceil","xMax","deg2rad","deg","rad2deg","ang","invert","mapLonDelta","east","west","worldMapRadius","mapOffsetY","log","sin","south","equatorY","lat","atan","exp","lon","mercY","tan","ymin","ymax","north","xFactor","yFactor","y2","interpolateField","extent","velocityScale","interpolateColumn","coord","isFinite","batchInterpolate","start","now","setTimeout","animate","windIntensityColorScale","step","maxWind","indexFor","colorStyles","buckets","map","particleCount","particles","age","evolve","bucket","particle","xt","yt","g","canvas","getContext","powerPreference","draw","prev","globalCompositeOperation","fillRect","globalAlpha","beginPath","strokeStyle","moveTo","lineTo","stroke","lineWidth","fillStyle","frame","timer","requestAnimationFrame","e","console","error","activeFlowConfig","particleLineWidth","mapBounds","stop","clearTimeout","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","mapLandOpacity","mapWaterColor","mapWaterOpacity","mapLakeColor","mapLakeOpacity","mapCountryLineColor","mapCountryLabels","mapCityLabels","mapRoadsOpacity","activeScenario","amphibsActive2","birdsActive2","mammalsActive2","titleFontSize","zoomWidth","default","z2","z3","z4","z5","z6","z7","scene1","amphibs","NaN","spData","spName","sceneName","birds","mammals","scene2","scene4","scene5","scene6","scene7","activeContentStep","methods","debounce","func","wait","timeout","args","event","srcKey","toggleCaption","flyToLocation","location","locations","SA","coords","zoom","NA","West","West2","WestTight","East","World","flyTo","center","speed","curve","essential","fadeOpacity","layer","fadeDirection","fadeTime","self","counter","opacityFader","setInterval","clearInterval","removeDiv","divId","removeTime","document","getElementById","remove","createMap","mapboxgl","accessToken","Map","container","attributionControl","hash","dragRotate","disable","touchZoomRotate","disableRotation","keyboard","addControl","NavigationControl","showCompass","setPaintProperty","calculateParticleWidth","zoomLevel","getZoom","particleWidth","buildFlow","divName","windyContainer","cssClassArray","fetch","then","json","parentNode","canvasNode","createElement","resetWind","mapcanvas","obj","getEventObject","context","devicePixelRatio","display","getContainer","dimensions","clientWidth","clientHeight","getCanvas","getBounds","getNorth","getSouth","getWest","getEast","id","className","classList","add","appendChild","captionState","loadFlowLayers","amphibsActiveWindy","birdsActiveWindy","mammalsActiveWindy","nextContent","previousContent","mounted","watch","handler","labelState","labelVisibility","setLayoutProperty","opacity","color","deep","currentZoom","zoomTo","computed","activeContent","content","text","amphibsConfig","JSON","parse","stringify","birdsConfig","mammalsConfig","component","Vue","productionTip","use","require","DatGui","h","App","$mount"],"mappings":"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","file":"js/app.d9e43062.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=78e1f482&prod&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({\n caption: ['ctrl', 'c'],\n dat: ['ctrl', 'u'],\n }),expression:\"{\\n caption: ['ctrl', 'c'],\\n dat: ['ctrl', 'u'],\\n }\"}],staticClass:\"nocursor\",attrs:{\"id\":\"app\"},on:{\"shortkey\":_vm.shortcuts}},[_c('keep-alive',[(_vm.showDat)?_c('div',[_c('dat-gui',{staticClass:\"dat-gui-ui\",attrs:{\"closeText\":\"Close controls\",\"openText\":\"Open controls\",\"closePosition\":\"bottom\"}},[_c('dat-folder',{attrs:{\"label\":\"Map Properties\"}},[_c('dat-number',{attrs:{\"min\":0,\"max\":4,\"step\":0.1,\"label\":\"Country Line Width\"},model:{value:(_vm.mapCountryLineWidth),callback:function ($$v) {_vm.mapCountryLineWidth=$$v},expression:\"mapCountryLineWidth\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Country Line Opacity\"},model:{value:(_vm.mapCountryLineOpacity),callback:function ($$v) {_vm.mapCountryLineOpacity=$$v},expression:\"mapCountryLineOpacity\"}}),_c('dat-color',{attrs:{\"label\":\"Land Color\"},model:{value:(_vm.mapLandColor),callback:function ($$v) {_vm.mapLandColor=$$v},expression:\"mapLandColor\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.005,\"label\":\"Satellite Opacity\"},model:{value:(_vm.mapSatelliteOpacity),callback:function ($$v) {_vm.mapSatelliteOpacity=$$v},expression:\"mapSatelliteOpacity\"}}),_c('dat-select',{attrs:{\"items\":_vm.compositeOptions,\"label\":\"Composite Operation\"},model:{value:(_vm.compositeSelected),callback:function ($$v) {_vm.compositeSelected=$$v},expression:\"compositeSelected\"}})],1),_c('dat-folder',{attrs:{\"label\":\"Birds\"}},[_c('dat-boolean',{attrs:{\"label\":\"Display Layer\"},model:{value:(_vm.birdsOn),callback:function ($$v) {_vm.birdsOn=$$v},expression:\"birdsOn\"}}),_c('dat-color',{attrs:{\"label\":\"Birds Color\"},model:{value:(_vm.birdsColor),callback:function ($$v) {_vm.birdsColor=$$v},expression:\"birdsColor\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Velocity Scale\"},model:{value:(_vm.birdsActive.VELOCITY_SCALE),callback:function ($$v) {_vm.$set(_vm.birdsActive, \"VELOCITY_SCALE\", $$v)},expression:\"birdsActive.VELOCITY_SCALE\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":200,\"step\":1,\"label\":\"Max Particle Age\"},model:{value:(_vm.birdsActive.MAX_PARTICLE_AGE),callback:function ($$v) {_vm.$set(_vm.birdsActive, \"MAX_PARTICLE_AGE\", $$v)},expression:\"birdsActive.MAX_PARTICLE_AGE\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":2,\"step\":0.05,\"label\":\"Particle Multiplier\"},model:{value:(_vm.birdsActive.PARTICLE_MULTIPLIER),callback:function ($$v) {_vm.$set(_vm.birdsActive, \"PARTICLE_MULTIPLIER\", $$v)},expression:\"birdsActive.PARTICLE_MULTIPLIER\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Fade Transparency\"},model:{value:(_vm.birdsActive.FADE_TRANSPARENCY),callback:function ($$v) {_vm.$set(_vm.birdsActive, \"FADE_TRANSPARENCY\", $$v)},expression:\"birdsActive.FADE_TRANSPARENCY\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Color Alpha\"},model:{value:(_vm.birdsActive.COLOR_ALPHA),callback:function ($$v) {_vm.$set(_vm.birdsActive, \"COLOR_ALPHA\", $$v)},expression:\"birdsActive.COLOR_ALPHA\"}})],1),_c('dat-folder',{attrs:{\"label\":\"Mammals\"}},[_c('dat-boolean',{attrs:{\"label\":\"Display Layer\"},model:{value:(_vm.mammalsOn),callback:function ($$v) {_vm.mammalsOn=$$v},expression:\"mammalsOn\"}}),_c('dat-color',{attrs:{\"label\":\"Mammals Color\"},model:{value:(_vm.mammalsColor),callback:function ($$v) {_vm.mammalsColor=$$v},expression:\"mammalsColor\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Velocity Scale\"},model:{value:(_vm.mammalsActive.VELOCITY_SCALE),callback:function ($$v) {_vm.$set(_vm.mammalsActive, \"VELOCITY_SCALE\", $$v)},expression:\"mammalsActive.VELOCITY_SCALE\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":200,\"step\":1,\"label\":\"Max Particle Age\"},model:{value:(_vm.mammalsActive.MAX_PARTICLE_AGE),callback:function ($$v) {_vm.$set(_vm.mammalsActive, \"MAX_PARTICLE_AGE\", $$v)},expression:\"mammalsActive.MAX_PARTICLE_AGE\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":2,\"step\":0.05,\"label\":\"Particle Multiplier\"},model:{value:(_vm.mammalsActive.PARTICLE_MULTIPLIER),callback:function ($$v) {_vm.$set(_vm.mammalsActive, \"PARTICLE_MULTIPLIER\", $$v)},expression:\"mammalsActive.PARTICLE_MULTIPLIER\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Fade Transparency\"},model:{value:(_vm.mammalsActive.FADE_TRANSPARENCY),callback:function ($$v) {_vm.$set(_vm.mammalsActive, \"FADE_TRANSPARENCY\", $$v)},expression:\"mammalsActive.FADE_TRANSPARENCY\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Color Alpha\"},model:{value:(_vm.mammalsActive.COLOR_ALPHA),callback:function ($$v) {_vm.$set(_vm.mammalsActive, \"COLOR_ALPHA\", $$v)},expression:\"mammalsActive.COLOR_ALPHA\"}})],1),_c('dat-folder',{attrs:{\"label\":\"Amphibians\"}},[_c('dat-boolean',{attrs:{\"label\":\"Display Layer\"},model:{value:(_vm.amphibsOn),callback:function ($$v) {_vm.amphibsOn=$$v},expression:\"amphibsOn\"}}),_c('dat-color',{attrs:{\"label\":\"Amphibs Color\"},model:{value:(_vm.amphibsColor),callback:function ($$v) {_vm.amphibsColor=$$v},expression:\"amphibsColor\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Velocity Scale\"},model:{value:(_vm.amphibsActive.VELOCITY_SCALE),callback:function ($$v) {_vm.$set(_vm.amphibsActive, \"VELOCITY_SCALE\", $$v)},expression:\"amphibsActive.VELOCITY_SCALE\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":200,\"step\":1,\"label\":\"Max Particle Age\"},model:{value:(_vm.amphibsActive.MAX_PARTICLE_AGE),callback:function ($$v) {_vm.$set(_vm.amphibsActive, \"MAX_PARTICLE_AGE\", $$v)},expression:\"amphibsActive.MAX_PARTICLE_AGE\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":2,\"step\":0.05,\"label\":\"Particle Multiplier\"},model:{value:(_vm.amphibsActive.PARTICLE_MULTIPLIER),callback:function ($$v) {_vm.$set(_vm.amphibsActive, \"PARTICLE_MULTIPLIER\", $$v)},expression:\"amphibsActive.PARTICLE_MULTIPLIER\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Fade Transparency\"},model:{value:(_vm.amphibsActive.FADE_TRANSPARENCY),callback:function ($$v) {_vm.$set(_vm.amphibsActive, \"FADE_TRANSPARENCY\", $$v)},expression:\"amphibsActive.FADE_TRANSPARENCY\"}}),_c('dat-number',{attrs:{\"min\":0,\"max\":1,\"step\":0.01,\"label\":\"Color Alpha\"},model:{value:(_vm.amphibsActive.COLOR_ALPHA),callback:function ($$v) {_vm.$set(_vm.amphibsActive, \"COLOR_ALPHA\", $$v)},expression:\"amphibsActive.COLOR_ALPHA\"}})],1)],1)],1):_vm._e()]),(_vm.showCaption)?_c('div',{attrs:{\"id\":\"viz-meta\"}},[_vm._m(0),_c('div',{attrs:{\"id\":\"legend-inline\"}},[(_vm.birdsOn)?_c('div',{staticClass:\"legend-item-inline\"},[_c('div',{staticClass:\"legend-color\",style:({ 'background-color': _vm.birdsColor })}),_c('div',{staticClass:\"legend-text\"},[_vm._v(\"Birds\")])]):_vm._e(),(_vm.mammalsOn)?_c('div',{staticClass:\"legend-item-inline\"},[_c('div',{staticClass:\"legend-color\",style:({ 'background-color': _vm.mammalsColor })}),_c('div',{staticClass:\"legend-text\"},[_vm._v(\"Mammals\")])]):_vm._e(),(_vm.amphibsOn)?_c('div',{staticClass:\"legend-item-inline\"},[_c('div',{staticClass:\"legend-color\",style:({ 'background-color': _vm.amphibsColor })}),_c('div',{staticClass:\"legend-text\"},[_vm._v(\"Amphibians\")])]):_vm._e()]),_c('div',[_c('p',[_vm._v(\" As climate change alters habitats and disrupts ecosystems, where will animals move to survive? And will human development prevent them from getting there? \")]),_c('p',[_vm._v(\" This map shows the average direction mammals, birds, and amphibians need to move to track hospitable climates as they shift across the landscape. ↓ \")]),_c('h2',[_vm._v(\"How?\")]),_c('p',[_vm._v(\" Researchers from University of Washington and The Nature Conservancy modeled potential habitat for 2954 species using climate change projections and the climatic needs of each species. \")]),_vm._m(1),_c('h2',[_vm._v(\"What Can We Do?\")]),_vm._m(2),_c('h2',[_vm._v(\"So...\")]),_vm._m(3),_vm._m(4),_c('h2',[_vm._v(\"Credits\")]),_vm._m(5),_vm._m(6),_c('h2',[_vm._v(\"Bonus Fun!\")]),_vm._m(7),_c('div',{attrs:{\"id\":\"switch-container\"}},[_c('label',{staticClass:\"switch\"},[_c('input',{attrs:{\"type\":\"checkbox\"},on:{\"click\":_vm.toggleDat}}),_c('span',{staticClass:\"slider round\"})]),_c('span',{staticClass:\"switch-label\"},[_vm._v(\"Visualization Controls\")])]),_c('h2',[_vm._v(\"References\")]),_vm._m(8),_vm._m(9)]),_c('img',{staticClass:\"tnc-logo\",attrs:{\"src\":\"tnc-logo-light.svg\",\"alt\":\"The Nature Conservancy\"}})]):_vm._e(),_c('div',{staticClass:\"wind-map-container nocursor\",class:{ hide: !_vm.birdsOn },staticStyle:{\"display\":\"initial\"},attrs:{\"id\":\"windContainerbirds\"}}),_c('div',{staticClass:\"wind-map-container nocursor\",class:{ hide: !_vm.mammalsOn },staticStyle:{\"display\":\"initial\"},attrs:{\"id\":\"windContainermammals\"}}),_c('div',{staticClass:\"wind-map-container nocursor\",class:{ hide: !_vm.amphibsOn },staticStyle:{\"display\":\"initial\"},attrs:{\"id\":\"windContaineramphibs\"}}),_vm._m(10)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h1',[_vm._v(\"Migrations \"),_c('br',{staticClass:\"title-break\"}),_vm._v(\"In Motion\")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" Using flow models from \"),_c('a',{attrs:{\"href\":\"https://www.circuitscape.org/\",\"target\":\"_blank\"}},[_vm._v(\"electronic circuit theory\")]),_vm._v(\", they plotted movement routes for each species, connecting current habitats with their projected locations under climate change. \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" There are a number of ways that conservationists and land managers can \"),_c('a',{attrs:{\"href\":\"https://blog.nature.org/science/2016/06/29/species-on-the-move-mapping-barriers-for-wildlife-in-a-warming-world/?utm_source=cgs&utm_medium=alsoin&utm_campaign=migrations\",\"target\":\"_blank\"}},[_vm._v(\"re-build or maintain connectivity\")]),_vm._v(\" to improve species’ ability to adapt to warmer temperatures. Removing fencing, adding wildlife overpasses (or underpasses) to major roadways, and better routing of infrastructure like pipelines and powerlines can all help re-connect areas fragmented by human development. \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_c('strong',[_vm._v(\"Q: Does this mean 3000 species will move through my backyard because of climate change?\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_c('strong',[_vm._v(\"A:\")]),_vm._v(\" No, the researchers used coarse 50 km data, which is good for understanding the big picture view, but not good for understanding local patterns. \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" This map was created by \"),_c('a',{attrs:{\"href\":\"mailto:dmajka@tnc.org\",\"target\":\"_blank\"}},[_vm._v(\"Dan Majka\")]),_vm._v(\", who works for The Nature Conservancy's North America Region science team. \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" This work would have not been possible without the \"),_c('a',{attrs:{\"href\":\"https://blog.nature.org/science/2018/04/26/innovation-for-conservation-brad-mcrae-1966-2017/\",\"target\":\"_blank\"}},[_vm._v(\"pioneering connectivity science of Brad McRae (1966-2017)\")]),_vm._v(\". \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" The visualization uses code adapted from \"),_c('a',{attrs:{\"href\":\"https://github.com/FreshyLabs/windy\"}},[_vm._v(\"windy-js\")]),_vm._v(\", which adapated code from the \"),_c('a',{attrs:{\"href\":\"https://github.com/cambecc/earth\"}},[_vm._v(\"earth 3D wind visualization\")]),_vm._v(\", which was inspired by \"),_c('a',{attrs:{\"href\":\"http://hint.fm/wind/\"}},[_vm._v(\"hint.fm/wind\")]),_vm._v(\", which is based on the concept of \"),_c('a',{attrs:{\"href\":\"https://natureofcode.com/autonomous-agents/#flow-fields\"}},[_vm._v(\"flow fields\")]),_vm._v(\". To experiment with some of the underlying parameters, turn on controls: \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" Lawler, JJ, et al. 2013. \"),_c('a',{attrs:{\"href\":\"https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=68af63ecff902864920e93168c7d474392f4520a\",\"target\":\"_blank\"}},[_vm._v(\"Projected climate-driven faunal movement routes\")]),_vm._v(\". Ecology Letters 16(8): 1014-1022. \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" McGuire, JL, et al. 2016. \"),_c('a',{attrs:{\"href\":\"http://www.pnas.org/content/113/26/7195.abstract\",\"target\":\"_blank\"}},[_vm._v(\"Achieving climate connectivity in a fragmented landscape\")]),_vm._v(\". Proceedings of the National Academy of Sciences: 113: 7195-7200. \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"mapbox-map-container nocursor\"},[_c('div',{staticClass:\"nocursor\",attrs:{\"id\":\"map\"}})])\n}]\n\nexport { render, staticRenderFns }","/* Global class for simulating the movement of particle through a 1km wind grid\n\n credit: All the credit for this work goes to: https://github.com/cambecc for creating the repo:\n https://github.com/cambecc/earth. The majority of this code is directly take nfrom there, since its awesome.\n\n This class takes a canvas element and an array of data (1km GFS from http://www.emc.ncep.noaa.gov/index.php?branch=GFS)\n and then uses a mercator (forward/reverse) projection to correctly map wind vectors in \"map space\".\n\n The \"start\" method takes the bounds of the map at its current extent and starts the whole gridding,\n interpolation and animation process.\n*/\n\nexport function Windy(params, config) {\n var VELOCITY_SCALE = config.VELOCITY_SCALE; // 0.221; // scale for wind velocity (completely arbitrary--this value looks nice)\n // var OVERLAY_ALPHA = config.OVERLAY_ALPHA;\n var INTENSITY_SCALE_STEP = config.INTENSITY_SCALE_STEP; // 10; // step size of particle intensity color scale\n var MAX_WIND_INTENSITY = config.MAX_WIND_INTENSITY; // 40; // wind velocity at which particle intensity is maximum (m/s)\n\n var MAX_PARTICLE_AGE = config.MAX_PARTICLE_AGE; // 100; // max number of frames a particle is drawn before regeneration\n var PARTICLE_LINE_WIDTH = config.PARTICLE_LINE_WIDTH; // 0.6; // line width of a drawn particle\n //var PARTICLE_MULTIPLIER = config.PARTICLE_MULTIPLIER; // 1 / 200; // particle count scalar (completely arbitrary--this values looks nice). Changing this for Vue app\n var PARTICLE_MULTIPLIER = config.PARTICLE_MULTIPLIER / 100; // 1/300 .001 .002 (500), .0033 (300), .004 (250) .005 (200), .01 (100) .02 (50)\n\n // var PARTICLE_REDUCTION = config.PARTICLE_REDUCTION; // 0.5; // reduce particle count to this much of normal for mobile devices\n var FRAME_RATE = config.FRAME_RATE; // 60; // desired milliseconds per frame\n\n //var BOUNDARY = 0.45;\n\n var NULL_WIND_VECTOR = config.NULL_WIND_VECTOR; // [NaN, NaN, null]; // singleton for no wind in the form: [u, v, magnitude]\n //var TRANSPARENT_BLACK = [0, 0, 0, 0]; // [255, 0, 0, 0];\n var FADE_FILL_STYLE = config.FADE_FILL_STYLE; // \"rgba(0, 0, 0, 0.97)\"\n //var COLOR_RAMP = config.COLOR_RAMP; // Changing input from array to string in order to sync w/ DAT. Now pushing it into an array in windy.\n var COLOR_RAMP = [config.COLOR_RAMP];\n var COMPOSITE_OPERATION = config.COMPOSITE_OPERATION;\n var COLOR_ALPHA = config.COLOR_ALPHA;\n // var COLOR_ALPHA = config.COLOR_ALPHA;\n\n //var τ = 2 * Math.PI;\n //var H = Math.pow(10, -5.2);\n\n // interpolation for vectors like wind (u,v,m)\n var bilinearInterpolateVector = function (x, y, g00, g10, g01, g11) {\n var rx = 1 - x;\n var ry = 1 - y;\n var a = rx * ry,\n b = x * ry,\n c = rx * y,\n d = x * y;\n var u = g00[0] * a + g10[0] * b + g01[0] * c + g11[0] * d;\n var v = g00[1] * a + g10[1] * b + g01[1] * c + g11[1] * d;\n return [u, v, Math.sqrt(u * u + v * v)];\n };\n\n var createWindBuilder = function (uComp, vComp) {\n var uData = uComp.data,\n vData = vComp.data;\n return {\n header: uComp.header,\n //recipe: recipeFor(\"wind-\" + uComp.header.surface1Value),\n data: function (i) {\n return [uData[i], vData[i]];\n },\n interpolate: bilinearInterpolateVector,\n };\n };\n\n var createBuilder = function (data) {\n var uComp = null,\n vComp = null;\n //var scalar = null;\n\n data.forEach(function (record) {\n // let scalar = null;\n switch (\n record.header.parameterCategory +\n \",\" +\n record.header.parameterNumber\n ) {\n case \"2,2\":\n uComp = record;\n break;\n case \"2,3\":\n vComp = record;\n break;\n // default:\n // scalar = record;\n }\n });\n\n return createWindBuilder(uComp, vComp);\n };\n\n var buildGrid = function (data, callback) {\n var builder = createBuilder(data);\n\n var header = builder.header;\n var λ0 = header.lo1,\n φ0 = header.la1; // the grid's origin (e.g., 0.0E, 90.0N)\n var Δλ = header.dx,\n Δφ = header.dy; // distance between grid points (e.g., 2.5 deg lon, 2.5 deg lat)\n var ni = header.nx,\n nj = header.ny; // number of grid points W-E and N-S (e.g., 144 x 73)\n var date = new Date(header.refTime);\n date.setHours(date.getHours() + header.forecastTime);\n\n // Scan mode 0 assumed. Longitude increases from λ0, and latitude decreases from φ0.\n // http://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_table3-4.shtml\n var grid = [],\n p = 0;\n var isContinuous = Math.floor(ni * Δλ) >= 360;\n for (var j = 0; j < nj; j++) {\n var row = [];\n for (var i = 0; i < ni; i++, p++) {\n row[i] = builder.data(p);\n }\n if (isContinuous) {\n // For wrapped grids, duplicate first column as last column to simplify interpolation logic\n row.push(row[0]);\n }\n grid[j] = row;\n }\n\n function interpolate(λ, φ) {\n var i = floorMod(λ - λ0, 360) / Δλ; // calculate longitude index in wrapped range [0, 360)\n var j = (φ0 - φ) / Δφ; // calculate latitude index in direction +90 to -90\n\n var fi = Math.floor(i),\n ci = fi + 1;\n var fj = Math.floor(j),\n cj = fj + 1;\n\n var row;\n if ((row = grid[fj])) {\n var g00 = row[fi];\n var g10 = row[ci];\n if (isValue(g00) && isValue(g10) && (row = grid[cj])) {\n var g01 = row[fi];\n var g11 = row[ci];\n if (isValue(g01) && isValue(g11)) {\n // All four points found, so interpolate the value.\n return builder.interpolate(i - fi, j - fj, g00, g10, g01, g11);\n }\n }\n }\n return null;\n }\n callback({\n date: date,\n interpolate: interpolate,\n });\n };\n\n /**\n * @returns {Boolean} true if the specified value is not null and not undefined.\n */\n var isValue = function (x) {\n return x !== null && x !== undefined;\n };\n\n /**\n * @returns {Number} returns remainder of floored division, i.e., floor(a / n). Useful for consistent modulo\n * of negative numbers. See http://en.wikipedia.org/wiki/Modulo_operation.\n */\n var floorMod = function (a, n) {\n return a - n * Math.floor(a / n);\n };\n\n /**\n * @returns {Number} the value x clamped to the range [low, high].\n */\n // var clamp = function(x, range) {\n // return Math.max(range[0], Math.min(x, range[1]));\n // };\n\n /**\n * @returns {Boolean} true if agent is probably a mobile device. Don't really care if this is accurate.\n */\n // var isMobile = function() {\n // return true;\n // return /android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(\n // navigator.userAgent\n // );\n // };\n\n /**\n * Calculate distortion of the wind vector caused by the shape of the projection at point (x, y). The wind\n * vector is modified in place and returned by this function.\n */\n var distort = function (projection, λ, φ, x, y, scale, wind, windy) {\n var u = wind[0] * scale;\n var v = wind[1] * scale;\n var d = distortion(projection, λ, φ, x, y, windy);\n\n // Scale distortion vectors by u and v, then add.\n wind[0] = d[0] * u + d[2] * v;\n wind[1] = d[1] * u + d[3] * v;\n return wind;\n };\n\n var distortion = function (projection, λ, φ, x, y, windy) {\n var τ = 2 * Math.PI;\n var H = Math.pow(10, -5.2);\n var hλ = λ < 0 ? H : -H;\n var hφ = φ < 0 ? H : -H;\n\n var pλ = project(φ, λ + hλ, windy);\n var pφ = project(φ + hφ, λ, windy);\n\n // Meridian scale factor (see Snyder, equation 4-3), where R = 1. This handles issue where length of 1º λ\n // changes depending on φ. Without this, there is a pinching effect at the poles.\n var k = Math.cos((φ / 360) * τ);\n return [\n (pλ[0] - x) / hλ / k,\n (pλ[1] - y) / hλ / k,\n (pφ[0] - x) / hφ,\n (pφ[1] - y) / hφ,\n ];\n };\n\n var createField = function (columns, bounds, callback) {\n /**\n * @returns {Array} wind vector [u, v, magnitude] at the point (x, y), or [NaN, NaN, null] if wind\n * is undefined at that point.\n */\n function field(x, y) {\n var column = columns[Math.round(x)];\n return (column && column[Math.round(y)]) || NULL_WIND_VECTOR;\n }\n\n // Frees the massive \"columns\" array for GC. Without this, the array is leaked (in Chrome) each time a new\n // field is interpolated because the field closure's context is leaked, for reasons that defy explanation.\n field.release = function () {\n columns = [];\n };\n\n field.randomize = function (o) {\n // UNDONE: this method is terrible\n var x, y;\n var safetyNet = 0;\n do {\n x = Math.round(Math.floor(Math.random() * bounds.width) + bounds.x);\n y = Math.round(Math.floor(Math.random() * bounds.height) + bounds.y);\n } while (field(x, y)[2] === null && safetyNet++ < 30);\n o.x = x;\n o.y = y;\n return o;\n };\n\n //field.overlay = mask.imageData;\n //return field;\n callback(bounds, field);\n };\n\n var buildBounds = function (bounds, width, height) {\n var upperLeft = bounds[0];\n var lowerRight = bounds[1];\n var x = Math.round(upperLeft[0]); //Math.max(Math.floor(upperLeft[0], 0), 0);\n var y = Math.max(Math.floor(upperLeft[1], 0), 0);\n //var xMax = Math.min(Math.ceil(lowerRight[0], width), width - 1);\n var yMax = Math.min(Math.ceil(lowerRight[1], height), height - 1);\n return {\n x: x,\n y: y,\n xMax: width,\n // xMax: xMax,\n yMax: yMax,\n width: width,\n height: height,\n };\n };\n\n var deg2rad = function (deg) {\n return (deg / 180) * Math.PI;\n };\n\n var rad2deg = function (ang) {\n return ang / (Math.PI / 180.0);\n };\n\n var invert = function (x, y, windy) {\n var mapLonDelta = windy.east - windy.west;\n var worldMapRadius =\n ((windy.width / rad2deg(mapLonDelta)) * 360) / (2 * Math.PI);\n var mapOffsetY =\n (worldMapRadius / 2) *\n Math.log((1 + Math.sin(windy.south)) / (1 - Math.sin(windy.south)));\n var equatorY = windy.height + mapOffsetY;\n var a = (equatorY - y) / worldMapRadius;\n\n var lat = (180 / Math.PI) * (2 * Math.atan(Math.exp(a)) - Math.PI / 2);\n var lon = rad2deg(windy.west) + (x / windy.width) * rad2deg(mapLonDelta);\n return [lon, lat];\n };\n\n // from new windy\n // var invert = function (x, y, windy) {\n // var latlon = params.map.unproject({ x, y });\n // return [latlon.lng, latlon.lat];\n // };\n\n var mercY = function (lat) {\n return Math.log(Math.tan(lat / 2 + Math.PI / 4));\n };\n\n var project = function (lat, lon, windy) {\n // both in radians, use deg2rad if neccessary\n var ymin = mercY(windy.south);\n var ymax = mercY(windy.north);\n var xFactor = windy.width / (windy.east - windy.west);\n var yFactor = windy.height / (ymax - ymin);\n\n var y = mercY(deg2rad(lat));\n var x = (deg2rad(lon) - windy.west) * xFactor;\n var y2 = (ymax - y) * yFactor; // y points south\n return [x, y2];\n };\n\n var interpolateField = function (grid, bounds, extent, callback) {\n var projection = {};\n var velocityScale = VELOCITY_SCALE;\n\n //var velocityScale = 0.01;\n // const interval = setInterval(function() {\n // // method to be executed;\n // velocityScale += 2;\n // }, 2000);\n\n var columns = [];\n var x = bounds.x;\n\n function interpolateColumn(x) {\n var column = [];\n for (var y = bounds.y; y <= bounds.yMax; y += 2) {\n var coord = invert(x, y, extent);\n //var color = TRANSPARENT_BLACK;\n if (coord) {\n var λ = coord[0],\n φ = coord[1];\n if (isFinite(λ)) {\n var wind = grid.interpolate(λ, φ);\n if (wind) {\n wind = distort(\n projection,\n λ,\n φ,\n x,\n y,\n velocityScale,\n wind,\n extent\n );\n column[y + 1] = column[y] = wind;\n }\n }\n }\n }\n columns[x + 1] = columns[x] = column;\n }\n\n (function batchInterpolate() {\n var start = Date.now();\n while (x < bounds.width) {\n interpolateColumn(x);\n x += 2;\n if (Date.now() - start > 1000) {\n //MAX_TASK_TIME) {\n setTimeout(batchInterpolate, 25);\n return;\n }\n }\n createField(columns, bounds, callback);\n })();\n };\n\n var animate = function (bounds, field) {\n function windIntensityColorScale(step, maxWind) {\n var result = COLOR_RAMP;\n\n result.indexFor = function (m) {\n // map wind speed to a style\n return Math.floor(\n (Math.min(m, maxWind) / maxWind) * (result.length - 1)\n );\n };\n return result;\n }\n\n // same\n var colorStyles = windIntensityColorScale(\n INTENSITY_SCALE_STEP,\n MAX_WIND_INTENSITY\n );\n var buckets = colorStyles.map(function () {\n return [];\n });\n\n // SAME\n var particleCount = Math.round(\n bounds.width * bounds.height * PARTICLE_MULTIPLIER\n );\n // if (isMobile()) {\n // particleCount *= PARTICLE_REDUCTION;\n // }\n\n // Turned into parameter\n //var fadeFillStyle = FADE_FILL_STYLE;\n\n // SAME\n var particles = [];\n for (var i = 0; i < particleCount; i++) {\n particles.push(\n field.randomize({\n age: Math.floor(Math.random() * MAX_PARTICLE_AGE) + 0,\n })\n );\n }\n\n function evolve() {\n buckets.forEach(function (bucket) {\n bucket.length = 0;\n });\n particles.forEach(function (particle) {\n if (particle.age > MAX_PARTICLE_AGE) {\n field.randomize(particle).age = 0;\n }\n var x = particle.x;\n var y = particle.y;\n var v = field(x, y); // vector at current position\n var m = v[2];\n if (m === null) {\n particle.age = MAX_PARTICLE_AGE; // particle has escaped the grid, never to return...\n } else {\n var xt = x + v[0];\n var yt = y + v[1];\n if (field(xt, yt)[2] !== null) {\n // Path from (x,y) to (xt,yt) is visible, so add this particle to the appropriate draw bucket.\n particle.xt = xt;\n particle.yt = yt;\n buckets[colorStyles.indexFor(m)].push(particle);\n } else {\n // Particle isn't visible, but it still moves through the field.\n particle.x = xt;\n particle.y = yt;\n }\n }\n particle.age += 1;\n });\n }\n\n // GLOBAL ALPHA MOVED TO PARAMETER\n var g = params.canvas.getContext(\"2d\", {\n powerPreference: \"high-performance\",\n // desynchronized: true,\n });\n\n g.lineWidth = PARTICLE_LINE_WIDTH;\n g.fillStyle = FADE_FILL_STYLE;\n g.globalAlpha = COLOR_ALPHA;\n\n function draw() {\n var prev = g.globalCompositeOperation;\n g.globalCompositeOperation = COMPOSITE_OPERATION;\n g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);\n g.globalCompositeOperation = prev;\n g.globalAlpha = COLOR_ALPHA;\n\n // Draw new particle trails.\n buckets.forEach(function (bucket, i) {\n if (bucket.length > 0) {\n g.beginPath();\n g.strokeStyle = colorStyles[i];\n bucket.forEach(function (particle) {\n g.moveTo(particle.x, particle.y);\n g.lineTo(particle.xt, particle.yt);\n particle.x = particle.xt;\n particle.y = particle.yt;\n });\n g.stroke();\n }\n });\n }\n\n (function frame() {\n try {\n windy.timer = setTimeout(function () {\n requestAnimationFrame(frame);\n evolve();\n draw();\n }, 1000 / FRAME_RATE);\n } catch (e) {\n console.error(e);\n }\n })();\n };\n\n // THIS HAS finalParams PARAMETER TO OVERRIDE LINE WIDTH GLOBALLY\n var start = function (bounds, width, height, extent, activeFlowConfig) {\n if (activeFlowConfig) {\n PARTICLE_LINE_WIDTH = activeFlowConfig.particleLineWidth;\n COLOR_RAMP = [activeFlowConfig.COLOR_RAMP];\n COLOR_ALPHA = [activeFlowConfig.COLOR_ALPHA];\n VELOCITY_SCALE = activeFlowConfig.VELOCITY_SCALE; // scale for wind velocity (completely arbitrary--this value looks nice)\n INTENSITY_SCALE_STEP = activeFlowConfig.INTENSITY_SCALE_STEP; // step size of particle intensity color scale\n MAX_WIND_INTENSITY = activeFlowConfig.MAX_WIND_INTENSITY; // wind velocity at which particle intensity is maximum (m/s)\n MAX_PARTICLE_AGE = activeFlowConfig.MAX_PARTICLE_AGE; // higher = flow things out and gets wirey. 50\n PARTICLE_LINE_WIDTH = activeFlowConfig.PARTICLE_LINE_WIDTH; // line width of a drawn particle 1.5\n PARTICLE_MULTIPLIER = activeFlowConfig.PARTICLE_MULTIPLIER; // particle count scalar (completely arbitrary--this values looks nice) 500\n FRAME_RATE = activeFlowConfig.FRAME_RATE; // desired milliseconds per frame\n FADE_FILL_STYLE = activeFlowConfig.FADE_FILL_STYLE;\n PARTICLE_MULTIPLIER = activeFlowConfig.PARTICLE_MULTIPLIER / 100;\n COMPOSITE_OPERATION = activeFlowConfig.COMPOSITE_OPERATION;\n }\n\n //console.log('AFC', activeFlowConfig);\n console.log(\"width: \" + width + \" height: \" + height);\n // width = 1185;\n // height = 501;\n // width = 1078;\n // height = 456;\n var mapBounds = {\n south: deg2rad(extent[0][1]),\n north: deg2rad(extent[1][1]),\n east: deg2rad(extent[1][0]),\n west: deg2rad(extent[0][0]),\n width: width,\n height: height,\n };\n\n stop();\n\n // build grid\n buildGrid(params.data, function (grid) {\n // interpolateField\n interpolateField(\n grid,\n buildBounds(bounds, width, height),\n mapBounds,\n function (bounds, field) {\n // animate the canvas with random points\n windy.field = field;\n animate(bounds, field);\n }\n );\n });\n\n // if (params.canvas) {\n // params.canvas.style.display = \"initial\";\n // }\n };\n\n var stop = function () {\n if (windy.field) windy.field.release();\n if (windy.timer) clearTimeout(windy.timer);\n // const context = params.canvas.getContext(\"2d\");\n // context.clearRect(0, 0, 3000, 3000);\n };\n\n var windy = {\n params: params,\n start: start,\n stop: stop,\n };\n\n return windy;\n}\n\n//shim layer with setTimeout fallback\nwindow.requestAnimationFrame = (function () {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n window.setTimeout(callback, 1000 / 20);\n }\n );\n})();\n","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=78e1f482&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=78e1f482&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport App from './App.vue';\n\nVue.config.productionTip = false;\n\nVue.use(require('vue-shortkey'));\n\nimport DatGui from '@cyrilf/vue-dat-gui';\n\nVue.use(DatGui);\n\nnew Vue({\n render: (h) => h(App),\n}).$mount('#app');\n"],"sourceRoot":""}