summaryrefslogtreecommitdiff
path: root/static/js/main.daa12810.chunk.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'static/js/main.daa12810.chunk.js.map')
-rw-r--r--static/js/main.daa12810.chunk.js.map1
1 files changed, 0 insertions, 1 deletions
diff --git a/static/js/main.daa12810.chunk.js.map b/static/js/main.daa12810.chunk.js.map
deleted file mode 100644
index 298d361..0000000
--- a/static/js/main.daa12810.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["components/icons/logo.js","components/launcher/index.js","redux/github/transform.js","redux/github/reducer.js","redux/github/types.js","redux/preference/types.js","redux/preference/reducer.js","redux/reducers.js","store.js","components/alert/index.js","components/icons/solar.js","components/loader/index.js","components/top-nav/index.js","components/filters/language-filter/index.js","components/filters/view-filter/index.js","components/filters/date-jump-filter/index.js","components/filters/index.js","components/group-heading/index.js","redux/github/actions.js","components/icons/star.js","components/icons/fork.js","components/icons/issue.js","components/repository-list/list-item/index.js","components/repository-grid/grid-item/index.js","components/repository-grid/index.js","components/repository-list/index.js","containers/feed/index.js","redux/preference/actions.js","components/options-form/index.js","containers/options/index.js","router/index.js","app.js","index.js"],"names":["Logo","props","id","xmlns","width","height","viewBox","className","d","Launcher","GithubTransform","createTransform","inboundState","key","repositories","length","processing","error","outboundState","whitelist","initialState","reducer","state","action","type","payload","viewType","dateJump","language","options","token","combineReducers","github","preference","persistedReducers","persistReducer","storage","stateReconciler","autoMergeLevel2","transforms","expireReducer","expireSeconds","expiredState","githubState","autoExpire","rootReducer","store","createStore","composeWithDevTools","applyMiddleware","thunk","persist","persistStore","Alert","classnames","children","Solar","Loader","TopNav","tweet","isRunningExtension","window","chrome","runtime","href","rel","target","this","React","Component","LanguageFilter","filterInputRef","createRef","filterText","selectedIndex","showDropdown","focusFilterInput","current","focus","onKeyDown","e","isEnterKey","keyCode","isUpKey","isDownKey","filteredLanguages","getFilteredLanguages","preventDefault","setState","prevState","selectLanguage","selectedLanguage","updateLanguage","value","hideDropdown","filterLanguages","toggleDropdown","prevProps","ensureSelectedVisible","itemComponent","refs","activeItem","domNode","ReactDOM","findDOMNode","scrollIntoView","block","availableLanguages","languages","filter","languageText","title","toLowerCase","selectedText","indexOf","map","counter","isSelectedIndex","refProp","ref","languageColor","GithubColors","get","color","classNames","onMouseDown","style","backgroundColor","placeholder","onBlur","onChange","renderLanguages","onClick","getLanguageDropdown","ViewFilter","changeSelected","updateViewType","active","selectedViewType","DateJumpFilter","dropdownOpen","updateDateJump","selectedDateJump","toggle","Dropdown","isOpen","DropdownToggle","getSelectedDateJump","DropdownMenu","DropdownItem","Filters","GroupHeading","startMoment","moment","start","currentMoment","yesterdayMoment","subtract","isSame","format","formattedDate","fromNow","endMoment","end","getTitle","getSubtitle","transformFilters","filters","transformedFilters","dateRange","reposDate","reposLanguage","access_token","q","sort","order","Star","version","role","fillRule","Fork","Issue","ListItem","repository","html_url","owner","login","name","created_at","description","itemProp","stargazers_count","toLocaleString","forks","open_issues","src","avatar_url","onError","alt","GridItem","slice","RepositoryGrid","repositoryGroup","groupHeading","groupKey","data","items","data-group-key","renderGroup","RepositoryList","propTypes","PropTypes","array","isRequired","string","FeedContainer","fetchNextRepositories","getFilters","fetchTrending","currPreferences","prevPreferences","getNextDateRange","lastRecords","startOf","to","message","tokenWarning","renderTokenWarning","renderErrors","renderAlerts","hasRepositories","renderRepositoriesList","mapDispatchToProps","dispatch","axios","params","then","response","catch","connect","OptionsForm","success","saveOptions","updateOptions","OptionsContainer","AppRoutes","exact","path","component","App","loading","persistor","render","document","getElementById"],"mappings":"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","file":"static/js/main.daa12810.chunk.js","sourcesContent":["import React from 'react';\n\nconst Logo = (props) => (\n <svg id='githunt-logo' xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\">\n <defs>\n <style>{ '#githunt-logo .cls-1{ fill:#1d1d1b; }#githunt-logo .cls-2{ fill:#e7413e; }#githunt-logo .cls-3{ fill:#e6e4da; }#githunt-logo .cls-4{ fill:#cbe7f5; }#githunt-logo .cls-5{ fill:#1f4863; }' }</style>\n </defs>\n <title>astronaut-helmet</title>\n <g id=\"astronaut-helmet\">\n <path className=\"cls-1\"\n d=\"M9.19,25s.88-7.71,6.46-11.79,9.42-5.42,17.58-4.92,11.58,5.25,13.58,7.33S50,24.22,50,24.22s1.42.38,1.46,1.25.08,2,.08,2a9.44,9.44,0,0,0,2.17-.08c0-.17-.58-12.67-.58-12.67s-2.29-.75-2.37-2.5,1.38-3.38,3.83-2.58.71,4.58.71,4.58,1.5,14.5,1.38,15.08-.71.75-1,.83-4-.21-4-.21a9.81,9.81,0,0,1-.21,3c-.33.54-2,.88-2,.88A13.9,13.9,0,0,1,49,37.18a5.32,5.32,0,0,1-1,2.21s2.54,6.46,2.5,6.83-5.87,5.83-12.75,8.38-14.75.79-19-1.71-7.29-5.87-7.5-6.5,2-5.33,2-5.33-1.12-2.33-1.79-4a28.51,28.51,0,0,1-1-2.92S8,33.51,7.78,32.93s-.62-6.88-.33-7.38S8.82,25,9.19,25Z\"/>\n <path className=\"cls-2\" d=\"M9.15,26.59s1.54-.17,1.58.13a46.49,46.49,0,0,1,0,5.92,1.48,1.48,0,0,1-1.13-.12C9.44,32.34,8.86,26.84,9.15,26.59Z\"/>\n <path className=\"cls-2\" d=\"M48.65,25.51c.12-.12,1.08.13,1.13.38a45.42,45.42,0,0,1,0,5.83,1.3,1.3,0,0,1-1.08.13C48.61,31.72,48.61,25.55,48.65,25.51Z\"/>\n <path className=\"cls-3\" d=\"M53.19,10.64c.95-.36,1.54.42,1.67,1.46A1.3,1.3,0,0,1,53,13.43,1.51,1.51,0,0,1,53.19,10.64Z\"/>\n <path className=\"cls-3\" d=\"M51.94,28.26c.13,0,2.79,0,2.79-.25s-.5-8.42-.25-8.62.29.08.42.33a81.73,81.73,0,0,1,.67,9,11.81,11.81,0,0,1-3.62.13C51.78,28.72,51.94,28.26,51.94,28.26Z\"/>\n <path className=\"cls-4\"\n d=\"M12.19,25.18s-1.42.13-1.54,0A17.8,17.8,0,0,1,14.36,17a16.22,16.22,0,0,1,6.25-4.92s.08,1.63.29,1.71a10.07,10.07,0,0,0,3.17-.17c.17-.25-.25-2.92-.12-3a6.35,6.35,0,0,1,1.83-.33,32.37,32.37,0,0,0,.29,4,6.86,6.86,0,0,0,2.25.21A3.22,3.22,0,0,0,30.07,14c0-.12-.54-4-.42-4a3.49,3.49,0,0,1,.42-.08s.21,3.54.46,3.5,3.17-.12,3.13-.46-.46-3.25-.21-3.21a16.38,16.38,0,0,1,8.71,3.62C46,16.64,48,23.59,47.9,23.68a5,5,0,0,1-.71.25s-5.46-5.62-10.67-6.46-9.46-1.37-14.92,1.13A35,35,0,0,0,12.19,25.18Z\"/>\n <path className=\"cls-2\" d=\"M21.61,11.68c.17-.08,1.33-.5,1.33-.5s.33,1.5.13,1.58a7,7,0,0,1-1.21.08Z\"/>\n <path className=\"cls-2\" d=\"M26.73,10.09a10.72,10.72,0,0,1,2-.08,33.54,33.54,0,0,1,.13,3.5,5.81,5.81,0,0,1-1.71.13A17.46,17.46,0,0,1,26.73,10.09Z\"/>\n <path className=\"cls-2\" d=\"M31,9.89c.17,0,1.46,0,1.46,0a13.34,13.34,0,0,1,.13,2.25c-.12,0-1.25.13-1.25.13Z\"/>\n <path className=\"cls-5\"\n d=\"M12.44,27.05a39.54,39.54,0,0,1,8.88-6.46c4.17-2,9.58-2.08,13.33-1.46s7.08,3.08,9.42,4.71,2.54,2.21,2.54,2.21a62.38,62.38,0,0,0,.29,6.5,4.29,4.29,0,0,0,.75,1A16.13,16.13,0,0,1,46,38.05a16.08,16.08,0,0,1-3.83,5A25.87,25.87,0,0,1,38.9,45s-2.83-2.75-3-2.79-.83.46-.71.71,3.13,2.42,2.88,2.58a24.82,24.82,0,0,1-8.58,1.83,18.55,18.55,0,0,1-11.87-4.58,24.08,24.08,0,0,1-5.17-8.5C12.36,34,12.4,27.14,12.44,27.05Z\"/>\n <path className=\"cls-1\" d=\"M22.57,23.68c.51,0,1,.92.54,1.67s-2.75,3.54-2.54,6.17a7.63,7.63,0,0,0,1.92,4.83c.75.83,1.17.75,1.17,1.13s0,.42-.25.5a7.79,7.79,0,0,1-5.67-1c-2.38-1.62-2.42-5.25-2.29-6.54S16.23,23.89,22.57,23.68Z\"/>\n <path className=\"cls-3\" d=\"M21.15,24.72c.46-.07.75.29.54.46s-2.71,3-2.58,6S20,35.51,20.48,36s.71.71.58.83a4.74,4.74,0,0,1-3.79-2.21c-1.25-2-.42-5.46.25-6.79S19.15,25,21.15,24.72Z\"/>\n <path className=\"cls-1\" d=\"M40.53,22.68a4.32,4.32,0,0,1,1.88,1.38c0,.25-.08.46-.21.42a12.82,12.82,0,0,1-1.83-1.12A.47.47,0,0,1,40.53,22.68Z\"/>\n <path className=\"cls-1\" d=\"M40.86,26.76a18.35,18.35,0,0,1,3.71,2.08c0,.25,0,.5-.12.5S41,27.68,40.82,27.59,40.65,26.8,40.86,26.76Z\"/>\n <path className=\"cls-1\" d=\"M41.07,29.68a23.29,23.29,0,0,1,3.83,2.5c0,.25.08.63-.08.58s-3.79-2.12-4-2.33S40.94,29.68,41.07,29.68Z\"/>\n <path className=\"cls-1\" d=\"M40.9,32.76a23,23,0,0,1,3.83,2.63c0,.21-.25.54-.25.54a44.18,44.18,0,0,1-3.87-2.37C40.57,33.34,40.9,32.76,40.9,32.76Z\"/>\n <path className=\"cls-1\" d=\"M39.86,35.76s4.58,3,4.5,3.21-.12.54-.29.46-4.67-2.79-4.67-3S39.86,35.76,39.86,35.76Z\"/>\n <path className=\"cls-1\" d=\"M38.9,38.26a29.79,29.79,0,0,1,4,3.25,2.2,2.2,0,0,1-.46.38s-4-2.92-4.08-3.12S38.65,38.3,38.9,38.26Z\"/>\n <path className=\"cls-1\" d=\"M37.36,40.3a18.21,18.21,0,0,1,3.42,2.79,2.2,2.2,0,0,1-.46.38,32,32,0,0,1-3.42-2.58A1,1,0,0,1,37.36,40.3Z\"/>\n <path className=\"cls-3\" d=\"M28.53,23.72a3.23,3.23,0,0,1,1,.08s.08-1.42.38-1.5.58,0,.58.13.08,1.21.08,1.21,1.17-.62,1.29-.46-.08.75-.08.75.42.25.42.42a1,1,0,0,1-.17.42s-1.42-.25-1.42,0a10.26,10.26,0,0,0,.46,1.46l-.62.25s-.5-.87-.58-.71a2.23,2.23,0,0,1-.75.67c-.12,0-.46-.5-.46-.5s.83-1.08.71-1.17-1-.29-1-.46A.9.9,0,0,1,28.53,23.72Z\"/>\n <path className=\"cls-3\" d=\"M34.73,36.49a1.91,1.91,0,0,1,.59,0s0-.84.22-.89.34,0,.34.07,0,.71,0,.71.69-.37.76-.27,0,.44,0,.44.25.15.25.25a.61.61,0,0,1-.1.25S36,37,36,37.1a6.07,6.07,0,0,0,.27.86l-.37.15s-.3-.52-.34-.42a1.32,1.32,0,0,1-.44.39c-.07,0-.27-.3-.27-.3s.49-.64.42-.69-.62-.17-.62-.27A.53.53,0,0,1,34.73,36.49Z\"/>\n <path className=\"cls-3\" d=\"M23.18,40.09c.17-.12.38-.33.58-.21s.38,1.08.38,1.08.88,0,1,.21a1.92,1.92,0,0,1,0,.75l-.67,0,.13.92-.42,0-.58-.79s-.33.58-.46.54a7.12,7.12,0,0,1-.71-.46l.67-.67s-.83-.17-.83-.42,0-.54.17-.5.63.25.67.13S23.18,40.09,23.18,40.09Z\"/>\n <path className=\"cls-3\" d=\"M27.92,32.59c.17-.08.88-.42.88-.29s-.08.79.21.79,1.13-.08,1.13.08.29.5,0,.54-1,.17-1,.17l.13,1h-.5c-.25,0-.5-.92-.5-.92s-.71-.17-.71-.29,0-.42,0-.42l.38,0Z\"/>\n <path className=\"cls-3\" d=\"M35.69,28.05c.17-.08.88-.42.88-.29s-.08.79.21.79,1.13-.08,1.13.08.29.5,0,.54-1,.17-1,.17l.13,1h-.5c-.25,0-.5-.92-.5-.92s-.71-.17-.71-.29,0-.42,0-.42l.38,0Z\"/>\n <path className=\"cls-3\" d=\"M29.4,39.2c.17-.08.67-.12.75.08s.67.5.67.5L31.4,41l-.37.38s-.67.46-.75.29a3.72,3.72,0,0,0-.37-.5l-.37.54-.79-.33s-.25-.67,0-.87.54-.08.5-.33A2,2,0,0,1,29.4,39.2Z\"/>\n <path className=\"cls-4\" d=\"M14.48,42.72c.22.15,1.33,1.42,2,2a9.09,9.09,0,0,0,1,.79s-1.54,2.54-1.79,2.5a10.93,10.93,0,0,1-2.54-2.08A11.44,11.44,0,0,1,14.48,42.72Z\"/>\n <path className=\"cls-2\" d=\"M18.07,45.64c.12-.09.5.13.42.25s-1.54,3.17-1.67,3.17-.62-.08-.5-.25S17.9,45.76,18.07,45.64Z\"/>\n <path className=\"cls-2\" d=\"M19.07,46.51l.42.25a23.68,23.68,0,0,1-1.54,3.29c-.17-.08-.46-.17-.46-.29S19.07,46.51,19.07,46.51Z\"/>\n <path className=\"cls-4\"\n d=\"M20.15,47.05a17.92,17.92,0,0,0,7.92,2.08c4.83.21,6.54.13,10.79-2a22.05,22.05,0,0,0,6.5-4.5,11.37,11.37,0,0,1,1.46-1.25s1.67,4.33,1.58,4.5a1.83,1.83,0,0,1-.46.42,22,22,0,0,0-1.79-2.92c-.21,0-.67.71-.67.71s1.67,2.46,1.5,2.71a5.24,5.24,0,0,1-1.17.75,15.06,15.06,0,0,0-1.42-2.42c-.25-.08-.92.42-.83.63s1.54,2.46,1.54,2.46-.83.75-1,.67-1.21-2.17-1.37-2.17-.67.58-.67.58,1.54,2,1.38,2.17l-.75.58-1.42-2.12s-.62.25-.62.42,1.46,2.38,1.38,2.5-2.46,2-7.75,2.63-8.62.13-11.54-.83-4-1.87-4.08-2A14.17,14.17,0,0,1,20.15,47.05Z\"/>\n </g>\n </svg>\n);\n\nexport default Logo;\n","import React from 'react';\n\nimport './styles.css';\nimport Logo from '../icons/logo';\n\nconst Launcher = () => (\n <div className=\"launcher-body\">\n <div className=\"logo-container\">\n <Logo/>\n <div className=\"logo-text\">\n <h4>Loading ..</h4>\n <p className=\"text-muted\">We're testing your patience</p>\n </div>\n </div>\n </div>\n);\n\nexport default Launcher;\n","import { createTransform } from 'redux-persist';\n\nconst GithubTransform = createTransform(\n // transform state on its way to being serialized and persisted.\n (inboundState, key) => {\n inboundState = inboundState || {};\n\n // Keep the first group only to avoid overflowing the storage\n if (inboundState.repositories && inboundState.repositories.length > 1) {\n inboundState = {\n ...inboundState,\n repositories: [\n inboundState.repositories[0]\n ]\n };\n }\n\n // Do not persist `processing` flag or `error` information,\n // as we want to start fresh on reload in such cases\n inboundState = {\n ...inboundState,\n processing: false,\n error: null\n };\n\n return inboundState;\n },\n // transform state being rehydrated\n (outboundState, key) => {\n return { ...outboundState };\n },\n // define which reducers this transform gets called for.\n {\n whitelist: ['github']\n }\n);\n\nexport default GithubTransform;\n","import { FETCH_TRENDING_FAILED, FETCH_TRENDING_SUCCESS, PROCESS_FETCH_TRENDING } from './types';\nimport { UPDATE_DATE_TYPE, UPDATE_LANGUAGE } from '../preference/types';\n\nexport const initialState = {\n processing: false,\n // Array of objects with the below format\n // [\n // { start: '', end: '', data: [] },\n // { start: '', end: '', data: [] }\n // ]\n repositories: [],\n error: null,\n};\n\nexport default function reducer(state = initialState, action) {\n switch (action.type) {\n case PROCESS_FETCH_TRENDING:\n return {\n ...state,\n processing: true,\n error: null\n };\n case UPDATE_DATE_TYPE:\n case UPDATE_LANGUAGE:\n return {\n ...state,\n ...initialState\n };\n case FETCH_TRENDING_SUCCESS:\n return {\n ...state,\n // Append the fetched repositories to existing list\n repositories: [\n ...state.repositories,\n action.payload\n ],\n processing: false,\n error: null\n };\n case FETCH_TRENDING_FAILED:\n return {\n ...state,\n processing: false,\n error: action.payload\n };\n default:\n return state;\n }\n}\n","export const PROCESS_FETCH_TRENDING = 'PROCESS_FETCH_TRENDING';\nexport const FETCH_TRENDING_SUCCESS = 'FETCH_TRENDING_SUCCESS';\nexport const FETCH_TRENDING_FAILED = 'FETCH_TRENDING_FAILED';\n","export const UPDATE_OPTIONS = 'UPDATE_OPTIONS';\nexport const UPDATE_VIEW_TYPE = 'UPDATE_VIEW_TYPE';\nexport const UPDATE_DATE_TYPE = 'UPDATE_DATE_TYPE';\nexport const UPDATE_LANGUAGE = 'UPDATE_LANGUAGE';\n","import { UPDATE_DATE_TYPE, UPDATE_LANGUAGE, UPDATE_OPTIONS, UPDATE_VIEW_TYPE } from './types';\n\nconst initialState = {\n viewType: 'list',\n dateJump: 'week',\n language: '',\n options: {\n token: '',\n },\n};\n\nexport default function reducer(state = initialState, action) {\n switch (action.type) {\n case UPDATE_OPTIONS:\n return {\n ...state,\n options: action.payload\n };\n case UPDATE_DATE_TYPE:\n return {\n ...state,\n dateJump: action.payload\n };\n case UPDATE_VIEW_TYPE:\n return {\n ...state,\n viewType: action.payload\n };\n case UPDATE_LANGUAGE:\n return {\n ...state,\n language: action.payload\n };\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport preference from './preference/reducer';\nimport github from './github/reducer';\n\nexport default combineReducers({\n github,\n preference,\n});\n","import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport { applyMiddleware, createStore } from 'redux';\nimport storage from 'redux-persist/lib/storage';\nimport thunk from 'redux-thunk';\nimport expireReducer from 'redux-persist-expire';\n\nimport GithubTransform from './redux/github/transform';\nimport githubState from './redux/github/reducer';\nimport rootReducer from './redux/reducers';\n\nconst persistedReducers = persistReducer(\n {\n key: 'githunt:root',\n storage: storage,\n stateReconciler: autoMergeLevel2,\n transforms: [\n GithubTransform,\n expireReducer('github', {\n expireSeconds: 3600,\n expiredState: { ...githubState },\n autoExpire: true\n })\n ]\n },\n rootReducer,\n);\n\nexport const store = createStore(persistedReducers, composeWithDevTools(\n applyMiddleware(\n thunk,\n ),\n));\n\nexport const persist = persistStore(store);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nconst Alert = (props) => (\n <div className={ classnames('alert', `alert-${props.type}`) }>{ props.children }</div>\n);\n\nAlert.propTypes = {\n type: PropTypes.string.isRequired\n};\n\nexport default Alert;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Solar = (props) => (\n <svg id='solar-loader' { ...props } xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\">\n <defs>\n <style>{ '#solar-loader .cls-1{ fill:#1d1d1b; }#solar-loader .cls-2{ fill:#85bfe9; }#solar-loader .cls-3{ fill:#e6e4da; }#solar-loader .cls-4{ fill:#ddc07c; }#solar-loader .cls-5{ fill:#cbe7f5; }#solar-loader .cls-6{ fill:#fab900; }' }</style>\n </defs>\n <title>solar-system</title>\n <g id=\"solar-system\">\n <path className=\"cls-1\"\n d=\"M51.68,14C45.59,6.57,38.89,4.57,35,4.57s-11.08.88-15.12,3.17-9.33,7.62-11.38,11.5A23.88,23.88,0,0,0,6.22,35.78a24.6,24.6,0,0,0,5.42,10.67s-3.5,5.71-.75,8.38a7.74,7.74,0,0,0,9,1.5s3.33,2.83,11,3.08,11.33-1.92,16-6,9.13-8.54,10.83-17.37S57.76,21.41,51.68,14ZM50.47,47.53c-5.29,6.54-10.54,8.75-14,9.79s-10.17.17-12.08-.54a7.52,7.52,0,0,1-2.92-1.87s3.65-5.56-1.21-9c-4-2.83-7.08-.33-7.08-.33A20.46,20.46,0,0,1,8,34c-.54-6.79.79-12.17,3.38-15.62s7.58-11.75,22.58-12c3.54-.06,8.38,1.25,13.21,5.37S55.55,21.49,56,27.49,55.76,41,50.47,47.53Zm5-39.21a2.37,2.37,0,0,0-3-3A2.46,2.46,0,0,0,51,9.12C51.68,10,55,10.78,55.47,8.32Z\"/>\n <path className=\"cls-2\" d=\"M52.64,6.41a1.61,1.61,0,0,1,2,1,1.38,1.38,0,0,1-2,1.46C51.14,8.24,51.76,6.82,52.64,6.41Z\"/>\n <path className=\"cls-1\" d=\"M37.59,10.45c1-.72,2.13.54,2.13,1.25s-1.25,1.29-1.92.92A1.28,1.28,0,0,1,37.59,10.45Z\"/>\n <path className=\"cls-1\" d=\"M46.64,14.66c1-.34,2.58.13,2.54,2.17s-2.79,1.75-3.42.75A1.94,1.94,0,0,1,46.64,14.66Z\"/>\n <path className=\"cls-3\" d=\"M47,15.54a1,1,0,0,1,1.29,1.1c0,1-1.41.89-1.73.38A1,1,0,0,1,47,15.54Z\"/>\n <path className=\"cls-1\" d=\"M26.43,49.7c1-.34,2.58.13,2.54,2.17s-2.79,1.75-3.42.75A1.94,1.94,0,0,1,26.43,49.7Z\"/>\n <path className=\"cls-3\" d=\"M26.76,50.58A1,1,0,0,1,28,51.68c0,1-1.41.89-1.73.38A1,1,0,0,1,26.76,50.58Z\"/>\n <path className=\"cls-4\"\n d=\"M14.09,47c1.88-1.17,5-.37,5.88.92s.75,4,.5,4.79a2.64,2.64,0,0,1-.92,1.25s-1-4-1.33-4.08-.83,0-.83.21,1.38,4.46,1.17,4.63a4.6,4.6,0,0,1-.62.38s-1.33-4.54-1.58-4.58-.83.38-.71.5,1.54,4.42,1.29,4.46-.67.13-.75,0-1.46-4.25-1.62-4.25-1,.33-.87.5,1.21,3.42,1,3.46A3.85,3.85,0,0,1,12,51.87,4.9,4.9,0,0,1,14.09,47Z\"/>\n <path className=\"cls-1\" d=\"M19.26,49.53c.29-.17.88-.25.83-.08S20,51.32,20,51.32a.43.43,0,0,1-.5-.25A11.3,11.3,0,0,1,19.26,49.53Z\"/>\n <path className=\"cls-1\"\n d=\"M48.51,29.12c-.5-6.62-5-8.54-5-8.54s1.63-3.62-1.37-5.58S36,16.16,36,16.16c-4.75-1.25-9.33-.83-13.54,2.38a19.14,19.14,0,0,0-7,14.71C15.55,38.66,19,43.41,25,46.78S38.8,48.2,42.76,45.37,49,35.74,48.51,29.12ZM38.76,45.37c-4.67,1.88-12.54,1.71-16.83-2.83s-5.46-10.08-3.33-15.46,8.33-11.17,16.67-9.46a3.56,3.56,0,0,0,2.33,4.17c3,1,4.63.21,4.63.21s4.5,2.25,4.58,8.92S43.43,43.49,38.76,45.37Z\"/>\n <path className=\"cls-5\" d=\"M38.68,16a2.75,2.75,0,0,1,3.13,1c.83,1.29-.42,3.13-.83,3.38s-1.42-.17-1.42-.17S39.26,18.12,39,18s-1-.12-.83.08.33,2,.17,1.88a3.29,3.29,0,0,1-1.17-2.17A2,2,0,0,1,38.68,16Z\"/>\n <path className=\"cls-1\" d=\"M40,17.45c-.06-.26.67-.42.75-.08s.33,1.67.08,1.88-.75.21-.79,0S40,17.62,40,17.45Z\"/>\n <path className=\"cls-1\" d=\"M31.51,22.57c-.09-.14-.17-3.17.17-3.17s.88-.25,1,.13a10.65,10.65,0,0,1-.08,3.08C32.34,22.74,31.68,22.82,31.51,22.57Z\"/>\n <path className=\"cls-1\" d=\"M26.09,20.53c0-.13.71-.42.92-.25a8.82,8.82,0,0,1,1.17,2.67c-.12.21-.46.58-.71.42A10.49,10.49,0,0,1,26.09,20.53Z\"/>\n <path className=\"cls-1\" d=\"M22.68,23.66s2.33.71,2.33,1a1.79,1.79,0,0,1-.33.79,18.76,18.76,0,0,1-2.67-1C22,24.37,22.39,23.78,22.68,23.66Z\"/>\n <path className=\"cls-1\" d=\"M19.89,28.66c.21,0,2.83.5,2.92.79s.13.92-.12.92a24.43,24.43,0,0,1-3-.54C19.43,29.7,19.89,28.66,19.89,28.66Z\"/>\n <path className=\"cls-1\" d=\"M20.05,33.2a5.41,5.41,0,0,1,2.75-.08c.08.21.25.75.08.88a12.34,12.34,0,0,1-2.75.29C20,34.2,19.93,33.37,20.05,33.2Z\"/>\n <path className=\"cls-1\" d=\"M22.22,39.87c-.17-.12,1.92-2.29,2.13-2.17s.54.38.46.67-1.75,2.33-2.08,2.29S22.39,40,22.22,39.87Z\"/>\n <path className=\"cls-1\" d=\"M28.18,42.74c-.45,0,1.21-3.54,1.42-3.5s.79.08.71.42A21.16,21.16,0,0,1,29.05,43C28.8,43.2,28.39,42.74,28.18,42.74Z\"/>\n <path className=\"cls-1\" d=\"M33.14,39.57c.16-.16,1.08-.5,1.17-.17a20.81,20.81,0,0,1,.33,3.75c-.17.08-1,.13-1-.08A21.24,21.24,0,0,1,33.14,39.57Z\"/>\n <path className=\"cls-1\" d=\"M38.55,37.07c-.17-.17.46-.87.67-.83s2.71,1.58,2.71,2-.25.88-.54.92A18.25,18.25,0,0,1,38.55,37.07Z\"/>\n <path className=\"cls-1\" d=\"M40.51,30.12c0-.16,3.75,0,3.88.38a.79.79,0,0,1,0,.71A17.68,17.68,0,0,1,40.51,31C40.3,30.82,40.47,30.37,40.51,30.12Z\"/>\n <path className=\"cls-1\" d=\"M38.39,25c.13-.08,2.17-2,2.42-1.83a1.86,1.86,0,0,1,.71.83,12.37,12.37,0,0,1-2.46,1.71A5,5,0,0,1,38.39,25Z\"/>\n <path className=\"cls-1\" d=\"M28.93,24.95c2.7-1.15,10-.33,10,6.46s-8.75,9-11.92,5.17S23.34,27.32,28.93,24.95Z\"/>\n <path className=\"cls-6\" d=\"M29.64,26.59c2-.86,7.48-.25,7.45,4.83s-6.55,6.7-8.92,3.87S25.46,28.37,29.64,26.59Z\"/>\n </g>\n </svg>\n);\n\nSolar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Solar;\n","import React from 'react';\n\nimport './styles.css';\nimport Solar from '../icons/solar';\n\nconst Loader = () => (\n <div className=\"loading-indicator\">\n <Solar className='fa-spin'/>\n </div>\n);\n\nexport default Loader;\n","import React from 'react';\n\nimport './styles.css';\nimport Logo from '../icons/logo';\n\nclass TopNav extends React.Component {\n tweet = 'GitHunt – Most starred projects on Github by @kamranahmedse https://github.com/kamranahmedse/githunt';\n\n render() {\n // We need that to show the extension button only if not running in extension\n const isRunningExtension = window.chrome &&\n window.chrome.runtime &&\n window.chrome.runtime.id;\n\n return (\n <div className='top-nav'>\n <div className=\"container clearfix\">\n <a href='https://github.com/kamranahmedse/githunt'\n rel=\"noopener noreferrer\"\n target='_blank'\n className=\"logo clearfix float-left\">\n <Logo/>\n <div className=\"logo-text\">\n <h4>GitHunt</h4>\n <p className=\"text-muted d-none d-sm-inline-block d-md-inline-block d-xl-inline-block d-lg-inline-block\">Most starred projects on GitHub</p>\n <p className=\"text-muted d-inline-block d-sm-none d-md-none d-xl-none d-lg-none\">Top Github Projects</p>\n </div>\n </a>\n <div className=\"float-right external-btns\">\n <a href='http://github.com/kamranahmedse/githunt'\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-dark\"><i className=\"fa fa-github mr-1\"></i> View Source</a>\n {\n !isRunningExtension && (\n <a href='https://goo.gl/e7YP1h'\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-danger d-none d-sm-none d-md-inline-block d-xl-inline-block d-lg-inline-block\">\n <i className=\"fa fa-chrome mr-1\"></i> Use Extension\n </a>\n )\n }\n {\n isRunningExtension && (\n <a href='https://twitter.com/kamranahmedse'\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-danger d-none d-sm-none d-md-inline-block d-xl-inline-block d-lg-inline-block\">\n <i className=\"fa fa-comment mr-1\"></i> Give Feedback\n </a>\n )\n }\n <a href={ `https://twitter.com/intent/tweet?text=${this.tweet}` }\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-primary btn-tweet d-none d-sm-none d-md-none d-xl-inline-block d-lg-inline-block\">\n <i className=\"fa fa-twitter mr-1\"></i> Tweet\n </a>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default TopNav;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport GithubColors from 'github-colors';\n\nimport './styles.css';\nimport languages from './languages';\n\nclass LanguageFilter extends React.Component {\n filterInputRef = React.createRef();\n\n state = {\n filterText: '',\n selectedIndex: 0,\n showDropdown: false\n };\n\n focusFilterInput = () => {\n this.filterInputRef.current.focus();\n };\n\n componentDidUpdate(prevProps, prevState) {\n // only scroll into view if the active item changed since last render\n if (prevState.selectedIndex !== this.state.selectedIndex) {\n this.ensureSelectedVisible();\n }\n\n // If the dropdown has just been made visible focus the input\n if (this.state.showDropdown && !prevState.showDropdown) {\n this.focusFilterInput();\n }\n }\n\n ensureSelectedVisible() {\n const itemComponent = this.refs.activeItem;\n if (!itemComponent) {\n return;\n }\n\n const domNode = ReactDOM.findDOMNode(itemComponent);\n if (!domNode) {\n return;\n }\n\n domNode.scrollIntoView({ block: 'end' });\n }\n\n getFilteredLanguages() {\n let availableLanguages = [...languages];\n\n if (this.state.filterText) {\n availableLanguages = availableLanguages.filter(language => {\n const languageText = language.title.toLowerCase();\n const selectedText = this.state.filterText.toLowerCase();\n\n return languageText.indexOf(selectedText) >= 0;\n });\n }\n\n return availableLanguages;\n }\n\n renderLanguages() {\n let availableLanguages = this.getFilteredLanguages();\n\n return availableLanguages.map((language, counter) => {\n const isSelectedIndex = counter === this.state.selectedIndex;\n\n // This will be used in making sure of the element visibility\n const refProp = isSelectedIndex ? { ref: 'activeItem' } : {};\n const languageColor = GithubColors.get(language.title) || {\n color: language.title === 'All Languages' ? 'transparent' : '#e8e8e8'\n };\n\n return (\n <a className={ classNames('select-menu-item', { 'active-item': isSelectedIndex }) }\n { ...refProp }\n onMouseDown={ () => this.selectLanguage(counter) }\n key={ counter }>\n <span className='repo-language-color' style={{\n backgroundColor: languageColor.color\n }}></span>\n <span className=\"select-menu-item-text\">{ language.title }</span>\n </a>\n );\n });\n }\n\n onKeyDown = e => {\n const { selectedIndex } = this.state;\n\n const isEnterKey = e.keyCode === 13;\n const isUpKey = e.keyCode === 38;\n const isDownKey = e.keyCode === 40;\n\n if (!isUpKey && !isDownKey && !isEnterKey) {\n return;\n }\n\n const filteredLanguages = this.getFilteredLanguages();\n e.preventDefault();\n\n // arrow up/down button should select next/previous list element\n if (isUpKey && selectedIndex > 0) {\n this.setState(prevState => ({\n selectedIndex: prevState.selectedIndex - 1\n }));\n } else if (isDownKey && selectedIndex < (filteredLanguages.length - 1)) {\n this.setState(prevState => ({\n selectedIndex: prevState.selectedIndex + 1\n }));\n } else if (isEnterKey && filteredLanguages[selectedIndex]) {\n this.selectLanguage(selectedIndex);\n }\n };\n\n selectLanguage = (selectedIndex) => {\n const filteredLanguages = this.getFilteredLanguages();\n const selectedLanguage = filteredLanguages[selectedIndex];\n if (!selectedLanguage) {\n return;\n }\n\n this.setState({\n filterText: '',\n showDropdown: false\n });\n\n this.props.updateLanguage(selectedLanguage.value);\n };\n\n hideDropdown = () => {\n this.setState({\n showDropdown: false,\n filterText: ''\n });\n };\n\n filterLanguages = (e) => {\n this.setState({\n filterText: e.target.value,\n selectedIndex: 0 // Reset and select the first language\n });\n };\n\n getLanguageDropdown() {\n return (\n <div className=\"language-select\">\n <div className=\"select-menu-header\">\n <span className=\"select-menu-title\">Search Language</span>\n </div>\n <div className=\"select-menu-filters\">\n <div className=\"select-menu-text-filter\">\n <input type=\"text\"\n className=\"form-control\"\n placeholder=\"Filter Languages\"\n ref={ this.filterInputRef }\n onBlur={ this.hideDropdown }\n onChange={ this.filterLanguages }\n onKeyDown={ this.onKeyDown }\n />\n </div>\n </div>\n <div className=\"select-menu-list\">\n { this.renderLanguages() }\n </div>\n </div>\n );\n }\n\n toggleDropdown = () => {\n this.setState(prevState => ({\n showDropdown: !prevState.showDropdown\n }));\n };\n\n render() {\n return (\n <div className='language-filter-wrap'>\n <button onClick={ this.toggleDropdown } className=\"btn btn-light language-filter shadowed\">\n <i className=\"fa fa-filter mr-2\"></i>\n { this.props.selectedLanguage || 'All Languages' }\n </button>\n { this.state.showDropdown && this.getLanguageDropdown() }\n </div>\n );\n }\n}\n\nLanguageFilter.propTypes = {\n updateLanguage: PropTypes.func.isRequired,\n selectedLanguage: PropTypes.string\n};\n\nexport default LanguageFilter;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\n\nclass ViewFilter extends React.Component {\n state = {};\n\n changeSelected = (viewType) => {\n this.props.updateViewType(viewType);\n };\n\n render() {\n return (\n <div className=\"view-type-wrap\">\n <div className=\"view-type btn shadowed cursor-default\">\n <button onClick={ () => this.changeSelected('grid') } className={ classNames({ active: this.props.selectedViewType === 'grid' }) }>\n <i className=\"fa fa-table mr-2\"></i>\n Grid\n </button>\n <button onClick={ () => this.changeSelected('list') } className={ classNames({ active: this.props.selectedViewType === 'list' }) }>\n <i className=\"fa fa-list mr-2\"></i>\n List\n </button>\n </div>\n </div>\n );\n }\n}\n\nViewFilter.propTypes = {\n updateViewType: PropTypes.func.isRequired,\n selectedViewType: PropTypes.string,\n};\n\nexport default ViewFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';\n\nimport './styles.css';\n\nclass DateJumpFilter extends React.Component {\n state = {\n dropdownOpen: false\n };\n\n updateDateJump = (dateJump) => {\n if (dateJump === this.props.selectedDateJump) {\n return;\n }\n\n this.props.updateDateJump(dateJump);\n };\n\n toggle = () => {\n this.setState(prevState => ({\n dropdownOpen: !prevState.dropdownOpen\n }));\n };\n\n getSelectedDateJump() {\n switch (this.props.selectedDateJump) {\n case 'day':\n return 'Daily';\n case 'month':\n return 'Monthly';\n case 'year':\n return 'Yearly';\n case 'week':\n return 'Weekly';\n default:\n return 'Weekly';\n }\n }\n\n render() {\n return (\n <Dropdown className='date-jump-wrap' isOpen={ this.state.dropdownOpen } toggle={ this.toggle }>\n <DropdownToggle className='date-jump-type shadowed'>\n <i className=\"fa fa-calendar mr-2\"></i>\n { this.getSelectedDateJump() }\n </DropdownToggle>\n <DropdownMenu>\n <DropdownItem onClick={ () => this.updateDateJump('year') }>Yearly</DropdownItem>\n <DropdownItem onClick={ () => this.updateDateJump('month') }>Monthly</DropdownItem>\n <DropdownItem onClick={ () => this.updateDateJump('week') }>Weekly</DropdownItem>\n <DropdownItem onClick={ () => this.updateDateJump('day') }>Daily</DropdownItem>\n </DropdownMenu>\n </Dropdown>\n );\n }\n}\n\nDateJumpFilter.propTypes = {\n updateDateJump: PropTypes.func.isRequired,\n selectedDateJump: PropTypes.string\n};\n\nexport default DateJumpFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport LanguageFilter from './language-filter';\nimport ViewFilter from './view-filter';\nimport './styles.css';\nimport DateJumpFilter from './date-jump-filter';\n\nconst Filters = (props) => (\n <div className=\"filters-wrap mt-3 mt-sm-3 mt-md-0 mt-xl-0 mt-lg-0\">\n <div className=\"filter-item\">\n <LanguageFilter\n selectedLanguage={ props.selectedLanguage }\n updateLanguage={ props.updateLanguage }\n />\n </div>\n <div className=\"filter-item\">\n <DateJumpFilter\n updateDateJump={ props.updateDateJump }\n selectedDateJump={ props.selectedDateJump }\n />\n </div>\n <div className=\"filter-item d-none d-sm-none d-md-none d-xl-block d-lg-block\">\n <ViewFilter\n selectedViewType={ props.selectedViewType }\n updateViewType={ props.updateViewType }\n />\n </div>\n </div>\n);\n\nFilters.propTypes = {\n updateLanguage: PropTypes.func.isRequired,\n updateViewType: PropTypes.func.isRequired,\n updateDateJump: PropTypes.func.isRequired,\n selectedLanguage: PropTypes.string,\n selectedViewType: PropTypes.string,\n selectedDateJump: PropTypes.string\n};\n\nexport default Filters;\n","import React from 'react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\n\nclass GroupHeading extends React.Component {\n getTitle() {\n const startMoment = moment(this.props.start);\n const currentMoment = moment();\n const yesterdayMoment = moment().subtract(1, 'day');\n\n // For \"day\" jumps return the day name\n if (this.props.dateJump === 'day') {\n if (startMoment.isSame(currentMoment, 'day')) {\n return 'Today';\n } else if (startMoment.isSame(yesterdayMoment, 'day')) {\n return 'Yesterday';\n }\n\n return startMoment.format('dddd');\n }\n\n // Return the relative date\n const formattedDate = startMoment.fromNow();\n if (formattedDate === 'a year ago') {\n return 'Last year';\n } else if (formattedDate === '7 days ago') {\n return 'This week';\n } else if (formattedDate === '14 days ago') {\n return 'Last week';\n }\n\n return formattedDate;\n }\n\n getSubtitle() {\n const startMoment = moment(this.props.start);\n const endMoment = moment(this.props.end);\n\n if (startMoment.isSame(endMoment, 'day') || this.props.dateJump === 'day') {\n return startMoment.format('MMMM D, YYYY');\n }\n\n return startMoment.format('MMMM D, YYYY') + ' – ' + endMoment.format('MMMM D, YYYY');\n }\n\n render() {\n return (\n <div className=\"group-heading\">\n <h4>\n <span className=\"text-capitalizes\">{ this.getTitle() }</span>\n <span className=\"small text-muted ml-2\">\n { this.getSubtitle() }\n </span>\n </h4>\n </div>\n );\n }\n}\n\nGroupHeading.propTypes = {\n start: PropTypes.string,\n end: PropTypes.string,\n dateJump: PropTypes.oneOf(['week', 'month', 'year', 'day'])\n};\n\nexport default GroupHeading;\n","import axios from 'axios';\nimport moment from 'moment';\n\nimport {\n FETCH_TRENDING_FAILED,\n FETCH_TRENDING_SUCCESS,\n PROCESS_FETCH_TRENDING,\n} from './types';\n\nconst API_URL = 'https://api.github.com/search/repositories';\n\nconst transformFilters = (filters) => {\n const transformedFilters = {};\n\n const startMoment = moment(filters.dateRange.start);\n const endMoment = moment(filters.dateRange.end);\n const reposDate = `created:${startMoment.format()}..${endMoment.format()}`;\n const reposLanguage = filters.language ? `language:${filters.language} ` : '';\n\n if (filters.token) {\n transformedFilters.access_token = filters.token;\n }\n\n transformedFilters.q = reposLanguage + reposDate;\n transformedFilters.sort = 'stars';\n transformedFilters.order = 'desc';\n\n return transformedFilters;\n};\n\n/**\n * @param {object} filters\n * @returns {Function}\n */\nexport const fetchTrending = function (filters) {\n return dispatch => {\n dispatch({ type: PROCESS_FETCH_TRENDING });\n\n axios.get(API_URL, {\n params: transformFilters(filters)\n }).then(response => {\n dispatch({\n type: FETCH_TRENDING_SUCCESS,\n payload: {\n start: moment(filters.dateRange.start).format(),\n end: moment(filters.dateRange.end).format(),\n data: response.data\n }\n });\n }).catch(error => {\n let message = error.response &&\n error.response.data &&\n error.response.data.message;\n\n if (!message) {\n message = error.message;\n }\n\n dispatch({\n type: FETCH_TRENDING_FAILED,\n payload: message\n });\n });\n };\n};\n","import React from 'react';\n\nconst Star = (props) => (\n <svg viewBox=\"0 0 14 16\" version=\"1.1\" width=\"14\" height=\"16\" role=\"img\">\n <path fillRule=\"evenodd\" d=\"M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z\"/>\n </svg>\n);\n\nexport default Star;\n","import React from 'react';\n\nconst Fork = (props) => (\n <svg viewBox=\"0 0 10 16\" version=\"1.1\" width=\"10\" height=\"16\" role=\"img\">\n <path fillRule=\"evenodd\"\n d=\"M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z\"></path>\n </svg>\n);\n\nexport default Fork;\n","import React from 'react';\n\nconst Issue = (props) => (\n <svg className=\"octicon octicon-issue-opened\" viewBox=\"0 0 14 16\" version=\"1.1\" width=\"14\" height=\"16\">\n <path fillRule=\"evenodd\" d=\"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z\"></path>\n </svg>\n);\n\nexport default Issue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport GithubColors from 'github-colors';\n\nimport './styles.css';\nimport moment from 'moment';\nimport Star from '../../icons/star';\nimport Fork from '../../icons/fork';\nimport Issue from \"../../icons/issue\";\n\nclass ListItem extends React.Component {\n render() {\n const languageColor = GithubColors.get(this.props.repository.language);\n\n return (\n <div className=\"col-12 list-item-container\">\n <div className=\"list-item-body\">\n <div className=\"repo-header\">\n <h3>\n <a href={ this.props.repository.html_url } rel=\"noopener noreferrer\" target=\"_blank\">\n <span className=\"text-normal\">{ this.props.repository.owner.login } / </span>\n { this.props.repository.name }\n </a>\n </h3>\n <p className=\"repo-meta text-muted small\">Built by &middot; <a href={ this.props.repository.owner.html_url } rel=\"noopener noreferrer\" target=\"_blank\">{ this.props.repository.owner.login }</a> &middot; { moment(this.props.repository.created_at).format('MMMM D YYYY') }</p>\n </div>\n <div className=\"repo-body\">\n <p>{ this.props.repository.description || 'No description given.' }</p>\n </div>\n <div className=\"repo-footer\">\n {\n this.props.repository.language && (\n <span className=\"d-inline-flex align-items-center mr-3\">\n <span className=\"repo-language-color\" style={{\n backgroundColor: languageColor ? languageColor.color : '#e8e8e8'\n }}></span>\n <span itemProp=\"programmingLanguage\">\n { this.props.repository.language }\n </span>\n </span>\n )\n }\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/stargazers` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Star />\n { this.props.repository.stargazers_count.toLocaleString() }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/network/members` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Fork />\n { this.props.repository.forks ? this.props.repository.forks.toLocaleString() : 0 }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/issues` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Issue />\n { this.props.repository.open_issues ? this.props.repository.open_issues.toLocaleString() : 0 }\n </a>\n </div>\n </div>\n\n <a href={ this.props.repository.owner.html_url }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"author-link d-none d-lg-block d-xl-block d-md-block\">\n <img className='author-img'\n src={ this.props.repository.owner.avatar_url }\n onError={ (e) => {\n e.target.src = '/img/logo.svg';\n } }\n alt={ this.props.repository.owner.login } />\n </a>\n </div>\n );\n }\n}\n\nListItem.propTypes = {\n repository: PropTypes.object.isRequired\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport GithubColors from 'github-colors';\n\nimport './styles.css';\nimport Star from '../../icons/star';\nimport Fork from '../../icons/fork';\nimport Issue from \"../../icons/issue\";\n\nclass GridItem extends React.Component {\n render() {\n const languageColor = GithubColors.get(this.props.repository.language);\n\n return (\n <div className=\"col-xl-4 col-lg-4 col-md-6 col-sm-12 col-12 grid-item-container\">\n <div className=\"grid-item-body\">\n <div className=\"author-header clearfix\">\n <a href={ this.props.repository.owner.html_url } rel=\"noopener noreferrer\" target=\"_blank\">\n <div className=\"author-img\">\n <img src={ this.props.repository.owner.avatar_url }\n onError={ (e) => {\n e.target.src = '/img/logo.svg';\n } }\n alt={ this.props.repository.owner.login }/>\n </div>\n <div className=\"author-details\">\n <h5>{ this.props.repository.owner.login }</h5>\n <p className=\"small text-muted\">View Profile</p>\n </div>\n </a>\n </div>\n <div className=\"repo-header\">\n <h5>\n <a href={ this.props.repository.html_url } rel=\"noopener noreferrer\" target=\"_blank\">\n <span className=\"repo-name\">{ this.props.repository.name }</span>\n </a>\n </h5>\n <p className=\"repo-meta text-muted small\">\n Built by &middot; <a target=\"_blank\" rel=\"noopener noreferrer\" href={ this.props.repository.owner.html_url }>{ this.props.repository.owner.login }</a> &middot; { moment(this.props.repository.created_at).format('MMMM D, YYYY') }\n </p>\n </div>\n <div className=\"repo-body\">\n <p>{ (this.props.repository.description && this.props.repository.description.slice(0, 140)) || 'No description given.' }</p>\n </div>\n <div className=\"repo-footer\">\n {\n this.props.repository.language && (\n <span className=\"d-inline-flex align-items-center mr-3\">\n <span className=\"repo-language-color\" style={{\n backgroundColor: languageColor ? languageColor.color : '#e8e8e8'\n }}></span>\n <span itemProp=\"programmingLanguage\">\n { this.props.repository.language }\n </span>\n </span>\n )\n }\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/stargazers` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Star/>\n { this.props.repository.stargazers_count ? this.props.repository.stargazers_count.toLocaleString() : 0 }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/network/members` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Fork/>\n { this.props.repository.forks ? this.props.repository.forks.toLocaleString() : 0 }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/issues` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Issue />\n { this.props.repository.open_issues ? this.props.repository.open_issues.toLocaleString() : 0 }\n </a>\n </div>\n </div>\n </div>\n );\n }\n}\n\nGridItem.propTypes = {\n repository: PropTypes.object.isRequired\n};\n\nexport default GridItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport GridItem from './grid-item';\nimport './styles.css';\nimport GroupHeading from '../group-heading';\n\nclass RepositoryGrid extends React.Component {\n renderGroup(repositoryGroup, counter) {\n let groupHeading = '';\n // for the first repository group, we have the\n // heading among the filters out of the grid\n if (counter !== 0) {\n groupHeading = (\n <div className=\"row row-group\">\n <GroupHeading\n start={ repositoryGroup.start }\n end={ repositoryGroup.end }\n dateJump={ this.props.dateJump }\n />\n </div>\n );\n }\n\n const groupKey = `${repositoryGroup.start}_${repositoryGroup.end}_${counter}`;\n const repositories = repositoryGroup.data.items;\n\n return (\n <div key={ groupKey } data-group-key={ groupKey }>\n { groupHeading }\n <div className=\"row grid-container\">\n { repositories.map(repository => <GridItem repository={ repository } key={ repository.id }/>) }\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <div className=\"repositories-grid\">\n {\n this.props.repositories.map((repositoryGroup, counter) => {\n return this.renderGroup(repositoryGroup, counter);\n })\n }\n </div>\n );\n }\n}\n\nRepositoryGrid.propTypes = {\n repositories: PropTypes.array.isRequired,\n dateJump: PropTypes.string.isRequired\n};\n\nexport default RepositoryGrid;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\nimport ListItem from './list-item';\nimport GroupHeading from '../group-heading';\nimport RepositoryGrid from '../repository-grid';\n\nclass RepositoryList extends React.Component {\n\n renderGroup(repositoryGroup, counter) {\n let groupHeading = '';\n // for the first repository group, we have the\n // heading among the filters out of the grid\n if (counter !== 0) {\n groupHeading = (\n <div className=\"row row-group\">\n <GroupHeading\n start={ repositoryGroup.start }\n end={ repositoryGroup.end }\n dateJump={ this.props.dateJump }\n />\n </div>\n );\n }\n\n const groupKey = `${repositoryGroup.start}_${repositoryGroup.end}_${counter}`;\n const repositories = repositoryGroup.data.items;\n\n return (\n <div key={ groupKey } data-group-key={ groupKey }>\n { groupHeading }\n <div className=\"row list-container\">\n { repositories.map(repository => <ListItem repository={ repository } key={ repository.id }/>) }\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <div className=\"repositories-list\">\n {\n this.props.repositories.map((repositoryGroup, counter) => {\n return this.renderGroup(repositoryGroup, counter);\n })\n }\n </div>\n );\n }\n}\n\nRepositoryGrid.propTypes = {\n repositories: PropTypes.array.isRequired,\n dateJump: PropTypes.string.isRequired\n};\n\nexport default RepositoryList;\n","import React from 'react';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport './styles.css';\nimport Alert from '../../components/alert';\nimport Loader from '../../components/loader';\nimport TopNav from '../../components/top-nav';\nimport Filters from '../../components/filters';\nimport GroupHeading from '../../components/group-heading';\nimport { fetchTrending } from '../../redux/github/actions';\nimport RepositoryList from '../../components/repository-list';\nimport RepositoryGrid from '../../components/repository-grid';\nimport { updateDateJump, updateLanguage, updateViewType } from '../../redux/preference/actions';\n\nclass FeedContainer extends React.Component {\n componentDidMount() {\n const existingRepositories = this.props.github.repositories || [];\n\n // If there are no loaded repositories before, fetch them\n if (existingRepositories.length === 0) {\n this.fetchNextRepositories();\n }\n }\n\n fetchNextRepositories() {\n const filters = this.getFilters();\n this.props.fetchTrending(filters);\n }\n\n componentDidUpdate(prevProps) {\n const currPreferences = this.props.preference;\n const prevPreferences = prevProps.preference;\n\n // If language or dateJump has been updated, reload\n // the repositories\n if (currPreferences.language !== prevPreferences.language ||\n currPreferences.dateJump !== prevPreferences.dateJump) {\n this.fetchNextRepositories();\n }\n }\n\n getFilters() {\n const filters = {};\n\n filters.dateRange = this.getNextDateRange();\n if (this.props.preference.language) {\n filters.language = this.props.preference.language;\n }\n\n if (this.props.preference.options.token) {\n filters.token = this.props.preference.options.token;\n }\n\n return filters;\n }\n\n getNextDateRange() {\n const repositories = this.props.github.repositories || [];\n const dateJump = this.props.preference.dateJump;\n\n const dateRange = {};\n const lastRecords = repositories[repositories.length - 1];\n\n if (lastRecords) {\n dateRange.start = moment(lastRecords.start).subtract(1, dateJump).startOf('day');\n dateRange.end = lastRecords.start;\n } else {\n dateRange.start = moment().subtract(1, dateJump).startOf('day');\n dateRange.end = moment().startOf('day');\n }\n\n return dateRange;\n }\n\n renderTokenWarning() {\n return !this.props.preference.options.token && (\n <Alert type='warning'>\n Make sure to\n <strong className='ml-1 mr-1'>\n <Link to='/options'>add a token</Link>\n </strong>\n to avoid hitting the rate limit\n </Alert>\n );\n }\n\n renderErrors() {\n if (!this.props.github.error) {\n return null;\n }\n\n let message = '';\n switch (this.props.github.error.toLowerCase()) {\n case 'bad credentials':\n message = (\n <span>\n Token is invalid, try <Link to='/options'>updating the token</Link> on the options page\n </span>\n );\n break;\n case 'network error':\n message = 'Error trying to connect to GitHub servers';\n break;\n default:\n message = this.props.github.error;\n break;\n }\n\n return (\n <Alert type='danger'>\n { message }\n </Alert>\n );\n }\n\n renderAlerts() {\n const tokenWarning = this.renderTokenWarning();\n const error = this.renderErrors();\n\n if (tokenWarning || error) {\n return (\n <div className=\"alert-group\">\n { tokenWarning }\n { error }\n </div>\n );\n }\n\n return null;\n }\n\n renderRepositoriesList() {\n if (this.props.preference.viewType === 'grid') {\n return <RepositoryGrid\n repositories={ this.props.github.repositories || [] }\n dateJump={ this.props.preference.dateJump }\n />;\n }\n\n return <RepositoryList\n repositories={ this.props.github.repositories || [] }\n dateJump={ this.props.preference.dateJump }\n />;\n }\n\n hasRepositories() {\n return this.props.github.repositories && this.props.github.repositories.length !== 0;\n }\n\n render() {\n return (\n <div className=\"page-wrap\">\n <TopNav/>\n\n { this.renderAlerts() }\n\n <div className=\"container mb-5 pb-4\">\n <div className=\"header-row clearfix\">\n {\n this.hasRepositories() && <GroupHeading\n start={ this.props.github.repositories[0].start }\n end={ this.props.github.repositories[0].end }\n dateJump={ this.props.preference.dateJump }\n />\n }\n <div className=\"group-filters\">\n {\n this.hasRepositories() && <Filters\n selectedLanguage={ this.props.preference.language }\n selectedViewType={ this.props.preference.viewType }\n updateLanguage={ this.props.updateLanguage }\n updateViewType={ this.props.updateViewType }\n updateDateJump={ this.props.updateDateJump }\n selectedDateJump={ this.props.preference.dateJump }\n />\n }\n </div>\n </div>\n <div className=\"body-row\">\n { this.renderRepositoriesList() }\n\n { this.props.github.processing && <Loader/> }\n\n {\n !this.props.github.processing &&\n this.hasRepositories() &&\n (\n <button className=\"btn btn-primary shadow load-next-date\"\n onClick={ () => this.fetchNextRepositories() }>\n <i className=\"fa fa-refresh mr-2\"></i>\n Load next { this.props.preference.dateJump }\n </button>\n )\n }\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst mapStateToProps = store => {\n return {\n preference: store.preference,\n github: store.github\n };\n};\n\nconst mapDispatchToProps = {\n updateLanguage,\n updateViewType,\n updateDateJump,\n fetchTrending\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FeedContainer);\n","import { UPDATE_DATE_TYPE, UPDATE_LANGUAGE, UPDATE_OPTIONS, UPDATE_VIEW_TYPE } from './types';\n\nexport const updateOptions = function (options) {\n return dispatch => {\n dispatch({\n type: UPDATE_OPTIONS,\n payload: options,\n });\n };\n};\n\nexport const updateViewType = function (viewType = 'grid') {\n return dispatch => {\n dispatch({\n type: UPDATE_VIEW_TYPE,\n payload: viewType\n });\n };\n};\n\nexport const updateLanguage = function (language) {\n return dispatch => {\n dispatch({\n type: UPDATE_LANGUAGE,\n payload: language\n });\n };\n};\n\nexport const updateDateJump = function (dateJump) {\n return dispatch => {\n dispatch({\n type: UPDATE_DATE_TYPE,\n payload: dateJump\n });\n };\n};\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\nimport Alert from '../alert';\n\nclass OptionsForm extends React.Component {\n\n state = {\n token: this.props.options.token,\n success: false,\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.options.token !== prevProps.options.token) {\n this.setState({\n success: true\n });\n }\n }\n\n saveOptions = () => {\n this.props.updateOptions({\n token: this.state.token\n });\n };\n\n onChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value,\n success: false\n });\n };\n\n onKeyDown = (e) => {\n if (e.keyCode === 13) {\n this.saveOptions();\n }\n };\n\n render() {\n return (\n <div className=\"options-form\">\n <div className=\"form-field\">\n <h2>Add the Token</h2>\n <p className=\"text-muted\">Generate a token and add it below to avoid hitting the rate limit.</p>\n <hr/>\n <ul>\n <li>\n Go to the\n <a href=\"https://github.com/settings/tokens/new?description=GitHunt&scopes=public_repo\" target=\"_blank\" rel=\"noopener noreferrer\"><i className=\"fa fa-external-link mr-1\"></i>Settings <i className=\"fa fa-angle-right\"></i> Personal Access Tokens <i className=\"fa fa-angle-right\"></i> New personal access token</a> of your github profile\n </li>\n <li>Click <span>Generate Token</span>.</li>\n <li>You will be presented with the generated token. Copy the token and add it below</li>\n </ul>\n <input type=\"text\"\n name='token'\n onChange={ this.onChange }\n onKeyDown={ this.onKeyDown }\n className=\"form-control\"\n value={ this.state.token }/>\n </div>\n <button className=\"btn btn-dark btn-lg btn-save shadow\" onClick={ this.saveOptions }>\n <i className=\"fa fa-cog mr-2\"></i>\n Save Token\n </button>\n <Link className='btn btn-primary shadow btn-block btn-lg' to='/'>\n <i className=\"fa fa-arrow-left mr-2\"></i> Go Home\n </Link>\n\n {\n this.state.success && (\n <div className=\"mt-4\">\n <Alert type='warning'>Successfully updated</Alert>\n </div>\n )\n }\n </div>\n );\n }\n}\n\nOptionsForm.propTypes = {\n updateOptions: PropTypes.func.isRequired,\n options: PropTypes.object.isRequired\n};\n\nexport default OptionsForm;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport './styles.css';\nimport OptionsForm from '../../components/options-form';\nimport { updateOptions } from '../../redux/preference/actions';\n\nclass OptionsContainer extends React.Component {\n render() {\n return (\n <div className=\"options-container\">\n <div className=\"container shadow\">\n <OptionsForm\n updateOptions={ this.props.updateOptions }\n options={ this.props.preference.options }\n />\n </div>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (store) => {\n return {\n preference: store.preference\n };\n};\n\nconst mapDispatchToProps = {\n updateOptions\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OptionsContainer);\n","import React from 'react';\nimport { MemoryRouter, Route, Switch } from 'react-router-dom';\n\nimport FeedContainer from '../containers/feed';\nimport OptionsContainer from '../containers/options';\n\nconst AppRoutes = () => {\n return (\n // @todo use browser router and generate prerendered options.html page for chrome extension\n <MemoryRouter>\n <Switch>\n <Route exact path='/' component={ FeedContainer }/>\n <Route exact path='/options' component={ OptionsContainer }/>\n <Route component={ FeedContainer }/>\n </Switch>\n </MemoryRouter>\n );\n};\n\nexport default AppRoutes;\n","import React, { Component } from 'react';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/lib/integration/react';\n\nimport Launcher from './components/launcher';\nimport { persist, store } from './store';\nimport AppRoutes from './router';\n\nclass App extends Component {\n render() {\n return (\n <Provider store={ store }>\n <PersistGate loading={ <Launcher/> } persistor={ persist }>\n <AppRoutes/>\n </PersistGate>\n </Provider>\n );\n }\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'font-awesome/css/font-awesome.css'\n\nimport './global.css';\nimport App from './app';\n\nReactDOM.render(<App/>, document.getElementById('root'));\n"],"sourceRoot":""} \ No newline at end of file