-
Notifications
You must be signed in to change notification settings - Fork 0
/
map.json
1 lines (1 loc) · 24.2 KB
/
map.json
1
{"version":3,"file":"bundle.js","sources":["/Users/obie/Projects/ahhlife.com/node_modules/browserify/node_modules/browser-pack/_prelude.js","./app/application.js","/Users/obie/Projects/ahhlife.com/app/shared/auth.js","/Users/obie/Projects/ahhlife.com/app/shared/journal-service.js","/Users/obie/Projects/ahhlife.com/app/util/reverse.js","/Users/obie/Projects/ahhlife.com/public/pages/past.html","/Users/obie/Projects/ahhlife.com/public/pages/write.html","/Users/obie/Projects/ahhlife.com/public/pages/settings.html","/Users/obie/Projects/ahhlife.com/public/faq/faq.html","/Users/obie/Projects/ahhlife.com/public/privacy/privacy.html","/Users/obie/Projects/ahhlife.com/public/404.html"],"names":["buildAhhLifeUserObjectFromGoogle","authData","uid","name","google","displayName","email","accessToken","firstName","cachedUserProfile","given_name","lastName","family_name","picture","angular","module","directive","restrict","controller","$rootScope","$scope","$firebase","$cookies","rootRef","Firebase","usersRef","child","welcomeRef","currentUser","onAuth","window","location","pathname","console","log","user","active","userRef","on","snap","val","set","created","ServerValue","TIMESTAMP","analytics","track","onDisconnect","identify","login","options","remember","scope","authWithOAuthRedirect","err","logout","unauth","factory","journalsRef","settingsRef","service","draft","months","deleteEntry","entries","entry","this","$id","remove","$remove","deleteAccount","getMonthEntries","id","$asArray","save","timestamp","currentMonthKey","moment","format","currentMonth","self","$add","then","ref","toString","$set","$asObject","$loaded","$broadcast","settings","filter","toArray","list","k","out","isArray","isObject","push","items","slice","reverse","exports"],"mappings":"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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","require(\"./shared/auth.js\"),require(\"./shared/journal-service.js\"),require(\"./util/reverse.js\"),window.AhhLife=angular.module(\"AhhLife\",[\"ALAuth\",\"ALJournalService\",\"ReverseFilter\",\"angularMoment\",\"ngAnimate\",\"ngMaterial\",\"ngRoute\",\"ui.bootstrap\"]),AhhLife.run([\"$rootScope\",function(t){t._=window._,t.moment=window.moment}]),AhhLife.config([\"$locationProvider\",\"$routeProvider\",function(t,e){t.html5Mode(!0),e.when(\"/journal\",{template:require(\"../public/pages/past.html\")}).when(\"/journal/m/:mid\",{controller:\"PastController\",template:require(\"../public/pages/past.html\")}).when(\"/journal/write\",{template:require(\"../public/pages/write.html\")}).when(\"/journal/settings\",{template:require(\"../public/pages/settings.html\")}).when(\"/faq\",{template:require(\"../public/faq/faq.html\")}).when(\"/privacy\",{template:require(\"../public/privacy/privacy.html\")}).otherwise({template:require(\"../public/404.html\")})}]),AhhLife.directive(\"ahhlife\",function(){return{restrict:\"A\",controller:[\"$scope\",\"$location\",\"$materialSidenav\",\"$materialToast\",\"JournalService\",function(t,e,n,a,o){t.slots=[moment().hour(18).minute(0),moment().hour(19).minute(0),moment().hour(20).minute(0),moment().hour(21).minute(0),moment().hour(22).minute(0),moment().hour(23).minute(0),moment().hour(0).minute(0),moment().hour(1).minute(0),moment().hour(2).minute(0),moment().hour(6).minute(0),moment().hour(9).minute(0),moment().hour(12).minute(0)],t.openLeftMenu=function(){n(\"left\").toggle()},t.deleteEntry=function(t,e){o.deleteEntry(t,e).then(function(){a({template:'<material-toast class=\"material-theme-red\">Entry deleted.</material-toast>',duration:2e3})})},t.deleteAccount=function(){a({template:'<material-toast class=\"material-theme-red\">Deleting your account. Standby.</material-toast>',duration:5e3}),o.deleteAccount()},t.loadEntries=function(e){t.entries=o.getMonthEntries(e),a({template:\"<material-toast>Loading entries for \"+e+\"</material-toast>\",duration:2e3}),n(\"left\").close(),analytics.track(\"Loaded a Month\",{month:e})},t.saveSettings=function(e){t.settings.$priority=String(e),t.settings.$save().then(function(){a({template:\"<material-toast>Saved settings.</material-toast>\",duration:2e3})}),analytics.track(\"Updated Settings\")},t.$on(\"AhhLife:draftLoaded\",function(e,n){n.$bindTo(t,\"draft\").then(function(){a({template:\"<material-toast>Loaded saved draft.</material-toast>\",duration:1e3})})}),t.$on(\"AhhLife:monthsLoaded\",function(e,n){t.months=n,_.any(n)}),t.$on(\"AhhLife:settingsLoaded\",function(e,n){t.settings=n})}]}}),AhhLife.controller(\"PastController\",[\"$scope\",\"$routeParams\",function(t,e){console.log(\"PastController init\",e.mid),t.loadEntries(e.mid)}]),AhhLife.controller(\"WriteController\",[\"$scope\",\"$materialSidenav\",\"$materialToast\",\"JournalService\",function(t,e,n,a){e(\"left\").close(),$(\"textarea\")[0].focus(),t.save=function(){\"\"===this.draft.content?n({template:\"<material-toast>Hmm, maybe type something first?</material-toast>\",duration:2e3}):(a.save().then(function(){n({template:\"<material-toast>Entry saved to your journal.</material-toast>\",duration:2e3})}),analytics.track(\"Saved Entry via Web\"))}}]),window.escapeEmailAddress=function(t){return t?(t=t.toLowerCase(),t=t.replace(/\\./g,\",\")):!1};","angular.module(\"ALAuth\", ['firebase','ngCookies'])\n .directive('header', function() {\n return {\n restrict: 'E',\n controller: ['$rootScope', '$scope', '$firebase', '$cookies',\n function($rootScope, $scope, $firebase, $cookies) {\n var rootRef = new Firebase($cookies.rootRef);\n var usersRef = rootRef.child('users');\n var welcomeRef = rootRef.child('welcome');\n\n // Start with no user logged in\n $rootScope.currentUser = null;\n\n // Upon successful login, set the user object\n // happens automatically when rememberMe is enabled\n rootRef.onAuth(function(authData) {\n if(authData) {\n\n // todo: this is a brute force redirect after login\n // How can we do it within routing framework?\n if(window.location.pathname === \"/\") {\n window.location.pathname = \"/journal\";\n }\n\n console.log(\"auth: user is logged in\");\n var user = buildAhhLifeUserObjectFromGoogle(authData);\n\n // site presence\n user.active = true;\n\n var userRef = usersRef.child(user.uid);\n userRef.on('value', function(snap){\n if(snap.val()) {\n userRef.child('active').set(true);\n }\n else {\n user.created = Firebase.ServerValue.TIMESTAMP;\n userRef.set(user);\n welcomeRef.child(user.uid).set(user);\n analytics.track('Signup');\n }\n // set user to inactive on disconnect\n userRef.child('active').onDisconnect().set(false);\n });\n\n $rootScope.currentUser = user;\n\n analytics.identify(user.uid, {\n name: user.name,\n firstName: user.firstName,\n lastName: user.lastName,\n email: user.email\n });\n }\n else {\n // user is logged out\n console.log(\"auth: user is logged out\");\n $rootScope.currentUser = null;\n }\n });\n\n $scope.login = function() {\n analytics.track('Login');\n options = { remember: true, scope: \"email\" };\n rootRef.authWithOAuthRedirect(\"google\", function(err, authData) {\n if(err) {\n console.log('error logging in', err);\n } else {\n console.log('login successful');\n }\n }, options);\n }\n\n $scope.logout = function() {\n rootRef.unauth();\n window.location.pathname = \"/\";\n };\n }]\n }\n });\n\nfunction buildAhhLifeUserObjectFromGoogle(authData) {\n return {\n uid: authData.uid,\n name: authData.google.displayName,\n email: authData.google.email,\n accessToken: authData.google.accessToken,\n firstName: authData.google.cachedUserProfile.given_name,\n lastName: authData.google.cachedUserProfile.family_name,\n picture: authData.google.cachedUserProfile.picture\n }\n}\n","angular.module(\"ALJournalService\", ['firebase','ngCookies'])\n .factory('JournalService', ['$rootScope', '$firebase', '$cookies',\n function($rootScope, $firebase, $cookies) {\n var rootRef = new Firebase($cookies.rootRef);\n var journalsRef = rootRef.child('journals');\n var settingsRef = rootRef.child('settings');\n var usersRef = rootRef.child('users');\n\n var service = {\n // initialized on login below\n draft: null,\n months: null,\n user: null,\n\n deleteEntry: function(entries, entry, cb) {\n usersRef.child(this.user.uid).child('entries').child(entry.$id).remove();\n return entries.$remove(entry);\n },\n\n deleteAccount: function() {\n analytics.track('Account Deletion');\n journalsRef.child(this.user.uid).remove();\n settingsRef.child(this.user.uid).remove();\n usersRef.child(this.user.uid).remove(function() {\n rootRef.unauth();\n window.location.pathname = \"/\";\n });\n },\n\n getMonthEntries: function(id) {\n return $firebase(journalsRef.child(this.user.uid).child('months').child(id)).$asArray();\n },\n\n save: function() {\n this.draft.timestamp = Firebase.ServerValue.TIMESTAMP;\n var currentMonthKey = moment().format(\"MMM-YYYY\")\n var currentMonth = $firebase(journalsRef.child(this.user.uid).child('months').child(currentMonthKey)).$asArray();\n var self = this;\n return currentMonth.$add(this.draft).then(function(ref){\n // the entries index on user record allows us to pull random entries later\n usersRef.child(self.user.uid).child('entries').child(ref.name()).set(ref.toString());\n // clear the draft\n $firebase(journalsRef.child(self.user.uid).child('draft/content')).$set(\"\");\n });\n }\n }\n\n rootRef.onAuth(function(authData) {\n if(authData) {\n console.log(\"journal-service: user is logged in\");\n service.user = authData;\n\n $firebase(journalsRef.child(authData.uid).child('draft')).$asObject().$loaded().then(function(draft){\n service.draft = draft;\n $rootScope.$broadcast(\"AhhLife:draftLoaded\", draft);\n });\n\n $firebase(journalsRef.child(authData.uid).child('months')).$asArray().$loaded().then(function(months){\n service.months = months;\n $rootScope.$broadcast(\"AhhLife:monthsLoaded\", months);\n });\n\n $firebase(settingsRef.child(authData.uid)).$asObject().$loaded().then(function(settings){\n $rootScope.$broadcast(\"AhhLife:settingsLoaded\", settings);\n });\n }\n else {\n console.log(\"journal-service: user is logged out\");\n service.draft = null;\n service.months = null;\n service.user = null;\n }\n });\n\n return service;\n }]);\n","angular.module(\"ReverseFilter\",[])\n .filter('reverse', function() {\n function toArray(list) {\n var k, out = [];\n if( list ) {\n if( angular.isArray(list) ) {\n out = list;\n }\n else if( typeof(list) === 'object' ) {\n for (k in list) {\n if (angular.isObject(list[k])) { out.push(list[k]); }\n }\n }\n }\n return out;\n }\n return function(items) {\n return toArray(items).slice().reverse();\n };\n});\n","module.exports = \"<h1>My Journal</h1><div ng-if=\\\"currentUser && !_.any(months)\\\" class=\\\"row\\\"><div class=\\\"col-md-5\\\"><h2>Time to check your inbox</h2><p>We'll send you a similar message each evening. All you have to do is reply to it and whatever you send will be added to your journal automatically.</p><p>If you would rather update your journal automatically, you can also use the WRITE link at the top of the screen.</p></div><div class=\\\"col-md-7\\\"><div style=\\\"margin-top: 20px\\\" class=\\\"email\\\"><p>From: AhhLife</p><p>To: me</p><p>Subject: Thanks for signing up</p><hr/><p>Just reply to this email with your entry.</p><p>Write about anything from today - like what you did, something you're feeling, or a conversation you had with a friend. And feel free to keep it short. A quick sentence is just fine! But if you want to write more, you can go ahead and write a longer entry too.</p><p>After you reply to this email, your entry will show up here: http://ahhlife.com/journal</p></div></div></div><div ng-if=\\\"_.any(entries)\\\" class=\\\"row\\\"><div class=\\\"col-md-9 col-md-offset-1\\\"><div ng-repeat=\\\"(idx, entry) in entries | reverse\\\" class=\\\"entry material-whiteframe-z1\\\"><div layout=\\\"horizontal\\\" class=\\\"heading\\\"><h2>{{ moment(entry.timestamp).format(\\\"MMMM Do YYYY\\\") }}</h2><div class=\\\"entry-actions\\\"><a ng-click=\\\"deleteEntry(entries, entry)\\\" title=\\\"Delete this entry permanently.\\\"><i class=\\\"fa fa-trash\\\"></i></a></div></div><h3>{{ moment(entry.timestamp).format(\\\"dddd\\\") }}</h3><div class=\\\"text\\\"><p>{{ entry.content }}</p></div></div></div></div><div ng-if=\\\"_.any(months) && !_.any(entries)\\\" class=\\\"row\\\"><div class=\\\"col-md-10 col-md-offset-1\\\"><div class=\\\"entry material-whiteframe-z1\\\"><h3>No month selected</h3></div></div></div>\";\n","module.exports = \"<h1>Write</h1><div ng-controller=\\\"WriteController\\\" class=\\\"row\\\"><div class=\\\"col-md-9\\\"><form class=\\\"new-entry\\\"><textarea ng-model=\\\"draft.content\\\" ng-model-options=\\\"{ updateOn: 'default blur', debounce: {'default': 500, 'blur': 0} }\\\" class=\\\"material-whiteframe-z3\\\"></textarea><br/><material-button ng-click=\\\"save()\\\" class=\\\"material-button-raised\\\">Save to my Journal</material-button></form></div><div class=\\\"col-md-3\\\"><h3 class=\\\"text-center\\\">Tips</h3><p>The easiest way to write entries is by replying to the emails we send you.</p><hr/><p>Any text you enter here is automatically saved as a draft in case you want to write a little then come back later.</p></div></div>\";\n","module.exports = \"<h1>Settings</h1><div class=\\\"row\\\"><div class=\\\"col-md-7\\\"><material-content id=\\\"settings\\\"><section><h3>What time should we email you every day?</h3><select ng-model=\\\"settings.timeslot\\\"><option ng-repeat=\\\"hour in slots\\\" value=\\\"{{hour.utc().format('H')}}\\\">{{ hour.local().format('h:mm a') }}</option></select></section><section><h3>Should the email include a past entry?</h3><select ng-model=\\\"settings.includePast\\\"><option value=\\\"true\\\">Yes</option><option value=\\\"false\\\">No</option></select></section><section><material-button ng-click=\\\"saveSettings(settings.timeslot)\\\" class=\\\"material-button-raised material-button-colored\\\">Save</material-button></section></material-content></div><div class=\\\"col-md-5\\\"><h3>Account Deletion</h3><p>Warning: deleting your account will destroy all journal entries and log you out. There is <strong>no undo</strong> and you will not be able to recover your entries.</p><p><material-button ng-click=\\\"deleteAccount()\\\" class=\\\"material-button-raised material-theme-red\\\">I understand, DELETE MY ACCOUNT</material-button></p></div></div>\";\n","module.exports = \"<div class=\\\"backdrop material-whiteframe-z3\\\"><h1 class=\\\"h1\\\">FAQ</h1><p class=\\\"subtext\\\">(Frequently Asked Questions)</p><h2 class=\\\"h3\\\">Is this just a blatant copy of OhLife?</h2><p>It's the same basic idea as OhLife, but on a modern tech platform that we think is a lot more cost-efficient and easy to maintain than how (we suspect) OhLife was put together. And there is absolutely no venture capital or investor backing for this project, so there is no pressure to make it hugely profitable. That means we don't have to worry about <a href=\\\"https://ohlife.com/shutdown\\\" target=\\\"_new\\\">suddenly shutting down</a> the way that OhLife did.</p><h2 class=\\\"h3\\\">Is there a mobile app?</h2><p>No and we don't anticipate a need for one in the future. This website is optimized to work on mobile phones, and you should be using it via email anyway.</p><h2 class=\\\"h3\\\">Can I add an entry via your website?</h2><p>Yep, login and click on WRITE to get a new entry form. Drafts are automatically saved for you.</p><h2 class=\\\"h3\\\">Can I edit or delete an old entry via the website?</h2><p>Editing old entries is coming soon. You can delete an entry in your journal using the trash icon. Note: deletion of entries is permanent.</p><h2 class=\\\"h3\\\">Can I import my old OhLife entries?</h2><p>That feature is coming soon.</p><h2 class=\\\"h3\\\">I don't have a Google Account (or don't want to use mine) to log in to your site. Can I use something else?</h2><p>Sorry, at the moment we only work in conjunction with a Google account. This dramatically simplifies the way that the site is written and helps us with security.</p><h2 class=\\\"h3\\\">I'm new and didn't get my email tonight. How come?</h2><p>Depending on what time you signed up, things sometimes work differently on your first day. We always send you a welcome email right when you sign up. After your first day, you'll always get your email at night based on your <a href=\\\"/journal/settings\\\">settings</a>.</p><h2 class=\\\"h3\\\">Can I reply to an email more than once?</h2><p>Yes, reply as many times as you want and an entry will be added for each message you send us.</p><h2 class=\\\"h3\\\">Why is my formatting gone?</h2><p>Plain text entries will always be free. However, we plan to offer the ability to send formatted email (meaning different colors and fonts, etc.) as a premium feature. We promise it won't cost too much, and we'll let you know when that feature is ready.</p><h2 class=\\\"h3\\\">Can I attach photos/documents to my entry? Where did my attachment go?</h2><p>Right now we only support plain-text journal entries. We're planning to add the ability to attach photos and other documents to your journal entries via email as a premium feature in a future release.</p><h2 class=\\\"h3\\\">How do I download my journal?</h2><p>Right now we haven't built the export feature yet, but we plan to do so soon.</p><h2 class=\\\"h3\\\">How do I delete my account.</h2><p>There is a red button in Account Settings that will let you delete your account and wipe all of your data from our server.</p><h2 class=\\\"h3\\\">Who runs this thing? Why should I trust you?</h2><p>AhhLife is built by the same team that runs <a href=\\\"http://dueprops.com\\\" target=\\\"_new\\\">DueProps</a>, amongst other things. Right now we're doing this as a labor of love, because it doesn't really cost that much. However, we have plans for modestly priced premium accounts that will allow rich-text entries and photo attachments. We think the revenue from those plans will defray server costs easily.</p><h2 class=\\\"h3\\\">Any more Questions?</h2><p>Please send us an email at [email protected]. We're happy to help out and answer any of your questions.</p></div>\";\n","module.exports = \"<div class=\\\"backdrop material-whiteframe-z3\\\"><h1 class=\\\"h1\\\">Privacy Policy</h1><p class=\\\"subtext\\\">We take your privacy very seriously</p><p>We believe in protecting your information the same way we want ours protected. This Privacy Policy outlines how we treat your information.</p><h2>Private Entries</h2><p>Your journal entries are private. The only way you can access them is by logging into your account, or by our nightly emails that are sent to your email address only.</p><p>There's no way to share your entries. We don't have any integration with Twitter or Facebook, there's no way to make an entry public, and your entries are not searchable by Google. OhLife is strictly a private place for you to read and write about how your days went.</p><h2>Information Collected</h2><p>We only collect information needed in order for you to use the service (basically just your name and email, which we get from Google OAuth), plus a small amount of activity data that lets us analyze and improve the way the site works (via segment.io.) Your journal entries are never shared with or sold to any third parties.</p><h2>Test Run</h2><p>If you're unhappy with the service for any reason, you can delete your account in account settings. This will permanently delete your account and all of your entries from our server.</p><h2>Privacy Policy Changes</h2><p>We may make changes to our Privacy Policy at some point, but probably not. Just in case we do, you should know that the new Privacy Policy will be posted on this page and you will receive an email letting you know about the change.</p><h2>Questions?</h2><p>Please send us an email at [email protected]. We're happy to help out and answer any of your questions.</p></div>\";\n","module.exports = \"<h1 class=\\\"h1\\\">Not Found</h1><p class=\\\"subtext\\\">AhhLife is a personal journal that you'll love to use</p>\";\n"]}