{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/icons/xsnippet.svg","webpack:///./src/assets/icons/ripple.svg","webpack:///./src/assets/photos/roman.jpg","webpack:///./src/assets/photos/ihor.jpg","webpack:///./src/assets/photos/olha.jpg","webpack:///./src/assets/photos/kateryna.jpg","webpack:///./node_modules/brace/mode lazy ^\\.\\/.*\\.js$ namespace object","webpack:///./src/components/Header.tsx","webpack:///./src/components/Sidebar.tsx","webpack:///./src/components/common/Notification.jsx","webpack:///./src/components/ListBox.jsx","webpack:///./src/misc/editor.ts","webpack:///./src/misc/modes.ts","webpack:///./src/entries/snippetValidation.ts","webpack:///./src/entries/keyboardKeys.ts","webpack:///./src/entries/aceEditorOptions.ts","webpack:///./src/hoc/withSearch.jsx","webpack:///./src/misc/reqExp.ts","webpack:///./src/hooks/useForm.js","webpack:///./src/store/index.ts","webpack:///./src/conf/index.ts","webpack:///./src/misc/url.ts","webpack:///./src/api/index.ts","webpack:///./src/components/NewSnippet.jsx","webpack:///./src/components/common/Spinner.tsx","webpack:///./src/components/common/SnippetTags.jsx","webpack:///./src/misc/download.ts","webpack:///./src/misc/snippet.ts","webpack:///./src/components/RecentSnippetItem.jsx","webpack:///./src/components/RecentSnippets.jsx","webpack:///./src/components/Snippet.jsx","webpack:///./src/components/common/Title.tsx","webpack:///./src/components/About.tsx","webpack:///./src/components/SignIn.jsx","webpack:///./src/components/App.jsx","webpack:///./src/index.tsx"],"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","1","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","map","webpackAsyncContext","req","then","code","ids","id","keys","Header","className","exact","to","Logo","alt","Sidebar","activeClassName","title","Notification","ListBox","props","useState","selected","setSelected","items","useEffect","select","def","find","item","onClick","role","dataset","data-value","onEditorLoad","editor","commands","removeCommand","getModesByName","brace","acequire","getCurrentMode","syntax","modesByName","text","getCurrentModeName","normalizedSyntaxes","syntaxes","caption","schema","Joi","content","string","required","messages","Map","reasons","details","errors","forEach","element","reason","path","has","delimeterKeys","defaultOptions","showFoldWidgets","useWorker","fontSize","maxLines","Infinity","showPrintMargin","existingSnippetOptions","readOnly","highlightActiveLine","highlightGutterLine","withSearch","BaseComponent","searchQuery","setSearchQuery","onSearch","useCallback","trim","notmalizedItems","regExp","RegExp","replace","filter","match","placeholder","onChange","useForm","cb","validate","values","setValues","setError","isSubmitting","setIsSubmitting","handleChange","setter","persist","handleSubmit","preventDefault","API_BASE_URI","RAW_SNIPPET_URI_FORMAT","getApiUri","endpoint","version","conf","fetchSnippet","fetch","response","json","fetchRecentSnippets","marker","pagination","qs","parseLinkHeader","headers","snippets","recentSnippetsState","atom","default","syntaxesQuery","selector","a","recentSnippetsQuery","selectorFamily","recentIds","snippet","assign","snippetById","ListBoxWithSearch","NewSnippet","history","snippetHeader","useRef","onSuccess","onError","method","Accept","body","JSON","stringify","postSnippet","tags","tag","useRecoilValueLoadable","onTagBlur","onTagAdded","onTagRemoved","index","handleSyntax","handleContent","onSubmit","ref","handleDelete","handleAddition","handleInputBlur","delimiters","width","height","focus","theme","onLoad","setOptions","editorProps","$blockScrolling","state","contents","Spinner","SpinnerImg","SnippetTags","downloadSnippet","ext","extensions","split","mime","encodeURIComponent","style","display","click","removeChild","download","getSnippetTitle","getSnippetMetadata","rawUrl","createdAt","date","created_at","reverse","join","RecentSnippetItem","href","RecentSnippets","setMarker","setSnippets","useSetRecoilState","getSetOfSnippets","direction","scroll","top","behavior","prev","next","Snippet","isShowEmbed","setIsShowEmbed","fetchedSnippet","params","embeddedRef","copyToClipboard","current","execCommand","toggleEmbed","onKeyPress","defaultValue","Title","additionalClass","About","IhorImage","RomanImage","OlhaImage","KaterynaImage","SignIn","App","isLoading","setIsLoading","process","status","component","ReactDOM","render","getElementById"],"mappings":"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A,GAED,oBAAqB,CACpB,IACA,GAED,iBAAkB,CACjB,IACA,GAED,aAAc,CACb,IACA,GAED,eAAgB,CACf,IACA,GAED,aAAc,CACb,IACA,GAED,cAAe,CACd,IACA,GAED,cAAe,CACd,IACA,GAED,WAAY,CACX,IACA,GAED,SAAU,CACT,IACA,GAED,YAAa,CACZ,IACA,GAED,YAAa,CACZ,IACA,GAED,cAAe,CACd,IACA,GAED,kBAAmB,CAClB,IACA,GAED,WAAY,CACX,IACA,GAED,WAAY,CACX,IACA,GAED,cAAe,CACd,IACA,GAED,WAAY,CACX,IACA,GAED,cAAe,CACd,IACA,GAED,eAAgB,CACf,IACA,GAED,iBAAkB,CACjB,IACA,GAED,YAAa,CACZ,IACA,GAED,iBAAkB,CACjB,IACA,GAED,cAAe,CACd,IACA,GAED,qBAAsB,CACrB,IACA,GAED,cAAe,CACd,IACA,GAED,YAAa,CACZ,IACA,GAED,kBAAmB,CAClB,IACA,GAED,eAAgB,CACf,IACA,GAED,YAAa,CACZ,IACA,GAED,aAAc,CACb,IACA,GAED,YAAa,CACZ,IACA,GAED,WAAY,CACX,IACA,GAED,YAAa,CACZ,IACA,GAED,YAAa,CACZ,IACA,GAED,kBAAmB,CAClB,IACA,GAED,YAAa,CACZ,IACA,GAED,WAAY,CACX,IACA,GAED,WAAY,CACX,IACA,GAED,aAAc,CACb,IACA,GAED,cAAe,CACd,IACA,GAED,aAAc,CACb,IACA,GAED,YAAa,CACZ,IACA,GAED,YAAa,CACZ,IACA,GAED,kBAAmB,CAClB,IACA,GAED,WAAY,CACX,IACA,GAED,gBAAiB,CAChB,IACA,GAED,gBAAiB,CAChB,IACA,GAED,cAAe,CACd,IACA,GAED,WAAY,CACX,IACA,GAED,aAAc,CACb,IACA,GAED,WAAY,CACX,IACA,GAED,YAAa,CACZ,IACA,GAED,kBAAmB,CAClB,IACA,GAED,aAAc,CACb,IACA,GAED,cAAe,CACd,IACA,GAED,YAAa,CACZ,IACA,GAED,aAAc,CACb,IACA,GAED,WAAY,CACX,IACA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","file":"app.e5df1164880988780062.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\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"syntaxes\"}[chunkId]||chunkId) + \".\" + {\"0\":\"acc42e6e3eb9060b53ec\"}[chunkId] + \".js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\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([406,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"52f2d980edbc63d5812cbb4dbf9daf67.svg\";","module.exports = __webpack_public_path__ + \"eeeeed179e89ae78f642e007b4a2ee56.svg\";","module.exports = __webpack_public_path__ + \"074ffec17ffcca73a241062727dc6a42.jpg\";","module.exports = __webpack_public_path__ + \"efe1b6c6d4d81af22b4be792598a7298.jpg\";","module.exports = __webpack_public_path__ + \"1a81b097a98214fa20f4fdbaa3e97a41.jpg\";","module.exports = __webpack_public_path__ + \"a34980ddd5a0d53b1dcdf0cdee1f9260.jpg\";","var map = {\n\t\"./actionscript.js\": [\n\t\t407,\n\t\t0\n\t],\n\t\"./ada.js\": [\n\t\t408,\n\t\t0\n\t],\n\t\"./apache_conf.js\": [\n\t\t409,\n\t\t0\n\t],\n\t\"./asciidoc.js\": [\n\t\t410,\n\t\t0\n\t],\n\t\"./assembly_x86.js\": [\n\t\t411,\n\t\t0\n\t],\n\t\"./batchfile.js\": [\n\t\t412,\n\t\t0\n\t],\n\t\"./c_cpp.js\": [\n\t\t413,\n\t\t0\n\t],\n\t\"./clojure.js\": [\n\t\t414,\n\t\t0\n\t],\n\t\"./cobol.js\": [\n\t\t415,\n\t\t0\n\t],\n\t\"./coffee.js\": [\n\t\t416,\n\t\t0\n\t],\n\t\"./csharp.js\": [\n\t\t417,\n\t\t0\n\t],\n\t\"./css.js\": [\n\t\t418,\n\t\t0\n\t],\n\t\"./d.js\": [\n\t\t419,\n\t\t0\n\t],\n\t\"./dart.js\": [\n\t\t420,\n\t\t0\n\t],\n\t\"./diff.js\": [\n\t\t421,\n\t\t0\n\t],\n\t\"./django.js\": [\n\t\t422,\n\t\t0\n\t],\n\t\"./dockerfile.js\": [\n\t\t423,\n\t\t0\n\t],\n\t\"./dot.js\": [\n\t\t424,\n\t\t0\n\t],\n\t\"./ejs.js\": [\n\t\t425,\n\t\t0\n\t],\n\t\"./elixir.js\": [\n\t\t426,\n\t\t0\n\t],\n\t\"./elm.js\": [\n\t\t427,\n\t\t0\n\t],\n\t\"./erlang.js\": [\n\t\t428,\n\t\t0\n\t],\n\t\"./fortran.js\": [\n\t\t429,\n\t\t0\n\t],\n\t\"./gitignore.js\": [\n\t\t430,\n\t\t0\n\t],\n\t\"./glsl.js\": [\n\t\t431,\n\t\t0\n\t],\n\t\"./gobstones.js\": [\n\t\t432,\n\t\t0\n\t],\n\t\"./golang.js\": [\n\t\t433,\n\t\t0\n\t],\n\t\"./graphqlschema.js\": [\n\t\t434,\n\t\t0\n\t],\n\t\"./groovy.js\": [\n\t\t435,\n\t\t0\n\t],\n\t\"./haml.js\": [\n\t\t436,\n\t\t0\n\t],\n\t\"./handlebars.js\": [\n\t\t437,\n\t\t0\n\t],\n\t\"./haskell.js\": [\n\t\t438,\n\t\t0\n\t],\n\t\"./haxe.js\": [\n\t\t439,\n\t\t0\n\t],\n\t\"./hjson.js\": [\n\t\t440,\n\t\t0\n\t],\n\t\"./html.js\": [\n\t\t441,\n\t\t0\n\t],\n\t\"./ini.js\": [\n\t\t442,\n\t\t0\n\t],\n\t\"./jade.js\": [\n\t\t443,\n\t\t0\n\t],\n\t\"./java.js\": [\n\t\t444,\n\t\t0\n\t],\n\t\"./javascript.js\": [\n\t\t445,\n\t\t0\n\t],\n\t\"./json.js\": [\n\t\t446,\n\t\t0\n\t],\n\t\"./jsp.js\": [\n\t\t447,\n\t\t0\n\t],\n\t\"./jsx.js\": [\n\t\t448,\n\t\t0\n\t],\n\t\"./julia.js\": [\n\t\t449,\n\t\t0\n\t],\n\t\"./kotlin.js\": [\n\t\t450,\n\t\t0\n\t],\n\t\"./latex.js\": [\n\t\t451,\n\t\t0\n\t],\n\t\"./less.js\": [\n\t\t452,\n\t\t0\n\t],\n\t\"./lisp.js\": [\n\t\t453,\n\t\t0\n\t],\n\t\"./livescript.js\": [\n\t\t454,\n\t\t0\n\t],\n\t\"./lua.js\": [\n\t\t455,\n\t\t0\n\t],\n\t\"./makefile.js\": [\n\t\t456,\n\t\t0\n\t],\n\t\"./markdown.js\": [\n\t\t457,\n\t\t0\n\t],\n\t\"./matlab.js\": [\n\t\t458,\n\t\t0\n\t],\n\t\"./mel.js\": [\n\t\t459,\n\t\t0\n\t],\n\t\"./mysql.js\": [\n\t\t460,\n\t\t0\n\t],\n\t\"./nix.js\": [\n\t\t461,\n\t\t0\n\t],\n\t\"./nsis.js\": [\n\t\t462,\n\t\t0\n\t],\n\t\"./objectivec.js\": [\n\t\t463,\n\t\t0\n\t],\n\t\"./ocaml.js\": [\n\t\t464,\n\t\t0\n\t],\n\t\"./pascal.js\": [\n\t\t465,\n\t\t0\n\t],\n\t\"./perl.js\": [\n\t\t466,\n\t\t0\n\t],\n\t\"./pgsql.js\": [\n\t\t467,\n\t\t0\n\t],\n\t\"./php.js\": [\n\t\t468,\n\t\t0\n\t],\n\t\"./powershell.js\": [\n\t\t469,\n\t\t0\n\t],\n\t\"./prolog.js\": [\n\t\t470,\n\t\t0\n\t],\n\t\"./protobuf.js\": [\n\t\t471,\n\t\t0\n\t],\n\t\"./python.js\": [\n\t\t472,\n\t\t0\n\t],\n\t\"./r.js\": [\n\t\t473,\n\t\t0\n\t],\n\t\"./rdoc.js\": [\n\t\t474,\n\t\t0\n\t],\n\t\"./rst.js\": [\n\t\t475,\n\t\t0\n\t],\n\t\"./ruby.js\": [\n\t\t476,\n\t\t0\n\t],\n\t\"./rust.js\": [\n\t\t477,\n\t\t0\n\t],\n\t\"./sass.js\": [\n\t\t478,\n\t\t0\n\t],\n\t\"./scad.js\": [\n\t\t479,\n\t\t0\n\t],\n\t\"./scala.js\": [\n\t\t480,\n\t\t0\n\t],\n\t\"./scheme.js\": [\n\t\t481,\n\t\t0\n\t],\n\t\"./scss.js\": [\n\t\t482,\n\t\t0\n\t],\n\t\"./sh.js\": [\n\t\t483,\n\t\t0\n\t],\n\t\"./sjs.js\": [\n\t\t484,\n\t\t0\n\t],\n\t\"./smarty.js\": [\n\t\t485,\n\t\t0\n\t],\n\t\"./sql.js\": [\n\t\t486,\n\t\t0\n\t],\n\t\"./stylus.js\": [\n\t\t487,\n\t\t0\n\t],\n\t\"./svg.js\": [\n\t\t488,\n\t\t0\n\t],\n\t\"./swift.js\": [\n\t\t489,\n\t\t0\n\t],\n\t\"./tcl.js\": [\n\t\t490,\n\t\t0\n\t],\n\t\"./tex.js\": [\n\t\t491,\n\t\t0\n\t],\n\t\"./text.js\": [\n\t\t492,\n\t\t0\n\t],\n\t\"./textile.js\": [\n\t\t493,\n\t\t0\n\t],\n\t\"./toml.js\": [\n\t\t494,\n\t\t0\n\t],\n\t\"./tsx.js\": [\n\t\t495,\n\t\t0\n\t],\n\t\"./twig.js\": [\n\t\t496,\n\t\t0\n\t],\n\t\"./typescript.js\": [\n\t\t497,\n\t\t0\n\t],\n\t\"./vala.js\": [\n\t\t498,\n\t\t0\n\t],\n\t\"./vbscript.js\": [\n\t\t499,\n\t\t0\n\t],\n\t\"./verilog.js\": [\n\t\t500,\n\t\t0\n\t],\n\t\"./vhdl.js\": [\n\t\t501,\n\t\t0\n\t],\n\t\"./xml.js\": [\n\t\t502,\n\t\t0\n\t],\n\t\"./yaml.js\": [\n\t\t503,\n\t\t0\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 405;\nmodule.exports = webpackAsyncContext;","import React, { FC } from 'react'\nimport { NavLink } from 'react-router-dom'\n\nimport Logo from '../assets/icons/xsnippet.svg'\n\nimport '../styles/Header.styl'\n\nconst Header: FC = () => (\n
\n
\n \n \"XSnippet\"\n \n
\n
\n
\n XSNIPPET\n
\n
\n \n Sign in\n \n \n
\n
\n
\n)\n\nexport default Header\n","import React, { FC } from 'react'\nimport { NavLink } from 'react-router-dom'\n\nimport '../styles/Sidebar.styl'\n\nconst Sidebar: FC = () => (\n \n)\n\nexport default Sidebar\n","import React from 'react'\n\nimport '../../styles/common/Notification.styl'\n\nconst Notification = ({ message }) => (\n
{message}
\n)\n\nexport default Notification\n","import React, { useState, useEffect } from 'react'\nimport { Scrollbars } from 'react-custom-scrollbars'\n\nconst ListBox = (props) => {\n const [selected, setSelected] = useState(null)\n const { items, className } = props\n\n useEffect(() => {\n // Consumers can either pass selected item via props, or let the component\n // to handle it on its own. The former might be useful when you want to\n // extend behaviour (e.g. some ListBoxWithSearchbar), while the latter -\n // when you want a standalone ListBox component.\n let select = props.selected || selected\n const def = props.items[0]\n\n // If selected item is not a part of new items, aggressively fallback to\n // first item from the list. We're doing it to be protected from cases\n // when nothing is selected.\n if ((!select || !props.items.find(item => item.value === select)) && def) {\n select = def.value\n props.onClick(select)\n\n setSelected(select)\n }\n }, [props])\n\n const onClick = e => {\n const { value } = e.target.dataset\n\n setSelected(value)\n props.onClick(value)\n }\n\n const renderItems = () => {\n if (!items.length) {\n return
  • No results found
  • \n }\n\n return items.map(item => (\n \n {item.name}\n \n ))\n }\n\n return (\n // TODO: Get rid of domain specific CSS classes in favor of general one;\n // this component is a good candidate to be extracted into separate\n // library.\n \n
      \n {renderItems()}\n
    \n
    \n )\n}\n\nexport default ListBox\n","export const onEditorLoad = (editor: any): void => {\n // we want to disable built-in find in favor of browser's one\n editor.commands.removeCommand('find')\n}\n","import brace from 'brace'\nimport 'brace/ext/modelist'\n\ntype Mode = {\n caption: string;\n extRe: RegExp;\n extensions: string;\n mode: string;\n name: string;\n}\n\ntype NormalizedSyntax = {\n name: string;\n value: string;\n}\n\nexport const getModesByName = (): any => brace.acequire('ace/ext/modelist')\n\nexport const getCurrentMode = (syntax: string): Mode => {\n const { modesByName } = getModesByName()\n return modesByName[syntax] || modesByName.text\n}\n\nexport const getCurrentModeName = (syntax: string): string => {\n const mode = getCurrentMode(syntax)\n return mode.name\n}\n\nexport const getCurrentModeCaption = (syntax: string): string => {\n const mode = getCurrentMode(syntax)\n return mode.caption\n}\n\nexport const normalizedSyntaxes = (syntaxes: string[]): NormalizedSyntax[] => {\n const { modesByName } = getModesByName()\n\n return syntaxes.map(item => ({\n name: modesByName[item].caption,\n value: item,\n }))\n}\n","import Joi from 'joi'\n\nconst schema = Joi.object().keys({\n content: Joi.string().required(),\n})\n\nexport const validateSnippet = (value: string): string | null => {\n const result: Joi.ValidationResult = schema.validate(value)\n\n if (result.error) {\n return reasons(result.error.details)\n }\n\n return null\n}\n\nconst messages = new Map([\n ['content.string.empty', 'Content is required :('],\n ['default', 'Something went wrong, please check all fields'],\n])\n\nconst reasons = (details: Joi.ValidationErrorItem[]): string => {\n const errors: string[] = []\n\n details.forEach(element => {\n const reason = `${element.path[0]}.${element.type}`\n\n errors.push(messages.has(reason)\n ? messages.get(reason)\n : messages.get('default'),\n )\n })\n\n return errors[0]\n}\n","const KEYS = {\n TAB: 9,\n SPACE: 32,\n ENTER: 13,\n COMMA: 188,\n}\n\nexport const delimeterKeys = [KEYS.TAB, KEYS.SPACE, KEYS.ENTER, KEYS.COMMA]\n","interface AceDefaultOptions {\n showFoldWidgets: boolean;\n useWorker: boolean;\n fontSize: string;\n maxLines: typeof Infinity,\n showPrintMargin: boolean;\n}\n\ninterface AceOptionsForSnippet extends AceDefaultOptions {\n readOnly: boolean;\n highlightActiveLine: boolean;\n highlightGutterLine: boolean;\n}\n\nexport const defaultOptions: AceDefaultOptions = {\n showFoldWidgets: false,\n useWorker: false,\n fontSize: '13px',\n maxLines: Infinity,\n showPrintMargin: false,\n}\n\nexport const existingSnippetOptions: AceOptionsForSnippet = {\n ...defaultOptions,\n readOnly: true,\n highlightActiveLine: false,\n highlightGutterLine: false,\n}\n","import React, { Fragment, useState, useCallback } from 'react'\n\nimport { regExpEscape } from '../misc/reqExp'\n\nconst withSearch = BaseComponent => (props) => {\n const [searchQuery, setSearchQuery] = useState(null)\n const { items, onClick, className } = props\n\n const onSearch = useCallback(e => {\n setSearchQuery(e.target.value.trim())\n })\n\n // Normalize items arrays so each item is always an object.\n let notmalizedItems = items.map((item) => {\n if (item !== Object(item)) {\n return { name: item, value: item }\n }\n\n return item\n })\n\n // Filter out only those items that match search query. If no query is\n // set, do nothing and use the entire set.\n if (searchQuery) {\n const regExp = new RegExp(regExpEscape(searchQuery), 'gi')\n notmalizedItems = notmalizedItems.filter(item => item.name.match(regExp))\n }\n\n return (\n \n
    \n \n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default withSearch\n","export const regExpEscape = (string: string): string => string.replace(/[-[\\]{}()*+?.,\\\\^$|]/g, '\\\\$&')\n","import { useState, useEffect } from 'react'\n\nconst useForm = (cb, validate) => {\n const [values, setValues] = useState({})\n const [error, setError] = useState('')\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n useEffect(() => {\n if (!error && isSubmitting) {\n cb()\n }\n\n return () => {\n setIsSubmitting(false)\n }\n }, [error, isSubmitting])\n\n const handleSubmit = e => {\n e.preventDefault()\n\n setError(validate(values))\n setIsSubmitting(true)\n }\n\n const handleChange = (e, setter) => {\n if (e.target) {\n e.persist()\n setValues(values => ({ ...values, [e.target.name]: e.target.value }))\n } else {\n setValues(values => ({ ...values, ...setter(e) }))\n }\n }\n\n return {\n handleChange,\n handleSubmit,\n values,\n error,\n }\n}\n\nexport default useForm\n","import { atom, selector, selectorFamily } from 'recoil'\n\nimport { fetchSnippet, fetchSyntaxes, fetchRecentSnippets } from '../api'\nimport { normalizedSyntaxes } from '../misc/modes'\n\nexport type Snippet = {\n id: string;\n title: string;\n syntax: string;\n content: string;\n tags: string[];\n created_at: string;\n updated_at: string;\n}\n\nexport const recentSnippetsState = atom({\n key: 'recentSnippetsState',\n default: null,\n})\n\nexport const syntaxesQuery = selector({\n key: 'syntaxesQuery',\n get: async () => {\n const syntaxes = await fetchSyntaxes()\n return normalizedSyntaxes(syntaxes)\n },\n})\n\nexport const recentSnippetsQuery = selectorFamily({\n key: 'recentSnippetsQuery',\n get: (marker: string) => async () => {\n const { snippets, pagination } = await fetchRecentSnippets(marker)\n\n return {\n pagination,\n recentIds: snippets.map((snippet: Snippet) => snippet.id),\n snippets: Object.assign({}, ...snippets.map((snippet: Snippet) => ({ [snippet.id]: snippet }))),\n }\n },\n})\n\nexport const snippetById = selectorFamily({\n key: 'snippetById',\n get: (id: string) => async ({ get }) => {\n const snippets = get(recentSnippetsState)\n\n if (snippets) {\n return snippets[id]\n }\n\n return await fetchSnippet(id)\n },\n})\n","export default {\n // REST APIs have a base URI to which the endpoint paths are appended. This\n // one sets a base URI for the XSnippet API we need to communicate with.\n API_BASE_URI: process.env.API_BASE_URI || '//api.xsnippet.org',\n\n // When expanded with a snippet ID, it points to a raw snippet page (i.e. a\n // plain/text page with snippet content and without markup).\n RAW_SNIPPET_URI_FORMAT: process.env.RAW_SNIPPET_URI_FORMAT || '//xsnippet.org/%s/raw',\n}\n","import conf from '../conf'\n\nexport const getRawUrl = (id: string): string => conf.RAW_SNIPPET_URI_FORMAT.replace('%s', id)\n\nexport const getApiUri = (endpoint: string, version = 'v1'): string => (\n `${conf.API_BASE_URI}/${version}/${endpoint}`\n)\n","import parseLinkHeader from 'parse-link-header'\n\nimport { getApiUri } from '../misc/url'\nimport { Snippet } from '../store'\n\nexport const fetchSnippet = (id: string): Promise => {\n return fetch(getApiUri(`snippets/${id}`))\n .then(response => response.json())\n}\n\nexport const fetchSyntaxes = (): Promise => {\n return fetch(getApiUri('syntaxes'))\n .then(response => response.json())\n}\n\nexport const fetchRecentSnippets = (marker: string): Promise<{ snippets: Snippet[], pagination: parseLinkHeader.Links | null}> => {\n let qs = ''\n if (marker) { qs = `&marker=${marker}` }\n let pagination: parseLinkHeader.Links\n\n return fetch(getApiUri(`snippets?limit=20${qs}`))\n .then(response => {\n pagination = parseLinkHeader(response.headers.get('Link'))\n return response.json()\n })\n .then(snippets => ({ snippets, pagination }))\n}\n\nexport const postSnippet = (snippet: Partial, onSuccess: (snippet: Snippet) => void, onError = () => {}): Promise => {\n return fetch(getApiUri('snippets'), {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(snippet),\n })\n .then(response => response.json())\n .then(onSuccess)\n .catch(onError)\n}\n","import React, { useRef } from 'react'\nimport AceEditor from 'react-ace'\nimport { WithContext as Tags } from 'react-tag-input'\nimport { useRecoilValueLoadable } from 'recoil'\n\nimport 'brace/theme/textmate'\n\nimport Notification from './common/Notification'\nimport ListBox from './ListBox'\n\nimport { onEditorLoad } from '../misc/editor'\nimport { getCurrentModeName } from '../misc/modes'\n\nimport { validateSnippet } from '../entries/snippetValidation'\nimport { delimeterKeys } from '../entries/keyboardKeys'\nimport { defaultOptions } from '../entries/aceEditorOptions'\n\nimport withSearch from '../hoc/withSearch'\nimport useForm from '../hooks/useForm'\nimport { syntaxesQuery } from '../store'\nimport { postSnippet } from '../api'\n\nimport '../styles/NewSnippet.styl'\n\nconst ListBoxWithSearch = withSearch(ListBox)\n\nconst NewSnippet = ({ history }) => {\n const snippetHeader = useRef()\n const {\n values: { title = '', syntax = '', content = '', tags = [] },\n error,\n handleChange,\n handleSubmit,\n } = useForm(post, validate)\n const syntaxes = useRecoilValueLoadable(syntaxesQuery)\n\n function validate() {\n return validateSnippet({ content: content.trim() })\n }\n\n function post() {\n postSnippet({ content, title, tags: tags.map(tag => tag.text), syntax }, json => {\n history.push(`/${json.id}`)\n })\n }\n\n const onTagBlur = tag => onTagAdded({ id: tag, text: tag })\n\n const onTagAdded = tag => {\n if (tag && tag.text) {\n return { tags: [...tags, tag] }\n }\n }\n\n const onTagRemoved = i => {\n return { tags: tags.filter((tag, index) => index !== i) }\n }\n\n const handleSyntax = syntax => ({ syntax })\n const handleContent = content => ({ content })\n\n const renderValidationError = () => (error && )\n\n return (\n \n
    \n
    \n \n handleChange(value, onTagRemoved)}\n handleAddition={(value) => handleChange(value, onTagAdded)}\n handleInputBlur={(value) => handleChange(value, onTagBlur)}\n delimiters={delimeterKeys}\n />\n
    \n
    \n handleChange(value, handleContent)}\n />\n
    \n {renderValidationError()}\n \n
    \n
    \n
    \n
    \n handleChange(syntax, handleSyntax)}\n />\n
    \n \n )\n}\n\nexport default NewSnippet\n","import React, { FC } from 'react'\nimport SpinnerImg from '../../assets/icons/ripple.svg'\n\nimport '../../styles/common/Spinner.styl'\n\nconst Spinner: FC = () => (\n
    \n \"Loading...\"\n
    \n)\n\nexport default Spinner\n","import React from 'react'\n\nconst SnippetTags = ({ className, tags, id }) => {\n if (!tags.length) {\n return false\n }\n\n return (\n
    \n {tags.map(item => {item})}\n
    \n )\n}\n\nexport default SnippetTags\n","import { getCurrentMode } from './modes'\nimport { Snippet } from '../store'\n\nconst download = (text: string, name: string, mime: string): void => {\n // It seems it's the only way to initiate file downloading from JavaScript\n // as of Jan 7, 2018. If you read this and know a better way, please submit\n // a pull request! ;)\n\n const element = document.createElement('a')\n element.setAttribute('href', `data:${mime};charset=utf-8,${encodeURIComponent(text)}`)\n element.setAttribute('download', name)\n element.style.display = 'none'\n document.body.appendChild(element)\n\n element.click()\n\n document.body.removeChild(element)\n}\n\nexport const downloadSnippet = (snippet: Snippet): void => {\n // Despite using AceEditor's modes as syntaxes, we can imagine other setup\n // when more or even other syntaxes can be used on API side. Hence, we better\n // be prepared and fallback to \"Text\" mode if unknown syntaxes it is.\n const mode = getCurrentMode(snippet.syntax)\n const ext = mode.extensions.split('|')[0] || 'txt'\n const content = snippet.content\n const name = `${snippet.id}.${ext}`\n\n // Unfortunately, AceEditor doesn't maintain MIME type map so we don't know\n // for sure which mode corresponds to which MIME type. Hence, let's use\n // text/plain until we come up with better idea.\n download(content, name, 'text/plain')\n}\n","import { Snippet } from '../store'\nimport { getCurrentModeCaption } from './modes'\nimport { getRawUrl } from './url'\n\ntype SnippetMetadata = {\n syntax: string;\n title: string;\n rawUrl: string;\n createdAt: string;\n}\n\nexport const getSnippetTitle = (snippet: Snippet): string => snippet.title || `#${snippet.id}, Untitled`\n\nexport const formatDate = (date: string): string => {\n const ISOdate = date.split('T')[0]\n\n return ISOdate.split('-').reverse().join('.')\n}\n\nexport const scrollTop = (): void => {\n window.scroll({ top: 0, behavior: 'smooth' })\n}\n\nexport const getSnippetMetadata = (snippet: Snippet): SnippetMetadata => ({\n syntax: getCurrentModeCaption(snippet.syntax),\n title: getSnippetTitle(snippet),\n rawUrl: getRawUrl(snippet.id),\n createdAt: formatDate(snippet.created_at),\n})\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport SnippetTags from './common/SnippetTags'\n\nimport { downloadSnippet } from '../misc/download'\nimport { getSnippetMetadata } from '../misc/snippet'\n\nconst RecentSnippetItem = ({ snippet }) => {\n const { syntax, title, rawUrl, createdAt } = getSnippetMetadata(snippet)\n\n const download = () => downloadSnippet(snippet)\n\n return (\n
  • \n
    \n
    \n {title}\n \n
    \n {createdAt}, by Guest\n
    \n
    \n {syntax}\n
    \n Raw\n \n Show\n
    \n
    \n
  • \n )\n}\n\nexport default RecentSnippetItem\n","import React, { Fragment, useState } from 'react'\nimport { useSetRecoilState, useRecoilValueLoadable } from 'recoil'\n\nimport { recentSnippetsQuery, recentSnippetsState } from '../store'\nimport Spinner from './common/Spinner'\nimport RecentSnippetItem from './RecentSnippetItem'\nimport { scrollTop } from '../misc/snippet'\n\nimport '../styles/RecentSnippets.styl'\n\nconst RecentSnippets = () => {\n const [marker, setMarker] = useState(null)\n const setSnippets = useSetRecoilState(recentSnippetsState)\n const values = useRecoilValueLoadable(recentSnippetsQuery(marker))\n\n if (values.state !== 'hasValue') {\n return \n }\n\n const { pagination, recentIds, snippets } = values.contents\n\n setSnippets(snippets)\n\n const getSetOfSnippets = (direction) => {\n setMarker(pagination[direction].marker)\n scrollTop()\n }\n\n return (\n \n
      \n {recentIds.map(id => )}\n
    \n
    \n getSetOfSnippets('prev')}\n role=\"presentation\"\n >\n ‹ Newer\n \n getSetOfSnippets('next')}\n role=\"presentation\"\n >\n Older ›\n \n
    \n
    \n )\n}\n\nexport default RecentSnippets\n","import React, { useState, useRef } from 'react'\nimport { useRecoilValueLoadable } from 'recoil'\nimport AceEditor from 'react-ace'\n\nimport 'brace/theme/textmate'\n\nimport SnippetTags from './common/SnippetTags'\nimport Spinner from './common/Spinner'\n\nimport { downloadSnippet } from '../misc/download'\nimport { onEditorLoad } from '../misc/editor'\nimport { getSnippetMetadata } from '../misc/snippet'\nimport { snippetById } from '../store'\n\nimport { existingSnippetOptions } from '../entries/aceEditorOptions'\n\nimport '../styles/Snippet.styl'\n\nconst Snippet = ({ match }) => {\n const [isShowEmbed, setIsShowEmbed] = useState(false)\n const fetchedSnippet = useRecoilValueLoadable(snippetById(match.params.id))\n const embeddedRef = useRef()\n\n if (fetchedSnippet.state !== 'hasValue') return \n\n const snippet = fetchedSnippet.contents\n\n const copyToClipboard = () => {\n embeddedRef.current.select()\n document.execCommand('copy')\n }\n\n const download = () => {\n downloadSnippet(snippet)\n }\n\n const toggleEmbed = () => {\n setIsShowEmbed(!isShowEmbed)\n }\n\n const { syntax, title, rawUrl, createdAt } = getSnippetMetadata(snippet)\n\n const renderEmbed = () => (\n
    \n
    \n \n

    \n In order to embed this content into your website or blog,\n simply copy and paste code provided below:\n

    \n `}\n />\n \n
    \n
    \n )\n\n return (\n
    \n
    \n
    \n {title}\n \n {createdAt}, by Guest\n
    \n
    \n {syntax}\n
    \n Raw\n \n \n Embed\n \n
    \n
    \n
    \n {renderEmbed()}\n
    \n \n
    \n
    \n )\n}\n\nexport default Snippet\n","import React, { FC } from 'react'\n\nimport '../../styles/common/Title.styl'\n\nconst Title: FC<{title:string, additionalClass?:string}> = ({ title, additionalClass = '' }) => (\n
    {title}
    \n)\n\nexport default Title\n","import React, { Fragment, FC } from 'react'\n\nimport Title from './common/Title'\n\nimport RomanImage from '../assets/photos/roman.jpg'\nimport IhorImage from '../assets/photos/ihor.jpg'\nimport OlhaImage from '../assets/photos/olha.jpg'\nimport KaterynaImage from '../assets/photos/kateryna.jpg'\n\nimport '../styles/AboutUs.styl'\n\nconst About: FC = () => (\n \n
    \n \n <p className=\"about-paragraph padded\">\n XSnippet is an open source web-service for sharing code snippets on\n the Internet. Years ago it was started as educational project, and\n nothing has changed since then. The service has been rewritten several\n times from scratch and now it consists of:\n </p>\n <ul className=\"about-repo-list\">\n <li className=\"about-repo-item\">\n <span className=\"about-repo\">xsnippet-api</span>\n <p className=\"about-paragraph\">\n It implements a RESTful API to manage snippets and flies on top of\n asyncio/aiohttp and MongoDB;\n </p>\n </li>\n <li className=\"about-repo-item\">\n <span className=\"about-repo\">xsnippet-web</span>\n <p className=\"about-paragraph\">\n It provides a web-based user interface (SPA) and flies on top of\n React stack;\n </p>\n </li>\n <li className=\"about-repo-item\">\n <span className=\"about-repo\">xsnippet-web-backend</span>\n <p className=\"about-paragraph\">\n It is a tiny app which implements what doesn’t fall under API\n description yet required by xsnippet-web.\n </p>\n </li>\n </ul>\n <p className=\"about-paragraph\">\n These components, and other goodies, can be found in our GitHub:\n </p>\n <a className=\"about-github\" href=\"http://github.com/xsnippet/\">\n http://github.com/xsnippet/\n </a>\n </div>\n <div className=\"about\">\n <Title title=\"Our Team\" />\n <p className=\"about-paragraph padded\">\n Modern XSnippet incarnation has been designed and developed by these fine people:\n </p>\n <ul className=\"about-team-list\">\n <li className=\"about-team-item\">\n <img src={IhorImage} alt=\"Ihor Kalnytskyi\" />\n <div>\n <span className=\"about-team-member\">Ihor Kalnytskyi</span>\n <p className=\"about-paragraph small\">Back-end developer</p>\n </div>\n </li>\n <li className=\"about-team-item\">\n <img src={RomanImage} alt=\"Roman Podoliaka\" />\n <div>\n <span className=\"about-team-member\">Roman Podoliaka</span>\n <p className=\"about-paragraph small\">Back-end developer</p>\n </div>\n </li>\n <li className=\"about-team-item\">\n <img src={OlhaImage} alt=\"Olha Kurkaiedova\" />\n <div>\n <span className=\"about-team-member\">Olha Kurkaiedova</span>\n <p className=\"about-paragraph small\">Front-end developer</p>\n </div>\n </li>\n <li className=\"about-team-item\">\n <img src={KaterynaImage} alt=\"Kateryna Zharikova\" />\n <div>\n <span className=\"about-team-member\">Kateryna Zharikova</span>\n <p className=\"about-paragraph small\">UI Designer</p>\n </div>\n </li>\n </ul>\n </div>\n </Fragment>\n)\n\nexport default About\n","import React from 'react'\n\nconst SignIn = () => (\n <div>\n SignIn page\n </div>\n)\n\nexport default SignIn\n","import React, { Fragment, useEffect, useState } from 'react'\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom'\n\nimport Header from './Header'\nimport Sidebar from './Sidebar'\nimport NewSnippet from './NewSnippet'\nimport RecentSnippets from './RecentSnippets'\nimport Snippet from './Snippet'\nimport About from './About'\nimport SignIn from './SignIn'\n\nimport Spinner from './common/Spinner'\nimport conf from '../conf'\n\nimport '../styles/App.styl'\n\nconst App = () => {\n const [isLoading, setIsLoading] = useState(true)\n\n useEffect(() => {\n fetch(process.env.RUNTIME_CONF_URI)\n .then((response) => {\n if (response.status === 404) {\n return {}\n }\n return response.json()\n })\n .then(json => Object.assign(conf, json))\n .then(() => setIsLoading(false))\n\n // AceEditor's modes (aka syntaxes) are pretty heavy, and since they are\n // not essential, we better download them asynchronously when the app is\n // loaded and ready to be used.\n for (const syntax of process.env.SYNTAXES) {\n import(`brace/mode/${syntax}.js`)\n }\n }, [])\n\n if (isLoading) {\n return <Spinner />\n }\n\n return (\n <Router>\n <Fragment>\n <Header />\n <div className=\"content\">\n <Sidebar />\n <main className=\"main\">\n <Switch>\n <Route exact path=\"/\" component={NewSnippet} />\n <Route exact path=\"/about\" component={About} />\n <Route exact path=\"/recent\" component={RecentSnippets} />\n <Route exact path=\"/sign-in\" component={SignIn} />\n // Switch renders the first matched route, so we need to keep this\n // one last as the regexp below matches the paths of other pages\n <Route exact path=\"/:id([a-zA-Z0-9]+)\" component={Snippet} />\n </Switch>\n </main>\n </div>\n </Fragment>\n </Router>\n )\n}\n\nexport default App\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { RecoilRoot } from 'recoil'\nimport App from './components/App'\n\nReactDOM.render(\n <RecoilRoot>\n <App />\n </RecoilRoot>,\n document.getElementById('root') as HTMLElement,\n)\n"],"sourceRoot":""}