{"version":3,"sources":["App.js","serviceWorker.js","index.js"],"names":["initSqlJS","require","initialViewState","longitude","latitude","zoom","pitch","bearing","App","props","placeToZoom","decodeURI","window","location","hash","slice","state","searchboxtext","viewState","onlyFar","only100kTitles","farsims","Set","allsims","locateFile","f","then","SQL","makeAutocomplete","this","loadPages","fetch","resp","arrayBuffer","b","autocompleteBuffer","concat","map","isFar","Array","from","length","v","i","url","column","sink","forEach","Table","table","array","getColumn","toArray","add","setState","simsloaded","pages","lng","lat","title","characterSet","db","Database","Uint8Array","count","dlat","sidelength","dlng","didx","Math","round","density","Float32Array","rankInDensity","sizes","max","pow","log1p","min","onHover","onClick","makeDensityHeatmap","TextLayer","id","data","pickable","backgroundColor","getText","d","index","get","getSize","sizeMaxPixels","sizeUnits","wrapLongitude","fontFamily","getPosition","target","ScatterplotLayer","radiusMinPixels","radiusMaxPixels","getRadius","object","getFillColor","getLineColor","layers","lhsSims","blockHover","pagepick","pageclick","pointLayer","sims","finishedZoomOnLoad","titleProp","titleLayer","activePageHighlight","loadSims","firstSuggestion","inputToLabelledIds","input","find","label","initialMove","zoomTo","pageIndex","value","anchor","onTransitionEnd","setTimeout","picked","newpageclick","isNew","makeTitles","makePoints","push","context","pagepickcoords","pagesims","values","c","filter","n","sort","a","viewport","pagesimlats","p","pagesimlngs","pagesimrgbs","project","sourceX","sourceY","pagesimangles","targetX","targetY","atan2","PI","shimFromCenter","join","simlines","LineLayer","getWidth","getSourcePosition","getTargetPosition","getColor","monochromesimtexts","getAngle","getTextAnchor","simIndicesByAngle","color","name","autocompleteIsDisabled","type","checked","onChange","e","confirm","htmlFor","disabled","options","filterOption","onInputChange","isDisabled","placeholder","key","href","preventDefault","style","display","controller","onViewStateChange","transitionDuration","transitionInterpolator","FlyToInterpolator","transitionEasing","t","smoothstep","React","Component","inputToRowids","statement","prepare","bind","inputToFTSQuery","step","getAsObject","rowid","s","toLocaleLowerCase","split","Boolean","hostname","match","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"0hBAOMA,EAAYC,EAAQ,KAEpBC,EAAmB,CACvBC,WAAY,MACZC,SAAU,MACVC,KAAM,GACNC,MAAO,EACPC,QAAS,G,IAqBLC,E,YACJ,WAAYC,GAAQ,IAAD,sBACjB,4CAAMA,IACN,IAAMC,EAAcC,UAAUC,OAAOC,SAASC,KAAKC,MAAM,IAFxC,OAGjB,EAAKC,MAAQ,CAACN,cAAaO,cAAe,GAAIC,UAAWhB,EAAkBiB,SAAS,EAAMC,gBAAgB,EAAMC,QAAU,IAAIC,IAAQC,QAAU,IAAID,KACpJtB,EAAU,CAACwB,WAAY,SAAAC,GAAC,kBAASA,MAAMC,MAAK,SAAAC,GAC1C,EAAKX,MAAMW,IAAMA,EACjB,EAAKC,sBANU,E,iFASE,IAAD,OAClBC,KAAKC,YACLC,MAAM,qBAAqBL,MAAK,SAAAM,GAAI,OAAIA,EAAKC,cAAcP,MAAK,SAAAQ,GAC9D,EAAKlB,MAAMmB,mBAAqBD,EAChC,EAAKN,2B,iCAGG,IAAD,UACO,MAAGQ,OAAH,oBAAa,EAAC,GAAM,GAAOC,KAAI,SAAAC,GAAK,OAAIC,MAAMC,KAAK,CAACC,OAAQ,KAAK,SAACC,EAAEC,GAAH,MAC9E,CAACC,IAAI,SAAD,OAAWN,EAAQ,MAAO,GAA1B,oBAAwCK,EAAE,EAA1C,UACHE,OAAO,KAAD,OAAOF,EAAE,GACfG,KAAOR,EAAQ,EAAKtB,MAAMK,QAAU,EAAKL,MAAMO,iBAC3CwB,SAAQ,gBAAEH,EAAF,EAAEA,IAAKC,EAAP,EAAOA,OAAQC,EAAf,EAAeA,KAAf,OAAyBE,IAAMR,KAAKT,MAAMa,IAAMlB,MAAK,SAAAuB,GACnE,IAAMC,EAAQD,EAAME,UAAUN,GAAQO,UACtCN,EAAKO,IAAIH,GACT,EAAKI,SAAS,CAACC,WAAY,EAAKvC,MAAMK,QAAQoB,OAAS,EAAKzB,MAAMO,QAAQkB,iB,kCAGjE,IAAD,OACVO,IAAMR,KAAKT,MAAM,0BAA0BL,MAAK,SAAA8B,GAAK,OAAI,EAAKF,SAAS,CACrEE,QACAC,IAAKD,EAAML,UAAU,OAAOC,UAC5BM,IAAKF,EAAML,UAAU,OAAOC,UAC5BO,MAAOH,EAAML,UAAU,SACvBS,cAAgCJ,EAAML,UAAU,SAnD5C,CAAC,IAAI,IAAI,IAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,OAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SA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","file":"static/js/main.2ed29514.chunk.js","sourcesContent":["import React from 'react';\nimport './App.css';\nimport DeckGL from '@deck.gl/react';\nimport { FlyToInterpolator } from '@deck.gl/core';\nimport { ScatterplotLayer, TextLayer, LineLayer } from '@deck.gl/layers';\nimport { Table } from 'apache-arrow';\nimport Select from 'react-select';\nconst initSqlJS = require('sql.js');\n\nconst initialViewState = {\n longitude: -73.99,\n latitude: 40.69,\n zoom: 10,\n pitch: 0,\n bearing: 0,\n}\n\nexport function utf8vectorToAtlas(strings) {\n return ([\" \",\"!\",\"\\\"\",\"$\",\"&\",\"'\",\"(\",\")\",\"*\",\"+\",\",\",\"-\",\".\",\"/\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\":\",\";\",\"=\",\"?\",\"@\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"`\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"~\",\"«\",\"°\",\"³\",\"´\",\"·\",\"º\",\"»\",\"½\",\"À\",\"Á\",\"Â\",\"Ä\",\"Å\",\"Æ\",\"Ç\",\"È\",\"É\",\"Ì\",\"Í\",\"Î\",\"Ð\",\"Ñ\",\"Ò\",\"Ó\",\"Ô\",\"Õ\",\"Ö\",\"×\",\"Ø\",\"Ú\",\"Ü\",\"Ý\",\"Þ\",\"ß\",\"à\",\"á\",\"â\",\"ã\",\"ä\",\"å\",\"æ\",\"ç\",\"è\",\"é\",\"ê\",\"ë\",\"ì\",\"í\",\"î\",\"ï\",\"ð\",\"ñ\",\"ò\",\"ó\",\"ô\",\"õ\",\"ö\",\"ø\",\"ù\",\"ú\",\"û\",\"ü\",\"ý\",\"þ\",\"ÿ\",\"Ā\",\"ā\",\"ă\",\"Ą\",\"ą\",\"Ć\",\"ć\",\"Ċ\",\"ċ\",\"Č\",\"č\",\"Ď\",\"ď\",\"Đ\",\"đ\",\"Ē\",\"ē\",\"ĕ\",\"ė\",\"ę\",\"ě\",\"Ğ\",\"ğ\",\"Ġ\",\"ġ\",\"Ģ\",\"ģ\",\"Ħ\",\"ħ\",\"ĩ\",\"Ī\",\"ī\",\"į\",\"İ\",\"ı\",\"Ķ\",\"ķ\",\"Ļ\",\"ļ\",\"Ľ\",\"ľ\",\"Ł\",\"ł\",\"ń\",\"Ņ\",\"ņ\",\"Ň\",\"ň\",\"ŋ\",\"Ō\",\"ō\",\"ŏ\",\"Ő\",\"ő\",\"Œ\",\"œ\",\"ŕ\",\"Ř\",\"ř\",\"Ś\",\"ś\",\"ŝ\",\"Ş\",\"ş\",\"Š\",\"š\",\"Ţ\",\"ţ\",\"Ť\",\"ť\",\"ũ\",\"Ū\",\"ū\",\"ŭ\",\"ů\",\"ű\",\"ų\",\"Ŵ\",\"ŵ\",\"ŷ\",\"Ź\",\"ź\",\"Ż\",\"ż\",\"Ž\",\"ž\",\"Ə\",\"ơ\",\"Ư\",\"ư\",\"ǁ\",\"ǂ\",\"ǃ\",\"ǫ\",\"Ǵ\",\"ǵ\",\"Ș\",\"ș\",\"Ț\",\"ț\",\"ə\",\"ʔ\",\"ʹ\",\"ʻ\",\"ʼ\",\"ʽ\",\"ʿ\",\"̀\",\"́\",\"̄\",\"̨\",\"̱\",\"Π\",\"ά\",\"έ\",\"α\",\"γ\",\"η\",\"ι\",\"λ\",\"ν\",\"ο\",\"ρ\",\"τ\",\"υ\",\"φ\",\"і\",\"ا\",\"ة\",\"ت\",\"ح\",\"ف\",\"ḍ\",\"ḏ\",\"ḥ\",\"ḩ\",\"Ḱ\",\"ḱ\",\"Ḵ\",\"ḵ\",\"Ḷ\",\"ḷ\",\"ḻ\",\"ṇ\",\"ṟ\",\"ṣ\",\"ṭ\",\"ṯ\",\"ẁ\",\"Ẕ\",\"ạ\",\"Ả\",\"ả\",\"Ấ\",\"ấ\",\"ầ\",\"ẩ\",\"ẫ\",\"ậ\",\"ắ\",\"ằ\",\"ẵ\",\"ặ\",\"Ẹ\",\"ẹ\",\"ẻ\",\"ẽ\",\"ế\",\"ề\",\"ể\",\"ễ\",\"ệ\",\"ỉ\",\"ị\",\"ọ\",\"ỏ\",\"ố\",\"ồ\",\"ổ\",\"ỗ\",\"ộ\",\"ớ\",\"ờ\",\"ở\",\"ợ\",\"ụ\",\"ủ\",\"Ứ\",\"ứ\",\"ừ\",\"ử\",\"ữ\",\"ự\",\"ỳ\",\"ỷ\",\"ỹ\",\"–\",\"—\",\"‘\",\"’\",\"“\",\"”\",\"†\",\"•\",\"′\",\"№\",\"−\",\"々\",\"の\",\"ガ\",\"ヒ\",\"モ\",\"ン\",\"人\",\"族\",\"ꞌ\"]);\n // cmon champ we don't have four whole seconds to run through over a million strings, this is only 2019, we are but simple people\n // if you do, feel free to comment out that return\n console.log(Date.now());\n const atlas = new Set();\n for(let i = 0 ; i < strings.length; i++ ) {\n const s = strings.get(i);\n for(let j = s.length; j-- > 0 ; ) {\n atlas.add(s[j]);\n }\n }\n const sortedAtlas = Array.from(atlas); sortedAtlas.sort();\n console.log(JSON.stringify(sortedAtlas));\n console.log(Date.now());\n return atlas;\n}\n\nclass App extends React.Component {\n constructor(props) {\n super(props)\n const placeToZoom = decodeURI(window.location.hash.slice(1));\n this.state = {placeToZoom, searchboxtext: \"\", viewState: initialViewState, onlyFar: true, only100kTitles: true, farsims: (new Set()), allsims: (new Set())};\n initSqlJS({locateFile: f => `./${f}`}).then(SQL => {\n this.state.SQL = SQL;\n this.makeAutocomplete();\n });\n }\n componentDidMount() {\n this.loadPages()\n fetch('./autocomplete.db').then(resp => resp.arrayBuffer().then(b => {\n this.state.autocompleteBuffer = b;\n this.makeAutocomplete()\n }));\n }\n loadSims() {\n const queries = [].concat(...[true, false].map(isFar => Array.from({length: 20}, (v,i) =>\n ({url: `./tops${isFar ? \"Far\": \"\"}Packed.ps${i+1}.arrow`,\n column: `ps${i+1}`,\n sink: (isFar ? this.state.farsims : this.state.allsims)}))));\n queries.forEach(({url, column, sink}) => Table.from(fetch(url)).then(table => {\n const array = table.getColumn(column).toArray();\n sink.add(array);\n this.setState({simsloaded: this.state.farsims.length + this.state.allsims.length});\n }));\n }\n loadPages() {\n Table.from(fetch(\"./pages.noindex.arrow\")).then(pages => this.setState({\n pages,\n lng: pages.getColumn('lng').toArray(),\n lat: pages.getColumn('lat').toArray(),\n title: pages.getColumn('title'),\n characterSet: utf8vectorToAtlas(pages.getColumn('title')),\n }));\n }\n makeAutocomplete() {\n if(this.state.SQL && this.state.autocompleteBuffer) {\n this.setState({db: new this.state.SQL.Database(new Uint8Array(this.state.autocompleteBuffer))});\n }\n }\n makeDensityHeatmap({lng, lat, count, sidelength}) {\n const dlat = sidelength;\n const dlng = dlat * 2;\n const didx = (longitude,latitude) => Math.round((dlng-1)/(longitude+180))*dlat+Math.round((dlat-1)/(latitude+90));\n const density = new Float32Array(dlat * dlng);\n const rankInDensity = Float32Array.from({length: count}, (v,i) => ++density[didx(lng[i],lat[i])] );\n const sizes = Float32Array.from({length: count}, (v,i) => Math.max(8.57, 1024 * 1024 * 32 / Math.pow(i + 4, 0.75) / Math.log1p(Math.pow(rankInDensity[i], 30) * Math.pow(Math.min(100*(i+1),density[didx(lng[i],lat[i])]),1.5))));\n return ({ density, rankInDensity, sizes });\n }\n makeTitles({lng, lat, title, count, characterSet, onHover, onClick}) {\n const {sizes} = this.makeDensityHeatmap({lng, lat, count, sidelength: 10000});\n return (new TextLayer({\n id: `titles${count}`,\n data: {length: count},\n pickable: true,\n onHover,\n onClick,\n characterSet,\n backgroundColor: [255,230,170],\n getText: (d,{index}) => ` ${title.get(count - 1 - index)} `,\n getSize: (d,{index}) => sizes[count - 1 - index],\n sizeMaxPixels: 30,\n sizeUnits: 'meters',\n wrapLongitude: true,\n fontFamily: '\"Roboto Slab\"',\n getPosition: (d, {index,target}) => {\n target[0] = lng[count - 1 - index];\n target[1] = lat[count - 1 - index];\n return target;\n },\n }));\n }\n makePoints({lng, lat, onHover, onClick}) {\n return (new ScatterplotLayer({\n id: `points${lng.length}`,\n data: {length: lng.length},\n pickable: true,\n onHover,\n onClick,\n radiusMinPixels: 2,\n radiusMaxPixels: 20,\n getRadius: 10,\n wrapLongitude: true,\n getPosition: (object, {index,data,target}) => {\n target[0] = lng[lng.length - 1 - index];\n target[1] = lat[lng.length - 1 - index];\n return target;\n },\n getFillColor: [100,100,50],\n getLineColor: [0,0,0],\n }));\n }\n render() {\n if(this.state == null) {\n return (