{"version":3,"sources":["components/CollectionItem.tsx","components/Search.tsx","components/DebouncedFilter.tsx","components/CollectionSummaryFilter.tsx","static/arendt.jpg","api.ts","App.tsx","reportWebVitals.ts","index.tsx"],"names":["CollectionItemElement","item","searchWords","useState","showFullText","setShowFullText","disableFullText","headline","length","OCRResult","c","text","Pane","backgroundColor","elevation","padding","majorScale","marginBottom","overflow","Strong","Link","target","href","locId","collectionName","display","height","width","marginRight","flexDirection","alignItems","maxHeight","src","imageUrl","replace","size","color","marginTop","flex","border","Paragraph","textToHighlight","textAlign","Button","onClick","appearance","Search","onSubmit","searchText","setSearchText","doSubmit","paddingBottom","borderBottom","justifyContent","SearchInput","placeholder","value","onKeyDown","e","key","onChange","marginLeft","DebouncedFilter","filterText","setFilterText","useEffect","handler","setTimeout","clearTimeout","Table","SearchHeaderCell","fuseOptions","shouldSort","keys","ignoreLocation","threshold","CollectionSummaryFilter","summary","selected","isLoading","Fuse","fuse","setFuse","filteredSummary","setFilteredSummary","search","map","s","handleSelect","cs","newSelected","Object","assign","index","findIndex","collectionId","push","splice","Head","TextHeaderCell","flexBasis","flexShrink","flexGrow","HeaderCell","intent","disabled","Spinner","margin","VirtualBody","name","isSelected","b","Row","isSelectable","onSelect","onDeselect","Cell","fontSize","lineHeight","TextCell","isNumber","Pill","count","fetchSummary","query","a","fetch","method","body","JSON","stringify","res","json","doSearch","collections","page","App","setQuery","collectionsFilter","setCollectionsFilter","results","setResults","setSummary","setIsLoading","summaryIsLoading","setSummaryIsLoading","setPage","hasMore","setHasMore","trim","split","updateSummary","updateResults","fetchMoreData","concat","minHeight","minWidth","position","top","borderRight","marginX","ArendtImage","Heading","fontFamily","ReactGA","event","category","action","borderTop","dataLength","next","loader","endMessage","r","CollectionItem","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","Sentry","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","initialize","pageview","window","location","pathname","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"yUAcA,IAgDeA,EAhDe,SAAC,GAAgD,IAA9CC,EAA6C,EAA7CA,KAAMC,EAAuC,EAAvCA,YACnC,EAAwCC,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEIC,GAAkB,EAClBL,EAAKM,SAASC,SAAWP,EAAKQ,UAAUD,SACxCF,GAAkB,GAGtB,IAZmBI,EAYfC,EAAOV,EAAKM,SAKhB,OAJIH,IACAO,EAAOV,EAAKQ,WAKZ,eAACG,EAAA,EAAD,CAAMC,gBAAiB,QAASC,UAAW,EAAGC,QAASC,YAAW,GAAqBC,aAAc,OAArG,UACI,eAACL,EAAA,EAAD,CAAMK,aAAcD,YAAW,GAAIE,SAAU,SAA7C,UACI,cAACC,EAAA,EAAD,2BAA6B,cAACC,EAAA,EAAD,CAAMC,OAAO,SAASC,KAAMrB,EAAKsB,MAAjC,SAAyCtB,EAAKuB,oBAE/E,eAACZ,EAAA,EAAD,CAAMa,QAAQ,OAAOC,OAAQ,OAAQR,SAAU,SAA/C,UACI,eAACN,EAAA,EAAD,CAAMe,MAAOX,YAAW,IAAKY,YAAaZ,YAAW,GAAIS,QAAQ,OAAOI,cAAc,SAASC,WAAW,SAA1G,UACI,cAAClB,EAAA,EAAD,CAAMmB,UAAW,QAASb,SAAU,SAApC,SACI,cAACE,EAAA,EAAD,CAAMC,OAAO,SAASC,KAAMrB,EAAKsB,MAAjC,SACI,qBAAKS,KA3BVtB,EA2B6BT,EA1BzCS,EAAEuB,SAASC,QAAQ,UAAW,aA0BkBP,MAAO,aAG9C,cAACP,EAAA,EAAD,CAAMe,KAAM,IAAKC,MAAM,UAAUf,OAAO,SAASC,KAAMrB,EAAKsB,MAAOc,UAAWrB,YAAW,GAAzF,iCAIJ,eAACJ,EAAA,EAAD,CAAM0B,KAAM,EAAZ,UAEI,cAAC1B,EAAA,EAAD,CAAMC,gBAAiB,UAAW0B,OAAQ,kBAAmBxB,QAASC,YAAW,GAAjF,SACI,cAACwB,EAAA,EAAD,UACI,cAAC,IAAD,CAAatC,YAAaA,EAAauC,gBAAiB9B,SAG9DL,IAAoBF,GAAgB,cAACQ,EAAA,EAAD,CAAM8B,UAAU,SAASL,UAAWrB,YAAW,GAA/C,SAClC,cAAC2B,EAAA,EAAD,CAAQC,QAAS,kBAAMvC,GAAiBD,IAAeyC,WAAW,UAAlE,2CAvB2D5C,EAAKsB,Q,SCCzEuB,EAvBA,SAAC,GAA+B,IAA7BC,EAA4B,EAA5BA,SACd,EAAoC5C,mBAAiB,IAArD,mBAAO6C,EAAP,KAAmBC,EAAnB,KAEMC,EAAW,WACbH,EAASC,IAWb,OACI,eAACpC,EAAA,EAAD,CAAMuC,cAAenC,YAAW,GAAIC,aAAcD,YAAW,GAAIoC,cAAY,EAAC3B,QAAQ,OAAO4B,eAAe,SAAS1B,MAAO,OAA5H,UACI,cAAC2B,EAAA,EAAD,CAAahB,KAAM,EAAGX,MAAO,OAAQ4B,YAAa,yBAA0B7B,OAAQV,YAAW,GAAIwC,MAAOR,EAAYS,UAR7F,SAACC,GAChB,UAAVA,EAAEC,KACFT,KAM2JU,SAVnI,SAACF,GAAD,OAA4CT,EAAcS,EAAErC,OAAOmC,UAW3F,cAACb,EAAA,EAAD,CAAQkB,WAAY7C,YAAW,GAAIU,OAAQV,YAAW,GAAI4B,QAASM,EAAnE,wB,0BCRGY,EAVS,SAAC,GAAwC,IAAtCF,EAAqC,EAArCA,SACvB,EAAoCzD,mBAAS,IAA7C,mBAAO4D,EAAP,KAAmBC,EAAnB,KAMA,OALAC,qBAAU,WACN,IAAMC,EAAUC,YAAW,kBAAMP,EAASG,KAAa,KACvD,OAAO,kBAAMK,aAAaF,MAE3B,CAACH,EAAYH,IACT,cAACS,EAAA,EAAMC,iBAAP,CAAwBf,YAAa,0BAA2BK,SAAUI,EAAeR,MAAOO,K,QCArGQ,EAAoD,CACtDC,YAAY,EACZC,KAAM,CAAC,kBACPC,gBAAgB,EAChBC,UAAW,GA6EAC,EAtEiB,SAAC,GAA8E,IAA5EC,EAA2E,EAA3EA,QAASC,EAAkE,EAAlEA,SAAUlB,EAAwD,EAAxDA,SAAUmB,EAA8C,EAA9CA,UAC5D,EAAoC5E,mBAAS,IAA7C,mBAAO4D,EAAP,KAAmBC,EAAnB,KACA,EAAwB7D,mBAAS,IAAI6E,IAAwB,GAAIT,IAAjE,mBAAOU,EAAP,KAAaC,EAAb,KACA,EAA8C/E,mBAAS0E,GAAvD,mBAAOM,EAAP,KAAwBC,EAAxB,KAEAnB,qBAAU,WAEFiB,EAAQ,IAAIF,IAAKH,EAASN,MAG/B,CAACM,IAEJZ,qBAAU,WAGEmB,EADArB,EACmBkB,EAAKI,OAAOtB,GAAYuB,KAAI,SAAAC,GAAC,OAAIA,EAAEtF,QAEnC4E,KAI5B,CAACd,EAAYkB,EAAMJ,IAGtB,IAAMW,EAAe,SAACC,GAClB,IAAMC,EAAcC,OAAOC,OAAO,GAAId,GAChCe,EAAQH,EAAYI,WAAU,SAACP,GAAD,OAAOA,EAAEQ,eAAiBN,EAAGM,iBAClD,IAAXF,EACAH,EAAYM,KAAKP,GAEjBC,EAAYO,OAAOJ,EAAO,GAG9BjC,EAAS8B,IAGb,OACI,cAAC9E,EAAA,EAAD,CAAMe,MAAM,OAAZ,SACI,eAAC0C,EAAA,EAAD,WACI,eAACA,EAAA,EAAM6B,KAAP,CAAYxE,OAAQ,GAApB,UACI,cAAC,EAAD,CAAiBkC,SAAUI,IAE3B,cAACK,EAAA,EAAM8B,eAAP,CAAsBC,UAAW,GAAIC,WAAY,EAAGC,SAAU,EAA9D,wBAEJ,eAACjC,EAAA,EAAM6B,KAAP,CAAYxE,OAAQ,GAApB,UACI,eAAC2C,EAAA,EAAMkC,WAAP,WACKzB,EAAStE,OADd,2BAGA,cAAC6D,EAAA,EAAMkC,WAAP,CAAkBH,UAAW,GAAIC,WAAY,EAAGC,SAAU,EAA1D,SAA6D,cAAC3D,EAAA,EAAD,CAAQ6D,OAAO,SAAS3D,WAAW,UAAU4D,SAA8B,IAApB3B,EAAStE,OAAcoC,QAAS,kBAAMgB,EAAS,KAAtG,gCAGhEmB,GAAa,cAACnE,EAAA,EAAD,CAAMc,OAAO,OAAOD,QAAQ,OAA5B,SAAmC,cAACiF,EAAA,EAAD,CAASC,OAAO,YAC/D5B,GAAwC,IAA3BI,EAAgB3E,QAAgB,cAACgC,EAAA,EAAD,CAAWzB,QAASC,YAAW,GAA/B,+BAC7C+D,GAAaI,EAAgB3E,OAAS,GAAK,cAAC6D,EAAA,EAAMuC,YAAP,CAAmBlF,OAAQ,IAA3B,SACxCyD,EAAgBG,KAAI,SAACC,GAClB,IA3DKsB,EA2DCC,GAA6E,IAAhEhC,EAASgB,WAAU,SAAAiB,GAAC,OAAIA,EAAEhB,eAAiBR,EAAEQ,gBAChE,OAAO,eAAC1B,EAAA,EAAM2C,IAAP,CAAkDC,cAAY,EAACC,SAAU,kBAAM1B,EAAaD,IAAI4B,WAAY,kBAAM3B,EAAaD,IAAIuB,WAAYA,EAA/I,UACH,cAACzC,EAAA,EAAM+C,KAAP,UACI,cAAC5E,EAAA,EAAD,CAAW6E,SAAU,GAAIC,WAAY,QAArC,UA9DHT,EA8DsEtB,EAAE/D,eA7D1FqF,EAAK3E,QAAQ,yBAA0B,SA+DtB,cAACmC,EAAA,EAAMkD,SAAP,CAAgBC,UAAQ,EAACpB,UAAW,GAAIC,WAAY,EAAGC,SAAU,EAAjE,SAAoE,cAACmB,EAAA,EAAD,UAAOlC,EAAEmC,YAJ1E,UAAmBnC,EAAEQ,cAArB,OAAoCe,eCjFpD,MAA0B,mCCuB5Ba,EAAY,uCAAG,WAAOC,GAAP,eAAAC,EAAA,sEACNC,MAAM,cAAe,CACnCC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CAAE7C,OAAQuC,MAHX,cAClBO,EADkB,yBAKhBA,EAAIC,QALY,2CAAH,sDASZC,EAAQ,uCAAG,WAAOT,EAAeU,EAAuBC,GAA7C,eAAAV,EAAA,sEACFC,MAAM,aAAc,CAClCC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CAAE7C,OAAQuC,EAAOU,cAAaC,WAHnC,cACdJ,EADc,yBAKZA,EAAIC,QALQ,2CAAH,0DC2FNI,MAjHf,WACE,MAA0BrI,mBAAiB,IAA3C,mBAAOyH,EAAP,KAAca,EAAd,KACA,EAAkDtI,mBAA8B,IAAhF,mBAAOuI,EAAP,KAA0BC,EAA1B,KACA,EAA8BxI,mBAA2B,IAAzD,mBAAOyI,EAAP,KAAgBC,EAAhB,KACA,EAA8B1I,mBAA8B,IAA5D,mBAAO0E,EAAP,KAAgBiE,EAAhB,KACA,EAAkC3I,oBAAkB,GAApD,mBAAO4E,EAAP,KAAkBgE,EAAlB,KACA,EAAgD5I,oBAAkB,GAAlE,mBAAO6I,EAAP,KAAyBC,EAAzB,KACA,EAAwB9I,mBAAS,GAAjC,mBAAOoI,EAAP,KAAaW,EAAb,KACA,EAA8B/I,oBAAS,GAAvC,mBAAOgJ,EAAP,KAAgBC,EAAhB,KAEMlJ,EAAc0H,EAAMyB,OAAOC,MAAM,KAEvCrF,qBAAU,YACW,uCAAG,4BAAA4D,EAAA,6DACpBoB,GAAoB,GADA,kBAGAtB,EAAaC,GAHb,OAGZO,EAHY,OAIlBW,EAAWX,EAAItD,SAJG,uBAMlBoE,GAAoB,GANF,uEAAH,qDASnBM,KAEC,CAAC3B,IAEJ3D,qBAAU,WAERiF,EAAQ,GACRE,GAAW,GACQ,uCAAG,4BAAAvB,EAAA,6DACpBkB,GAAa,GADO,SAEFV,EAAST,EAAOc,EAAkBpD,KAAI,SAAA5E,GAAC,OAAIA,EAAEqF,gBAAe,GAF1D,OAEdoC,EAFc,OAGpBU,EAAWV,EAAIS,SACfG,GAAa,GAJO,2CAAH,oDAOnBS,KAEC,CAAC5B,EAAOc,IAEX,IAAMe,EAAa,uCAAG,4BAAA5B,EAAA,sEACFQ,EAAST,EAAOc,EAAkBpD,KAAI,SAAA5E,GAAC,OAAIA,EAAEqF,gBAAewC,EAAO,GADjE,UAEO,KADrBJ,EADc,QAEZS,QAAQpI,OAFI,uBAGlB4I,GAAW,GAHO,0BAOpBP,EAAWD,EAAQc,OAAOvB,EAAIS,UAC9BM,EAAQX,EAAO,GARK,2CAAH,qDAqBnB,OACE,eAAC3H,EAAA,EAAD,CAAMa,QAAQ,OAAOkI,UAAW,OAAQC,SAAU5I,YAAW,KAA7D,UACE,cAACJ,EAAA,EAAD,CAAMe,MAAOX,YAAW,IAAxB,SACE,eAACJ,EAAA,EAAD,CAAMiJ,SAAS,SAASC,IAAK,EAAGC,aAAW,EAACpI,MAAOX,YAAW,IAAKgJ,QAAQ,OAAOjJ,QAASC,YAAW,GAAIS,QAAQ,OAAOK,WAAW,SAASD,cAAc,SAA3J,UACE,eAACjB,EAAA,EAAD,CAAMa,QAAQ,OAAOK,WAAW,SAASuB,eAAe,SAASpC,aAAcD,YAAW,GAA1F,UACE,cAACJ,EAAA,EAAD,CAAMe,MAAOX,YAAW,IAAKY,YAAaZ,YAAW,GAArD,SACE,qBAAKgB,IAAKiI,EAAatI,MAAO,WAEhC,cAACuI,EAAA,EAAD,CAASC,WAAY,aAAc9C,SAAU,GAAIC,WAAY,QAA7D,gCAEF,cAAC,EAAD,CAAQvE,SApBI,SAAC6E,GAEnBwC,IAAQC,MAAM,CACZC,SAAU,OACVC,OAAQ,aAGV9B,EAASb,MAcH,cAAC,EAAD,CAAyB9C,SAAU4D,EAAmB9E,SAAU+E,EAAsB9D,QAASA,EAASE,UAAWiE,IAEnH,cAACpI,EAAA,EAAD,CAAMyB,UAAWrB,YAAW,GAAIwJ,WAAS,EAACzJ,QAASC,YAAW,GAAI0B,UAAU,SAA5E,SACE,eAACF,EAAA,EAAD,2DAAwD,cAACpB,EAAA,EAAD,CAAMC,OAAO,SAASC,KAAK,wDAA3B,iEAAxD,SAA2M,cAACF,EAAA,EAAD,CAAMC,OAAO,SAASC,KAAK,gGAA3B,yCAA3M,sBAA2X,cAACF,EAAA,EAAD,CAAME,KAAK,6BAA6BD,OAAO,SAA/C,6BAA3X,qEAKN,cAACT,EAAA,EAAD,CAAM0B,KAAM,EAAGzB,gBAAgB,UAAUE,QAASC,YAAW,GAA7D,SACE,eAACJ,EAAA,EAAD,CAAMa,QAAQ,OAAOC,OAAQ,OAA7B,UACGqD,GACC,eAACnE,EAAA,EAAD,CAAM+F,OAAO,OAAOlF,QAAQ,OAAOI,cAAc,SAASC,WAAW,SAASH,MAAO,QAASY,QAAM,EAAC1B,gBAAiB,QAASE,QAASC,YAAW,GAAnJ,UACE,cAACkJ,EAAA,EAAD,CAAS/H,KAAM,IAAKlB,aAAcD,YAAW,GAA7C,0BACA,cAAC0F,EAAA,EAAD,CAASzF,aAAcD,YAAW,KAClC,cAACwB,EAAA,EAAD,CAAWE,UAAU,SAArB,8BAGFqC,GACA,eAACnE,EAAA,EAAD,CAAMc,OAAQ,OAAQC,MAAM,OAAOF,QAAQ,OAA3C,UACsB,IAAnBmH,EAAQpI,QACP,eAACI,EAAA,EAAD,CAAM+F,OAAO,OAAOhF,MAAOX,YAAW,IAAKD,QAASC,YAAW,GAAIuB,QAAM,EAAC1B,gBAAgB,QAAQ6B,UAAU,SAA5G,UACE,cAAC9B,EAAA,EAAD,UAAM,cAACsJ,EAAA,EAAD,CAAS/H,KAAM,IAAf,mCACN,cAACK,EAAA,EAAD,yCAGHoG,EAAQpI,OAAS,GAChB,cAAC,IAAD,CAAgBiK,WAAY7B,EAAQpI,OAAQkK,KAAMjB,EAAeN,QAASA,EAASwB,OAAQ,cAACjE,EAAA,EAAD,IAAakE,WAAY,cAACpI,EAAA,EAAD,CAAWE,UAAU,SAASP,KAAM,IAApC,iCAApH,SACGyG,EAAQtD,KAAI,SAAAuF,GAAC,OACZ,cAACC,EAAD,CAAqC7K,KAAM4K,EAAG3K,YAAaA,GAA/B2K,EAAEtJ,wBCjGnCwJ,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCKZQ,IAAY,CACVC,IAAK,2EACLC,aAAc,CAAC,IAAIC,IAAaC,gBAKhCC,iBAAkB,KAGpBzB,IAAQ0B,WAAW,kBAGrB1B,IAAQ2B,SAASC,OAAOC,SAASC,SAAWF,OAAOC,SAAS5G,QAE5D8G,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,MAEFC,SAASC,eAAe,SAM1BxB,M","file":"static/js/main.41c3755a.chunk.js","sourcesContent":["import React, { useState } from 'react';\nimport { Pane, majorScale, Link, Paragraph, Strong, Button } from 'evergreen-ui'\nimport { CollectionItem } from '../api'\nimport Highlighter from 'react-highlight-words'\n\ntype CollectionItemProps = {\n item: CollectionItem\n searchWords: string[]\n}\n\nfunction getSmallImage(c: CollectionItem): string {\n return c.imageUrl.replace(\"pct:100\", \"pct:12.5\")\n}\n\nconst CollectionItemElement = ({ item, searchWords }: CollectionItemProps) => {\n const [showFullText, setShowFullText] = useState(false)\n\n let disableFullText = false\n if (item.headline.length === item.OCRResult.length) {\n disableFullText = true\n }\n\n let text = item.headline\n if (showFullText) {\n text = item.OCRResult\n }\n\n return (\n\n \n \n Collection: {item.collectionName}\n \n \n \n \n \n
\n \n \n \n view in archives\n \n \n \n\n \n \n \n \n \n {!disableFullText && !showFullText && \n \n \n }\n\n \n \n \n )\n}\n\nexport default CollectionItemElement","import React, { useState } from 'react'\nimport { SearchInput, majorScale, Pane, Button } from 'evergreen-ui'\n\ntype SearchProps = {\n onSubmit(query: string): void\n}\n\nconst Search = ({ onSubmit }: SearchProps) => {\n const [searchText, setSearchText] = useState(\"\")\n\n const doSubmit = () => {\n onSubmit(searchText)\n }\n\n const handleSearchInputChange = (e: React.ChangeEvent) => setSearchText(e.target.value)\n\n const handleSearchInputKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n doSubmit()\n }\n }\n\n return (\n \n \n \n \n )\n}\n\nexport default Search","import React, { useState, useEffect } from 'react'\nimport { Table } from 'evergreen-ui'\n\ntype DebouncedFilterProps = {\n onChange(q: string): void\n}\n\nconst DebouncedFilter = ({ onChange }: DebouncedFilterProps) => {\n const [filterText, setFilterText] = useState(\"\")\n useEffect(() => {\n const handler = setTimeout(() => onChange(filterText), 500)\n return () => clearTimeout(handler)\n\n }, [filterText, onChange])\n return \n}\n\nexport default DebouncedFilter","import React, { useState, useEffect } from 'react'\nimport { CollectionSummary } from '../api'\nimport { Pane, Button, Table, Paragraph, Spinner, majorScale, Pill, Text } from 'evergreen-ui'\nimport DebouncedFilter from './DebouncedFilter'\nimport Fuse from 'fuse.js'\n\ntype CollectionSummaryFilterProps = {\n summary: CollectionSummary[]\n isLoading: boolean\n onChange(cids: CollectionSummary[]): void\n selected: CollectionSummary[]\n}\n\n\nconst fuseOptions: Fuse.IFuseOptions = {\n shouldSort: false,\n keys: [\"collectionName\"],\n ignoreLocation: true,\n threshold: 0\n}\n\nconst cleanCollectionName = (name: string) => {\n return name.replace(\"Hannah Arendt Papers: \", \"\")\n}\n\nconst CollectionSummaryFilter = ({ summary, selected, onChange, isLoading }: CollectionSummaryFilterProps) => {\n const [filterText, setFilterText] = useState(\"\")\n const [fuse, setFuse] = useState(new Fuse([], fuseOptions))\n const [filteredSummary, setFilteredSummary] = useState(summary)\n\n useEffect(() => {\n const buildFuse = () => {\n setFuse(new Fuse(summary, fuseOptions))\n }\n buildFuse()\n }, [summary])\n\n useEffect(() => {\n const updateFilteredSummary = () => {\n if (filterText) {\n setFilteredSummary(fuse.search(filterText).map(s => s.item))\n } else {\n setFilteredSummary(summary)\n }\n }\n updateFilteredSummary()\n }, [filterText, fuse, summary])\n\n\n const handleSelect = (cs: CollectionSummary) => {\n const newSelected = Object.assign([], selected) as CollectionSummary[];\n const index = newSelected.findIndex((s) => s.collectionId === cs.collectionId)\n if (index === -1) {\n newSelected.push(cs)\n } else {\n newSelected.splice(index, 1)\n }\n\n onChange(newSelected)\n }\n\n return (\n \n \n \n \n\n results\n \n \n \n {selected.length} collections filtered\n \n \n \n\n {isLoading && }\n {!isLoading && filteredSummary.length === 0 && No results found}\n {!isLoading && filteredSummary.length > 0 && \n {filteredSummary.map((s) => {\n const isSelected = selected.findIndex(b => b.collectionId === s.collectionId) !== -1\n return handleSelect(s)} onDeselect={() => handleSelect(s)} isSelected={isSelected}>\n \n {cleanCollectionName(s.collectionName)}\n \n {s.count}\n \n })}\n \n }\n
\n \n )\n}\n\nexport default CollectionSummaryFilter","export default __webpack_public_path__ + \"static/media/arendt.df1342b0.jpg\";","export interface CollectionSummary {\n collectionId: number;\n collectionName: string;\n count: number;\n}\n\nexport interface SummaryResponse {\n summary: CollectionSummary[]\n}\n\nexport interface CollectionItem {\n id: number;\n locId: string;\n imageUrl: string;\n OCRResult: string;\n headline: string;\n collectionName: string;\n}\n\nexport interface SearchResponse {\n results: CollectionItem[]\n}\n\nexport const fetchSummary = async (query: string): Promise => {\n const res = await fetch(\"/v1/summary\", {\n method: 'POST',\n body: JSON.stringify({ search: query })\n })\n return (res.json() as Promise)\n}\n\n\nexport const doSearch = async (query: string, collections: number[], page: number): Promise => {\n const res = await fetch(\"/v1/search\", {\n method: 'POST',\n body: JSON.stringify({ search: query, collections, page })\n })\n return (res.json() as Promise)\n}","import React, { useState, useEffect } from 'react';\nimport { Pane, majorScale, Heading, Paragraph, Link, Spinner } from 'evergreen-ui'\nimport CollectionItemElement from './components/CollectionItem'\nimport Search from './components/Search'\nimport ReactGA from 'react-ga'\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport CollectionSummaryFilter from './components/CollectionSummaryFilter'\nimport ArendtImage from './static/arendt.jpg'\nimport { fetchSummary, CollectionSummary, doSearch, CollectionItem } from './api'\n\nfunction App() {\n const [query, setQuery] = useState(\"\")\n const [collectionsFilter, setCollectionsFilter] = useState([])\n const [results, setResults] = useState([])\n const [summary, setSummary] = useState([])\n const [isLoading, setIsLoading] = useState(false)\n const [summaryIsLoading, setSummaryIsLoading] = useState(true)\n const [page, setPage] = useState(0)\n const [hasMore, setHasMore] = useState(true)\n\n const searchWords = query.trim().split(\" \")\n\n useEffect(() => {\n const updateSummary = async () => {\n setSummaryIsLoading(true)\n try {\n const res = await fetchSummary(query)\n setSummary(res.summary)\n } finally {\n setSummaryIsLoading(false)\n }\n }\n updateSummary()\n\n }, [query])\n\n useEffect(() => {\n\n setPage(0)\n setHasMore(true)\n const updateResults = async () => {\n setIsLoading(true)\n const res = await doSearch(query, collectionsFilter.map(c => c.collectionId), 0)\n setResults(res.results)\n setIsLoading(false)\n }\n\n updateResults()\n\n }, [query, collectionsFilter])\n\n const fetchMoreData = async () => {\n const res = await doSearch(query, collectionsFilter.map(c => c.collectionId), page + 1)\n if (res.results.length === 0) {\n setHasMore(false)\n return\n }\n\n setResults(results.concat(res.results))\n setPage(page + 1)\n }\n\n const doNewSearch = (query: string) => {\n\n ReactGA.event({\n category: 'User',\n action: 'Searched'\n })\n\n setQuery(query)\n }\n\n return (\n \n \n \n \n \n
\n \n Arendt Archives\n \n \n \n\n \n This project uses documents sourced from the Library of Congress Hannah Arendt Papers Collection. See Rights and Access for usage. It was built by Robert McQueen. Please use the Google Chrome browser for best results.\n \n \n \n\n \n \n {isLoading && (\n \n Searching...\n \n Searching...\n \n )}\n {!isLoading &&\n \n {results.length === 0 && (\n \n Darn, no results :(\n Try a different search.\n \n )}\n {results.length > 0 &&\n } endMessage={No More Items Found}>\n {results.map(r => (\n \n ))}\n \n }\n \n }\n \n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport * as Sentry from \"@sentry/react\";\nimport { Integrations } from \"@sentry/tracing\";\nimport ReactGA from 'react-ga';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\n\nif (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {\n // dev code\n ReactGA.initialize(\"UA-201437458-2\")\n} else {\n Sentry.init({\n dsn: \"https://1e4cb505b7a2479898cb19d788774ab8@o37323.ingest.sentry.io/5851622\",\n integrations: [new Integrations.BrowserTracing()],\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 0.2,\n });\n\n ReactGA.initialize(\"UA-201437458-1\")\n}\n\nReactGA.pageview(window.location.pathname + window.location.search);\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}