{"version":3,"sources":["icon/github.svg","js/makeid.js","js/event.js","js/localdb.js","js/markdown.js","js/octokit.js","js/files.js","js/api.js","components/Line/index.js","components/AppBar/index.js","components/Title/index.js","tabs/Addons/index.js","components/Loading/index.js","tabs/Archives/index.js","tabs/Push/index.js","tabs/Search/index.js","tabs/Settings/index.js","tabs/Sheets/index.js","components/Toolbar/index.js","addons/write-good/index.js","addons/conversion/index.js","addons/calculator/index.js","addons/links/index.js","components/Handy/index.js","components/Cover/index.js","components/Login/index.js","App.js","serviceWorker.js","index.js","assets/memo_logo_left_white.svg","assets/memo_logo_left.svg"],"names":["module","exports","__webpack_require__","p","makeid","length","text","possible","i","charAt","Math","floor","random","EventEmitter","require","defaultMaxListeners","Event","window","JsStoreWorker","connection","JsStore","_db","dataBase","this","getDataBaseSchema","initDb","ex","console","error","table","value","insert","into","values","where","order","limit","query","from","select","results","remove","rowsDeleted","set","update","in","rowsUpdated","count","rowsCounted","sheetsDeleted","linesDeleted","name","tables","columns","id","primaryKey","autoIncrement","title","notNull","dataType","active","created_at","accessed_at","sheet_id","line_key","date","pos","_md","sheetId","beautified","API","getSheet","sheet","sheetMarkdown","concat","currentDate","lines","forEach","line","file","fileMetadataYaml","content","split","fileContent","slice","join","fileMetadata","Number","LocalDB","localSheet","removeAddAction","delete","fileParagraphs","lineDate","linePos","j","includes","lineKey","newLineKey","filesArray","log","fileIdArray","filename","push","localSheets","sheetsToRemove","filter","files","Object","sort","a","b","saveMarkdownSheet","setData","removeCloudDeletedFiles","addToStaging","_gh","token","client","Octokit","auth","user","gist_id","setup","gists","getRevision","sha","then","_this","round","Date","getTime","getTheme","create","res","setGistId","data","sync","event","emit","get","gist","theme","currency","addons","Markdown","updateMarkdownSheets","_this2","getData","fetch","err","_this3","staging","stagedArray","staged","replace","memoGistId","_ref","asyncToGenerator","regenerator_default","mark","_callee2","currentClientTime","metadata","metadataHead","metadataFoot","metadataContent","stagedSheetId","markdownContent","wrap","_context2","prev","next","getSheetMarkdown","sent","abrupt","stop","_x2","apply","arguments","preference","updateTo","_this4","_ref2","_callee3","_context3","_x3","_files","dropTimer","root","document","getElementById","cover","ondragover","clearTimeout","setTimeout","className","ondragleave","ondragend","ondrop","e","preventDefault","dataTransfer","reader","FileReader","onload","endsWith","importFile","lastModified","target","result","added","alert","readAsText","fileName","unixTime","substr","by","type","newSheet","today","String","getDate","padStart","getMonth","getFullYear","Blob","markdownText","blob","saveAs","URL","DEVELOPMENT","VERSION","_api","classCallCheck","Analytics","initialize","development","version","online","navigator","onLine","analytics","logged","defaultAddons","loginInterval","initDB","method","credentials","json","session_id","Github","init","status","checkUpdate","Files","listenFileDrop","catch","offlineLogin","sheetCount","offlineFirstTime","offlineSetup","_this5","_this6","pageview","formattedTime","time","newAddedId","lastSheet","idSheet","sheets","first_line","line_count","term","like","action","hint",">=","-","setFound","whereCheck","+","toStatus","truncate","pref","to","isOnline","pushPreference","currentStaging","gistId","url","formData","FormData","append","body","key","localStorage","setItem","getItem","App","state","focused","pHeight","props","children","setState","refs","_lineText","scrollHeight","addEventListener","handleChange","onBlur","index","returnValue","focusOnRender","lineText","cursorPosition","focus","selectionStart","selectionEnd","newProps","tArea","renderedHeight","getHeight","pasted","clipboardData","add","topText","downText","restArray","onPaste","keyCode","onSplit","newItemTest","pop","rightOfCursor","textString","tailText","ordinarySplit","extraOrdinarySplit","nextLineText","onConcat","currentTextLength","textLength","onCursor","scrollTop","getBoundingClientRect","top","lineId","position","react_default","createElement","Fragment","ref","style","height","onFocus","handleFocus","handleBlur","onKeyDown","handleKeyDown","onChange","handlePaste","Component","maximized","win","remote","getCurrentWindow","onClick","minimize","maximize","unmaximize","close","process","spacer","platform","src","renderWindowsButtons","archived","archiveProgress","_title","shouldFocused","updateTitle","onTitleDown","exportFile","currentStatus","archiveUpdate","deleteSheet","placeholder","exportAction","viewBox","width","d","archiveAction","textAlign","deleteAction","slug","updatePreference","map","addon","toggleAddon","paddingTop","paddingBottom","display","checked","readOnly","description","quoteRand","spinning","on","statusText","quote","person","marginBottom","overflow","margin","renderQuote","noSheets","getSheets","Loading","renderSheets","syncText","syncAction","syncErrorAction","removeListener","startSync","xmlns","fill","cursor","fontWeight","location","reload","renderChanges","searchTerm","_searchInput","searchSheets","toggleUserOptions","changeTo","handle","username","email","changeTheme","changeCurrency","bind","curr","href","fontSize","avatar","toUpperCase","maxHeight","githubLogout","paddingLeft","archivedSheetCount","justifyContent","opacity","toggled","transition","currentTab","tabTransition","stagedAmount","tab","Addons","Archives","Push","Search","Settings","Sheets","visibility","left","renderTabContent","THROTTLE_LIMIT","lineFocusedAction","lineChangedAction","throttleCounter","writeGoodSuggestions","writeGood","s","reason","DEFAULT_CURRENCY","toLowerCase","DEFAULT_CURRENCY_SYMBOL","currencies","ticker","symbol","usdFactor","getConversions","conv","rates","toFixed","toArray","currency1","currency2","inArray","some","parseableArray","inText","RegExp","splittedParser","splittedSpace","trim","amount","numberString","isNaN","toText","conversion","c","parsed","parseConversion","calculatables","calculatable","calcable","fn","Function","evil","renderCalculated","match","link","rel","maxWidth","renderLinks","addons_write_good","addons_conversion","calculator","addons_links","headText","smallText","AUTH_URL","isRefresh","AUTH_URL_REFRESH","loginButtonText","forceLogout","userAgent","iframe","_authIframe","contentWindow","contentDocument","warn","githubLogin","alt","onLoad","handleIframeLoad","frameBorder","lineHeight","focusIndex","ctrlKey","metaKey","newTheme","sheetLoading","login","_textScroller","yesterday","setDate","lineIndex","updateLine","old_key","splice","textArray","direction","newIndex","lineArray","prevDate","l","dangerouslySetInnerHTML","__html","getDateIdentifier","Line","prevId","nextId","handleConcat","handleSplit","handleCursor","AppBar","Title","handleTitleDown","renderLines","Handy","focusLast","Toolbar","Login","renderApp","Cover","isLocalhost","Boolean","hostname","registerValidSW","swUrl","config","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","ReactDOM","render","src_App_0","origin","response","contentType","headers","indexOf","ready","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.3e181066.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/github.13ca91d2.svg\";","export default function makeid(length){\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for(var i=0; i < length; i++)\r\n {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n}\r\n","var EventEmitter = require('events').EventEmitter;\r\nEventEmitter.defaultMaxListeners = 40;\r\nlet Event = new EventEmitter();\r\n\r\nexport default Event;\r\n","import * as JsStore from 'jsstore';\r\nimport { IDataBase, DATA_TYPE, ITable } from 'jsstore';\r\nimport * as JsStoreWorker from \"jsstore/dist/jsstore.worker.commonjs2\";\r\nwindow['JsStoreWorker'] = JsStoreWorker;\r\n\r\nconst connection = new JsStore.Instance();\r\nconst DB_NAME ='memo_db';\r\n\r\nclass LocalDB {\r\n\r\n initDB(){\r\n try {\r\n const dataBase = this.getDataBaseSchema();\r\n return connection.initDb(dataBase);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n getConnection(){\r\n return connection;\r\n }\r\n\r\n async insert(table, value){\r\n let noOfDataInserted = await connection.insert({\r\n into: table,\r\n values: [value]\r\n });\r\n\r\n if(noOfDataInserted > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n async select(table, where, order, limit){\r\n let query = {\r\n from: table\r\n };\r\n if(where){\r\n query.where = where;\r\n }\r\n if(limit){\r\n query.limit = limit;\r\n }\r\n if(order){\r\n query.order = order;\r\n }\r\n let results = await connection.select(query);\r\n\r\n return results;\r\n }\r\n\r\n async delete(table, where, limit){\r\n let query = {\r\n from: table,\r\n where\r\n };\r\n\r\n if(limit){\r\n query.limit = limit;\r\n }\r\n\r\n let rowsDeleted = await connection.remove(query);\r\n return rowsDeleted;\r\n }\r\n\r\n async update(table, where, set, limit){\r\n let rowsUpdated = await connection.update({\r\n in: table,\r\n where,\r\n set,\r\n limit\r\n });\r\n\r\n return rowsUpdated;\r\n }\r\n\r\n async count(table, where){\r\n let rowsCounted = await connection.count({\r\n from: table,\r\n where\r\n });\r\n\r\n return rowsCounted;\r\n }\r\n\r\n async truncate(){\r\n let sheetsDeleted = await connection.remove({\r\n from: \"sheet\"\r\n });\r\n\r\n let linesDeleted = await connection.remove({\r\n from: \"line\"\r\n });\r\n\r\n return { sheetsDeleted, linesDeleted };\r\n }\r\n\r\n getDataBaseSchema() {\r\n const sheet = {\r\n name: 'sheet',\r\n columns: {\r\n id: { primaryKey: true, autoIncrement: true },\r\n title: { notNull: false, dataType: \"string\" },\r\n active: { notNull: true, dataType: \"number\" },\r\n created_at: { notNull: true, dataType: \"number\" },\r\n accessed_at: { notNull: true, dataType: \"number\" }\r\n }\r\n };\r\n const line = {\r\n name: 'line',\r\n columns: {\r\n id: { primaryKey: true, autoIncrement: true },\r\n sheet_id: { notNull: true, dataType: \"number\" },\r\n line_key: { notNull: true, dataType: \"string\" },\r\n date: { notNull: true, dataType: \"string\" },\r\n text: { notNull: false, dataType: \"string\" },\r\n pos: { notNull: true, dataType: \"number\" }\r\n }\r\n };\r\n const db = {\r\n name: DB_NAME,\r\n tables: [sheet, line]\r\n }\r\n return db;\r\n }\r\n\r\n}\r\n\r\nconst _db = new LocalDB();\r\nexport default _db;\r\n","import API from './api';\r\nimport LocalDB from './localdb';\r\nimport makeid from './makeid';\r\n\r\nclass Markdown {\r\n async getSheetMarkdown(sheetId, beautified){\r\n let sheet = await API.getSheet(sheetId);\r\n if(sheet == \"removed\"){\r\n return \"\";\r\n }\r\n\r\n let sheetMarkdown = \"\";\r\n\r\n if(beautified){\r\n sheetMarkdown = `# ${sheet.title}\r\n\r\n`;\r\n }else{\r\n sheetMarkdown = `---\r\nid: ${sheet.id}\r\ntitle: ${sheet.title}\r\nactive: ${sheet.active}\r\ncreated_at: ${sheet.created_at}\r\naccessed_at: ${sheet.accessed_at}\r\n---\r\n`;\r\n }\r\n\r\n let currentDate = \"\";\r\n sheet.lines.forEach(line => {\r\n if(currentDate != line.date){\r\n currentDate = line.date;\r\n\r\n if(beautified){\r\n sheetMarkdown += `${line.date}\r\n\r\n`;\r\n }else{\r\n sheetMarkdown += `{{date: ${line.date}}}\r\n\r\n`;\r\n }\r\n }\r\n sheetMarkdown += `${line.text}\r\n\r\n`;\r\n });\r\n if(beautified){\r\n return {\r\n title: sheet.title,\r\n text: sheetMarkdown\r\n };\r\n }else{\r\n return sheetMarkdown;\r\n }\r\n }\r\n\r\n // removes and adds a sheet if not valid\r\n async saveMarkdownSheet(file){\r\n let fileMetadataYaml = file.content.split(\"---\")[1];\r\n let fileContent = file.content.split(\"---\").slice(2).join(\"---\");\r\n\r\n let fileMetadata = {\r\n id: Number(fileMetadataYaml.split(\"id: \")[1].split(/\\n/)[0]),\r\n title: fileMetadataYaml.split(\"title: \")[1].split(/\\n/)[0],\r\n active: Number(fileMetadataYaml.split(\"active: \")[1].split(/\\n/)[0]),\r\n created_at: Number(fileMetadataYaml.split(\"created_at: \")[1].split(/\\n/)[0]),\r\n accessed_at: Number(fileMetadataYaml.split(\"accessed_at: \")[1].split(/\\n/)[0])\r\n };\r\n\r\n let localSheet = await LocalDB.select(\"sheet\", {id: fileMetadata.id }, 1);\r\n let removeAddAction = false;\r\n if(localSheet.length == 0) {\r\n removeAddAction = true;\r\n }else{\r\n if(localSheet[0].accessed_at != fileMetadata.accessed_at){\r\n removeAddAction = true;\r\n }\r\n }\r\n\r\n if(removeAddAction){\r\n //delete\r\n let ey = await LocalDB.delete(\"sheet\", {id: fileMetadata.id});\r\n await LocalDB.delete(\"line\", {sheet_id: fileMetadata.id});\r\n\r\n //insert\r\n let fileParagraphs = fileContent.split(/\\n\\n/);\r\n await LocalDB.insert(\"sheet\", {\r\n id: fileMetadata.id,\r\n title: fileMetadata.title,\r\n active: fileMetadata.active,\r\n created_at: fileMetadata.created_at,\r\n accessed_at: fileMetadata.accessed_at\r\n });\r\n\r\n let sheetId = fileMetadata.id;\r\n let lineDate = \"\";\r\n let linePos = 0;\r\n for (var j = 0; j < fileParagraphs.length; j++) {\r\n let p = fileParagraphs[j];\r\n\r\n if(p != \"\"){\r\n if(p.includes(\"{{date: \")){\r\n lineDate = p.split(\"{{date: \")[1].split(\"}}\")[0];\r\n }else{\r\n let lineKey = makeid(5);\r\n await LocalDB.insert(\"line\", {\r\n sheet_id: sheetId,\r\n line_key: lineKey,\r\n date: lineDate,\r\n text: p,\r\n pos: linePos\r\n });\r\n\r\n linePos++;\r\n }\r\n }\r\n }\r\n\r\n if(linePos == 0){\r\n let newLineKey = makeid(5);\r\n await LocalDB.insert(\"line\", {\r\n sheet_id: sheetId,\r\n line_key: newLineKey,\r\n date: lineDate,\r\n text: \"\",\r\n pos: 0\r\n });\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async removeCloudDeletedFiles(filesArray){\r\n console.log(\"Removing cloud deleted files...\");\r\n let fileIdArray = []\r\n filesArray.forEach(file => {\r\n if(file.filename.includes(\"-\")){\r\n fileIdArray.push(Number(file.filename.split(\"-\")[1].split(\".\")[0]));\r\n }\r\n })\r\n\r\n let localSheets = await LocalDB.select(\"sheet\");\r\n\r\n let sheetsToRemove = localSheets.filter(sheet => {\r\n return !fileIdArray.includes(sheet.id);\r\n })\r\n\r\n for (var i = 0; i < sheetsToRemove.length; i++) {\r\n await LocalDB.delete(\"sheet\", {id: sheetsToRemove[i].id});\r\n await LocalDB.delete(\"line\", {sheet_id: sheetsToRemove[i].id});\r\n }\r\n }\r\n\r\n async updateMarkdownSheets(files){\r\n let filesArray = Object.values(files).sort((a,b) => {\r\n a = Number(a.filename.split(\".\")[0].split(\"-\")[1]);\r\n b = Number(b.filename.split(\".\")[0].split(\"-\")[1]);\r\n return (a > b) ? 1 : ((b > a) ? -1 : 0);\r\n });\r\n\r\n for (var i = 0; i < filesArray.length; i++) {\r\n let file = filesArray[i];\r\n\r\n if(file.filename != \"01_usememo.md\" && file.filename != \"02_metadata.md\"){\r\n await this.saveMarkdownSheet(file);\r\n }\r\n\r\n if(file.filename == \"02_metadata.md\"){\r\n // set the local update validator to the cloud one.\r\n let accessed_at = Number(file.content.split(\"accessed_at: \")[1].split(/\\n/)[0]);\r\n API.setData(\"updated_at\", accessed_at);\r\n }\r\n }\r\n\r\n\r\n let localSheetCount = await LocalDB.count(\"sheet\");\r\n // -2 for desc and metadata sheets\r\n if(localSheetCount != (filesArray.length - 2)){\r\n await this.removeCloudDeletedFiles(filesArray);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async offlineSetup(){\r\n let file = {\r\n filename: \"sheet-1.md\",\r\n content: `---\r\nid: 1\r\ntitle: Welcome to Memo 👋\r\nactive: 1\r\ncreated_at: 1576786353\r\naccessed_at: 1576789529\r\n---\r\n{{date: 19/12/2019}}\r\n\r\nThis is so exciting.\r\nThank you for checking out memo!\r\n\r\nMemo has no bold, italic or subtitles, minimal and plain. Great for really focusing and creating your own formatting. It's totally free, and uses private Github Gists as cloud storage.\r\n\r\nLet me tell you about how memo works;\r\n\\t- There are separated paragraphs\r\n\\t- A double new line creates a paragraph\r\n\\t- Every paragraph has its own insights ✨\r\n\\t- Enable which insights you want in addons 🧩\r\n\\t- Use offline, push your changes to cloud later\r\n\r\nNow, archive or remove this sheet or create a new sheet from sidebar sheets tab and start taking notes.\r\n\r\nAlso if you see any bug, let's crush it together on GitHub!\r\nUsing this link: https://github.com/btk/memo\r\n\r\nAgain, welcome to memo! 😊`\r\n };\r\n API.addToStaging(1);\r\n return await this.saveMarkdownSheet(file);\r\n }\r\n}\r\n\r\nconst _md = new Markdown();\r\nexport default _md;\r\n","import Octokit from '@octokit/rest';\r\nimport API from './api';\r\nimport Markdown from './markdown';\r\n\r\nclass Github {\r\n async init(token){\r\n this.client = new Octokit({\r\n auth: \"token \"+token\r\n })\r\n\r\n if(!API.user.gist_id){\r\n return await this.setup();\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n list(){\r\n return this.client.gists.getRevision({gist_id: API.user.gist_id, sha: \"eaf951983a50e774d9bfaa92673ac6d5c9bb6227\"}).then(gists => {\r\n return gists;\r\n });\r\n }\r\n\r\n setup(){\r\n // create an empty memo gist\r\n let files = {};\r\n files[\"01_usememo.md\"] = {\r\n filename: \"01_usememo.md\",\r\n content: `# Created by Memo App\r\n\r\nThis gist was created by note taking app; memo ([usememo.com](https://www.usememo.com)) and is not intended to be editted.\r\n\r\nTo read your notes and make changes, please go to [usememo.com](https://www.usememo.com) and use either our browser app or desktop app. Also you can see your notes in MD format in the following sub gists, by their sheet ids.\r\n`\r\n };\r\n\r\n files[\"02_metadata.md\"] = {\r\n filename: \"02_metadata.md\",\r\n content: `---\r\ncreated_at: ${Math.round((new Date()).getTime() / 1000)}\r\naccessed_at: ${Math.round((new Date()).getTime() / 1000)}\r\ntheme: ${API.getTheme()}\r\ncurrency: USD\r\naddons: |write-good||conversion||links||calculator|\r\n---\r\n\r\nPlease don't edit this file, as this is vital for cache validation and version control.\r\n`\r\n };\r\n\r\n files[\"sheet-1.md\"] = {\r\n filename: \"sheet-1.md\",\r\n content: `---\r\nid: 1\r\ntitle: Welcome to Memo 👋\r\nactive: 1\r\ncreated_at: 1576786353\r\naccessed_at: 1576789529\r\n---\r\n{{date: 19/12/2019}}\r\n\r\nThis is so exciting.\r\nThank you for checking out memo!\r\n\r\nMemo has no bold, italic or subtitles, minimal and plain. Great for really focusing and creating your own formatting. It's totally free, and uses private Github Gists as cloud storage.\r\n\r\nLet me tell you about how memo works;\r\n\\t- There are separated paragraphs\r\n\\t- A double new line creates a paragraph\r\n\\t- Every paragraph has its own insights ✨\r\n\\t- Enable which insights you want in addons 🧩\r\n\\t- Use offline, push your changes to cloud later\r\n\r\nNow, archive or remove this sheet or create a new sheet from sidebar sheets tab and start taking notes.\r\n\r\nAlso if you see any bug, let's crush it together on GitHub!\r\nUsing this link: https://github.com/btk/memo\r\n\r\nAgain, welcome to memo! 😊`\r\n };\r\n\r\n return this.client.gists.create({\r\n files\r\n }).then(res => {\r\n API.setGistId(res.data.id);\r\n return this.sync();\r\n })\r\n }\r\n\r\n fetch(){\r\n API.event.emit(\"fetching\");\r\n return this.client.gists.get({gist_id: API.user.gist_id}).then(gist => {\r\n let files = gist.data.files;\r\n\r\n //cloud stored preference data in effect on\r\n let theme = files[\"02_metadata.md\"].content.split(\"theme: \")[1].split(/\\n/)[0];\r\n API.setData(\"theme\", theme);\r\n API.event.emit(\"theme\", theme);\r\n\r\n let currency = files[\"02_metadata.md\"].content.split(\"currency: \")[1].split(/\\n/)[0];\r\n API.setData(\"currency\", currency);\r\n\r\n let addons = files[\"02_metadata.md\"].content.split(\"addons: \")[1].split(/\\n/)[0];\r\n API.setData(\"addons\", addons);\r\n API.event.emit(\"addons\", addons);\r\n\r\n\r\n return Markdown.updateMarkdownSheets(files).then(res => {\r\n API.addToStaging(\"flush\");\r\n API.event.emit(\"fetched\");\r\n return res;\r\n });\r\n })\r\n }\r\n\r\n checkUpdate(){\r\n API.event.emit(\"checkingUpdates\");\r\n\r\n return this.client.gists.get({gist_id: API.user.gist_id}).then(gist => {\r\n let files = gist.data.files;\r\n let accessed_at = Number(files[\"02_metadata.md\"].content.split(\"accessed_at: \")[1].split(/\\n/)[0]);\r\n if(accessed_at !== Number(API.getData(\"updated_at\"))){\r\n console.log(\"Local data is not valid, starting a forced fetch\");\r\n return this.fetch();\r\n }else{\r\n console.log(\"Gists and local data is already synced\");\r\n return true;\r\n }\r\n }, err => {\r\n console.log(\"Error: Gist is not valid, creating a new one.\");\r\n return this.setup().then(res => {\r\n return this.fetch();\r\n });\r\n })\r\n }\r\n\r\n sync(){\r\n let staging = API.getData(\"staging\");\r\n if(staging){\r\n\r\n let stagedArray = [];\r\n staging.split(\",\").forEach(staged => {\r\n stagedArray.push(Number(staged.replace(/\\|/g, \"\")));\r\n });\r\n\r\n let memoGistId = API.user.gist_id;\r\n\r\n return this.client.gists.get({gist_id: memoGistId}).then(async gist => {\r\n let files = gist.data.files;\r\n\r\n let currentClientTime = Math.round((new Date()).getTime() / 1000);\r\n API.setData(\"updated_at\", currentClientTime);\r\n\r\n let metadata = files[`02_metadata.md`].content;\r\n\r\n let metadataHead = metadata.split(\"accessed_at: \")[0];\r\n let metadataFoot = metadata.split(\"accessed_at: \")[1].split(/\\n/).slice(1).join(\"\\n\");\r\n\r\n let metadataContent = metadataHead + \"accessed_at: \" + currentClientTime + \"\\n\" + metadataFoot;\r\n\r\n files[`02_metadata.md`] = {\r\n filename: `02_metadata.md`,\r\n content: metadataContent\r\n };\r\n\r\n for (var i = 0; i < stagedArray.length; i++) {\r\n let stagedSheetId = stagedArray[i];\r\n let markdownContent = await Markdown.getSheetMarkdown(stagedSheetId);\r\n if(markdownContent === \"\"){\r\n if(files[`sheet-${stagedSheetId}.md`]){\r\n files[`sheet-${stagedSheetId}.md`] = {\r\n filename: `sheet-${stagedSheetId}.md`,\r\n content: \"\"\r\n };\r\n }\r\n }else{\r\n files[`sheet-${stagedSheetId}.md`] = {\r\n filename: `sheet-${stagedSheetId}.md`,\r\n content: markdownContent\r\n };\r\n }\r\n }\r\n\r\n return this.client.gists.update({\r\n gist_id: memoGistId,\r\n files: files\r\n });\r\n }, err => {\r\n API.event.emit(\"syncError\", err);\r\n return err;\r\n })\r\n\r\n }else {\r\n return \"no files on staging\";\r\n }\r\n }\r\n\r\n pushPreference(preference, updateTo){\r\n let memoGistId = API.user.gist_id;\r\n\r\n return this.client.gists.get({gist_id: memoGistId}).then(async gist => {\r\n let files = gist.data.files;\r\n\r\n let metadata = files[`02_metadata.md`].content;\r\n\r\n let metadataHead = metadata.split(preference+\": \")[0];\r\n let metadataFoot = metadata.split(preference+\": \")[1].split(/\\n/).slice(1).join(\"\\n\");\r\n\r\n let metadataContent = metadataHead + preference +\": \" + updateTo + \"\\n\" + metadataFoot;\r\n\r\n files[`02_metadata.md`] = {\r\n filename: `02_metadata.md`,\r\n content: metadataContent\r\n };\r\n\r\n return this.client.gists.update({\r\n gist_id: memoGistId,\r\n files: files\r\n });\r\n })\r\n }\r\n}\r\n\r\nconst _gh = new Github();\r\nexport default _gh;\r\n","import API from './api';\r\nimport LocalDB from './localdb';\r\nimport Markdown from './markdown';\r\nimport makeid from './makeid';\r\nimport { saveAs } from 'file-saver';\r\n\r\nclass Files {\r\n listenFileDrop(){\r\n let dropTimer = 0;\r\n let root = document.getElementById('root');\r\n let cover = document.getElementById('cover');\r\n\r\n root.ondragover = function() {\r\n clearTimeout(dropTimer);\r\n dropTimer = setTimeout(function() {\r\n cover.className = \"cover\";\r\n return false;\r\n }, 1000);\r\n\r\n if(cover.className != \"cover coverActive\"){\r\n cover.className = \"cover coverActive\";\r\n }\r\n return false;\r\n };\r\n\r\n cover.ondragleave = function() {\r\n clearTimeout(dropTimer);\r\n cover.className = \"cover\";\r\n return false;\r\n };\r\n\r\n root.ondragend = function() {\r\n clearTimeout(dropTimer);\r\n cover.className = \"cover\";\r\n return false;\r\n };\r\n\r\n root.ondrop = (e) => {\r\n clearTimeout(dropTimer);\r\n e.preventDefault();\r\n if(e.dataTransfer.files.length){\r\n var file = e.dataTransfer.files[0],\r\n reader = new FileReader();\r\n\r\n reader.onload = (event) => {\r\n API.event.emit(\"importStarted\", file.name);\r\n if(file.name.endsWith(\".txt\") || file.name.endsWith(\".md\") || file.name.endsWith(\".markdown\")){\r\n this.importFile(file.name, file.lastModified, event.target.result).then(added => {\r\n API.event.emit(\"sheet\", added);\r\n API.event.emit(\"importEnded\");\r\n cover.className = \"cover\";\r\n });\r\n }else{\r\n alert(\"File should be a plaintext format (.txt, .md or .markdown) in order to import in Memo\");\r\n cover.className = \"cover\";\r\n }\r\n };\r\n reader.readAsText(file);\r\n }\r\n return false;\r\n };\r\n\r\n }\r\n\r\n async importFile(fileName, unixTime, text){\r\n\r\n if(text[text.length - 1] == \"\\r\" || text[text.length - 1] == \"\\n\"){\r\n text = text.substr(0, text.length-1)\r\n }\r\n\r\n let fileParagraphs;\r\n // n+r is usually typed in a windows, n+n is default\r\n if(text.includes(\"\\n\\r\")){\r\n fileParagraphs = text.split(/\\n\\r/);\r\n }else{\r\n fileParagraphs = text.split(/\\n\\n/);\r\n }\r\n\r\n await LocalDB.insert(\"sheet\", {\r\n title: \"📃 \"+fileName,\r\n active: 1,\r\n created_at: Math.floor(unixTime / 1000),\r\n accessed_at: Math.round((new Date()).getTime() / 1000)\r\n });\r\n\r\n let newSheet = await LocalDB.select(\"sheet\", null, {\r\n by: \"id\",\r\n type: \"desc\"\r\n }, 1);\r\n\r\n let sheetId = newSheet[0].id;\r\n\r\n let today = new Date();\r\n let lineDate = String(today.getDate()).padStart(2, '0') + \"/\" + String(today.getMonth() + 1).padStart(2, '0') + \"/\" + today.getFullYear();\r\n\r\n let linePos = 0;\r\n for (var j = 0; j < fileParagraphs.length; j++) {\r\n let p = fileParagraphs[j];\r\n\r\n if(p[p.length - 1] == \"\\r\" || p[p.length - 1] == \"\\n\"){\r\n p = p.substr(0, p.length-1)\r\n }\r\n if(p[0] == \"\\r\" || p[0] == \"\\n\"){\r\n p = p.substr(1)\r\n }\r\n if(p != \"\"){\r\n let lineKey = makeid(5);\r\n await LocalDB.insert(\"line\", {\r\n sheet_id: sheetId,\r\n line_key: lineKey,\r\n date: lineDate,\r\n text: p,\r\n pos: linePos\r\n });\r\n linePos++;\r\n }\r\n }\r\n API.addToStaging(sheetId);\r\n return sheetId;\r\n }\r\n\r\n exportFile(sheetId) {\r\n try {\r\n var isFileSaverSupported = !!new Blob;\r\n } catch (e) {\r\n alert(\"Your device doesn't support file saver!\");\r\n }\r\n\r\n return Markdown.getSheetMarkdown(sheetId, true).then((sheet) => {\r\n let markdownText = sheet.text;\r\n\r\n var blob = new Blob([markdownText], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n\r\n saveAs(blob, sheet.title + '.md');\r\n });\r\n }\r\n\r\n}\r\n\r\nconst _files = new Files();\r\nexport default _files;\r\n","import makeid from './makeid';\r\nimport Event from './event';\r\nimport LocalDB from './localdb';\r\nimport Analytics from 'react-ga';\r\nimport Github from './octokit';\r\nimport Markdown from './markdown';\r\nimport Files from './files';\r\n\r\nconst URL = \"https://api.usememo.com/\";\r\nconst DEVELOPMENT = false;\r\nconst VERSION = \"0.6.4\";\r\n\r\nclass API {\r\n constructor(){\r\n Analytics.initialize('UA-138987685-1');\r\n this.development = DEVELOPMENT;\r\n\t\tthis.event = Event;\r\n this.version = VERSION;\r\n this.online = window.navigator.onLine;\r\n this.analytics = Analytics;\r\n this.logged = false;\r\n this.defaultAddons = \"|write-good||conversion||links||calculator|\";\r\n this.loginInterval = false;\r\n console.log(\"API: init\");\r\n\r\n LocalDB.initDB().then(res => {\r\n console.log(\"LocalDB: init\");\r\n });\r\n\r\n }\r\n\r\n isOnline(){\r\n return this.online;\r\n }\r\n\r\n githubLogin(){\r\n var url = URL + \"login/\" + (DEVELOPMENT ? \"development\": \"\");\r\n\r\n fetch(url, { method: 'GET', credentials: 'include'})\r\n .then(res => res.json())\r\n .then((res) => {\r\n if(res == null){\r\n console.log(\"NO_AUTH\");\r\n }\r\n if(res){\r\n if(res.session_id){\r\n console.log(\"Logged In\");\r\n this.logged = true;\r\n this.user = res;\r\n Github.init(this.user.token).then(status => {\r\n console.log(\"initing...\");\r\n Github.checkUpdate().then(res => {\r\n console.log(\"checked for updates...\");\r\n this.event.emit(\"sheet\", \"LAST_ACCESSED\");\r\n this.event.emit(\"login\", true);\r\n });\r\n });\r\n\r\n Files.listenFileDrop();\r\n }\r\n }\r\n }).catch(err => {\r\n console.log(err);\r\n this.offlineLogin();\r\n });\r\n }\r\n\r\n offlineLogin(){\r\n this.online = false;\r\n console.log(\"Logging in: Offline\");\r\n this.logged = true;\r\n return LocalDB.count(\"sheet\").then(sheetCount => {\r\n if(sheetCount == 0){\r\n this.offlineFirstTime();\r\n }else{\r\n this.event.emit(\"sheet\", \"LAST_ACCESSED\");\r\n this.event.emit(\"login\", true);\r\n }\r\n })\r\n\r\n Files.listenFileDrop();\r\n }\r\n\r\n offlineFirstTime(){\r\n Markdown.offlineSetup().then((status) => {\r\n console.log(\"Setting up first time offline\", status);\r\n if(status){\r\n this.event.emit(\"sheet\", \"LAST_ACCESSED\");\r\n this.event.emit(\"login\", true);\r\n }\r\n });\r\n }\r\n\r\n githubLogout(){\r\n var url = URL + \"logout/\" + (DEVELOPMENT ? \"development\": \"\");\r\n\r\n fetch(url, { method: 'GET'})\r\n .then(res => res.json())\r\n .then((res) => {\r\n this.event.emit(\"login\", false);\r\n });\r\n }\r\n\r\n sync(){\r\n Github.sync().then(res => {\r\n if(res.status == 200){\r\n this.addToStaging(\"flush\");\r\n }\r\n });\r\n }\r\n\r\n fetch(){\r\n Github.fetch().then(res => {\r\n if(res){\r\n this.addToStaging(\"flush\");\r\n this.event.emit(\"sheet\", \"LAST_ACCESSED\");\r\n }\r\n });\r\n }\r\n\r\n getTheme(){\r\n return this.getData(\"theme\") || \"light\";\r\n }\r\n\r\n getSheet(sheetId){\r\n this.analytics.pageview(\"/sheet/\"+sheetId);\r\n\r\n let today = new Date();\r\n let formattedTime = String(today.getDate()).padStart(2, '0') + \"/\" + String(today.getMonth() + 1).padStart(2, '0') + \"/\" + today.getFullYear();\r\n\r\n let id = sheetId;\r\n let time = Math.round((new Date()).getTime() / 1000);\r\n let where, order;\r\n let action = \"\";\r\n\r\n if(action == \"archive\"){\r\n // `sheet` SET `active` = 0 WHERE `id` = $id AND owner_id = $user_id\r\n return LocalDB.update(\"sheet\", {id}, {active: 0});\r\n }else if(action == \"active\"){\r\n return LocalDB.update(\"sheet\", {id}, {active: 1});\r\n }else if(action == \"rm\"){\r\n //DELETE FROM `sheet` WHERE `id` = $id AND owner_id = $user_id\r\n //DELETE FROM `line` WHERE `sheet_id` = $id\r\n return LocalDB.delete(\"sheet\", {id}).then((res) => {\r\n return LocalDB.delete(\"line\", {sheet_id: id});\r\n });\r\n }else{\r\n if(id == \"NEW_SHEET\"){\r\n // INTO `sheet` (`id`, `owner_id`, `title`, `active`, `created_at`, `accessed_at`) VALUES (NULL, '$user_id', 'Untitled Sheet', 1, '$time', '$time\r\n return LocalDB.insert(\"sheet\", {\r\n title: \"Untitled Sheet\",\r\n active: 1,\r\n created_at: time,\r\n accessed_at: time\r\n }).then(res => {\r\n if(res){\r\n //SELECT id FROM `sheet` WHERE owner_id = $user_id Order by accessed_at desc LIMIT 1\r\n return LocalDB.select(\"sheet\", null, {\r\n by: \"accessed_at\",\r\n type: \"desc\"\r\n }, 1).then(res => {\r\n let newAddedId = res[0].id;\r\n let newLineKey = makeid(5);\r\n //INSERT INTO `line` (`id`, `sheet_id`, `line_key`, `date`, `text`, `pos`) VALUES (NULL, '$id', '\".uniqid().\"', '$formatted_time', '', '0')\r\n return LocalDB.insert(\"line\", {\r\n sheet_id: newAddedId,\r\n line_key: newLineKey,\r\n date: formattedTime,\r\n text: \"\",\r\n pos: 0\r\n }).then(res => {\r\n return LocalDB.select(\"sheet\", {id: newAddedId}, null, 1).then((sheet) => {\r\n let newSheet = sheet[0];\r\n return LocalDB.select(\"line\", {sheet_id: newAddedId}, {by: \"pos\", type: \"asc\"}).then(lines => {\r\n newSheet.lines = lines;\r\n return newSheet;\r\n })\r\n })\r\n })\r\n });\r\n }\r\n })\r\n\r\n }else if(id == \"LAST_ACCESSED\"){\r\n\r\n return LocalDB.select(\"sheet\", {active: 1}, {\r\n by: \"accessed_at\",\r\n type: \"desc\"\r\n }, 1).then(res => {\r\n if(res[0]){\r\n let lastSheet = res[0];\r\n return LocalDB.select(\"line\", {sheet_id: lastSheet.id}, {by: \"pos\", type: \"asc\"}).then(lines => {\r\n lastSheet.lines = lines;\r\n LocalDB.update(\"sheet\", {id: lastSheet.id}, {accessed_at: time});\r\n return lastSheet;\r\n });\r\n }else{\r\n // Add a new sheet for the new user!\r\n\r\n return LocalDB.insert(\"sheet\", {\r\n title: \"Untitled Sheet\",\r\n active: 1,\r\n created_at: time,\r\n accessed_at: time\r\n }).then(res => {\r\n if(res){\r\n //SELECT id FROM `sheet` WHERE owner_id = $user_id Order by accessed_at desc LIMIT 1\r\n return LocalDB.select(\"sheet\", null, {\r\n by: \"accessed_at\",\r\n type: \"desc\"\r\n }, 1).then(res => {\r\n let newAddedId = res[0].id;\r\n let newLineKey = makeid(5);\r\n //INSERT INTO `line` (`id`, `sheet_id`, `line_key`, `date`, `text`, `pos`) VALUES (NULL, '$id', '\".uniqid().\"', '$formatted_time', '', '0')\r\n return LocalDB.insert(\"line\", {\r\n sheet_id: newAddedId,\r\n line_key: newLineKey,\r\n date: formattedTime,\r\n text: \"\",\r\n pos: 0\r\n }).then(res => {\r\n return LocalDB.select(\"sheet\", {id: newAddedId}).then((sheet) => {\r\n let newSheet = sheet[0];\r\n return LocalDB.select(\"line\", {sheet_id: newAddedId}, {by: \"pos\", type: \"asc\"}).then(lines => {\r\n newSheet.lines = lines;\r\n return newSheet;\r\n })\r\n })\r\n })\r\n });\r\n }\r\n });\r\n\r\n }\r\n })\r\n\r\n }else{\r\n // id is a Number\r\n return LocalDB.select(\"sheet\", {id}).then((sheet) => {\r\n let idSheet = sheet[0];\r\n if(idSheet){\r\n return LocalDB.select(\"line\", {sheet_id: idSheet.id}, {by: \"pos\", type: \"asc\"}).then(lines => {\r\n idSheet.lines = lines;\r\n LocalDB.update(\"sheet\", {id}, {accessed_at: time});\r\n return idSheet;\r\n });\r\n }else{\r\n return \"removed\";\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n getConversions(){\r\n return fetch(\"https://api.exchangeratesapi.io/latest?base=USD\")\r\n .then(res => res.json());\r\n }\r\n\r\n async getSheets(active, count){\r\n\r\n if(count){\r\n let sheetCount = await LocalDB.count(\"sheet\", {active: active});\r\n return sheetCount;\r\n }\r\n\r\n let sheets = await LocalDB.select(\"sheet\", {active: active}, {\r\n by: \"accessed_at\",\r\n type: \"desc\"\r\n });\r\n\r\n for (var i = 0; i < sheets.length; i++) {\r\n\r\n let sheet = sheets[i];\r\n let lines = await LocalDB.select(\"line\", {sheet_id: sheet.id}, {by: \"pos\", type: \"asc\"});\r\n if(lines[0]){\r\n sheets[i].first_line = lines[0].text.replace(/<[^>]*>|#/g, '');\r\n }else{\r\n sheets[i].first_line = \"\";\r\n }\r\n sheets[i].line_count = lines.length;\r\n }\r\n\r\n return sheets;\r\n }\r\n\r\n async searchSheets(term){\r\n let sheets = await LocalDB.select(\"sheet\", {title: {like: '%'+term+'%'}}, {\r\n by: \"accessed_at\",\r\n type: \"desc\"\r\n });\r\n\r\n for (var i = 0; i < sheets.length; i++) {\r\n let sheet = sheets[i];\r\n let lines = await LocalDB.select(\"line\", {sheet_id: sheet.id}, {by: \"pos\", type: \"asc\"});\r\n sheets[i].first_line = lines[0].text.replace(/<[^>]*>|#/g, '');\r\n sheets[i].line_count = lines.length;\r\n }\r\n\r\n return sheets;\r\n }\r\n\r\n updateLine(id, pos, text, action, hint){\r\n // pos, text, action, hint\r\n let date = id.split(\"-\")[0].split(\"!\")[1];\r\n let line_key = id.split(\"-\")[1];\r\n let sheet_id = Number(id.split(\"-\")[0].split(\"!\")[0]);\r\n this.addToStaging(sheet_id);\r\n\r\n if(action == \"rm\"){\r\n //DELETE FROM `line` WHERE `date` = '$date' AND `sheet_id` = '$sheetId' AND `pos` = '$pos\r\n //UPDATE `line` SET pos = pos-1 WHERE `pos` >= $pos AND sheet_id = $sheetId\r\n return LocalDB.delete(\"line\", {date, sheet_id, pos}).then(() => {\r\n return LocalDB.update(\"line\", {\r\n pos: {\r\n '>=': pos\r\n },\r\n sheet_id\r\n }, {\r\n pos: {\r\n '-': 1\r\n }\r\n });\r\n });\r\n }else{\r\n let setFound = {text};\r\n let whereCheck = {date, sheet_id, pos, line_key};\r\n if(action == \"key\"){\r\n setFound.line_key = line_key;\r\n whereCheck.line_key = hint;\r\n }\r\n\r\n //SELECT id FROM `line` WHERE `date` = '$date' AND `sheet_id` = '$sheetId' AND `pos` = '$pos' AND `line_key` = '$checkKey' LIMIT 1\r\n return LocalDB.select(\"line\", whereCheck, null, 1).then((line) => {\r\n if(line.length == 1){\r\n //UPDATE `line` SET `text` = '$text'$updateKey WHERE `id` = $lineId\r\n return LocalDB.update(\"line\", {id: line[0].id}, setFound);\r\n }else{\r\n //UPDATE `line` SET pos = pos+1 WHERE `pos` >= $pos AND sheet_id = $sheetId\r\n\r\n return LocalDB.select(\"line\", {\r\n pos: {\r\n '>=': pos\r\n },\r\n sheet_id\r\n }).then(res => {\r\n res.forEach(line => {\r\n LocalDB.update(\"line\", {\r\n id: line.id\r\n }, {\r\n pos: {\r\n '+': 1\r\n }\r\n })\r\n });\r\n //INSERT INTO `line` (`id`, `sheet_id`, `line_key`, `date`, `text`, `pos`) VALUES (NULL, '$sheetId', '$key', '$date', '$text', '$pos\r\n return LocalDB.insert(\"line\", {\r\n sheet_id,\r\n line_key,\r\n date,\r\n text,\r\n pos\r\n });\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n updateTitle(text, sheetId){\r\n this.addToStaging(sheetId);\r\n return LocalDB.update(\"sheet\", {\r\n id: sheetId\r\n }, {\r\n title: text\r\n });\r\n }\r\n\r\n // toStatus is true or false\r\n archiveUpdate(sheetId, toStatus){\r\n this.addToStaging(sheetId);\r\n return LocalDB.update(\"sheet\", {\r\n id: sheetId\r\n }, {\r\n active: toStatus ? 1 : 0\r\n });\r\n }\r\n\r\n deleteSheet(sheetId){\r\n this.addToStaging(sheetId);\r\n return LocalDB.delete(\"sheet\", {\r\n id: sheetId\r\n }).then(sheet => {\r\n return LocalDB.delete(\"line\", {sheet_id: sheetId});\r\n });\r\n }\r\n\r\n truncateDb(){\r\n return LocalDB.truncate();\r\n }\r\n\r\n updatePreference(pref, to){\r\n this.setData(pref, to);\r\n console.log(pref +\": \", to);\r\n if(this.isOnline()){\r\n Github.pushPreference(pref, to).then(res => {\r\n console.log(\"Cloud Preference Update: \", pref, to);\r\n });\r\n }\r\n }\r\n\r\n addToStaging(sheetId){\r\n if(sheetId == \"flush\"){\r\n this.setData(\"staging\", \"\");\r\n console.log(\"staging is flushed\");\r\n this.event.emit(\"sync\", \"flushed\");\r\n }else{\r\n let currentStaging = this.getData(\"staging\") || \"\";\r\n if(!currentStaging.includes(`|${sheetId}|`)){\r\n if(currentStaging){\r\n currentStaging += `,|${sheetId}|`;\r\n }else{\r\n currentStaging = `|${sheetId}|`;\r\n }\r\n this.setData(\"staging\", currentStaging);\r\n this.event.emit(\"sync\", currentStaging.split(\",\").length);\r\n console.log(\"Needs to sync: \", currentStaging);\r\n }\r\n }\r\n }\r\n\r\n setGistId(gistId){\r\n this.user.gist_id = gistId;\r\n var url = URL + \"user/\" + (DEVELOPMENT ? \"development\": \"\");\r\n var formData = new FormData();\r\n formData.append('gist_id', gistId);\r\n\r\n return fetch(url, { method: 'POST', credentials: 'include', body: formData })\r\n .then(res => res.json());\r\n }\r\n\r\n setData(key, data){\r\n\t\treturn localStorage.setItem(key, data);\r\n }\r\n\r\n getData(key){\r\n return localStorage.getItem(key);\r\n }\r\n}\r\n\r\nconst _api = new API();\r\nexport default _api;\r\n","import React, { Component } from 'react';\r\nimport './style.css';\r\n\r\nimport API from '../../js/api';\r\nimport makeid from '../../js/makeid';\r\n\r\nclass App extends Component {\r\n\r\n state = {\r\n focused: false,\r\n pHeight: 0,\r\n text: this.props.children,\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({\r\n pHeight: this.refs._lineText.scrollHeight\r\n });\r\n\r\n window.addEventListener('resize', (event) => {\r\n this.handleChange();\r\n });\r\n\r\n window.addEventListener('beforeunload', (event) => {\r\n if(this.state.focused && this.props.children != this.state.text){\r\n // Cancel the close/exit event and save the changes on this line if there is any\r\n this.props.onBlur(this.state.text, this.props.id, this.props.index);\r\n event.preventDefault();\r\n // Chrome requires returnValue to be set\r\n event.returnValue = '';\r\n }\r\n });\r\n\r\n if(this.props.focusOnRender){\r\n let lineText = this.refs._lineText;\r\n let cursorPosition = this.props.cursorPosition == \"end\" ? this.state.text.length : this.props.cursorPosition;\r\n lineText.focus();\r\n lineText.selectionStart = cursorPosition;\r\n lineText.selectionEnd = cursorPosition;\r\n }\r\n }\r\n\r\n componentWillReceiveProps(newProps){\r\n if(newProps.focusOnRender){\r\n let lineText = this.refs._lineText;\r\n let cursorPosition = newProps.cursorPosition == \"end\" ? this.state.text.length : newProps.cursorPosition;\r\n lineText.focus();\r\n lineText.selectionStart = cursorPosition;\r\n lineText.selectionEnd = cursorPosition;\r\n }\r\n }\r\n\r\n getHeight(text){\r\n let tArea = document.getElementById(\"dummyTextarea\");\r\n tArea.value = text;\r\n return tArea.scrollHeight;\r\n }\r\n\r\n handleChange(e){\r\n if(e){\r\n this.setState({text: e.target.value});\r\n API.event.emit(\"lineChanged\", e.target.value);\r\n //.replace(/(\\r\\n|\\n|\\r)/gm,\"\")\r\n }\r\n if(this.refs._lineText){\r\n let renderedHeight = this.getHeight(this.refs._lineText.value);\r\n\r\n if(renderedHeight != this.state.pHeight){\r\n this.setState({pHeight: renderedHeight});\r\n }\r\n }\r\n }\r\n\r\n handlePaste(e){\r\n let pasted = (e.clipboardData || window.clipboardData).getData('text');\r\n if(pasted.includes(\"\\n\\r\")){\r\n let add = pasted.split(\"\\n\\r\")[0];\r\n if(add[add.length - 1] == \"\\r\" || add[add.length - 1] == \"\\n\"){\r\n add = add.substr(0, add.length-1)\r\n }\r\n\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n\r\n let topText = e.target.value.substr(0, selectionStart);\r\n let downText = e.target.value.substr(selectionEnd);\r\n this.setState({text: topText + add});\r\n setTimeout(() => {\r\n this.handleChange();\r\n }, 10);\r\n\r\n let restArray = pasted.split(\"\\n\\r\").slice(1);\r\n\r\n this.props.onPaste(this.props.id, restArray, this.props.index, downText);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n handleKeyDown(e){\r\n if(e.keyCode == 13){ // 13 = \"\\n\"\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n\r\n if(e.target.value == \"\"){\r\n this.props.onSplit(this.props.id, \"\", this.props.index);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n let newItemTest = e.target.value.substr(0, selectionStart).split(\"\\n\").pop();\r\n let rightOfCursor = e.target.value.substr(selectionStart).split(\"\\n\").slice(0, 1)[0];\r\n if(newItemTest.substr(0, 3) == \"\\t- \" && newItemTest != \"\\t- \"){\r\n let textString = e.target.value;\r\n let tailText = textString.substr(selectionEnd);\r\n if(tailText.substr(0, 1) == \" \"){\r\n // Space after the dash should merge\r\n tailText = tailText.substr(1);\r\n }\r\n\r\n this.setState({text: textString.substr(0, selectionStart) + '\\n\\t- ' + tailText});\r\n setTimeout(() => {\r\n this.refs._lineText.selectionStart = selectionStart + 4;\r\n this.refs._lineText.selectionEnd = selectionStart + 4;\r\n this.handleChange();\r\n }, 10);\r\n\r\n e.preventDefault();\r\n return false;\r\n }else if(newItemTest == \"\\t- \" && rightOfCursor == \"\"){\r\n let textString = e.target.value;\r\n this.setState({text: textString.substr(0, selectionStart - 4) + textString.substr(selectionEnd)});\r\n setTimeout(() => {\r\n this.refs._lineText.selectionStart = selectionStart - 3;\r\n this.refs._lineText.selectionEnd = selectionStart - 3;\r\n this.handleChange();\r\n }, 10);\r\n }else if(newItemTest == \"\\t- \" && rightOfCursor){\r\n\r\n let textString = e.target.value;\r\n this.setState({text: textString.substr(0, selectionStart - 3) + textString.substr(selectionEnd)});\r\n setTimeout(() => {\r\n this.refs._lineText.selectionStart = selectionStart - 3;\r\n this.refs._lineText.selectionEnd = selectionStart - 3;\r\n this.handleChange();\r\n }, 10);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n // Split the lines on double new line\r\n let ordinarySplit = e.target.value.substr(selectionStart-1, 1) == \"\\n\";\r\n let extraOrdinarySplit = e.target.value.substr(selectionStart, 1) == \"\\n\";\r\n if(ordinarySplit || extraOrdinarySplit){\r\n let nextLineText = e.target.value.substr(selectionEnd);\r\n\r\n if(ordinarySplit){\r\n this.setState({\r\n text: e.target.value.substr(0, selectionStart - 1)\r\n });\r\n this.props.onSplit(this.props.id, nextLineText, this.props.index);\r\n }else if(extraOrdinarySplit){\r\n this.setState({\r\n text: e.target.value.substr(0, selectionStart)\r\n });\r\n this.props.onSplit(this.props.id, nextLineText.substr(1), this.props.index);\r\n }\r\n\r\n setTimeout(() => {\r\n this.handleChange();\r\n }, 10);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n }else if(e.keyCode == 8){\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n if(selectionStart == 0 && selectionEnd == 0 && this.props.index !== 0){\r\n\r\n this.props.onConcat(this.props.id, this.state.text, this.props.index, \"up\");\r\n e.preventDefault();\r\n return false;\r\n }else{\r\n let prevText = this.state.text.substr(selectionStart - 3, 3);\r\n if(prevText == \"\\t- \"){\r\n let textString = this.state.text;\r\n\r\n this.setState({text: textString.substr(0, selectionStart - 4) + textString.substr(selectionEnd)});\r\n setTimeout(() => {\r\n this.refs._lineText.selectionStart = selectionStart - 4;\r\n this.refs._lineText.selectionEnd = selectionStart - 4;\r\n this.handleChange();\r\n }, 10);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n }else if(e.keyCode == 46){\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n let currentTextLength = this.state.text.length;\r\n if(selectionStart == currentTextLength && selectionEnd == currentTextLength){\r\n\r\n this.props.onConcat(this.props.id, this.state.text, this.props.index, \"down\");\r\n e.preventDefault();\r\n return false;\r\n }\r\n }else if(e.keyCode == 39 || e.keyCode == 40){ // 37 38 = \"down\" \"right\"\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n let textLength = this.state.text.length;\r\n\r\n if(selectionStart == textLength && selectionEnd == textLength){\r\n this.props.onCursor(e.keyCode, this.props.id, this.props.index);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n }else if(e.keyCode == 37 || e.keyCode == 38){ // 37 38 = \"up\" \"left\"\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n\r\n if(selectionStart == 0 && selectionEnd == 0){\r\n this.props.onCursor(e.keyCode, this.props.id, this.props.index);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n }else if(e.keyCode == 9){ // 0 == \"\\t\"\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n let textString = this.state.text;\r\n textString = textString.substr(0, selectionStart) + '\\t' + textString.substr(selectionEnd);\r\n this.setState({text: textString});\r\n\r\n setTimeout(() => {\r\n this.refs._lineText.selectionStart = selectionStart + 1;\r\n this.refs._lineText.selectionEnd = selectionStart + 1;\r\n }, 10);\r\n\r\n e.preventDefault();\r\n return false;\r\n\r\n }else if(e.keyCode == 189){ // 189 = \"-\"\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n let textString = this.state.text;\r\n let prevText = this.state.text.substr(selectionStart - 1, 1);\r\n\r\n if(prevText === '\\n' || selectionStart === 0){\r\n let tailText = textString.substr(selectionEnd);\r\n if(tailText.substr(0, 1) == \" \"){\r\n // Space after the dash should merge\r\n tailText = tailText.substr(1);\r\n }\r\n this.setState({text: textString.substr(0, selectionStart) + '\\t- ' + tailText});\r\n setTimeout(() => {\r\n this.refs._lineText.selectionStart = selectionStart + 3;\r\n this.refs._lineText.selectionEnd = selectionStart + 3;\r\n }, 10);\r\n e.preventDefault();\r\n return false;\r\n }\r\n }else if(e.keyCode == 32){ // 32 = \" \"\r\n // Space after the dash should merge\r\n let selectionStart = this.refs._lineText.selectionStart;\r\n let selectionEnd = this.refs._lineText.selectionEnd;\r\n let prevText = this.state.text.substr(selectionStart - 2, 2);\r\n\r\n if(prevText === '- '){\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n handleFocus(){\r\n this.setState({focused: true});\r\n let pos = document.getElementById(\"content\").scrollTop + this.refs._lineText.getBoundingClientRect().top;\r\n API.event.emit(\"lineFocused\", {text: this.state.text, lineId: this.props.id, index: this.props.index, position: pos});\r\n }\r\n\r\n handleBlur(){\r\n this.setState({focused: false});\r\n this.props.onBlur(this.state.text, this.props.id, this.props.index);\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
Discover and add tools to customise your note taking experience.
\r\n {\r\n addons.map((addon, i) => {\r\n return (\r\n{quote.quote}
\r\n \r\n {quote.person}\r\nSee and manage your old and not-so-popular sheets.
\r\nYou can push changes to your Gist and sync your data.
\r\n\r\nSearch for a term in title or content of your notes.
\r\nManage your preferences and access your account information.
\r\nChoose your prefered currency that will be used for addons.
\r\n \r\n <>\r\nIn case of data loss, you can use your Gist revisions and see your change history.
\r\n {API.user &&\r\n \r\nMemo App v{API.version} {API.version[0] == \"0\" && \"Beta\"}
\r\n\r\n You are in offline mode.\r\n
\r\n \r\n You can login the app when you have internet.
\r\n window.location.reload()}>Try to login?\r\n \r\n
See and manage your most recently accessed sheets.
\r\n{this.renderLinks(this.state.text)}
\r\nYou might also need to sign off from GitHub to login with another Account.
\r\n }\r\n >\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React, { Component } from 'react';\r\nimport './App.css';\r\n\r\nimport Line from './components/Line';\r\nimport Title from './components/Title';\r\nimport Toolbar from './components/Toolbar';\r\nimport Handy from './components/Handy';\r\nimport Loading from './components/Loading';\r\nimport Cover from './components/Cover';\r\nimport AppBar from './components/AppBar';\r\nimport Login from './components/Login';\r\n\r\nimport makeid from './js/makeid';\r\n\r\nimport API from './js/api';\r\n\r\nclass App extends Component {\r\n\r\n state = {\r\n lines: \"\",\r\n focusIndex: null,\r\n cursorPosition: 0,\r\n logged: false,\r\n forceLogout: false,\r\n theme: API.getData(\"theme\") || \"light\"\r\n };\r\n\r\n componentDidMount(){\r\n\r\n window.addEventListener(\"keydown\", (e) => {\r\n if (e.keyCode === 114 || ((e.ctrlKey || e.metaKey) && e.keyCode === 70)) {\r\n API.event.emit(\"toggle\", \"search\");\r\n e.preventDefault();\r\n }else if ((e.ctrlKey || e.metaKey) && e.keyCode === 188) {\r\n API.event.emit(\"toggle\", \"settings\");\r\n e.preventDefault();\r\n }else if ((e.ctrlKey || e.metaKey) && e.keyCode === 83) {\r\n API.event.emit(\"toggle\", \"sheets\");\r\n e.preventDefault();\r\n }else if ((e.ctrlKey || e.metaKey) && e.keyCode === 85) {\r\n API.event.emit(\"toggle\", \"archives\");\r\n e.preventDefault();\r\n }else if ((e.ctrlKey || e.metaKey) && e.keyCode === 69) {\r\n API.event.emit(\"toggle\", \"addons\");\r\n e.preventDefault();\r\n }else if(e.keyCode === 27){\r\n API.event.emit(\"toggle\", false);\r\n e.preventDefault();\r\n }\r\n })\r\n\r\n API.event.on(\"login\", (status) => {\r\n this.setState({logged: status, forceLogout: (status === false)});\r\n })\r\n\r\n API.event.on(\"theme\", (newTheme) => {\r\n if(this.state.theme != newTheme){\r\n this.setState({theme: newTheme});\r\n API.updatePreference(\"theme\", newTheme);\r\n }\r\n })\r\n\r\n API.event.on(\"sheet\", (id) => {\r\n this.setState({sheetLoading: true, focusIndex: null});\r\n API.getSheet(id).then((sheet) => {\r\n if(sheet == \"NO_AUTH\"){\r\n console.log(\"NO_AUTH, retrying initiation\");\r\n API.login(\"refresh\", id);\r\n }else{\r\n document.title = sheet.title + \" | Memo\";\r\n this.setState({\r\n lines: sheet.lines,\r\n sheet: {\r\n id: sheet.id,\r\n title: sheet.title,\r\n active: sheet.active\r\n }\r\n });\r\n\r\n this.refs._textScroller.scrollTop = 0;\r\n setTimeout(() => {\r\n this.setState({\r\n sheetLoading: false\r\n });\r\n }, 50)\r\n }\r\n });\r\n API.event.emit(\"toggle\", false);\r\n })\r\n }\r\n\r\n getDateIdentifier(date){\r\n let today = new Date();\r\n let yesterday = new Date();\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n today = String(today.getDate()).padStart(2, '0') + \"/\" + String(today.getMonth() + 1).padStart(2, '0') + \"/\" + today.getFullYear();\r\n yesterday = String(yesterday.getDate()).padStart(2, '0') + \"/\" + String(yesterday.getMonth() + 1).padStart(2, '0') + \"/\" + yesterday.getFullYear();\r\n\r\n if(date == today) {\r\n return \"· Today\";\r\n }else if(date == yesterday){\r\n return \"· Yesterday\"\r\n }else{\r\n return \"\";\r\n }\r\n }\r\n\r\n handleConcat(id, text, i, from){\r\n let lines = this.state.lines;\r\n let cursorPosition = 0;\r\n\r\n if((lines.length == i + 1) && from == \"down\"){\r\n return null;\r\n }\r\n\r\n let lineIndex = from == \"up\" ? i-1 : i+1;\r\n let focusIndex = from == \"up\" ? i-1 : i;\r\n if(lines[lineIndex]){\r\n API.updateLine(id, i, \"\", \"rm\");\r\n cursorPosition = lines[focusIndex].text.length;\r\n\r\n if(from == \"up\"){\r\n lines[lineIndex].text = lines[lineIndex].text + text;\r\n }else if(from == \"down\"){\r\n lines[lineIndex].text = text + lines[lineIndex].text;\r\n }\r\n lines[lineIndex].old_key = lines[lineIndex].line_key;\r\n lines[lineIndex].line_key = makeid(5);\r\n }\r\n lines.splice(i, 1);\r\n this.setState({focusIndex, cursorPosition, lines});\r\n }\r\n\r\n handleSplit(id, text, i){\r\n let keyToSplit = id.split(\"-\")[1];\r\n let lines = this.state.lines;\r\n let date = id.split(\"-\")[0].split(\"!\")[1];\r\n\r\n if(lines.length == i+1){\r\n let today = new Date();\r\n today = String(today.getDate()).padStart(2, '0') + \"/\" + String(today.getMonth() + 1).padStart(2, '0') + \"/\" + today.getFullYear();\r\n date = today\r\n }\r\n\r\n let newLineKey = makeid(5);\r\n lines.splice(i+1, 0, {\r\n \"line_key\": newLineKey,\r\n date,\r\n text\r\n });\r\n this.setState({focusIndex: i+1, cursorPosition: 0, lines});\r\n API.updateLine(id.split(\"!\")[0]+\"!\"+date+\"-\"+newLineKey, i+1, text);\r\n }\r\n\r\n async handlePaste(id, textArray, index, downText){\r\n let keyToSplit = id.split(\"-\")[1];\r\n let lines = this.state.lines;\r\n let date = id.split(\"-\")[0].split(\"!\")[1];\r\n let cursorPosition = \"end\";\r\n\r\n for (var i = 0; i < textArray.length; i++) {\r\n let text = textArray[i].replace(/^\\s+|\\s+$/g, \"\");\r\n if(downText){\r\n if(i == textArray.length - 1){\r\n cursorPosition = text.length;\r\n text = text + downText;\r\n }\r\n }\r\n let newLineKey = makeid(5);\r\n index = index + 1;\r\n lines.splice(index+1, 0, {\r\n \"line_key\": newLineKey,\r\n date,\r\n text\r\n });\r\n\r\n await API.updateLine(id.split(\"!\")[0]+\"!\"+date+\"-\"+newLineKey, index, text);\r\n }\r\n this.setState({focusIndex: index, cursorPosition, lines});\r\n }\r\n\r\n handleCursor(direction, id, i){\r\n let newIndex = 0;\r\n let cursorPosition = 0;\r\n if(direction == 37 || direction == 38){\r\n newIndex = i-1;\r\n }else if(direction == 39 || direction == 40){\r\n newIndex = i+1;\r\n }\r\n\r\n if(direction == 37 || ((direction == 40 || direction == 38) && false)){\r\n cursorPosition = \"end\";\r\n }\r\n\r\n if(i == 0 && (direction == 37 || direction == 38)){\r\n newIndex = \"title\";\r\n }\r\n\r\n this.setState({focusIndex: newIndex, cursorPosition});\r\n }\r\n\r\n handleBlur(text, lineId, i){\r\n let lines = this.state.lines;\r\n\r\n if(lines[i].text != text || lines[i].old_key){\r\n if(lines[i].old_key){\r\n API.updateLine(lineId, i, text, \"key\", lines[i].old_key);\r\n lines[i].old_key = \"\";\r\n }else{\r\n API.updateLine(lineId, i, text);\r\n }\r\n lines[i].text = text;\r\n this.setState({lines, focusIndex: null});\r\n }\r\n }\r\n\r\n handleTitleDown(){\r\n this.setState({focusIndex: 0, cursorPosition: 0});\r\n }\r\n\r\n focusLast(){\r\n this.setState({focusIndex: this.state.lines.length - 1, cursorPosition: \"end\"});\r\n }\r\n\r\n renderLines(lines){\r\n let lineArray = [];\r\n let prevDate = \"\";\r\n\r\n lines.forEach((l, i) => {\r\n if(prevDate !== l.date){\r\n lineArray.push(\r\n