├── .gitignore ├── README.md ├── package.json └── snapchap ├── .bowerrc ├── .editorconfig ├── .gitignore ├── .io-config.json ├── AwsConfig.json ├── Procfile ├── bower.json ├── config.xml ├── db ├── accept_friendship.sql ├── compare_password.sql ├── create_user.sql ├── delete_friendship.sql ├── delete_message.sql ├── get_message.sql ├── get_message_ids.sql ├── get_pending_friend_requests.sql ├── get_user_friends.sql ├── get_user_info.sql ├── search_users.sql ├── send_request.sql ├── update_birthday.sql ├── update_email.sql ├── update_first_name.sql ├── update_last_name.sql ├── update_name.sql ├── update_password.sql ├── update_requests.sql ├── upload_message.sql └── upload_picture_message.sql ├── gulpfile.js ├── hooks ├── README.md └── after_prepare │ └── 010_add_platform_class.js ├── ionic.config.json ├── package.json ├── resources ├── android │ ├── icon │ │ ├── drawable-hdpi-icon.png │ │ ├── drawable-ldpi-icon.png │ │ ├── drawable-mdpi-icon.png │ │ ├── drawable-xhdpi-icon.png │ │ ├── drawable-xxhdpi-icon.png │ │ └── drawable-xxxhdpi-icon.png │ └── splash │ │ ├── drawable-land-hdpi-screen.png │ │ ├── drawable-land-ldpi-screen.png │ │ ├── drawable-land-mdpi-screen.png │ │ ├── drawable-land-xhdpi-screen.png │ │ ├── drawable-land-xxhdpi-screen.png │ │ ├── drawable-land-xxxhdpi-screen.png │ │ ├── drawable-port-hdpi-screen.png │ │ ├── drawable-port-ldpi-screen.png │ │ ├── drawable-port-mdpi-screen.png │ │ ├── drawable-port-xhdpi-screen.png │ │ ├── drawable-port-xxhdpi-screen.png │ │ └── drawable-port-xxxhdpi-screen.png ├── icon.png ├── ios │ ├── icon │ │ ├── icon-40.png │ │ ├── icon-40@2x.png │ │ ├── icon-50.png │ │ ├── icon-50@2x.png │ │ ├── icon-60.png │ │ ├── icon-60@2x.png │ │ ├── icon-60@3x.png │ │ ├── icon-72.png │ │ ├── icon-72@2x.png │ │ ├── icon-76.png │ │ ├── icon-76@2x.png │ │ ├── icon-small.png │ │ ├── icon-small@2x.png │ │ ├── icon-small@3x.png │ │ ├── icon.png │ │ └── icon@2x.png │ └── splash │ │ ├── Default-568h@2x~iphone.png │ │ ├── Default-667h.png │ │ ├── Default-736h.png │ │ ├── Default-Landscape-736h.png │ │ ├── Default-Landscape@2x~ipad.png │ │ ├── Default-Landscape~ipad.png │ │ ├── Default-Portrait@2x~ipad.png │ │ ├── Default-Portrait~ipad.png │ │ ├── Default@2x~iphone.png │ │ └── Default~iphone.png └── splash.png ├── scss └── ionic.app.scss ├── server.js ├── serverControl.js └── www ├── app ├── app.js ├── components │ ├── addFriends │ │ ├── addFriends.css │ │ ├── addFriends.html │ │ └── addFriendsCtrl.js │ ├── addUsername │ │ ├── addUsername.css │ │ ├── addUsername.html │ │ └── addUsernameCtrl.js │ ├── addedMe │ │ ├── addedMe.css │ │ ├── addedMe.html │ │ └── addedMeCtrl.js │ ├── birthday │ │ ├── birthday.css │ │ ├── birthday.html │ │ └── birthdayCtrl.js │ ├── camera │ │ ├── camera.css │ │ ├── camera.html │ │ └── cameraCtrl.js │ ├── chat │ │ ├── chat.css │ │ ├── chat.html │ │ └── chatCtrl.js │ ├── confirmPassword │ │ ├── confirmPassword.css │ │ ├── confirmPassword.html │ │ └── confirmPasswordCtrl.js │ ├── editMessage │ │ ├── editMessage.css │ │ ├── editMessage.html │ │ └── editMessageCtrl.js │ ├── email │ │ ├── email.css │ │ ├── email.html │ │ └── emailCtrl.js │ ├── logIn │ │ ├── logIn.css │ │ ├── logIn.html │ │ └── logInCtrl.js │ ├── logInSignUp │ │ ├── logInSignUp.css │ │ ├── logInSignUp.html │ │ └── logInSignUpCtrl.js │ ├── myFriends │ │ ├── myFriends.css │ │ ├── myFriends.html │ │ └── myFriendsCtrl.js │ ├── name │ │ ├── name.css │ │ ├── name.html │ │ └── nameCtrl.js │ ├── nav │ │ ├── nav.css │ │ ├── nav.html │ │ └── navCtrl.js │ ├── newPassword │ │ ├── newPassword.css │ │ ├── newPassword.html │ │ └── newPasswordCtrl.js │ ├── password │ │ ├── password.css │ │ ├── password.html │ │ └── passwordCtrl.js │ ├── profile │ │ ├── profile.css │ │ ├── profile.html │ │ └── profileCtrl.js │ ├── sendTo │ │ ├── sendTo.css │ │ ├── sendTo.html │ │ └── sendToCtrl.js │ ├── settings │ │ ├── settings.css │ │ ├── settings.html │ │ └── settingsCtrl.js │ ├── signUp │ │ ├── signUp-email │ │ │ ├── signUp-email.css │ │ │ ├── signUp-email.html │ │ │ └── signUp-emailCtrl.js │ │ ├── signUp-name │ │ │ ├── signUp-name.css │ │ │ ├── signUp-name.html │ │ │ └── signUp-nameCtrl.js │ │ ├── signUp-password │ │ │ ├── signUp-password.css │ │ │ ├── signUp-password.html │ │ │ └── signUp-passwordCtrl.js │ │ ├── signUp-username │ │ │ ├── signUp-username.css │ │ │ ├── signUp-username.html │ │ │ └── signUp-usernameCtrl.js │ │ ├── signUp.css │ │ ├── signUp.html │ │ └── signUpCtrl.js │ └── watchMessages │ │ ├── watchMessages.html │ │ └── watchMessagesCtrl.js ├── directives │ ├── animateChattyNav.js │ └── animateProfileNav.js ├── mainCtrl.js ├── ng-cordova.min.js └── services │ ├── mainService.js │ └── tempService.js ├── css ├── ionic.app.css ├── ionic.app.min.css └── www │ ├── css │ └── main.css │ └── main.css ├── img ├── 9000.png ├── 9000300.png ├── icon │ ├── arrow-blue.png │ ├── arrow.png │ ├── camera-white.png │ ├── chat-gray.png │ ├── chat-white.png │ ├── circle-gray-big.png │ ├── circle-white-big.png │ ├── circle-white.png │ ├── contacts-gray.png │ ├── dots-gray.png │ ├── dots-white.png │ ├── flash-white.png │ ├── ghost-big.png │ ├── ghost.png │ ├── pen.png │ ├── plus-white.png │ ├── rear-camera-white.png │ ├── rewind.png │ ├── save.png │ ├── search-gray.png │ ├── search-white.png │ ├── settings-white.png │ ├── share-gray.png │ ├── share-white.png │ ├── snapchap-signin-big.gif │ ├── snapchap-signin-loop.gif │ ├── snapchap-signin.gif │ ├── snapchat-box-gray.png │ ├── snapchat-bw.gif │ ├── snapchat-bw.png │ ├── snapchat-filled-white.png │ ├── snapchat-gray.png │ ├── snapchat-white.png │ ├── timer.png │ ├── trophy-white.png │ ├── undo.png │ ├── white-gradient.png │ ├── wifi-gray.png │ └── x.png ├── invis1.png ├── mustache200.png ├── rr.jpg ├── screenshot │ ├── chat1.png │ ├── chat2.png │ ├── doodle1.png │ ├── doodle2.png │ ├── login1.png │ ├── login2.png │ ├── sendto.png │ ├── settings.png │ ├── snap1.png │ ├── snap2.png │ ├── snap3.png │ ├── snap4.png │ └── snap5.png ├── snap-confetti.png ├── snap1.png ├── snapchap-doodle.png ├── snapchap-doodle270.png ├── snapchap-doodle300.png ├── snapchap230.png ├── snapchap240.png ├── thanksgiving270.png └── thanksgiving300.png ├── index.html ├── lib ├── angular-animate │ ├── .bower.json │ ├── README.md │ ├── angular-animate.js │ ├── angular-animate.min.js │ ├── angular-animate.min.js.map │ ├── bower.json │ ├── index.js │ └── package.json ├── angular-sanitize │ ├── .bower.json │ ├── README.md │ ├── angular-sanitize.js │ ├── angular-sanitize.min.js │ ├── angular-sanitize.min.js.map │ ├── bower.json │ ├── index.js │ └── package.json ├── angular-ui-router │ ├── .bower.json │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── api │ │ └── angular-ui-router.d.ts │ ├── bower.json │ ├── release │ │ ├── angular-ui-router.js │ │ └── angular-ui-router.min.js │ └── src │ │ ├── common.js │ │ ├── resolve.js │ │ ├── state.js │ │ ├── stateDirectives.js │ │ ├── stateFilters.js │ │ ├── templateFactory.js │ │ ├── urlMatcherFactory.js │ │ ├── urlRouter.js │ │ ├── view.js │ │ ├── viewDirective.js │ │ └── viewScroll.js ├── angular │ ├── .bower.json │ ├── README.md │ ├── angular-csp.css │ ├── angular.js │ ├── angular.min.js │ ├── angular.min.js.gzip │ ├── angular.min.js.map │ ├── bower.json │ ├── index.js │ └── package.json ├── ionic │ ├── css │ │ ├── ionic.css │ │ └── ionic.min.css │ ├── fonts │ │ ├── ionicons.eot │ │ ├── ionicons.svg │ │ ├── ionicons.ttf │ │ └── ionicons.woff │ ├── js │ │ ├── angular-ui │ │ │ ├── angular-ui-router.js │ │ │ └── angular-ui-router.min.js │ │ ├── angular │ │ │ ├── angular-animate.js │ │ │ ├── angular-animate.min.js │ │ │ ├── angular-resource.js │ │ │ ├── angular-resource.min.js │ │ │ ├── angular-sanitize.js │ │ │ ├── angular-sanitize.min.js │ │ │ ├── angular.js │ │ │ └── angular.min.js │ │ ├── ionic-angular.js │ │ ├── ionic-angular.min.js │ │ ├── ionic.bundle.js │ │ ├── ionic.bundle.min.js │ │ ├── ionic.js │ │ └── ionic.min.js │ ├── scss │ │ ├── _action-sheet.scss │ │ ├── _animations.scss │ │ ├── _backdrop.scss │ │ ├── _badge.scss │ │ ├── _bar.scss │ │ ├── _button-bar.scss │ │ ├── _button.scss │ │ ├── _checkbox.scss │ │ ├── _form.scss │ │ ├── _grid.scss │ │ ├── _items.scss │ │ ├── _list.scss │ │ ├── _loading.scss │ │ ├── _menu.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _platform.scss │ │ ├── _popover.scss │ │ ├── _popup.scss │ │ ├── _progress.scss │ │ ├── _radio.scss │ │ ├── _range.scss │ │ ├── _refresher.scss │ │ ├── _reset.scss │ │ ├── _scaffolding.scss │ │ ├── _select.scss │ │ ├── _slide-box.scss │ │ ├── _slides.scss │ │ ├── _spinner.scss │ │ ├── _tabs.scss │ │ ├── _toggle.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _util.scss │ │ ├── _variables.scss │ │ ├── ionic.scss │ │ └── ionicons │ │ │ ├── _ionicons-font.scss │ │ │ ├── _ionicons-icons.scss │ │ │ ├── _ionicons-variables.scss │ │ │ └── ionicons.scss │ └── version.json └── ngCordova │ ├── .bower.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── dist │ ├── ng-cordova-mocks.js │ ├── ng-cordova-mocks.min.js │ ├── ng-cordova.js │ └── ng-cordova.min.js │ └── package.json ├── main.css ├── manifest.json └── service-worker.js /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | node_modules/ 3 | sockets/ 4 | config.js 5 | 6 | platforms/ 7 | plugins/ 8 | lib/ 9 | 10 | */.DS_Store 11 | ../.DS_Store 12 | .DS_Store 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "snapchap", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.14.0", 13 | "socket.io": "^1.5.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /snapchap/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "www/lib" 3 | } 4 | -------------------------------------------------------------------------------- /snapchap/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | insert_final_newline = false 14 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /snapchap/.gitignore: -------------------------------------------------------------------------------- 1 | # Specifies intentionally untracked files to ignore when using Git 2 | # http://git-scm.com/docs/gitignore 3 | 4 | config.js 5 | credentials.js 6 | AWS.config.js 7 | -------------------------------------------------------------------------------- /snapchap/.io-config.json: -------------------------------------------------------------------------------- 1 | {"app_id":"dd5854a9","api_key":"4a8ab35d2bc07d432428bd3b62528cde2e1cdf340185fee9"} -------------------------------------------------------------------------------- /snapchap/AwsConfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/AwsConfig.json -------------------------------------------------------------------------------- /snapchap/Procfile: -------------------------------------------------------------------------------- 1 | web: node server.js 2 | -------------------------------------------------------------------------------- /snapchap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HelloIonic", 3 | "private": "true", 4 | "devDependencies": { 5 | "ionic": "driftyco/ionic-bower#1.3.1" 6 | }, 7 | "dependencies": { 8 | "ngCordova": "^0.1.27-alpha", 9 | "signature_pad": "^1.5.3" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /snapchap/db/accept_friendship.sql: -------------------------------------------------------------------------------- 1 | UPDATE friendships SET valid_friendship = TRUE where initiator = $1 AND acceptor = $2; 2 | -------------------------------------------------------------------------------- /snapchap/db/compare_password.sql: -------------------------------------------------------------------------------- 1 | SELECT password = crypt($1, password) from users where id = $2; 2 | -------------------------------------------------------------------------------- /snapchap/db/create_user.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO users (first_name, last_name, username, password, email) VALUES ($1, $2, $3, $4, $5); 2 | -------------------------------------------------------------------------------- /snapchap/db/delete_friendship.sql: -------------------------------------------------------------------------------- 1 | DELETE FROM friendships WHERE id = $1; 2 | -------------------------------------------------------------------------------- /snapchap/db/delete_message.sql: -------------------------------------------------------------------------------- 1 | DELETE FROM pending_messages WHERE id = $1; 2 | -------------------------------------------------------------------------------- /snapchap/db/get_message.sql: -------------------------------------------------------------------------------- 1 | SELECT pending_messages.message, users.first_name, users.last_name 2 | FROM pending_messages 3 | JOIN users ON pending_messages.sender = users.id 4 | WHERE pending_messages.id = $1; 5 | -------------------------------------------------------------------------------- /snapchap/db/get_message_ids.sql: -------------------------------------------------------------------------------- 1 | SELECT pending_messages.id, users.first_name, users.last_name 2 | FROM pending_messages 3 | JOIN users ON pending_messages.sender = users.id 4 | WHERE pending_messages.recipient = $1; 5 | -------------------------------------------------------------------------------- /snapchap/db/get_pending_friend_requests.sql: -------------------------------------------------------------------------------- 1 | SELECT users.id, users.first_name, users.last_name, users.username 2 | FROM friendships 3 | JOIN users ON users.id = friendships.initiator 4 | WHERE friendships.acceptor = $1 AND valid_friendship = false -------------------------------------------------------------------------------- /snapchap/db/get_user_friends.sql: -------------------------------------------------------------------------------- 1 | select users.id, username, initiator, acceptor, first_name, last_name 2 | from users 3 | join friendships 4 | on users.id = friendships.initiator or users.id = friendships.acceptor 5 | where users.id != $1 and (initiator = $1 or acceptor = $1) and valid_friendship = true 6 | order by username 7 | -------------------------------------------------------------------------------- /snapchap/db/get_user_info.sql: -------------------------------------------------------------------------------- 1 | SELECT id, email, username, first_name, last_name, password from users where id = $1; 2 | -------------------------------------------------------------------------------- /snapchap/db/search_users.sql: -------------------------------------------------------------------------------- 1 | SELECT id, username, first_name, last_name from users 2 | WHERE username LIKE $1 3 | AND id != $2 4 | AND id not in ( 5 | select initiator as friend from friendships where acceptor = $2 union 6 | select acceptor as friend from friendships where initiator = $2 7 | ) 8 | -------------------------------------------------------------------------------- /snapchap/db/send_request.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO friendships (initiator, acceptor, valid_friendship) VALUES ($1, $2, FALSE) 2 | -------------------------------------------------------------------------------- /snapchap/db/update_birthday.sql: -------------------------------------------------------------------------------- 1 | update users 2 | set email = $2 3 | where id = $1 4 | -------------------------------------------------------------------------------- /snapchap/db/update_email.sql: -------------------------------------------------------------------------------- 1 | update users 2 | set email = $2 3 | where id = $1 4 | -------------------------------------------------------------------------------- /snapchap/db/update_first_name.sql: -------------------------------------------------------------------------------- 1 | update users set first_name = $2 where id = $1; 2 | -------------------------------------------------------------------------------- /snapchap/db/update_last_name.sql: -------------------------------------------------------------------------------- 1 | update users set last_name = $2 where id = $1; 2 | -------------------------------------------------------------------------------- /snapchap/db/update_name.sql: -------------------------------------------------------------------------------- 1 | update users 2 | set first_name = $2, 3 | last_name = $3 4 | where id = $1 5 | -------------------------------------------------------------------------------- /snapchap/db/update_password.sql: -------------------------------------------------------------------------------- 1 | update users 2 | set password = crypt($2, gen_salt('bf')) 3 | where id = $1 4 | -------------------------------------------------------------------------------- /snapchap/db/update_requests.sql: -------------------------------------------------------------------------------- 1 | select users.id, username, initiator, acceptor, first_name, last_name 2 | from users 3 | join friendships 4 | on users.id = friendships.initiator or users.id = friendships.acceptor 5 | where users.id != $1 and (initiator = $1 or acceptor = $1) and valid_friendship = false 6 | order by username 7 | -------------------------------------------------------------------------------- /snapchap/db/upload_message.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO pending_messages (sender, recipient, message) VALUES ($1, $2, $3) 2 | RETURNING id; -------------------------------------------------------------------------------- /snapchap/db/upload_picture_message.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO pending_messages (sender, recipient, picture_message) VALUES ($1, $2, $3); 2 | -------------------------------------------------------------------------------- /snapchap/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var gutil = require('gulp-util'); 3 | var bower = require('bower'); 4 | var concat = require('gulp-concat'); 5 | var sass = require('gulp-sass'); 6 | var minifyCss = require('gulp-minify-css'); 7 | var rename = require('gulp-rename'); 8 | var sh = require('shelljs'); 9 | 10 | var paths = { 11 | sass: ['./scss/**/*.scss'] 12 | // sass: ['./**/main.css'] 13 | }; 14 | 15 | gulp.task('default', ['sass']); 16 | 17 | gulp.task('sass', function(done) { 18 | gulp.src('./scss/ionic.app.scss') 19 | .pipe(sass()) 20 | .on('error', sass.logError) 21 | .pipe(gulp.dest('./www/css/')) 22 | .pipe(minifyCss({ 23 | keepSpecialComments: 0 24 | })) 25 | .pipe(rename({ extname: '.min.css' })) 26 | .pipe(gulp.dest('./www/css/')) 27 | .on('end', done); 28 | }); 29 | 30 | gulp.task('watch', function() { 31 | gulp.watch(paths.sass, ['sass']); 32 | }); 33 | 34 | gulp.task('install', ['git-check'], function() { 35 | return bower.commands.install() 36 | .on('log', function(data) { 37 | gutil.log('bower', gutil.colors.cyan(data.id), data.message); 38 | }); 39 | }); 40 | 41 | gulp.task('git-check', function(done) { 42 | if (!sh.which('git')) { 43 | console.log( 44 | ' ' + gutil.colors.red('Git is not installed.'), 45 | '\n Git, the version control system, is required to download Ionic.', 46 | '\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.', 47 | '\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.' 48 | ); 49 | process.exit(1); 50 | } 51 | done(); 52 | }); 53 | -------------------------------------------------------------------------------- /snapchap/hooks/README.md: -------------------------------------------------------------------------------- 1 | 21 | # Cordova Hooks 22 | 23 | This directory may contain scripts used to customize cordova commands. This 24 | directory used to exist at `.cordova/hooks`, but has now been moved to the 25 | project root. Any scripts you add to these directories will be executed before 26 | and after the commands corresponding to the directory name. Useful for 27 | integrating your own build systems or integrating with version control systems. 28 | 29 | __Remember__: Make your scripts executable. 30 | 31 | ## Hook Directories 32 | The following subdirectories will be used for hooks: 33 | 34 | after_build/ 35 | after_compile/ 36 | after_docs/ 37 | after_emulate/ 38 | after_platform_add/ 39 | after_platform_rm/ 40 | after_platform_ls/ 41 | after_plugin_add/ 42 | after_plugin_ls/ 43 | after_plugin_rm/ 44 | after_plugin_search/ 45 | after_prepare/ 46 | after_run/ 47 | after_serve/ 48 | before_build/ 49 | before_compile/ 50 | before_docs/ 51 | before_emulate/ 52 | before_platform_add/ 53 | before_platform_rm/ 54 | before_platform_ls/ 55 | before_plugin_add/ 56 | before_plugin_ls/ 57 | before_plugin_rm/ 58 | before_plugin_search/ 59 | before_prepare/ 60 | before_run/ 61 | before_serve/ 62 | pre_package/ <-- Windows 8 and Windows Phone only. 63 | 64 | ## Script Interface 65 | 66 | All scripts are run from the project's root directory and have the root directory passes as the first argument. All other options are passed to the script using environment variables: 67 | 68 | * CORDOVA_VERSION - The version of the Cordova-CLI. 69 | * CORDOVA_PLATFORMS - Comma separated list of platforms that the command applies to (e.g.: android, ios). 70 | * CORDOVA_PLUGINS - Comma separated list of plugin IDs that the command applies to (e.g.: org.apache.cordova.file, org.apache.cordova.file-transfer) 71 | * CORDOVA_HOOK - Path to the hook that is being executed. 72 | * CORDOVA_CMDLINE - The exact command-line arguments passed to cordova (e.g.: cordova run ios --emulate) 73 | 74 | If a script returns a non-zero exit code, then the parent cordova command will be aborted. 75 | 76 | 77 | ## Writing hooks 78 | 79 | We highly recommend writting your hooks using Node.js so that they are 80 | cross-platform. Some good examples are shown here: 81 | 82 | [http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/](http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/) 83 | 84 | -------------------------------------------------------------------------------- /snapchap/hooks/after_prepare/010_add_platform_class.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | // Add Platform Class 4 | // v1.0 5 | // Automatically adds the platform class to the body tag 6 | // after the `prepare` command. By placing the platform CSS classes 7 | // directly in the HTML built for the platform, it speeds up 8 | // rendering the correct layout/style for the specific platform 9 | // instead of waiting for the JS to figure out the correct classes. 10 | 11 | var fs = require('fs'); 12 | var path = require('path'); 13 | 14 | var rootdir = process.argv[2]; 15 | 16 | function addPlatformBodyTag(indexPath, platform) { 17 | // add the platform class to the body tag 18 | try { 19 | var platformClass = 'platform-' + platform; 20 | var cordovaClass = 'platform-cordova platform-webview'; 21 | 22 | var html = fs.readFileSync(indexPath, 'utf8'); 23 | 24 | var bodyTag = findBodyTag(html); 25 | if(!bodyTag) return; // no opening body tag, something's wrong 26 | 27 | if(bodyTag.indexOf(platformClass) > -1) return; // already added 28 | 29 | var newBodyTag = bodyTag; 30 | 31 | var classAttr = findClassAttr(bodyTag); 32 | if(classAttr) { 33 | // body tag has existing class attribute, add the classname 34 | var endingQuote = classAttr.substring(classAttr.length-1); 35 | var newClassAttr = classAttr.substring(0, classAttr.length-1); 36 | newClassAttr += ' ' + platformClass + ' ' + cordovaClass + endingQuote; 37 | newBodyTag = bodyTag.replace(classAttr, newClassAttr); 38 | 39 | } else { 40 | // add class attribute to the body tag 41 | newBodyTag = bodyTag.replace('>', ' class="' + platformClass + ' ' + cordovaClass + '">'); 42 | } 43 | 44 | html = html.replace(bodyTag, newBodyTag); 45 | 46 | fs.writeFileSync(indexPath, html, 'utf8'); 47 | 48 | process.stdout.write('add to body class: ' + platformClass + '\n'); 49 | } catch(e) { 50 | process.stdout.write(e); 51 | } 52 | } 53 | 54 | function findBodyTag(html) { 55 | // get the body tag 56 | try{ 57 | return html.match(/])(.*?)>/gi)[0]; 58 | }catch(e){} 59 | } 60 | 61 | function findClassAttr(bodyTag) { 62 | // get the body tag's class attribute 63 | try{ 64 | return bodyTag.match(/ class=["|'](.*?)["|']/gi)[0]; 65 | }catch(e){} 66 | } 67 | 68 | if (rootdir) { 69 | 70 | // go through each of the platform directories that have been prepared 71 | var platforms = (process.env.CORDOVA_PLATFORMS ? process.env.CORDOVA_PLATFORMS.split(',') : []); 72 | 73 | for(var x=0; x 2 | 3 | 4 | 5 | 9 | 10 |
    11 |
  • 12 |

    Add by Username

    13 |
  • 14 |
  • 15 |

    Add from Contacts

    16 |
  • 17 |
  • 18 |

    Add by Snapcode

    19 |
  • 20 |
  • 21 |

    Add Nearby

    22 |
  • 23 |
  • 24 |

    Share Username

    25 |
  • 26 | 27 |
28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addFriends/addFriendsCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('addFriendsCtrl', function ($scope, $stateParams, mainService) { 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.showMenu = function() { 6 | mainService.showMenu(); 7 | }; 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addUsername/addUsername.css: -------------------------------------------------------------------------------- 1 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 2 | TOP NAV 3 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 4 | #add-username-view nav { 5 | color: rgba(154, 52, 151, 1); 6 | font-size: 1.4rem; 7 | text-align: center; 8 | padding: 18px; 9 | margin-top: 10px; 10 | background-color: #fff; 11 | border-bottom: thin solid lightgray; 12 | } 13 | #add-username-view .heading { 14 | display: flex; 15 | align-items: center; 16 | padding-left: 10px; 17 | width: 100vw; 18 | height: 40px; 19 | color: rgba(154, 52, 151, 1); 20 | } 21 | #add-username-view_back-btn { 22 | font-size: 1.7rem; 23 | color: rgba(154, 52, 151, 1); 24 | left: 15px; 25 | top: 8px; 26 | } 27 | 28 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 29 | FORM 30 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 31 | #add-username-view__form { 32 | border-bottom: thin solid lightgray; 33 | position: relative; 34 | padding: 5px 0; 35 | } 36 | #add-username-view__form .magnifying-glass { 37 | top: 15px; 38 | } 39 | #add-username-view input { 40 | width: 100vw; 41 | position: relative; 42 | left: 37px; 43 | font-size: 1.2em; 44 | padding: 22px 0; 45 | } 46 | 47 | 48 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 49 | USERNAME EXPLANATION TEXT 50 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 51 | .add-username-view__explanation { 52 | margin: 24px 0; 53 | line-height: 1em; 54 | } 55 | .add-username-view__explanation p { 56 | color: rgba(170, 170, 170, 1);; 57 | text-align: center; 58 | } 59 | 60 | 61 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 62 | MY FRIENDS 63 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 64 | #add-username-view li { 65 | padding: 13px 11px; 66 | border-bottom: thin solid lightgray; 67 | position: relative; 68 | line-height: 1em; 69 | } 70 | .add-username-view__display-name, 71 | .add-username-view__username { 72 | padding: 13px 0 0 9px; 73 | font-size: 0.9rem; 74 | position: relative; 75 | left: 50px; 76 | } 77 | .add-username-view__display-name:before { 78 | content: ''; 79 | height: 50px; 80 | width: 50px; 81 | position: absolute; 82 | left: -50px; 83 | top: 5px; 84 | color: black; 85 | background-image: url('../../../img/icon/snapchat-gray.png'); 86 | -webkit-background-size: 50px; 87 | background-size: 50px; 88 | } 89 | .add-username-view__username { 90 | padding: 0 0 0 9px; 91 | color: gray; 92 | font-size: 0.7rem; 93 | } 94 | 95 | 96 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 97 | ADD BUTTON 98 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 99 | #add-username-view .add-username-view__add-btn { 100 | position: absolute; 101 | padding: 4px 14px 7px 30px; 102 | top: 50%; 103 | transform: translateY(-50%); 104 | right: 20px; 105 | color: rgba(154, 52, 151, 1); 106 | border: thin solid rgba(154, 52, 151, 0.5); 107 | font-size: 0.9rem; 108 | font-weight: bold; 109 | background-color: rgba(255, 255, 255, 0); 110 | } 111 | .add-username-view__add-btn__plus:before { 112 | content: '+'; 113 | position: absolute; 114 | font-size: 1.1rem; 115 | left: 10px; 116 | bottom: 6px; 117 | } 118 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addUsername/addUsername.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 |
11 | 12 | 13 |
14 | 15 |
    16 |
  • 17 |

    {{user.first_name}} {{user.last_name}}

    18 |

    {{user.username}}

    19 | 20 |
  • 21 |
22 |
23 |
24 |

{{userInfo.username}}

25 |

is your username

26 |
27 | 28 |
29 |

{{userInfo.first_name}} {{userInfo.last_name}}

30 |

is how you appear on Snapchat

31 |
32 |
33 | 34 | 35 |
36 | 37 |
38 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addUsername/addUsernameCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('addUsernameCtrl', function ($scope, $rootScope, $stateParams, mainService) { 2 | $scope.flag = false; 3 | mainService.hideMenu(); 4 | $scope.users = []; 5 | 6 | $scope.getSearchResults = function(searchText){ 7 | $scope.hideExplanation = true; 8 | if(searchText){ 9 | $scope.hideExplanation = true; 10 | var query = "%"+searchText+"%" 11 | mainService.getUsername(query, $rootScope.userInfo.id).then(function(results){ 12 | console.log(results.data) 13 | $scope.users = results.data; 14 | }) 15 | } 16 | else { 17 | $scope.users = [] 18 | $scope.hideExplanation = false; 19 | } 20 | } 21 | $scope.sendFriendRequest = function(acceptor){ 22 | 23 | mainService.sendFriendRequest({initiatorId :$rootScope.userInfo.id, acceptorId: acceptor}).then(function(flag){ 24 | $scope.flag = flag; 25 | $scope.getSearchResults($scope.searchText) 26 | }) 27 | } 28 | }); 29 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addedMe/addedMe.css: -------------------------------------------------------------------------------- 1 | #added-me-view nav { 2 | color: rgba(154, 52, 151, 1); 3 | font-size: 1.4rem; 4 | text-align: center; 5 | padding: 18px; 6 | margin-top: 10px; 7 | background-color: #fff; 8 | border-bottom: thin solid lightgray; 9 | } 10 | #added-me-view .heading { 11 | display: flex; 12 | align-items: center; 13 | padding-left: 10px; 14 | width: 100vw; 15 | height: 40px; 16 | color: rgba(154, 52, 151, 1); 17 | } 18 | #added-me-view_back-btn { 19 | font-size: 1.7rem; 20 | color: rgba(154, 52, 151, 1); 21 | left: 15px; 22 | top: 8px; 23 | } 24 | 25 | #added-me-view li { 26 | padding: 13px 9px; 27 | border-bottom: thin solid lightgray; 28 | position: relative; 29 | line-height: 1em; 30 | } 31 | 32 | .added-me-view__display-name, 33 | .added-me-view__username { 34 | padding: 13px 0 0 9px; 35 | font-size: 1rem; 36 | position: relative; 37 | left: 50px; 38 | } 39 | .added-me-view__display-name:before { 40 | content: ''; 41 | height: 50px; 42 | width: 50px; 43 | position: absolute; 44 | left: -45px; 45 | top: 5px; 46 | color: black; 47 | background-image: url('../../../img/icon/snapchat-gray.png'); 48 | -webkit-background-size: 50px; 49 | background-size: 50px; 50 | } 51 | .added-me-view__username { 52 | padding: 0 0 0 9px; 53 | color: gray; 54 | font-size: 0.7rem; 55 | } 56 | 57 | #added-me-view .added-me-view__add-btn { 58 | position: absolute; 59 | padding: 7px 17px 7px 35px; 60 | top: 50%; 61 | transform: translateY(-50%); 62 | right: 20px; 63 | color: rgba(154, 52, 151, 1); 64 | border: thin solid rgba(154, 52, 151, 0.5); 65 | font-size: 1rem; 66 | font-weight: bold; 67 | background-color: rgba(255, 255, 255, 0); 68 | } 69 | 70 | .added-me-view__add-btn__plus:before { 71 | content: '+'; 72 | position: absolute; 73 | font-size: 1.7rem; 74 | left: 10px; 75 | bottom: -1px; 76 | } 77 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addedMe/addedMe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 |
    11 |
  • 12 |

    {{item.first_name}} {{item.last_name}}

    13 |

    {{item.username}}

    14 | 15 |
  • 16 |
17 | 21 | 22 |
23 | 24 |
25 | -------------------------------------------------------------------------------- /snapchap/www/app/components/addedMe/addedMeCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('addedMeCtrl', function ($scope, $rootScope, $stateParams, mainService) { 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.showMenu = function() { 6 | mainService.showMenu(); 7 | }; 8 | mainService.getPendingFriendRequests($rootScope.userInfo.id).then(function(response){ 9 | $rootScope.pendingFriendRequests = response.data; 10 | }); 11 | $scope.respondToFriendRequest = function(initiatorId){ 12 | mainService.replyToFriendRequest({initiatorId: initiatorId, acceptorId: $rootScope.userInfo.id}).then(function(response){ 13 | 14 | if(response.data){ 15 | mainService.getPendingFriendRequests($rootScope.userInfo.id).then(function(response){ 16 | $rootScope.pendingFriendRequests = response.data; 17 | }) 18 | } 19 | 20 | }) 21 | } 22 | 23 | }); 24 | -------------------------------------------------------------------------------- /snapchap/www/app/components/birthday/birthday.css: -------------------------------------------------------------------------------- 1 | #birthday-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | background-color: white; 7 | } 8 | #birthday-view .heading { 9 | display: flex; 10 | align-items: center; 11 | background-color: rgba(244, 244, 244, 1); 12 | padding-left: 14px; 13 | width: 100vw; 14 | height: 34px; 15 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 16 | color: #00A686; 17 | margin-left: 0px; 18 | } 19 | #birthday-view__back-btn { 20 | z-index: 1; 21 | color: #00A686; 22 | } 23 | #birthday-text { 24 | color: rgba(150, 150, 150, 1); 25 | margin: 10px 0px; 26 | font-size: 0.7rem; 27 | line-height: 0.9rem; 28 | background-color: white; 29 | width: 100%; 30 | } 31 | #birthday-warning { 32 | text-align: center; 33 | color: rgba(150, 150, 150, 1); 34 | margin: 18px 10vw; 35 | font-size: 0.7rem; 36 | line-height: 0.9rem; 37 | } 38 | 39 | #birthday-view { 40 | background-color: rgba(240, 240, 240, 1); 41 | } 42 | 43 | #birth-date { 44 | background-color: white; 45 | height: 50px; 46 | width: 100%; 47 | font-size: 1.2rem; 48 | color: rgba(50, 50, 50, 1); 49 | padding-left: 15px; 50 | display: flex; 51 | align-items: center; 52 | } 53 | -------------------------------------------------------------------------------- /snapchap/www/app/components/birthday/birthday.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 |
12 | Choose carefully — you can only change your birthday a limited number of times. 13 |
14 |
15 | January 1, 1991 16 |
17 |
18 | 19 | Birthday Party 20 |
21 | Adds a 🎂  next to your name on your
birthday, allows your friends to send you
Birthday Snaps, and some other fun
surprises. This does not reveal your age to
other Snapchatters. 22 |
23 |
24 | 25 |
26 | 27 | 28 |
29 | 30 | 31 |
32 | -------------------------------------------------------------------------------- /snapchap/www/app/components/birthday/birthdayCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('birthdayCtrl', function ($scope, $stateParams) { 2 | 3 | 4 | }); 5 | -------------------------------------------------------------------------------- /snapchap/www/app/components/camera/camera.css: -------------------------------------------------------------------------------- 1 | #camera-view { 2 | height: 100%; 3 | background-color: black; 4 | } 5 | 6 | #camera-view__flash-btn { 7 | background-image: url('../../../img/icon/flash-white.png'); 8 | } 9 | #camera-view__profile-btn { 10 | background-image: url('../../../img/icon/snapchat-filled-white.png'); 11 | } 12 | #camera-view__rear-camera-btn { 13 | background-image: url('../../../img/icon/rear-camera-white.png'); 14 | } 15 | 16 | 17 | /*#camera-view__nav-bottom { 18 | top: calc(100vh - 60px); 19 | } 20 | #camera-view__nav-bottom .icon-btn { 21 | position: relative; 22 | bottom: 7px; 23 | } 24 | 25 | #camera-view__chat-btn { 26 | background-image: url('../../../img/icon/chat-white.png'); 27 | } 28 | #camera-view__take-photo-btn { 29 | background-image: url('../../../img/icon/circle-white-big.png'); 30 | width: 70px; 31 | height: 70px; 32 | -webkit-background-size: 70px; 33 | background-size: 70px; 34 | } 35 | #camera-view__dots-btn { 36 | background-image: url('../../../img/icon/dots-white.png'); 37 | }*/ 38 | -------------------------------------------------------------------------------- /snapchap/www/app/components/camera/camera.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /snapchap/www/app/components/chat/chat.css: -------------------------------------------------------------------------------- 1 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 2 | TOP NAV 3 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 4 | #chat-view__nav-top { 5 | background-color: RGBA(60, 178, 226, 1.00); 6 | } 7 | 8 | /* Flash button */ 9 | #chat-view__flash-btn { 10 | background-image: url('../../../img/icon/chat-white.png'); 11 | } 12 | /* Profile button */ 13 | #chat-view__profile-btn { 14 | background-image: url('../../../img/icon/snapchat-white.png'); 15 | } 16 | /* Camera view button */ 17 | #chat-view__camera-btn { 18 | background-image: url('../../../img/icon/camera-white.png'); 19 | } 20 | 21 | 22 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 23 | MAIN CONTENT 24 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 25 | #chat-view__main-content { 26 | height: calc(100vh - 60px); 27 | position: relative; 28 | top: 60px; 29 | } 30 | #chat-view__input { 31 | width: 100%; 32 | position: relative; 33 | left: 37px; 34 | font-size: 1.2em; 35 | padding: 22px 0; 36 | } 37 | 38 | #chat-view ul>li { 39 | padding: 10px; 40 | font-weight: bold; 41 | position: relative; 42 | } 43 | #chat-view ul>li>.tap-to-view { 44 | font-weight: normal; 45 | color: gray; 46 | font-size: 0.8rem; 47 | } 48 | #chat-view ul>li>* { 49 | position: relative; 50 | left: 34px; 51 | } 52 | #chat-view ul>li>*:nth-child(1):after { 53 | content: ''; 54 | position: absolute; 55 | left: -30px; 56 | top: 10px; 57 | height: 20px; 58 | width: 20px; 59 | background-color: red; 60 | border-radius: 3px; 61 | } 62 | 63 | #pending-messages { 64 | margin-bottom: 100px; 65 | } 66 | 67 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 68 | MESSAGE CANVAS 69 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 70 | #message-canvas-container { 71 | width: 100vw; 72 | height: 100vh; 73 | background-color: black; 74 | z-index: -1; 75 | position: fixed; 76 | bottom: 0px; 77 | padding: 0px; 78 | margin: 0px; 79 | left: 200%; 80 | top: 50%; 81 | transform: translate(-50%, -50%); 82 | } 83 | #message-canvas-container.active { 84 | z-index: 10; 85 | left: 50%; 86 | top: 50%; 87 | transform: translate(-50%, -50%); 88 | } 89 | #message-canvas { 90 | width: 100%; 91 | height: 100%; 92 | position: fixed; 93 | left: 0px; 94 | padding: 0px; 95 | background-color: yellow; 96 | /*The following two lines aren't working. Vertical position is set in getMessage fn in chatCtrl*/ 97 | left: 50%; 98 | top: 50%; 99 | transform: translate(-50%, -50%); 100 | } 101 | 102 | 103 | 104 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 105 | BOTTOM NAV (now resides in mainCtrl and main.css) 106 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 107 | #chat-view .nav-bottom { 108 | /*background-color: white;*/ 109 | background-image: url('../../../img/icon/white-gradient.png'); 110 | background-repeat: repeat-x; 111 | -webkit-background-size: auto 80px; 112 | background-size: auto 80px; 113 | position: fixed; 114 | width: 100%; 115 | height: 80px; 116 | left: 0px; 117 | top: calc(100% - 80px); 118 | 119 | z-index: 1; 120 | padding: 0px; 121 | margin: 0px; 122 | } 123 | 124 | /*#chat-view__nav-bottom { 125 | top: calc(100vh - 60px); 126 | display: flex; 127 | justify-content: center; 128 | align-items: flex-end; 129 | } 130 | 131 | #chat-view__chat-btn { 132 | background-image: url('../../../img/icon/chat-gray.png'); 133 | position: relative; 134 | } 135 | #chat-view__take-photo-btn { 136 | background-image: url('../../../img/icon/circle-gray-big.png'); 137 | width: 50px; 138 | height: 50px; 139 | position: relative; 140 | margin: 0 31px; 141 | -webkit-background-size: 50px; 142 | background-size: 50px; 143 | } 144 | #chat-view__dots-btn { 145 | background-image: url('../../../img/icon/dots-gray.png'); 146 | position: relative; 147 | }*/ 148 | -------------------------------------------------------------------------------- /snapchap/www/app/components/chat/chat.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 16 | 17 | 21 |
22 |
23 | 24 | 27 |
28 | 29 |
    30 |
  • 31 |
    {{pendingMessage.first_name}} {{pendingMessage.last_name}}
    32 |
    Tap to view
    33 |
  • 34 |
35 | 36 |
37 | 38 |
39 | 40 | 41 | 42 | 43 | 46 | 51 | 53 | 54 |
55 | 56 |
57 | 58 |
59 | -------------------------------------------------------------------------------- /snapchap/www/app/components/chat/chatCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('chatCtrl', function ($scope, $stateParams, mainService, $rootScope, $state) { 2 | 3 | mainService.showMenu(); 4 | 5 | $('#index-html__chat-btn, #index-html__take-photo-btn, #index-html__dots-btn').addClass('chatty-nav'); 6 | 7 | 8 | mainService.getPendingMessageIds($rootScope.userInfo.id).then(function(response) { 9 | $rootScope.pendingMessages = response.data; 10 | }); 11 | 12 | 13 | var canvas = document.getElementById('message-canvas'); 14 | var context = canvas.getContext('2d'); 15 | var image = new Image(); 16 | 17 | var messageCanvasContainer = $('#message-canvas-container'); 18 | var messageCanvas = $('#message-canvas'); 19 | 20 | // canvas.width = messageCanvasContainer.width(); 21 | // canvas.height = messageCanvasContainer.height(); 22 | 23 | $scope.getMessage = function(messageId) { 24 | mainService.getMessage(messageId).then(function(response) { 25 | setTimeout(function() { 26 | context.clearRect(0, 0, canvas.width, canvas.height); 27 | messageCanvasContainer.removeClass('active'); 28 | mainService.showMenu(); 29 | mainService.deleteMessage(messageId).then(function(response) { 30 | mainService.getPendingMessageIds($rootScope.userInfo.id).then(function(response) { 31 | $rootScope.pendingMessages = response.data; 32 | }); 33 | }); 34 | }, 10000); 35 | messageCanvasContainer.addClass('active'); 36 | mainService.hideMenu(); 37 | image.src = response.data[0].message; 38 | image.onload = function() { 39 | canvas.width = image.width; 40 | canvas.height = canvas.width * image.height / image.width; 41 | messageCanvas.width(canvas.width); 42 | messageCanvas.height(canvas.height); 43 | // $('#message-canvas').css('top', 'calc(50% - ' + image.height / 2 + 'px'); 44 | context.drawImage(image, 0, 0); 45 | } 46 | }); 47 | } 48 | 49 | 50 | $scope.goToView = function(view) { 51 | $state.go(view); 52 | } 53 | 54 | 55 | }); 56 | -------------------------------------------------------------------------------- /snapchap/www/app/components/confirmPassword/confirmPassword.css: -------------------------------------------------------------------------------- 1 | #confirm-password-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | background-color: white; 7 | } 8 | #confirm-password-view .heading { 9 | display: flex; 10 | align-items: center; 11 | background-color: rgba(244, 244, 244, 1); 12 | padding-left: 14px; 13 | width: 100vw; 14 | height: 34px; 15 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 16 | color: #00A686; 17 | margin-left: 0px; 18 | } 19 | #confirm-password-view__back-btn { 20 | z-index: 1; 21 | color: #00A686; 22 | } 23 | #confirm-password-text { 24 | color: rgba(150, 150, 150, 1); 25 | margin: 10px 0px; 26 | font-size: 0.7rem; 27 | line-height: 0.9rem; 28 | background-color: white; 29 | width: 100%; 30 | } 31 | #confirm-password-warning { 32 | text-align: center; 33 | color: rgba(150, 150, 150, 1); 34 | margin: 18px 10vw; 35 | font-size: 0.7rem; 36 | line-height: 0.9rem; 37 | } 38 | 39 | #confirm-password-view { 40 | background-color: rgba(240, 240, 240, 1); 41 | } 42 | 43 | #confirm-password-input { 44 | background-color: white; 45 | height: 50px; 46 | width: 100%; 47 | font-size: 1.2rem; 48 | color: rgba(50, 50, 50, 1); 49 | padding-left: 15px; 50 | display: flex; 51 | align-items: center; 52 | } 53 | 54 | #confirm-password-continue-button { 55 | position: relative; 56 | left: 0; 57 | } 58 | -------------------------------------------------------------------------------- /snapchap/www/app/components/confirmPassword/confirmPassword.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 |
9 | Your email address is user to log in to
Snapchap
and for password recovery. 10 |
11 | 12 | 13 | 14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /snapchap/www/app/components/confirmPassword/confirmPasswordCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('confirmPasswordCtrl', function($scope, $rootScope, mainService, $state){ 2 | 3 | $scope.continueButton = false; 4 | $scope.stuff = function(password){ 5 | if(password !== ''){ 6 | $scope.continueButton = true 7 | } else $scope.continueButton = false 8 | } 9 | 10 | $scope.confirmPassword = function(password){ 11 | id = $rootScope.userInfo.id; 12 | mainService.comparePassword(id, password) 13 | .then(function(response){ 14 | if(response.data){ 15 | mainService.updateEmail($rootScope.updateEmail) 16 | .then(function(response){ 17 | mainService.getCurrentUser().then(function(userInfo){ 18 | $rootScope.userInfo = userInfo; 19 | $rootScope.updateEmail = '' 20 | $state.go('settings') 21 | }) 22 | }) 23 | } 24 | }) 25 | } 26 | }) 27 | -------------------------------------------------------------------------------- /snapchap/www/app/components/email/email.css: -------------------------------------------------------------------------------- 1 | #email-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | background-color: white; 7 | } 8 | #email-view .heading { 9 | display: flex; 10 | align-items: center; 11 | background-color: rgba(244, 244, 244, 1); 12 | padding-left: 14px; 13 | width: 100vw; 14 | height: 34px; 15 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 16 | color: #00A686; 17 | margin-left: 0px; 18 | } 19 | #email-view__back-btn { 20 | z-index: 1; 21 | color: #00A686; 22 | } 23 | #email-text { 24 | color: rgba(150, 150, 150, 1); 25 | margin: 10px 0px; 26 | font-size: 0.7rem; 27 | line-height: 0.9rem; 28 | background-color: white; 29 | width: 100%; 30 | } 31 | #email-warning { 32 | text-align: center; 33 | color: rgba(150, 150, 150, 1); 34 | margin: 18px 10vw; 35 | font-size: 0.7rem; 36 | line-height: 0.9rem; 37 | } 38 | 39 | #email-view { 40 | background-color: rgba(240, 240, 240, 1); 41 | } 42 | 43 | #email-input { 44 | background-color: white; 45 | height: 50px; 46 | width: 100%; 47 | font-size: 1.2rem; 48 | color: rgba(50, 50, 50, 1); 49 | padding-left: 15px; 50 | display: flex; 51 | align-items: center; 52 | } 53 | 54 | #email-continue-button { 55 | position: relative; 56 | left: 0 57 | } 58 | -------------------------------------------------------------------------------- /snapchap/www/app/components/email/email.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 |
9 | Your email address is user to log in to
Snapchap
and for password recovery. 10 |
11 | 12 | 13 | 14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /snapchap/www/app/components/email/emailCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('emailCtrl', function ($scope, $stateParams, mainService, $rootScope, $state) { 2 | 3 | mainService.hideMenu(); 4 | $scope.email = '' 5 | 6 | $scope.currentEmail = $rootScope.userInfo.email; 7 | $rootScope.updateEmail = undefined; 8 | 9 | $scope.continueButton = false; 10 | $scope.stuff = function(email){ 11 | if(email.length > 0){ 12 | $scope.continueButton = true 13 | } 14 | else $scope.continueButton = false 15 | } 16 | 17 | $scope.addEmail = function(email){ 18 | $rootScope.updateEmail = {id: $rootScope.userInfo.id, email: email} 19 | console.log($rootScope.updateEmail); 20 | $scope.email = '' 21 | $state.go('confirmPassword') 22 | 23 | } 24 | 25 | }); 26 | -------------------------------------------------------------------------------- /snapchap/www/app/components/logIn/logIn.css: -------------------------------------------------------------------------------- 1 | #log-in-view-back-btn { 2 | color: #9A3497; 3 | } 4 | 5 | #log-in-view h3 { 6 | font-size: 1.4rem; 7 | margin: 12vh 0 0 0; 8 | } 9 | 10 | #log-in-view__form div { 11 | position: relative; 12 | } 13 | 14 | #log-in-view .heading { 15 | color: gray; 16 | display: flex; 17 | justify-content: flex-start; 18 | position: absolute; 19 | left: -3vw; 20 | bottom: 27px; 21 | font-size: 0.7rem; 22 | } 23 | 24 | #log-in-view__form { 25 | width: 100vw; 26 | height: 67vh; 27 | background-color: white: ; 28 | display: flex; 29 | flex-direction: column; 30 | justify-content: flex-start; 31 | align-items: center; 32 | } 33 | 34 | #log-in-view input { 35 | margin-top: 8vh; 36 | width: 90vw; 37 | } 38 | 39 | #incorrect-information-message { 40 | color: red; 41 | } 42 | 43 | #forgot-your-password { 44 | margin-top: 2vh; 45 | padding: 0 5vw; 46 | } 47 | 48 | #log-in-view__log-in-btn { 49 | background-color: darkgray; 50 | font-size: 1.1rem; 51 | margin-top: 3vh; 52 | padding-left: 70px; 53 | padding-right: 70px; 54 | } 55 | 56 | #log-in-view__form .valid{ 57 | background-color: #9A3497; 58 | } 59 | 60 | #log-in-view__keyboard { 61 | width: 100vw; 62 | height: 33vh; 63 | background-color: lightgray; 64 | /*position: absolute;*/ 65 | /*top: calc(100vh - 180px);*/ 66 | } 67 | -------------------------------------------------------------------------------- /snapchap/www/app/components/logIn/logIn.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 |
10 |

Log In

11 |
12 |

USERNAME OR EMAIL

13 | 14 |
15 |
16 |

PASSWORD

17 | 18 |
19 |

20 | {{response}} 21 |

22 | 25 | 26 |
27 | 28 |
29 | 30 |
31 |
32 | -------------------------------------------------------------------------------- /snapchap/www/app/components/logIn/logInCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('logInCtrl', function ($scope, $rootScope, $stateParams, mainService, $auth, $state) { 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.showMenu = function() { 6 | mainService.showMenu(); 7 | }; 8 | 9 | //login w/jsonwebtokens 10 | $scope.login = function(email, password) { 11 | console.log(email, password); 12 | $auth.login({ 13 | email: email, 14 | password: password, 15 | }).then(function (response) { 16 | console.log("signUpCtrl:", response); 17 | if(response.status === 200){ 18 | $auth.setToken(response) 19 | mainService.getCurrentUser().then(function(userInfo){ 20 | $rootScope.userInfo = userInfo; 21 | $rootScope.connect(); //dont move this 22 | }) 23 | 24 | $state.go('camera'); 25 | } 26 | }).catch(function (response) { 27 | console.log("signUpCtrl Error:", response); 28 | $scope.response = response.data.message; 29 | }); 30 | }; 31 | 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /snapchap/www/app/components/logInSignUp/logInSignUp.css: -------------------------------------------------------------------------------- 1 | #log-in-sign-up-view__main { 2 | width: 100vw; 3 | height: 75vh; 4 | background-color: yellow; 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | } 9 | #log-in-sign-up-view__ghost { 10 | position: relative; 11 | /*background-color: green;*/ 12 | bottom: 17px; 13 | height: 125px; 14 | width: 125px; 15 | background-image: url('../../../img/icon/snapchap-signin-loop.gif'); 16 | background-position: center center; 17 | background-repeat: no-repeat; 18 | -webkit-background-size: 100px; 19 | background-size: 100px; 20 | } 21 | 22 | .log-in-sign-up-view__btn { 23 | width: 100%; 24 | height: 12.5vh; 25 | width: 100vw; 26 | font-size: 1.64em; 27 | } 28 | 29 | #log-in-btn { 30 | background-color: RGBA(233, 39, 84, 1.00); 31 | } 32 | 33 | #sign-up-btn { 34 | background-color: RGBA(60, 178, 226, 1.00); 35 | } 36 | -------------------------------------------------------------------------------- /snapchap/www/app/components/logInSignUp/logInSignUp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 |
7 | 8 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /snapchap/www/app/components/logInSignUp/logInSignUpCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('logInSignUpCtrl', function ($scope, $stateParams, mainService) { 2 | 3 | mainService.hideMenu(); 4 | 5 | }); 6 | -------------------------------------------------------------------------------- /snapchap/www/app/components/myFriends/myFriends.css: -------------------------------------------------------------------------------- 1 | #my-friends-view nav { 2 | color: #9A3497; 3 | font-size: 1.4rem; 4 | /*font-size: 0.7rem;*/ 5 | text-align: center; 6 | padding: 18px; 7 | margin-top: 10px; 8 | background-color: #fff; 9 | } 10 | #my-friends-view .heading { 11 | display: flex; 12 | align-items: center; 13 | padding-left: 10px; 14 | width: 100vw; 15 | height: 40px; 16 | color: #9A3497; 17 | margin-bottom: -5px; 18 | } 19 | #my-friends-view ul { 20 | font-size: 1rem; 21 | } 22 | #my-friends-view li { 23 | color: black; 24 | padding: 17px 0; 25 | border-bottom: thin solid rgba(150, 150, 150, 0.5); 26 | position: relative; 27 | } 28 | #my-friends-view ul>li>span { 29 | position: relative; 30 | left: 70px; 31 | } 32 | #my-friends-view ul>li>span:before { 33 | content: ''; 34 | height: 40px; 35 | width: 40px; 36 | position: absolute; 37 | left: -55px; 38 | top: -12px; 39 | background-image: url('../../../img/icon/snapchat-bw.png'); 40 | -webkit-background-size: 40px; 41 | background-size: 40px; 42 | } 43 | #my-friends-view_back-btn { 44 | font-size: 1.7rem; 45 | color: #9A3497; 46 | left: 15px; 47 | top: 8px; 48 | } 49 | 50 | 51 | #my-friends-view__form { 52 | position: relative; 53 | border-top: thin solid rgba(150, 150, 150, 0.5); 54 | border-bottom: thin solid rgba(150, 150, 150, 0.5); 55 | display: flex; 56 | justify-content: center; 57 | align-items: center; 58 | } 59 | 60 | #my-friends-view input { 61 | position: relative; 62 | width: 100vw; 63 | left: 39px; 64 | font-size: 1.2em; 65 | padding: 22px 0; 66 | } 67 | -------------------------------------------------------------------------------- /snapchap/www/app/components/myFriends/myFriends.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 |
11 | 12 | 13 |
14 | 15 | 27 | 28 |

MY FRIENDS

29 | 30 |
    31 |
  • 32 | {{friend.username}} 33 |
  • 34 |
35 | 36 |
37 | 38 |
39 | -------------------------------------------------------------------------------- /snapchap/www/app/components/myFriends/myFriendsCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('myFriendsCtrl', function ($scope, $stateParams, mainService, $rootScope) { 2 | 3 | 4 | mainService.hideMenu(); 5 | 6 | $scope.showMenu = function() { 7 | mainService.showMenu(); 8 | }; 9 | 10 | $scope.getUserFriends = function(userId) { 11 | mainService.getUserFriends(userId).then(function(response) { 12 | console.log('response', response); 13 | $scope.friends = response; 14 | $scope.userId = userId; 15 | }) 16 | } 17 | $scope.getUserFriends($rootScope.userInfo.id); 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /snapchap/www/app/components/name/name.css: -------------------------------------------------------------------------------- 1 | #name-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | background-color: white; 7 | } 8 | #name-view .heading { 9 | display: flex; 10 | align-items: center; 11 | background-color: rgba(244, 244, 244, 1); 12 | padding-left: 14px; 13 | width: 100vw; 14 | height: 34px; 15 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 16 | color: #00A686; 17 | margin-left: 0px; 18 | } 19 | #name-view__back-btn { 20 | z-index: 1; 21 | color: #00A686; 22 | } 23 | #name-text { 24 | color: rgba(150, 150, 150, 1); 25 | margin: 10px 0px; 26 | font-size: 0.7rem; 27 | line-height: 0.9rem; 28 | background-color: white; 29 | width: 100%; 30 | } 31 | #name-warning { 32 | text-align: center; 33 | color: rgba(150, 150, 150, 1); 34 | margin: 18px 10vw; 35 | font-size: 0.7rem; 36 | line-height: 0.9rem; 37 | } 38 | 39 | #name-view { 40 | background-color: rgba(240, 240, 240, 1); 41 | } 42 | 43 | #name-input { 44 | background-color: white; 45 | height: 50px; 46 | width: 100%; 47 | font-size: 1.2rem; 48 | color: rgba(50, 50, 50, 1); 49 | padding-left: 15px; 50 | display: flex; 51 | align-items: center; 52 | } 53 | -------------------------------------------------------------------------------- /snapchap/www/app/components/name/name.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 |
9 | This is how you appear on Snapchat, so pick a name your friends know you by. 10 |
11 | 12 | 13 | 14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /snapchap/www/app/components/name/nameCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('nameCtrl', function($scope, mainService, $state, $rootScope){ 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.saveButton = false; 6 | $scope.showSaveButton = function(firstName, lastName){ 7 | if(firstName !== '' || lastName !== ''){ 8 | $scope.saveButton = true 9 | } else $scope.saveButton = false 10 | } 11 | 12 | $scope.saveFirstName = function(firstName){ 13 | if (firstName) { 14 | mainService.updateFirstName($rootScope.userInfo.id, firstName).then(function(response){ 15 | if (response.data) { 16 | mainService.getCurrentUser().then(function(userInfo){ 17 | $rootScope.userInfo = userInfo; 18 | $state.go('settings') 19 | }) 20 | } 21 | }) 22 | } 23 | } 24 | 25 | $scope.saveLastName = function(lastName){ 26 | if (lastName) { 27 | mainService.updateLastName($rootScope.userInfo.id, lastName).then(function(response){ 28 | if (response.data) { 29 | mainService.getCurrentUser().then(function(userInfo){ 30 | $rootScope.userInfo = userInfo; 31 | $state.go('settings') 32 | }) 33 | } 34 | }) 35 | } 36 | } 37 | }) 38 | -------------------------------------------------------------------------------- /snapchap/www/app/components/nav/nav.css: -------------------------------------------------------------------------------- 1 | /*#index-html__nav-bottom { 2 | display: flex; 3 | background-color: red; 4 | align-items: flex-end; 5 | justify-content: center; 6 | position: absolute; 7 | top: calc(100vh - 60px); 8 | height: 60px; 9 | width: 100vw; 10 | padding: 22px 11px 11px 11px; 11 | z-index: 4; 12 | transition: justify-content 0.3s; 13 | } 14 | 15 | #index-html__nav-bottom .icon-btn { 16 | position: absolute; 17 | bottom: 4vh; 18 | z-index: 4; 19 | } 20 | 21 | 22 | #index-html__chat-btn { 23 | background-image: url('../../../img/icon/chat-white.png'); 24 | left: 7vw; 25 | opacity: 1; 26 | transition: left 0.3s, opacity 0.3s; 27 | z-index: 4; 28 | } 29 | #index-html__chat-btn.chatty-nav { 30 | background-image: url('../../../img/icon/chat-gray.png'); 31 | left: 24vw; 32 | z-index: 4; 33 | } 34 | #index-html__chat-btn.chatty-nav:after { 35 | content: ''; 36 | height: 5px; 37 | width: 40px; 38 | position: absolute; 39 | left: 50%; 40 | transform: translateX(-50%); 41 | bottom: -10px; 42 | background-color: rgba(200, 200, 200, 1); 43 | border-radius: 5px; 44 | z-index: 4; 45 | } 46 | #index-html__chat-btn.profile-nav { 47 | opacity: 0; 48 | z-index: 4; 49 | } 50 | 51 | 52 | #index-html__take-photo-btn { 53 | background-image: url('../../../img/icon/circle-white-big.png'); 54 | width: 80px; 55 | height: 80px; 56 | /*margin: 0 40px;*/ 57 | -webkit-background-size: 80px; 58 | background-size: 80px; 59 | transition: -webkit-background-size 0.3s, background-size 0.3s, width 0.3s, height 0.3s, background-image 0.3s; 60 | z-index: 4; 61 | } 62 | #index-html__take-photo-btn.chatty-nav, 63 | #index-html__take-photo-btn.profile-nav { 64 | background-image: url('../../../img/icon/circle-gray-big.png'); 65 | width: 58px; 66 | height: 58px; 67 | -webkit-background-size: 58px; 68 | background-size: 58px; 69 | z-index: 4; 70 | } 71 | #index-html__take-photo-btn.profile-nav { 72 | background-image: url('../../../img/icon/circle-white-big.png'); 73 | z-index: 4; 74 | } 75 | 76 | 77 | #index-html__dots-btn { 78 | background-image: url('../../../img/icon/dots-white.png'); 79 | right: 7vw; 80 | opacity: 1; 81 | transition: right 0.3s, opacity 0.3s; 82 | z-index: 4; 83 | } 84 | #index-html__dots-btn.chatty-nav { 85 | background-image: url('../../../img/icon/dots-gray.png'); 86 | right: 24vw; 87 | z-index: 4; 88 | } 89 | #index-html__dots-btn.profile-nav { 90 | opacity: 0; 91 | z-index: 4; 92 | } 93 | 94 | 95 | .unicorn { 96 | z-index: 100; 97 | position: absolute; 98 | top: 50%; 99 | left: 50%; 100 | transform: translateX(-50%); 101 | color: white; 102 | }*/ 103 | -------------------------------------------------------------------------------- /snapchap/www/app/components/nav/nav.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /snapchap/www/app/components/nav/navCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('navCtrl', function ($scope, $stateParams, mainService) { 2 | 3 | mainService.showMenu(); 4 | 5 | 6 | }); 7 | -------------------------------------------------------------------------------- /snapchap/www/app/components/newPassword/newPassword.css: -------------------------------------------------------------------------------- 1 | #newPassword-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | background-color: white; 7 | } 8 | #newPassword-view .heading { 9 | display: flex; 10 | align-items: center; 11 | background-color: rgba(244, 244, 244, 1); 12 | padding-left: 14px; 13 | width: 100vw; 14 | height: 34px; 15 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 16 | color: #00A686; 17 | margin-left: 0px; 18 | } 19 | #newPassword-view__back-btn { 20 | z-index: 1; 21 | color: #00A686; 22 | } 23 | #newPassword-text { 24 | color: rgba(150, 150, 150, 1); 25 | margin: 10px 0px; 26 | font-size: 0.7rem; 27 | line-height: 0.9rem; 28 | background-color: white; 29 | width: 100%; 30 | } 31 | #newPassword-warning { 32 | text-align: center; 33 | color: rgba(150, 150, 150, 1); 34 | margin: 18px 10vw; 35 | font-size: 0.7rem; 36 | line-height: 0.9rem; 37 | } 38 | 39 | #newPassword-view { 40 | background-color: rgba(240, 240, 240, 1); 41 | } 42 | 43 | #newPassword-input { 44 | background-color: white; 45 | height: 50px; 46 | width: 100%; 47 | font-size: 1.2rem; 48 | color: rgba(50, 50, 50, 1); 49 | padding-left: 15px; 50 | display: flex; 51 | align-items: center; 52 | margin-bottom: 1px; 53 | } 54 | 55 | #newPassword-button { 56 | position: relative; 57 | left: 31%; 58 | margin-top: 20px; 59 | color: blue; 60 | outline: none; 61 | } 62 | 63 | #weak-emoji { 64 | position: relative; 65 | top: -87px; 66 | left: 79vw; 67 | color: red; 68 | } 69 | 70 | #ok-emoji { 71 | position: relative; 72 | top: -87px; 73 | left: 85vw; 74 | color: orange; 75 | } 76 | 77 | #strong-emoji { 78 | position: relative; 79 | top: -87px; 80 | left: 79vw; 81 | color: green; 82 | } 83 | -------------------------------------------------------------------------------- /snapchap/www/app/components/newPassword/newPassword.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 |
9 | Please choose a new password. Strong
passwords use a combination of lowercase
and uppercase letters, numbers, and symbols. 10 |
11 | 12 | 13 |
14 |
15 | weak 16 | 17 |
18 |
19 | ok 20 | 21 |
22 |
23 | strong 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 |
32 |
33 | -------------------------------------------------------------------------------- /snapchap/www/app/components/newPassword/newPasswordCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('newPasswordCtrl', function($scope, mainService, $state, $rootScope){ 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.saveButton = false; 6 | $scope.weak = false; 7 | $scope.ok = false; 8 | $scope.strong = false; 9 | 10 | 11 | $scope.verifyPasswordStrength = function(newPassword){ 12 | if(/\d/g.test(newPassword) && newPassword.length > 8){ 13 | $scope.weak = false; 14 | $scope.ok = false; 15 | $scope.strong = true; 16 | } 17 | if(!(/\d/g.test(newPassword)) && newPassword.length > 12) { 18 | $scope.weak = false; 19 | $scope.ok = true; 20 | $scope.strong = false; 21 | } 22 | if (!(/\d/g.test(newPassword)) && newPassword.length < 12 && newPassword.length !== 0) { 23 | $scope.weak = true; 24 | $scope.ok = false; 25 | $scope.strong = false; 26 | } 27 | else if (newPassword === '') { 28 | $scope.weak = false; 29 | $scope.ok = false; 30 | $scope.strong = false; 31 | } 32 | } 33 | 34 | $scope.verifyPasswordsMatch = function(newPassword, confirmPassword){ 35 | if (newPassword === confirmPassword) $scope.saveButton = true; 36 | else $scope.saveButton = false; 37 | } 38 | 39 | $scope.saveNewPassword = function(confirmPassword){ 40 | mainService.updatePassword($rootScope.userInfo.id, confirmPassword).then(function(response){ 41 | console.log(response); 42 | if (response.data) { 43 | mainService.getCurrentUser().then(function(userInfo){ 44 | $rootScope.userInfo = userInfo; 45 | $state.go('settings') 46 | }) 47 | } 48 | }) 49 | } 50 | 51 | }) 52 | -------------------------------------------------------------------------------- /snapchap/www/app/components/password/password.css: -------------------------------------------------------------------------------- 1 | #password-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | background-color: white; 7 | } 8 | #password-view .heading { 9 | display: flex; 10 | align-items: center; 11 | background-color: rgba(244, 244, 244, 1); 12 | padding-left: 14px; 13 | width: 100vw; 14 | height: 34px; 15 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 16 | color: #00A686; 17 | margin-left: 0px; 18 | } 19 | #password-view__back-btn { 20 | z-index: 1; 21 | color: #00A686; 22 | } 23 | #password-text { 24 | color: rgba(150, 150, 150, 1); 25 | margin: 10px 0px; 26 | font-size: 0.7rem; 27 | line-height: 0.9rem; 28 | background-color: white; 29 | width: 100%; 30 | } 31 | #password-warning { 32 | text-align: center; 33 | color: rgba(150, 150, 150, 1); 34 | margin: 18px 10vw; 35 | font-size: 0.7rem; 36 | line-height: 0.9rem; 37 | } 38 | 39 | #password-view { 40 | background-color: rgba(240, 240, 240, 1); 41 | } 42 | 43 | #password-input { 44 | background-color: white; 45 | height: 50px; 46 | width: 100%; 47 | font-size: 1.2rem; 48 | color: rgba(50, 50, 50, 1); 49 | padding-left: 15px; 50 | display: flex; 51 | align-items: center; 52 | 53 | } 54 | 55 | #password-view ion-content { 56 | display: flex; 57 | justify-content: center; 58 | } 59 | 60 | #password-button { 61 | position: absolute; 62 | left: 50%; 63 | transform: translate(-50%, 0); 64 | width: 100vw; 65 | margin-top: 20px; 66 | color: RGBA(60, 178, 226, 1.00); 67 | border: none; 68 | outline: none; 69 | outline: none; 70 | background-color: RGBA(60, 178, 226, 0); 71 | } 72 | 73 | #continue-button { 74 | position: absolute; 75 | left: 0%; 76 | bottom: 40%; 77 | width: 100vw; 78 | height: 50px; 79 | color: white; 80 | background-color: #00A686; 81 | border: none; 82 | } 83 | -------------------------------------------------------------------------------- /snapchap/www/app/components/password/password.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 |
9 | To set a new password, please enter your
current password first. 10 |
11 | 12 | 13 |
14 | 15 | 16 | 17 |
18 | -------------------------------------------------------------------------------- /snapchap/www/app/components/password/passwordCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('passwordCtrl', function ($scope, $stateParams, mainService, $rootScope, $state) { 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.continueButton = false; 6 | $scope.showContinueButton = function(password){ 7 | if(password !== ''){ 8 | $scope.continueButton = true 9 | } else $scope.continueButton = false 10 | } 11 | 12 | $scope.verifyPassword = function(password){ 13 | mainService.comparePassword($rootScope.userInfo.id, password).then(function(response){ 14 | if(response.data){ 15 | $state.go('newPassword') 16 | } 17 | }) 18 | } 19 | 20 | }); 21 | -------------------------------------------------------------------------------- /snapchap/www/app/components/profile/profile.css: -------------------------------------------------------------------------------- 1 | #profile-view__main-content { 2 | height: 100vh; 3 | } 4 | 5 | #profile-view { 6 | height: 100%; 7 | background-color: rgb(20, 20, 20); 8 | color: white; 9 | } 10 | 11 | #profile-view__main-content { 12 | display: flex; 13 | flex-direction: column; 14 | justify-content: flex-start; 15 | align-items: center; 16 | position: relative; 17 | top: 87px; 18 | } 19 | 20 | #snap-confetti { 21 | /*margin-top: 10vh;*/ 22 | height: 50vw; 23 | width: 50vw; 24 | position: relative; 25 | } 26 | 27 | #snap-confetti span { 28 | background-image: url('../../../img/snapchap-doodle300.png'); 29 | -webkit-background-size: 50vw; 30 | background-size: 50vw; 31 | background-repeat: no-repeat;; 32 | height: 60vw; 33 | width: 50vw; 34 | position: absolute; 35 | top: -20px; 36 | } 37 | 38 | #profile-view__share-btn { 39 | background-image: url('../../../img/icon/share-white.png'); 40 | cursor: pointer; 41 | 42 | } 43 | #profile-view__trophy-btn { 44 | background-image: url('../../../img/icon/trophy-white.png'); 45 | cursor: pointer; 46 | 47 | } 48 | #profile-view__settings-btn { 49 | background-image: url('../../../img/icon/settings-white.png'); 50 | cursor: pointer; 51 | 52 | } 53 | 54 | .profile-view__display-name { 55 | font-size: 1.05rem; 56 | margin-top: 1vh; 57 | } 58 | 59 | .profile-view__username { 60 | font-size: .85rem; 61 | margin-top: -10px; 62 | } 63 | 64 | .profile-view__main-content-btn { 65 | font-size: 1.4rem; 66 | margin-top: 5vh; 67 | } 68 | 69 | #profile-view__camera-btn { 70 | background-image: url('../../../img/icon/circle-white-big.png'); 71 | width: 64px; 72 | height: 64px; 73 | margin-top: 5vh; 74 | -webkit-background-size: 64px; 75 | background-size: 64px; 76 | cursor: pointer; 77 | } 78 | -------------------------------------------------------------------------------- /snapchap/www/app/components/profile/profile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 |
10 |
11 |

{{userInfo.first_name}} {{userInfo.last_name}}

12 |

username: {{userInfo.username}}

13 | 14 |
Added Me
15 |
Add Friends
16 |
My Friends
17 | 18 |
19 | 20 |
21 |
22 | -------------------------------------------------------------------------------- /snapchap/www/app/components/profile/profileCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('profileCtrl', function ($scope,$rootScope, $stateParams, mainService, $state) { 2 | 3 | $scope.hideMenu = function() { 4 | document.getElementById('index-html__nav-bottom').style.display = 'none'; 5 | }; 6 | 7 | 8 | mainService.showMenu(); 9 | $('#index-html__chat-btn, #index-html__take-photo-btn, #index-html__dots-btn').addClass('profile-nav'); 10 | 11 | $scope.getAddedme = function(){ 12 | mainService.getPendingFriendRequests($rootScope.userInfo.id).then(function(response){ 13 | $rootScope.pendingFriendRequests = response.data; 14 | }) 15 | } 16 | 17 | $scope.goToView = function(view) { 18 | $state.go(view); 19 | } 20 | 21 | 22 | 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /snapchap/www/app/components/sendTo/sendTo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 |
11 | 12 | 13 |
14 | 15 |
16 | 17 | 18 | 26 | 27 |
28 |

FRIENDS

29 |

Send a Snap directly to friends.

30 |
    31 |
  • 32 | 33 |
  • 34 |
35 |
36 | 37 |
38 | 39 | 40 | 41 |
42 | 43 | 44 |
45 |
46 | {{recipient}} 47 |
48 | 49 |
50 | 51 |
52 |
53 | -------------------------------------------------------------------------------- /snapchap/www/app/components/sendTo/sendToCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('sendToCtrl', function ($scope, $stateParams, $state, mainService, $rootScope, $ionicHistory) { 2 | 3 | 4 | $scope.getUserFriends = function(userId) { 5 | mainService.getUserFriends(userId).then(function(response) { 6 | // console.log('response', response); 7 | $scope.friends = response; 8 | }) 9 | } 10 | $scope.getUserFriends($rootScope.userInfo.id); 11 | 12 | 13 | 14 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 15 | Ticking a checkmark makes the Send Bar appear 16 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 17 | $scope.showSendBar = function() { 18 | $('.blue-checkbox').each(function() { 19 | if ($(this).is(':checked')) { 20 | fontWeight = 'bold'; 21 | bgColor = 'rgba(230, 230, 230, 0.7)' 22 | } 23 | else { 24 | fontWeight = 'normal'; 25 | bgColor = 'inherit'; 26 | } 27 | $(this).closest('label').css('font-weight', fontWeight); 28 | $(this).closest('li').css('background-color', bgColor); 29 | }); 30 | // var fontWeight = $(this).is(':checked') ? 'bold' : 'normal'; 31 | // $(this).closest('label').css('font-weight', fontWeight); 32 | // $(this).closest('li').css('background-color', 'lightgray'); 33 | 34 | var friendsChecked = $('.blue-checkbox').is(':checked') ? true : false; 35 | if (friendsChecked) { 36 | $('#send-to-view__send-bar').addClass('bar-is-visible'); 37 | } else $('#send-to-view__send-bar').removeClass('bar-is-visible'); 38 | }; 39 | 40 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 41 | Clicking a friend puts selected friends into an array (and displays in Send Bar) 42 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 43 | var recipients = [], recipientIds = []; 44 | 45 | $scope.selectRecipients = function(recipientId, recipientUsername) { 46 | if (recipientIds.indexOf(recipientId) === -1) { 47 | recipientIds.push(recipientId); 48 | recipients.push(recipientUsername); 49 | } else { 50 | recipientIds.splice(recipients.indexOf(recipientId), 1); 51 | recipients.splice(recipients.indexOf(recipientUsername), 1); 52 | } 53 | 54 | setTimeout(function() { 55 | // console.log($(window).width() - $('#recipient-list').width()); 56 | if ($(window).width() - $('#recipient-list').width() < 65) { 57 | $('#recipient-list').css('right', '65px'); 58 | } else $('#recipient-list').css('right', 'auto'); 59 | }, 10); 60 | 61 | $scope.recipients = recipients; 62 | } 63 | 64 | // $('.blue-checkbox').each(function() { 65 | // recipients.push($(this).closest('li').find('.friend-name').html()); 66 | // }); 67 | 68 | 69 | 70 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 71 | Send Button 72 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 73 | $scope.send = function() { 74 | // console.log('sendTo view: recipients:', $scope.recipients); 75 | // console.log('sendTo view: $rootScope.URI:', $rootScope.imgURI); 76 | // console.log('sendTo view: $rootScope.URI:', $rootScope.userInfo.id); 77 | mainService.sendMessage($rootScope.userInfo.id, recipientIds, $rootScope.imgURI); 78 | $ionicHistory.clearCache(); 79 | $ionicHistory.clearHistory(); 80 | mainService.showMenu(); 81 | $state.go('chat'); 82 | } 83 | 84 | 85 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 86 | Hard-coded arrays for testing 87 | /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 88 | // $scope.besties = ['Brian', 'James', 'Abbie', 'Lucy', 'Morty'] 89 | $scope.besties = ['Brian', 'Fred', 'Arthur', 'Jo', 'Molly', 'James', 'Abbie', 'Lucy', 'Morty', 'Bucky', 'George', 'Charlie', 'Nicholas', 'Ricky', 'Kathleen', 'Lee', 'Mal'] 90 | 91 | }); 92 | -------------------------------------------------------------------------------- /snapchap/www/app/components/settings/settings.css: -------------------------------------------------------------------------------- 1 | #settings-view .nav-top-heading { 2 | color: #00A686; 3 | text-align: center; 4 | padding: 18px; 5 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 6 | margin-top: 10px; 7 | position: relative; 8 | } 9 | #settings-view .heading { 10 | display: flex; 11 | align-items: center; 12 | background-color: rgba(244, 244, 244, 1); 13 | padding-left: 14px; 14 | width: 100vw; 15 | height: 34px; 16 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 17 | /*font-size: 0.85rem;*/ 18 | color: #00A686; 19 | margin-left: 0px; 20 | } 21 | #settings-view ul { 22 | font-size: 1.1rem; 23 | } 24 | #settings-view li { 25 | color: black; 26 | border-bottom: thin solid rgba(150, 150, 150, 0.3); 27 | padding: 13px 14px; 28 | } 29 | 30 | #settings-view__back-btn { 31 | z-index: 1; 32 | color: #00A686; 33 | position: absolute; 34 | top: 9px; 35 | left: 17px; 36 | } 37 | #settings-view .forward-btn { 38 | color: gray; 39 | } 40 | -------------------------------------------------------------------------------- /snapchap/www/app/components/settings/settings.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | MY ACCOUNT 12 |
    13 |
  • Name
  • 14 |
  • Username
  • 15 |
  • Birthday
  • 16 |
  • Mobile Number
  • 17 |
  • Email
  • 18 |
  • Bitmoji
  • 19 |
  • Password
  • 20 |
  • Login Verification
  • 21 |
  • Notifications
  • 22 |
  • Snapcash
  • 23 |
  • Memories
  • 24 |
25 | 26 | ADDITIONAL SERVICES 27 |
    28 |
  • Manage Preferences
  • 29 |
30 | 31 | WHO CAN… 32 |
    33 |
  • Contact Me
  • 34 |
  • View My Story
  • 35 |
  • See Me in Quick Add
  • 36 |
37 | 38 | MORE INFORMATION 39 |
    40 |
  • Support
  • 41 |
  • Privacy Policy
  • 42 |
  • Terms of Service
  • 43 |
  • Licenses
  • 44 |
45 | 46 | ACCOUNT ACTIONS 47 |
    48 |
  • Clear Cache
  • 49 |
  • Clear Conversations
  • 50 |
  • Restore Purchases
  • 51 |
  • Blocked
  • 52 |
  • Log Out
  • 53 |
54 |
55 |
56 | -------------------------------------------------------------------------------- /snapchap/www/app/components/settings/settingsCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('settingsCtrl', function ($scope, $rootScope, $stateParams, mainService, $auth, $state) { 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.showMenu = function() { 6 | mainService.showMenu(); 7 | }; 8 | 9 | $scope.logout = function(){ 10 | // $rootScope.disconnect() 11 | $auth.logout() 12 | .then(function() { 13 | console.log('You have been logged out'); 14 | $state.go('logInSignUp'); 15 | }); 16 | 17 | $scope.goToView = function(view) { 18 | $state.go(view); 19 | }; 20 | } 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-email/signUp-email.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/app/components/signUp/signUp-email/signUp-email.css -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-email/signUp-email.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 |
9 |

What's your email?

10 |
11 |

EMAIL

12 | 13 |
14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 |
22 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-email/signUp-emailCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('signUp-emailCtrl', function($scope, $state, tempService, $auth, mainService, $rootScope){ 2 | 3 | $scope.createUser = tempService.createUser; 4 | 5 | var password = $scope.createUser.password; 6 | 7 | $scope.createEmail = function(email){ 8 | $scope.createUser.email = email; 9 | console.log(tempService.createUser); 10 | $auth.signup(tempService.createUser).then(function (response) { 11 | console.log("signUpCtrl:", response); 12 | setTimeout(function() { 13 | $scope.login(email, password); 14 | }, 500); 15 | }).catch(function (response) { 16 | console.log("signUpCtrl Error:", response); 17 | }); 18 | }; 19 | 20 | 21 | $scope.login = function(email, password) { 22 | console.log(email, password); 23 | $auth.login({ 24 | email: email, 25 | password: password, 26 | }).then(function (response) { 27 | console.log("signUpCtrl:", response); 28 | if(response.status === 200){ 29 | $auth.setToken(response) 30 | mainService.getCurrentUser().then(function(userInfo){ 31 | $rootScope.userInfo = userInfo; 32 | $rootScope.connect(); //dont move this 33 | }) 34 | $state.go('camera'); 35 | } 36 | }).catch(function (response) { 37 | console.log("signUpCtrl Error:", response); 38 | }); 39 | }; 40 | 41 | }) 42 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-name/signUp-name.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/app/components/signUp/signUp-name/signUp-name.css -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-name/signUp-name.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/app/components/signUp/signUp-name/signUp-name.html -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-name/signUp-nameCtrl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/app/components/signUp/signUp-name/signUp-nameCtrl.js -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-password/signUp-password.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/app/components/signUp/signUp-password/signUp-password.css -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-password/signUp-password.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 |
9 |

What's your password?

10 |
11 |

PASSWORD

12 | 13 |
14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 |
22 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-password/signUp-passwordCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('signUp-passwordCtrl', function($scope, $state, tempService){ 2 | 3 | $scope.createUser = tempService.createUser; 4 | 5 | $scope.createPassword = function(password){ 6 | $scope.createUser.password = password; 7 | console.log(tempService.createUser); 8 | $state.go('signUp-email'); 9 | } 10 | }) 11 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-username/signUp-username.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/app/components/signUp/signUp-username/signUp-username.css -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-username/signUp-username.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 |
9 |

What's your username?

10 |
11 |

USERNAME

12 | 13 |
14 | 15 | 16 | 17 |
18 | 19 |
20 | 21 |
22 |
23 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp-username/signUp-usernameCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('signUp-usernameCtrl', function($scope, tempService, $state){ 2 | 3 | $scope.createUser = tempService.createUser; 4 | 5 | $scope.createUsername = function(username){ 6 | $scope.createUser.username = username.toLowerCase(); 7 | console.log(tempService.createUser); 8 | $state.go('signUp-password'); 9 | } 10 | 11 | }) 12 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp.css: -------------------------------------------------------------------------------- 1 | #sign-up-view-back-btn { 2 | color: #9A3497; 3 | } 4 | 5 | #sign-up-view h3 { 6 | font-size: 1.4rem; 7 | margin: 7vh 0 0 0; 8 | } 9 | #sign-up-view__form div { 10 | position: relative; 11 | } 12 | 13 | #sign-up-view .heading { 14 | color: gray; 15 | display: flex; 16 | justify-content: flex-start; 17 | position: absolute; 18 | left: -3vw; 19 | bottom: 27px; 20 | font-size: 0.7rem; 21 | } 22 | 23 | #sign-up-view__form { 24 | width: 100vw; 25 | height: 67vh; 26 | background-color: white: ; 27 | display: flex; 28 | flex-direction: column; 29 | justify-content: flex-start; 30 | align-items: center; 31 | } 32 | 33 | #sign-up-view input { 34 | margin-top: 8vh; 35 | width: 90vw; 36 | } 37 | 38 | #sign-up-view__terms { 39 | margin-top: 2vh; 40 | padding: 0 5vw; 41 | } 42 | 43 | #sign-up-view__sign-up-btn { 44 | background-color: darkgray; 45 | font-size: 1.1rem; 46 | margin-top: 3vh; 47 | } 48 | 49 | #sign-up-view__form .valid{ 50 | background-color: #9A3497; 51 | } 52 | 53 | #sign-up-view__keyboard { 54 | width: 100vw; 55 | height: 33vh; 56 | background-color: lightgray; 57 | /*position: absolute;*/ 58 | /*top: calc(100vh - 180px);*/ 59 | } 60 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 |
9 |

What's your name?

10 |
11 |

FIRST NAME

12 | 13 |
14 |
15 |

LAST NAME

16 | 17 |
18 |

19 | By tapping Sign Up & Accept, you agree to the Terms of Service and Privacy Policy. 20 |

21 | 22 |
23 | 24 |
25 | 26 |
27 |
28 | -------------------------------------------------------------------------------- /snapchap/www/app/components/signUp/signUpCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('signUpCtrl', function ($scope, $stateParams, mainService, tempService, $state) { 2 | 3 | mainService.hideMenu(); 4 | 5 | $scope.showMenu = function() { 6 | mainService.showMenu(); 7 | }; 8 | 9 | $scope.createUser = tempService.createUser; 10 | 11 | 12 | $scope.createName = function(firstName, lastName){ 13 | $scope.createUser.first_name = firstName; 14 | $scope.createUser.last_name = lastName; 15 | console.log(tempService.createUser); 16 | $state.go('signUp-username') 17 | } 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /snapchap/www/app/components/watchMessages/watchMessages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /snapchap/www/app/components/watchMessages/watchMessagesCtrl.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').controller('watchMessagesCtrl', function ($scope, $stateParams, mainService) { 2 | 3 | mainService.hideMenu(); 4 | 5 | }); 6 | -------------------------------------------------------------------------------- /snapchap/www/app/directives/animateChattyNav.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat') 2 | .directive('animateChattyNav', function() { 3 | return { 4 | 5 | restrict: 'AE', 6 | 7 | controller: function($scope, $state) { 8 | 9 | var navBtns = $('#index-html__chat-btn, #index-html__take-photo-btn, #index-html__dots-btn'); 10 | 11 | $scope.addChattyNav = function() { 12 | navBtns.addClass('chatty-nav'); 13 | } 14 | $scope.removeChattyNav = function() { 15 | navBtns.removeClass('chatty-nav'); 16 | } 17 | 18 | 19 | } 20 | 21 | }; 22 | }); 23 | -------------------------------------------------------------------------------- /snapchap/www/app/directives/animateProfileNav.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat') 2 | .directive('animateProfileNav', function() { 3 | return { 4 | 5 | restrict: 'AE', 6 | 7 | controller: function($scope, $state) { 8 | 9 | var navBtns = $('#index-html__chat-btn, #index-html__take-photo-btn, #index-html__dots-btn'); 10 | 11 | $scope.addProfileNav = function() { 12 | navBtns.addClass('profile-nav'); 13 | } 14 | $scope.removeProfileNav = function() { 15 | navBtns.removeClass('profile-nav'); 16 | } 17 | 18 | 19 | } 20 | 21 | }; 22 | }); 23 | -------------------------------------------------------------------------------- /snapchap/www/app/services/tempService.js: -------------------------------------------------------------------------------- 1 | angular.module('snapchat').service('tempService', function() { 2 | 3 | this.createUser = { 4 | 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /snapchap/www/img/9000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/9000.png -------------------------------------------------------------------------------- /snapchap/www/img/9000300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/9000300.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/arrow-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/arrow-blue.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/arrow.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/camera-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/camera-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/chat-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/chat-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/chat-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/chat-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/circle-gray-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/circle-gray-big.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/circle-white-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/circle-white-big.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/circle-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/circle-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/contacts-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/contacts-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/dots-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/dots-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/dots-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/dots-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/flash-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/flash-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/ghost-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/ghost-big.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/ghost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/ghost.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/pen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/pen.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/plus-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/plus-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/rear-camera-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/rear-camera-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/rewind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/rewind.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/save.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/search-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/search-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/search-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/search-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/settings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/settings-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/share-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/share-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/share-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/share-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchap-signin-big.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchap-signin-big.gif -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchap-signin-loop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchap-signin-loop.gif -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchap-signin.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchap-signin.gif -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchat-box-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchat-box-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchat-bw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchat-bw.gif -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchat-bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchat-bw.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchat-filled-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchat-filled-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchat-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchat-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/snapchat-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/snapchat-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/timer.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/trophy-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/trophy-white.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/undo.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/white-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/white-gradient.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/wifi-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/wifi-gray.png -------------------------------------------------------------------------------- /snapchap/www/img/icon/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/icon/x.png -------------------------------------------------------------------------------- /snapchap/www/img/invis1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/invis1.png -------------------------------------------------------------------------------- /snapchap/www/img/mustache200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/mustache200.png -------------------------------------------------------------------------------- /snapchap/www/img/rr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/rr.jpg -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/chat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/chat1.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/chat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/chat2.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/doodle1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/doodle1.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/doodle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/doodle2.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/login1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/login1.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/login2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/login2.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/sendto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/sendto.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/settings.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/snap1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/snap1.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/snap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/snap2.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/snap3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/snap3.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/snap4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/snap4.png -------------------------------------------------------------------------------- /snapchap/www/img/screenshot/snap5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/screenshot/snap5.png -------------------------------------------------------------------------------- /snapchap/www/img/snap-confetti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snap-confetti.png -------------------------------------------------------------------------------- /snapchap/www/img/snap1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snap1.png -------------------------------------------------------------------------------- /snapchap/www/img/snapchap-doodle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snapchap-doodle.png -------------------------------------------------------------------------------- /snapchap/www/img/snapchap-doodle270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snapchap-doodle270.png -------------------------------------------------------------------------------- /snapchap/www/img/snapchap-doodle300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snapchap-doodle300.png -------------------------------------------------------------------------------- /snapchap/www/img/snapchap230.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snapchap230.png -------------------------------------------------------------------------------- /snapchap/www/img/snapchap240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/snapchap240.png -------------------------------------------------------------------------------- /snapchap/www/img/thanksgiving270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/thanksgiving270.png -------------------------------------------------------------------------------- /snapchap/www/img/thanksgiving300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/img/thanksgiving300.png -------------------------------------------------------------------------------- /snapchap/www/lib/angular-animate/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.5.3", 4 | "license": "MIT", 5 | "main": "./angular-animate.js", 6 | "ignore": [], 7 | "dependencies": { 8 | "angular": "1.5.3" 9 | }, 10 | "homepage": "https://github.com/angular/bower-angular-animate", 11 | "_release": "1.5.3", 12 | "_resolution": { 13 | "type": "version", 14 | "tag": "v1.5.3", 15 | "commit": "671c738980fb0509b2b494716ccd8c004c39f368" 16 | }, 17 | "_source": "https://github.com/angular/bower-angular-animate.git", 18 | "_target": "1.5.3", 19 | "_originalSource": "angular-animate" 20 | } -------------------------------------------------------------------------------- /snapchap/www/lib/angular-animate/README.md: -------------------------------------------------------------------------------- 1 | # packaged angular-animate 2 | 3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | You can install this package either with `npm` or with `bower`. 10 | 11 | ### npm 12 | 13 | ```shell 14 | npm install angular-animate 15 | ``` 16 | 17 | Then add `ngAnimate` as a dependency for your app: 18 | 19 | ```javascript 20 | angular.module('myApp', [require('angular-animate')]); 21 | ``` 22 | 23 | ### bower 24 | 25 | ```shell 26 | bower install angular-animate 27 | ``` 28 | 29 | Then add a ` 33 | ``` 34 | 35 | Then add `ngAnimate` as a dependency for your app: 36 | 37 | ```javascript 38 | angular.module('myApp', ['ngAnimate']); 39 | ``` 40 | 41 | ## Documentation 42 | 43 | Documentation is available on the 44 | [AngularJS docs site](http://docs.angularjs.org/api/ngAnimate). 45 | 46 | ## License 47 | 48 | The MIT License 49 | 50 | Copyright (c) 2010-2015 Google, Inc. http://angularjs.org 51 | 52 | Permission is hereby granted, free of charge, to any person obtaining a copy 53 | of this software and associated documentation files (the "Software"), to deal 54 | in the Software without restriction, including without limitation the rights 55 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 56 | copies of the Software, and to permit persons to whom the Software is 57 | furnished to do so, subject to the following conditions: 58 | 59 | The above copyright notice and this permission notice shall be included in 60 | all copies or substantial portions of the Software. 61 | 62 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 63 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 64 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 65 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 66 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 67 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 68 | THE SOFTWARE. 69 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-animate/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.5.3", 4 | "license": "MIT", 5 | "main": "./angular-animate.js", 6 | "ignore": [], 7 | "dependencies": { 8 | "angular": "1.5.3" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-animate/index.js: -------------------------------------------------------------------------------- 1 | require('./angular-animate'); 2 | module.exports = 'ngAnimate'; 3 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-animate/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.5.3", 4 | "description": "AngularJS module for animations", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "animation", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-sanitize/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.5.3", 4 | "license": "MIT", 5 | "main": "./angular-sanitize.js", 6 | "ignore": [], 7 | "dependencies": { 8 | "angular": "1.5.3" 9 | }, 10 | "homepage": "https://github.com/angular/bower-angular-sanitize", 11 | "_release": "1.5.3", 12 | "_resolution": { 13 | "type": "version", 14 | "tag": "v1.5.3", 15 | "commit": "d62a5eecedc71828f6f935fbde6c07217a95988a" 16 | }, 17 | "_source": "https://github.com/angular/bower-angular-sanitize.git", 18 | "_target": "1.5.3", 19 | "_originalSource": "angular-sanitize" 20 | } -------------------------------------------------------------------------------- /snapchap/www/lib/angular-sanitize/README.md: -------------------------------------------------------------------------------- 1 | # packaged angular-sanitize 2 | 3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngSanitize). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | You can install this package either with `npm` or with `bower`. 10 | 11 | ### npm 12 | 13 | ```shell 14 | npm install angular-sanitize 15 | ``` 16 | 17 | Then add `ngSanitize` as a dependency for your app: 18 | 19 | ```javascript 20 | angular.module('myApp', [require('angular-sanitize')]); 21 | ``` 22 | 23 | ### bower 24 | 25 | ```shell 26 | bower install angular-sanitize 27 | ``` 28 | 29 | Add a ` 33 | ``` 34 | 35 | Then add `ngSanitize` as a dependency for your app: 36 | 37 | ```javascript 38 | angular.module('myApp', ['ngSanitize']); 39 | ``` 40 | 41 | ## Documentation 42 | 43 | Documentation is available on the 44 | [AngularJS docs site](http://docs.angularjs.org/api/ngSanitize). 45 | 46 | ## License 47 | 48 | The MIT License 49 | 50 | Copyright (c) 2010-2015 Google, Inc. http://angularjs.org 51 | 52 | Permission is hereby granted, free of charge, to any person obtaining a copy 53 | of this software and associated documentation files (the "Software"), to deal 54 | in the Software without restriction, including without limitation the rights 55 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 56 | copies of the Software, and to permit persons to whom the Software is 57 | furnished to do so, subject to the following conditions: 58 | 59 | The above copyright notice and this permission notice shall be included in 60 | all copies or substantial portions of the Software. 61 | 62 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 63 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 64 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 65 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 66 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 67 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 68 | THE SOFTWARE. 69 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-sanitize/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.5.3", 4 | "license": "MIT", 5 | "main": "./angular-sanitize.js", 6 | "ignore": [], 7 | "dependencies": { 8 | "angular": "1.5.3" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-sanitize/index.js: -------------------------------------------------------------------------------- 1 | require('./angular-sanitize'); 2 | module.exports = 'ngSanitize'; 3 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-sanitize/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.5.3", 4 | "description": "AngularJS module for sanitizing HTML", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "html", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-ui-router/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-ui-router", 3 | "version": "0.2.13", 4 | "main": "./release/angular-ui-router.js", 5 | "dependencies": { 6 | "angular": ">= 1.0.8" 7 | }, 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "bower_components", 12 | "component.json", 13 | "package.json", 14 | "lib", 15 | "config", 16 | "sample", 17 | "test", 18 | "tests", 19 | "ngdoc_assets", 20 | "Gruntfile.js", 21 | "files.js" 22 | ], 23 | "homepage": "https://github.com/angular-ui/angular-ui-router-bower", 24 | "_release": "0.2.13", 25 | "_resolution": { 26 | "type": "version", 27 | "tag": "0.2.13", 28 | "commit": "2e580f271defdec34f464aab0cca519e41d1ee33" 29 | }, 30 | "_source": "https://github.com/angular-ui/angular-ui-router-bower.git", 31 | "_target": "0.2.13", 32 | "_originalSource": "angular-ui-router" 33 | } -------------------------------------------------------------------------------- /snapchap/www/lib/angular-ui-router/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2014 The AngularUI Team, Karsten Sperling 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-ui-router/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-ui-router", 3 | "version": "0.2.13", 4 | "main": "./release/angular-ui-router.js", 5 | "dependencies": { 6 | "angular": ">= 1.0.8" 7 | }, 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "bower_components", 12 | "component.json", 13 | "package.json", 14 | "lib", 15 | "config", 16 | "sample", 17 | "test", 18 | "tests", 19 | "ngdoc_assets", 20 | "Gruntfile.js", 21 | "files.js" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-ui-router/src/stateFilters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc filter 3 | * @name ui.router.state.filter:isState 4 | * 5 | * @requires ui.router.state.$state 6 | * 7 | * @description 8 | * Translates to {@link ui.router.state.$state#methods_is $state.is("stateName")}. 9 | */ 10 | $IsStateFilter.$inject = ['$state']; 11 | function $IsStateFilter($state) { 12 | var isFilter = function (state) { 13 | return $state.is(state); 14 | }; 15 | isFilter.$stateful = true; 16 | return isFilter; 17 | } 18 | 19 | /** 20 | * @ngdoc filter 21 | * @name ui.router.state.filter:includedByState 22 | * 23 | * @requires ui.router.state.$state 24 | * 25 | * @description 26 | * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}. 27 | */ 28 | $IncludedByStateFilter.$inject = ['$state']; 29 | function $IncludedByStateFilter($state) { 30 | var includesFilter = function (state) { 31 | return $state.includes(state); 32 | }; 33 | includesFilter.$stateful = true; 34 | return includesFilter; 35 | } 36 | 37 | angular.module('ui.router.state') 38 | .filter('isState', $IsStateFilter) 39 | .filter('includedByState', $IncludedByStateFilter); 40 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-ui-router/src/view.js: -------------------------------------------------------------------------------- 1 | 2 | $ViewProvider.$inject = []; 3 | function $ViewProvider() { 4 | 5 | this.$get = $get; 6 | /** 7 | * @ngdoc object 8 | * @name ui.router.state.$view 9 | * 10 | * @requires ui.router.util.$templateFactory 11 | * @requires $rootScope 12 | * 13 | * @description 14 | * 15 | */ 16 | $get.$inject = ['$rootScope', '$templateFactory']; 17 | function $get( $rootScope, $templateFactory) { 18 | return { 19 | // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... }) 20 | /** 21 | * @ngdoc function 22 | * @name ui.router.state.$view#load 23 | * @methodOf ui.router.state.$view 24 | * 25 | * @description 26 | * 27 | * @param {string} name name 28 | * @param {object} options option object. 29 | */ 30 | load: function load(name, options) { 31 | var result, defaults = { 32 | template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {} 33 | }; 34 | options = extend(defaults, options); 35 | 36 | if (options.view) { 37 | result = $templateFactory.fromConfig(options.view, options.params, options.locals); 38 | } 39 | if (result && options.notify) { 40 | /** 41 | * @ngdoc event 42 | * @name ui.router.state.$state#$viewContentLoading 43 | * @eventOf ui.router.state.$view 44 | * @eventType broadcast on root scope 45 | * @description 46 | * 47 | * Fired once the view **begins loading**, *before* the DOM is rendered. 48 | * 49 | * @param {Object} event Event object. 50 | * @param {Object} viewConfig The view config properties (template, controller, etc). 51 | * 52 | * @example 53 | * 54 | *
55 |          * $scope.$on('$viewContentLoading',
56 |          * function(event, viewConfig){
57 |          *     // Access to all the view config properties.
58 |          *     // and one special property 'targetView'
59 |          *     // viewConfig.targetView
60 |          * });
61 |          * 
62 | */ 63 | $rootScope.$broadcast('$viewContentLoading', options); 64 | } 65 | return result; 66 | } 67 | }; 68 | } 69 | } 70 | 71 | angular.module('ui.router.state').provider('$view', $ViewProvider); 72 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular-ui-router/src/viewScroll.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc object 3 | * @name ui.router.state.$uiViewScrollProvider 4 | * 5 | * @description 6 | * Provider that returns the {@link ui.router.state.$uiViewScroll} service function. 7 | */ 8 | function $ViewScrollProvider() { 9 | 10 | var useAnchorScroll = false; 11 | 12 | /** 13 | * @ngdoc function 14 | * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll 15 | * @methodOf ui.router.state.$uiViewScrollProvider 16 | * 17 | * @description 18 | * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for 19 | * scrolling based on the url anchor. 20 | */ 21 | this.useAnchorScroll = function () { 22 | useAnchorScroll = true; 23 | }; 24 | 25 | /** 26 | * @ngdoc object 27 | * @name ui.router.state.$uiViewScroll 28 | * 29 | * @requires $anchorScroll 30 | * @requires $timeout 31 | * 32 | * @description 33 | * When called with a jqLite element, it scrolls the element into view (after a 34 | * `$timeout` so the DOM has time to refresh). 35 | * 36 | * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor, 37 | * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}. 38 | */ 39 | this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) { 40 | if (useAnchorScroll) { 41 | return $anchorScroll; 42 | } 43 | 44 | return function ($element) { 45 | $timeout(function () { 46 | $element[0].scrollIntoView(); 47 | }, 0, false); 48 | }; 49 | }]; 50 | } 51 | 52 | angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider); 53 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.5.3", 4 | "license": "MIT", 5 | "main": "./angular.js", 6 | "ignore": [], 7 | "dependencies": {}, 8 | "homepage": "https://github.com/angular/bower-angular", 9 | "_release": "1.5.3", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.5.3", 13 | "commit": "5a07c5107b4d24f41744a02b07717d55bad88e70" 14 | }, 15 | "_source": "https://github.com/angular/bower-angular.git", 16 | "_target": "1.5.3", 17 | "_originalSource": "angular" 18 | } -------------------------------------------------------------------------------- /snapchap/www/lib/angular/README.md: -------------------------------------------------------------------------------- 1 | # packaged angular 2 | 3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | You can install this package either with `npm` or with `bower`. 10 | 11 | ### npm 12 | 13 | ```shell 14 | npm install angular 15 | ``` 16 | 17 | Then add a ` 21 | ``` 22 | 23 | Or `require('angular')` from your code. 24 | 25 | ### bower 26 | 27 | ```shell 28 | bower install angular 29 | ``` 30 | 31 | Then add a ` 35 | ``` 36 | 37 | ## Documentation 38 | 39 | Documentation is available on the 40 | [AngularJS docs site](http://docs.angularjs.org/). 41 | 42 | ## License 43 | 44 | The MIT License 45 | 46 | Copyright (c) 2010-2015 Google, Inc. http://angularjs.org 47 | 48 | Permission is hereby granted, free of charge, to any person obtaining a copy 49 | of this software and associated documentation files (the "Software"), to deal 50 | in the Software without restriction, including without limitation the rights 51 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 52 | copies of the Software, and to permit persons to whom the Software is 53 | furnished to do so, subject to the following conditions: 54 | 55 | The above copyright notice and this permission notice shall be included in 56 | all copies or substantial portions of the Software. 57 | 58 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 59 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 60 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 61 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 62 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 63 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 64 | THE SOFTWARE. 65 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide:not(.ng-hide-animate) { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | 15 | .ng-animate-shim { 16 | visibility:hidden; 17 | } 18 | 19 | .ng-anchor { 20 | position:absolute; 21 | } 22 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/lib/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /snapchap/www/lib/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.5.3", 4 | "license": "MIT", 5 | "main": "./angular.js", 6 | "ignore": [], 7 | "dependencies": { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular/index.js: -------------------------------------------------------------------------------- 1 | require('./angular'); 2 | module.exports = angular; 3 | -------------------------------------------------------------------------------- /snapchap/www/lib/angular/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.5.3", 4 | "description": "HTML enhanced for web apps", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "client-side" 18 | ], 19 | "author": "Angular Core Team ", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/angular/angular.js/issues" 23 | }, 24 | "homepage": "http://angularjs.org" 25 | } 26 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/lib/ionic/fonts/ionicons.eot -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/lib/ionic/fonts/ionicons.ttf -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Snapchat/Snapchap/1310928a755ed4fe4a888f8c61cd22384bc47bb0/snapchap/www/lib/ionic/fonts/ionicons.woff -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_action-sheet.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Action Sheets 3 | * -------------------------------------------------- 4 | */ 5 | 6 | .action-sheet-backdrop { 7 | @include transition(background-color 150ms ease-in-out); 8 | position: fixed; 9 | top: 0; 10 | left: 0; 11 | z-index: $z-index-action-sheet; 12 | width: 100%; 13 | height: 100%; 14 | background-color: rgba(0,0,0,0); 15 | 16 | &.active { 17 | background-color: rgba(0,0,0,0.4); 18 | } 19 | } 20 | 21 | .action-sheet-wrapper { 22 | @include translate3d(0, 100%, 0); 23 | @include transition(all cubic-bezier(.36, .66, .04, 1) 500ms); 24 | position: absolute; 25 | bottom: 0; 26 | left: 0; 27 | right: 0; 28 | width: 100%; 29 | max-width: 500px; 30 | margin: auto; 31 | } 32 | 33 | .action-sheet-up { 34 | @include translate3d(0, 0, 0); 35 | } 36 | 37 | .action-sheet { 38 | margin-left: $sheet-margin; 39 | margin-right: $sheet-margin; 40 | width: auto; 41 | z-index: $z-index-action-sheet; 42 | overflow: hidden; 43 | 44 | .button { 45 | display: block; 46 | padding: 1px; 47 | width: 100%; 48 | border-radius: 0; 49 | border-color: $sheet-options-border-color; 50 | background-color: transparent; 51 | 52 | color: $sheet-options-text-color; 53 | font-size: 21px; 54 | 55 | &:hover { 56 | color: $sheet-options-text-color; 57 | } 58 | &.destructive { 59 | color: #ff3b30; 60 | &:hover { 61 | color: #ff3b30; 62 | } 63 | } 64 | } 65 | 66 | .button.active, .button.activated { 67 | box-shadow: none; 68 | border-color: $sheet-options-border-color; 69 | color: $sheet-options-text-color; 70 | background: $sheet-options-bg-active-color; 71 | } 72 | } 73 | 74 | .action-sheet-has-icons .icon { 75 | position: absolute; 76 | left: 16px; 77 | } 78 | 79 | .action-sheet-title { 80 | padding: $sheet-margin * 2; 81 | color: #8f8f8f; 82 | text-align: center; 83 | font-size: 13px; 84 | } 85 | 86 | .action-sheet-group { 87 | margin-bottom: $sheet-margin; 88 | border-radius: $sheet-border-radius; 89 | background-color: #fff; 90 | overflow: hidden; 91 | 92 | .button { 93 | border-width: 1px 0px 0px 0px; 94 | } 95 | .button:first-child:last-child { 96 | border-width: 0; 97 | } 98 | } 99 | 100 | .action-sheet-options { 101 | background: $sheet-options-bg-color; 102 | } 103 | 104 | .action-sheet-cancel { 105 | .button { 106 | font-weight: 500; 107 | } 108 | } 109 | 110 | .action-sheet-open { 111 | pointer-events: none; 112 | 113 | &.modal-open .modal { 114 | pointer-events: none; 115 | } 116 | 117 | .action-sheet-backdrop { 118 | pointer-events: auto; 119 | } 120 | } 121 | 122 | 123 | .platform-android { 124 | 125 | .action-sheet-backdrop.active { 126 | background-color: rgba(0,0,0,0.2); 127 | } 128 | 129 | .action-sheet { 130 | margin: 0; 131 | 132 | .action-sheet-title, 133 | .button { 134 | text-align: left; 135 | border-color: transparent; 136 | font-size: 16px; 137 | color: inherit; 138 | } 139 | 140 | .action-sheet-title { 141 | font-size: 14px; 142 | padding: 16px; 143 | color: #666; 144 | } 145 | 146 | .button.active, 147 | .button.activated { 148 | background: #e8e8e8; 149 | } 150 | } 151 | 152 | .action-sheet-group { 153 | margin: 0; 154 | border-radius: 0; 155 | background-color: #fafafa; 156 | } 157 | 158 | .action-sheet-cancel { 159 | display: none; 160 | } 161 | 162 | .action-sheet-has-icons { 163 | 164 | .button { 165 | padding-left: 56px; 166 | } 167 | 168 | } 169 | 170 | } 171 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_animations.scss: -------------------------------------------------------------------------------- 1 | 2 | // Slide up from the bottom, used for modals 3 | // ------------------------------- 4 | 5 | .slide-in-up { 6 | @include translate3d(0, 100%, 0); 7 | } 8 | .slide-in-up.ng-enter, 9 | .slide-in-up > .ng-enter { 10 | @include transition(all cubic-bezier(.1, .7, .1, 1) 400ms); 11 | } 12 | .slide-in-up.ng-enter-active, 13 | .slide-in-up > .ng-enter-active { 14 | @include translate3d(0, 0, 0); 15 | } 16 | 17 | .slide-in-up.ng-leave, 18 | .slide-in-up > .ng-leave { 19 | @include transition(all ease-in-out 250ms); 20 | } 21 | 22 | 23 | // Scale Out 24 | // Scale from hero (1 in this case) to zero 25 | // ------------------------------- 26 | 27 | @-webkit-keyframes scaleOut { 28 | from { -webkit-transform: scale(1); opacity: 1; } 29 | to { -webkit-transform: scale(0.8); opacity: 0; } 30 | } 31 | @keyframes scaleOut { 32 | from { transform: scale(1); opacity: 1; } 33 | to { transform: scale(0.8); opacity: 0; } 34 | } 35 | 36 | 37 | // Super Scale In 38 | // Scale from super (1.x) to duper (1 in this case) 39 | // ------------------------------- 40 | 41 | @-webkit-keyframes superScaleIn { 42 | from { -webkit-transform: scale(1.2); opacity: 0; } 43 | to { -webkit-transform: scale(1); opacity: 1 } 44 | } 45 | @keyframes superScaleIn { 46 | from { transform: scale(1.2); opacity: 0; } 47 | to { transform: scale(1); opacity: 1; } 48 | } 49 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_backdrop.scss: -------------------------------------------------------------------------------- 1 | 2 | .backdrop { 3 | position: fixed; 4 | top: 0; 5 | left: 0; 6 | z-index: $z-index-backdrop; 7 | 8 | width: 100%; 9 | height: 100%; 10 | 11 | background-color: $loading-backdrop-bg-color; 12 | 13 | visibility: hidden; 14 | opacity: 0; 15 | 16 | &.visible { 17 | visibility: visible; 18 | } 19 | &.active { 20 | opacity: 1; 21 | } 22 | 23 | @include transition($loading-backdrop-fadein-duration opacity linear); 24 | } 25 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_badge.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Badges 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .badge { 8 | @include badge-style($badge-default-bg, $badge-default-text); 9 | z-index: $z-index-badge; 10 | display: inline-block; 11 | padding: 3px 8px; 12 | min-width: 10px; 13 | border-radius: $badge-border-radius; 14 | vertical-align: baseline; 15 | text-align: center; 16 | white-space: nowrap; 17 | font-weight: $badge-font-weight; 18 | font-size: $badge-font-size; 19 | line-height: $badge-line-height; 20 | 21 | &:empty { 22 | display: none; 23 | } 24 | } 25 | 26 | //Be sure to override specificity of rule that 'badge color matches tab color by default' 27 | .tabs .tab-item .badge, 28 | .badge { 29 | &.badge-light { 30 | @include badge-style($badge-light-bg, $badge-light-text); 31 | } 32 | &.badge-stable { 33 | @include badge-style($badge-stable-bg, $badge-stable-text); 34 | } 35 | &.badge-positive { 36 | @include badge-style($badge-positive-bg, $badge-positive-text); 37 | } 38 | &.badge-calm { 39 | @include badge-style($badge-calm-bg, $badge-calm-text); 40 | } 41 | &.badge-assertive { 42 | @include badge-style($badge-assertive-bg, $badge-assertive-text); 43 | } 44 | &.badge-balanced { 45 | @include badge-style($badge-balanced-bg, $badge-balanced-text); 46 | } 47 | &.badge-energized { 48 | @include badge-style($badge-energized-bg, $badge-energized-text); 49 | } 50 | &.badge-royal { 51 | @include badge-style($badge-royal-bg, $badge-royal-text); 52 | } 53 | &.badge-dark { 54 | @include badge-style($badge-dark-bg, $badge-dark-text); 55 | } 56 | } 57 | 58 | // Quick fix for labels/badges in buttons 59 | .button .badge { 60 | position: relative; 61 | top: -1px; 62 | } 63 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_button-bar.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Button Bar 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .button-bar { 8 | @include display-flex(); 9 | @include flex(1); 10 | width: 100%; 11 | 12 | &.button-bar-inline { 13 | display: block; 14 | width: auto; 15 | 16 | @include clearfix(); 17 | 18 | > .button { 19 | width: auto; 20 | display: inline-block; 21 | float: left; 22 | } 23 | } 24 | 25 | &.bar-light > .button { 26 | border-color: $button-light-border; 27 | } 28 | &.bar-stable > .button { 29 | border-color: $button-stable-border; 30 | } 31 | &.bar-positive > .button { 32 | border-color: $button-positive-border; 33 | } 34 | &.bar-calm > .button { 35 | border-color: $button-calm-border; 36 | } 37 | &.bar-assertive > .button { 38 | border-color: $button-assertive-border; 39 | } 40 | &.bar-balanced > .button { 41 | border-color: $button-balanced-border; 42 | } 43 | &.bar-energized > .button { 44 | border-color: $button-energized-border; 45 | } 46 | &.bar-royal > .button { 47 | border-color: $button-royal-border; 48 | } 49 | &.bar-dark > .button { 50 | border-color: $button-dark-border; 51 | } 52 | } 53 | 54 | .button-bar > .button { 55 | @include flex(1); 56 | display: block; 57 | 58 | overflow: hidden; 59 | 60 | padding: 0 16px; 61 | 62 | width: 0; 63 | 64 | border-width: 1px 0px 1px 1px; 65 | border-radius: 0; 66 | text-align: center; 67 | text-overflow: ellipsis; 68 | white-space: nowrap; 69 | 70 | &:before, 71 | .icon:before { 72 | line-height: 44px; 73 | } 74 | 75 | &:first-child { 76 | border-radius: $button-border-radius 0px 0px $button-border-radius; 77 | } 78 | &:last-child { 79 | border-right-width: 1px; 80 | border-radius: 0px $button-border-radius $button-border-radius 0px; 81 | } 82 | &:only-child { 83 | border-radius: $button-border-radius; 84 | } 85 | } 86 | 87 | .button-bar > .button-small { 88 | &:before, 89 | .icon:before { 90 | line-height: 28px; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_grid.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Grid 3 | * -------------------------------------------------- 4 | * Using flexbox for the grid, inspired by Philip Walton: 5 | * http://philipwalton.github.io/solved-by-flexbox/demos/grids/ 6 | * By default each .col within a .row will evenly take up 7 | * available width, and the height of each .col with take 8 | * up the height of the tallest .col in the same .row. 9 | */ 10 | 11 | .row { 12 | @include display-flex(); 13 | padding: ($grid-padding-width / 2); 14 | width: 100%; 15 | } 16 | 17 | .row-wrap { 18 | @include flex-wrap(wrap); 19 | } 20 | 21 | .row-no-padding { 22 | padding: 0; 23 | 24 | > .col { 25 | padding: 0; 26 | } 27 | } 28 | 29 | .row + .row { 30 | margin-top: ($grid-padding-width / 2) * -1; 31 | padding-top: 0; 32 | } 33 | 34 | .col { 35 | @include flex(1); 36 | display: block; 37 | padding: ($grid-padding-width / 2); 38 | width: 100%; 39 | } 40 | 41 | 42 | /* Vertically Align Columns */ 43 | /* .row-* vertically aligns every .col in the .row */ 44 | .row-top { 45 | @include align-items(flex-start); 46 | } 47 | .row-bottom { 48 | @include align-items(flex-end); 49 | } 50 | .row-center { 51 | @include align-items(center); 52 | } 53 | .row-stretch { 54 | @include align-items(stretch); 55 | } 56 | .row-baseline { 57 | @include align-items(baseline); 58 | } 59 | 60 | /* .col-* vertically aligns an individual .col */ 61 | .col-top { 62 | @include align-self(flex-start); 63 | } 64 | .col-bottom { 65 | @include align-self(flex-end); 66 | } 67 | .col-center { 68 | @include align-self(center); 69 | } 70 | 71 | /* Column Offsets */ 72 | .col-offset-10 { 73 | margin-left: 10%; 74 | } 75 | .col-offset-20 { 76 | margin-left: 20%; 77 | } 78 | .col-offset-25 { 79 | margin-left: 25%; 80 | } 81 | .col-offset-33, .col-offset-34 { 82 | margin-left: 33.3333%; 83 | } 84 | .col-offset-50 { 85 | margin-left: 50%; 86 | } 87 | .col-offset-66, .col-offset-67 { 88 | margin-left: 66.6666%; 89 | } 90 | .col-offset-75 { 91 | margin-left: 75%; 92 | } 93 | .col-offset-80 { 94 | margin-left: 80%; 95 | } 96 | .col-offset-90 { 97 | margin-left: 90%; 98 | } 99 | 100 | 101 | /* Explicit Column Percent Sizes */ 102 | /* By default each grid column will evenly distribute */ 103 | /* across the grid. However, you can specify individual */ 104 | /* columns to take up a certain size of the available area */ 105 | .col-10 { 106 | @include flex(0, 0, 10%); 107 | max-width: 10%; 108 | } 109 | .col-20 { 110 | @include flex(0, 0, 20%); 111 | max-width: 20%; 112 | } 113 | .col-25 { 114 | @include flex(0, 0, 25%); 115 | max-width: 25%; 116 | } 117 | .col-33, .col-34 { 118 | @include flex(0, 0, 33.3333%); 119 | max-width: 33.3333%; 120 | } 121 | .col-40 { 122 | @include flex(0, 0, 40%); 123 | max-width: 40%; 124 | } 125 | .col-50 { 126 | @include flex(0, 0, 50%); 127 | max-width: 50%; 128 | } 129 | .col-60 { 130 | @include flex(0, 0, 60%); 131 | max-width: 60%; 132 | } 133 | .col-66, .col-67 { 134 | @include flex(0, 0, 66.6666%); 135 | max-width: 66.6666%; 136 | } 137 | .col-75 { 138 | @include flex(0, 0, 75%); 139 | max-width: 75%; 140 | } 141 | .col-80 { 142 | @include flex(0, 0, 80%); 143 | max-width: 80%; 144 | } 145 | .col-90 { 146 | @include flex(0, 0, 90%); 147 | max-width: 90%; 148 | } 149 | 150 | 151 | /* Responsive Grid Classes */ 152 | /* Adding a class of responsive-X to a row */ 153 | /* will trigger the flex-direction to */ 154 | /* change to column and add some margin */ 155 | /* to any columns in the row for clearity */ 156 | 157 | @include responsive-grid-break('.responsive-sm', $grid-responsive-sm-break); 158 | @include responsive-grid-break('.responsive-md', $grid-responsive-md-break); 159 | @include responsive-grid-break('.responsive-lg', $grid-responsive-lg-break); 160 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_list.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Lists 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .list { 8 | position: relative; 9 | padding-top: $item-border-width; 10 | padding-bottom: $item-border-width; 11 | padding-left: 0; // reset padding because ul and ol 12 | margin-bottom: 20px; 13 | } 14 | .list:last-child { 15 | margin-bottom: 0px; 16 | &.card{ 17 | margin-bottom:40px; 18 | } 19 | } 20 | 21 | 22 | /** 23 | * List Header 24 | * -------------------------------------------------- 25 | */ 26 | 27 | .list-header { 28 | margin-top: $list-header-margin-top; 29 | padding: $list-header-padding; 30 | background-color: $list-header-bg; 31 | color: $list-header-color; 32 | font-weight: bold; 33 | } 34 | 35 | // when its a card make sure it doesn't duplicate top and bottom borders 36 | .card.list .list-item { 37 | padding-right: 1px; 38 | padding-left: 1px; 39 | } 40 | 41 | 42 | /** 43 | * Cards and Inset Lists 44 | * -------------------------------------------------- 45 | * A card and list-inset are close to the same thing, except a card as a box shadow. 46 | */ 47 | 48 | .card, 49 | .list-inset { 50 | overflow: hidden; 51 | margin: ($content-padding * 2) $content-padding; 52 | border-radius: $card-border-radius; 53 | background-color: $card-body-bg; 54 | } 55 | 56 | .card { 57 | padding-top: $item-border-width; 58 | padding-bottom: $item-border-width; 59 | box-shadow: $card-box-shadow; 60 | 61 | .item { 62 | border-left: 0; 63 | border-right: 0; 64 | } 65 | .item:first-child { 66 | border-top: 0; 67 | } 68 | .item:last-child { 69 | border-bottom: 0; 70 | } 71 | } 72 | 73 | .padding { 74 | .card, .list-inset { 75 | margin-left: 0; 76 | margin-right: 0; 77 | } 78 | } 79 | 80 | .card .item, 81 | .list-inset .item, 82 | .padding > .list .item 83 | { 84 | &:first-child { 85 | border-top-left-radius: $card-border-radius; 86 | border-top-right-radius: $card-border-radius; 87 | 88 | .item-content { 89 | border-top-left-radius: $card-border-radius; 90 | border-top-right-radius: $card-border-radius; 91 | } 92 | } 93 | &:last-child { 94 | border-bottom-right-radius: $card-border-radius; 95 | border-bottom-left-radius: $card-border-radius; 96 | 97 | .item-content { 98 | border-bottom-right-radius: $card-border-radius; 99 | border-bottom-left-radius: $card-border-radius; 100 | } 101 | } 102 | } 103 | 104 | .card .item:last-child, 105 | .list-inset .item:last-child { 106 | margin-bottom: $item-border-width * -1; 107 | } 108 | 109 | .card .item, 110 | .list-inset .item, 111 | .padding > .list .item, 112 | .padding-horizontal > .list .item { 113 | margin-right: 0; 114 | margin-left: 0; 115 | 116 | &.item-input input { 117 | padding-right: 44px; 118 | } 119 | } 120 | .padding-left > .list .item { 121 | margin-left: 0; 122 | } 123 | .padding-right > .list .item { 124 | margin-right: 0; 125 | } 126 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_loading.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Loading 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .loading-container { 8 | position: absolute; 9 | left: 0; 10 | top: 0; 11 | right: 0; 12 | bottom: 0; 13 | 14 | z-index: $z-index-loading; 15 | 16 | @include display-flex(); 17 | @include justify-content(center); 18 | @include align-items(center); 19 | 20 | @include transition(0.2s opacity linear); 21 | visibility: hidden; 22 | opacity: 0; 23 | 24 | &:not(.visible) .icon, 25 | &:not(.visible) .spinner{ 26 | display: none; 27 | } 28 | &.visible { 29 | visibility: visible; 30 | } 31 | &.active { 32 | opacity: 1; 33 | } 34 | 35 | .loading { 36 | padding: $loading-padding; 37 | 38 | border-radius: $loading-border-radius; 39 | background-color: $loading-bg-color; 40 | 41 | color: $loading-text-color; 42 | 43 | text-align: center; 44 | text-overflow: ellipsis; 45 | font-size: $loading-font-size; 46 | 47 | h1, h2, h3, h4, h5, h6 { 48 | color: $loading-text-color; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_menu.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Menus 4 | * -------------------------------------------------- 5 | * Side panel structure 6 | */ 7 | 8 | .menu { 9 | position: absolute; 10 | top: 0; 11 | bottom: 0; 12 | z-index: $z-index-menu; 13 | overflow: hidden; 14 | 15 | min-height: 100%; 16 | max-height: 100%; 17 | width: $menu-width; 18 | 19 | background-color: $menu-bg; 20 | 21 | .scroll-content { 22 | z-index: $z-index-menu-scroll-content; 23 | } 24 | 25 | .bar-header { 26 | z-index: $z-index-menu-bar-header; 27 | } 28 | } 29 | 30 | .menu-content { 31 | @include transform(none); 32 | box-shadow: $menu-side-shadow; 33 | } 34 | 35 | .menu-open .menu-content .pane, 36 | .menu-open .menu-content .scroll-content { 37 | pointer-events: none; 38 | } 39 | .menu-open .menu-content .scroll-content .scroll { 40 | pointer-events: none; 41 | } 42 | .menu-open .menu-content .scroll-content:not(.overflow-scroll) { 43 | overflow: hidden; 44 | } 45 | 46 | .grade-b .menu-content, 47 | .grade-c .menu-content { 48 | @include box-sizing(content-box); 49 | right: -1px; 50 | left: -1px; 51 | border-right: 1px solid #ccc; 52 | border-left: 1px solid #ccc; 53 | box-shadow: none; 54 | } 55 | 56 | .menu-left { 57 | left: 0; 58 | } 59 | 60 | .menu-right { 61 | right: 0; 62 | } 63 | 64 | .aside-open.aside-resizing .menu-right { 65 | display: none; 66 | } 67 | 68 | .menu-animated { 69 | @include transition-transform($menu-animation-speed ease); 70 | } 71 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_modal.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Modals 4 | * -------------------------------------------------- 5 | * Modals are independent windows that slide in from off-screen. 6 | */ 7 | 8 | .modal-backdrop, 9 | .modal-backdrop-bg { 10 | position: fixed; 11 | top: 0; 12 | left: 0; 13 | z-index: $z-index-modal; 14 | width: 100%; 15 | height: 100%; 16 | } 17 | 18 | .modal-backdrop-bg { 19 | pointer-events: none; 20 | } 21 | 22 | .modal { 23 | display: block; 24 | position: absolute; 25 | top: 0; 26 | z-index: $z-index-modal; 27 | overflow: hidden; 28 | min-height: 100%; 29 | width: 100%; 30 | background-color: $modal-bg-color; 31 | } 32 | 33 | @media (min-width: $modal-inset-mode-break-point) { 34 | // inset mode is when the modal doesn't fill the entire 35 | // display but instead is centered within a large display 36 | .modal { 37 | top: $modal-inset-mode-top; 38 | right: $modal-inset-mode-right; 39 | bottom: $modal-inset-mode-bottom; 40 | left: $modal-inset-mode-left; 41 | min-height: $modal-inset-mode-min-height; 42 | width: (100% - $modal-inset-mode-left - $modal-inset-mode-right); 43 | } 44 | 45 | .modal.ng-leave-active { 46 | bottom: 0; 47 | } 48 | 49 | // remove ios header padding from inset header 50 | .platform-ios.platform-cordova .modal-wrapper .modal { 51 | .bar-header:not(.bar-subheader) { 52 | height: $bar-height; 53 | > * { 54 | margin-top: 0; 55 | } 56 | } 57 | .tabs-top > .tabs, 58 | .tabs.tabs-top { 59 | top: $bar-height; 60 | } 61 | .has-header, 62 | .bar-subheader { 63 | top: $bar-height; 64 | } 65 | .has-subheader { 66 | top: $bar-height + $bar-subheader-height; 67 | } 68 | .has-header.has-tabs-top { 69 | top: $bar-height + $tabs-height; 70 | } 71 | .has-header.has-subheader.has-tabs-top { 72 | top: $bar-height + $bar-subheader-height + $tabs-height; 73 | } 74 | } 75 | 76 | .modal-backdrop-bg { 77 | @include transition(opacity 300ms ease-in-out); 78 | background-color: $modal-backdrop-bg-active; 79 | opacity: 0; 80 | } 81 | 82 | .active .modal-backdrop-bg { 83 | opacity: 0.5; 84 | } 85 | } 86 | 87 | // disable clicks on all but the modal 88 | .modal-open { 89 | pointer-events: none; 90 | 91 | .modal, 92 | .modal-backdrop { 93 | pointer-events: auto; 94 | } 95 | // prevent clicks on modal when loading overlay is active though 96 | &.loading-active { 97 | .modal, 98 | .modal-backdrop { 99 | pointer-events: none; 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_platform.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Platform 4 | * -------------------------------------------------- 5 | * Platform specific tweaks 6 | */ 7 | 8 | .platform-ios.platform-cordova { 9 | // iOS has a status bar which sits on top of the header. 10 | // Bump down everything to make room for it. However, if 11 | // if its in Cordova, and set to fullscreen, then disregard the bump. 12 | &:not(.fullscreen) { 13 | .bar-header:not(.bar-subheader) { 14 | height: $bar-height + $ios-statusbar-height; 15 | 16 | &.item-input-inset .item-input-wrapper { 17 | margin-top: 19px !important; 18 | } 19 | 20 | > * { 21 | margin-top: $ios-statusbar-height; 22 | } 23 | } 24 | .tabs-top > .tabs, 25 | .tabs.tabs-top { 26 | top: $bar-height + $ios-statusbar-height; 27 | } 28 | 29 | .has-header, 30 | .bar-subheader { 31 | top: $bar-height + $ios-statusbar-height; 32 | } 33 | .has-subheader { 34 | top: $bar-height + $bar-subheader-height + $ios-statusbar-height; 35 | } 36 | .has-header.has-tabs-top { 37 | top: $bar-height + $tabs-height + $ios-statusbar-height; 38 | } 39 | .has-header.has-subheader.has-tabs-top { 40 | top: $bar-height + $bar-subheader-height + $tabs-height + $ios-statusbar-height; 41 | } 42 | } 43 | .popover{ 44 | .bar-header:not(.bar-subheader) { 45 | height: $bar-height; 46 | &.item-input-inset .item-input-wrapper { 47 | margin-top: -1px; 48 | } 49 | > * { 50 | margin-top: 0; 51 | } 52 | } 53 | .has-header, 54 | .bar-subheader { 55 | top: $bar-height; 56 | } 57 | .has-subheader { 58 | top: $bar-height + $bar-subheader-height; 59 | } 60 | } 61 | &.status-bar-hide { 62 | // Cordova doesn't adjust the body height correctly, this makes up for it 63 | margin-bottom: 20px; 64 | } 65 | } 66 | 67 | @media (orientation:landscape) { 68 | .platform-ios.platform-browser.platform-ipad { 69 | position: fixed; // required for iPad 7 Safari 70 | } 71 | } 72 | 73 | .platform-c:not(.enable-transitions) * { 74 | // disable transitions on grade-c devices (Android 2) 75 | -webkit-transition: none !important; 76 | transition: none !important; 77 | } 78 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_popover.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Popovers 4 | * -------------------------------------------------- 5 | * Popovers are independent views which float over content 6 | */ 7 | 8 | .popover-backdrop { 9 | position: fixed; 10 | top: 0; 11 | left: 0; 12 | z-index: $z-index-popover; 13 | width: 100%; 14 | height: 100%; 15 | background-color: $popover-backdrop-bg-inactive; 16 | 17 | &.active { 18 | background-color: $popover-backdrop-bg-active; 19 | } 20 | } 21 | 22 | .popover { 23 | position: absolute; 24 | top: 25%; 25 | left: 50%; 26 | z-index: $z-index-popover; 27 | display: block; 28 | margin-top: 12px; 29 | margin-left: -$popover-width / 2; 30 | height: $popover-height; 31 | width: $popover-width; 32 | background-color: $popover-bg-color; 33 | box-shadow: $popover-box-shadow; 34 | opacity: 0; 35 | 36 | .item:first-child { 37 | border-top: 0; 38 | } 39 | 40 | .item:last-child { 41 | border-bottom: 0; 42 | } 43 | 44 | &.popover-bottom { 45 | margin-top: -12px; 46 | } 47 | } 48 | 49 | 50 | // Set popover border-radius 51 | .popover, 52 | .popover .bar-header { 53 | border-radius: $popover-border-radius; 54 | } 55 | .popover .scroll-content { 56 | z-index: 1; 57 | margin: 2px 0; 58 | } 59 | .popover .bar-header { 60 | border-bottom-right-radius: 0; 61 | border-bottom-left-radius: 0; 62 | } 63 | .popover .has-header { 64 | border-top-right-radius: 0; 65 | border-top-left-radius: 0; 66 | } 67 | .popover-arrow { 68 | display: none; 69 | } 70 | 71 | 72 | // iOS Popover 73 | .platform-ios { 74 | 75 | .popover { 76 | box-shadow: $popover-box-shadow-ios; 77 | border-radius: $popover-border-radius-ios; 78 | } 79 | .popover .bar-header { 80 | @include border-top-radius($popover-border-radius-ios); 81 | } 82 | .popover .scroll-content { 83 | margin: 8px 0; 84 | border-radius: $popover-border-radius-ios; 85 | } 86 | .popover .scroll-content.has-header { 87 | margin-top: 0; 88 | } 89 | .popover-arrow { 90 | position: absolute; 91 | display: block; 92 | top: -17px; 93 | width: 30px; 94 | height: 19px; 95 | overflow: hidden; 96 | 97 | &:after { 98 | position: absolute; 99 | top: 12px; 100 | left: 5px; 101 | width: 20px; 102 | height: 20px; 103 | background-color: $popover-bg-color; 104 | border-radius: 3px; 105 | content: ''; 106 | @include rotate(-45deg); 107 | } 108 | } 109 | .popover-bottom .popover-arrow { 110 | top: auto; 111 | bottom: -10px; 112 | &:after { 113 | top: -6px; 114 | } 115 | } 116 | } 117 | 118 | 119 | // Android Popover 120 | .platform-android { 121 | 122 | .popover { 123 | margin-top: -32px; 124 | background-color: $popover-bg-color-android; 125 | box-shadow: $popover-box-shadow-android; 126 | 127 | .item { 128 | border-color: $popover-bg-color-android; 129 | background-color: $popover-bg-color-android; 130 | color: #4d4d4d; 131 | } 132 | &.popover-bottom { 133 | margin-top: 32px; 134 | } 135 | } 136 | 137 | .popover-backdrop, 138 | .popover-backdrop.active { 139 | background-color: transparent; 140 | } 141 | } 142 | 143 | 144 | // disable clicks on all but the popover 145 | .popover-open { 146 | pointer-events: none; 147 | 148 | .popover, 149 | .popover-backdrop { 150 | pointer-events: auto; 151 | } 152 | // prevent clicks on popover when loading overlay is active though 153 | &.loading-active { 154 | .popover, 155 | .popover-backdrop { 156 | pointer-events: none; 157 | } 158 | } 159 | } 160 | 161 | 162 | // wider popover on larger viewports 163 | @media (min-width: $popover-large-break-point) { 164 | .popover { 165 | width: $popover-large-width; 166 | margin-left: -$popover-large-width / 2; 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_popup.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Popups 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .popup-container { 8 | position: absolute; 9 | top: 0; 10 | left: 0; 11 | bottom: 0; 12 | right: 0; 13 | background: rgba(0,0,0,0); 14 | 15 | @include display-flex(); 16 | @include justify-content(center); 17 | @include align-items(center); 18 | 19 | z-index: $z-index-popup; 20 | 21 | // Start hidden 22 | visibility: hidden; 23 | &.popup-showing { 24 | visibility: visible; 25 | } 26 | 27 | &.popup-hidden .popup { 28 | @include animation-name(scaleOut); 29 | @include animation-duration($popup-leave-animation-duration); 30 | @include animation-timing-function(ease-in-out); 31 | @include animation-fill-mode(both); 32 | } 33 | 34 | &.active .popup { 35 | @include animation-name(superScaleIn); 36 | @include animation-duration($popup-enter-animation-duration); 37 | @include animation-timing-function(ease-in-out); 38 | @include animation-fill-mode(both); 39 | } 40 | 41 | .popup { 42 | width: $popup-width; 43 | max-width: 100%; 44 | max-height: 90%; 45 | 46 | border-radius: $popup-border-radius; 47 | background-color: $popup-background-color; 48 | 49 | @include display-flex(); 50 | @include flex-direction(column); 51 | } 52 | 53 | input, 54 | textarea { 55 | width: 100%; 56 | } 57 | } 58 | 59 | .popup-head { 60 | padding: 15px 10px; 61 | border-bottom: 1px solid #eee; 62 | text-align: center; 63 | } 64 | .popup-title { 65 | margin: 0; 66 | padding: 0; 67 | font-size: 15px; 68 | } 69 | .popup-sub-title { 70 | margin: 5px 0 0 0; 71 | padding: 0; 72 | font-weight: normal; 73 | font-size: 11px; 74 | } 75 | .popup-body { 76 | padding: 10px; 77 | overflow: auto; 78 | } 79 | 80 | .popup-buttons { 81 | @include display-flex(); 82 | @include flex-direction(row); 83 | padding: 10px; 84 | min-height: $popup-button-min-height + 20; 85 | 86 | .button { 87 | @include flex(1); 88 | display: block; 89 | min-height: $popup-button-min-height; 90 | border-radius: $popup-button-border-radius; 91 | line-height: $popup-button-line-height; 92 | 93 | margin-right: 5px; 94 | &:last-child { 95 | margin-right: 0px; 96 | } 97 | } 98 | } 99 | 100 | .popup-open { 101 | pointer-events: none; 102 | 103 | &.modal-open .modal { 104 | pointer-events: none; 105 | } 106 | 107 | .popup-backdrop, .popup { 108 | pointer-events: auto; 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_progress.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Progress 4 | * -------------------------------------------------- 5 | */ 6 | 7 | progress { 8 | display: block; 9 | margin: $progress-margin; 10 | width: $progress-width; 11 | } 12 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_radio.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Radio Button Inputs 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .item-radio { 8 | padding: 0; 9 | 10 | &:hover { 11 | cursor: pointer; 12 | } 13 | } 14 | 15 | .item-radio .item-content { 16 | /* give some room to the right for the checkmark icon */ 17 | padding-right: $item-padding * 4; 18 | } 19 | 20 | .item-radio .radio-icon { 21 | /* checkmark icon will be hidden by default */ 22 | position: absolute; 23 | top: 0; 24 | right: 0; 25 | z-index: $z-index-item-radio; 26 | visibility: hidden; 27 | padding: $item-padding - 2; 28 | height: 100%; 29 | font-size: 24px; 30 | } 31 | 32 | .item-radio input { 33 | /* hide any radio button inputs elements (the ugly circles) */ 34 | position: absolute; 35 | left: -9999px; 36 | 37 | &:checked + .radio-content .item-content { 38 | /* style the item content when its checked */ 39 | background: #f7f7f7; 40 | } 41 | 42 | &:checked + .radio-content .radio-icon { 43 | /* show the checkmark icon when its checked */ 44 | visibility: visible; 45 | } 46 | } 47 | 48 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_refresher.scss: -------------------------------------------------------------------------------- 1 | 2 | // Scroll refresher (for pull to refresh) 3 | .scroll-refresher { 4 | position: absolute; 5 | top: -60px; 6 | right: 0; 7 | left: 0; 8 | overflow: hidden; 9 | margin: auto; 10 | height: 60px; 11 | .ionic-refresher-content { 12 | position: absolute; 13 | bottom: 15px; 14 | left: 0; 15 | width: 100%; 16 | color: $scroll-refresh-icon-color; 17 | text-align: center; 18 | 19 | font-size: 30px; 20 | 21 | .text-refreshing, 22 | .text-pulling { 23 | font-size: 16px; 24 | line-height: 16px; 25 | } 26 | &.ionic-refresher-with-text { 27 | bottom: 10px; 28 | } 29 | } 30 | 31 | .icon-refreshing, 32 | .icon-pulling { 33 | width: 100%; 34 | -webkit-backface-visibility: hidden; 35 | backface-visibility: hidden; 36 | -webkit-transform-style: preserve-3d; 37 | transform-style: preserve-3d; 38 | } 39 | .icon-pulling { 40 | @include animation-name(refresh-spin-back); 41 | @include animation-duration(200ms); 42 | @include animation-timing-function(linear); 43 | @include animation-fill-mode(none); 44 | -webkit-transform: translate3d(0,0,0) rotate(0deg); 45 | transform: translate3d(0,0,0) rotate(0deg); 46 | } 47 | .icon-refreshing, 48 | .text-refreshing { 49 | display: none; 50 | } 51 | .icon-refreshing { 52 | @include animation-duration(1.5s); 53 | } 54 | 55 | &.active { 56 | .icon-pulling:not(.pulling-rotation-disabled) { 57 | @include animation-name(refresh-spin); 58 | -webkit-transform: translate3d(0,0,0) rotate(-180deg); 59 | transform: translate3d(0,0,0) rotate(-180deg); 60 | } 61 | &.refreshing { 62 | @include transition(-webkit-transform .2s); 63 | @include transition(transform .2s); 64 | -webkit-transform: scale(1,1); 65 | transform: scale(1,1); 66 | 67 | .icon-pulling, 68 | .text-pulling { 69 | display: none; 70 | } 71 | .icon-refreshing, 72 | .text-refreshing { 73 | display: block; 74 | } 75 | &.refreshing-tail { 76 | -webkit-transform: scale(0,0); 77 | transform: scale(0,0); 78 | } 79 | } 80 | } 81 | } 82 | .overflow-scroll > .scroll{ 83 | &.overscroll{ 84 | position:fixed; 85 | right: 0; 86 | left: 0; 87 | } 88 | -webkit-overflow-scrolling:touch; 89 | width:100%; 90 | } 91 | 92 | .overflow-scroll.padding > .scroll.overscroll{ 93 | padding: 10px; 94 | } 95 | @-webkit-keyframes refresh-spin { 96 | 0% { -webkit-transform: translate3d(0,0,0) rotate(0); } 97 | 100% { -webkit-transform: translate3d(0,0,0) rotate(180deg); } 98 | } 99 | 100 | @keyframes refresh-spin { 101 | 0% { transform: translate3d(0,0,0) rotate(0); } 102 | 100% { transform: translate3d(0,0,0) rotate(180deg); } 103 | } 104 | 105 | @-webkit-keyframes refresh-spin-back { 106 | 0% { -webkit-transform: translate3d(0,0,0) rotate(180deg); } 107 | 100% { -webkit-transform: translate3d(0,0,0) rotate(0); } 108 | } 109 | 110 | @keyframes refresh-spin-back { 111 | 0% { transform: translate3d(0,0,0) rotate(180deg); } 112 | 100% { transform: translate3d(0,0,0) rotate(0); } 113 | } 114 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_select.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Select 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .item-select { 8 | position: relative; 9 | 10 | select { 11 | @include appearance(none); 12 | position: absolute; 13 | top: 0; 14 | bottom: 0; 15 | right: 0; 16 | padding: 0 ($item-padding * 3) 0 $item-padding; 17 | max-width: 65%; 18 | 19 | border: none; 20 | background: $item-default-bg; 21 | color: #333; 22 | 23 | // hack to hide default dropdown arrow in FF 24 | text-indent: .01px; 25 | text-overflow: ''; 26 | 27 | white-space: nowrap; 28 | font-size: $font-size-base; 29 | 30 | cursor: pointer; 31 | direction: rtl; // right align the select text 32 | } 33 | 34 | select::-ms-expand { 35 | // hide default dropdown arrow in IE 36 | display: none; 37 | } 38 | 39 | option { 40 | direction: ltr; 41 | } 42 | 43 | &:after { 44 | position: absolute; 45 | top: 50%; 46 | right: $item-padding; 47 | margin-top: -3px; 48 | width: 0; 49 | height: 0; 50 | border-top: 5px solid; 51 | border-right: 5px solid rgba(0, 0, 0, 0); 52 | border-left: 5px solid rgba(0, 0, 0, 0); 53 | color: #999; 54 | content: ""; 55 | pointer-events: none; 56 | } 57 | &.item-light { 58 | select{ 59 | background:$item-light-bg; 60 | color:$item-light-text; 61 | } 62 | } 63 | &.item-stable { 64 | select{ 65 | background:$item-stable-bg; 66 | color:$item-stable-text; 67 | } 68 | &:after, .input-label{ 69 | color:darken($item-stable-border,30%); 70 | } 71 | } 72 | &.item-positive { 73 | select{ 74 | background:$item-positive-bg; 75 | color:$item-positive-text; 76 | } 77 | &:after, .input-label{ 78 | color:$item-positive-text; 79 | } 80 | } 81 | &.item-calm { 82 | select{ 83 | background:$item-calm-bg; 84 | color:$item-calm-text; 85 | } 86 | &:after, .input-label{ 87 | color:$item-calm-text; 88 | } 89 | } 90 | &.item-assertive { 91 | select{ 92 | background:$item-assertive-bg; 93 | color:$item-assertive-text; 94 | } 95 | &:after, .input-label{ 96 | color:$item-assertive-text; 97 | } 98 | } 99 | &.item-balanced { 100 | select{ 101 | background:$item-balanced-bg; 102 | color:$item-balanced-text; 103 | } 104 | &:after, .input-label{ 105 | color:$item-balanced-text; 106 | } 107 | } 108 | &.item-energized { 109 | select{ 110 | background:$item-energized-bg; 111 | color:$item-energized-text; 112 | } 113 | &:after, .input-label{ 114 | color:$item-energized-text; 115 | } 116 | } 117 | &.item-royal { 118 | select{ 119 | background:$item-royal-bg; 120 | color:$item-royal-text; 121 | } 122 | &:after, .input-label{ 123 | color:$item-royal-text; 124 | } 125 | } 126 | &.item-dark { 127 | select{ 128 | background:$item-dark-bg; 129 | color:$item-dark-text; 130 | } 131 | &:after, .input-label{ 132 | color:$item-dark-text; 133 | } 134 | } 135 | } 136 | 137 | select { 138 | &[multiple], 139 | &[size] { 140 | height: auto; 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_slide-box.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Slide Box 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .slider { 8 | position: relative; 9 | visibility: hidden; 10 | // Make sure items don't scroll over ever 11 | overflow: hidden; 12 | } 13 | 14 | .slider-slides { 15 | position: relative; 16 | height: 100%; 17 | } 18 | 19 | .slider-slide { 20 | position: relative; 21 | display: block; 22 | float: left; 23 | width: 100%; 24 | height: 100%; 25 | vertical-align: top; 26 | } 27 | 28 | .slider-slide-image { 29 | > img { 30 | width: 100%; 31 | } 32 | } 33 | 34 | .slider-pager { 35 | position: absolute; 36 | bottom: 20px; 37 | z-index: $z-index-slider-pager; 38 | width: 100%; 39 | height: 15px; 40 | text-align: center; 41 | 42 | .slider-pager-page { 43 | display: inline-block; 44 | margin: 0px 3px; 45 | width: 15px; 46 | color: #000; 47 | text-decoration: none; 48 | 49 | opacity: 0.3; 50 | 51 | &.active { 52 | @include transition(opacity 0.4s ease-in); 53 | opacity: 1; 54 | } 55 | } 56 | } 57 | 58 | //Disable animate service animations 59 | .slider-slide, 60 | .slider-pager-page { 61 | &.ng-enter, 62 | &.ng-leave, 63 | &.ng-animate { 64 | -webkit-transition: none !important; 65 | transition: none !important; 66 | } 67 | &.ng-animate { 68 | -webkit-animation: none 0s; 69 | animation: none 0s; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_spinner.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Spinners 3 | * -------------------------------------------------- 4 | */ 5 | 6 | .spinner { 7 | svg { 8 | width: $spinner-width; 9 | height: $spinner-height; 10 | } 11 | 12 | stroke: $spinner-default-stroke; 13 | fill: $spinner-default-fill; 14 | 15 | &.spinner-light { 16 | stroke: $spinner-light-stroke; 17 | fill: $spinner-light-fill; 18 | } 19 | &.spinner-stable { 20 | stroke: $spinner-stable-stroke; 21 | fill: $spinner-stable-fill; 22 | } 23 | &.spinner-positive { 24 | stroke: $spinner-positive-stroke; 25 | fill: $spinner-positive-fill; 26 | } 27 | &.spinner-calm { 28 | stroke: $spinner-calm-stroke; 29 | fill: $spinner-calm-fill; 30 | } 31 | &.spinner-balanced { 32 | stroke: $spinner-balanced-stroke; 33 | fill: $spinner-balanced-fill; 34 | } 35 | &.spinner-assertive { 36 | stroke: $spinner-assertive-stroke; 37 | fill: $spinner-assertive-fill; 38 | } 39 | &.spinner-energized { 40 | stroke: $spinner-energized-stroke; 41 | fill: $spinner-energized-fill; 42 | } 43 | &.spinner-royal { 44 | stroke: $spinner-royal-stroke; 45 | fill: $spinner-royal-fill; 46 | } 47 | &.spinner-dark { 48 | stroke: $spinner-dark-stroke; 49 | fill: $spinner-dark-fill; 50 | } 51 | } 52 | 53 | .spinner-android { 54 | stroke: #4b8bf4; 55 | } 56 | 57 | .spinner-ios, 58 | .spinner-ios-small { 59 | stroke: #69717d; 60 | } 61 | 62 | .spinner-spiral { 63 | .stop1 { 64 | stop-color: $spinner-light-fill; 65 | stop-opacity: 0; 66 | } 67 | 68 | &.spinner-light { 69 | .stop1 { 70 | stop-color: $spinner-default-fill; 71 | } 72 | .stop2 { 73 | stop-color: $spinner-light-fill; 74 | } 75 | } 76 | &.spinner-stable .stop2 { 77 | stop-color: $spinner-stable-fill; 78 | } 79 | &.spinner-positive .stop2 { 80 | stop-color: $spinner-positive-fill; 81 | } 82 | &.spinner-calm .stop2 { 83 | stop-color: $spinner-calm-fill; 84 | } 85 | &.spinner-balanced .stop2 { 86 | stop-color: $spinner-balanced-fill; 87 | } 88 | &.spinner-assertive .stop2 { 89 | stop-color: $spinner-assertive-fill; 90 | } 91 | &.spinner-energized .stop2 { 92 | stop-color: $spinner-energized-fill; 93 | } 94 | &.spinner-royal .stop2 { 95 | stop-color: $spinner-royal-fill; 96 | } 97 | &.spinner-dark .stop2 { 98 | stop-color: $spinner-dark-fill; 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/_type.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Typography 4 | * -------------------------------------------------- 5 | */ 6 | 7 | 8 | // Body text 9 | // ------------------------- 10 | 11 | p { 12 | margin: 0 0 ($line-height-computed / 2); 13 | } 14 | 15 | 16 | // Emphasis & misc 17 | // ------------------------- 18 | 19 | small { font-size: 85%; } 20 | cite { font-style: normal; } 21 | 22 | 23 | // Alignment 24 | // ------------------------- 25 | 26 | .text-left { text-align: left; } 27 | .text-right { text-align: right; } 28 | .text-center { text-align: center; } 29 | 30 | 31 | // Headings 32 | // ------------------------- 33 | 34 | h1, h2, h3, h4, h5, h6, 35 | .h1, .h2, .h3, .h4, .h5, .h6 { 36 | color: $base-color; 37 | font-weight: $headings-font-weight; 38 | font-family: $headings-font-family; 39 | line-height: $headings-line-height; 40 | 41 | small { 42 | font-weight: normal; 43 | line-height: 1; 44 | } 45 | } 46 | 47 | h1, .h1, 48 | h2, .h2, 49 | h3, .h3 { 50 | margin-top: $line-height-computed; 51 | margin-bottom: ($line-height-computed / 2); 52 | 53 | &:first-child { 54 | margin-top: 0; 55 | } 56 | 57 | + h1, + .h1, 58 | + h2, + .h2, 59 | + h3, + .h3 { 60 | margin-top: ($line-height-computed / 2); 61 | } 62 | } 63 | 64 | h4, .h4, 65 | h5, .h5, 66 | h6, .h6 { 67 | margin-top: ($line-height-computed / 2); 68 | margin-bottom: ($line-height-computed / 2); 69 | } 70 | 71 | h1, .h1 { font-size: floor($font-size-base * 2.60); } // ~36px 72 | h2, .h2 { font-size: floor($font-size-base * 2.15); } // ~30px 73 | h3, .h3 { font-size: ceil($font-size-base * 1.70); } // ~24px 74 | h4, .h4 { font-size: ceil($font-size-base * 1.25); } // ~18px 75 | h5, .h5 { font-size: $font-size-base; } 76 | h6, .h6 { font-size: ceil($font-size-base * 0.85); } // ~12px 77 | 78 | h1 small, .h1 small { font-size: ceil($font-size-base * 1.70); } // ~24px 79 | h2 small, .h2 small { font-size: ceil($font-size-base * 1.25); } // ~18px 80 | h3 small, .h3 small, 81 | h4 small, .h4 small { font-size: $font-size-base; } 82 | 83 | 84 | // Description Lists 85 | // ------------------------- 86 | 87 | dl { 88 | margin-bottom: $line-height-computed; 89 | } 90 | dt, 91 | dd { 92 | line-height: $line-height-base; 93 | } 94 | dt { 95 | font-weight: bold; 96 | } 97 | 98 | 99 | // Blockquotes 100 | // ------------------------- 101 | 102 | blockquote { 103 | margin: 0 0 $line-height-computed; 104 | padding: ($line-height-computed / 2) $line-height-computed; 105 | border-left: 5px solid gray; 106 | 107 | p { 108 | font-weight: 300; 109 | font-size: ($font-size-base * 1.25); 110 | line-height: 1.25; 111 | } 112 | 113 | p:last-child { 114 | margin-bottom: 0; 115 | } 116 | 117 | small { 118 | display: block; 119 | line-height: $line-height-base; 120 | &:before { 121 | content: '\2014 \00A0';// EM DASH, NBSP; 122 | } 123 | } 124 | } 125 | 126 | 127 | // Quotes 128 | // ------------------------- 129 | 130 | q:before, 131 | q:after, 132 | blockquote:before, 133 | blockquote:after { 134 | content: ""; 135 | } 136 | 137 | 138 | // Addresses 139 | // ------------------------- 140 | 141 | address { 142 | display: block; 143 | margin-bottom: $line-height-computed; 144 | font-style: normal; 145 | line-height: $line-height-base; 146 | } 147 | 148 | 149 | // Links 150 | // ------------------------- 151 | a { 152 | color: $link-color; 153 | } 154 | 155 | a.subdued { 156 | padding-right: 10px; 157 | color: #888; 158 | text-decoration: none; 159 | 160 | &:hover { 161 | text-decoration: none; 162 | } 163 | &:last-child { 164 | padding-right: 0; 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/ionic.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | @import 4 | // Ionicons 5 | "ionicons/ionicons.scss", 6 | 7 | // Variables 8 | "mixins", 9 | "variables", 10 | 11 | // Base 12 | "reset", 13 | "scaffolding", 14 | "type", 15 | 16 | // Components 17 | "action-sheet", 18 | "backdrop", 19 | "bar", 20 | "tabs", 21 | "menu", 22 | "modal", 23 | "popover", 24 | "popup", 25 | "loading", 26 | "items", 27 | "list", 28 | "badge", 29 | "slide-box", 30 | "slides", 31 | "refresher", 32 | "spinner", 33 | 34 | // Forms 35 | "form", 36 | "checkbox", 37 | "toggle", 38 | "radio", 39 | "range", 40 | "select", 41 | "progress", 42 | 43 | // Buttons 44 | "button", 45 | "button-bar", 46 | 47 | // Util 48 | "grid", 49 | "util", 50 | "platform", 51 | 52 | // Animations 53 | "animations", 54 | "transitions"; 55 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/ionicons/_ionicons-font.scss: -------------------------------------------------------------------------------- 1 | // Ionicons Font Path 2 | // -------------------------- 3 | 4 | @font-face { 5 | font-family: $ionicons-font-family; 6 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}"); 7 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}#iefix") format("embedded-opentype"), 8 | url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype"), 9 | url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"), 10 | url("#{$ionicons-font-path}/ionicons.woff") format("woff"), /* for WP8 */ 11 | url("#{$ionicons-font-path}/ionicons.svg?v=#{$ionicons-version}#Ionicons") format("svg"); 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | 16 | .ion { 17 | display: inline-block; 18 | font-family: $ionicons-font-family; 19 | speak: none; 20 | font-style: normal; 21 | font-weight: normal; 22 | font-variant: normal; 23 | text-transform: none; 24 | text-rendering: auto; 25 | line-height: 1; 26 | -webkit-font-smoothing: antialiased; 27 | -moz-osx-font-smoothing: grayscale; 28 | } 29 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/scss/ionicons/ionicons.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | @import "ionicons-variables"; 3 | /*! 4 | Ionicons, v2.0.1 5 | Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ 6 | https://twitter.com/benjsperry https://twitter.com/ionicframework 7 | MIT License: https://github.com/driftyco/ionicons 8 | 9 | Android-style icons originally built by Google’s 10 | Material Design Icons: https://github.com/google/material-design-icons 11 | used under CC BY http://creativecommons.org/licenses/by/4.0/ 12 | Modified icons to fit ionicon’s grid from original. 13 | */ 14 | 15 | @import "ionicons-font"; 16 | @import "ionicons-icons"; 17 | -------------------------------------------------------------------------------- /snapchap/www/lib/ionic/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.3.1", 3 | "codename": "el salvador", 4 | "date": "2016-05-12", 5 | "time": "18:21:10" 6 | } 7 | -------------------------------------------------------------------------------- /snapchap/www/lib/ngCordova/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngCordova", 3 | "version": "0.1.27-alpha", 4 | "homepage": "http://ngCordova.com/", 5 | "authors": [ 6 | "Max Lynch ", 7 | "Paolo Bernasconi ", 8 | "Chad Campbell " 9 | ], 10 | "description": "AngularJS Cordova wrappers for common Cordova plugins.", 11 | "main": [ 12 | "./dist/ng-cordova.js" 13 | ], 14 | "ignore": [ 15 | "**/.*", 16 | "gulpfile.js", 17 | "test", 18 | "src", 19 | "config", 20 | "demo", 21 | "CONTRIBUTING.md", 22 | "CODE_OF_CONDUCT.md" 23 | ], 24 | "dependencies": { 25 | "angular": ">= 1.2.23" 26 | }, 27 | "keywords": [ 28 | "ngCordova", 29 | "ng-cordova", 30 | "ngcordova", 31 | "ng cordova", 32 | "cordova", 33 | "phonegap", 34 | "angular", 35 | "angularjs", 36 | "ionic", 37 | "cordova plugin" 38 | ], 39 | "license": "MIT", 40 | "private": false, 41 | "devDependencies": { 42 | "angular": ">= 1.2.23", 43 | "angular-mocks": ">= 1.2.23", 44 | "jquery": "~2.1.1" 45 | }, 46 | "_release": "0.1.27-alpha", 47 | "_resolution": { 48 | "type": "version", 49 | "tag": "v0.1.27-alpha", 50 | "commit": "5d0450d887275c70ec227ef9b30e3e3f15646cb9" 51 | }, 52 | "_source": "https://github.com/driftyco/ng-cordova.git", 53 | "_target": "^0.1.27-alpha", 54 | "_originalSource": "ngCordova", 55 | "_direct": true 56 | } -------------------------------------------------------------------------------- /snapchap/www/lib/ngCordova/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.1.27-alpha (2016-07-06) 2 | 3 | 4 | ### 0.1.27-alpha (2016-07-06) 5 | 6 | 7 | Please refer to the [Github ngCordova Releases file](https://github.com/driftyco/ng-cordova/releases) for detailed information. 8 | -------------------------------------------------------------------------------- /snapchap/www/lib/ngCordova/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Drifty 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /snapchap/www/lib/ngCordova/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngCordova", 3 | "version": "0.1.27-alpha", 4 | "homepage": "http://ngCordova.com/", 5 | "authors": [ 6 | "Max Lynch ", 7 | "Paolo Bernasconi ", 8 | "Chad Campbell " 9 | ], 10 | "description": "AngularJS Cordova wrappers for common Cordova plugins.", 11 | "main": [ 12 | "./dist/ng-cordova.js" 13 | ], 14 | "ignore": [ 15 | "**/.*", 16 | "gulpfile.js", 17 | "test", 18 | "src", 19 | "config", 20 | "demo", 21 | "CONTRIBUTING.md", 22 | "CODE_OF_CONDUCT.md" 23 | ], 24 | "dependencies": { 25 | "angular": ">= 1.2.23" 26 | }, 27 | "keywords": [ 28 | "ngCordova", 29 | "ng-cordova", 30 | "ngcordova", 31 | "ng cordova", 32 | "cordova", 33 | "phonegap", 34 | "angular", 35 | "angularjs", 36 | "ionic", 37 | "cordova plugin" 38 | ], 39 | "license": "MIT", 40 | "private": false, 41 | "devDependencies": { 42 | "angular": ">= 1.2.23", 43 | "angular-mocks": ">= 1.2.23", 44 | "jquery": "~2.1.1" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /snapchap/www/lib/ngCordova/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ng-cordova", 3 | "private": false, 4 | "main": "dist/ng-cordova", 5 | "version": "0.1.27-alpha", 6 | "repository": { 7 | "url": "git://github.com/driftyco/ng-cordova.git" 8 | }, 9 | "devDependencies": { 10 | "gulp": "^3.7.0", 11 | "gulp-concat": "^2.2.0", 12 | "gulp-footer": "^1.0.4", 13 | "gulp-header": "^1.0.2", 14 | "gulp-jscs": "^1.6.0", 15 | "gulp-jshint": "^1.6.1", 16 | "gulp-prettify": "^0.3.0", 17 | "gulp-rename": "^1.2.0", 18 | "gulp-shell": "^0.2.10", 19 | "gulp-uglify": "^0.2.1", 20 | "jasmine-core": "^2.4.1", 21 | "jshint-stylish": "^0.4.0", 22 | "karma": "^0.13.21", 23 | "karma-chrome-launcher": "~0.2.2", 24 | "karma-coverage": "~0.5.3", 25 | "karma-jasmine": "~0.3.7", 26 | "karma-phantomjs-launcher": "~1.0.0", 27 | "minimist": "^0.1.0", 28 | "phantomjs-prebuilt": "^2.1.4" 29 | }, 30 | "licenses": [ 31 | { 32 | "type": "MIT" 33 | } 34 | ], 35 | "scripts": { 36 | "test": "gulp lint && gulp karma --browsers=PhantomJS --reporters=progress" 37 | }, 38 | "dependencies": { 39 | "conventional-changelog": "0.0.11", 40 | "fs": "0.0.2", 41 | "gulp-git": "^1.2.4", 42 | "q": "^1.1.2" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /snapchap/www/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "My Ionic App", 3 | "short_name": "My Ionic App", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "icons": [{ 7 | "src": "icon.png", 8 | "sizes": "512x512", 9 | "type": "image/png" 10 | }] 11 | } -------------------------------------------------------------------------------- /snapchap/www/service-worker.js: -------------------------------------------------------------------------------- 1 | self.addEventListener('activate', function (event) { 2 | 3 | }); 4 | 5 | self.addEventListener('fetch', function (event) { 6 | 7 | }); 8 | 9 | self.addEventListener('push', function (event) { 10 | 11 | }); --------------------------------------------------------------------------------