├── .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 |
14 |
15 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
14 |
15 |
16 |
17 |
18 |
26 |
27 |
28 |
FRIENDS
29 |
Send a Snap directly to friends.
30 |
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 |
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 |
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 |
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 |
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 | });
--------------------------------------------------------------------------------