diff --git a/README.md b/README.md index 279b78e..d4ac2fa 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,25 @@ # pokedex -Pokemon Pokedex App \ No newline at end of file +Pokemon Pokedex App + +Installation Plugins +-------------------- + +bower install ionic-material +https://recordnotfound.com/Ionic-Material-zachfitz-109229 +bower install robotodraft + + +ionic platform add android +ionic plugin add cordova-plugin-device +ionic plugin add cordova-plugin-console +ionic plugin add cordova-plugin-whitelist +ionic plugin add cordova-plugin-splashscreen +ionic plugin add cordova-plugin-statusbar +ionic plugin add ionic-plugin-keyboard +//https://github.com/poiuytrez/AndroidInAppBilling +ionic plugin add cordova-plugin-inappbrowser +ionic plugin add cordova-plugin-file +ionic plugin add cordova-plugin-file-transfer +ionic plugin add https://github.com/an-rahulpandey/cordova-plugin-dbcopy.git +ionic plugin add cordova-sqlite-storage diff --git a/www/css/style.css b/www/css/style.css index fa22927..ecfa09c 100644 --- a/www/css/style.css +++ b/www/css/style.css @@ -1 +1,82 @@ /* Empty. Add your own CSS if you like */ +.box { +padding: 1em; + width: 100%; + height: 100%; +} + +.back1 { + background-image: url('../img/slieder-back1.jpg'); + background-repeat: no-repeat;background-size: cover; +} + +.back2 { + background-image: url('../img/slieder-back2.jpg'); + background-repeat: no-repeat;background-size: cover; +} + +.back3 { + background-image: url('../img/slieder-back3.jpg'); + background-repeat: no-repeat;background-size: cover; +} + +.font-robo { + font-family: RobotoDraft; + font-size: 24px; +} + +.font-robo500small { + font-family: RobotoDraft; + font-size: 12px; + font-weight:500; +} + +.font-robo500medium { + font-family: RobotoDraft; + font-size: 18px; + font-weight:500; +} + +.font-robo500big { + font-family: RobotoDraft; + font-size: 24px; + font-weight:500; +} + + +.font-robo400small { + font-family: RobotoDraft; + font-size: 12px; + font-weight:400; +} + +.font-robo400medium { + font-family: RobotoDraft; + font-size: 18px; + font-weight:400; +} + +.font-robo400big { + font-family: RobotoDraft; + font-size: 24px; + font-weight:400; +} + +.font-robo300small { + font-family: RobotoDraft; + font-size: 12px; + font-weight:300; +} + +.font-robo300medium { + font-family: RobotoDraft; + font-size: 18px; + font-weight:300; +} + +.font-robo300big { + font-family: RobotoDraft; + font-size: 24px; + font-weight:300; +} + diff --git a/www/img/9Y8wAF.jpg b/www/img/9Y8wAF.jpg new file mode 100644 index 0000000..1d028f1 Binary files /dev/null and b/www/img/9Y8wAF.jpg differ diff --git a/www/img/B7GKxs.png b/www/img/B7GKxs.png new file mode 100644 index 0000000..3de039e Binary files /dev/null and b/www/img/B7GKxs.png differ diff --git a/www/img/Poke_Ball.svg b/www/img/Poke_Ball.svg new file mode 100644 index 0000000..385ce20 --- /dev/null +++ b/www/img/Poke_Ball.svg @@ -0,0 +1,121 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/www/img/Pokeball-opt.svg b/www/img/Pokeball-opt.svg new file mode 100644 index 0000000..6b970f7 --- /dev/null +++ b/www/img/Pokeball-opt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/www/img/bFi4q5.png b/www/img/bFi4q5.png new file mode 100644 index 0000000..0cd7d22 Binary files /dev/null and b/www/img/bFi4q5.png differ diff --git a/www/img/ekvmX9.jpg b/www/img/ekvmX9.jpg new file mode 100644 index 0000000..163a257 Binary files /dev/null and b/www/img/ekvmX9.jpg differ diff --git a/www/img/slieder-back1.jpg b/www/img/slieder-back1.jpg new file mode 100644 index 0000000..1d028f1 Binary files /dev/null and b/www/img/slieder-back1.jpg differ diff --git a/www/img/slieder-back2.jpg b/www/img/slieder-back2.jpg new file mode 100644 index 0000000..1d028f1 Binary files /dev/null and b/www/img/slieder-back2.jpg differ diff --git a/www/img/slieder-back3.jpg b/www/img/slieder-back3.jpg new file mode 100644 index 0000000..1d028f1 Binary files /dev/null and b/www/img/slieder-back3.jpg differ diff --git a/www/index.html b/www/index.html index 01daa1d..0aa46f3 100644 --- a/www/index.html +++ b/www/index.html @@ -6,14 +6,17 @@ - + + + + diff --git a/www/js/app.js b/www/js/app.js index 7522114..8b586a1 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -7,7 +7,7 @@ // 'starter.controllers' is found in controllers.js var db; -angular.module('starter', ['ionic', 'ngCordova', 'jett.ionic.filter.bar','starter.controllers', 'starter.services']) +angular.module('starter', ['ionic', 'ngCordova', 'jett.ionic.filter.bar','starter.controllers', 'starter.services','ionic-material']) .run(function($ionicPlatform, $window, $ionicHistory, $database, $ionicPopup, $state, $window, $rootScope) { diff --git a/www/lib/ionic-material/.bower.json b/www/lib/ionic-material/.bower.json new file mode 100644 index 0000000..5306bb8 --- /dev/null +++ b/www/lib/ionic-material/.bower.json @@ -0,0 +1,50 @@ +{ + "name": "ionic-material", + "version": "0.4.2", + "authors": [ + "Rai Butera", + "Zach Fitzgerald" + ], + "description": "Ionic Material - Material Design for the Ionic Framework", + "main": [ + "./dist/ionic.material.css", + "./dist/ionic.material.min.css", + "./dist/ionic.material.js", + "./dist/ionic.material.min.js" + ], + "keywords": [ + "Ionic", + "Material", + "Design", + "AngularJS", + "Framework", + "Hybrid", + "Apps", + "Mobile" + ], + "license": "MIT", + "homepage": "http://ionicmaterial.com", + "private": false, + "ignore": [ + "bower_components", + "demo", + "docs", + "Gulpfile.js", + "index.html", + "node_modules" + ], + "dependencies": { + "ionic": "~1.0.0", + "waves": "0.6" + }, + "_release": "0.4.2", + "_resolution": { + "type": "version", + "tag": "v0.4.2", + "commit": "b22187c9bc2041ef9e2494c04f885c468f38a117" + }, + "_source": "https://github.com/zachsoft/Ionic-Material.git", + "_target": "^0.4.2", + "_originalSource": "ionic-material", + "_direct": true +} \ No newline at end of file diff --git a/www/lib/ionic-material/.cz.json b/www/lib/ionic-material/.cz.json new file mode 100644 index 0000000..d32f3fc --- /dev/null +++ b/www/lib/ionic-material/.cz.json @@ -0,0 +1,3 @@ +{ + "path": "node_modules/cz-conventional-changelog/" +} \ No newline at end of file diff --git a/www/lib/ionic-material/.gitignore b/www/lib/ionic-material/.gitignore new file mode 100644 index 0000000..e7679c5 --- /dev/null +++ b/www/lib/ionic-material/.gitignore @@ -0,0 +1,159 @@ +#################################### +## OSX +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +#################################### +## editors (webstorm etc) +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + +# cache files for sublime text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# workspace files are user-specific +*.sublime-workspace + +# project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using SublimeText +# *.sublime-project + +# sftp configuration file +sftp-config.json + +#################################### +## node.js +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +#################################### +## client-side JS +bower_components + +## generator-angular-famous-ionic +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage/ +# Reports directory used by tools like protractor +reports/ + + +# Temp directories +temp/ +test/tmp +test/temp + +# Other temp +.sass-cache +.grunt + +# Build +.tmp + +*.sublime-project +#################################### diff --git a/www/lib/ionic-material/.jshintrc b/www/lib/ionic-material/.jshintrc new file mode 100644 index 0000000..16274e5 --- /dev/null +++ b/www/lib/ionic-material/.jshintrc @@ -0,0 +1,21 @@ +{ + "node": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "eqeqeq": true, + "eqnull": true, + "immed": true, + "indent": 2, + "latedef": "nofunc", + "newcap": true, + "nonew": true, + "noarg": true, + "quotmark": true, + "regexp": true, + "undef": true, + "unused": false, + "trailing": true, + "sub": true, + "maxlen": false +} diff --git a/www/lib/ionic-material/CONTRIBUTING.md b/www/lib/ionic-material/CONTRIBUTING.md new file mode 100644 index 0000000..7cfc505 --- /dev/null +++ b/www/lib/ionic-material/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# Contributing to Ionic Material +## General +- When posting an issue please include a codepen or plunkr and instructions to reproduce. + +## Development +### Workflow +1. **Create an [Issue](http://github.com/webchat/webchat-hybrid/issues)** (feature/bug/enhancement) + - Issues are our to-do list. + - Check for an existing issue related to subject +2. **Use [Git Flow](http://nvie.com/posts/a-successful-git-branching-model/)** + a. Fork and Make Feature/Hotfix Branch + - If simple, write unit tests + - Implement solution for feature/hotfix + - Run tests +3. **Commit** + - **NB:** Please Use [Conventional Changelog Commit Guidelines](http://github.com/ajoslin/conventional-changelog/blog/master/) + + use [commitizen](https://github.com/commitizen/cz-cli) to make your life easier with this + + Remember to reference related issues, e.g: `"fixes #123"` +4. Submit a **Pull Request** for finished feature/hotfix +5. Merge PR if no conflicts. + +Rinse & Repeat until all Ionic Apps look amazing and materialized. + +### Running Tests (TODO) + +- blah blah blah Karma etc. diff --git a/www/lib/ionic-material/LICENSE b/www/lib/ionic-material/LICENSE new file mode 100644 index 0000000..30df0f8 --- /dev/null +++ b/www/lib/ionic-material/LICENSE @@ -0,0 +1,23 @@ +Copyright 2015 Zach Fitzgerald +http://zachfitzgerald.com/ + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/www/lib/ionic-material/README.md b/www/lib/ionic-material/README.md new file mode 100644 index 0000000..4c1064f --- /dev/null +++ b/www/lib/ionic-material/README.md @@ -0,0 +1,128 @@ +# Ionic Material +Ionic Framework ♥ Material Design + +#### NB: all versions pre-1.0 are intended as a work in progress 'Alpha' +[![GitHub version](https://badge.fury.io/gh/zachsoft%2Fionic-material.svg)](http://badge.fury.io/gh/zachsoft%2Fionic-material) +[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) + +See our [releases](https://github.com/zachsoft/ionic-material/releases) and other [versions](https://github.com/zachsoft/ionic-material/tags) + +## Documentation and Demo App (in-browser simulation) +[Documentation Application @ ionicmaterial.com](http://ionicmaterial.com/demo/) +(Use the ☰ menu for Documentation sections) + +# Quick Start +## Step 1: Install using [Bower](http://bower.io) + +```shell + cd /PATH/TO/YOUR/PROJECT + bower install ionic-material +``` + +### Step 2: Add `RobotoDraft` font (by **Google**) +#### Via CDN: +```html + +``` + +#### via Bower +Check out [RobotoDraft by RaiButera on Github](https://github.com/raibutera/robotodraft) + +```shell +bower install robotodraft +``` + +**using Sass?** instructions for [raibutera/robotodraft](https://github.com/raibutera/robotodraft) + scss: + +```scss +$RobotoDraftFontPath: "../fonts"; // REMINDER: edit as appropriate! +$RobotoDraftFontName: "RobotoDraft"; +$RobotoDraftFontVersion: "1.0.0"; + +@import "/PATH/TO/YOUR/PROJECT/bower_components/robotodraft/sass/robotodraft.scss"; // REMINDER: edit as appropriate! +``` +**NB**: the above assumes you are using [Bower](http://bower.io) + +### Step 3: Add Ionic Material stylesheets and scripts +Add `ionic.material.min.css` and `ionic.material.min.js` to your `index.html` + +```html + + + + + + +``` + +### Step 4: Inject Ionic & Ionic Material into your Ionic App + +```javascript + var app = angular.module('YOUR_APP_NAME', ['ionic', 'ionic-material']); +``` + +### Step 5: Where appropriate, inject *ionicMaterialInk* and/or *ionicMaterialMotion* + +The angular services `ionicMaterialInk` and `ionicMaterialMotion` are used to activate animations. + +**You are all set to go!** :thumbsup: + +### Activating Animations + +**NB:** Make sure the relevant services are injected into your controllers. + +In your controllers: +- `ionicMaterialInk.displayEffect()` (will need to happen once on controller activation and then repeat every time the objects update) +- `ionicMaterialMotion.ripple()` (etc.) + +## Sample App +Ionic demo app "Thronester" is found within './demo' - You can also run 'index.html' locally to view in a webkit browser on a computer. + +## Builds +Instructions: +- `npm install` +- `gulp build` (or `gulp style` for just the stylesheets) + +Look at `gulpfile.js` for how the process works. + +## Development +This project uses [Webpack](http://webpack.github.io/) + +## Contributing +See our [CONTRIBUTING INSTRUCTIONS](./CONTRIBUTING.md) + +## Website +[http://ionicmaterial.com/](http://ionicmaterial.com/) + +## FAQ +### What is Ionic Material? +Ionic material is aimed at being an extension library for the Ionic Framework, meaning you won't change the way you develop your Ionic hybrid apps to have them materialized. Ionic Material aims to integrate the best representations of Material Design into a single add-on library for Ionic Developers. With the Polymer Project, ngMaterial, and other open source projects arising, we aim to be actively engaged and aligned with these, and other, related projects. + +As a 100% free open-source project, **developer participation is encouraged**, as much or little as possible. + +### Can I use Ionic and Angular Material together? +*Ionic* and *Angular Material* are fairly incompatible (you can add them to the same project, but the styling will be extremely inconsistent and none of the UI components will work cross-framework, eg. an ionic side menu with material tabs). Ionic is 1.0 and angular material is still pre-1.0. + +**Ionic Material** is best explained as a "material extension" to Ionic, rather than to Angular as a whole. The difference isn't just semantics - Ionic Material extends the actual ionic framework namespace (in JS), renders material styles on the ionic elements (following ionic's conventions), and will aim to follow the releases of Ionic, and support material theming, ink, and motion for any new Ionic release. + +Ionic Material will pull in the best ideas of Angular Material, Paper/Polymer, etc. and by the same tune, Ionic Material will also abstract the parts of the framework that would be beneficial outside of ionic apps (like animations, motions) into their standalone git projects so they can be adopted for use in -any- web project that uses material design. + +### How can I contribute? +Please see our [contribution guidelines](CONTRIBUTING.md) + +Want to become an official collaborator? Please contact @zachsoft + + +## Roadmap and the Future +See [Milestones](https://github.com/zachsoft/ionic-material/milestones) + +### Rough Ideas +0. Complete implementation of Material Design specification. + +1. Full UI Kit w/ dozens of templates for rapid application development. Inspired by amazing kits like: https://ui8.net/product/material-ui-kit. + +2. Increase animation performance. We're really stretching the limits of hybrid app animations - if **you** have ideas on performance adjustments, we're all ears and would love the insight. + +3. Port animate.js with bezier curve adjustments to match "authentic motion" spec of Material Design. + +4. Bug fixes diff --git a/www/lib/ionic-material/bower.json b/www/lib/ionic-material/bower.json new file mode 100644 index 0000000..1a46310 --- /dev/null +++ b/www/lib/ionic-material/bower.json @@ -0,0 +1,40 @@ +{ + "name": "ionic-material", + "version": "0.4.2", + "authors": [ + "Rai Butera", + "Zach Fitzgerald" + ], + "description": "Ionic Material - Material Design for the Ionic Framework", + "main": [ + "./dist/ionic.material.css", + "./dist/ionic.material.min.css", + "./dist/ionic.material.js", + "./dist/ionic.material.min.js" + ], + "keywords": [ + "Ionic", + "Material", + "Design", + "AngularJS", + "Framework", + "Hybrid", + "Apps", + "Mobile" + ], + "license": "MIT", + "homepage": "http://ionicmaterial.com", + "private": false, + "ignore": [ + "bower_components", + "demo", + "docs", + "Gulpfile.js", + "index.html", + "node_modules" + ], + "dependencies": { + "ionic": "~1.0.0", + "waves": "0.6" + } +} diff --git a/www/lib/ionic-material/dist/ionic.material.css b/www/lib/ionic-material/dist/ionic.material.css new file mode 100644 index 0000000..acfce89 --- /dev/null +++ b/www/lib/ionic-material/dist/ionic.material.css @@ -0,0 +1,2933 @@ +/* Directives : MD Label +==================================*/ +.item-md-label { + display: block; + background: transparent; + box-shadow: none; + margin-left: 12px; + margin-right: 12px; + padding: 30px 0 0; } + +.item-md-label .input-label { + position: absolute; + padding: 5px 0 0; + z-index: 2; + -webkit-transform: translate3d(0, -30px, 0) scale(1); + transform: translate3d(0, -30px, 0) scale(1); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + color: #fff; + opacity: 0.5; + filter: alpha(opacity=50); + -webkit-transform-origin: 0; + -ms-transform-origin: 0; + transform-origin: 0; } + +.item-md-label input { + background-color: rgba(0, 0, 0, 0.6); + bottom: 0; + color: #fff; + letter-spacing: 0.25rem; + padding: 20px 10px; + position: relative; + z-index: 1; } + +.item-md-label .highlight { + position: absolute; + bottom: 0; + height: 2px; + left: 0; + width: 100%; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + -webkit-transition: all 0.15s ease; + transition: all 0.15s ease; + z-index: 1; } + +.item-md-label .highlight-light { + background: #fff; } + +.item-md-label .highlight-stable { + background: #f8f8f8; } + +.item-md-label .highlight-positive { + background: #387ef5; } + +.item-md-label .highlight-calm { + background: #11c1f3; } + +.item-md-label .highlight-balanced { + background: #33cd5f; } + +.item-md-label .highlight-energized { + background: #ffc900; } + +.item-md-label .highlight-assertive { + background: #ef473a; } + +.item-md-label .highlight-royal { + background: #886aea; } + +.item-md-label .highlight-dark { + background: #444; } + +.item-md-label .input-label { + letter-spacing: 0.25rem; + padding: 0 10px; } + +.item-md-label input:focus ~ .input-label, .item-md-label input.used ~ .input-label { + font-weight: bold; + opacity: 0.7; + filter: alpha(opacity=70); + padding: 0; + text-transform: uppercase; + -webkit-transform: translate3d(0, -60px, 0) scale(0.9); + transform: translate3d(0, -60px, 0) scale(0.9); } + +.item-md-label input:focus ~ .highlight { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +/* Bar - Header - Expanded +==================================*/ +.expanded .bar.bar-header, +.bar.bar-header.expanded { + height: 75px; } + +.expanded.bar.bar-header .title, +.bar.bar-header.expanded .title { + bottom: 0; + top: initial; + padding-left: 16px; } + +.expanded .bar.bar-header .title.fab-left, +.bar.bar-header.expanded .title.fab-left { + bottom: 0; + left: 90px; + position: absolute; + right: initial; + top: initial; } + +.expanded .bar.bar-header .title.fab-right, +.bar.bar-header.expanded .title.fab-right { + bottom: 0; + left: 4px; + position: absolute; + top: initial; + right: initial; } + +.expanded .bar.bar-header + .button-fab, +.bar.bar-header.expanded + .button-fab { + top: 50px; } + +.expanded .bar.bar-header.push-down, +.bar.bar-header.expanded.push-down { + height: 44px; + overflow: hidden; } + +.expanded .bar.bar-header, +.bar.bar-header.expanded { + -webkit-transition: height 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: height 1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.expanded .bar.bar-header + .button-fab, +.bar.bar-header.expanded + .button-fab { + -webkit-transition: all 1.1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1.1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0) scale(1); + transform: translate3d(0, 0, 0) scale(1); } + +.expanded .bar.bar-header.push-down + .button-fab, +.bar.bar-header.expanded.push-down + .button-fab { + top: 0; + -webkit-transform: translate3d(-100px, -100px, 0) scale(2.5); + transform: translate3d(-100px, -100px, 0) scale(2.5); } + +.expanded .bar.bar-header.push-down .title, +.bar.bar-header.expanded.push-down .title { + opacity: 0; + filter: alpha(opacity=0); + left: initial; + right: initial; } + +.expanded .bar.bar-header .title, +.bar.bar-header.expanded .title { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: all 2s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 2s cubic-bezier(0.55, 0, 0.1, 1); } + +.expanded .bar.bar-header .title, .bar.bar-header.expanded .title { + bottom: 0; + left: 42px !important; + top: initial; } + +.expanded.has-header-fab-left .bar.bar-header .title, .bar.bar-header.expanded.has-header-fab-left .title { + left: 76px !important; } + +/* Bar +==================================*/ +.bar { + z-index: 2; + font-size: 1.3em; + width: 100%; + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); } + +.bar .button { + min-width: 38px; + z-index: 3; } + +.bar .no-text span.back-text { + display: none; } + +.bar .title sup { + opacity: 0.7; } + +.bar.bar-header .button + .title { + text-align: left; + left: 35px; + line-height: 46px; } + +/* Button Bar +==================================*/ +.button-bar { + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15); } + +.button-bar > .button { + box-shadow: none; + /* line-height: initial; */ } + +.button-bar > .button .icon:before, +.button-bar > .button:before { + line-height: initial; } + +.bar-footer .button-fab { + position: absolute; + top: -26px; + bottom: initial; } + +.bar-footer .buttons-left .button-fab { + left: 8px; } + +.bar-footer .buttons-right .button-fab { + right: 8px; } + +.bar .button.button-clear { + box-shadow: none; } + +.left-buttons .button-fab { + left: 8px; + top: 16px; } + +.right-buttons .button-fab { + right: 8px; + top: 16px; } + +.fab-left.title-left, +.fab-left.title.title-left { + left: 68px; } + +/* Button : FAB +==================================*/ +.button.button-fab, +.bar .button.button-fab { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + z-index: 9999; + width: 56px; + height: 56px; + max-height: initial; + max-width: initial; + border-radius: 50%; + border-radius: 50%; + overflow: hidden; + padding: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: 0.3s fade-in-out; + transition: 0.3s fade-in-out; + -webkit-transition-property: -webkit-transform, box-shadow; + transition-property: transform, box-shadow; } + +.button.button-fab.button-fab-bottom-right, +.bar .button.button-fab.button-fab-bottom-right { + top: auto; + right: 16px; + bottom: 16px; + left: auto; + position: absolute; } + +.button.button-fab.button-fab-bottom-left, +.bar .button.button-fab.button-fab-bottom-left { + top: auto; + right: auto; + bottom: 16px; + left: 16px; + position: absolute; } + +.button.button-fab.button-fab-top-right, +.bar .button.button-fab.button-fab-top-right { + top: 32px; + right: 16px; + bottom: auto; + left: auto; + position: absolute; } + +.button.button-fab.button-fab-top-left, +.bar .button.button-fab.button-fab-top-left { + top: 32px; + right: auto; + bottom: auto; + left: 16px; + position: absolute; } + +.button.button-fab.button-fab-top-left.expanded, +.button.button-fab.button-fab-top-right.expanded, +.bar .button.button-fab.button-fab-top-left.expanded, +.bar .button.button-fab.button-fab-top-right.expanded { + top: 48px; } + +.button.button-fab i, +.bar .button.button-fab i { + font-size: 2.5rem; + margin-top: 0; } + +.button.button-fab.mini, +.bar .button.button-fab.mini { + width: 40px; + height: 40px; } + +.button.button-fab.mini i, +.bar .button.button-fab.mini i { + font-size: 2rem; } + +/* Motion */ +.motion { + -webkit-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; } + +.fade { + opacity: 0; + filter: alpha(opacity=0); + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.spin-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) !important; + transform: translateZ(0) rotate(360deg) scale(0) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.spiral { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.spiral-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.menu-open .avatar { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: translateZ(0) rotate(0) scale(1) !important; + transform: translateZ(0) rotate(0) scale(1) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; } + +.button.button-fab.button-fab-top-left.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(-120px, 60px, 0); + transform: translate3d(-120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; } + +.button.button-fab.button-fab-top-right.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(120px, 60px, 0); + transform: translate3d(120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; } + +.button.button-fab.button-fab-bottom-left.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(-120px, 60px, 0); + transform: translate3d(-120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; } + +.button.button-fab.button-fab-bottom-right.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(120px, 60px, 0); + transform: translate3d(120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; } + +.spin { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(0) scale(0) !important; + transform: translateZ(0) rotate(0) scale(0) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; } + +.spin.on { + -webkit-transform: translateZ(0) rotate(-360deg) scale(1) !important; + transform: translateZ(0) rotate(-360deg) scale(1) !important; } + +.flap { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.flap.on { + -webkit-transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.drop { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) scale(3) !important; + transform: translateZ(0) scale(3) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.drop.on { + -webkit-transform: translateZ(0) scale(1) !important; + transform: translateZ(0) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.flip { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateY(0) scale(0) !important; + transform: translateZ(0) rotateY(0) scale(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.flip.on { + -webkit-transform: translateZ(0) rotateY(-720deg) scale(1) !important; + transform: translateZ(0) rotateY(-720deg) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +/* Button : Floating +==================================*/ +.button.button-floating, .bar .button.button-floating { + display: inline-block; + color: #FFF; + position: relative; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + border-radius: 50%; + background-clip: padding-box; + -webkit-transition: 0.3s; + transition: 0.3s; + cursor: pointer; } + +.button.button-floating i, .bar .button.button-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #FFF; + font-size: 1.6rem; + line-height: 37px; } + +.button.button-floating.button-large, .bar .button.button-floating.button-large { + width: 55.5px; + height: 55.5px; } + +.button.button-floating.button-large i, .bar .button.button-floating.button-large i { + line-height: 55.5px; } + +/* Button +==================================*/ +.button, +.button.button-large, +.button.button-flat, +.bar .button, +.bar .button.button-large, +.bar .button.button-flat { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + display: inline-block; + height: 36px; + padding: 0 2rem; + border-radius: 2px; + background-clip: padding-box; + text-transform: uppercase; + border: none; + outline: 0; + -webkit-tap-highlight-color: transparent; } + +.button.disabled, +.button.disabled.button-large, +.button.button-floating.disabled, +.button.button-large.disabled, +.button.button:disabled, +.button.button-large:disabled, +.button.button-large:disabled, +.button.button-floating:disabled, +.bar .button.disabled, +.bar .button.disabled.button-large, +.bar .button.button-floating.disabled, +.bar .button.button-large.disabled, +.bar .button.button:disabled, +.bar .button.button-large:disabled, +.bar .button.button-large:disabled, +.bar .button.button-floating:disabled { + background-color: #DFDFDF; + box-shadow: none; + color: #9F9F9F; } + +.button.disabled:hover, +.button.disabled.button-large:hover, +.button.button-floating.disabled:hover, +.button.button-large.disabled:hover, +.button.button:disabled:hover, +.button.button-large:disabled:hover, +.button.button-large:disabled:hover, +.button.button-floating:disabled:hover, +.bar .button.disabled:hover, +.bar .button.disabled.button-large:hover, +.bar .button.button-floating.disabled:hover, +.bar .button.button-large.disabled:hover, +.bar .button.button:disabled:hover, +.bar .button.button-large:disabled:hover, +.bar .button.button-large:disabled:hover, +.bar .button.button-floating:disabled:hover { + background-color: #DFDFDF; + color: #9F9F9F; } + +.button i, +.button.button-large i, +.button.button-floating i, +.button.button-large i, +.button.button-flat i, +.bar .button i, +.bar .button.button-large i, +.bar .button.button-floating i, +.bar .button.button-large i, +.bar .button.button-flat i { + font-size: 1.3rem; } + +.button-bar .button { + border-radius: 0; } + +.button, +.button-large, +.bar .button, +.bar .button-large { + text-decoration: none; + text-align: center; + letter-spacing: 0.5px; + -webkit-transition: 0.2s ease-out; + transition: 0.2s ease-out; + cursor: pointer; } + +.button { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + position: relative; + outline: none; + margin: 0; + /* background: transparent; */ + white-space: nowrap; + text-align: center; + text-transform: uppercase; + font-weight: 500; + font-style: inherit; + font-variant: inherit; + font-size: inherit; + text-decoration: none; + cursor: pointer; + overflow: hidden; + -webkit-transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), -webkit-transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } + +.button:focus { + outline: none; } + +.button.ng-hide { + -webkit-transition: none; + transition: none; } + +.button.cornered { + border-radius: 0; } + +.button.raised { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.button-outline, +.button-outline:hover, +.button-outline:active { + border-style: solid; + border-width: 1px; } + +.button.button-outline.button-assertive, +.button.button-outline.button-balanced, +.button.button-outline.button-calm, +.button.button-outline.button-dark, +.button.button-outline.button-energized, +.button.button-outline.button-light, +.button.button-outline.button-positive, +.button.button-outline.button-royal, +.button.button-outline.button-stable, +.button.button-outline { + border-color: rgba(0, 0, 0, 0.1); } + +.button-flat, +.bar .button-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; } + +.button.button-flat.disabled, +.bar .button.button-flat.disabled { + color: #b3b3b3; } + +.button.button-large i, +.bar .button.button-large i { + font-size: 1.6rem; } + +.button-pin-header.button-floating { + position: absolute; + z-index: 1000; } + +.button-pin-header.button-pin-left { + left: 24px; + top: -24px; } + +.button-pin-header.button-pin-right { + right: 24px; + top: -24px; } + +.button:not([disabled]).raised:focus, +.button:not([disabled]).raised:hover, +.button:not([disabled]).floating:focus, +.button:not([disabled]).floating:hover { + -webkit-transform: translate3d(0, -1px, 0); + transform: translate3d(0, -1px, 0); } + +.button.button-flat { + box-shadow: none; + /* background: transparent; */ + color: inherit; } + +.button.button-flat:hover { + color: inherit; } + +.button.button-flat, +.button.button-flat:hover, +.button.button-flat:active { + color: #fff; } + +.button.button-clear, +.button.button-clear:hover, +.button.button-clear:active { + background: transparent; } + +.button-full.ink, +.button-block.ink { + display: block; } + +/* Card +==================================*/ +.card-item.item { + border: none; + padding-bottom: 4px; + padding-top: 4px; } + +.card-item.item:first-child { + padding-top: 16px; } + +.card { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); + display: block; + margin: 8px; + padding: 0; + position: relative; } + +.card .image { + display: block; + margin-top: 10px; + margin-bottom: 5px; } + +.card img { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); + display: block; + max-width: 100%; + max-height: initial; + position: static; } + +.card.card-gallery img { + border: none; + box-shadow: none; + display: block; } + +.card .card-footer { + font-size: 90%; + opacity: 0.8; + filter: alpha(opacity=80); + padding-top: 10px; } + +.card > .item { + border: none; } + +.card.card-gallery > .item { + background: inherit; } + +.card .icon + .icon { + padding-left: 1rem; } + +.card.animate-fade-in { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transform: translate3d(-30px, 1px, 0); + -webkit-transition: all 1s ease-in-out; } + +.card.animate-fade-in.done { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: translate3d(0, 0, 0); } + +.card .item.item-avatar { + min-height: 88px; + padding-left: 88px; } + +/* Hero +==================================*/ +.hero { + background-size: cover; + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); + color: #fff; + height: 200px; + position: relative; + text-align: center; + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + width: 100%; } + +.hero > * { + -webkit-transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 1; + filter: alpha(opacity=100); } + +.hero + .mid-bar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + height: initial; + opacity: 1; + filter: alpha(opacity=100); } + +.hero .hero-icon { + box-shadow: 0px 0 2px 0 rgba(0, 0, 0, 0.26); + border-radius: 50%; + display: inline-block; + font-size: 65px; + height: 150px; + padding: 10px 30px; + line-height: 136px; + width: 150px; } + +.hero.no-header { + height: 244px; } + +.hero > .content { + bottom: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: 1; } + +.hero > .content > .avatar { + background-position: center; + background-size: cover; + border: solid 1px rgba(255, 255, 255, 0.8); + border-radius: 50%; + display: inline-block; + height: 88px; + left: auto; + margin-bottom: 10px; + position: relative; + width: 88px; } + +.hero h1 .hero h2, .hero h3, .hero h4, .hero h5, .hero h6 { + color: #fff; + margin: 0; } + +.hero h4 { + color: rgba(255, 255, 255, 0.7); + margin: 3px 0 16px; } + +.hero h1 > a, .hero h2 > a, .hero h3 > a, .hero h4 > a, .hero h5 > a, .hero h6 > a { + text-decoration: none; } + +.hero + .button-bar { + border-radius: 0; + margin-top: 0; } + +.hero + .button-bar > .button:first-child, .hero + .button-bar > .button:last-child { + border-radius: 0; } + +.hero .hero-icon { + color: #fff; + font-size: 96px; } + +.hero .hero-icon + h1 { + color: white; + letter-spacing: 0.15rem; } + +.hero .button, .hero .button.button-large, .hero .button.button-flat { + margin: 0; } + +.hero h1.title { + color: #fff; + font-size: 23px; + margin: 0; + text-align: left; + padding-left: 80px; + line-height: 59px; } + +.hero + .mid-bar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + height: initial; + opacity: 1; + filter: alpha(opacity=100); } + +.hero > * { + -webkit-transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 1; + filter: alpha(opacity=100); } + +/* Item +==================================*/ +.item { + font-size: 14px; + width: 100%; } + +.item-icon-left .icon { + left: 16px; } + +.item-icon-right .icon { + right: 16px; } + +/* +.list .item.item-icon-right { + padding-right: 60px; +} +*/ +.item-thumbnail-left > img:first-child, .item-thumbnail-left .item-image, .item-thumbnail-left .item-content > img:first-child, .item-thumbnail-left .item-content .item-image { + border-radius: 50%; } + +.tab-item.activated { + height: calc(100% + 3px); + /* Stretch */ } + +/* List +==================================*/ +.content + .list { + padding-top: 0; } + +.list .item { + border: none; + /* + padding-left: 16px; + padding-right: 16px; + */ + min-height: 48px; + text-align: left; } + +.list .item.tabs { + padding: initial; } + +.list .item.item-bg-image { + max-height: 150px; + min-height: 150px; } + +.list .item.item-bg-image > img { + height: 100%; + left: 0; + max-width: initial; + opacity: 0.65; + filter: alpha(opacity=65); + position: absolute; + top: 0; + width: 100%; + z-index: 0; } + +.list a.item { + opacity: 1; + filter: alpha(opacity=100); } + +.list .item.item-bg-image h1, .list .item.item-bg-image h2, .list .item.item-bg-image h3, .list .item.item-bg-image h4, .list .item.item-bg-image h5, .list .item.item-bg-image h6 { + color: #fff; + font-weight: bold; + position: relative; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.95); + z-index: 1; } + +.list .item.item-bg-image h2 { + font-size: 24px; } + +.list .item.item-bg-image h2 { + font-size: 24px; } + +.list .item.item-bg-image p { + color: white; + font-size: 17px; + position: relative; + text-shadow: 0 0 4px rgba(0, 0, 0, 0.95); + z-index: 1; } + +.item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content { + min-height: 80px; } + +/* List: Thumbnails +==================================*/ +.item-thumbnail-left, .card > .item.item-thumbnail-left, .item-thumbnail-left .item-content { + padding-left: 106px; } + +.item-thumbnail-right, .card > .item.item-thumbnail-right, .item-thumbnail-right .item-content { + padding-right: 106px; } + +/* List: Avatar +==================================*/ +.item-avatar > img:first-child, .item-avatar .item-image, .item-avatar .item-content > img:first-child, .item-avatar .item-content .item-image, .item-avatar-left > img:first-child, .item-avatar-left .item-image, .item-avatar-left .item-content > img:first-child, .item-avatar-left .item-content .item-image { + border-radius: 50%; + left: 16px; + max-height: 40px; + max-width: 40px; } + +/* +.item-avatar, .list .item-avatar { + padding-left: 100px; +} +*/ +.avatar, .item-avatar .avatar { + background-position: center; + background-size: cover; + border-radius: 50%; + display: inline-block; + height: 56px; + left: 16px; + position: absolute; + width: 56px; } + +/* List: Gallery +==================================*/ +.list.half { + display: inline-block; + float: left; + margin: 0; + padding: 0; + width: 50%; } + +.list.half:first-child { + padding: 16px 8px 16px 16px; } + +.list.half:last-child { + padding: 16px 16px 16px 8px; } + +.list.half:first-child .card.card-gallery { + margin-left: 0; + margin-right: 0; } + +.list.half:last-child .card.card-gallery { + margin-left: 0; + margin-right: 0; } + +.list.condensed-space > .card, .list.condensed-space > .item { + margin: 0px 0px 2px; } + +.list .card.card-gallery { + display: block; + float: left; + margin: 0 0 0 13px; + padding: 0; + width: auto; } + +.list.half .item { + width: 100%; } + +.list.half .item.card { + margin-bottom: 16px; } + +.list .card.card-gallery.item h2 { + padding: 12px; } + +.list .item.item-gallery img { + width: 100%; } + +.item.item-divider { + border-top: solid 1px rgba(0, 0, 0, 0.12); + font-size: 14px; + font-weight: bold; + height: 48px; + line-height: 48px; + color: rgba(0, 0, 0, 0.54); } + .item.item-divider:first-child { + border: none; } + +.item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content, .card > .item-avatar { + padding-left: 72px; } + +.item.active, .item.activated, .item-complex.active .item-content, .item-complex.activated .item-content, .item .item-content.active, .item .item-content.activated { + background-color: transparent; } + +.list-inset { + margin: 20px 30px; + border-left: solid 1px #ccc; + border-radius: 0; + background-color: #fff; } + +.list .item.item-floating-label, +.item-floating-label { + border-bottom: solid 1px #ccc; } + +.loader { + position: relative; + margin: 0px auto; + width: 100px; + height: 100px; + zoom: 1.7; } + +.circular { + -webkit-animation: rotate 2s linear infinite; + animation: rotate 2s linear infinite; + height: 100px; + position: relative; + width: 100px; } + +.path { + stroke-dasharray: 1,200; + stroke-dashoffset: 0; + -webkit-animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; + animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; + stroke-linecap: round; } + +@-webkit-keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@-webkit-keyframes dash { + 0% { + stroke-dasharray: 1,200; + stroke-dashoffset: 0; } + 50% { + stroke-dasharray: 89,200; + stroke-dashoffset: -35; } + 100% { + stroke-dasharray: 89,200; + stroke-dashoffset: -124; } } + +@keyframes dash { + 0% { + stroke-dasharray: 1,200; + stroke-dashoffset: 0; } + 50% { + stroke-dasharray: 89,200; + stroke-dashoffset: -35; } + 100% { + stroke-dasharray: 89,200; + stroke-dashoffset: -124; } } + +@-webkit-keyframes color { + 100%, 0% { + stroke: #d62d20; } + 40% { + stroke: #0057e7; } + 66% { + stroke: #008744; } + 80%, 90% { + stroke: #ffa700; } } + +@keyframes color { + 100%, 0% { + stroke: #d62d20; } + 40% { + stroke: #0057e7; } + 66% { + stroke: #008744; } + 80%, 90% { + stroke: #ffa700; } } + +/* Layouts: Login +==================================*/ +.login { + background-position: 25% 25%; + background-size: 180% 180%; + height: 100%; + -webkit-transition: all 1.5s ease-in-out; + transition: all 1.5s ease-in-out; } + +.login .item { + margin: 0 12px; + padding-left: 0; + padding-right: 0; + width: initial; } + +.login .button-bar { + bottom: 0; + margin: 28px 12px 0; + width: initial; } + +.login .light-bg { + background-color: #fff; } + +.icon.hero-icon:before { + line-height: 130px; } + +/* Mask +==================================*/ +.hero.has-mask:after, .item.has-mask:after, .card.has-mask:after { + content: ''; + background: -webkit-linear-gradient(top, transparent 0%, rgba(0, 0, 0, 0.6) 100%); + height: 100%; + left: 0; + position: absolute; + top: 0; + z-index: 0; + width: 100%; } + +.hero.has-mask-reverse:after, .item.has-mask-reverse:after, .card.has-mask-reverse:after { + content: ''; + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.6) 0%, transparent 100%); + height: 100%; + left: 0; + position: absolute; + top: 0; + z-index: 0; + width: 100%; } + +/* Menu */ +.menu-bottom { + bottom: 16px; + left: 16px; + right: 16px; + position: absolute; } + +.menu-top { + top: 16px; + left: 16px; + right: 16px; + position: absolute; } + +.menu .avatar { + top: 16px; + left: 16px; + height: 65px; + width: 65px; } + +.menu .bar.bar-header.expanded { + box-shadow: none; + min-height: 150px; + color: #fff; } + +.menu-open .bar.bar-header.expanded { + background-position: 0; + background-size: 100%; } + +.has-expanded-header { + top: 150px !important; } + +.motion { + -webkit-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; } + +.fade { + opacity: 0; + filter: alpha(opacity=0); + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.spin-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) !important; + transform: translateZ(0) rotate(360deg) scale(0) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.spiral { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.spiral-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; } + +.menu-open .avatar { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: translateZ(0) rotate(0) scale(1) !important; + transform: translateZ(0) rotate(0) scale(1) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; } + +.spin { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(0) scale(0) !important; + transform: translateZ(0) rotate(0) scale(0) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; } + +.spin.on { + -webkit-transform: translateZ(0) rotate(-360deg) scale(1) !important; + transform: translateZ(0) rotate(-360deg) scale(1) !important; } + +.flap { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.flap.on { + -webkit-transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.drop { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) scale(3) !important; + transform: translateZ(0) scale(3) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.drop.on { + -webkit-transform: translateZ(0) scale(1) !important; + transform: translateZ(0) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.flip { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateY(0) scale(0) !important; + transform: translateZ(0) rotateY(0) scale(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +.flip.on { + -webkit-transform: translateZ(0) rotateY(-720deg) scale(1) !important; + transform: translateZ(0) rotateY(-720deg) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; } + +/* Utilities +==================================*/ +.bold { + font-weight: bold; } + +.static { + position: static; } + +.pull-left { + float: left; } + +.pull-right { + float: right; } + +.double-padding, .ionic-content.double-padding { + padding: 16px; } + +.double-padding-x { + padding-left: 16px; + padding-right: 16px; } + +.double-padding-y { + padding-top: 16px; + padding-bottom: 16px; } + +.outline { + border-style: solid; + border-width: 1px; } + +.border-top { + border-top: solid 1px #ccc; + padding-top: 30px; } + +.no-border { + border: none; } + +.circle { + border-radius: 50%; } + +.no-padding, .list.no-padding, .bar.no-padding, .button-bar.no-padding, .card.no-padding, .button.no-padding, .item.no-padding { + padding: 0; } + +.flat, .flat.tabs, .flat.button, .flat.button.icon, .flat.hero { + box-shadow: none; + -webkit-box-shadow: none; } + +/* Utilities : Padding +==================================*/ +.im-wrapper, .padding { + padding: 16px !important; } + +.padding-bottom { + padding-bottom: 16px !important; } + +.padding-top { + padding-top: 16px !important; } + +.padding-left { + padding-left: 16px !important; } + +.padding-right { + padding-right: 16px !important; } + +.no-padding-bottom { + padding-bottom: 0 !important; } + +.no-padding-top { + padding-top: 0 !important; } + +.no-padding-left { + padding-left: 0 !important; } + +.no-padding-right { + padding-right: 0 !important; } + +/* Utilities : Depth +==================================*/ +.z1 { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); } + +/* Utilities : Color +==================================*/ +.bar.bar-positive.darker { + background-color: #164FAB; } + +/* TODO: Expand to other colors */ +.bar.bar-positive.dark-positive-bg { + background-color: #2C5CAD; } + +/* TODO: Expand to other colors */ +.muted { + color: #C3C3C3; } + +.clear-bg { + background: transparent; } + +/* Motion: Blinds +==================================*/ +.animate-blinds .item, +.animate-blinds .item { + visibility: hidden; } + +.animate-blinds .item, +.animate-blinds .item { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); } + +.animate-blinds .item-bg-image > img.background, +.animate-blinds .item-bg-image > img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + +.animate-blinds .in, +.animate-blinds.done > *, +.animate-blinds .in, +.animate-blinds.done > * { + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.animate-blinds .in, +.animate-blinds.done .item, +.animate-blinds .in, +.animate-blinds.done .item { + visibility: visible; } + +.animate-blinds .item, +.animate-blinds .item { + visibility: hidden; } + +.animate-blinds .item, +.animate-blinds .item { + opacity: 0; + filter: alpha(opacity=0); } + +.animate-blinds .in, +.animate-blinds.done, +.animate-blinds .in, +.animate-blinds.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + opacity: 1; + filter: alpha(opacity=100); } + +.animate-blinds .in, +.animate-blinds.done, +.animate-blinds .in, +.animate-blinds.done { + visibility: visible; } + +.animate-blinds.done .in, +.animate-blinds.done .in { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-blinds .has-mask-reverse:after, +.animate-blinds .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; } + +.animate-blinds.done .has-mask-reverse:after, +.animate-blinds.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-blinds .out, +.animate-blinds .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); } + +/* Motion: Pan In Left +==================================*/ +.animate-pan-in-left, +.animate-pan-in-left { + background-position: 0% 0%; } + +/* Motion: Ripple +==================================*/ +.animate-ripple .done, +.animate-ripple .done { + visibility: hidden; } + +.animate-ripple .done, +.animate-ripple .done { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); } + +.animate-ripple .item-bg-image img.background, +.animate-ripple .item-bg-image img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + +.animate-ripple .in, .animate-ripple.done, +.animate-ripple .in, .animate-ripple.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + +.animate-ripple .in, .animate-ripple.done, +.animate-ripple .in, .animate-ripple.done { + visibility: visible; } + +.animate-ripple .item { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); + opacity: 0; + filter: alpha(opacity=0); } + +.animate-ripple .item.in { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-ripple .done { + visibility: hidden; } + +.animate-ripple .done, +.animate-ripple .done { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); } + +/* Uncomment if you want images to fade in after the card + + .animate-ripple .in .item-bg-image img:last-child, + .animate-ripple .in .item-bg-image img:last-child { + opacity: 0; + } + + .animate-ripple.done .item-bg-image img:last-child, + .animate-ripple.done .item-bg-image img:last-child { + opacity: 1; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -webkit-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; + } + + .animate-ripple .item-bg-image img:last-child, + .animate-ripple .item-bg-image img:last-child { + box-shadow: none; + -moz-transform: scale3d(1, 1, 1); + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + .animate-ripple .in .item-bg-image img:last-child, + .animate-ripple .in .item-bg-image img:last-child { + opacity: 0; + } + +.animate-ripple.done .item-bg-image img:last-child, +.animate-ripple.done .item-bg-image img:last-child { + opacity: 1; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} + +.animate-ripple .in, +.animate-ripple .in { + opacity: 0.6; +} +*/ +.animate-ripple .in, .animate-ripple.done, .animate-ripple .in, .animate-ripple.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; } + +.animate-ripple .in, .animate-ripple.done, .animate-ripple .in, .animate-ripple.done { + visibility: visible; } + +.animate-ripple.done .in, .animate-ripple.done .in { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-ripple .has-mask-reverse:after, .animate-ripple .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; } + +.animate-ripple.done .has-mask-reverse:after, .animate-ripple.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-ripple .out, .animate-ripple .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); } + +/* Motion: Slide / Fade In +==================================*/ +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + visibility: hidden; } + +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); } + +.animate-fade-slide-in .item-bg-image img.background, +.animate-fade-slide-in .item-bg-image img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item { + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item { + visibility: visible; } + +.list .item.item-bg-image, +.list .item.item-bg-image { + max-height: 150px; } + +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + visibility: hidden; } + +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + -ms-transform: translate3d(-250px, 250px, 0); + -webkit-transform: translate3d(-250px, 250px, 0); + transform: translate3d(-250px, 250px, 0); + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 0; + filter: alpha(opacity=0); } + +.animate-fade-slide-in .in, +.animate-fade-slide-in.done, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; + opacity: 1; + filter: alpha(opacity=100); } + +.animate-fade-slide-in .in, +.animate-fade-slide-in.done, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done { + visibility: visible; } + +.animate-fade-slide-in.done .in, +.animate-fade-slide-in.done .in { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-fade-slide-in .has-mask-reverse:after, +.animate-fade-slide-in .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; } + +.animate-fade-slide-in.done .has-mask-reverse:after, +.animate-fade-slide-in.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-fade-slide-in .out, +.animate-fade-slide-in .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); } + +/* Motion: Slide In Right +==================================*/ +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + visibility: hidden; } + +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); } + +.animate-fade-slide-in-right .item-bg-image > img.background, +.animate-fade-slide-in-right .item-bg-image > img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done > *, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done > * { + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done .item, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done .item { + visibility: visible; } + +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + visibility: hidden; } + +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + -ms-transform: translate3d(250px, 250px, 0); + -webkit-transform: translate3d(250px, 250px, 0); + transform: translate3d(250px, 250px, 0); + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 0; + filter: alpha(opacity=0); } + +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + opacity: 1; + filter: alpha(opacity=100); } + +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done { + visibility: visible; } + +.animate-fade-slide-in-right.done .in, +.animate-fade-slide-in-right.done .in { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-fade-slide-in-right .has-mask-reverse:after, +.animate-fade-slide-in-right .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; } + +.animate-fade-slide-in-right.done .has-mask-reverse:after, +.animate-fade-slide-in-right.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); } + +.animate-fade-slide-in-right .out, +.animate-fade-slide-in-right .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); } + +/* Motion: Slide Up +==================================*/ +.slide-up, +.slide-up, +.hero.slide-up { + height: 100%; + overflow: hidden; + text-align: center; } + +.slide-up { + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.slide-up *, +.slide-up *, +.hero.slide-up * { + opacity: 0; + filter: alpha(opacity=0); } + +.hero.slide-up + .mid-bar, +.slide-up + .mid-bar, +.slide-up + .mid-bar { + height: 100%; + opacity: 0.7; + filter: alpha(opacity=70); + -webkit-transform: translate3d(100%, -240px, 0); + transform: translate3d(100%, -240px, 0); } + +/*! + * Waves v0.5.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Forked by Zach Fitzgerald and other contributors for Ionic Material + * + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + * + */ +.ink, .button-fab, .button-flat, .button-raised, .button-clear, .popup .button { + position: relative; + cursor: pointer; + /*display: inline-block;*/ + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; } + +.ink-ripple { + position: absolute; + border-radius: 50%; + width: 100px; + height: 100px; + margin-top: -50px; + margin-left: -50px; + opacity: 0; + background-color: rgba(255, 255, 255, 0.4); + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; } + +.ink-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; } + +.button-fab, +.button-flat, +.button-clear, +.button-raised, +.ink-button, +.ink-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); } + +.button-fab.activated, +.button-flat.activated, +.button-raised.activated, +.button-clear.activated, +.ink-button.activated, +.ink.activated, +.ink-circle.activated, +.popup .button.activated, +.button-fab:active, +.button-flat:active, +.button-raised:active, +.button-clear:active, +.ink-button:active, +.ink:active, +.ink-circle:active, +.popup .button:active { + -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%); } + +.ink-button, +.ink-button:visited, +.ink-button:link, +.button-fab, +.button-fab:visited, +.button-fab:link, +.button-flat, +.button-flat:visited, +.button-flat:link, +.button-raised, +.button-raised:visited, +.button-raised:link, +.button-clear, +.button-clear:visited, +.button-clear:link, +.ink-button-input { + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: none; + outline: none; + /* color: inherit; */ + /* background-color: rgba(0, 0, 0, 0); */ + font-size: 14px; + text-align: center; + text-decoration: none; + z-index: 1; } + +.ink-button { + padding: 10px 15px; + border-radius: 2px; } + +.ink-button-input { + margin: 0; + padding: 10px 15px; } + +.ink-input-wrapper { + border-radius: 2px; + vertical-align: bottom; } + +.ink-input-wrapper.ink-button { + padding: 0; } + +.ink-input-wrapper .ink-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; } + +.ink-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; } + +.ink-float { + -webkit-mask-image: none; + -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); } + +.ink-float:active { + -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); } + +.ink-block { + display: block; } + +.ink-ripple { + z-index: 0; + /* Firefox Bug: link not triggered unless -1 z-index */ } + +/* Handled elsewhere +.button-fab,.button-raised,.button-flat,.ink-circle,.list a.item { + -webkit-mask-image: none; +} +*/ +.button-clear .ink-ripple, +*[class$="-clear"] > .ink-ripple, +*[class$="-light"] > .ink-ripple, +*[class$="-stable"] > .ink-ripple, +*[class$="-100"] > .ink-ripple, +.list .ink-ripple, +.ink-dark .ink-ripple { + background-color: rgba(0, 0, 0, 0.2); } + +.tab-item { + position: relative; + /* for Ink */ } + +/* Ionic Overrides +==================================*/ +* { + font-family: "RobotoDraft","Roboto","Helvetica Neue", "Segoe UI", sans-serif; } + +.rounded { + border-radius: 4px; } + +a { + cursor: pointer; } + +.has-header.expanded { + /* Expanded modifier */ + top: 76px; } + +/* Bar Overrides +==================================*/ +.bar { + border-bottom: none; + padding: 0; } + +.bar .button { + min-height: 44px; + min-width: 44px; + max-width: 48px; + margin-bottom: 0; + max-height: 44px; + width: 48px; } + +.bar .title + .buttons.buttons-right { + right: 0; + top: 0; } + +/* Title Overrides +==================================*/ +.title-left, +.title.title-left { + left: 48px; } + +.title-right, +.title.title-right { + left: 48px; } + +/* Background Colors +==================================*/ +.positive-bg, +.button-positive, +.bar .button-positive, +.header-positive, +.button-bar-positive, +.bar-positive, +.positive-border, +.positive-bg:hover, +.bar .button-positive:hover, +.button-positive:hover, +.header-positive:hover, +.button-bar-positive:hover, +.bar-positive:hover, +.positive-border:hover, +.positive-bg:active, +.bar .button-positive:active, +.button-positive:active, +.header-positive:active, +.button-bar-positive:active, +.bar-positive:active, +.positive-border:active, +.positive-bg.activated, +.bar .button-positive.activated, +.button-positive.activated, +.header-positive.activated, +.button-bar-positive.activated, +.bar-positive.activated, +.positive-border.activated { + background-color: #3F51B5; + color: #fff; } + +.positive-900-bg, +.button-positive-900, +.bar .button-positive-900, +.header-positive-900, +.button-bar-positive-900, +.bar-positive-900, +.positive-900-border, +.positive-900-bg:hover, +.button-positive-900:hover, +.bar .button-positive-900:hover, +.header-positive-900:hover, +.button-bar-positive-900:hover, +.bar-positive-900:hover, +.positive-900-border:hover, +.positive-900-bg:active, +.bar .button-positive-900:active, +.button-positive-900:active, +.header-positive-900:active, +.button-bar-positive-900:active, +.bar-positive-900:active, +.positive-900-border:active, +.positive-900-bg.activated, +.button-positive-900.activated, +.bar .button-positive-900.activated, +.header-positive-900.activated, +.button-bar-positive-900.activated, +.bar-positive-900.activated, +.positive-900-border.activated { + background-color: #1A237E; + color: #fff; } + +.positive-100-bg, +.button-positive-100, +.bar .button-positive-100, +.header-positive-100, +.button-bar-positive-100, +.bar-positive-100, +.positive-100-border, +.positive-100-bg:hover, +.button-positive-100:hover, +.bar .button-positive-100:hover, +.header-positive-100:hover, +.button-bar-positive-100:hover, +.bar-positive-100:hover, +.positive-100-border:hover, +.positive-100-bg:active, +.button-positive-100:active, +.bar .button-positive-100:active, +.header-positive-100:active, +.button-bar-positive-100:active, +.bar-positive-100:active, +.positive-100-border:active, +.positive-100-bg.activated, +.button-positive-100.activated, +.bar .button-positive-100.activated, +.header-positive-100.activated, +.button-bar-positive-100.activated, +.bar-positive-100.activated, +.positive-100-border.activated { + background-color: #C5CAE9; + color: #fff; } + +.calm-bg, +.button-calm, +.bar .button-calm, +.header-calm, +.button-bar-calm, +.bar-calm, +.calm-border, +.calm-bg:hover, +.button-calm:hover, +.bar .button-calm:hover, +.header-calm:hover, +.button-bar-calm:hover, +.bar-calm:hover, +.calm-border:hover, +.calm-bg:active, +.button-calm:active, +.bar .button-calm:active, +.header-calm:active, +.button-bar-calm:active, +.bar-calm:active, +.calm-border:active, +.calm-bg.activated, +.button-calm.activated, +.bar .button-calm.activated, +.header-calm.activated, +.button-bar-calm.activated, +.bar-calm.activated, +.calm-border.activated { + background-color: #2196F3; + color: #fff; } + +.calm-900-bg, +.button-calm-900, +.bar .button-calm-900, +.header-calm-900, +.button-bar-calm-900, +.bar-calm-900, +.calm-900-border, +.calm-900-bg:hover, +.button-calm-900:hover, +.bar .button-calm-900:hover, +.header-calm-900:hover, +.button-bar-calm-900:hover, +.bar-calm-900:hover, +.calm-900-border:hover, +.calm-900-bg:active, +.button-calm-900:active, +.bar .button-calm-900:active, +.header-calm-900:active, +.button-bar-calm-900:active, +.bar-calm-900:active, +.calm-900-border:active, +.calm-900-bg.activated, +.button-calm-900.activated, +.bar .button-calm-900.activated, +.header-calm-900.activated, +.button-bar-calm-900.activated, +.bar-calm-900.activated, +.calm-900-border.activated { + background-color: #0D47A1; + color: #fff; } + +.calm-100-bg, +.button-calm-100, +.bar .button-calm-100, +.header-calm-100, +.button-bar-calm-100, +.bar-calm-100, +.calm-100-border, +.calm-100-bg:hover, +.button-calm-100:hover, +.bar .button-calm-100:hover, +.header-calm-100:hover, +.button-bar-calm-100:hover, +.bar-calm-100:hover, +.calm-100-border:hover, +.calm-100-bg:active, +.button-calm-100:active, +.bar .button-calm-100:active, +.header-calm-100:active, +.button-bar-calm-100:active, +.bar-calm-100:active, +.calm-100-border:active, +.calm-100-bg.activated, +.button-calm-100.activated, +.bar .button-calm-100.activated, +.header-calm-100.activated, +.button-bar-calm-100.activated, +.bar-calm-100.activated, +.calm-100-border.activated { + background-color: #BBDEFB; + color: #fff; } + +.royal-bg, +.button-royal, +.bar .button-royal, +.header-royal, +.button-bar-royal, +.bar-royal, +.royal-border, +.royal-bg:hover, +.button-royal:hover, +.bar .button-royal:hover, +.header-royal:hover, +.button-bar-royal:hover, +.bar-royal:hover, +.royal-border:hover, +.royal-bg:active, +.button-royal:active, +.bar .button-royal:active, +.header-royal:active, +.button-bar-royal:active, +.bar-royal:active, +.royal-border:active, +.royal-bg.activated, +.button-royal.activated, +.bar .button-royal.activated, +.header-royal.activated, +.button-bar-royal.activated, +.bar-royal.activated, +.royal-border.activated { + background-color: #673AB7; + color: #fff; } + +.royal-900-bg, +.button-royal-900, +.bar .button-royal-900, +.header-royal-900, +.button-bar-royal-900, +.bar-royal-900, +.royal-900-border, +.royal-900-bg:hover, +.button-royal-900:hover, +.bar .button-royal-900:hover, +.header-royal-900:hover, +.button-bar-royal-900:hover, +.bar-royal-900:hover, +.royal-900-border:hover, +.royal-900-bg:active, +.button-royal-900:active, +.bar .button-royal-900:active, +.header-royal-900:active, +.button-bar-royal-900:active, +.bar-royal-900:active, +.royal-900-border:active, +.royal-900-bg.activated, +.button-royal-900.activated, +.bar .button-royal-900.activated, +.header-royal-900.activated, +.button-bar-royal-900.activated, +.bar-royal-900.activated, +.royal-900-border.activated { + background-color: #311B92; + color: #fff; } + +.royal-100-bg, +.button-royal-100, +.bar .button-royal-100, +.header-royal-100, +.button-bar-royal-100, +.bar-royal-100, +.royal-100-border, +.royal-100-bg:hover, +.button-royal-100:hover, +.bar .button-royal-100:hover, +.header-royal-100:hover, +.button-bar-royal-100:hover, +.bar-royal-100:hover, +.royal-100-border:hover, +.royal-100-bg:active, +.button-royal-100:active, +.bar .button-royal-100:active, +.header-royal-100:active, +.button-bar-royal-100:active, +.bar-royal-100:active, +.royal-100-border:active, +.royal-100-bg.activated, +.button-royal-100.activated, +.bar .button-royal-100.activated, +.header-royal-100.activated, +.button-bar-royal-100.activated, +.bar-royal-100.activated, +.royal-100-border.activated { + background-color: #D1C4E9; + color: #fff; } + +.balanced-bg, +.button-balanced, +.bar .button-balanced, +.header-balanced, +.button-bar-balanced, +.bar-balanced, +.balanced-border, +.balanced-bg:hover, +.button-balanced:hover, +.bar .button-balanced:hover, +.header-balanced:hover, +.button-bar-balanced:hover, +.bar-balanced:hover, +.balanced-border:hover, +.balanced-bg:active, +.button-balanced:active, +.bar .button-balanced:active, +.header-balanced:active, +.button-bar-balanced:active, +.bar-balanced:active, +.balanced-border:active, +.balanced-bg.activated, +.button-balanced.activated, +.bar .button-balanced.activated, +.header-balanced.activated, +.button-bar-balanced.activated, +.bar-balanced.activated, +.balanced-border.activated { + background-color: #4CAF50; + color: #fff; } + +.balanced-900-bg, +.button-balanced-900, +.bar .button-balanced-900, +.header-balanced-900, +.button-bar-balanced-900, +.bar-balanced-900, +.balanced-900-border, +.balanced-900-bg:hover, +.button-balanced-900:hover, +.bar .button-balanced-900:hover, +.header-balanced-900:hover, +.button-bar-balanced-900:hover, +.bar-balanced-900:hover, +.balanced-900-border:hover, +.balanced-900-bg:active, +.button-balanced-900:active, +.bar .button-balanced-900:active, +.header-balanced-900:active, +.button-bar-balanced-900:active, +.bar-balanced-900:active, +.balanced-900-border:active, +.balanced-900-bg.activated, +.button-balanced-900.activated, +.bar .button-balanced-900.activated, +.header-balanced-900.activated, +.button-bar-balanced-900.activated, +.bar-balanced-900.activated, +.balanced-900-border.activated { + background-color: #1B5E20; + color: #fff; } + +.balanced-100-bg, +.button-balanced-100, +.bar .button-balanced-100, +.header-balanced-100, +.button-bar-balanced-100, +.bar-balanced-100, +.balanced-100-border, +.balanced-100-bg:hover, +.button-balanced-100:hover, +.bar .balanced-100-bg:hover, +.header-balanced-100:hover, +.button-bar-balanced-100:hover, +.bar-balanced-100:hover, +.balanced-100-border:hover, +.balanced-100-bg:active, +.button-balanced-100:active, +.bar .button-balanced-100:active, +.header-balanced-100:active, +.button-bar-balanced-100:active, +.bar-balanced-100:active, +.balanced-100-border:active, +.balanced-100-bg.activated, +.button-balanced-100.activated, +.bar .button-balanced-100.activated, +.header-balanced-100.activated, +.button-bar-balanced-100.activated, +.bar-balanced-100.activated, +.balanced-100-border.activated { + background-color: #C8E6C9; + color: #fff; } + +.energized-bg, +.button-energized, +.bar .button-energized, +.header-energized, +.button-bar-energized, +.bar-energized, +.energized-border, +.energized-bg:hover, +.button-energized:hover, +.bar .button-energized:hover, +.header-energized:hover, +.button-bar-energized:hover, +.bar-energized:hover, +.energized-border:hover, +.energized-bg:active, +.button-energized:active, +.bar .button-energized:active, +.header-energized:active, +.button-bar-energized:active, +.bar-energized:active, +.energized-border:active, +.energized-bg.activated, +.button-energized.activated, +.bar .button-energized.activated, +.header-energized.activated, +.button-bar-energized.activated, +.bar-energized.activated, +.energized-border.activated { + background-color: #FF9800; + color: #fff; } + +.energized-900-bg, +.button-energized-900, +.bar .button-energized-900, +.header-energized-900, +.button-bar-energized-900, +.bar-energized-900, +.energized-900-border, +.energized-900-bg:hover, +.button-energized-900:hover, +.bar .button-energized-900:hover, +.header-energized-900:hover, +.button-bar-energized-900:hover, +.bar-energized-900:hover, +.energized-900-border:hover, +.energized-900-bg:active, +.button-energized-900:active, +.bar .button-energized-900:active, +.header-energized-900:active, +.button-bar-energized-900:active, +.bar-energized-900:active, +.energized-900-border:active, +.energized-900-bg.activated, +.button-energized-900.activated, +.bar .button-energized-900.activated, +.header-energized-900.activated, +.button-bar-energized-900.activated, +.bar-energized-900.activated, +.energized-900-border.activated { + background-color: #E65100; + color: #fff; } + +.energized-100-bg, +.button-energized-100, +.bar .button-energized-100, +.header-energized-100, +.button-bar-energized-100, +.bar-energized-100, +.energized-100-border, +.energized-100-bg:hover, +.button-energized-100:hover, +.bar .button-energized-100:hover, +.header-energized-100:hover, +.button-bar-energized-100:hover, +.bar-energized-100:hover, +.energized-100-border:hover, +.energized-100-bg:active, +.button-energized-100:active, +.bar .button-energized-100:active, +.header-energized-100:active, +.button-bar-energized-100:active, +.bar-energized-100:active, +.energized-100-border:active, +.energized-100-bg.activated, +.button-energized-100.activated, +.bar .button-energized-100.activated, +.header-energized-100.activated, +.button-bar-energized-100.activated, +.bar-energized-100.activated, +.energized-100-border.activated { + background-color: #FFE0B2; } + +.assertive-bg, +.button-assertive, +.bar .button-assertive, +.header-assertive, +.button-bar-assertive, +.bar-assertive, +.assertive-border, +.assertive-bg:hover, +.button-assertive:hover, +.bar .button-assertive:hover, +.header-assertive:hover, +.button-bar-assertive:hover, +.bar-assertive:hover, +.assertive-border:hover, +.assertive-bg:active, +.button-assertive:active, +.bar .button-assertive:active, +.header-assertive:active, +.button-bar-assertive:active, +.bar-assertive:active, +.assertive-border:active, +.assertive-bg.activated, +.button-assertive.activated, +.bar .button-assertive.activated, +.header-assertive.activated, +.button-bar-assertive.activated, +.bar-assertive.activated, +.assertive-border.activated { + background-color: #F44336; + color: #fff; } + +.assertive-900-bg, +.button-assertive-900, +.bar .button-assertive-900, +.header-assertive-900, +.button-bar-assertive-900, +.bar-assertive-900, +.assertive-900-border, +.assertive-900-bg:hover, +.button-assertive-900:hover, +.bar .button-assertive-900:hover, +.header-assertive-900:hover, +.button-bar-assertive-900:hover, +.bar-assertive-900:hover, +.assertive-900-border:hover, +.assertive-900-bg:active, +.button-assertive-900:active, +.bar .button-assertive-900:active, +.header-assertive-900:active, +.button-bar-assertive-900:active, +.bar-assertive-900:active, +.assertive-900-border:active, +.assertive-900-bg.activated, +.button-assertive-900.activated, +.bar .button-assertive-900.activated, +.header-assertive-900.activated, +.button-bar-assertive-900.activated, +.bar-assertive-900.activated, +.assertive-900-border.activated { + background-color: #B71C1C; + color: #fff; } + +.assertive-100-bg, +.button-assertive-100, +.bar .button-assertive-100, +.header-assertive-100, +.button-bar-assertive-100, +.bar-assertive-100, +.assertive-100-border, +.assertive-100-bg:hover, +.button-assertive-100:hover, +.bar .button-assertive-100:hover, +.header-assertive-100:hover, +.button-bar-assertive-100:hover, +.bar-assertive-100:hover, +.assertive-100-border:hover, +.assertive-100-bg:active, +.button-assertive-100:active, +.bar .button-assertive-100:active, +.header-assertive-100:active, +.button-bar-assertive-100:active, +.bar-assertive-100:active, +.assertive-100-border:active, +.assertive-100-bg.activated, +.bar .button-assertive-100.activated, +.button-assertive-100.activated, +.header-assertive-100.activated, +.button-bar-assertive-100.activated, +.bar-assertive-100.activated, +.assertive-100-border.activated { + background-color: #FFCDD2; + color: #fff; } + +.stable-bg, +.button-stable, +.bar .button-stable, +.header-stable, +.button-bar-stable, +.bar-stable, +.stable-border, +.stable-bg:hover, +.button-stable:hover, +.bar .button-stable:hover, +.header-stable:hover, +.button-bar-stable:hover, +.bar-stable:hover, +.stable-border:hover, +.stable-bg:active, +.button-stable:active, +.bar .button-stable:active, +.header-stable:active, +.button-bar-stable:active, +.bar-stable:active, +.stable-border:active, +.stable-bg.activated, +.button-stable.activated, +.bar .button-stable.activated, +.header-stable.activated, +.button-bar-stable.activated, +.bar-stable.activated, +.stable-border.activated { + background-color: #E0E0E0; + color: #fff; } + +/* Text Colors +==================================*/ +.positive, +.positive *, +*.positive, +.positive:hover, +.positive:hover *, +*.positive:hover, +.positive:active, +.positive:active *, +*.positive:active { + color: #3F51B5; } + +.positive-900, +.positive-900 *, +*.positive-900, +.positive-900:hover, +.positive-900:hover *, +*.positive-900:hover, +.positive-900:active, +.positive-900:active *, +*.positive-900:active { + color: #3F51B5; } + +.positive-100, +.positive-100 *, +*.positive-100, +.positive-100:hover, +.positive-100:hover *, +*.positive-100:hover, +.positive-100:active, +.positive-100:active *, +*.positive-100:active { + color: #C5CAE9; } + +.calm-100, +.calm-100 *, +*.calm-100, +.calm-100:hover, +.calm-100:hover *, +*.calm-100:hover, +.calm-100:active, +.calm-100:active *, +*.calm-100:active { + color: #2196F3; } + +.calm-900, +.calm-900 *, +*.calm-900, +.calm-900:hover, +.calm-900:hover *, +*.calm-900:hover, +.calm-900:active, +.calm-900:active *, +*.calm-900:active { + color: #0D47A1; } + +.calm-100, +.calm-100 *, +*.calm-100, +.calm-100:hover, +.calm-100:hover *, +*.calm-100:hover, +.calm-100:active, +.calm-100:active *, +*.calm-100:active { + color: #BBDEFB; } + +.royal, +.royal *, +*.royal, +.royal:hover, +.royal:hover *, +*.royal:hover, +.royal:active, +.royal:active *, +*.royal:active { + color: #673AB7; } + +.royal-900, +.royal-900 *, +*.royal-900, +.royal-900:hover, +.royal-900:hover *, +*.royal-900:hover, +.royal-900:active, +.royal-900:active *, +*.royal-900:active { + color: #311B92; } + +.royal-100, +.royal-100 *, +*.royal-100, +.royal-100:hover, +.royal-100:hover *, +*.royal-100:hover, +.royal-100:active, +.royal-100:active *, +*.royal-100:active { + color: #D1C4E9; } + +.balanced, +.balanced *, +*.balanced, +.balanced:hover, +.balanced:hover *, +*.balanced:hover, +.balanced:active, +.balanced:active *, +*.balanced:active { + color: #4CAF50; } + +.balanced-900, +.balanced-900 *, +*.balanced-900, +.balanced-900:hover, +.balanced-900:hover *, +*.balanced-900:hover, +.balanced-900:active, +.balanced-900:active *, +*.balanced-900:active { + color: #1B5E20; } + +.balanced-100, +.balanced-100 *, +*.balanced-100, +.balanced-100:hover, +.balanced-100:hover *, +*.balanced-100:hover, +.balanced-100:active, +.balanced-100:active *, +*.balanced-100:active { + color: #C8E6C9; } + +.energized, +.energized *, +*.energized, +.energized:hover, +.energized:hover *, +*.energized:hover, +.energized:active, +.energized:active *, +*.energized:active { + color: #FF9800; } + +.energized-900, +.energized-900 *, +*.energized-900, +.energized-900:hover, +.energized-900:hover *, +*.energized-900:hover, +.energized-900:active, +.energized-900:active *, +*.energized-900:active { + color: #E65100; } + +.energized-100, +.energized-100 *, +*.energized-100, +.energized-100:hover, +.energized-100:hover *, +*.energized-100:hover, +.energized-100:active, +.energized-100:active *, +*.energized-100:active { + color: #FFE0B2; } + +.assertive, +.assertive *, +*.assertive, +.assertive:hover, +.assertive:hover *, +*.assertive:hover, +.assertive:active, +.assertive:active *, +*.assertive:active { + color: #F44336; } + +.assertive-900, +.assertive-900 *, +*.assertive-900, +.assertive-900:hover, +.assertive-900:hover *, +*.assertive-900:hover, +.assertive-900:active, +.assertive-900:active *, +*.assertive-900:active { + color: #B71C1C; } + +.assertive-100, +.assertive-100 *, +*.assertive-100, +.assertive-100:hover, +.assertive-100:hover *, +*.assertive-100:hover, +.assertive-100:active, +.assertive-100:active *, +*.assertive-100:active { + color: #FFCDD2; } + +.stable, +.stable *, +*.stable, +.stable:hover, +.stable:hover *, +*.stable:hover, +.stable:active, +.stable:active *, +*.stable:active { + color: #E0E0E0; } + +.light, +.light *, +*.light, +.light:hover, +.light:hover *, +*.light:hover, +.light:active, +.light:active *, +*.light:active { + color: #fff; } + +.dark, +.dark *, +*.dark, +.dark:hover, +.dark:hover *, +*.dark:hover, +.dark:active, +.dark:active *, +*.dark:active { + color: #444; } + +.light-border { + border-color: #ddd; } + +.navbar-default .navbar-nav > li > a { + margin: 0; + padding-right: 26px; + padding-left: 26px; + border-top: 3px solid transparent; + color: #BFD5C9; + opacity: 1; } + +/* Mid-Bar +==================================*/ +.mid-bar { + padding: 16px; } + +.mid-bar h1, +.mid-bar h2, +.mid-bar h3, +.mid-bar h4, +.mid-bar h5, +.mid-bar h6 { + color: #fff; + margin-bottom: 5px; } + +.mid-bar p { + color: rgba(255, 255, 255, 0.5); + margin-bottom: 0; } + +/* Item +==================================*/ +.item-avatar, +.item-avatar .item-content, +.item-avatar-left, +.item-avatar-left .item-content, +.card > .item-avatar { + padding-left: 95px; } + +.item, +.item-complex .item-content, +.item-radio .item-content { + background-color: transparent; } + +.dark-bg h2, +.item.dark-bg h2 { + color: #fff; } + +.tabs-striped .tabs { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); } + +.bar .button.button-clear { + color: #fff; } + +.bar .button.button-icon .icon:before, +.bar .button.button-icon.icon-left:before, +.bar .button.button-icon.icon-right:before, +.bar .button.button-icon:before { + vertical-align: top; + font-size: 24px; } + +.menu { + background-color: transparent; } + +.button-icon.button.active, +.button-icon.button.activated { + opacity: initial; } + +/* Popover +==================================*/ +.popover { + opacity: 0; + position: absolute; + right: 8px; + transform: translate(50%, -50%) scale(0, 0); + transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; + top: 8px; } + +.popover.ng-enter { + opacity: 1; + transform: translate(0, -14px) scale(1, 1); + transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; } + +.popover.ng-leave { + opacity: 0; + transform: translate(50%, -50%) scale(0, 0); + transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; } + +/* Button +==================================*/ +.button { + overflow: hidden !important; } diff --git a/www/lib/ionic-material/dist/ionic.material.js b/www/lib/ionic-material/dist/ionic.material.js new file mode 100644 index 0000000..cc39d3b --- /dev/null +++ b/www/lib/ionic-material/dist/ionic.material.js @@ -0,0 +1,957 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory((function webpackLoadOptionalExternalModule() { try { return require("angular"); } catch(e) {} }())); + else if(typeof define === 'function' && define.amd) + define(["angular"], factory); + else if(typeof exports === 'object') + exports["ionicMaterial"] = factory((function webpackLoadOptionalExternalModule() { try { return require("angular"); } catch(e) {} }())); + else + root["ionicMaterial"] = factory(root["angular"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Ionic Material + * "Bundle Index" / "Entryfile" + * https://github.com/zachsoft/ionic-material + * + * Recommended: use a compiled version, especially in production! + */ + + 'use strict'; + + module.exports = (function(){ + + var angular; + + try { + angular = __webpack_require__(1); + } catch(err){ } + + if(!angular || !angular.version){ + /*global window: true*/ + angular = window.angular; + /*global window: false*/ + } + + if(!angular || !angular.version){ + throw new Error('ionic-material could not load angular module :('); + } + + // set up angular module + var app = angular.module('ionic-material', ['ionic']); + + // Import Dependencies + __webpack_require__(2)(app); + __webpack_require__(3)(app); + + return 'ionic-material'; + })(); + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + if(typeof __WEBPACK_EXTERNAL_MODULE_1__ === 'undefined') {var e = new Error("Cannot find module \"angular\""); e.code = 'MODULE_NOT_FOUND'; throw e;} + module.exports = __WEBPACK_EXTERNAL_MODULE_1__; + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /*! + * Fork by Zach Fitzgerald and other contributors of Ionic Material + * + * Waves v0.5.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + * + */ + module.exports = function (angularApp) { + + angularApp.factory('ionicMaterialInk', ink); + + function ink (){ + /*global document*/ + var Ink = Ink || {}; + + // all DOM nodes + var $$; + + // phantomJS throws an error when you try to use document.querySelectorAll.bind + if(document && document.querySelectorAll && document.querySelectorAll.bind){ + try{ + // all DOM nodes + $$ = document.querySelectorAll.bind(document); + + } catch(e){} + } else if (window && window.angular && window.angular.element) { + // we can use angular.element instead + $$ = window.angular.element; + } else { + + + /** + * mout.js 0.11.0 bind and slice polyfills (substitutes?) + * TODO: pull out mout.js bind and slice molyfills and inject into material.ink + */ + + /** + * Create slice of source array or array-like object + */ + var slicePolyfill = function moutslicePolyfill(arr, start, end){ + var len = arr.length; + /*jshint eqnull:true */ + if (start == null) { + start = 0; + } else if (start < 0) { + start = Math.max(len + start, 0); + } else { + start = Math.min(start, len); + } + + + if (end == null) { + + end = len; + } else if (end < 0) { + end = Math.max(len + end, 0); + } else { + end = Math.min(end, len); + } + + var result = []; + while (start < end) { + result.push(arr[start++]); + } + + return result; + }; + + + + /** + * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. + * @param {Function} fn Function. + * @param {object} context Execution context. + * @param {rest} args Arguments (0...n arguments). + * @return {Function} Wrapped Function. + */ + var bindPolyfill = function moutBind(fn, context, args){ + var argsArr = slicePolyfill(arguments, 2); //curried args + return function(){ + return fn.apply(context, argsArr.concat(slicePolyfill(arguments))); + }; + }; + + $$ = bindPolyfill(document.querySelectorAll, document); + /*jshint ignore:end */ + } + + if (!$$){ + throw new Error('ionic material ink module could not create reference of DOM nodes'); + } + + // Find exact position of element + function isWindow(obj) { + return obj !== null && obj === obj.window; + } + + function getWindow(elem) { + return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; + } + + function offset(elem) { + var docElem, win, + box = { + top: 0, + left: 0 + }, + doc = elem && elem.ownerDocument; + + docElem = doc.documentElement; + + if (typeof elem.getBoundingClientRect !== typeof undefined) { + box = elem.getBoundingClientRect(); + } + win = getWindow(doc); + return { + top: box.top + win.pageYOffset - docElem.clientTop, + left: box.left + win.pageXOffset - docElem.clientLeft + }; + } + + function hexToRgb(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; + } + + function convertStyle(obj) { + var style = ''; + + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + style += (a + ':' + obj[a] + ';'); + } + } + + return style; + } + + var Effect = { + + // Effect delay + duration: 500, + + show: function(e) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = this; + + // Create ripple + var ripple = document.createElement('div'); + var customColor = this.dataset.inkColor; + var customOpacity = this.dataset.inkOpacity; + var hasCustomRipple = customColor || customOpacity; + ripple.className = 'ink-ripple'; + el.appendChild(ripple); + + // Get click coordinate and element witdh + var pos = offset(el); + var relativeY = (e.pageY - pos.top); + var relativeX = (e.pageX - pos.left); + var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY + 'px', + 'left': relativeX + 'px' + }; + + ripple.className = ripple.className + ' ink-notransition'; + + if (hasCustomRipple) { + var colorRgb; + if (customColor) { + var fromHex = hexToRgb(customColor); + colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b; + } else { + colorRgb = '0,0,0'; + } + if (!customOpacity) { + customOpacity = 0.2; + } + var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')'; + rippleStyle['background-color'] = bg; + } + + ripple.setAttribute('style', convertStyle(rippleStyle)); + ripple.className = ripple.className.replace('ink-notransition', ''); + + // Scale the ripple + rippleStyle['-webkit-transform'] = scale; + rippleStyle['-moz-transform'] = scale; + rippleStyle['-ms-transform'] = scale; + rippleStyle['-o-transform'] = scale; + rippleStyle.transform = scale; + rippleStyle.opacity = '1'; + + rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['transition-duration'] = Effect.duration + 'ms'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function() { + + var el = this; + + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + + var childrenLength = el.children.length; + + for (var a = 0; a < childrenLength; a++) { + if (el.children[a].className.indexOf('ink-ripple') !== -1) { + ripple = el.children[a]; + continue; + } + } + + if (!ripple) { + return false; + } + + var relativeX = ripple.getAttribute('data-x'); + var relativeY = ripple.getAttribute('data-y'); + var scale = ripple.getAttribute('data-scale'); + + // Get delay beetween mousedown and mouse leave + var diff = Date.now() - Number(ripple.getAttribute('data-hold')); + var delay = 500 - diff; + + if (delay < 0) { + delay = 0; + } + + // Fade out ripple after delay + setTimeout(function() { + + var style = { + 'top': relativeY + 'px', + 'left': relativeX + 'px', + 'opacity': '0', + + // Duration + '-webkit-transition-duration': Effect.duration + 'ms', + '-moz-transition-duration': Effect.duration + 'ms', + '-o-transition-duration': Effect.duration + 'ms', + 'transition-duration': Effect.duration + 'ms', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + '-o-transform': scale, + 'transform': scale, + }; + + ripple.setAttribute('style', convertStyle(style)); + + setTimeout(function() { + try { + el.removeChild(ripple); + } catch (e) { + return false; + } + }, Effect.duration); + }, delay); + }, + + // Little hack to make can perform ink effect + wrapInput: function(elements) { + + for (var a = 0; a < elements.length; a++) { + + var el = elements[a]; + + if (el.tagName.toLowerCase() === 'input') { + + var parent = el.parentNode; + + // If input already have parent just pass through + if (parent.tagName.toLowerCase() === 'i' && + parent.className.indexOf('ink') !== -1 && + parent.className.indexOf('tab-item') !== -1 && + parent.className.indexOf('button-fab') !== -1 && + parent.className.indexOf('button-raised') !== -1 && + parent.className.indexOf('button-flat') !== -1 && + parent.className.indexOf('button-clear') !== -1 && + parent.className.indexOf('button') !== -1 && + parent.className.indexOf('item') !== -1) { + return false; + } + + // Put element class and style to the specified parent + var wrapper = document.createElement('i'); + wrapper.className = el.className + ' ink-input-wrapper'; + + var elementStyle = el.getAttribute('style'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'ink-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + Ink.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button'; + Effect.wrapInput($$(selectors)); + + Array.prototype.forEach.call($$(selectors), function(i) { + if ('ontouchstart' in window) { + i.addEventListener('touchstart', Effect.show, false); + i.addEventListener('touchend', Effect.hide, false); + i.addEventListener('touchcancel', Effect.hide, false); + } else { + i.addEventListener('mousedown', Effect.show, false); + i.addEventListener('mouseup', Effect.hide, false); + i.addEventListener('mouseleave', Effect.hide, false); + } + }); + }; + + return Ink; + } + + ink.inject = []; + }; + + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = function(angularApp) { + angularApp.factory('ionicMaterialMotion', Motion); + + function Motion() { + /*global document, window*/ + + 'use strict'; + + /*============================================================================*/ + /* HELPERS (non-exports) + /=============================================================================* + / Abstract common lookups and manipulations in case better alternatives + / arise or future cross-platform differences warrant separate handling + /=============================================================================*/ + + function getViewportHeight() { + return window.innerHeight; + } + + function getBoundingClientRect(domNode) { + return domNode.getBoundingClientRect; + } + + function showNotAnimatedElements(elements, total) { + // Load the elements without effect + for (var i = 0; i < total; i++) { + var child = elements[i]; + child.className += ' in'; + child.className += ' done'; + } + } + + + + /*============================================================================*/ + /* MOTION (EXPORT) + /=============================================================================* + / Animation methods for the library + /=============================================================================*/ + + var motion = { + blinds: blinds, + fadeSlideIn: fadeSlideIn, + fadeSlideInRight: fadeSlideInRight, + panInLeft: panInLeft, + pushDown: pushDown, + ripple: ripple, + slideUp: slideUp + }; + + function blinds(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.5, + leftOffsetPercentage: 0.8, + selector: '.animate-blinds .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid blinds selector'); + return false; + } + + var animateBlindsDom = document.querySelectorAll(options.selector); + var elementsCount = animateBlindsDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not exacting + // more effort than required... + // + // We use css visiblity: hidden instead of display: none so the elements + // maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < elementsCount; i++) { + if (animateBlindsDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateBlindsDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateBlindsDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2); + //child.querySelector('img').style.webkitTransitionDelay = delay + "s"; + //child.querySelector('img').style.transitionDelay = delay + "s"; + //child.querySelector('img').className += ' in'; + animateBlindsDom[i].className += ' done'; + } + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateBlindsDom, elementsCount); + } + + function fadeSlideIn(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.72, + leftOffsetPercentage: 0.8, + selector: '.animate-fade-slide-in .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid fadeSlideIn selector'); + return false; + } + + var animateFadeSlideInDom = document.querySelectorAll(options.selector); + var elementsCount = animateFadeSlideInDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not exacting + // more effort than required... + // + // We use css visiblity: hidden instead of display: none so the elements + // maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < elementsCount; i++) { + if (animateFadeSlideInDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateFadeSlideInDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateFadeSlideInDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delayValue = offset / speed / options.finishDelayThrottle; + var delay = parseFloat(delayValue).toFixed(2); + } + animateFadeSlideInDom[0].className += ' done'; + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateFadeSlideInDom, elementsCount); + } + + function fadeSlideInRight(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.72, + leftOffsetPercentage: 0.8, + selector: '.animate-fade-slide-in-right .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid fadeSlideInRight selector'); + return false; + } + + var animateSlideInRightDom = document.querySelectorAll(options.selector); + var elementsCount = animateSlideInRightDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not + // exacting more effort than required... + // + // We use css visiblity: hidden instead of display: none so the + // elements maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < elementsCount; i++) { + if (animateSlideInRightDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateSlideInRightDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateSlideInRightDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delayValue = offset / speed / options.finishDelayThrottle; + var delay = parseFloat(delayValue).toFixed(2); + } + animateSlideInRightDom[0].className += ' done'; + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateSlideInRightDom, elementsCount); + + } + + function ripple(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.72, + leftOffsetPercentage: 0.8, + selector: '.animate-ripple .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid ripple selector'); + return false; + } + + var animateRippleDom = document.querySelectorAll(options.selector); + var elementsCount = animateRippleDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not + // exacting more effort than required... + // + // We use css visiblity: hidden instead of display: none so the + // elements maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < animateRippleDom.length; i++) { + if (animateRippleDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateRippleDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateRippleDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delayValue = offset / speed / options.finishDelayThrottle; + var delay = parseFloat(delayValue).toFixed(2); + } + animateRippleDom[0].className += ' done'; + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateRippleDom, elementsCount); + } + + function panInLeft(options) { + + // We have a single option, so it may be passed as a string or property + if (typeof options === 'string') { + options = { + selector: options + }; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid pushDown selector'); + return false; + } + + var animatePanInLeftDom = document.querySelectorAll(options.selector); + var elementAnimationCount = animatePanInLeftDom.length; + for (var i = 0; i < elementAnimationCount; i++) { + var element = animatePanInLeftDom[i]; + var classNameToRemove = 'animate-pan-in-left'; + var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove); + element.className = element.className.substr(0, indexOfClassNameToRemove); + } + } + + function pushDown(options) { + + // We have a single option, so it may be passed as a string or property + if (typeof options === 'string') { + options = { + selector: options + }; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid pushDown selector'); + return false; + } + + var animatePushDownDom = document.querySelectorAll(options.selector); + var elementAnimationCount = animatePushDownDom.length; + for (var i = 0; i < elementAnimationCount; i++) { + var element = animatePushDownDom[i]; + var classNameToRemove = options.selector.split('.')[1]; + var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove); + element.className = element.className.substr(0, indexOfClassNameToRemove); + } + } + + function slideUp(options) { + + // We have a single option, so it may be passed as a string or property + if (typeof options === 'string') { + options = { + selector: options + }; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid pushDown selector'); + return false; + } + + var animateSlideUpDom = document.querySelectorAll(options.selector); + var elementAnimationCount = animateSlideUpDom.length; + for (var i = 0; i < elementAnimationCount; i++) { + var element = animateSlideUpDom[i]; + var classNameToRemove = options.selector.split('.')[1]; + var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove); + element.className = element.className.substr(0, indexOfClassNameToRemove); + } + } + + /* Export object + /============================================================================*/ + return motion; + } + + Motion.$inject = []; + }; + + +/***/ } +/******/ ]) +}); +; +//# sourceMappingURL=ionic.material.min.js.map \ No newline at end of file diff --git a/www/lib/ionic-material/dist/ionic.material.min.css b/www/lib/ionic-material/dist/ionic.material.min.css new file mode 100644 index 0000000..7b6eb5c --- /dev/null +++ b/www/lib/ionic-material/dist/ionic.material.min.css @@ -0,0 +1,12 @@ +.item-md-label{display:block;background:0 0;box-shadow:none;margin-left:12px;margin-right:12px;padding:30px 0 0}.item-md-label .input-label{position:absolute;z-index:2;-webkit-transform:translate3d(0,-30px,0) scale(1);transform:translate3d(0,-30px,0) scale(1);-webkit-transition:all .2s ease;transition:all .2s ease;color:#fff;opacity:.5;filter:alpha(opacity=50);-webkit-transform-origin:0;-ms-transform-origin:0;transform-origin:0}.item-md-label input{background-color:rgba(0,0,0,.6);bottom:0;color:#fff;letter-spacing:.25rem;padding:20px 10px;position:relative;z-index:1}.item-md-label .highlight{position:absolute;bottom:0;height:2px;left:0;width:100%;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);-webkit-transition:all .15s ease;transition:all .15s ease;z-index:1}.item-md-label .highlight-light{background:#fff}.item-md-label .highlight-stable{background:#f8f8f8}.item-md-label .highlight-positive{background:#387ef5}.item-md-label .highlight-calm{background:#11c1f3}.item-md-label .highlight-balanced{background:#33cd5f}.item-md-label .highlight-energized{background:#ffc900}.item-md-label .highlight-assertive{background:#ef473a}.item-md-label .highlight-royal{background:#886aea}.item-md-label .highlight-dark{background:#444}.item-md-label .input-label{letter-spacing:.25rem;padding:0 10px}.item-md-label input.used~.input-label,.item-md-label input:focus~.input-label{font-weight:700;opacity:.7;filter:alpha(opacity=70);padding:0;text-transform:uppercase;-webkit-transform:translate3d(0,-60px,0) scale(.9);transform:translate3d(0,-60px,0) scale(.9)}.item-md-label input:focus~.highlight{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bar.bar-header.expanded,.expanded .bar.bar-header{height:75px}.bar.bar-header.expanded .title,.expanded.bar.bar-header .title{bottom:0;top:initial;padding-left:16px}.bar.bar-header.expanded .title.fab-left,.expanded .bar.bar-header .title.fab-left{bottom:0;left:90px;position:absolute;right:initial;top:initial}.bar.bar-header.expanded .title.fab-right,.expanded .bar.bar-header .title.fab-right{bottom:0;left:4px;position:absolute;top:initial;right:initial}.bar.bar-header.expanded+.button-fab,.expanded .bar.bar-header+.button-fab{top:50px}.bar.bar-header.expanded.push-down,.expanded .bar.bar-header.push-down{height:44px;overflow:hidden}.bar.bar-header.expanded,.expanded .bar.bar-header{-webkit-transition:height 1s cubic-bezier(.55,0,.1,1);transition:height 1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bar.bar-header.expanded+.button-fab,.expanded .bar.bar-header+.button-fab{-webkit-transition:all 1.1s cubic-bezier(.55,0,.1,1);transition:all 1.1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0) scale(1);transform:translate3d(0,0,0) scale(1)}.bar.bar-header.expanded.push-down+.button-fab,.expanded .bar.bar-header.push-down+.button-fab{top:0;-webkit-transform:translate3d(-100px,-100px,0) scale(2.5);transform:translate3d(-100px,-100px,0) scale(2.5)}.bar.bar-header.expanded.push-down .title,.expanded .bar.bar-header.push-down .title{opacity:0;filter:alpha(opacity=0);left:initial;right:initial}.bar.bar-header.expanded .title,.expanded .bar.bar-header .title{opacity:1;filter:alpha(opacity=100);-webkit-transition:all 2s cubic-bezier(.55,0,.1,1);transition:all 2s cubic-bezier(.55,0,.1,1);bottom:0;left:42px!important;top:initial}.bar.bar-header.expanded.has-header-fab-left .title,.expanded.has-header-fab-left .bar.bar-header .title{left:76px!important}.bar{z-index:2;font-size:1.3em;width:100%;box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.bar .button{z-index:3}.bar .no-text span.back-text{display:none}.bar .title sup{opacity:.7}.bar.bar-header .button+.title{text-align:left;left:35px;line-height:46px}.button-bar{box-shadow:0 1px 3px rgba(0,0,0,.15)}.button-bar>.button{box-shadow:none}.button-bar>.button .icon:before,.button-bar>.button:before{line-height:initial}.bar-footer .button-fab{position:absolute;top:-26px;bottom:initial}.bar-footer .buttons-left .button-fab{left:8px}.bar-footer .buttons-right .button-fab{right:8px}.bar .button.button-clear{box-shadow:none}.left-buttons .button-fab{left:8px;top:16px}.right-buttons .button-fab{right:8px;top:16px}.fab-left.title-left,.fab-left.title.title-left{left:68px}.bar .button.button-fab,.button.button-fab{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);z-index:9999;width:56px;height:56px;max-height:initial;max-width:initial;border-radius:50%;border-radius:50%;overflow:hidden;padding:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:.3s fade-in-out;transition:.3s fade-in-out;-webkit-transition-property:-webkit-transform,box-shadow;transition-property:transform,box-shadow}.bar .button.button-fab.button-fab-bottom-right,.button.button-fab.button-fab-bottom-right{top:auto;right:16px;bottom:16px;left:auto;position:absolute}.bar .button.button-fab.button-fab-bottom-left,.button.button-fab.button-fab-bottom-left{top:auto;right:auto;bottom:16px;left:16px;position:absolute}.bar .button.button-fab.button-fab-top-right,.button.button-fab.button-fab-top-right{top:32px;right:16px;bottom:auto;left:auto;position:absolute}.bar .button.button-fab.button-fab-top-left,.button.button-fab.button-fab-top-left{top:32px;right:auto;bottom:auto;left:16px;position:absolute}.bar .button.button-fab.button-fab-top-left.expanded,.bar .button.button-fab.button-fab-top-right.expanded,.button.button-fab.button-fab-top-left.expanded,.button.button-fab.button-fab-top-right.expanded{top:48px}.bar .button.button-fab i,.button.button-fab i{font-size:2.5rem;margin-top:0}.bar .button.button-fab.mini,.button.button-fab.mini{width:40px;height:40px}.bar .button.button-fab.mini i,.button.button-fab.mini i{font-size:2rem}.button.button-fab.button-fab-top-left.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(-120px,60px,0);transform:translate3d(-120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.button.button-fab.button-fab-top-right.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(120px,60px,0);transform:translate3d(120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.button.button-fab.button-fab-bottom-left.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(-120px,60px,0);transform:translate3d(-120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.button.button-fab.button-fab-bottom-right.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(120px,60px,0);transform:translate3d(120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.bar .button.button-floating,.button.button-floating{display:inline-block;color:#FFF;position:relative;z-index:1;width:37px;height:37px;line-height:37px;padding:0;border-radius:50%;background-clip:padding-box;-webkit-transition:.3s;transition:.3s;cursor:pointer}.bar .button.button-floating i,.button.button-floating i{width:inherit;display:inline-block;text-align:center;color:#FFF;line-height:37px}.bar .button.button-floating.button-large,.button.button-floating.button-large{width:55.5px;height:55.5px}.bar .button.button-floating.button-large i,.button.button-floating.button-large i{line-height:55.5px}.bar .button,.bar .button.button-flat,.bar .button.button-large,.button,.button.button-flat,.button.button-large{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);display:inline-block;height:36px;padding:0 2rem;border-radius:2px;background-clip:padding-box;text-transform:uppercase;border:none;outline:0;-webkit-tap-highlight-color:transparent}.bar .button.button-floating.disabled,.bar .button.button-floating:disabled,.bar .button.button-large.disabled,.bar .button.button-large:disabled,.bar .button.button:disabled,.bar .button.disabled,.bar .button.disabled.button-large,.button.button-floating.disabled,.button.button-floating:disabled,.button.button-large.disabled,.button.button-large:disabled,.button.button:disabled,.button.disabled,.button.disabled.button-large{background-color:#DFDFDF;box-shadow:none;color:#9F9F9F}.bar .button.button-floating.disabled:hover,.bar .button.button-floating:disabled:hover,.bar .button.button-large.disabled:hover,.bar .button.button-large:disabled:hover,.bar .button.button:disabled:hover,.bar .button.disabled.button-large:hover,.bar .button.disabled:hover,.button.button-floating.disabled:hover,.button.button-floating:disabled:hover,.button.button-large.disabled:hover,.button.button-large:disabled:hover,.button.button:disabled:hover,.button.disabled.button-large:hover,.button.disabled:hover{background-color:#DFDFDF;color:#9F9F9F}.bar .button i,.bar .button.button-flat i,.bar .button.button-floating i,.bar .button.button-large i,.button i,.button.button-flat i,.button.button-floating i,.button.button-large i{font-size:1.3rem}.button-bar .button{border-radius:0}.bar .button,.bar .button-large,.button,.button-large{text-decoration:none;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;outline:0;margin:0;white-space:nowrap;text-align:center;text-transform:uppercase;font-weight:500;font-style:inherit;font-variant:inherit;font-size:inherit;text-decoration:none;cursor:pointer;-webkit-transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),-webkit-transform .4s cubic-bezier(.25,.8,.25,1);transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),transform .4s cubic-bezier(.25,.8,.25,1)}.button:focus{outline:0}.button.ng-hide{-webkit-transition:none;transition:none}.button.cornered{border-radius:0}.button.raised{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.button-outline,.button-outline:active,.button-outline:hover{border-style:solid;border-width:1px}.button.button-outline,.button.button-outline.button-assertive,.button.button-outline.button-balanced,.button.button-outline.button-calm,.button.button-outline.button-dark,.button.button-outline.button-energized,.button.button-outline.button-light,.button.button-outline.button-positive,.button.button-outline.button-royal,.button.button-outline.button-stable{border-color:rgba(0,0,0,.1)}.bar .button-flat,.button-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.bar .button.button-flat.disabled,.button.button-flat.disabled{color:#b3b3b3}.bar .button.button-large i,.button.button-large i{font-size:1.6rem}.button-pin-header.button-floating{position:absolute;z-index:1000}.button-pin-header.button-pin-left{left:24px;top:-24px}.button-pin-header.button-pin-right{right:24px;top:-24px}.button:not([disabled]).floating:focus,.button:not([disabled]).floating:hover,.button:not([disabled]).raised:focus,.button:not([disabled]).raised:hover{-webkit-transform:translate3d(0,-1px,0);transform:translate3d(0,-1px,0)}.button.button-flat{box-shadow:none}.button.button-flat,.button.button-flat:active,.button.button-flat:hover{color:#fff}.button.button-clear,.button.button-clear:active,.button.button-clear:hover{background:0 0}.button-block.ink,.button-full.ink{display:block}.card-item.item{border:none;padding-bottom:4px;padding-top:4px}.card-item.item:first-child{padding-top:16px}.card{box-shadow:0 2px 5px 0 rgba(0,0,0,.26);display:block;margin:8px;padding:0;position:relative}.card .image{display:block;margin-top:10px;margin-bottom:5px}.card img{box-shadow:0 2px 5px 0 rgba(0,0,0,.26);display:block;max-width:100%;max-height:initial;position:static}.card.card-gallery img{border:none;box-shadow:none;display:block}.card .card-footer{font-size:90%;opacity:.8;filter:alpha(opacity=80);padding-top:10px}.card>.item{border:none}.card.card-gallery>.item{background:inherit}.card .icon+.icon{padding-left:1rem}.card.animate-fade-in{opacity:0;filter:alpha(opacity=0);-webkit-transform:translate3d(-30px,1px,0);-webkit-transition:all 1s ease-in-out}.card.animate-fade-in.done{opacity:1;filter:alpha(opacity=100);-webkit-transform:translate3d(0,0,0)}.card .item.item-avatar{min-height:88px;padding-left:88px}.hero{background-size:cover;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);color:#fff;height:200px;position:relative;text-align:center;-webkit-transition:all 1s cubic-bezier(.55,0,.1,1);transition:all 1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);width:100%}.hero .hero-icon{box-shadow:0 0 2px 0 rgba(0,0,0,.26);border-radius:50%;display:inline-block;height:150px;padding:10px 30px;line-height:136px;width:150px}.hero.no-header{height:244px}.hero>.content{bottom:0;position:absolute;text-align:center;width:100%;z-index:1}.hero>.content>.avatar{background-position:center;background-size:cover;border:solid 1px rgba(255,255,255,.8);border-radius:50%;display:inline-block;height:88px;left:auto;margin-bottom:10px;position:relative;width:88px}.hero h1 .hero h2,.hero h3,.hero h4,.hero h5,.hero h6{color:#fff;margin:0}.hero h4{color:rgba(255,255,255,.7);margin:3px 0 16px}.hero h1>a,.hero h2>a,.hero h3>a,.hero h4>a,.hero h5>a,.hero h6>a{text-decoration:none}.hero+.button-bar{border-radius:0;margin-top:0}.hero+.button-bar>.button:first-child,.hero+.button-bar>.button:last-child{border-radius:0}.hero .hero-icon{color:#fff;font-size:96px}.hero .hero-icon+h1{color:#fff;letter-spacing:.15rem}.hero .button,.hero .button.button-flat,.hero .button.button-large{margin:0}.hero h1.title{color:#fff;font-size:23px;margin:0;text-align:left;padding-left:80px;line-height:59px}.hero+.mid-bar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:all 1s cubic-bezier(.55,0,.1,1);transition:all 1s cubic-bezier(.55,0,.1,1);height:initial;opacity:1;filter:alpha(opacity=100)}.hero>*{-webkit-transition:opacity 2.5s cubic-bezier(.55,0,.1,1);transition:opacity 2.5s cubic-bezier(.55,0,.1,1);opacity:1;filter:alpha(opacity=100)}.item{font-size:14px;width:100%}.item-icon-left .icon{left:16px}.item-icon-right .icon{right:16px}.item-thumbnail-left .item-content .item-image,.item-thumbnail-left .item-content>img:first-child,.item-thumbnail-left .item-image,.item-thumbnail-left>img:first-child{border-radius:50%}.tab-item.activated{height:calc(100% + 3px)}.content+.list{padding-top:0}.list .item{border:none;min-height:48px;text-align:left}.list .item.tabs{padding:initial}.list .item.item-bg-image{min-height:150px}.list .item.item-bg-image>img{height:100%;left:0;max-width:initial;opacity:.65;filter:alpha(opacity=65);position:absolute;top:0;width:100%;z-index:0}.list a.item{opacity:1;filter:alpha(opacity=100)}.list .item.item-bg-image h1,.list .item.item-bg-image h2,.list .item.item-bg-image h3,.list .item.item-bg-image h4,.list .item.item-bg-image h5,.list .item.item-bg-image h6{color:#fff;font-weight:700;position:relative;text-shadow:0 0 3px rgba(0,0,0,.95);z-index:1}.list .item.item-bg-image h2{font-size:24px}.list .item.item-bg-image p{color:#fff;font-size:17px;position:relative;text-shadow:0 0 4px rgba(0,0,0,.95);z-index:1}.item-avatar,.item-avatar .item-content,.item-avatar-left,.item-avatar-left .item-content{min-height:80px}.card>.item.item-thumbnail-left,.item-thumbnail-left,.item-thumbnail-left .item-content{padding-left:106px}.card>.item.item-thumbnail-right,.item-thumbnail-right,.item-thumbnail-right .item-content{padding-right:106px}.item-avatar .item-content .item-image,.item-avatar .item-content>img:first-child,.item-avatar .item-image,.item-avatar-left .item-content .item-image,.item-avatar-left .item-content>img:first-child,.item-avatar-left .item-image,.item-avatar-left>img:first-child,.item-avatar>img:first-child{border-radius:50%;left:16px;max-height:40px;max-width:40px}.avatar,.item-avatar .avatar{background-position:center;background-size:cover;border-radius:50%;display:inline-block;height:56px;left:16px;position:absolute;width:56px}.list.half{display:inline-block;float:left;margin:0;padding:0;width:50%}.list.half:first-child{padding:16px 8px 16px 16px}.list.half:last-child{padding:16px 16px 16px 8px}.list.half:first-child .card.card-gallery,.list.half:last-child .card.card-gallery{margin-left:0;margin-right:0}.list.condensed-space>.card,.list.condensed-space>.item{margin:0 0 2px}.list .card.card-gallery{display:block;float:left;margin:0 0 0 13px;padding:0;width:auto}.list.half .item{width:100%}.list.half .item.card{margin-bottom:16px}.list .card.card-gallery.item h2{padding:12px}.list .item.item-gallery img{width:100%}.item.item-divider{border-top:solid 1px rgba(0,0,0,.12);font-size:14px;font-weight:700;height:48px;line-height:48px;color:rgba(0,0,0,.54)}.item.item-divider:first-child{border:none}.item .item-content.activated,.item .item-content.active,.item-complex.activated .item-content,.item-complex.active .item-content,.item.activated,.item.active{background-color:transparent}.list-inset{margin:20px 30px;border-left:solid 1px #ccc;border-radius:0;background-color:#fff}.item-floating-label,.list .item.item-floating-label{border-bottom:solid 1px #ccc}.loader{position:relative;margin:0 auto;width:100px;height:100px;zoom:1.7}.circular{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;height:100px;position:relative;width:100px}.path{stroke-dasharray:1,200;stroke-dashoffset:0;-webkit-animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}100%{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}100%{stroke-dasharray:89,200;stroke-dashoffset:-124}}@-webkit-keyframes color{0%,100%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}@keyframes color{0%,100%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}.login{background-position:25% 25%;background-size:180% 180%;height:100%;-webkit-transition:all 1.5s ease-in-out;transition:all 1.5s ease-in-out}.login .item{margin:0 12px;padding-left:0;padding-right:0;width:initial}.login .button-bar{bottom:0;margin:28px 12px 0;width:initial}.login .light-bg{background-color:#fff}.icon.hero-icon:before{line-height:130px}.card.has-mask:after,.hero.has-mask:after,.item.has-mask:after{content:'';background:-webkit-linear-gradient(top,transparent 0,rgba(0,0,0,.6) 100%);height:100%;left:0;position:absolute;top:0;z-index:0;width:100%}.card.has-mask-reverse:after,.hero.has-mask-reverse:after,.item.has-mask-reverse:after{content:'';background:-webkit-linear-gradient(top,rgba(0,0,0,.6) 0,transparent 100%);height:100%;left:0;position:absolute;top:0;z-index:0;width:100%}.menu-bottom{bottom:16px;left:16px;right:16px;position:absolute}.menu-top{top:16px;left:16px;right:16px;position:absolute}.menu .avatar{top:16px;left:16px;height:65px;width:65px}.menu .bar.bar-header.expanded{box-shadow:none;min-height:150px;color:#fff}.menu-open .bar.bar-header.expanded{background-position:0;background-size:100%}.has-expanded-header{top:150px!important}.motion{-webkit-transition:all .5s ease-out;transition:all .5s ease-out}.fade{opacity:0;filter:alpha(opacity=0);-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.spin-back{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(360deg) scale(0)!important;transform:translateZ(0) rotate(360deg) scale(0)!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.spiral{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(-360deg) scale(0) translate(-120px)!important;transform:translateZ(0) rotate(-360deg) scale(0) translate(-120px)!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.spiral-back{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(360deg) scale(0) translate(120px)!important;transform:translateZ(0) rotate(360deg) scale(0) translate(120px)!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.menu-open .avatar{opacity:1;filter:alpha(opacity=100);-webkit-transform:translateZ(0) rotate(0) scale(1)!important;transform:translateZ(0) rotate(0) scale(1)!important;-webkit-transition:all .3s ease-out!important;transition:all .3s ease-out!important}.spin{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(0) scale(0)!important;transform:translateZ(0) rotate(0) scale(0)!important;-webkit-transition:all .3s ease-out!important;transition:all .3s ease-out!important}.spin.on{-webkit-transform:translateZ(0) rotate(-360deg) scale(1)!important;transform:translateZ(0) rotate(-360deg) scale(1)!important}.flap{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotateX(0) scale(0) translate(-120px)!important;transform:translateZ(0) rotateX(0) scale(0) translate(-120px)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.flap.on{-webkit-transform:translateZ(0) rotateX(-720deg) scale(1) translate(0)!important;transform:translateZ(0) rotateX(-720deg) scale(1) translate(0)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.drop{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) scale(3)!important;transform:translateZ(0) scale(3)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.drop.on{-webkit-transform:translateZ(0) scale(1)!important;transform:translateZ(0) scale(1)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.flip{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotateY(0) scale(0)!important;transform:translateZ(0) rotateY(0) scale(0)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.flip.on{-webkit-transform:translateZ(0) rotateY(-720deg) scale(1)!important;transform:translateZ(0) rotateY(-720deg) scale(1)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.bold{font-weight:700}.static{position:static}.pull-left{float:left}.pull-right{float:right}.double-padding,.ionic-content.double-padding{padding:16px}.double-padding-x{padding-left:16px;padding-right:16px}.double-padding-y{padding-top:16px;padding-bottom:16px}.outline{border-style:solid;border-width:1px}.border-top{border-top:solid 1px #ccc;padding-top:30px}.no-border{border:none}.circle{border-radius:50%}.bar.no-padding,.button-bar.no-padding,.button.no-padding,.card.no-padding,.item.no-padding,.list.no-padding,.no-padding{padding:0}.flat,.flat.button,.flat.button.icon,.flat.hero,.flat.tabs{box-shadow:none;-webkit-box-shadow:none}.im-wrapper,.padding{padding:16px!important}.padding-bottom{padding-bottom:16px!important}.padding-top{padding-top:16px!important}.padding-left{padding-left:16px!important}.padding-right{padding-right:16px!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-top{padding-top:0!important}.no-padding-left{padding-left:0!important}.no-padding-right{padding-right:0!important}.z1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.bar.bar-positive.darker{background-color:#164FAB}.bar.bar-positive.dark-positive-bg{background-color:#2C5CAD}.muted{color:#C3C3C3}.clear-bg{background:0 0}.animate-blinds .item{-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1);-webkit-transition:-webkit-transform .3s cubic-bezier(.55,0,.1,1);transition:transform .3s cubic-bezier(.55,0,.1,1)}.animate-blinds .item-bg-image>img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-blinds .in,.animate-blinds.done>*{-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.animate-blinds .in,.animate-blinds.done .item{visibility:visible}.animate-blinds .item{visibility:hidden;opacity:0;filter:alpha(opacity=0)}.animate-blinds .in,.animate-blinds.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;opacity:1;filter:alpha(opacity=100);visibility:visible}.animate-blinds.done .in{opacity:1;filter:alpha(opacity=100)}.animate-blinds .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-blinds.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-blinds .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.animate-pan-in-left{background-position:0 0}.animate-ripple .item-bg-image img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-ripple .item{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1);opacity:0;filter:alpha(opacity=0)}.animate-ripple .item.in{opacity:1;filter:alpha(opacity=100)}.animate-ripple .done{visibility:hidden;-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1);-webkit-transition:-webkit-transform .3s cubic-bezier(.55,0,.1,1);transition:transform .3s cubic-bezier(.55,0,.1,1)}.animate-ripple .in,.animate-ripple.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;visibility:visible}.animate-ripple.done .in{opacity:1;filter:alpha(opacity=100)}.animate-ripple .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-ripple.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-ripple .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.animate-fade-slide-in .item{-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1)}.animate-fade-slide-in .item-bg-image img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-fade-slide-in .in,.animate-fade-slide-in.done .item{-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:visible}.list .item.item-bg-image{max-height:150px}.animate-fade-slide-in .item{visibility:hidden;-ms-transform:translate3d(-250px,250px,0);-webkit-transform:translate3d(-250px,250px,0);transform:translate3d(-250px,250px,0);-webkit-transition:-webkit-transform .5s cubic-bezier(.55,0,.1,1);transition:transform .5s cubic-bezier(.55,0,.1,1);opacity:0;filter:alpha(opacity=0)}.animate-fade-slide-in .in,.animate-fade-slide-in.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;opacity:1;filter:alpha(opacity=100);visibility:visible}.animate-fade-slide-in.done .in{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-fade-slide-in.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.animate-fade-slide-in-right .item{-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1)}.animate-fade-slide-in-right .item-bg-image>img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-fade-slide-in-right .in,.animate-fade-slide-in-right.done>*{-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.animate-fade-slide-in-right .in,.animate-fade-slide-in-right.done .item{visibility:visible}.animate-fade-slide-in-right .item{visibility:hidden;-ms-transform:translate3d(250px,250px,0);-webkit-transform:translate3d(250px,250px,0);transform:translate3d(250px,250px,0);-webkit-transition:-webkit-transform .5s cubic-bezier(.55,0,.1,1);transition:transform .5s cubic-bezier(.55,0,.1,1);opacity:0;filter:alpha(opacity=0)}.animate-fade-slide-in-right .in,.animate-fade-slide-in-right.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;opacity:1;filter:alpha(opacity=100);visibility:visible}.animate-fade-slide-in-right.done .in{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in-right .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-fade-slide-in-right.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in-right .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.hero.slide-up,.slide-up{height:100%;overflow:hidden;text-align:center}.slide-up{-webkit-transition:all 1s cubic-bezier(.55,0,.1,1);transition:all 1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.hero.slide-up *,.slide-up *{opacity:0;filter:alpha(opacity=0)}.hero.slide-up+.mid-bar,.slide-up+.mid-bar{height:100%;opacity:.7;filter:alpha(opacity=70);-webkit-transform:translate3d(100%,-240px,0);transform:translate3d(100%,-240px,0)}/*! + * Waves v0.5.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Forked by Zach Fitzgerald and other contributors for Ionic Material + * + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + * + */.button-clear,.button-fab,.button-flat,.button-raised,.ink,.popup .button{position:relative;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.ink-ripple{position:absolute;border-radius:50%;width:100px;height:100px;margin-top:-50px;margin-left:-50px;opacity:0;background-color:rgba(255,255,255,.4);-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-o-transition:all .5s ease-out;transition:all .5s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.ink-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.button-clear,.button-fab,.button-flat,.button-raised,.ink-button,.ink-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.button-clear.activated,.button-clear:active,.button-fab.activated,.button-fab:active,.button-flat.activated,.button-flat:active,.button-raised.activated,.button-raised:active,.ink-button.activated,.ink-button:active,.ink-circle.activated,.ink-circle:active,.ink.activated,.ink:active,.popup .button.activated,.popup .button:active{-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 100%)}.button-clear,.button-clear:link,.button-clear:visited,.button-fab,.button-fab:link,.button-fab:visited,.button-flat,.button-flat:link,.button-flat:visited,.button-raised,.button-raised:link,.button-raised:visited,.ink-button,.ink-button-input,.ink-button:link,.ink-button:visited{white-space:nowrap;vertical-align:middle;cursor:pointer;border:none;outline:0;font-size:14px;text-align:center;text-decoration:none;z-index:1}.ink-button{padding:10px 15px;border-radius:2px}.ink-button-input{margin:0;padding:10px 15px}.ink-input-wrapper{border-radius:2px;vertical-align:bottom}.ink-input-wrapper.ink-button{padding:0}.ink-input-wrapper .ink-button-input{position:relative;top:0;left:0;z-index:1}.ink-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%}.ink-float{-webkit-mask-image:none;-webkit-box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12);box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12)}.ink-float:active{-webkit-box-shadow:0 8px 20px 1px rgba(0,0,0,.3);box-shadow:0 8px 20px 1px rgba(0,0,0,.3)}.ink-block{display:block}.ink-ripple{z-index:0}.button-clear .ink-ripple,.ink-dark .ink-ripple,.list .ink-ripple,[class$="-clear"]>.ink-ripple,[class$="-light"]>.ink-ripple,[class$="-stable"]>.ink-ripple,[class$="-100"]>.ink-ripple{background-color:rgba(0,0,0,.2)}.tab-item{position:relative}*{font-family:RobotoDraft,Roboto,"Helvetica Neue","Segoe UI",sans-serif}.rounded{border-radius:4px}a{cursor:pointer}.has-header.expanded{top:76px}.bar{border-bottom:none;padding:0}.bar .button{min-height:44px;min-width:44px;max-width:48px;margin-bottom:0;max-height:44px;width:48px}.bar .title+.buttons.buttons-right{right:0;top:0}.title-left,.title-right,.title.title-left,.title.title-right{left:48px}.bar .button-positive,.bar .button-positive.activated,.bar .button-positive:active,.bar .button-positive:hover,.bar-positive,.bar-positive.activated,.bar-positive:active,.bar-positive:hover,.button-bar-positive,.button-bar-positive.activated,.button-bar-positive:active,.button-bar-positive:hover,.button-positive,.button-positive.activated,.button-positive:active,.button-positive:hover,.header-positive,.header-positive.activated,.header-positive:active,.header-positive:hover,.positive-bg,.positive-bg.activated,.positive-bg:active,.positive-bg:hover,.positive-border,.positive-border.activated,.positive-border:active,.positive-border:hover{background-color:#3F51B5;color:#fff}.bar .button-positive-900,.bar .button-positive-900.activated,.bar .button-positive-900:active,.bar .button-positive-900:hover,.bar-positive-900,.bar-positive-900.activated,.bar-positive-900:active,.bar-positive-900:hover,.button-bar-positive-900,.button-bar-positive-900.activated,.button-bar-positive-900:active,.button-bar-positive-900:hover,.button-positive-900,.button-positive-900.activated,.button-positive-900:active,.button-positive-900:hover,.header-positive-900,.header-positive-900.activated,.header-positive-900:active,.header-positive-900:hover,.positive-900-bg,.positive-900-bg.activated,.positive-900-bg:active,.positive-900-bg:hover,.positive-900-border,.positive-900-border.activated,.positive-900-border:active,.positive-900-border:hover{background-color:#1A237E;color:#fff}.bar .button-positive-100,.bar .button-positive-100.activated,.bar .button-positive-100:active,.bar .button-positive-100:hover,.bar-positive-100,.bar-positive-100.activated,.bar-positive-100:active,.bar-positive-100:hover,.button-bar-positive-100,.button-bar-positive-100.activated,.button-bar-positive-100:active,.button-bar-positive-100:hover,.button-positive-100,.button-positive-100.activated,.button-positive-100:active,.button-positive-100:hover,.header-positive-100,.header-positive-100.activated,.header-positive-100:active,.header-positive-100:hover,.positive-100-bg,.positive-100-bg.activated,.positive-100-bg:active,.positive-100-bg:hover,.positive-100-border,.positive-100-border.activated,.positive-100-border:active,.positive-100-border:hover{background-color:#C5CAE9;color:#fff}.bar .button-calm,.bar .button-calm.activated,.bar .button-calm:active,.bar .button-calm:hover,.bar-calm,.bar-calm.activated,.bar-calm:active,.bar-calm:hover,.button-bar-calm,.button-bar-calm.activated,.button-bar-calm:active,.button-bar-calm:hover,.button-calm,.button-calm.activated,.button-calm:active,.button-calm:hover,.calm-bg,.calm-bg.activated,.calm-bg:active,.calm-bg:hover,.calm-border,.calm-border.activated,.calm-border:active,.calm-border:hover,.header-calm,.header-calm.activated,.header-calm:active,.header-calm:hover{background-color:#2196F3;color:#fff}.bar .button-calm-900,.bar .button-calm-900.activated,.bar .button-calm-900:active,.bar .button-calm-900:hover,.bar-calm-900,.bar-calm-900.activated,.bar-calm-900:active,.bar-calm-900:hover,.button-bar-calm-900,.button-bar-calm-900.activated,.button-bar-calm-900:active,.button-bar-calm-900:hover,.button-calm-900,.button-calm-900.activated,.button-calm-900:active,.button-calm-900:hover,.calm-900-bg,.calm-900-bg.activated,.calm-900-bg:active,.calm-900-bg:hover,.calm-900-border,.calm-900-border.activated,.calm-900-border:active,.calm-900-border:hover,.header-calm-900,.header-calm-900.activated,.header-calm-900:active,.header-calm-900:hover{background-color:#0D47A1;color:#fff}.bar .button-calm-100,.bar .button-calm-100.activated,.bar .button-calm-100:active,.bar .button-calm-100:hover,.bar-calm-100,.bar-calm-100.activated,.bar-calm-100:active,.bar-calm-100:hover,.button-bar-calm-100,.button-bar-calm-100.activated,.button-bar-calm-100:active,.button-bar-calm-100:hover,.button-calm-100,.button-calm-100.activated,.button-calm-100:active,.button-calm-100:hover,.calm-100-bg,.calm-100-bg.activated,.calm-100-bg:active,.calm-100-bg:hover,.calm-100-border,.calm-100-border.activated,.calm-100-border:active,.calm-100-border:hover,.header-calm-100,.header-calm-100.activated,.header-calm-100:active,.header-calm-100:hover{background-color:#BBDEFB;color:#fff}.bar .button-royal,.bar .button-royal.activated,.bar .button-royal:active,.bar .button-royal:hover,.bar-royal,.bar-royal.activated,.bar-royal:active,.bar-royal:hover,.button-bar-royal,.button-bar-royal.activated,.button-bar-royal:active,.button-bar-royal:hover,.button-royal,.button-royal.activated,.button-royal:active,.button-royal:hover,.header-royal,.header-royal.activated,.header-royal:active,.header-royal:hover,.royal-bg,.royal-bg.activated,.royal-bg:active,.royal-bg:hover,.royal-border,.royal-border.activated,.royal-border:active,.royal-border:hover{background-color:#673AB7;color:#fff}.bar .button-royal-900,.bar .button-royal-900.activated,.bar .button-royal-900:active,.bar .button-royal-900:hover,.bar-royal-900,.bar-royal-900.activated,.bar-royal-900:active,.bar-royal-900:hover,.button-bar-royal-900,.button-bar-royal-900.activated,.button-bar-royal-900:active,.button-bar-royal-900:hover,.button-royal-900,.button-royal-900.activated,.button-royal-900:active,.button-royal-900:hover,.header-royal-900,.header-royal-900.activated,.header-royal-900:active,.header-royal-900:hover,.royal-900-bg,.royal-900-bg.activated,.royal-900-bg:active,.royal-900-bg:hover,.royal-900-border,.royal-900-border.activated,.royal-900-border:active,.royal-900-border:hover{background-color:#311B92;color:#fff}.bar .button-royal-100,.bar .button-royal-100.activated,.bar .button-royal-100:active,.bar .button-royal-100:hover,.bar-royal-100,.bar-royal-100.activated,.bar-royal-100:active,.bar-royal-100:hover,.button-bar-royal-100,.button-bar-royal-100.activated,.button-bar-royal-100:active,.button-bar-royal-100:hover,.button-royal-100,.button-royal-100.activated,.button-royal-100:active,.button-royal-100:hover,.header-royal-100,.header-royal-100.activated,.header-royal-100:active,.header-royal-100:hover,.royal-100-bg,.royal-100-bg.activated,.royal-100-bg:active,.royal-100-bg:hover,.royal-100-border,.royal-100-border.activated,.royal-100-border:active,.royal-100-border:hover{background-color:#D1C4E9;color:#fff}.balanced-bg,.balanced-bg.activated,.balanced-bg:active,.balanced-bg:hover,.balanced-border,.balanced-border.activated,.balanced-border:active,.balanced-border:hover,.bar .button-balanced,.bar .button-balanced.activated,.bar .button-balanced:active,.bar .button-balanced:hover,.bar-balanced,.bar-balanced.activated,.bar-balanced:active,.bar-balanced:hover,.button-balanced,.button-balanced.activated,.button-balanced:active,.button-balanced:hover,.button-bar-balanced,.button-bar-balanced.activated,.button-bar-balanced:active,.button-bar-balanced:hover,.header-balanced,.header-balanced.activated,.header-balanced:active,.header-balanced:hover{background-color:#4CAF50;color:#fff}.balanced-900-bg,.balanced-900-bg.activated,.balanced-900-bg:active,.balanced-900-bg:hover,.balanced-900-border,.balanced-900-border.activated,.balanced-900-border:active,.balanced-900-border:hover,.bar .button-balanced-900,.bar .button-balanced-900.activated,.bar .button-balanced-900:active,.bar .button-balanced-900:hover,.bar-balanced-900,.bar-balanced-900.activated,.bar-balanced-900:active,.bar-balanced-900:hover,.button-balanced-900,.button-balanced-900.activated,.button-balanced-900:active,.button-balanced-900:hover,.button-bar-balanced-900,.button-bar-balanced-900.activated,.button-bar-balanced-900:active,.button-bar-balanced-900:hover,.header-balanced-900,.header-balanced-900.activated,.header-balanced-900:active,.header-balanced-900:hover{background-color:#1B5E20;color:#fff}.balanced-100-bg,.balanced-100-bg.activated,.balanced-100-bg:active,.balanced-100-bg:hover,.balanced-100-border,.balanced-100-border.activated,.balanced-100-border:active,.balanced-100-border:hover,.bar .balanced-100-bg:hover,.bar .button-balanced-100,.bar .button-balanced-100.activated,.bar .button-balanced-100:active,.bar-balanced-100,.bar-balanced-100.activated,.bar-balanced-100:active,.bar-balanced-100:hover,.button-balanced-100,.button-balanced-100.activated,.button-balanced-100:active,.button-balanced-100:hover,.button-bar-balanced-100,.button-bar-balanced-100.activated,.button-bar-balanced-100:active,.button-bar-balanced-100:hover,.header-balanced-100,.header-balanced-100.activated,.header-balanced-100:active,.header-balanced-100:hover{background-color:#C8E6C9;color:#fff}.bar .button-energized,.bar .button-energized.activated,.bar .button-energized:active,.bar .button-energized:hover,.bar-energized,.bar-energized.activated,.bar-energized:active,.bar-energized:hover,.button-bar-energized,.button-bar-energized.activated,.button-bar-energized:active,.button-bar-energized:hover,.button-energized,.button-energized.activated,.button-energized:active,.button-energized:hover,.energized-bg,.energized-bg.activated,.energized-bg:active,.energized-bg:hover,.energized-border,.energized-border.activated,.energized-border:active,.energized-border:hover,.header-energized,.header-energized.activated,.header-energized:active,.header-energized:hover{background-color:#FF9800;color:#fff}.bar .button-energized-900,.bar .button-energized-900.activated,.bar .button-energized-900:active,.bar .button-energized-900:hover,.bar-energized-900,.bar-energized-900.activated,.bar-energized-900:active,.bar-energized-900:hover,.button-bar-energized-900,.button-bar-energized-900.activated,.button-bar-energized-900:active,.button-bar-energized-900:hover,.button-energized-900,.button-energized-900.activated,.button-energized-900:active,.button-energized-900:hover,.energized-900-bg,.energized-900-bg.activated,.energized-900-bg:active,.energized-900-bg:hover,.energized-900-border,.energized-900-border.activated,.energized-900-border:active,.energized-900-border:hover,.header-energized-900,.header-energized-900.activated,.header-energized-900:active,.header-energized-900:hover{background-color:#E65100;color:#fff}.bar .button-energized-100,.bar .button-energized-100.activated,.bar .button-energized-100:active,.bar .button-energized-100:hover,.bar-energized-100,.bar-energized-100.activated,.bar-energized-100:active,.bar-energized-100:hover,.button-bar-energized-100,.button-bar-energized-100.activated,.button-bar-energized-100:active,.button-bar-energized-100:hover,.button-energized-100,.button-energized-100.activated,.button-energized-100:active,.button-energized-100:hover,.energized-100-bg,.energized-100-bg.activated,.energized-100-bg:active,.energized-100-bg:hover,.energized-100-border,.energized-100-border.activated,.energized-100-border:active,.energized-100-border:hover,.header-energized-100,.header-energized-100.activated,.header-energized-100:active,.header-energized-100:hover{background-color:#FFE0B2}.assertive-bg,.assertive-bg.activated,.assertive-bg:active,.assertive-bg:hover,.assertive-border,.assertive-border.activated,.assertive-border:active,.assertive-border:hover,.bar .button-assertive,.bar .button-assertive.activated,.bar .button-assertive:active,.bar .button-assertive:hover,.bar-assertive,.bar-assertive.activated,.bar-assertive:active,.bar-assertive:hover,.button-assertive,.button-assertive.activated,.button-assertive:active,.button-assertive:hover,.button-bar-assertive,.button-bar-assertive.activated,.button-bar-assertive:active,.button-bar-assertive:hover,.header-assertive,.header-assertive.activated,.header-assertive:active,.header-assertive:hover{background-color:#F44336;color:#fff}.assertive-900-bg,.assertive-900-bg.activated,.assertive-900-bg:active,.assertive-900-bg:hover,.assertive-900-border,.assertive-900-border.activated,.assertive-900-border:active,.assertive-900-border:hover,.bar .button-assertive-900,.bar .button-assertive-900.activated,.bar .button-assertive-900:active,.bar .button-assertive-900:hover,.bar-assertive-900,.bar-assertive-900.activated,.bar-assertive-900:active,.bar-assertive-900:hover,.button-assertive-900,.button-assertive-900.activated,.button-assertive-900:active,.button-assertive-900:hover,.button-bar-assertive-900,.button-bar-assertive-900.activated,.button-bar-assertive-900:active,.button-bar-assertive-900:hover,.header-assertive-900,.header-assertive-900.activated,.header-assertive-900:active,.header-assertive-900:hover{background-color:#B71C1C;color:#fff}.assertive-100-bg,.assertive-100-bg.activated,.assertive-100-bg:active,.assertive-100-bg:hover,.assertive-100-border,.assertive-100-border.activated,.assertive-100-border:active,.assertive-100-border:hover,.bar .button-assertive-100,.bar .button-assertive-100.activated,.bar .button-assertive-100:active,.bar .button-assertive-100:hover,.bar-assertive-100,.bar-assertive-100.activated,.bar-assertive-100:active,.bar-assertive-100:hover,.button-assertive-100,.button-assertive-100.activated,.button-assertive-100:active,.button-assertive-100:hover,.button-bar-assertive-100,.button-bar-assertive-100.activated,.button-bar-assertive-100:active,.button-bar-assertive-100:hover,.header-assertive-100,.header-assertive-100.activated,.header-assertive-100:active,.header-assertive-100:hover{background-color:#FFCDD2;color:#fff}.bar .button-stable,.bar .button-stable.activated,.bar .button-stable:active,.bar .button-stable:hover,.bar-stable,.bar-stable.activated,.bar-stable:active,.bar-stable:hover,.button-bar-stable,.button-bar-stable.activated,.button-bar-stable:active,.button-bar-stable:hover,.button-stable,.button-stable.activated,.button-stable:active,.button-stable:hover,.header-stable,.header-stable.activated,.header-stable:active,.header-stable:hover,.stable-bg,.stable-bg.activated,.stable-bg:active,.stable-bg:hover,.stable-border,.stable-border.activated,.stable-border:active,.stable-border:hover{background-color:#E0E0E0;color:#fff}.positive,.positive *,.positive-900,.positive-900 *,.positive-900:active,.positive-900:active *,.positive-900:hover,.positive-900:hover *,.positive:active,.positive:active *,.positive:hover,.positive:hover *{color:#3F51B5}.positive-100,.positive-100 *,.positive-100:active,.positive-100:active *,.positive-100:hover,.positive-100:hover *{color:#C5CAE9}.calm-900,.calm-900 *,.calm-900:active,.calm-900:active *,.calm-900:hover,.calm-900:hover *{color:#0D47A1}.calm-100,.calm-100 *,.calm-100:active,.calm-100:active *,.calm-100:hover,.calm-100:hover *{color:#BBDEFB}.royal,.royal *,.royal:active,.royal:active *,.royal:hover,.royal:hover *{color:#673AB7}.royal-900,.royal-900 *,.royal-900:active,.royal-900:active *,.royal-900:hover,.royal-900:hover *{color:#311B92}.royal-100,.royal-100 *,.royal-100:active,.royal-100:active *,.royal-100:hover,.royal-100:hover *{color:#D1C4E9}.balanced,.balanced *,.balanced:active,.balanced:active *,.balanced:hover,.balanced:hover *{color:#4CAF50}.balanced-900,.balanced-900 *,.balanced-900:active,.balanced-900:active *,.balanced-900:hover,.balanced-900:hover *{color:#1B5E20}.balanced-100,.balanced-100 *,.balanced-100:active,.balanced-100:active *,.balanced-100:hover,.balanced-100:hover *{color:#C8E6C9}.energized,.energized *,.energized:active,.energized:active *,.energized:hover,.energized:hover *{color:#FF9800}.energized-900,.energized-900 *,.energized-900:active,.energized-900:active *,.energized-900:hover,.energized-900:hover *{color:#E65100}.energized-100,.energized-100 *,.energized-100:active,.energized-100:active *,.energized-100:hover,.energized-100:hover *{color:#FFE0B2}.assertive,.assertive *,.assertive:active,.assertive:active *,.assertive:hover,.assertive:hover *{color:#F44336}.assertive-900,.assertive-900 *,.assertive-900:active,.assertive-900:active *,.assertive-900:hover,.assertive-900:hover *{color:#B71C1C}.assertive-100,.assertive-100 *,.assertive-100:active,.assertive-100:active *,.assertive-100:hover,.assertive-100:hover *{color:#FFCDD2}.stable,.stable *,.stable:active,.stable:active *,.stable:hover,.stable:hover *{color:#E0E0E0}.light,.light *,.light:active,.light:active *,.light:hover,.light:hover *{color:#fff}.dark,.dark *,.dark:active,.dark:active *,.dark:hover,.dark:hover *{color:#444}.light-border{border-color:#ddd}.navbar-default .navbar-nav>li>a{margin:0;padding-right:26px;padding-left:26px;border-top:3px solid transparent;color:#BFD5C9;opacity:1}.mid-bar{padding:16px}.mid-bar h1,.mid-bar h2,.mid-bar h3,.mid-bar h4,.mid-bar h5,.mid-bar h6{color:#fff;margin-bottom:5px}.mid-bar p{color:rgba(255,255,255,.5);margin-bottom:0}.card>.item-avatar,.item-avatar,.item-avatar .item-content,.item-avatar-left,.item-avatar-left .item-content{padding-left:95px}.item,.item-complex .item-content,.item-radio .item-content{background-color:transparent}.dark-bg h2,.item.dark-bg h2{color:#fff}.tabs-striped .tabs{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.bar .button.button-clear{color:#fff}.bar .button.button-icon .icon:before,.bar .button.button-icon.icon-left:before,.bar .button.button-icon.icon-right:before,.bar .button.button-icon:before{vertical-align:top;font-size:24px}.menu{background-color:transparent}.button-icon.button.activated,.button-icon.button.active{opacity:initial}.popover{opacity:0;position:absolute;right:8px;transform:translate(50%,-50%) scale(0,0);transition:transform .3s ease-in-out,opacity .3s ease-in-out;top:8px}.popover.ng-enter{opacity:1;transform:translate(0,-14px) scale(1,1);transition:transform .3s ease-in-out,opacity .3s ease-in-out}.popover.ng-leave{opacity:0;transform:translate(50%,-50%) scale(0,0);transition:transform .3s ease-in-out,opacity .3s ease-in-out}.button{overflow:hidden!important} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvbWQtbGFiZWwuc2NzcyIsImVsZW1lbnRzL2Jhci1oZWFkZXItZXhwYW5kZWQuc2NzcyIsImVsZW1lbnRzL2Jhci5zY3NzIiwiZWxlbWVudHMvYnV0dG9uLWJhci5zY3NzIiwiZWxlbWVudHMvYnV0dG9uLWZhYi5zY3NzIiwiZWxlbWVudHMvYnV0dG9uLWZsb2F0aW5nLnNjc3MiLCJlbGVtZW50cy9idXR0b24uc2NzcyIsImVsZW1lbnRzL2NhcmQuc2NzcyIsImVsZW1lbnRzL2hlcm8uc2NzcyIsImVsZW1lbnRzL2l0ZW0uc2NzcyIsImVsZW1lbnRzL2xpc3Quc2NzcyIsImVsZW1lbnRzL2xvYWRpbmcuc2NzcyIsImVsZW1lbnRzL2xvZ2luLnNjc3MiLCJlbGVtZW50cy9tYXNrLnNjc3MiLCJlbGVtZW50cy9tZW51LnNjc3MiLCJlbGVtZW50cy9tb3Rpb24tZWxlbWVudHMuc2NzcyIsImhlbHBlcnMvdXRpbGl0aWVzLnNjc3MiLCJtb3Rpb24vYmxpbmRzLnNjc3MiLCJtb3Rpb24vcGFuLWluLWxlZnQuc2NzcyIsIm1vdGlvbi9yaXBwbGUuc2NzcyIsIm1vdGlvbi9zbGlkZS1mYWRlLWluLnNjc3MiLCJtb3Rpb24vc2xpZGUtaW4tcmlnaHQuc2NzcyIsIm1vdGlvbi9zbGlkZS11cC5zY3NzIiwib3ZlcnJpZGVzL2luay5zY3NzIiwib3ZlcnJpZGVzL2lvbmljLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsZUFDSSxjQUNBLGVBQ0EsZ0JBQ0EsaUJBQ0Esa0JBQ0EsaUJBRVcsNEJBQ1gsa0JBRUEsVUFDQSxrREFDQSwwQ0FDQSxnQ0FDQSx3QkFDQSxXQUNBLFdBQ0EseUJBQ0EsMkJBQ0EsdUJBQ0EsbUJBRVcscUJBQ1gsZ0NBQ0EsU0FDQSxXQUNBLHNCQUNBLGtCQUNBLGtCQUNBLFVBRVcsMEJBQ1gsa0JBQ0EsU0FDQSxXQUNBLE9BQ0EsV0FDQSx5Q0FDQSxpQ0FDQSxpQ0FDQSx5QkFDQSxVQUVXLGdDQUNYLGdCQUVXLGlD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QUpBLGdCQUNBLGtCQUhJLGNBcUJVLGNBQ2QsZ0JBS0EscUJBQ0EsdUJBSkEsb0JBQ0Esc0JBSEksY0FxQk0sVUFDVixZQUtBLGlCQUNBLG1CQUpBLGdCQUNBLGtCQUhJLGNBVU0sVUFDVixZQUtBLGlCQUNBLG1CQUpBLGdCQUNBLGtCQUhJLGNBVUcsT0FDUCxTQUtBLGNBQ0EsZ0JBSkEsYUFDQSxlQUhJLGNBVU8sV0FDWCxhQUtBLGtCQUNBLG9CQUpBLGlCQUNBLG1CQUhJLGNBVU8sV0FDWCxhQUtBLGtCQUNBLG9CQUpBLGlCQUNBLG1CQUhJLGNBVU0sVUFDVixZQUtBLGlCQUNBLG1CQUpBLGdCQUNBLGtCQUhJLGNBVVUsY0FDZCxnQkFLQSxxQkFDQSx1QkFKQSxvQkFDQSxzQkFISSxjQVVVLGNBQ2QsZ0JBS0EscUJBQ0EsdUJBSkEsb0JBQ0Esc0JBSEksY0FVTyxXQUNYLGFBS0Esa0JBQ0Esb0JBSkEsaUJBQ0EsbUJBSEksY0FVVyxlQUNmLGlCQUtBLHNCQUNBLHdCQUpBLHFCQUNBLHVCQUhJLGNBVVcsZUFDZixpQkFLQSxzQkFDQSx3QkFKQSxxQkFDQSx1QkFISSxjQVVPLFdBQ1gsYUFLQSxrQkFDQSxvQkFKQSxpQkFDQSxtQkFISSxjQVVXLGVBQ2YsaUJBS0Esc0JBQ0Esd0JBSkEscUJBQ0EsdUJBSEksY0FVVyxlQUNmLGlCQUtBLHNCQUNBLHdCQUpBLHFCQUNBLHVCQUhJLGNBVUksUUFDUixVQUtBLGVBQ0EsaUJBSkEsY0FDQSxnQkFISSxjQVVHLE9BQ1AsU0FLQSxjQUNBLGdCQUpBLGFBQ0EsZUFISSxXQVVFLE1BQ04sUUFLQSxhQUNBLGVBSkEsWUFDQSxjQUhJLFdBU0osY0FDSSxrQkFHK0IsaUNBQy9CLFNBQ0EsbUJBQ0Esa0JBQ0EsaUNBQ0EsY0FDQSxVQU9KLFNBQ0ksYUFRSyxZQUNULFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFKSSxXQUNBLGtCQUdLLFdBQ0wsMkJBQ0EsZ0JBY0osbUJBSlEsYUFDUiwyQkFDQSxrQkFDQSxnQ0FGSSxrQkFLUSxNQUNaLDRCQUNBLDBCQURJLDZCQUlVLFlBQ2QsaUJBQUksV0FHVSxvQkFDVix1Q0FHUSwwQkFDUixXQU1vQixzQ0FDeEIsMENBQ0EsMkNBQ0EsZ0NBRkksbUJBQ0EsZUFHSixNQUNJLDZCQUtKLDhCQURtQiwyQkFDZixnQkFNSixTQUNJLFVBQ0Esa0JBQ0EsVUFDQSx5Q0FDQSw2REFDQSxRQUVJLGtCQUNKLFVBQ0Esd0NBQ0EsNkRBR0ksa0JBQ0osVUFDQSx5Q0FDQSw2REFNSixRQUNJIiwiZmlsZSI6ImlvbmljLm1hdGVyaWFsLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6W10sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */ \ No newline at end of file diff --git a/www/lib/ionic-material/dist/ionic.material.min.js b/www/lib/ionic-material/dist/ionic.material.min.js new file mode 100644 index 0000000..a53b443 --- /dev/null +++ b/www/lib/ionic-material/dist/ionic.material.min.js @@ -0,0 +1,14 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(function(){try{return require("angular")}catch(e){}}()):"function"==typeof define&&define.amd?define(["angular"],t):"object"==typeof exports?exports.ionicMaterial=t(function(){try{return require("angular")}catch(e){}}()):e.ionicMaterial=t(e.angular)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";e.exports=function(){var e;try{e=n(1)}catch(t){}if(e&&e.version||(e=window.angular),!e||!e.version)throw new Error("ionic-material could not load angular module :(");var r=e.module("ionic-material",["ionic"]);return n(2)(r),n(3)(r),"ionic-material"}()},function(t,n,r){if("undefined"==typeof e){var i=new Error('Cannot find module "angular"');throw i.code="MODULE_NOT_FOUND",i}t.exports=e},function(e,t,n){"use strict";/*! + * Fork by Zach Fitzgerald and other contributors of Ionic Material + * + * Waves v0.5.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + * + */ +e.exports=function(e){function t(){function e(e){return null!==e&&e===e.window}function t(t){return e(t)?t:9===t.nodeType&&t.defaultView}function n(e){var n,r,i={top:0,left:0},o=e&&e.ownerDocument;return n=o.documentElement,"undefined"!=typeof e.getBoundingClientRect&&(i=e.getBoundingClientRect()),r=t(o),{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}}function r(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function i(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+":"+e[n]+";");return t}var o,a=a||{};if(document&&document.querySelectorAll&&document.querySelectorAll.bind)try{o=document.querySelectorAll.bind(document)}catch(l){}else if(window&&window.angular&&window.angular.element)o=window.angular.element;else{var s=function(e,t,n){var r=e.length;t=null==t?0:0>t?Math.max(r+t,0):Math.min(t,r),n=null==n?r:0>n?Math.max(r+n,0):Math.min(n,r);for(var i=[];n>t;)i.push(e[t++]);return i},f=function(e,t,n){var r=s(arguments,2);return function(){return e.apply(t,r.concat(s(arguments)))}};o=f(document.querySelectorAll,document)}if(!o)throw new Error("ionic material ink module could not create reference of DOM nodes");var c={duration:500,show:function(e){if(2===e.button)return!1;var t=this,o=document.createElement("div"),a=this.dataset.inkColor,l=this.dataset.inkOpacity,s=a||l;o.className="ink-ripple",t.appendChild(o);var f=n(t),u=e.pageY-f.top,d=e.pageX-f.left,p="scale("+t.clientWidth/100*2.5+")";"touches"in e&&(u=e.touches[0].pageY-f.top,d=e.touches[0].pageX-f.left),o.setAttribute("data-hold",Date.now()),o.setAttribute("data-scale",p),o.setAttribute("data-x",d),o.setAttribute("data-y",u);var m={top:u+"px",left:d+"px"};if(o.className=o.className+" ink-notransition",s){var h;if(a){var y=r(a);h=y.r+","+y.g+","+y.b}else h="0,0,0";l||(l=.2);var g="rgba("+h+","+l+")";m["background-color"]=g}o.setAttribute("style",i(m)),o.className=o.className.replace("ink-notransition",""),m["-webkit-transform"]=p,m["-moz-transform"]=p,m["-ms-transform"]=p,m["-o-transform"]=p,m.transform=p,m.opacity="1",m["-webkit-transition-duration"]=c.duration+"ms",m["-moz-transition-duration"]=c.duration+"ms",m["-o-transition-duration"]=c.duration+"ms",m["transition-duration"]=c.duration+"ms",o.setAttribute("style",i(m))},hide:function(){for(var e=this,t=(1.4*e.clientWidth,null),n=e.children.length,r=0;n>r;r++)-1===e.children[r].className.indexOf("ink-ripple")||(t=e.children[r]);if(!t)return!1;var o=t.getAttribute("data-x"),a=t.getAttribute("data-y"),l=t.getAttribute("data-scale"),s=Date.now()-Number(t.getAttribute("data-hold")),f=500-s;0>f&&(f=0),setTimeout(function(){var n={top:a+"px",left:o+"px",opacity:"0","-webkit-transition-duration":c.duration+"ms","-moz-transition-duration":c.duration+"ms","-o-transition-duration":c.duration+"ms","transition-duration":c.duration+"ms","-webkit-transform":l,"-moz-transform":l,"-ms-transform":l,"-o-transform":l,transform:l};t.setAttribute("style",i(n)),setTimeout(function(){try{e.removeChild(t)}catch(n){return!1}},c.duration)},f)},wrapInput:function(e){for(var t=0;tn;n++){var r=e[n];r.className+=" in",r.className+=" done"}}function n(n){var r={finishDelayThrottle:2,finishSpeedPercent:.5,leftOffsetPercentage:.8,selector:".animate-blinds .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid blinds selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;a>f&&o[f].offsetTopf;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top;parseFloat(i/c/n.finishDelayThrottle).toFixed(2);o[e].className+=" done"}},c*n.finishSpeedPercent),t(o,a)}function r(n){var r={finishDelayThrottle:2,finishSpeedPercent:.72,leftOffsetPercentage:.8,selector:".animate-fade-slide-in .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid fadeSlideIn selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;a>f&&o[f].offsetTopf;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top,a=i/c/n.finishDelayThrottle;parseFloat(a).toFixed(2)}o[0].className+=" done"},c*n.finishSpeedPercent),t(o,a)}function i(n){var r={finishDelayThrottle:2,finishSpeedPercent:.72,leftOffsetPercentage:.8,selector:".animate-fade-slide-in-right .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid fadeSlideInRight selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;a>f&&o[f].offsetTopf;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top,a=i/c/n.finishDelayThrottle;parseFloat(a).toFixed(2)}o[0].className+=" done"},c*n.finishSpeedPercent),t(o,a)}function o(n){var r={finishDelayThrottle:2,finishSpeedPercent:.72,leftOffsetPercentage:.8,selector:".animate-ripple .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid ripple selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;ff;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top,a=i/c/n.finishDelayThrottle;parseFloat(a).toFixed(2)}o[0].className+=" done"},c*n.finishSpeedPercent),t(o,a)}function a(e){"string"==typeof e&&(e={selector:e});var t="undefined"==typeof e.selector||""===e.selector;if(t)return console.log("invalid pushDown selector"),!1;for(var n=document.querySelectorAll(e.selector),r=n.length,i=0;r>i;i++){var o=n[i],a="animate-pan-in-left",l=o.className.lastIndexOf(a);o.className=o.className.substr(0,l)}}function l(e){"string"==typeof e&&(e={selector:e});var t="undefined"==typeof e.selector||""===e.selector;if(t)return console.log("invalid pushDown selector"),!1;for(var n=document.querySelectorAll(e.selector),r=n.length,i=0;r>i;i++){var o=n[i],a=e.selector.split(".")[1],l=o.className.lastIndexOf(a);o.className=o.className.substr(0,l)}}function s(e){"string"==typeof e&&(e={selector:e});var t="undefined"==typeof e.selector||""===e.selector;if(t)return console.log("invalid pushDown selector"),!1;for(var n=document.querySelectorAll(e.selector),r=n.length,i=0;r>i;i++){var o=n[i],a=e.selector.split(".")[1],l=o.className.lastIndexOf(a);o.className=o.className.substr(0,l)}}var f={blinds:n,fadeSlideIn:r,fadeSlideInRight:i,panInLeft:a,pushDown:l,ripple:o,slideUp:s};return f}e.factory("ionicMaterialMotion",t),t.$inject=[]}}])}); +//# sourceMappingURL=ionic.material.min.js.map \ No newline at end of file diff --git a/www/lib/ionic-material/dist/ionic.material.min.js.map b/www/lib/ionic-material/dist/ionic.material.min.js.map new file mode 100644 index 0000000..b582062 --- /dev/null +++ b/www/lib/ionic-material/dist/ionic.material.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ionic.material.min.js","webpack:///webpack/bootstrap aca4d68e3e47af1bef6a","webpack:///./src/js/ionic-material.js","webpack:///external \"angular\"","webpack:///./src/js/lib/_ink.js","webpack:///./src/js/lib/_motion.js"],"names":["root","factory","exports","module","require","e","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","angular","err","version","window","Error","app","code","angularApp","ink","isWindow","obj","getWindow","elem","nodeType","defaultView","offset","docElem","win","box","top","left","doc","ownerDocument","documentElement","getBoundingClientRect","pageYOffset","clientTop","pageXOffset","clientLeft","hexToRgb","hex","result","exec","r","parseInt","g","b","convertStyle","style","a","hasOwnProperty","$$","Ink","document","querySelectorAll","bind","element","slicePolyfill","arr","start","end","len","length","Math","max","min","push","bindPolyfill","fn","context","args","argsArr","arguments","apply","concat","Effect","duration","show","button","el","ripple","createElement","customColor","dataset","inkColor","customOpacity","inkOpacity","hasCustomRipple","className","appendChild","pos","relativeY","pageY","relativeX","pageX","scale","clientWidth","touches","setAttribute","Date","now","rippleStyle","colorRgb","fromHex","bg","replace","transform","opacity","hide","childrenLength","children","indexOf","getAttribute","diff","Number","delay","setTimeout","-webkit-transition-duration","-moz-transition-duration","-o-transition-duration","transition-duration","-webkit-transform","-moz-transform","-ms-transform","-o-transform","removeChild","wrapInput","elements","tagName","toLowerCase","parent","parentNode","wrapper","elementStyle","removeAttribute","replaceChild","displayEffect","options","selectors","Array","prototype","forEach","i","addEventListener","inject","Motion","getViewportHeight","innerHeight","showNotAnimatedElements","total","child","blinds","defaults","finishDelayThrottle","finishSpeedPercent","leftOffsetPercentage","selector","startVelocity","isInvalidSelector","console","log","animateBlindsDom","elementsCount","elementAnimationCount","viewportHeight","offsetTop","speed","childOffset","parseFloat","toFixed","webkitTransitionDelay","transitionDelay","fadeSlideIn","animateFadeSlideInDom","delayValue","fadeSlideInRight","animateSlideInRightDom","animateRippleDom","panInLeft","animatePanInLeftDom","classNameToRemove","indexOfClassNameToRemove","lastIndexOf","substr","pushDown","animatePushDownDom","split","slideUp","animateSlideUpDom","motion","$inject"],"mappings":"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","file":"ionic.material.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ionicMaterial\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse\n\t\troot[\"ionicMaterial\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ionicMaterial\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse\n\t\troot[\"ionicMaterial\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Ionic Material\n\t * \"Bundle Index\" / \"Entryfile\"\n\t * https://github.com/zachsoft/ionic-material\n\t *\n\t * Recommended: use a compiled version, especially in production!\n\t */\n\t\n\t'use strict';\n\t\n\tmodule.exports = (function(){\n\t\n\t var angular;\n\t\n\t try {\n\t angular = __webpack_require__(1);\n\t } catch(err){ }\n\t\n\t if(!angular || !angular.version){\n\t /*global window: true*/\n\t angular = window.angular;\n\t /*global window: false*/\n\t }\n\t\n\t if(!angular || !angular.version){\n\t throw new Error('ionic-material could not load angular module :(');\n\t }\n\t\n\t // set up angular module\n\t var app = angular.module('ionic-material', ['ionic']);\n\t\n\t // Import Dependencies\n\t __webpack_require__(2)(app);\n\t __webpack_require__(3)(app);\n\t\n\t return 'ionic-material';\n\t})();\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tif(typeof __WEBPACK_EXTERNAL_MODULE_1__ === 'undefined') {var e = new Error(\"Cannot find module \\\"angular\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/*!\n\t * Fork by Zach Fitzgerald and other contributors of Ionic Material\n\t *\n\t * Waves v0.5.4\n\t * http://fian.my.id/Waves\n\t *\n\t * Copyright 2014 Alfiana E. Sibuea and other contributors\n\t *\n\t * Released under the MIT license\n\t * https://github.com/fians/Waves/blob/master/LICENSE\n\t *\n\t */\n\tmodule.exports = function (angularApp) {\n\t\n\t angularApp.factory('ionicMaterialInk', ink);\n\t\n\t function ink (){\n\t /*global document*/\n\t var Ink = Ink || {};\n\t\n\t // all DOM nodes\n\t var $$;\n\t\n\t // phantomJS throws an error when you try to use document.querySelectorAll.bind\n\t if(document && document.querySelectorAll && document.querySelectorAll.bind){\n\t try{\n\t // all DOM nodes\n\t $$ = document.querySelectorAll.bind(document);\n\t\n\t } catch(e){}\n\t } else if (window && window.angular && window.angular.element) {\n\t // we can use angular.element instead\n\t $$ = window.angular.element;\n\t } else {\n\t\n\t\n\t /**\n\t * mout.js 0.11.0 bind and slice polyfills (substitutes?)\n\t * TODO: pull out mout.js bind and slice molyfills and inject into material.ink\n\t */\n\t\n\t /**\n\t * Create slice of source array or array-like object\n\t */\n\t var slicePolyfill = function moutslicePolyfill(arr, start, end){\n\t var len = arr.length;\n\t /*jshint eqnull:true */\n\t if (start == null) {\n\t start = 0;\n\t } else if (start < 0) {\n\t start = Math.max(len + start, 0);\n\t } else {\n\t start = Math.min(start, len);\n\t }\n\t\n\t\n\t if (end == null) {\n\t\n\t end = len;\n\t } else if (end < 0) {\n\t end = Math.max(len + end, 0);\n\t } else {\n\t end = Math.min(end, len);\n\t }\n\t\n\t var result = [];\n\t while (start < end) {\n\t result.push(arr[start++]);\n\t }\n\t\n\t return result;\n\t };\n\t\n\t\n\t\n\t /**\n\t * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection.\n\t * @param {Function} fn Function.\n\t * @param {object} context Execution context.\n\t * @param {rest} args Arguments (0...n arguments).\n\t * @return {Function} Wrapped Function.\n\t */\n\t var bindPolyfill = function moutBind(fn, context, args){\n\t var argsArr = slicePolyfill(arguments, 2); //curried args\n\t return function(){\n\t return fn.apply(context, argsArr.concat(slicePolyfill(arguments)));\n\t };\n\t };\n\t\n\t $$ = bindPolyfill(document.querySelectorAll, document);\n\t /*jshint ignore:end */\n\t }\n\t\n\t if (!$$){\n\t throw new Error('ionic material ink module could not create reference of DOM nodes');\n\t }\n\t\n\t // Find exact position of element\n\t function isWindow(obj) {\n\t return obj !== null && obj === obj.window;\n\t }\n\t\n\t function getWindow(elem) {\n\t return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n\t }\n\t\n\t function offset(elem) {\n\t var docElem, win,\n\t box = {\n\t top: 0,\n\t left: 0\n\t },\n\t doc = elem && elem.ownerDocument;\n\t\n\t docElem = doc.documentElement;\n\t\n\t if (typeof elem.getBoundingClientRect !== typeof undefined) {\n\t box = elem.getBoundingClientRect();\n\t }\n\t win = getWindow(doc);\n\t return {\n\t top: box.top + win.pageYOffset - docElem.clientTop,\n\t left: box.left + win.pageXOffset - docElem.clientLeft\n\t };\n\t }\n\t\n\t function hexToRgb(hex) {\n\t var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t return result ? {\n\t r: parseInt(result[1], 16),\n\t g: parseInt(result[2], 16),\n\t b: parseInt(result[3], 16)\n\t } : null;\n\t }\n\t\n\t function convertStyle(obj) {\n\t var style = '';\n\t\n\t for (var a in obj) {\n\t if (obj.hasOwnProperty(a)) {\n\t style += (a + ':' + obj[a] + ';');\n\t }\n\t }\n\t\n\t return style;\n\t }\n\t\n\t var Effect = {\n\t\n\t // Effect delay\n\t duration: 500,\n\t\n\t show: function(e) {\n\t\n\t // Disable right click\n\t if (e.button === 2) {\n\t return false;\n\t }\n\t\n\t var el = this;\n\t\n\t // Create ripple\n\t var ripple = document.createElement('div');\n\t var customColor = this.dataset.inkColor;\n\t var customOpacity = this.dataset.inkOpacity;\n\t var hasCustomRipple = customColor || customOpacity;\n\t ripple.className = 'ink-ripple';\n\t el.appendChild(ripple);\n\t\n\t // Get click coordinate and element witdh\n\t var pos = offset(el);\n\t var relativeY = (e.pageY - pos.top);\n\t var relativeX = (e.pageX - pos.left);\n\t var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')';\n\t\n\t // Support for touch devices\n\t if ('touches' in e) {\n\t relativeY = (e.touches[0].pageY - pos.top);\n\t relativeX = (e.touches[0].pageX - pos.left);\n\t }\n\t\n\t // Attach data to element\n\t ripple.setAttribute('data-hold', Date.now());\n\t ripple.setAttribute('data-scale', scale);\n\t ripple.setAttribute('data-x', relativeX);\n\t ripple.setAttribute('data-y', relativeY);\n\t\n\t // Set ripple position\n\t var rippleStyle = {\n\t 'top': relativeY + 'px',\n\t 'left': relativeX + 'px'\n\t };\n\t\n\t ripple.className = ripple.className + ' ink-notransition';\n\t\n\t if (hasCustomRipple) {\n\t var colorRgb;\n\t if (customColor) {\n\t var fromHex = hexToRgb(customColor);\n\t colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b;\n\t } else {\n\t colorRgb = '0,0,0';\n\t }\n\t if (!customOpacity) {\n\t customOpacity = 0.2;\n\t }\n\t var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')';\n\t rippleStyle['background-color'] = bg;\n\t }\n\t\n\t ripple.setAttribute('style', convertStyle(rippleStyle));\n\t ripple.className = ripple.className.replace('ink-notransition', '');\n\t\n\t // Scale the ripple\n\t rippleStyle['-webkit-transform'] = scale;\n\t rippleStyle['-moz-transform'] = scale;\n\t rippleStyle['-ms-transform'] = scale;\n\t rippleStyle['-o-transform'] = scale;\n\t rippleStyle.transform = scale;\n\t rippleStyle.opacity = '1';\n\t\n\t rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';\n\t rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';\n\t rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';\n\t rippleStyle['transition-duration'] = Effect.duration + 'ms';\n\t\n\t ripple.setAttribute('style', convertStyle(rippleStyle));\n\t },\n\t\n\t hide: function() {\n\t\n\t var el = this;\n\t\n\t var width = el.clientWidth * 1.4;\n\t\n\t // Get first ripple\n\t var ripple = null;\n\t\n\t var childrenLength = el.children.length;\n\t\n\t for (var a = 0; a < childrenLength; a++) {\n\t if (el.children[a].className.indexOf('ink-ripple') !== -1) {\n\t ripple = el.children[a];\n\t continue;\n\t }\n\t }\n\t\n\t if (!ripple) {\n\t return false;\n\t }\n\t\n\t var relativeX = ripple.getAttribute('data-x');\n\t var relativeY = ripple.getAttribute('data-y');\n\t var scale = ripple.getAttribute('data-scale');\n\t\n\t // Get delay beetween mousedown and mouse leave\n\t var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n\t var delay = 500 - diff;\n\t\n\t if (delay < 0) {\n\t delay = 0;\n\t }\n\t\n\t // Fade out ripple after delay\n\t setTimeout(function() {\n\t\n\t var style = {\n\t 'top': relativeY + 'px',\n\t 'left': relativeX + 'px',\n\t 'opacity': '0',\n\t\n\t // Duration\n\t '-webkit-transition-duration': Effect.duration + 'ms',\n\t '-moz-transition-duration': Effect.duration + 'ms',\n\t '-o-transition-duration': Effect.duration + 'ms',\n\t 'transition-duration': Effect.duration + 'ms',\n\t '-webkit-transform': scale,\n\t '-moz-transform': scale,\n\t '-ms-transform': scale,\n\t '-o-transform': scale,\n\t 'transform': scale,\n\t };\n\t\n\t ripple.setAttribute('style', convertStyle(style));\n\t\n\t setTimeout(function() {\n\t try {\n\t el.removeChild(ripple);\n\t } catch (e) {\n\t return false;\n\t }\n\t }, Effect.duration);\n\t }, delay);\n\t },\n\t\n\t // Little hack to make can perform ink effect\n\t wrapInput: function(elements) {\n\t\n\t for (var a = 0; a < elements.length; a++) {\n\t\n\t var el = elements[a];\n\t\n\t if (el.tagName.toLowerCase() === 'input') {\n\t\n\t var parent = el.parentNode;\n\t\n\t // If input already have parent just pass through\n\t if (parent.tagName.toLowerCase() === 'i' &&\n\t parent.className.indexOf('ink') !== -1 &&\n\t parent.className.indexOf('tab-item') !== -1 &&\n\t parent.className.indexOf('button-fab') !== -1 &&\n\t parent.className.indexOf('button-raised') !== -1 &&\n\t parent.className.indexOf('button-flat') !== -1 &&\n\t parent.className.indexOf('button-clear') !== -1 &&\n\t parent.className.indexOf('button') !== -1 &&\n\t parent.className.indexOf('item') !== -1) {\n\t return false;\n\t }\n\t\n\t // Put element class and style to the specified parent\n\t var wrapper = document.createElement('i');\n\t wrapper.className = el.className + ' ink-input-wrapper';\n\t\n\t var elementStyle = el.getAttribute('style');\n\t\n\t if (!elementStyle) {\n\t elementStyle = '';\n\t }\n\t\n\t wrapper.setAttribute('style', elementStyle);\n\t\n\t el.className = 'ink-button-input';\n\t el.removeAttribute('style');\n\t\n\t // Put element as child\n\t parent.replaceChild(wrapper, el);\n\t wrapper.appendChild(el);\n\t }\n\t }\n\t }\n\t };\n\t\n\t Ink.displayEffect = function(options) {\n\t options = options || {};\n\t\n\t if ('duration' in options) {\n\t Effect.duration = options.duration;\n\t }\n\t\n\t //Wrap input inside tag\n\t var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button';\n\t Effect.wrapInput($$(selectors));\n\t\n\t Array.prototype.forEach.call($$(selectors), function(i) {\n\t if ('ontouchstart' in window) {\n\t i.addEventListener('touchstart', Effect.show, false);\n\t i.addEventListener('touchend', Effect.hide, false);\n\t i.addEventListener('touchcancel', Effect.hide, false);\n\t } else {\n\t i.addEventListener('mousedown', Effect.show, false);\n\t i.addEventListener('mouseup', Effect.hide, false);\n\t i.addEventListener('mouseleave', Effect.hide, false);\n\t }\n\t });\n\t };\n\t\n\t return Ink;\n\t }\n\t\n\t ink.inject = [];\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = function(angularApp) {\n\t angularApp.factory('ionicMaterialMotion', Motion);\n\t\n\t function Motion() {\n\t /*global document, window*/\n\t\n\t 'use strict';\n\t\n\t /*============================================================================*/\n\t /* HELPERS (non-exports)\n\t /=============================================================================*\n\t / Abstract common lookups and manipulations in case better alternatives\n\t / arise or future cross-platform differences warrant separate handling\n\t /=============================================================================*/\n\t\n\t function getViewportHeight() {\n\t return window.innerHeight;\n\t }\n\t\n\t function getBoundingClientRect(domNode) {\n\t return domNode.getBoundingClientRect;\n\t }\n\t\n\t function showNotAnimatedElements(elements, total) {\n\t // Load the elements without effect\n\t for (var i = 0; i < total; i++) {\n\t var child = elements[i];\n\t child.className += ' in';\n\t child.className += ' done';\n\t }\n\t }\n\t\n\t\n\t\n\t /*============================================================================*/\n\t /* MOTION (EXPORT)\n\t /=============================================================================*\n\t / Animation methods for the library\n\t /=============================================================================*/\n\t\n\t var motion = {\n\t blinds: blinds,\n\t fadeSlideIn: fadeSlideIn,\n\t fadeSlideInRight: fadeSlideInRight,\n\t panInLeft: panInLeft,\n\t pushDown: pushDown,\n\t ripple: ripple,\n\t slideUp: slideUp\n\t };\n\t\n\t function blinds(options) {\n\t\n\t // Declare our defaults\n\t var defaults = {\n\t finishDelayThrottle: 2,\n\t finishSpeedPercent: 0.5,\n\t leftOffsetPercentage: 0.8,\n\t selector: '.animate-blinds .item',\n\t startVelocity: 1100\n\t };\n\t\n\t // Apply defaults if properties are not passed\n\t if (typeof options === 'undefined') {\n\t options = {};\n\t }\n\t\n\t options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t if (typeof options.selector == 'undefined') {\n\t options.selector = defaults.selector;\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid blinds selector');\n\t return false;\n\t }\n\t\n\t var animateBlindsDom = document.querySelectorAll(options.selector);\n\t var elementsCount = animateBlindsDom.length;\n\t var elementAnimationCount = 0;\n\t\n\t // Count the elements within the starting viewport so we're not exacting\n\t // more effort than required...\n\t //\n\t // We use css visiblity: hidden instead of display: none so the elements\n\t // maintain their DOM flow\n\t\n\t var viewportHeight = getViewportHeight();\n\t for (var i = 0; i < elementsCount; i++) {\n\t if (animateBlindsDom[i].offsetTop < viewportHeight) {\n\t elementAnimationCount += 1;\n\t continue;\n\t }\n\t break;\n\t }\n\t\n\t // Sequentially animate with a delay based on proximity\n\t var speed = options.startVelocity;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateBlindsDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delay = parseFloat(offset / speed).toFixed(2);\n\t child.style.webkitTransitionDelay = delay + \"s\";\n\t child.style.transitionDelay = delay + \"s\";\n\t child.className += ' in';\n\t }\n\t\n\t // When we're done animating, switch the class to 'done'\n\t setTimeout(function() {\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateBlindsDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2);\n\t //child.querySelector('img').style.webkitTransitionDelay = delay + \"s\";\n\t //child.querySelector('img').style.transitionDelay = delay + \"s\";\n\t //child.querySelector('img').className += ' in';\n\t animateBlindsDom[i].className += ' done';\n\t }\n\t\n\t }, speed * options.finishSpeedPercent);\n\t\n\t // Load the elements without effect\n\t showNotAnimatedElements(animateBlindsDom, elementsCount);\n\t }\n\t\n\t function fadeSlideIn(options) {\n\t\n\t // Declare our defaults\n\t var defaults = {\n\t finishDelayThrottle: 2,\n\t finishSpeedPercent: 0.72,\n\t leftOffsetPercentage: 0.8,\n\t selector: '.animate-fade-slide-in .item',\n\t startVelocity: 1100\n\t };\n\t\n\t // Apply defaults if properties are not passed\n\t if (typeof options === 'undefined') {\n\t options = {};\n\t }\n\t\n\t options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t if (typeof options.selector == 'undefined') {\n\t options.selector = defaults.selector;\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid fadeSlideIn selector');\n\t return false;\n\t }\n\t\n\t var animateFadeSlideInDom = document.querySelectorAll(options.selector);\n\t var elementsCount = animateFadeSlideInDom.length;\n\t var elementAnimationCount = 0;\n\t\n\t // Count the elements within the starting viewport so we're not exacting\n\t // more effort than required...\n\t //\n\t // We use css visiblity: hidden instead of display: none so the elements\n\t // maintain their DOM flow\n\t\n\t var viewportHeight = getViewportHeight();\n\t for (var i = 0; i < elementsCount; i++) {\n\t if (animateFadeSlideInDom[i].offsetTop < viewportHeight) {\n\t elementAnimationCount += 1;\n\t continue;\n\t }\n\t break;\n\t }\n\t\n\t // Sequentially animate with a delay based on proximity\n\t var speed = options.startVelocity;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateFadeSlideInDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delay = parseFloat(offset / speed).toFixed(2);\n\t child.style.webkitTransitionDelay = delay + \"s\";\n\t child.style.transitionDelay = delay + \"s\";\n\t child.className += ' in';\n\t }\n\t\n\t // When we're done animating, switch the class to 'done'\n\t setTimeout(function() {\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateFadeSlideInDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delayValue = offset / speed / options.finishDelayThrottle;\n\t var delay = parseFloat(delayValue).toFixed(2);\n\t }\n\t animateFadeSlideInDom[0].className += ' done';\n\t\n\t }, speed * options.finishSpeedPercent);\n\t\n\t // Load the elements without effect\n\t showNotAnimatedElements(animateFadeSlideInDom, elementsCount);\n\t }\n\t\n\t function fadeSlideInRight(options) {\n\t\n\t // Declare our defaults\n\t var defaults = {\n\t finishDelayThrottle: 2,\n\t finishSpeedPercent: 0.72,\n\t leftOffsetPercentage: 0.8,\n\t selector: '.animate-fade-slide-in-right .item',\n\t startVelocity: 1100\n\t };\n\t\n\t // Apply defaults if properties are not passed\n\t if (typeof options === 'undefined') {\n\t options = {};\n\t }\n\t\n\t options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t if (typeof options.selector == 'undefined') {\n\t options.selector = defaults.selector;\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid fadeSlideInRight selector');\n\t return false;\n\t }\n\t\n\t var animateSlideInRightDom = document.querySelectorAll(options.selector);\n\t var elementsCount = animateSlideInRightDom.length;\n\t var elementAnimationCount = 0;\n\t\n\t // Count the elements within the starting viewport so we're not\n\t // exacting more effort than required...\n\t //\n\t // We use css visiblity: hidden instead of display: none so the\n\t // elements maintain their DOM flow\n\t\n\t var viewportHeight = getViewportHeight();\n\t for (var i = 0; i < elementsCount; i++) {\n\t if (animateSlideInRightDom[i].offsetTop < viewportHeight) {\n\t elementAnimationCount += 1;\n\t continue;\n\t }\n\t break;\n\t }\n\t\n\t // Sequentially animate with a delay based on proximity\n\t var speed = options.startVelocity;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateSlideInRightDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delay = parseFloat(offset / speed).toFixed(2);\n\t child.style.webkitTransitionDelay = delay + \"s\";\n\t child.style.transitionDelay = delay + \"s\";\n\t child.className += ' in';\n\t }\n\t\n\t // When we're done animating, switch the class to 'done'\n\t setTimeout(function() {\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateSlideInRightDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delayValue = offset / speed / options.finishDelayThrottle;\n\t var delay = parseFloat(delayValue).toFixed(2);\n\t }\n\t animateSlideInRightDom[0].className += ' done';\n\t\n\t }, speed * options.finishSpeedPercent);\n\t\n\t // Load the elements without effect\n\t showNotAnimatedElements(animateSlideInRightDom, elementsCount);\n\t\n\t }\n\t\n\t function ripple(options) {\n\t\n\t // Declare our defaults\n\t var defaults = {\n\t finishDelayThrottle: 2,\n\t finishSpeedPercent: 0.72,\n\t leftOffsetPercentage: 0.8,\n\t selector: '.animate-ripple .item',\n\t startVelocity: 1100\n\t };\n\t\n\t // Apply defaults if properties are not passed\n\t if (typeof options === 'undefined') {\n\t options = {};\n\t }\n\t\n\t options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t if (typeof options.selector == 'undefined') {\n\t options.selector = defaults.selector;\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid ripple selector');\n\t return false;\n\t }\n\t\n\t var animateRippleDom = document.querySelectorAll(options.selector);\n\t var elementsCount = animateRippleDom.length;\n\t var elementAnimationCount = 0;\n\t\n\t // Count the elements within the starting viewport so we're not\n\t // exacting more effort than required...\n\t //\n\t // We use css visiblity: hidden instead of display: none so the\n\t // elements maintain their DOM flow\n\t\n\t var viewportHeight = getViewportHeight();\n\t for (var i = 0; i < animateRippleDom.length; i++) {\n\t if (animateRippleDom[i].offsetTop < viewportHeight) {\n\t elementAnimationCount += 1;\n\t continue;\n\t }\n\t break;\n\t }\n\t\n\t // Sequentially animate with a delay based on proximity\n\t var speed = options.startVelocity;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateRippleDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delay = parseFloat(offset / speed).toFixed(2);\n\t child.style.webkitTransitionDelay = delay + \"s\";\n\t child.style.transitionDelay = delay + \"s\";\n\t child.className += ' in';\n\t }\n\t\n\t // When we're done animating, switch the class to 'done'\n\t setTimeout(function() {\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var child = animateRippleDom[i];\n\t var childOffset = child.getBoundingClientRect();\n\t var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t var delayValue = offset / speed / options.finishDelayThrottle;\n\t var delay = parseFloat(delayValue).toFixed(2);\n\t }\n\t animateRippleDom[0].className += ' done';\n\t\n\t }, speed * options.finishSpeedPercent);\n\t\n\t // Load the elements without effect\n\t showNotAnimatedElements(animateRippleDom, elementsCount);\n\t }\n\t\n\t function panInLeft(options) {\n\t\n\t // We have a single option, so it may be passed as a string or property\n\t if (typeof options === 'string') {\n\t options = {\n\t selector: options\n\t };\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid pushDown selector');\n\t return false;\n\t }\n\t\n\t var animatePanInLeftDom = document.querySelectorAll(options.selector);\n\t var elementAnimationCount = animatePanInLeftDom.length;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var element = animatePanInLeftDom[i];\n\t var classNameToRemove = 'animate-pan-in-left';\n\t var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n\t element.className = element.className.substr(0, indexOfClassNameToRemove);\n\t }\n\t }\n\t\n\t function pushDown(options) {\n\t\n\t // We have a single option, so it may be passed as a string or property\n\t if (typeof options === 'string') {\n\t options = {\n\t selector: options\n\t };\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid pushDown selector');\n\t return false;\n\t }\n\t\n\t var animatePushDownDom = document.querySelectorAll(options.selector);\n\t var elementAnimationCount = animatePushDownDom.length;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var element = animatePushDownDom[i];\n\t var classNameToRemove = options.selector.split('.')[1];\n\t var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n\t element.className = element.className.substr(0, indexOfClassNameToRemove);\n\t }\n\t }\n\t\n\t function slideUp(options) {\n\t\n\t // We have a single option, so it may be passed as a string or property\n\t if (typeof options === 'string') {\n\t options = {\n\t selector: options\n\t };\n\t }\n\t\n\t // Fail early & silently log\n\t var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t if (isInvalidSelector) {\n\t console.log('invalid pushDown selector');\n\t return false;\n\t }\n\t\n\t var animateSlideUpDom = document.querySelectorAll(options.selector);\n\t var elementAnimationCount = animateSlideUpDom.length;\n\t for (var i = 0; i < elementAnimationCount; i++) {\n\t var element = animateSlideUpDom[i];\n\t var classNameToRemove = options.selector.split('.')[1];\n\t var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n\t element.className = element.className.substr(0, indexOfClassNameToRemove);\n\t }\n\t }\n\t\n\t /* Export object\n\t /============================================================================*/\n\t return motion;\n\t }\n\t\n\t Motion.$inject = [];\n\t};\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ionic.material.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap aca4d68e3e47af1bef6a\n **/","/**\n * Ionic Material\n * \"Bundle Index\" / \"Entryfile\"\n * https://github.com/zachsoft/ionic-material\n *\n * Recommended: use a compiled version, especially in production!\n */\n\n'use strict';\n\nmodule.exports = (function(){\n\n var angular;\n\n try {\n angular = require('angular');\n } catch(err){ }\n\n if(!angular || !angular.version){\n /*global window: true*/\n angular = window.angular;\n /*global window: false*/\n }\n\n if(!angular || !angular.version){\n throw new Error('ionic-material could not load angular module :(');\n }\n\n // set up angular module\n var app = angular.module('ionic-material', ['ionic']);\n\n // Import Dependencies\n require('./lib/_ink')(app);\n require('./lib/_motion')(app);\n\n return 'ionic-material';\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/js/ionic-material.js\n ** module id = 0\n ** module chunks = 0\n **/","if(typeof __WEBPACK_EXTERNAL_MODULE_1__ === 'undefined') {var e = new Error(\"Cannot find module \\\"angular\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"angular\"\n ** module id = 1\n ** module chunks = 0\n **/","'use strict';\n\n/*!\n * Fork by Zach Fitzgerald and other contributors of Ionic Material\n *\n * Waves v0.5.4\n * http://fian.my.id/Waves\n *\n * Copyright 2014 Alfiana E. Sibuea and other contributors\n *\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n *\n */\nmodule.exports = function (angularApp) {\n\n angularApp.factory('ionicMaterialInk', ink);\n\n function ink (){\n /*global document*/\n var Ink = Ink || {};\n\n // all DOM nodes\n var $$;\n\n // phantomJS throws an error when you try to use document.querySelectorAll.bind\n if(document && document.querySelectorAll && document.querySelectorAll.bind){\n try{\n // all DOM nodes\n $$ = document.querySelectorAll.bind(document);\n\n } catch(e){}\n } else if (window && window.angular && window.angular.element) {\n // we can use angular.element instead\n $$ = window.angular.element;\n } else {\n\n\n /**\n * mout.js 0.11.0 bind and slice polyfills (substitutes?)\n * TODO: pull out mout.js bind and slice molyfills and inject into material.ink\n */\n\n /**\n * Create slice of source array or array-like object\n */\n var slicePolyfill = function moutslicePolyfill(arr, start, end){\n var len = arr.length;\n /*jshint eqnull:true */\n if (start == null) {\n start = 0;\n } else if (start < 0) {\n start = Math.max(len + start, 0);\n } else {\n start = Math.min(start, len);\n }\n\n\n if (end == null) {\n\n end = len;\n } else if (end < 0) {\n end = Math.max(len + end, 0);\n } else {\n end = Math.min(end, len);\n }\n\n var result = [];\n while (start < end) {\n result.push(arr[start++]);\n }\n\n return result;\n };\n\n\n\n /**\n * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection.\n * @param {Function} fn Function.\n * @param {object} context Execution context.\n * @param {rest} args Arguments (0...n arguments).\n * @return {Function} Wrapped Function.\n */\n var bindPolyfill = function moutBind(fn, context, args){\n var argsArr = slicePolyfill(arguments, 2); //curried args\n return function(){\n return fn.apply(context, argsArr.concat(slicePolyfill(arguments)));\n };\n };\n\n $$ = bindPolyfill(document.querySelectorAll, document);\n /*jshint ignore:end */\n }\n\n if (!$$){\n throw new Error('ionic material ink module could not create reference of DOM nodes');\n }\n\n // Find exact position of element\n function isWindow(obj) {\n return obj !== null && obj === obj.window;\n }\n\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n\n function offset(elem) {\n var docElem, win,\n box = {\n top: 0,\n left: 0\n },\n doc = elem && elem.ownerDocument;\n\n docElem = doc.documentElement;\n\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\n box = elem.getBoundingClientRect();\n }\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n function convertStyle(obj) {\n var style = '';\n\n for (var a in obj) {\n if (obj.hasOwnProperty(a)) {\n style += (a + ':' + obj[a] + ';');\n }\n }\n\n return style;\n }\n\n var Effect = {\n\n // Effect delay\n duration: 500,\n\n show: function(e) {\n\n // Disable right click\n if (e.button === 2) {\n return false;\n }\n\n var el = this;\n\n // Create ripple\n var ripple = document.createElement('div');\n var customColor = this.dataset.inkColor;\n var customOpacity = this.dataset.inkOpacity;\n var hasCustomRipple = customColor || customOpacity;\n ripple.className = 'ink-ripple';\n el.appendChild(ripple);\n\n // Get click coordinate and element witdh\n var pos = offset(el);\n var relativeY = (e.pageY - pos.top);\n var relativeX = (e.pageX - pos.left);\n var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')';\n\n // Support for touch devices\n if ('touches' in e) {\n relativeY = (e.touches[0].pageY - pos.top);\n relativeX = (e.touches[0].pageX - pos.left);\n }\n\n // Attach data to element\n ripple.setAttribute('data-hold', Date.now());\n ripple.setAttribute('data-scale', scale);\n ripple.setAttribute('data-x', relativeX);\n ripple.setAttribute('data-y', relativeY);\n\n // Set ripple position\n var rippleStyle = {\n 'top': relativeY + 'px',\n 'left': relativeX + 'px'\n };\n\n ripple.className = ripple.className + ' ink-notransition';\n\n if (hasCustomRipple) {\n var colorRgb;\n if (customColor) {\n var fromHex = hexToRgb(customColor);\n colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b;\n } else {\n colorRgb = '0,0,0';\n }\n if (!customOpacity) {\n customOpacity = 0.2;\n }\n var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')';\n rippleStyle['background-color'] = bg;\n }\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n ripple.className = ripple.className.replace('ink-notransition', '');\n\n // Scale the ripple\n rippleStyle['-webkit-transform'] = scale;\n rippleStyle['-moz-transform'] = scale;\n rippleStyle['-ms-transform'] = scale;\n rippleStyle['-o-transform'] = scale;\n rippleStyle.transform = scale;\n rippleStyle.opacity = '1';\n\n rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';\n rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';\n rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';\n rippleStyle['transition-duration'] = Effect.duration + 'ms';\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n },\n\n hide: function() {\n\n var el = this;\n\n var width = el.clientWidth * 1.4;\n\n // Get first ripple\n var ripple = null;\n\n var childrenLength = el.children.length;\n\n for (var a = 0; a < childrenLength; a++) {\n if (el.children[a].className.indexOf('ink-ripple') !== -1) {\n ripple = el.children[a];\n continue;\n }\n }\n\n if (!ripple) {\n return false;\n }\n\n var relativeX = ripple.getAttribute('data-x');\n var relativeY = ripple.getAttribute('data-y');\n var scale = ripple.getAttribute('data-scale');\n\n // Get delay beetween mousedown and mouse leave\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n var delay = 500 - diff;\n\n if (delay < 0) {\n delay = 0;\n }\n\n // Fade out ripple after delay\n setTimeout(function() {\n\n var style = {\n 'top': relativeY + 'px',\n 'left': relativeX + 'px',\n 'opacity': '0',\n\n // Duration\n '-webkit-transition-duration': Effect.duration + 'ms',\n '-moz-transition-duration': Effect.duration + 'ms',\n '-o-transition-duration': Effect.duration + 'ms',\n 'transition-duration': Effect.duration + 'ms',\n '-webkit-transform': scale,\n '-moz-transform': scale,\n '-ms-transform': scale,\n '-o-transform': scale,\n 'transform': scale,\n };\n\n ripple.setAttribute('style', convertStyle(style));\n\n setTimeout(function() {\n try {\n el.removeChild(ripple);\n } catch (e) {\n return false;\n }\n }, Effect.duration);\n }, delay);\n },\n\n // Little hack to make can perform ink effect\n wrapInput: function(elements) {\n\n for (var a = 0; a < elements.length; a++) {\n\n var el = elements[a];\n\n if (el.tagName.toLowerCase() === 'input') {\n\n var parent = el.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' &&\n parent.className.indexOf('ink') !== -1 &&\n parent.className.indexOf('tab-item') !== -1 &&\n parent.className.indexOf('button-fab') !== -1 &&\n parent.className.indexOf('button-raised') !== -1 &&\n parent.className.indexOf('button-flat') !== -1 &&\n parent.className.indexOf('button-clear') !== -1 &&\n parent.className.indexOf('button') !== -1 &&\n parent.className.indexOf('item') !== -1) {\n return false;\n }\n\n // Put element class and style to the specified parent\n var wrapper = document.createElement('i');\n wrapper.className = el.className + ' ink-input-wrapper';\n\n var elementStyle = el.getAttribute('style');\n\n if (!elementStyle) {\n elementStyle = '';\n }\n\n wrapper.setAttribute('style', elementStyle);\n\n el.className = 'ink-button-input';\n el.removeAttribute('style');\n\n // Put element as child\n parent.replaceChild(wrapper, el);\n wrapper.appendChild(el);\n }\n }\n }\n };\n\n Ink.displayEffect = function(options) {\n options = options || {};\n\n if ('duration' in options) {\n Effect.duration = options.duration;\n }\n\n //Wrap input inside tag\n var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button';\n Effect.wrapInput($$(selectors));\n\n Array.prototype.forEach.call($$(selectors), function(i) {\n if ('ontouchstart' in window) {\n i.addEventListener('touchstart', Effect.show, false);\n i.addEventListener('touchend', Effect.hide, false);\n i.addEventListener('touchcancel', Effect.hide, false);\n } else {\n i.addEventListener('mousedown', Effect.show, false);\n i.addEventListener('mouseup', Effect.hide, false);\n i.addEventListener('mouseleave', Effect.hide, false);\n }\n });\n };\n\n return Ink;\n }\n\n ink.inject = [];\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/js/lib/_ink.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = function(angularApp) {\n angularApp.factory('ionicMaterialMotion', Motion);\n\n function Motion() {\n /*global document, window*/\n\n 'use strict';\n\n /*============================================================================*/\n /* HELPERS (non-exports)\n /=============================================================================*\n / Abstract common lookups and manipulations in case better alternatives\n / arise or future cross-platform differences warrant separate handling\n /=============================================================================*/\n\n function getViewportHeight() {\n return window.innerHeight;\n }\n\n function getBoundingClientRect(domNode) {\n return domNode.getBoundingClientRect;\n }\n\n function showNotAnimatedElements(elements, total) {\n // Load the elements without effect\n for (var i = 0; i < total; i++) {\n var child = elements[i];\n child.className += ' in';\n child.className += ' done';\n }\n }\n\n\n\n /*============================================================================*/\n /* MOTION (EXPORT)\n /=============================================================================*\n / Animation methods for the library\n /=============================================================================*/\n\n var motion = {\n blinds: blinds,\n fadeSlideIn: fadeSlideIn,\n fadeSlideInRight: fadeSlideInRight,\n panInLeft: panInLeft,\n pushDown: pushDown,\n ripple: ripple,\n slideUp: slideUp\n };\n\n function blinds(options) {\n\n // Declare our defaults\n var defaults = {\n finishDelayThrottle: 2,\n finishSpeedPercent: 0.5,\n leftOffsetPercentage: 0.8,\n selector: '.animate-blinds .item',\n startVelocity: 1100\n };\n\n // Apply defaults if properties are not passed\n if (typeof options === 'undefined') {\n options = {};\n }\n\n options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n if (typeof options.selector == 'undefined') {\n options.selector = defaults.selector;\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid blinds selector');\n return false;\n }\n\n var animateBlindsDom = document.querySelectorAll(options.selector);\n var elementsCount = animateBlindsDom.length;\n var elementAnimationCount = 0;\n\n // Count the elements within the starting viewport so we're not exacting\n // more effort than required...\n //\n // We use css visiblity: hidden instead of display: none so the elements\n // maintain their DOM flow\n\n var viewportHeight = getViewportHeight();\n for (var i = 0; i < elementsCount; i++) {\n if (animateBlindsDom[i].offsetTop < viewportHeight) {\n elementAnimationCount += 1;\n continue;\n }\n break;\n }\n\n // Sequentially animate with a delay based on proximity\n var speed = options.startVelocity;\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateBlindsDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delay = parseFloat(offset / speed).toFixed(2);\n child.style.webkitTransitionDelay = delay + \"s\";\n child.style.transitionDelay = delay + \"s\";\n child.className += ' in';\n }\n\n // When we're done animating, switch the class to 'done'\n setTimeout(function() {\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateBlindsDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2);\n //child.querySelector('img').style.webkitTransitionDelay = delay + \"s\";\n //child.querySelector('img').style.transitionDelay = delay + \"s\";\n //child.querySelector('img').className += ' in';\n animateBlindsDom[i].className += ' done';\n }\n\n }, speed * options.finishSpeedPercent);\n\n // Load the elements without effect\n showNotAnimatedElements(animateBlindsDom, elementsCount);\n }\n\n function fadeSlideIn(options) {\n\n // Declare our defaults\n var defaults = {\n finishDelayThrottle: 2,\n finishSpeedPercent: 0.72,\n leftOffsetPercentage: 0.8,\n selector: '.animate-fade-slide-in .item',\n startVelocity: 1100\n };\n\n // Apply defaults if properties are not passed\n if (typeof options === 'undefined') {\n options = {};\n }\n\n options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n if (typeof options.selector == 'undefined') {\n options.selector = defaults.selector;\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid fadeSlideIn selector');\n return false;\n }\n\n var animateFadeSlideInDom = document.querySelectorAll(options.selector);\n var elementsCount = animateFadeSlideInDom.length;\n var elementAnimationCount = 0;\n\n // Count the elements within the starting viewport so we're not exacting\n // more effort than required...\n //\n // We use css visiblity: hidden instead of display: none so the elements\n // maintain their DOM flow\n\n var viewportHeight = getViewportHeight();\n for (var i = 0; i < elementsCount; i++) {\n if (animateFadeSlideInDom[i].offsetTop < viewportHeight) {\n elementAnimationCount += 1;\n continue;\n }\n break;\n }\n\n // Sequentially animate with a delay based on proximity\n var speed = options.startVelocity;\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateFadeSlideInDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delay = parseFloat(offset / speed).toFixed(2);\n child.style.webkitTransitionDelay = delay + \"s\";\n child.style.transitionDelay = delay + \"s\";\n child.className += ' in';\n }\n\n // When we're done animating, switch the class to 'done'\n setTimeout(function() {\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateFadeSlideInDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delayValue = offset / speed / options.finishDelayThrottle;\n var delay = parseFloat(delayValue).toFixed(2);\n }\n animateFadeSlideInDom[0].className += ' done';\n\n }, speed * options.finishSpeedPercent);\n\n // Load the elements without effect\n showNotAnimatedElements(animateFadeSlideInDom, elementsCount);\n }\n\n function fadeSlideInRight(options) {\n\n // Declare our defaults\n var defaults = {\n finishDelayThrottle: 2,\n finishSpeedPercent: 0.72,\n leftOffsetPercentage: 0.8,\n selector: '.animate-fade-slide-in-right .item',\n startVelocity: 1100\n };\n\n // Apply defaults if properties are not passed\n if (typeof options === 'undefined') {\n options = {};\n }\n\n options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n if (typeof options.selector == 'undefined') {\n options.selector = defaults.selector;\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid fadeSlideInRight selector');\n return false;\n }\n\n var animateSlideInRightDom = document.querySelectorAll(options.selector);\n var elementsCount = animateSlideInRightDom.length;\n var elementAnimationCount = 0;\n\n // Count the elements within the starting viewport so we're not\n // exacting more effort than required...\n //\n // We use css visiblity: hidden instead of display: none so the\n // elements maintain their DOM flow\n\n var viewportHeight = getViewportHeight();\n for (var i = 0; i < elementsCount; i++) {\n if (animateSlideInRightDom[i].offsetTop < viewportHeight) {\n elementAnimationCount += 1;\n continue;\n }\n break;\n }\n\n // Sequentially animate with a delay based on proximity\n var speed = options.startVelocity;\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateSlideInRightDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delay = parseFloat(offset / speed).toFixed(2);\n child.style.webkitTransitionDelay = delay + \"s\";\n child.style.transitionDelay = delay + \"s\";\n child.className += ' in';\n }\n\n // When we're done animating, switch the class to 'done'\n setTimeout(function() {\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateSlideInRightDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delayValue = offset / speed / options.finishDelayThrottle;\n var delay = parseFloat(delayValue).toFixed(2);\n }\n animateSlideInRightDom[0].className += ' done';\n\n }, speed * options.finishSpeedPercent);\n\n // Load the elements without effect\n showNotAnimatedElements(animateSlideInRightDom, elementsCount);\n\n }\n\n function ripple(options) {\n\n // Declare our defaults\n var defaults = {\n finishDelayThrottle: 2,\n finishSpeedPercent: 0.72,\n leftOffsetPercentage: 0.8,\n selector: '.animate-ripple .item',\n startVelocity: 1100\n };\n\n // Apply defaults if properties are not passed\n if (typeof options === 'undefined') {\n options = {};\n }\n\n options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n if (typeof options.selector == 'undefined') {\n options.selector = defaults.selector;\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid ripple selector');\n return false;\n }\n\n var animateRippleDom = document.querySelectorAll(options.selector);\n var elementsCount = animateRippleDom.length;\n var elementAnimationCount = 0;\n\n // Count the elements within the starting viewport so we're not\n // exacting more effort than required...\n //\n // We use css visiblity: hidden instead of display: none so the\n // elements maintain their DOM flow\n\n var viewportHeight = getViewportHeight();\n for (var i = 0; i < animateRippleDom.length; i++) {\n if (animateRippleDom[i].offsetTop < viewportHeight) {\n elementAnimationCount += 1;\n continue;\n }\n break;\n }\n\n // Sequentially animate with a delay based on proximity\n var speed = options.startVelocity;\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateRippleDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delay = parseFloat(offset / speed).toFixed(2);\n child.style.webkitTransitionDelay = delay + \"s\";\n child.style.transitionDelay = delay + \"s\";\n child.className += ' in';\n }\n\n // When we're done animating, switch the class to 'done'\n setTimeout(function() {\n for (var i = 0; i < elementAnimationCount; i++) {\n var child = animateRippleDom[i];\n var childOffset = child.getBoundingClientRect();\n var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n var delayValue = offset / speed / options.finishDelayThrottle;\n var delay = parseFloat(delayValue).toFixed(2);\n }\n animateRippleDom[0].className += ' done';\n\n }, speed * options.finishSpeedPercent);\n\n // Load the elements without effect\n showNotAnimatedElements(animateRippleDom, elementsCount);\n }\n\n function panInLeft(options) {\n\n // We have a single option, so it may be passed as a string or property\n if (typeof options === 'string') {\n options = {\n selector: options\n };\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid pushDown selector');\n return false;\n }\n\n var animatePanInLeftDom = document.querySelectorAll(options.selector);\n var elementAnimationCount = animatePanInLeftDom.length;\n for (var i = 0; i < elementAnimationCount; i++) {\n var element = animatePanInLeftDom[i];\n var classNameToRemove = 'animate-pan-in-left';\n var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n element.className = element.className.substr(0, indexOfClassNameToRemove);\n }\n }\n\n function pushDown(options) {\n\n // We have a single option, so it may be passed as a string or property\n if (typeof options === 'string') {\n options = {\n selector: options\n };\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid pushDown selector');\n return false;\n }\n\n var animatePushDownDom = document.querySelectorAll(options.selector);\n var elementAnimationCount = animatePushDownDom.length;\n for (var i = 0; i < elementAnimationCount; i++) {\n var element = animatePushDownDom[i];\n var classNameToRemove = options.selector.split('.')[1];\n var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n element.className = element.className.substr(0, indexOfClassNameToRemove);\n }\n }\n\n function slideUp(options) {\n\n // We have a single option, so it may be passed as a string or property\n if (typeof options === 'string') {\n options = {\n selector: options\n };\n }\n\n // Fail early & silently log\n var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n if (isInvalidSelector) {\n console.log('invalid pushDown selector');\n return false;\n }\n\n var animateSlideUpDom = document.querySelectorAll(options.selector);\n var elementAnimationCount = animateSlideUpDom.length;\n for (var i = 0; i < elementAnimationCount; i++) {\n var element = animateSlideUpDom[i];\n var classNameToRemove = options.selector.split('.')[1];\n var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n element.className = element.className.substr(0, indexOfClassNameToRemove);\n }\n }\n\n /* Export object\n /============================================================================*/\n return motion;\n }\n\n Motion.$inject = [];\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/js/lib/_motion.js\n ** module id = 3\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/www/lib/ionic-material/package.json b/www/lib/ionic-material/package.json new file mode 100644 index 0000000..2c556ab --- /dev/null +++ b/www/lib/ionic-material/package.json @@ -0,0 +1,49 @@ +{ + "name": "ionic-material", + "version": "0.4.0", + "authors": [ + "Zach Fitzgerald" + ], + "description": "Ionic Material - Material Design for the Ionic Framework", + "main": "dist/ionic-material.min.js", + "keywords": [ + "Ionic", + "Material", + "Design", + "Angular", + "Framework", + "Hybrid", + "Apps", + "Mobile" + ], + "license": "MIT", + "homepage": "http://ionicmaterial.com", + "private": false, + "bugs": { + "url": "https://github.com/zachsoft/Ionic-Material/issues" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "gulp": "^3.7.0", + "gulp-concat": "^2.1.7", + "gulp-livereload": "^3.0.0", + "gulp-minify-css": "^0.3.0", + "gulp-rename": "^1.1.0", + "gulp-uglify": "^0.2.1", + "lodash": "^3.9.1" + }, + "devDependencies": { + "cz-conventional-changelog": "^1.1.0", + "gulp-sass": "^2.0.0", + "gulp-sourcemaps": "^1.5.2", + "gulp-webpack": "^1.4.0", + "node-libs-browser": "^0.5.0", + "webpack": "^1.9.7" + } +} diff --git a/www/lib/ionic-material/src/js/ionic-material.js b/www/lib/ionic-material/src/js/ionic-material.js new file mode 100644 index 0000000..d89a862 --- /dev/null +++ b/www/lib/ionic-material/src/js/ionic-material.js @@ -0,0 +1,37 @@ +/** + * Ionic Material + * "Bundle Index" / "Entryfile" + * https://github.com/zachsoft/ionic-material + * + * Recommended: use a compiled version, especially in production! + */ + +'use strict'; + +module.exports = (function(){ + + var angular; + + try { + angular = require('angular'); + } catch(err){ } + + if(!angular || !angular.version){ + /*global window: true*/ + angular = window.angular; + /*global window: false*/ + } + + if(!angular || !angular.version){ + throw new Error('ionic-material could not load angular module :('); + } + + // set up angular module + var app = angular.module('ionic-material', ['ionic']); + + // Import Dependencies + require('./lib/_ink')(app); + require('./lib/_motion')(app); + + return 'ionic-material'; +})(); diff --git a/www/lib/ionic-material/src/js/lib/_ink.js b/www/lib/ionic-material/src/js/lib/_ink.js new file mode 100644 index 0000000..9936ab3 --- /dev/null +++ b/www/lib/ionic-material/src/js/lib/_ink.js @@ -0,0 +1,373 @@ +'use strict'; + +/*! + * Fork by Zach Fitzgerald and other contributors of Ionic Material + * + * Waves v0.5.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + * + */ +module.exports = function (angularApp) { + + angularApp.factory('ionicMaterialInk', ink); + + function ink (){ + /*global document*/ + var Ink = Ink || {}; + + // all DOM nodes + var $$; + + // phantomJS throws an error when you try to use document.querySelectorAll.bind + if(document && document.querySelectorAll && document.querySelectorAll.bind){ + try{ + // all DOM nodes + $$ = document.querySelectorAll.bind(document); + + } catch(e){} + } else if (window && window.angular && window.angular.element) { + // we can use angular.element instead + $$ = window.angular.element; + } else { + + + /** + * mout.js 0.11.0 bind and slice polyfills (substitutes?) + * TODO: pull out mout.js bind and slice molyfills and inject into material.ink + */ + + /** + * Create slice of source array or array-like object + */ + var slicePolyfill = function moutslicePolyfill(arr, start, end){ + var len = arr.length; + /*jshint eqnull:true */ + if (start == null) { + start = 0; + } else if (start < 0) { + start = Math.max(len + start, 0); + } else { + start = Math.min(start, len); + } + + + if (end == null) { + + end = len; + } else if (end < 0) { + end = Math.max(len + end, 0); + } else { + end = Math.min(end, len); + } + + var result = []; + while (start < end) { + result.push(arr[start++]); + } + + return result; + }; + + + + /** + * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. + * @param {Function} fn Function. + * @param {object} context Execution context. + * @param {rest} args Arguments (0...n arguments). + * @return {Function} Wrapped Function. + */ + var bindPolyfill = function moutBind(fn, context, args){ + var argsArr = slicePolyfill(arguments, 2); //curried args + return function(){ + return fn.apply(context, argsArr.concat(slicePolyfill(arguments))); + }; + }; + + $$ = bindPolyfill(document.querySelectorAll, document); + /*jshint ignore:end */ + } + + if (!$$){ + throw new Error('ionic material ink module could not create reference of DOM nodes'); + } + + // Find exact position of element + function isWindow(obj) { + return obj !== null && obj === obj.window; + } + + function getWindow(elem) { + return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; + } + + function offset(elem) { + var docElem, win, + box = { + top: 0, + left: 0 + }, + doc = elem && elem.ownerDocument; + + docElem = doc.documentElement; + + if (typeof elem.getBoundingClientRect !== typeof undefined) { + box = elem.getBoundingClientRect(); + } + win = getWindow(doc); + return { + top: box.top + win.pageYOffset - docElem.clientTop, + left: box.left + win.pageXOffset - docElem.clientLeft + }; + } + + function hexToRgb(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; + } + + function convertStyle(obj) { + var style = ''; + + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + style += (a + ':' + obj[a] + ';'); + } + } + + return style; + } + + var Effect = { + + // Effect delay + duration: 500, + + show: function(e) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = this; + + // Create ripple + var ripple = document.createElement('div'); + var customColor = this.dataset.inkColor; + var customOpacity = this.dataset.inkOpacity; + var hasCustomRipple = customColor || customOpacity; + ripple.className = 'ink-ripple'; + el.appendChild(ripple); + + // Get click coordinate and element witdh + var pos = offset(el); + var relativeY = (e.pageY - pos.top); + var relativeX = (e.pageX - pos.left); + var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY + 'px', + 'left': relativeX + 'px' + }; + + ripple.className = ripple.className + ' ink-notransition'; + + if (hasCustomRipple) { + var colorRgb; + if (customColor) { + var fromHex = hexToRgb(customColor); + colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b; + } else { + colorRgb = '0,0,0'; + } + if (!customOpacity) { + customOpacity = 0.2; + } + var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')'; + rippleStyle['background-color'] = bg; + } + + ripple.setAttribute('style', convertStyle(rippleStyle)); + ripple.className = ripple.className.replace('ink-notransition', ''); + + // Scale the ripple + rippleStyle['-webkit-transform'] = scale; + rippleStyle['-moz-transform'] = scale; + rippleStyle['-ms-transform'] = scale; + rippleStyle['-o-transform'] = scale; + rippleStyle.transform = scale; + rippleStyle.opacity = '1'; + + rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['transition-duration'] = Effect.duration + 'ms'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function() { + + var el = this; + + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + + var childrenLength = el.children.length; + + for (var a = 0; a < childrenLength; a++) { + if (el.children[a].className.indexOf('ink-ripple') !== -1) { + ripple = el.children[a]; + continue; + } + } + + if (!ripple) { + return false; + } + + var relativeX = ripple.getAttribute('data-x'); + var relativeY = ripple.getAttribute('data-y'); + var scale = ripple.getAttribute('data-scale'); + + // Get delay beetween mousedown and mouse leave + var diff = Date.now() - Number(ripple.getAttribute('data-hold')); + var delay = 500 - diff; + + if (delay < 0) { + delay = 0; + } + + // Fade out ripple after delay + setTimeout(function() { + + var style = { + 'top': relativeY + 'px', + 'left': relativeX + 'px', + 'opacity': '0', + + // Duration + '-webkit-transition-duration': Effect.duration + 'ms', + '-moz-transition-duration': Effect.duration + 'ms', + '-o-transition-duration': Effect.duration + 'ms', + 'transition-duration': Effect.duration + 'ms', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + '-o-transform': scale, + 'transform': scale, + }; + + ripple.setAttribute('style', convertStyle(style)); + + setTimeout(function() { + try { + el.removeChild(ripple); + } catch (e) { + return false; + } + }, Effect.duration); + }, delay); + }, + + // Little hack to make can perform ink effect + wrapInput: function(elements) { + + for (var a = 0; a < elements.length; a++) { + + var el = elements[a]; + + if (el.tagName.toLowerCase() === 'input') { + + var parent = el.parentNode; + + // If input already have parent just pass through + if (parent.tagName.toLowerCase() === 'i' && + parent.className.indexOf('ink') !== -1 && + parent.className.indexOf('tab-item') !== -1 && + parent.className.indexOf('button-fab') !== -1 && + parent.className.indexOf('button-raised') !== -1 && + parent.className.indexOf('button-flat') !== -1 && + parent.className.indexOf('button-clear') !== -1 && + parent.className.indexOf('button') !== -1 && + parent.className.indexOf('item') !== -1) { + return false; + } + + // Put element class and style to the specified parent + var wrapper = document.createElement('i'); + wrapper.className = el.className + ' ink-input-wrapper'; + + var elementStyle = el.getAttribute('style'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'ink-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + Ink.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button'; + Effect.wrapInput($$(selectors)); + + Array.prototype.forEach.call($$(selectors), function(i) { + if ('ontouchstart' in window) { + i.addEventListener('touchstart', Effect.show, false); + i.addEventListener('touchend', Effect.hide, false); + i.addEventListener('touchcancel', Effect.hide, false); + } else { + i.addEventListener('mousedown', Effect.show, false); + i.addEventListener('mouseup', Effect.hide, false); + i.addEventListener('mouseleave', Effect.hide, false); + } + }); + }; + + return Ink; + } + + ink.inject = []; +}; diff --git a/www/lib/ionic-material/src/js/lib/_motion.js b/www/lib/ionic-material/src/js/lib/_motion.js new file mode 100644 index 0000000..de9faae --- /dev/null +++ b/www/lib/ionic-material/src/js/lib/_motion.js @@ -0,0 +1,465 @@ +module.exports = function(angularApp) { + angularApp.factory('ionicMaterialMotion', Motion); + + function Motion() { + /*global document, window*/ + + 'use strict'; + + /*============================================================================*/ + /* HELPERS (non-exports) + /=============================================================================* + / Abstract common lookups and manipulations in case better alternatives + / arise or future cross-platform differences warrant separate handling + /=============================================================================*/ + + function getViewportHeight() { + return window.innerHeight; + } + + function getBoundingClientRect(domNode) { + return domNode.getBoundingClientRect; + } + + function showNotAnimatedElements(elements, total) { + // Load the elements without effect + for (var i = 0; i < total; i++) { + var child = elements[i]; + child.className += ' in'; + child.className += ' done'; + } + } + + + + /*============================================================================*/ + /* MOTION (EXPORT) + /=============================================================================* + / Animation methods for the library + /=============================================================================*/ + + var motion = { + blinds: blinds, + fadeSlideIn: fadeSlideIn, + fadeSlideInRight: fadeSlideInRight, + panInLeft: panInLeft, + pushDown: pushDown, + ripple: ripple, + slideUp: slideUp + }; + + function blinds(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.5, + leftOffsetPercentage: 0.8, + selector: '.animate-blinds .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid blinds selector'); + return false; + } + + var animateBlindsDom = document.querySelectorAll(options.selector); + var elementsCount = animateBlindsDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not exacting + // more effort than required... + // + // We use css visiblity: hidden instead of display: none so the elements + // maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < elementsCount; i++) { + if (animateBlindsDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateBlindsDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateBlindsDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2); + //child.querySelector('img').style.webkitTransitionDelay = delay + "s"; + //child.querySelector('img').style.transitionDelay = delay + "s"; + //child.querySelector('img').className += ' in'; + animateBlindsDom[i].className += ' done'; + } + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateBlindsDom, elementsCount); + } + + function fadeSlideIn(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.72, + leftOffsetPercentage: 0.8, + selector: '.animate-fade-slide-in .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid fadeSlideIn selector'); + return false; + } + + var animateFadeSlideInDom = document.querySelectorAll(options.selector); + var elementsCount = animateFadeSlideInDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not exacting + // more effort than required... + // + // We use css visiblity: hidden instead of display: none so the elements + // maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < elementsCount; i++) { + if (animateFadeSlideInDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateFadeSlideInDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateFadeSlideInDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delayValue = offset / speed / options.finishDelayThrottle; + var delay = parseFloat(delayValue).toFixed(2); + } + animateFadeSlideInDom[0].className += ' done'; + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateFadeSlideInDom, elementsCount); + } + + function fadeSlideInRight(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.72, + leftOffsetPercentage: 0.8, + selector: '.animate-fade-slide-in-right .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid fadeSlideInRight selector'); + return false; + } + + var animateSlideInRightDom = document.querySelectorAll(options.selector); + var elementsCount = animateSlideInRightDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not + // exacting more effort than required... + // + // We use css visiblity: hidden instead of display: none so the + // elements maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < elementsCount; i++) { + if (animateSlideInRightDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateSlideInRightDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateSlideInRightDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delayValue = offset / speed / options.finishDelayThrottle; + var delay = parseFloat(delayValue).toFixed(2); + } + animateSlideInRightDom[0].className += ' done'; + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateSlideInRightDom, elementsCount); + + } + + function ripple(options) { + + // Declare our defaults + var defaults = { + finishDelayThrottle: 2, + finishSpeedPercent: 0.72, + leftOffsetPercentage: 0.8, + selector: '.animate-ripple .item', + startVelocity: 1100 + }; + + // Apply defaults if properties are not passed + if (typeof options === 'undefined') { + options = {}; + } + + options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle; + options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent; + options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage; + options.startVelocity = options.startVelocity || defaults.startVelocity; + + if (typeof options.selector == 'undefined') { + options.selector = defaults.selector; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid ripple selector'); + return false; + } + + var animateRippleDom = document.querySelectorAll(options.selector); + var elementsCount = animateRippleDom.length; + var elementAnimationCount = 0; + + // Count the elements within the starting viewport so we're not + // exacting more effort than required... + // + // We use css visiblity: hidden instead of display: none so the + // elements maintain their DOM flow + + var viewportHeight = getViewportHeight(); + for (var i = 0; i < animateRippleDom.length; i++) { + if (animateRippleDom[i].offsetTop < viewportHeight) { + elementAnimationCount += 1; + continue; + } + break; + } + + // Sequentially animate with a delay based on proximity + var speed = options.startVelocity; + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateRippleDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delay = parseFloat(offset / speed).toFixed(2); + child.style.webkitTransitionDelay = delay + "s"; + child.style.transitionDelay = delay + "s"; + child.className += ' in'; + } + + // When we're done animating, switch the class to 'done' + setTimeout(function() { + for (var i = 0; i < elementAnimationCount; i++) { + var child = animateRippleDom[i]; + var childOffset = child.getBoundingClientRect(); + var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top; + var delayValue = offset / speed / options.finishDelayThrottle; + var delay = parseFloat(delayValue).toFixed(2); + } + animateRippleDom[0].className += ' done'; + + }, speed * options.finishSpeedPercent); + + // Load the elements without effect + showNotAnimatedElements(animateRippleDom, elementsCount); + } + + function panInLeft(options) { + + // We have a single option, so it may be passed as a string or property + if (typeof options === 'string') { + options = { + selector: options + }; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid pushDown selector'); + return false; + } + + var animatePanInLeftDom = document.querySelectorAll(options.selector); + var elementAnimationCount = animatePanInLeftDom.length; + for (var i = 0; i < elementAnimationCount; i++) { + var element = animatePanInLeftDom[i]; + var classNameToRemove = 'animate-pan-in-left'; + var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove); + element.className = element.className.substr(0, indexOfClassNameToRemove); + } + } + + function pushDown(options) { + + // We have a single option, so it may be passed as a string or property + if (typeof options === 'string') { + options = { + selector: options + }; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid pushDown selector'); + return false; + } + + var animatePushDownDom = document.querySelectorAll(options.selector); + var elementAnimationCount = animatePushDownDom.length; + for (var i = 0; i < elementAnimationCount; i++) { + var element = animatePushDownDom[i]; + var classNameToRemove = options.selector.split('.')[1]; + var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove); + element.className = element.className.substr(0, indexOfClassNameToRemove); + } + } + + function slideUp(options) { + + // We have a single option, so it may be passed as a string or property + if (typeof options === 'string') { + options = { + selector: options + }; + } + + // Fail early & silently log + var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === ''; + + if (isInvalidSelector) { + console.log('invalid pushDown selector'); + return false; + } + + var animateSlideUpDom = document.querySelectorAll(options.selector); + var elementAnimationCount = animateSlideUpDom.length; + for (var i = 0; i < elementAnimationCount; i++) { + var element = animateSlideUpDom[i]; + var classNameToRemove = options.selector.split('.')[1]; + var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove); + element.className = element.className.substr(0, indexOfClassNameToRemove); + } + } + + /* Export object + /============================================================================*/ + return motion; + } + + Motion.$inject = []; +}; diff --git a/www/lib/ionic-material/src/scss/directives/md-label.scss b/www/lib/ionic-material/src/scss/directives/md-label.scss new file mode 100644 index 0000000..2c6fe92 --- /dev/null +++ b/www/lib/ionic-material/src/scss/directives/md-label.scss @@ -0,0 +1,92 @@ + +/* Directives : MD Label +==================================*/ + +.item-md-label { + display: block; + background: transparent; + box-shadow: none; + margin-left: 12px; + margin-right: 12px; + padding: 30px 0 0; +} +.item-md-label .input-label { + position: absolute; + padding: 5px 0 0; + z-index: 2; + -webkit-transform: translate3d(0, -30px, 0) scale(1); + transform: translate3d(0, -30px, 0) scale(1); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + color: #fff; + opacity: 0.5; + filter: alpha(opacity=50); + -webkit-transform-origin: 0; + -ms-transform-origin: 0; + transform-origin: 0; +} +.item-md-label input { + background-color: rgba(0, 0, 0, 0.6); + bottom: 0; + color: #fff; + letter-spacing: 0.25rem; + padding: 20px 10px; + position: relative; + z-index: 1; +} +.item-md-label .highlight { + position: absolute; + bottom: 0; + height: 2px; + left: 0; + width: 100%; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + -webkit-transition: all 0.15s ease; + transition: all 0.15s ease; + z-index: 1; +} +.item-md-label .highlight-light { + background: #fff; +} +.item-md-label .highlight-stable { + background: #f8f8f8; +} +.item-md-label .highlight-positive { + background: #387ef5; +} +.item-md-label .highlight-calm { + background: #11c1f3; +} +.item-md-label .highlight-balanced { + background: #33cd5f; +} +.item-md-label .highlight-energized { + background: #ffc900; +} +.item-md-label .highlight-assertive { + background: #ef473a; +} +.item-md-label .highlight-royal { + background: #886aea; +} +.item-md-label .highlight-dark { + background: #444; +} +.item-md-label .input-label { + letter-spacing: 0.25rem; + padding: 0 10px; +} +.item-md-label input:focus ~ .input-label, .item-md-label input.used ~ .input-label { + font-weight: bold; + opacity: 0.7; + filter: alpha(opacity=70); + padding: 0; + text-transform: uppercase; + -webkit-transform: translate3d(0, -60px, 0) scale(0.9); + transform: translate3d(0, -60px, 0) scale(0.9); +} +.item-md-label input:focus ~ .highlight { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/elements/bar-header-expanded.scss b/www/lib/ionic-material/src/scss/elements/bar-header-expanded.scss new file mode 100644 index 0000000..e27637b --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/bar-header-expanded.scss @@ -0,0 +1,84 @@ + +/* Bar - Header - Expanded +==================================*/ + +.expanded .bar.bar-header, +.bar.bar-header.expanded { + height: 75px; +} + +.expanded.bar.bar-header .title, +.bar.bar-header.expanded .title { + bottom: 0; + top: initial; + padding-left: 16px; +} + +.expanded .bar.bar-header .title.fab-left, +.bar.bar-header.expanded .title.fab-left { + bottom: 0; + left: 90px; + position: absolute; + right: initial; + top: initial; +} +.expanded .bar.bar-header .title.fab-right, +.bar.bar-header.expanded .title.fab-right { + bottom: 0; + left: 4px; + position: absolute; + top: initial; + right: initial; +} +.expanded .bar.bar-header + .button-fab, +.bar.bar-header.expanded + .button-fab { + top: 50px; +} +.expanded .bar.bar-header.push-down, +.bar.bar-header.expanded.push-down { + height: 44px; + overflow: hidden; +} +.expanded .bar.bar-header, +.bar.bar-header.expanded { + -webkit-transition: height 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: height 1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.expanded .bar.bar-header + .button-fab, +.bar.bar-header.expanded + .button-fab { + -webkit-transition: all 1.1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1.1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0) scale(1); + transform: translate3d(0, 0, 0) scale(1); +} +.expanded .bar.bar-header.push-down + .button-fab, +.bar.bar-header.expanded.push-down + .button-fab { + top: 0; + -webkit-transform: translate3d(-100px, -100px, 0) scale(2.5); + transform: translate3d(-100px, -100px, 0) scale(2.5); +} +.expanded .bar.bar-header.push-down .title, +.bar.bar-header.expanded.push-down .title { + opacity: 0; + filter: alpha(opacity=0); + left: initial; + right: initial; +} +.expanded .bar.bar-header .title, +.bar.bar-header.expanded .title { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: all 2s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 2s cubic-bezier(0.55, 0, 0.1, 1); +} + +.expanded .bar.bar-header .title, .bar.bar-header.expanded .title { + bottom: 0; + left: 42px !important; + top: initial; +} +.expanded.has-header-fab-left .bar.bar-header .title, .bar.bar-header.expanded.has-header-fab-left .title { + left: 76px !important; +} diff --git a/www/lib/ionic-material/src/scss/elements/bar.scss b/www/lib/ionic-material/src/scss/elements/bar.scss new file mode 100644 index 0000000..89f0269 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/bar.scss @@ -0,0 +1,41 @@ + +/* Bar +==================================*/ +// variables +$base-bar-height: 46px; + +// rules +.bar { + z-index: 2; + font-size: 1.3em; + width: 100%; + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); +} + +.bar .button { + min-width: 38px; + z-index: 3; +} + +.bar .no-text span.back-text { + display: none; +} + +.bar .title sup { + opacity: 0.7; +} + +.bar.bar-header .button + .title { + text-align: left; + left: 35px; + line-height: $base-bar-height; +} + + +// .bar-double{ +// height: $base-bar-height * 2; +// } + +// .bar-triple{ +// height: $base-bar-height * 3; +// } diff --git a/www/lib/ionic-material/src/scss/elements/button-bar.scss b/www/lib/ionic-material/src/scss/elements/button-bar.scss new file mode 100644 index 0000000..357c795 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/button-bar.scss @@ -0,0 +1,49 @@ +/* Button Bar +==================================*/ + +.button-bar { + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15); +} + +.button-bar > .button { + box-shadow: none; + /* line-height: initial; */ +} + +.button-bar>.button .icon:before, +.button-bar>.button:before { + line-height: initial; +} + +.bar-footer .button-fab { + position: absolute; + top: -26px; + bottom: initial; +} + +.bar-footer .buttons-left .button-fab { + left: 8px; +} + +.bar-footer .buttons-right .button-fab { + right: 8px; +} + +.bar .button.button-clear { + box-shadow: none; +} + +.left-buttons .button-fab { + left: 8px; + top: 16px; +} + +.right-buttons .button-fab { + right: 8px; + top: 16px; +} + +.fab-left.title-left, +.fab-left.title.title-left { + left: 68px; +} diff --git a/www/lib/ionic-material/src/scss/elements/button-fab.scss b/www/lib/ionic-material/src/scss/elements/button-fab.scss new file mode 100644 index 0000000..bf8e40c --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/button-fab.scss @@ -0,0 +1,236 @@ +/* Button : FAB +==================================*/ + +.button.button-fab, +.bar .button.button-fab { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + z-index: 9999; + width: 56px; + height: 56px; + max-height: initial; + max-width: initial; + border-radius: 50%; + border-radius: 50%; + overflow: hidden; + padding: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: 0.3s fade-in-out; + transition: 0.3s fade-in-out; + -webkit-transition-property: -webkit-transform, box-shadow; + transition-property: transform, box-shadow; +} + +.button.button-fab.button-fab-bottom-right, +.bar .button.button-fab.button-fab-bottom-right { + top: auto; + right: 16px; + bottom: 16px; + left: auto; + position: absolute; +} + +.button.button-fab.button-fab-bottom-left, +.bar .button.button-fab.button-fab-bottom-left { + top: auto; + right: auto; + bottom: 16px; + left: 16px; + position: absolute; +} + +.button.button-fab.button-fab-top-right, +.bar .button.button-fab.button-fab-top-right { + top: 32px; + right: 16px; + bottom: auto; + left: auto; + position: absolute; +} + +.button.button-fab.button-fab-top-left, +.bar .button.button-fab.button-fab-top-left { + top: 32px; + right: auto; + bottom: auto; + left: 16px; + position: absolute; +} +.button.button-fab.button-fab-top-left.expanded, +.button.button-fab.button-fab-top-right.expanded, +.bar .button.button-fab.button-fab-top-left.expanded, +.bar .button.button-fab.button-fab-top-right.expanded { + top: 48px; +} + +.button.button-fab i, +.bar .button.button-fab i { + font-size: 2.5rem; + margin-top: 0; +} + +.button.button-fab.mini, +.bar .button.button-fab.mini { + width: 40px; + height: 40px; +} + +.button.button-fab.mini i, +.bar .button.button-fab.mini i { + font-size: 2rem; +} + + +/* Motion */ +.motion { + -webkit-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; +} +.fade { + opacity: 0; + filter: alpha(opacity=0); + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} + + + + + + + +.spin-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) !important; + transform: translateZ(0) rotate(360deg) scale(0) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.spiral { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.spiral-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.menu-open .avatar { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: translateZ(0) rotate(0) scale(1) !important; + transform: translateZ(0) rotate(0) scale(1) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; +} + +.button.button-fab.button-fab-top-left.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(-120px, 60px, 0); + transform: translate3d(-120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; +} +.button.button-fab.button-fab-top-right.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(120px, 60px, 0); + transform: translate3d(120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; +} +.button.button-fab.button-fab-bottom-left.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(-120px, 60px, 0); + transform: translate3d(-120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; +} +.button.button-fab.button-fab-bottom-right.motion { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translate3d(120px, 60px, 0); + transform: translate3d(120px, 60px, 0); + -webkit-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; +} + + + + + + + + + + + + + + +.spin { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(0) scale(0) !important; + transform: translateZ(0) rotate(0) scale(0) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; +} +.spin.on { + -webkit-transform: translateZ(0) rotate(-360deg) scale(1) !important; + transform: translateZ(0) rotate(-360deg) scale(1) !important; +} +.flap { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.flap.on { + -webkit-transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.drop { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) scale(3) !important; + transform: translateZ(0) scale(3) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.drop.on { + -webkit-transform: translateZ(0) scale(1) !important; + transform: translateZ(0) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.flip { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateY(0) scale(0) !important; + transform: translateZ(0) rotateY(0) scale(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.flip.on { + -webkit-transform: translateZ(0) rotateY(-720deg) scale(1) !important; + transform: translateZ(0) rotateY(-720deg) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} diff --git a/www/lib/ionic-material/src/scss/elements/button-floating.scss b/www/lib/ionic-material/src/scss/elements/button-floating.scss new file mode 100644 index 0000000..c3f926f --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/button-floating.scss @@ -0,0 +1,34 @@ + +/* Button : Floating +==================================*/ + +.button.button-floating, .bar .button.button-floating { + display: inline-block; + color: #FFF; + position: relative; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + border-radius: 50%; + background-clip: padding-box; + -webkit-transition: 0.3s; + transition: 0.3s; + cursor: pointer; +} +.button.button-floating i, .bar .button.button-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #FFF; + font-size: 1.6rem; + line-height: 37px; +} +.button.button-floating.button-large, .bar .button.button-floating.button-large { + width: 55.5px; + height: 55.5px; +} +.button.button-floating.button-large i, .bar .button.button-floating.button-large i { + line-height: 55.5px; +} diff --git a/www/lib/ionic-material/src/scss/elements/button.scss b/www/lib/ionic-material/src/scss/elements/button.scss new file mode 100644 index 0000000..db0bdaa --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/button.scss @@ -0,0 +1,221 @@ +/* Button +==================================*/ + +.button, +.button.button-large, +.button.button-flat, +.bar .button, +.bar .button.button-large, +.bar .button.button-flat { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + display: inline-block; + height: 36px; + padding: 0 2rem; + border-radius: 2px; + background-clip: padding-box; + text-transform: uppercase; + border: none; + outline: 0; + -webkit-tap-highlight-color: transparent; +} + +.button.disabled, +.button.disabled.button-large, +.button.button-floating.disabled, +.button.button-large.disabled, +.button.button:disabled, +.button.button-large:disabled, +.button.button-large:disabled, +.button.button-floating:disabled, +.bar .button.disabled, +.bar .button.disabled.button-large, +.bar .button.button-floating.disabled, +.bar .button.button-large.disabled, +.bar .button.button:disabled, +.bar .button.button-large:disabled, +.bar .button.button-large:disabled, +.bar .button.button-floating:disabled { + background-color: #DFDFDF; + box-shadow: none; + color: #9F9F9F; +} + +.button.disabled:hover, +.button.disabled.button-large:hover, +.button.button-floating.disabled:hover, +.button.button-large.disabled:hover, +.button.button:disabled:hover, +.button.button-large:disabled:hover, +.button.button-large:disabled:hover, +.button.button-floating:disabled:hover, +.bar .button.disabled:hover, +.bar .button.disabled.button-large:hover, +.bar .button.button-floating.disabled:hover, +.bar .button.button-large.disabled:hover, +.bar .button.button:disabled:hover, +.bar .button.button-large:disabled:hover, +.bar .button.button-large:disabled:hover, +.bar .button.button-floating:disabled:hover { + background-color: #DFDFDF; + color: #9F9F9F; +} + +.button i, +.button.button-large i, +.button.button-floating i, +.button.button-large i, +.button.button-flat i, +.bar .button i, +.bar .button.button-large i, +.bar .button.button-floating i, +.bar .button.button-large i, +.bar .button.button-flat i { + font-size: 1.3rem; +} + +.button-bar .button { + border-radius: 0; +} + +.button, +.button-large, +.bar .button, +.bar .button-large { + text-decoration: none; + text-align: center; + letter-spacing: 0.5px; + -webkit-transition: 0.2s ease-out; + transition: 0.2s ease-out; + cursor: pointer; +} + +.button { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + position: relative; + outline: none; + margin: 0; + /* background: transparent; */ + white-space: nowrap; + text-align: center; + text-transform: uppercase; + font-weight: 500; + font-style: inherit; + font-variant: inherit; + font-size: inherit; + text-decoration: none; + cursor: pointer; + overflow: hidden; + -webkit-transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), -webkit-transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); +} + +.button:focus { + outline: none; +} + +.button.ng-hide { + -webkit-transition: none; + transition: none; +} + +.button.cornered { + border-radius: 0; +} + +.button.raised { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.button-outline, +.button-outline:hover, +.button-outline:active { + border-style: solid; + border-width: 1px; +} + +.button.button-outline.button-assertive, +.button.button-outline.button-balanced, +.button.button-outline.button-calm, +.button.button-outline.button-dark, +.button.button-outline.button-energized, +.button.button-outline.button-light, +.button.button-outline.button-positive, +.button.button-outline.button-royal, +.button.button-outline.button-stable, +.button.button-outline { + border-color: rgba(0, 0, 0, 0.1); +} + +.button-flat, +.bar .button-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; +} + +.button.button-flat.disabled, +.bar .button.button-flat.disabled { + color: #b3b3b3; +} + +.button.button-large i, +.bar .button.button-large i { + font-size: 1.6rem; +} + +.button-pin-header.button-floating { + position: absolute; + z-index: 1000; +} + +.button-pin-header.button-pin-left { + left: 24px; + top: -24px; +} + +.button-pin-header.button-pin-right { + right: 24px; + top: -24px; +} + +.button:not([disabled]).raised:focus, +.button:not([disabled]).raised:hover, +.button:not([disabled]).floating:focus, +.button:not([disabled]).floating:hover { + -webkit-transform: translate3d(0, -1px, 0); + transform: translate3d(0, -1px, 0); +} + +.button.button-flat { + box-shadow: none; + /* background: transparent; */ + + color: inherit; +} + +.button.button-flat:hover { + color: inherit; +} + +.button.button-flat, +.button.button-flat:hover, +.button.button-flat:active { + color: #fff; +} + +.button.button-clear, +.button.button-clear:hover, +.button.button-clear:active { + background: transparent; +} + + +.button-full.ink, +.button-block.ink { + display: block; +} diff --git a/www/lib/ionic-material/src/scss/elements/card.scss b/www/lib/ionic-material/src/scss/elements/card.scss new file mode 100644 index 0000000..24a1eb6 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/card.scss @@ -0,0 +1,68 @@ + +/* Card +==================================*/ + +.card-item.item { + border: none; + padding-bottom: 4px; + padding-top: 4px; +} + +.card-item.item:first-child { + padding-top: 16px; +} + +.card { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); + display: block; + margin: 8px; + padding: 0; + position: relative; +} +.card .image { + display: block; + margin-top: 10px; + margin-bottom: 5px; +} +.card img { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); + display: block; + max-width: 100%; + max-height: initial; + position: static; +} +.card.card-gallery img { + border: none; + box-shadow: none; + display: block; +} +.card .card-footer { + font-size: 90%; + opacity: 0.8; + filter: alpha(opacity=80); + padding-top: 10px; +} +.card > .item { + border: none; +} +.card.card-gallery > .item { + background: inherit; +} +.card .icon + .icon { + padding-left: 1rem; +} +.card.animate-fade-in { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transform: translate3d(-30px, 1px, 0); + -webkit-transition: all 1s ease-in-out; +} +.card.animate-fade-in.done { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: translate3d(0, 0, 0); +} +.card .item.item-avatar { + min-height: 88px; + padding-left: 88px; +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/elements/hero.scss b/www/lib/ionic-material/src/scss/elements/hero.scss new file mode 100644 index 0000000..d92bfa6 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/hero.scss @@ -0,0 +1,119 @@ + +/* Hero +==================================*/ + +.hero { + background-size: cover; + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); + color: #fff; + height: 200px; + position: relative; + text-align: center; + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + width: 100%; +} + +.hero > * { + -webkit-transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 1; + filter: alpha(opacity=100); +} + +.hero + .mid-bar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + height: initial; + opacity: 1; + filter: alpha(opacity=100); +} + +.hero .hero-icon { + box-shadow: 0px 0 2px 0 rgba(0, 0, 0, 0.26); + border-radius: 50%; + display: inline-block; + font-size: 65px; + height: 150px; + padding: 10px 30px; + line-height: 136px; + width: 150px; +} +.hero.no-header { + height: 244px; +} +.hero > .content { + bottom: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: 1; +} +.hero > .content > .avatar { + background-position: center; + background-size: cover; + border: solid 1px rgba(255, 255, 255, 0.8); + border-radius: 50%; + display: inline-block; + height: 88px; + left: auto; + margin-bottom: 10px; + position: relative; + width: 88px; +} +.hero h1 .hero h2, .hero h3, .hero h4, .hero h5, .hero h6 { + color: #fff; + margin: 0; +} +.hero h4 { + color: rgba(255, 255, 255, 0.7); + margin: 3px 0 16px; +} +.hero h1 > a, .hero h2 > a, .hero h3 > a, .hero h4 > a, .hero h5 > a, .hero h6 > a { + text-decoration: none; +} +.hero + .button-bar { + border-radius: 0; + margin-top: 0; +} +.hero + .button-bar > .button:first-child, .hero + .button-bar > .button:last-child { + border-radius: 0; +} +.hero .hero-icon { + color: #fff; + font-size: 96px; +} +.hero .hero-icon + h1 { + color: rgb(255, 255, 255); + letter-spacing: 0.15rem; +} +.hero .button, .hero .button.button-large, .hero .button.button-flat { + margin: 0; +} +.hero h1.title { + color: #fff; + font-size: 23px; + margin: 0; + text-align: left; + padding-left: 80px; + line-height: 59px; +} +.hero + .mid-bar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + height: initial; + opacity: 1; + filter: alpha(opacity=100); +} +.hero > * { + -webkit-transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 1; + filter: alpha(opacity=100); +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/elements/item.scss b/www/lib/ionic-material/src/scss/elements/item.scss new file mode 100644 index 0000000..6bf4d99 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/item.scss @@ -0,0 +1,28 @@ + +/* Item +==================================*/ + +.item { + font-size: 14px; + width: 100%; +} +.item-icon-left .icon { + left: 16px; +} +.item-icon-right .icon { + right: 16px; +} + +/* +.list .item.item-icon-right { + padding-right: 60px; +} +*/ + +.item-thumbnail-left > img:first-child, .item-thumbnail-left .item-image, .item-thumbnail-left .item-content > img:first-child, .item-thumbnail-left .item-content .item-image { + border-radius: 50%; +} + +.tab-item.activated { + height: calc(100% + 3px); /* Stretch */ +} diff --git a/www/lib/ionic-material/src/scss/elements/list.scss b/www/lib/ionic-material/src/scss/elements/list.scss new file mode 100644 index 0000000..239e8d0 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/list.scss @@ -0,0 +1,187 @@ +@import "../helpers/colors"; +@import "../helpers/sizes"; + + +/* List +==================================*/ + +.content + .list { + padding-top: 0; +} +.list .item { + border: none; + /* + padding-left: 16px; + padding-right: 16px; + */ + min-height: $item-tile-height; + // height: $item-tile-height; + text-align: left; +} +.list .item.tabs { + padding: initial; +} +.list .item.item-bg-image { + max-height: 150px; + min-height: 150px; +} +.list .item.item-bg-image > img { + height: 100%; + left: 0; + max-width: initial; + opacity: 0.65; + filter: alpha(opacity=65); + position: absolute; + top: 0; + width: 100%; + z-index: 0; +} +.list a.item { + opacity: 1; + filter: alpha(opacity=100); +} +.list .item.item-bg-image h1, .list .item.item-bg-image h2, .list .item.item-bg-image h3, .list .item.item-bg-image h4, .list .item.item-bg-image h5, .list .item.item-bg-image h6 { + color: #fff; + font-weight: bold; + position: relative; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.95); + z-index: 1; +} +.list .item.item-bg-image h2 { + font-size: 24px; +} +.list .item.item-bg-image h2 { + font-size: 24px; +} +.list .item.item-bg-image p { + color: rgba(255, 255, 255, 1); + font-size: 17px; + position: relative; + text-shadow: 0 0 4px rgba(0, 0, 0, 0.95); + z-index: 1; +} +.item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content { + min-height: 80px; +} + +/* List: Thumbnails +==================================*/ + +.item-thumbnail-left, .card > .item.item-thumbnail-left, .item-thumbnail-left .item-content { + padding-left: 106px; +} +.item-thumbnail-right, .card > .item.item-thumbnail-right, .item-thumbnail-right .item-content { + padding-right: 106px; +} + + +/* List: Avatar +==================================*/ + +.item-avatar > img:first-child, .item-avatar .item-image, .item-avatar .item-content > img:first-child, .item-avatar .item-content .item-image, .item-avatar-left > img:first-child, .item-avatar-left .item-image, .item-avatar-left .item-content > img:first-child, .item-avatar-left .item-content .item-image { + border-radius: 50%; + left: 16px; + max-height: 40px; + max-width: 40px; +} +/* +.item-avatar, .list .item-avatar { + padding-left: 100px; +} +*/ +.avatar, .item-avatar .avatar { + background-position: center; + background-size: cover; + border-radius: 50%; + display: inline-block; + height: 56px; + left: 16px; + position: absolute; + width: 56px; +} + + +/* List: Gallery +==================================*/ + +.list.half { + display: inline-block; + float: left; + margin: 0; + padding: 0; + width: 50%; +} +.list.half:first-child { + padding: 16px 8px 16px 16px; +} +.list.half:last-child { + padding: 16px 16px 16px 8px; +} + +.list.half:first-child .card.card-gallery { + margin-left: 0; + margin-right: 0; +} +.list.half:last-child .card.card-gallery { + margin-left: 0; + margin-right: 0; +} +.list.condensed-space > .card, .list.condensed-space > .item { + margin: 0px 0px 2px; +} +.list .card.card-gallery { + display: block; + float: left; + margin: 0 0 0 13px; + padding: 0; + width: auto; +} +.list.half .item { + width: 100%; +} +.list.half .item.card { + margin-bottom: 16px; +} +.list .card.card-gallery.item h2 { + padding: 12px; +} +.list .item.item-gallery {} .list .item.item-gallery img { + width: 100%; + } + + +.item.item-divider { + &:first-child{ + border: none; + } + border-top: solid 1px rgba(0,0,0,0.12); + font-size: $material-base-font-size; + font-weight: bold; + height: 48px; + line-height: 48px; + color: $material-light-bg-dark-text-secondary; + // padding-bottom: 2px; +} + + +.item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content, .card > .item-avatar { + padding-left: 72px; +} + + + +.item.active, .item.activated, .item-complex.active .item-content, .item-complex.activated .item-content, .item .item-content.active, .item .item-content.activated { + background-color: transparent; +} + +.list-inset { + margin: 20px 30px; + border-left: solid 1px #ccc; + border-radius: 0; + background-color: #fff; +} + +.list .item.item-floating-label, +.item-floating-label { + border-bottom: solid 1px #ccc; +} diff --git a/www/lib/ionic-material/src/scss/elements/loading.scss b/www/lib/ionic-material/src/scss/elements/loading.scss new file mode 100644 index 0000000..b164740 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/loading.scss @@ -0,0 +1,93 @@ +.loader { + position: relative; + margin: 0px auto; + width: 100px; + height: 100px; + zoom: 1.7; +} + +.circular { + -webkit-animation: rotate 2s linear infinite; + animation: rotate 2s linear infinite; + height: 100px; + position: relative; + width: 100px; +} + +.path { + stroke-dasharray: 1,200; + stroke-dashoffset: 0; + -webkit-animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; + animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; + stroke-linecap: round; +} + +@-webkit-keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-webkit-keyframes dash { + 0% { + stroke-dasharray: 1,200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89,200; + stroke-dashoffset: -35; + } + 100% { + stroke-dasharray: 89,200; + stroke-dashoffset: -124; + } +} +@keyframes dash { + 0% { + stroke-dasharray: 1,200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89,200; + stroke-dashoffset: -35; + } + 100% { + stroke-dasharray: 89,200; + stroke-dashoffset: -124; + } +} +@-webkit-keyframes color { + 100%, 0% { + stroke: #d62d20; + } + 40% { + stroke: #0057e7; + } + 66% { + stroke: #008744; + } + 80%, 90% { + stroke: #ffa700; + } +} +@keyframes color { + 100%, 0% { + stroke: #d62d20; + } + 40% { + stroke: #0057e7; + } + 66% { + stroke: #008744; + } + 80%, 90% { + stroke: #ffa700; + } +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/elements/login.scss b/www/lib/ionic-material/src/scss/elements/login.scss new file mode 100644 index 0000000..c181169 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/login.scss @@ -0,0 +1,28 @@ + +/* Layouts: Login +==================================*/ + +.login { + background-position: 25% 25%; + background-size: 180% 180%; + height: 100%; + -webkit-transition: all 1.5s ease-in-out; + transition: all 1.5s ease-in-out; +} +.login .item { + margin: 0 12px; + padding-left: 0; + padding-right: 0; + width: initial; +} +.login .button-bar { + bottom: 0; + margin: 28px 12px 0; + width: initial; +} +.login .light-bg { + background-color: #fff; +} +.icon.hero-icon:before { + line-height: 130px; +} diff --git a/www/lib/ionic-material/src/scss/elements/mask.scss b/www/lib/ionic-material/src/scss/elements/mask.scss new file mode 100644 index 0000000..2ee08bf --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/mask.scss @@ -0,0 +1,24 @@ + +/* Mask +==================================*/ + +.hero.has-mask:after, .item.has-mask:after, .card.has-mask:after { + content: ''; + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); + height: 100%; + left: 0; + position: absolute; + top: 0; + z-index: 0; + width: 100%; +} +.hero.has-mask-reverse:after, .item.has-mask-reverse:after, .card.has-mask-reverse:after { + content: ''; + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 100%); + height: 100%; + left: 0; + position: absolute; + top: 0; + z-index: 0; + width: 100%; +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/elements/menu.scss b/www/lib/ionic-material/src/scss/elements/menu.scss new file mode 100644 index 0000000..a377ed5 --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/menu.scss @@ -0,0 +1,37 @@ +/* Menu */ + +.menu-bottom { + bottom: 16px; + left: 16px; + right: 16px; + position: absolute; +} + +.menu-top { + top: 16px; + left: 16px; + right: 16px; + position: absolute; +} + +.menu .avatar { + top: 16px; + left: 16px; + height: 65px; + width: 65px; +} + +.menu .bar.bar-header.expanded { + box-shadow: none; + min-height: 150px; + color: #fff; +} + +.menu-open .bar.bar-header.expanded { + background-position: 0; + background-size: 100%; +} + +.has-expanded-header { + top: 150px !important; +} diff --git a/www/lib/ionic-material/src/scss/elements/motion-elements.scss b/www/lib/ionic-material/src/scss/elements/motion-elements.scss new file mode 100644 index 0000000..741b10c --- /dev/null +++ b/www/lib/ionic-material/src/scss/elements/motion-elements.scss @@ -0,0 +1,98 @@ +.motion { + -webkit-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; +} +.fade { + opacity: 0; + filter: alpha(opacity=0); + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.spin-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) !important; + transform: translateZ(0) rotate(360deg) scale(0) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.spiral { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.spiral-back { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important; + -webkit-transition: all 0.1s ease-out !important; + transition: all 0.1s ease-out !important; +} +.menu-open .avatar { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: translateZ(0) rotate(0) scale(1) !important; + transform: translateZ(0) rotate(0) scale(1) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; +} +.spin { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotate(0) scale(0) !important; + transform: translateZ(0) rotate(0) scale(0) !important; + -webkit-transition: all 0.3s ease-out !important; + transition: all 0.3s ease-out !important; +} +.spin.on { + -webkit-transform: translateZ(0) rotate(-360deg) scale(1) !important; + transform: translateZ(0) rotate(-360deg) scale(1) !important; +} +.flap { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.flap.on { + -webkit-transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.drop { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) scale(3) !important; + transform: translateZ(0) scale(3) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.drop.on { + -webkit-transform: translateZ(0) scale(1) !important; + transform: translateZ(0) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.flip { + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; + -webkit-transform: translateZ(0) rotateY(0) scale(0) !important; + transform: translateZ(0) rotateY(0) scale(0) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} +.flip.on { + -webkit-transform: translateZ(0) rotateY(-720deg) scale(1) !important; + transform: translateZ(0) rotateY(-720deg) scale(1) !important; + -webkit-transition: all 0.5s ease-out !important; + transition: all 0.5s ease-out !important; +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/helpers/colors.scss b/www/lib/ionic-material/src/scss/helpers/colors.scss new file mode 100644 index 0000000..612bc8a --- /dev/null +++ b/www/lib/ionic-material/src/scss/helpers/colors.scss @@ -0,0 +1,7 @@ +$material-light-bg-dark-text-primary: rgba(0,0,0,0.87); +$material-light-bg-dark-text-secondary: rgba(0,0,0,0.54); +$material-light-bg-dark-text-hints: rgba(0,0,0,0.26); + +$material-dark-bg-light-text-primary: rgba(255,255,255,1); +$material-dark-bg-light-text-secondary: rgba(255,255,255,0.7); +$material-dark-bg-light-text-hints: rgba(255,255,255,0.3); diff --git a/www/lib/ionic-material/src/scss/helpers/sizes.scss b/www/lib/ionic-material/src/scss/helpers/sizes.scss new file mode 100644 index 0000000..778c615 --- /dev/null +++ b/www/lib/ionic-material/src/scss/helpers/sizes.scss @@ -0,0 +1,4 @@ +$material-base-font-size: 14px; + +$item-tile-height: 48px; +$list-single-font-size: 16px; diff --git a/www/lib/ionic-material/src/scss/helpers/utilities.scss b/www/lib/ionic-material/src/scss/helpers/utilities.scss new file mode 100644 index 0000000..230ccff --- /dev/null +++ b/www/lib/ionic-material/src/scss/helpers/utilities.scss @@ -0,0 +1,115 @@ + +/* Utilities +==================================*/ + +.bold { + font-weight: bold; +} +.static { + position: static; +} +.pull-left { + float: left; +} +.pull-right { + float: right; +} +.double-padding, .ionic-content.double-padding { + padding: 16px; +} +.double-padding-x { + padding-left: 16px; + padding-right: 16px; +} +.double-padding-y { + padding-top: 16px; + padding-bottom: 16px; +} +.outline { + border-style: solid; + border-width: 1px; +} +.border-top { + border-top: solid 1px #ccc; + padding-top: 30px; +} +.no-border { + border: none; +} +.circle { + border-radius: 50%; +} +.no-padding, .list.no-padding, .bar.no-padding, .button-bar.no-padding, .card.no-padding, .button.no-padding, .item.no-padding { + padding: 0; +} +.flat, .flat.tabs, .flat.button, .flat.button.icon, .flat.hero { + box-shadow: none; + -webkit-box-shadow: none; +} + + +/* Utilities : Padding +==================================*/ + +.im-wrapper, .padding { + padding: 16px !important; +} + +.padding-bottom { + padding-bottom: 16px !important; +} + +.padding-top { + padding-top: 16px !important; +} + +.padding-left { + padding-left: 16px !important; +} + +.padding-right { + padding-right: 16px !important; +} + +.no-padding-bottom { + padding-bottom: 0 !important; +} + +.no-padding-top { + padding-top: 0 !important; +} + +.no-padding-left { + padding-left: 0 !important; +} + +.no-padding-right { + padding-right: 0 !important; +} + + +/* Utilities : Depth +==================================*/ + +.z1 { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); +} + + +/* Utilities : Color +==================================*/ + +.bar.bar-positive.darker { + background-color: #164FAB; +} +/* TODO: Expand to other colors */ +.bar.bar-positive.dark-positive-bg { + background-color: #2C5CAD; +} +/* TODO: Expand to other colors */ +.muted { + color: #C3C3C3; +} +.clear-bg { + background: transparent; +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/index.scss b/www/lib/ionic-material/src/scss/index.scss new file mode 100644 index 0000000..736da8b --- /dev/null +++ b/www/lib/ionic-material/src/scss/index.scss @@ -0,0 +1,40 @@ +@charset "UTF-8"; + +// Ionic Material +// scss version + +@import + // directives + "directives/md-label.scss", + + // elements + "elements/bar-header-expanded.scss", + "elements/bar.scss", + "elements/button-bar.scss", + "elements/button-fab.scss", + "elements/button-floating.scss", + "elements/button.scss", + "elements/card.scss", + "elements/hero.scss", + "elements/item.scss", + "elements/list.scss", + "elements/loading.scss", + "elements/login.scss", + "elements/mask.scss", + "elements/menu.scss", + "elements/motion-elements.scss", + + // helpers + "helpers/utilities.scss", + + // motion + "motion/blinds.scss", + "motion/pan-in-left.scss", + "motion/ripple.scss", + "motion/slide-fade-in.scss", + "motion/slide-in-right.scss", + "motion/slide-up.scss", + + // overrides + "overrides/ink.scss", + "overrides/ionic.scss"; diff --git a/www/lib/ionic-material/src/scss/motion/blinds.scss b/www/lib/ionic-material/src/scss/motion/blinds.scss new file mode 100644 index 0000000..ea774bc --- /dev/null +++ b/www/lib/ionic-material/src/scss/motion/blinds.scss @@ -0,0 +1,87 @@ + +/* Motion: Blinds +==================================*/ + +.animate-blinds .item, +.animate-blinds .item { + visibility: hidden; +} +.animate-blinds .item, +.animate-blinds .item { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); +} +.animate-blinds .item-bg-image > img.background, +.animate-blinds .item-bg-image > img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} +.animate-blinds .in, +.animate-blinds.done > *, +.animate-blinds .in, +.animate-blinds.done > * { + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.animate-blinds .in, +.animate-blinds.done .item, +.animate-blinds .in, +.animate-blinds.done .item { + visibility: visible; +} +.animate-blinds .item, +.animate-blinds .item { + visibility: hidden; +} +.animate-blinds .item, +.animate-blinds .item { + opacity: 0; + filter: alpha(opacity=0); +} +.animate-blinds .in, +.animate-blinds.done, +.animate-blinds .in, +.animate-blinds.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + opacity: 1; + filter: alpha(opacity=100); +} +.animate-blinds .in, +.animate-blinds.done, +.animate-blinds .in, +.animate-blinds.done { + visibility: visible; +} +.animate-blinds.done .in, +.animate-blinds.done .in { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-blinds .has-mask-reverse:after, +.animate-blinds .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.animate-blinds.done .has-mask-reverse:after, +.animate-blinds.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-blinds .out, +.animate-blinds .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/motion/pan-in-left.scss b/www/lib/ionic-material/src/scss/motion/pan-in-left.scss new file mode 100644 index 0000000..ca0a1a1 --- /dev/null +++ b/www/lib/ionic-material/src/scss/motion/pan-in-left.scss @@ -0,0 +1,9 @@ + + +/* Motion: Pan In Left +==================================*/ + +.animate-pan-in-left, +.animate-pan-in-left { + background-position: 0% 0%; +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/motion/ripple.scss b/www/lib/ionic-material/src/scss/motion/ripple.scss new file mode 100644 index 0000000..5f84eb6 --- /dev/null +++ b/www/lib/ionic-material/src/scss/motion/ripple.scss @@ -0,0 +1,128 @@ +/* Motion: Ripple +==================================*/ + +.animate-ripple .done, +.animate-ripple .done { + visibility: hidden; +} +.animate-ripple .done, +.animate-ripple .done { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); +} +.animate-ripple .item-bg-image img.background, +.animate-ripple .item-bg-image img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} +.animate-ripple .in, .animate-ripple.done, +.animate-ripple .in, .animate-ripple.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} +.animate-ripple .in, .animate-ripple.done, +.animate-ripple .in, .animate-ripple.done { + visibility: visible; +} +.animate-ripple .item { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); + opacity: 0; + filter: alpha(opacity=0); +} +.animate-ripple .item.in { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-ripple .done { + visibility: hidden; +} +.animate-ripple .done, +.animate-ripple .done { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); +} +/* Uncomment if you want images to fade in after the card + + .animate-ripple .in .item-bg-image img:last-child, + .animate-ripple .in .item-bg-image img:last-child { + opacity: 0; + } + + .animate-ripple.done .item-bg-image img:last-child, + .animate-ripple.done .item-bg-image img:last-child { + opacity: 1; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -webkit-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; + } + + .animate-ripple .item-bg-image img:last-child, + .animate-ripple .item-bg-image img:last-child { + box-shadow: none; + -moz-transform: scale3d(1, 1, 1); + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + .animate-ripple .in .item-bg-image img:last-child, + .animate-ripple .in .item-bg-image img:last-child { + opacity: 0; + } + +.animate-ripple.done .item-bg-image img:last-child, +.animate-ripple.done .item-bg-image img:last-child { + opacity: 1; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} + +.animate-ripple .in, +.animate-ripple .in { + opacity: 0.6; +} +*/ + +.animate-ripple .in, .animate-ripple.done, .animate-ripple .in, .animate-ripple.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.animate-ripple .in, .animate-ripple.done, .animate-ripple .in, .animate-ripple.done { + visibility: visible; +} +.animate-ripple.done .in, .animate-ripple.done .in { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-ripple .has-mask-reverse:after, .animate-ripple .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.animate-ripple.done .has-mask-reverse:after, .animate-ripple.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-ripple .out, .animate-ripple .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); +} + diff --git a/www/lib/ionic-material/src/scss/motion/slide-fade-in.scss b/www/lib/ionic-material/src/scss/motion/slide-fade-in.scss new file mode 100644 index 0000000..dfd1d8e --- /dev/null +++ b/www/lib/ionic-material/src/scss/motion/slide-fade-in.scss @@ -0,0 +1,96 @@ + +/* Motion: Slide / Fade In +==================================*/ + +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + visibility: hidden; +} +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); +} +.animate-fade-slide-in .item-bg-image img.background, +.animate-fade-slide-in .item-bg-image img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item { + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done .item { + visibility: visible; +} +.list .item.item-bg-image, +.list .item.item-bg-image { + max-height: 150px; +} +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + visibility: hidden; +} +.animate-fade-slide-in .item, +.animate-fade-slide-in .item { + -ms-transform: translate3d(-250px, 250px, 0); + -webkit-transform: translate3d(-250px, 250px, 0); + transform: translate3d(-250px, 250px, 0); + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 0; + filter: alpha(opacity=0); +} +.animate-fade-slide-in .in, +.animate-fade-slide-in.done, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; + opacity: 1; + filter: alpha(opacity=100); +} +.animate-fade-slide-in .in, +.animate-fade-slide-in.done, +.animate-fade-slide-in .in, +.animate-fade-slide-in.done { + visibility: visible; +} +.animate-fade-slide-in.done .in, +.animate-fade-slide-in.done .in { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-fade-slide-in .has-mask-reverse:after, +.animate-fade-slide-in .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.animate-fade-slide-in.done .has-mask-reverse:after, +.animate-fade-slide-in.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-fade-slide-in .out, +.animate-fade-slide-in .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/motion/slide-in-right.scss b/www/lib/ionic-material/src/scss/motion/slide-in-right.scss new file mode 100644 index 0000000..b45591d --- /dev/null +++ b/www/lib/ionic-material/src/scss/motion/slide-in-right.scss @@ -0,0 +1,92 @@ + +/* Motion: Slide In Right +==================================*/ + +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + visibility: hidden; +} +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + -ms-transform: scale3d(0.8, 0, 1); + -webkit-transform: scale3d(0.8, 0, 1); + transform: scale3d(0.8, 0, 1); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); +} +.animate-fade-slide-in-right .item-bg-image > img.background, +.animate-fade-slide-in-right .item-bg-image > img.background { + box-shadow: none; + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done > *, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done > * { + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done .item, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done .item { + visibility: visible; +} +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + visibility: hidden; +} +.animate-fade-slide-in-right .item, +.animate-fade-slide-in-right .item { + -ms-transform: translate3d(250px, 250px, 0); + -webkit-transform: translate3d(250px, 250px, 0); + transform: translate3d(250px, 250px, 0); + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + transition: transform 0.5s cubic-bezier(0.55, 0, 0.1, 1); + opacity: 0; + filter: alpha(opacity=0); +} +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done { + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + opacity: 1; + filter: alpha(opacity=100); +} +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done, +.animate-fade-slide-in-right .in, +.animate-fade-slide-in-right.done { + visibility: visible; +} +.animate-fade-slide-in-right.done .in, +.animate-fade-slide-in-right.done .in { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-fade-slide-in-right .has-mask-reverse:after, +.animate-fade-slide-in-right .has-mask-reverse:after { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.animate-fade-slide-in-right.done .has-mask-reverse:after, +.animate-fade-slide-in-right.done .has-mask-reverse:after { + opacity: 1; + filter: alpha(opacity=100); +} +.animate-fade-slide-in-right .out, +.animate-fade-slide-in-right .out { + -ms-transform: scale3d(0, 0, 1); + -webkit-transform: scale3d(0, 0, 1); + transform: scale3d(0, 0, 1); +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/motion/slide-up.scss b/www/lib/ionic-material/src/scss/motion/slide-up.scss new file mode 100644 index 0000000..a46d9ba --- /dev/null +++ b/www/lib/ionic-material/src/scss/motion/slide-up.scss @@ -0,0 +1,35 @@ + +/* Motion: Slide Up +==================================*/ + +.slide-up, +.slide-up, +.hero.slide-up { + height: 100%; + overflow: hidden; + text-align: center; +} + + +.slide-up { + -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + transition: all 1s cubic-bezier(0.55, 0, 0.1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slide-up *, +.slide-up *, +.hero.slide-up * { + opacity: 0; + filter: alpha(opacity=0); +} +.hero.slide-up + .mid-bar, +.slide-up + .mid-bar, +.slide-up + .mid-bar { + height: 100%; + opacity: 0.7; + filter: alpha(opacity=70); + -webkit-transform: translate3d(100%, -240px, 0); + transform: translate3d(100%, -240px, 0); +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/overrides/ink.scss b/www/lib/ionic-material/src/scss/overrides/ink.scss new file mode 100644 index 0000000..27fd6d4 --- /dev/null +++ b/www/lib/ionic-material/src/scss/overrides/ink.scss @@ -0,0 +1,181 @@ +/*! + * Waves v0.5.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Forked by Zach Fitzgerald and other contributors for Ionic Material + * + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + * + */ +.ink, .button-fab, .button-flat, .button-raised, .button-clear, .popup .button { + position: relative; + cursor: pointer; + /*display: inline-block;*/ + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} +.ink-ripple { + position: absolute; + border-radius: 50%; + width: 100px; + height: 100px; + margin-top: -50px; + margin-left: -50px; + opacity: 0; + background-color: rgba(255, 255, 255, 0.4); + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; +} +.ink-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; +} +.button-fab, +.button-flat, +.button-clear, +.button-raised, +.ink-button, +.ink-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); +} + + +.button-fab.activated, +.button-flat.activated, +.button-raised.activated, +.button-clear.activated, +.ink-button.activated, +.ink.activated, +.ink-circle.activated, +.popup .button.activated, +.button-fab:active, +.button-flat:active, +.button-raised:active, +.button-clear:active, +.ink-button:active, +.ink:active, +.ink-circle:active, +.popup .button:active { + -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%); +} + +.ink-button, +.ink-button:visited, +.ink-button:link, +.button-fab, +.button-fab:visited, +.button-fab:link, +.button-flat, +.button-flat:visited, +.button-flat:link, +.button-raised, +.button-raised:visited, +.button-raised:link, +.button-clear, +.button-clear:visited, +.button-clear:link, +.ink-button-input { + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: none; + outline: none; +/* color: inherit; */ +/* background-color: rgba(0, 0, 0, 0); */ + font-size: 14px; + text-align: center; + text-decoration: none; + z-index: 1; +} +.ink-button { + padding: 10px 15px; + border-radius: 2px; +} +.ink-button-input { + margin: 0; + padding: 10px 15px; +} +.ink-input-wrapper { + border-radius: 2px; + vertical-align: bottom; +} +.ink-input-wrapper.ink-button { + padding: 0; +} +.ink-input-wrapper .ink-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} +.ink-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; +} +.ink-float { + -webkit-mask-image: none; + -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); +} +.ink-float:active { + -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); +} +.ink-block { + display: block; +} +.ink-ripple { + z-index: 0; + /* Firefox Bug: link not triggered unless -1 z-index */ +} + +/* Handled elsewhere +.button-fab,.button-raised,.button-flat,.ink-circle,.list a.item { + -webkit-mask-image: none; +} +*/ + +.button-clear .ink-ripple, +*[class$="-clear"] > .ink-ripple, +*[class$="-light"] > .ink-ripple, +*[class$="-stable"] > .ink-ripple, +*[class$="-100"] > .ink-ripple, +.list .ink-ripple, +.ink-dark .ink-ripple { + background-color: rgba(0, 0, 0, 0.2); +} + +.tab-item { + position: relative; /* for Ink */ +} \ No newline at end of file diff --git a/www/lib/ionic-material/src/scss/overrides/ionic.scss b/www/lib/ionic-material/src/scss/overrides/ionic.scss new file mode 100644 index 0000000..0a44742 --- /dev/null +++ b/www/lib/ionic-material/src/scss/overrides/ionic.scss @@ -0,0 +1,993 @@ +/* Ionic Overrides +==================================*/ +* { + font-family: "RobotoDraft","Roboto","Helvetica Neue", "Segoe UI", sans-serif; +} + +.rounded { + border-radius: 4px; +} + +a { cursor: pointer; } + +.has-header.expanded { /* Expanded modifier */ + top: 76px; +} + + +/* Bar Overrides +==================================*/ +.bar { + border-bottom: none; + padding: 0; +} +.bar .button { + min-height: 44px; + min-width: 44px; + max-width: 48px; + margin-bottom: 0; + max-height: 44px; + width: 48px; +} +.bar .title + .buttons.buttons-right { + right: 0; + top: 0; +} + + +/* Title Overrides +==================================*/ +.title-left, +.title.title-left { + left: 48px; +} + +.title-right, +.title.title-right { + left: 48px; +} + + +/* Background Colors +==================================*/ +.positive-bg, +.button-positive, +.bar .button-positive, +.header-positive, +.button-bar-positive, +.bar-positive, +.positive-border, +.positive-bg:hover, +.bar .button-positive:hover, +.button-positive:hover, +.header-positive:hover, +.button-bar-positive:hover, +.bar-positive:hover, +.positive-border:hover, +.positive-bg:active, +.bar .button-positive:active, +.button-positive:active, +.header-positive:active, +.button-bar-positive:active, +.bar-positive:active, +.positive-border:active, +.positive-bg.activated, +.bar .button-positive.activated, +.button-positive.activated, +.header-positive.activated, +.button-bar-positive.activated, +.bar-positive.activated, +.positive-border.activated { + background-color: #3F51B5; + color: #fff; +} +.positive-900-bg, +.button-positive-900, +.bar .button-positive-900, +.header-positive-900, +.button-bar-positive-900, +.bar-positive-900, +.positive-900-border, +.positive-900-bg:hover, +.button-positive-900:hover, +.bar .button-positive-900:hover, +.header-positive-900:hover, +.button-bar-positive-900:hover, +.bar-positive-900:hover, +.positive-900-border:hover, +.positive-900-bg:active, +.bar .button-positive-900:active, +.button-positive-900:active, +.header-positive-900:active, +.button-bar-positive-900:active, +.bar-positive-900:active, +.positive-900-border:active, +.positive-900-bg.activated, +.button-positive-900.activated, +.bar .button-positive-900.activated, +.header-positive-900.activated, +.button-bar-positive-900.activated, +.bar-positive-900.activated, +.positive-900-border.activated { + background-color: #1A237E; + color: #fff; +} +.positive-100-bg, +.button-positive-100, +.bar .button-positive-100, +.header-positive-100, +.button-bar-positive-100, +.bar-positive-100, +.positive-100-border, +.positive-100-bg:hover, +.button-positive-100:hover, +.bar .button-positive-100:hover, +.header-positive-100:hover, +.button-bar-positive-100:hover, +.bar-positive-100:hover, +.positive-100-border:hover, +.positive-100-bg:active, +.button-positive-100:active, +.bar .button-positive-100:active, +.header-positive-100:active, +.button-bar-positive-100:active, +.bar-positive-100:active, +.positive-100-border:active, +.positive-100-bg.activated, +.button-positive-100.activated, +.bar .button-positive-100.activated, +.header-positive-100.activated, +.button-bar-positive-100.activated, +.bar-positive-100.activated, +.positive-100-border.activated { + background-color: #C5CAE9; + color: #fff; +} +.calm-bg, +.button-calm, +.bar .button-calm, +.header-calm, +.button-bar-calm, +.bar-calm, +.calm-border, +.calm-bg:hover, +.button-calm:hover, +.bar .button-calm:hover, +.header-calm:hover, +.button-bar-calm:hover, +.bar-calm:hover, +.calm-border:hover, +.calm-bg:active, +.button-calm:active, +.bar .button-calm:active, +.header-calm:active, +.button-bar-calm:active, +.bar-calm:active, +.calm-border:active, +.calm-bg.activated, +.button-calm.activated, +.bar .button-calm.activated, +.header-calm.activated, +.button-bar-calm.activated, +.bar-calm.activated, +.calm-border.activated { + background-color: #2196F3; + color: #fff; +} +.calm-900-bg, +.button-calm-900, +.bar .button-calm-900, +.header-calm-900, +.button-bar-calm-900, +.bar-calm-900, +.calm-900-border, +.calm-900-bg:hover, +.button-calm-900:hover, +.bar .button-calm-900:hover, +.header-calm-900:hover, +.button-bar-calm-900:hover, +.bar-calm-900:hover, +.calm-900-border:hover, +.calm-900-bg:active, +.button-calm-900:active, +.bar .button-calm-900:active, +.header-calm-900:active, +.button-bar-calm-900:active, +.bar-calm-900:active, +.calm-900-border:active, +.calm-900-bg.activated, +.button-calm-900.activated, +.bar .button-calm-900.activated, +.header-calm-900.activated, +.button-bar-calm-900.activated, +.bar-calm-900.activated, +.calm-900-border.activated { + background-color: #0D47A1; + color: #fff; +} +.calm-100-bg, +.button-calm-100, +.bar .button-calm-100, +.header-calm-100, +.button-bar-calm-100, +.bar-calm-100, +.calm-100-border, +.calm-100-bg:hover, +.button-calm-100:hover, +.bar .button-calm-100:hover, +.header-calm-100:hover, +.button-bar-calm-100:hover, +.bar-calm-100:hover, +.calm-100-border:hover, +.calm-100-bg:active, +.button-calm-100:active, +.bar .button-calm-100:active, +.header-calm-100:active, +.button-bar-calm-100:active, +.bar-calm-100:active, +.calm-100-border:active, +.calm-100-bg.activated, +.button-calm-100.activated, +.bar .button-calm-100.activated, +.header-calm-100.activated, +.button-bar-calm-100.activated, +.bar-calm-100.activated, +.calm-100-border.activated { + background-color: #BBDEFB; + color: #fff; +} +.royal-bg, +.button-royal, +.bar .button-royal, +.header-royal, +.button-bar-royal, +.bar-royal, +.royal-border, +.royal-bg:hover, +.button-royal:hover, +.bar .button-royal:hover, +.header-royal:hover, +.button-bar-royal:hover, +.bar-royal:hover, +.royal-border:hover, +.royal-bg:active, +.button-royal:active, +.bar .button-royal:active, +.header-royal:active, +.button-bar-royal:active, +.bar-royal:active, +.royal-border:active, +.royal-bg.activated, +.button-royal.activated, +.bar .button-royal.activated, +.header-royal.activated, +.button-bar-royal.activated, +.bar-royal.activated, +.royal-border.activated { + background-color: #673AB7; + color: #fff; +} +.royal-900-bg, +.button-royal-900, +.bar .button-royal-900, +.header-royal-900, +.button-bar-royal-900, +.bar-royal-900, +.royal-900-border, +.royal-900-bg:hover, +.button-royal-900:hover, +.bar .button-royal-900:hover, +.header-royal-900:hover, +.button-bar-royal-900:hover, +.bar-royal-900:hover, +.royal-900-border:hover, +.royal-900-bg:active, +.button-royal-900:active, +.bar .button-royal-900:active, +.header-royal-900:active, +.button-bar-royal-900:active, +.bar-royal-900:active, +.royal-900-border:active, +.royal-900-bg.activated, +.button-royal-900.activated, +.bar .button-royal-900.activated, +.header-royal-900.activated, +.button-bar-royal-900.activated, +.bar-royal-900.activated, +.royal-900-border.activated { + background-color: #311B92; + color: #fff; +} +.royal-100-bg, +.button-royal-100, +.bar .button-royal-100, +.header-royal-100, +.button-bar-royal-100, +.bar-royal-100, +.royal-100-border, +.royal-100-bg:hover, +.button-royal-100:hover, +.bar .button-royal-100:hover, +.header-royal-100:hover, +.button-bar-royal-100:hover, +.bar-royal-100:hover, +.royal-100-border:hover, +.royal-100-bg:active, +.button-royal-100:active, +.bar .button-royal-100:active, +.header-royal-100:active, +.button-bar-royal-100:active, +.bar-royal-100:active, +.royal-100-border:active, +.royal-100-bg.activated, +.button-royal-100.activated, +.bar .button-royal-100.activated, +.header-royal-100.activated, +.button-bar-royal-100.activated, +.bar-royal-100.activated, +.royal-100-border.activated { + background-color: #D1C4E9; + color: #fff; +} +.balanced-bg, +.button-balanced, +.bar .button-balanced, +.header-balanced, +.button-bar-balanced, +.bar-balanced, +.balanced-border, +.balanced-bg:hover, +.button-balanced:hover, +.bar .button-balanced:hover, +.header-balanced:hover, +.button-bar-balanced:hover, +.bar-balanced:hover, +.balanced-border:hover, +.balanced-bg:active, +.button-balanced:active, +.bar .button-balanced:active, +.header-balanced:active, +.button-bar-balanced:active, +.bar-balanced:active, +.balanced-border:active, +.balanced-bg.activated, +.button-balanced.activated, +.bar .button-balanced.activated, +.header-balanced.activated, +.button-bar-balanced.activated, +.bar-balanced.activated, +.balanced-border.activated { + background-color: #4CAF50; + color: #fff; +} +.balanced-900-bg, +.button-balanced-900, +.bar .button-balanced-900, +.header-balanced-900, +.button-bar-balanced-900, +.bar-balanced-900, +.balanced-900-border, +.balanced-900-bg:hover, +.button-balanced-900:hover, +.bar .button-balanced-900:hover, +.header-balanced-900:hover, +.button-bar-balanced-900:hover, +.bar-balanced-900:hover, +.balanced-900-border:hover, +.balanced-900-bg:active, +.button-balanced-900:active, +.bar .button-balanced-900:active, +.header-balanced-900:active, +.button-bar-balanced-900:active, +.bar-balanced-900:active, +.balanced-900-border:active, +.balanced-900-bg.activated, +.button-balanced-900.activated, +.bar .button-balanced-900.activated, +.header-balanced-900.activated, +.button-bar-balanced-900.activated, +.bar-balanced-900.activated, +.balanced-900-border.activated { + background-color: #1B5E20; + color: #fff; +} +.balanced-100-bg, +.button-balanced-100, +.bar .button-balanced-100, +.header-balanced-100, +.button-bar-balanced-100, +.bar-balanced-100, +.balanced-100-border, +.balanced-100-bg:hover, +.button-balanced-100:hover, +.bar .balanced-100-bg:hover, +.header-balanced-100:hover, +.button-bar-balanced-100:hover, +.bar-balanced-100:hover, +.balanced-100-border:hover, +.balanced-100-bg:active, +.button-balanced-100:active, +.bar .button-balanced-100:active, +.header-balanced-100:active, +.button-bar-balanced-100:active, +.bar-balanced-100:active, +.balanced-100-border:active, +.balanced-100-bg.activated, +.button-balanced-100.activated, +.bar .button-balanced-100.activated, +.header-balanced-100.activated, +.button-bar-balanced-100.activated, +.bar-balanced-100.activated, +.balanced-100-border.activated { + background-color: #C8E6C9; + color: #fff; +} +.energized-bg, +.button-energized, +.bar .button-energized, +.header-energized, +.button-bar-energized, +.bar-energized, +.energized-border, +.energized-bg:hover, +.button-energized:hover, +.bar .button-energized:hover, +.header-energized:hover, +.button-bar-energized:hover, +.bar-energized:hover, +.energized-border:hover, +.energized-bg:active, +.button-energized:active, +.bar .button-energized:active, +.header-energized:active, +.button-bar-energized:active, +.bar-energized:active, +.energized-border:active, +.energized-bg.activated, +.button-energized.activated, +.bar .button-energized.activated, +.header-energized.activated, +.button-bar-energized.activated, +.bar-energized.activated, +.energized-border.activated { + background-color: #FF9800; + color: #fff; +} +.energized-900-bg, +.button-energized-900, +.bar .button-energized-900, +.header-energized-900, +.button-bar-energized-900, +.bar-energized-900, +.energized-900-border, +.energized-900-bg:hover, +.button-energized-900:hover, +.bar .button-energized-900:hover, +.header-energized-900:hover, +.button-bar-energized-900:hover, +.bar-energized-900:hover, +.energized-900-border:hover, +.energized-900-bg:active, +.button-energized-900:active, +.bar .button-energized-900:active, +.header-energized-900:active, +.button-bar-energized-900:active, +.bar-energized-900:active, +.energized-900-border:active, +.energized-900-bg.activated, +.button-energized-900.activated, +.bar .button-energized-900.activated, +.header-energized-900.activated, +.button-bar-energized-900.activated, +.bar-energized-900.activated, +.energized-900-border.activated { + background-color: #E65100; + color: #fff; +} +.energized-100-bg, +.button-energized-100, +.bar .button-energized-100, +.header-energized-100, +.button-bar-energized-100, +.bar-energized-100, +.energized-100-border, +.energized-100-bg:hover, +.button-energized-100:hover, +.bar .button-energized-100:hover, +.header-energized-100:hover, +.button-bar-energized-100:hover, +.bar-energized-100:hover, +.energized-100-border:hover, +.energized-100-bg:active, +.button-energized-100:active, +.bar .button-energized-100:active, +.header-energized-100:active, +.button-bar-energized-100:active, +.bar-energized-100:active, +.energized-100-border:active, +.energized-100-bg.activated, +.button-energized-100.activated, +.bar .button-energized-100.activated, +.header-energized-100.activated, +.button-bar-energized-100.activated, +.bar-energized-100.activated, +.energized-100-border.activated { + background-color: #FFE0B2; +} +.assertive-bg, +.button-assertive, +.bar .button-assertive, +.header-assertive, +.button-bar-assertive, +.bar-assertive, +.assertive-border, +.assertive-bg:hover, +.button-assertive:hover, +.bar .button-assertive:hover, +.header-assertive:hover, +.button-bar-assertive:hover, +.bar-assertive:hover, +.assertive-border:hover, +.assertive-bg:active, +.button-assertive:active, +.bar .button-assertive:active, +.header-assertive:active, +.button-bar-assertive:active, +.bar-assertive:active, +.assertive-border:active, +.assertive-bg.activated, +.button-assertive.activated, +.bar .button-assertive.activated, +.header-assertive.activated, +.button-bar-assertive.activated, +.bar-assertive.activated, +.assertive-border.activated { + background-color: #F44336; + color: #fff; +} +.assertive-900-bg, +.button-assertive-900, +.bar .button-assertive-900, +.header-assertive-900, +.button-bar-assertive-900, +.bar-assertive-900, +.assertive-900-border, +.assertive-900-bg:hover, +.button-assertive-900:hover, +.bar .button-assertive-900:hover, +.header-assertive-900:hover, +.button-bar-assertive-900:hover, +.bar-assertive-900:hover, +.assertive-900-border:hover, +.assertive-900-bg:active, +.button-assertive-900:active, +.bar .button-assertive-900:active, +.header-assertive-900:active, +.button-bar-assertive-900:active, +.bar-assertive-900:active, +.assertive-900-border:active, +.assertive-900-bg.activated, +.button-assertive-900.activated, +.bar .button-assertive-900.activated, +.header-assertive-900.activated, +.button-bar-assertive-900.activated, +.bar-assertive-900.activated, +.assertive-900-border.activated { + background-color: #B71C1C; + color: #fff; +} +.assertive-100-bg, +.button-assertive-100, +.bar .button-assertive-100, +.header-assertive-100, +.button-bar-assertive-100, +.bar-assertive-100, +.assertive-100-border, +.assertive-100-bg:hover, +.button-assertive-100:hover, +.bar .button-assertive-100:hover, +.header-assertive-100:hover, +.button-bar-assertive-100:hover, +.bar-assertive-100:hover, +.assertive-100-border:hover, +.assertive-100-bg:active, +.button-assertive-100:active, +.bar .button-assertive-100:active, +.header-assertive-100:active, +.button-bar-assertive-100:active, +.bar-assertive-100:active, +.assertive-100-border:active, +.assertive-100-bg.activated, +.bar .button-assertive-100.activated, +.button-assertive-100.activated, +.header-assertive-100.activated, +.button-bar-assertive-100.activated, +.bar-assertive-100.activated, +.assertive-100-border.activated { + background-color: #FFCDD2; + color: #fff; +} +.stable-bg, +.button-stable, +.bar .button-stable, +.header-stable, +.button-bar-stable, +.bar-stable, +.stable-border, +.stable-bg:hover, +.button-stable:hover, +.bar .button-stable:hover, +.header-stable:hover, +.button-bar-stable:hover, +.bar-stable:hover, +.stable-border:hover, +.stable-bg:active, +.button-stable:active, +.bar .button-stable:active, +.header-stable:active, +.button-bar-stable:active, +.bar-stable:active, +.stable-border:active, +.stable-bg.activated, +.button-stable.activated, +.bar .button-stable.activated, +.header-stable.activated, +.button-bar-stable.activated, +.bar-stable.activated, +.stable-border.activated { + background-color: #E0E0E0; + color: #fff; +} + +/* Text Colors +==================================*/ +.positive, +.positive *, +*.positive, +.positive:hover, +.positive:hover *, +*.positive:hover, +.positive:active, +.positive:active *, +*.positive:active { + color: #3F51B5; +} +.positive-900, +.positive-900 *, +*.positive-900, +.positive-900:hover, +.positive-900:hover *, +*.positive-900:hover, +.positive-900:active, +.positive-900:active *, +*.positive-900:active { + color: #3F51B5; +} +.positive-100, +.positive-100 *, +*.positive-100, +.positive-100:hover, +.positive-100:hover *, +*.positive-100:hover, +.positive-100:active, +.positive-100:active *, +*.positive-100:active { + color: #C5CAE9; +} +.calm-100, +.calm-100 *, +*.calm-100, +.calm-100:hover, +.calm-100:hover *, +*.calm-100:hover, +.calm-100:active, +.calm-100:active *, +*.calm-100:active { + color: #2196F3; +} +.calm-900, +.calm-900 *, +*.calm-900, +.calm-900:hover, +.calm-900:hover *, +*.calm-900:hover, +.calm-900:active, +.calm-900:active *, +*.calm-900:active { + color: #0D47A1; +} +.calm-100, +.calm-100 *, +*.calm-100, +.calm-100:hover, +.calm-100:hover *, +*.calm-100:hover, +.calm-100:active, +.calm-100:active *, +*.calm-100:active { + color: #BBDEFB; +} +.royal, +.royal *, +*.royal, +.royal:hover, +.royal:hover *, +*.royal:hover, +.royal:active, +.royal:active *, +*.royal:active { + color: #673AB7; +} +.royal-900, +.royal-900 *, +*.royal-900, +.royal-900:hover, +.royal-900:hover *, +*.royal-900:hover, +.royal-900:active, +.royal-900:active *, +*.royal-900:active { + color: #311B92; +} +.royal-100, +.royal-100 *, +*.royal-100, +.royal-100:hover, +.royal-100:hover *, +*.royal-100:hover, +.royal-100:active, +.royal-100:active *, +*.royal-100:active { + color: #D1C4E9; +} +.balanced, +.balanced *, +*.balanced, +.balanced:hover, +.balanced:hover *, +*.balanced:hover, +.balanced:active, +.balanced:active *, +*.balanced:active { + color: #4CAF50; +} +.balanced-900, +.balanced-900 *, +*.balanced-900, +.balanced-900:hover, +.balanced-900:hover *, +*.balanced-900:hover, +.balanced-900:active, +.balanced-900:active *, +*.balanced-900:active { + color: #1B5E20; +} +.balanced-100, +.balanced-100 *, +*.balanced-100, +.balanced-100:hover, +.balanced-100:hover *, +*.balanced-100:hover, +.balanced-100:active, +.balanced-100:active *, +*.balanced-100:active { + color: #C8E6C9; +} +.energized, +.energized *, +*.energized, +.energized:hover, +.energized:hover *, +*.energized:hover, +.energized:active, +.energized:active *, +*.energized:active { + color: #FF9800; +} +.energized-900, +.energized-900 *, +*.energized-900, +.energized-900:hover, +.energized-900:hover *, +*.energized-900:hover, +.energized-900:active, +.energized-900:active *, +*.energized-900:active { + color: #E65100; +} +.energized-100, +.energized-100 *, +*.energized-100, +.energized-100:hover, +.energized-100:hover *, +*.energized-100:hover, +.energized-100:active, +.energized-100:active *, +*.energized-100:active { + color: #FFE0B2; +} +.assertive, +.assertive *, +*.assertive, +.assertive:hover, +.assertive:hover *, +*.assertive:hover, +.assertive:active, +.assertive:active *, +*.assertive:active { + color: #F44336; +} +.assertive-900, +.assertive-900 *, +*.assertive-900, +.assertive-900:hover, +.assertive-900:hover *, +*.assertive-900:hover, +.assertive-900:active, +.assertive-900:active *, +*.assertive-900:active { + color: #B71C1C; +} +.assertive-100, +.assertive-100 *, +*.assertive-100, +.assertive-100:hover, +.assertive-100:hover *, +*.assertive-100:hover, +.assertive-100:active, +.assertive-100:active *, +*.assertive-100:active { + color: #FFCDD2; +} +.stable, +.stable *, +*.stable, +.stable:hover, +.stable:hover *, +*.stable:hover, +.stable:active, +.stable:active *, +*.stable:active { + color: #E0E0E0; +} +.light, +.light *, +*.light, +.light:hover, +.light:hover *, +*.light:hover, +.light:active, +.light:active *, +*.light:active { + color: #fff; +} +.dark, +.dark *, +*.dark, +.dark:hover, +.dark:hover *, +*.dark:hover, +.dark:active, +.dark:active *, +*.dark:active { + color: #444; +} + + + + + + + +.light-border { + border-color: #ddd; +} + +.navbar-default .navbar-nav > li > a { + margin: 0; + padding-right: 26px; + padding-left: 26px; + border-top: 3px solid transparent; + color: #BFD5C9; + opacity: 1; +} + + + +/* Mid-Bar +==================================*/ +.mid-bar { + padding: 16px; +} + +.mid-bar h1, +.mid-bar h2, +.mid-bar h3, +.mid-bar h4, +.mid-bar h5, +.mid-bar h6 { + color: #fff; + margin-bottom: 5px; +} + +.mid-bar p { + color: rgba(255, 255, 255, 0.5); + margin-bottom: 0; +} + + +/* Item +==================================*/ +.item-avatar, +.item-avatar .item-content, +.item-avatar-left, +.item-avatar-left .item-content, +.card > .item-avatar { + padding-left: 95px; +} + +.item, +.item-complex .item-content, +.item-radio .item-content { + background-color: transparent; +} + +.dark-bg h2, +.item.dark-bg h2 { + color: #fff; +} + +.tabs-striped .tabs { + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); +} + +.bar .button.button-clear { + color: #fff; +} + +.bar .button.button-icon .icon:before, +.bar .button.button-icon.icon-left:before, +.bar .button.button-icon.icon-right:before, +.bar .button.button-icon:before { + vertical-align: top; + font-size: 24px; +} + +.menu { + background-color: transparent; +} + +.button-icon.button.active, +.button-icon.button.activated { + opacity: initial; +} + + +/* Popover +==================================*/ +.popover { + opacity: 0; + position: absolute; + right: 8px; + transform: translate(50%, -50%) scale(0,0); + transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; + top: 8px; +} +.popover.ng-enter { + opacity: 1; + transform: translate(0, -14px) scale(1,1); + transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; +} + +.popover.ng-leave { + opacity: 0; + transform: translate(50%, -50%) scale(0,0); + transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; +} + + +/* Button +==================================*/ +.button { + overflow: hidden !important; +} diff --git a/www/lib/ionic-material/webpack.config.js b/www/lib/ionic-material/webpack.config.js new file mode 100644 index 0000000..d81fd2c --- /dev/null +++ b/www/lib/ionic-material/webpack.config.js @@ -0,0 +1,31 @@ +const webpack = require('webpack'); +const path = require('path'); +const uglifyPlugin = new webpack.optimize.UglifyJsPlugin(); + +var bowerComponentsPath = path.join(__dirname, '/bower_components'); + +module.exports = { + context: __dirname, + entry: './src/js/ionic-material.js', + output: { + libraryTarget: 'umd', + library: 'ionicMaterial', + path: __dirname + '/dist', + filename: 'ionic.material.js', + sourceMapFilename: 'ionic.material.min.js.map' + }, + resolve: { + alias: { + waves: path.join(bowerComponentsPath, 'waves/dist/waves.js') + } + }, + externals:{ + 'angular': 'angular', + 'ionic': 'ionic' + }, + plugins: [ + // uglifyPlugin + ], + target : 'web', + devtool: 'source-map' +}; diff --git a/www/lib/robotodraft/.bower.json b/www/lib/robotodraft/.bower.json new file mode 100644 index 0000000..df8aa88 --- /dev/null +++ b/www/lib/robotodraft/.bower.json @@ -0,0 +1,25 @@ +{ + "name": "robotodraft", + "version": "1.1.0", + "homepage": "https://github.com/raibutera/robotodraft", + "authors": [ + "FontFaceKit", + "Rai Butera" + ], + "description": "Google's 'RobotoDraft' version of Google's Roboto Font", + "main": "robotodraft.scss", + "keywords": [ + "scss" + ], + "license": "Apache 2.0", + "_release": "1.1.0", + "_resolution": { + "type": "version", + "tag": "1.1.0", + "commit": "4675ea9650a26d4a786e668ba2ed937a7a0eeb3c" + }, + "_source": "https://github.com/raibutera/robotodraft.git", + "_target": "^1.1.0", + "_originalSource": "robotodraft", + "_direct": true +} \ No newline at end of file diff --git a/www/lib/robotodraft/.gitignore b/www/lib/robotodraft/.gitignore new file mode 100644 index 0000000..ffa609f --- /dev/null +++ b/www/lib/robotodraft/.gitignore @@ -0,0 +1,157 @@ +#################################### +## OSX +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +#################################### +## editors (webstorm etc) +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + +# cache files for sublime text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# workspace files are user-specific +*.sublime-workspace + +# project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using SublimeText +# *.sublime-project + +# sftp configuration file +sftp-config.json + +#################################### +## node.js +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +#################################### +## client-side JS +bower_components + +## generator-angular-famous-ionic +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage/ +# Reports directory used by tools like protractor +reports/ + + +# Temp directories +temp/ +test/tmp +test/temp + +# Other temp +.sass-cache +.grunt + +# Build +.tmp +#################################### diff --git a/www/lib/robotodraft/README.md b/www/lib/robotodraft/README.md new file mode 100644 index 0000000..de3be47 --- /dev/null +++ b/www/lib/robotodraft/README.md @@ -0,0 +1,12 @@ +# RobotoDraft @font-face kit + +I split the SASS file, so the developer can decide which fonts and styles he really needs. + +## Demo +__Our repository:__ [http://fontfacekit.github.com/robotodraft](http://fontfacekit.github.com/robotodraft) + +__Google Web Fonts:__ [http://fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en](http://fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en) + + +## Maintain your own font-face in FontFaceKit +Contact @gustavohenke if you want to maintain your own font-face in this repository. diff --git a/www/lib/robotodraft/bower.json b/www/lib/robotodraft/bower.json new file mode 100644 index 0000000..2cf45b0 --- /dev/null +++ b/www/lib/robotodraft/bower.json @@ -0,0 +1,15 @@ +{ + "name": "robotodraft", + "version": "1.1.0", + "homepage": "https://github.com/raibutera/robotodraft", + "authors": [ + "FontFaceKit", + "Rai Butera" + ], + "description": "Google's 'RobotoDraft' version of Google's Roboto Font", + "main": "robotodraft.scss", + "keywords": [ + "scss" + ], + "license": "Apache 2.0" +} diff --git a/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.eot b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.eot new file mode 100644 index 0000000..90f63af Binary files /dev/null and b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.eot differ diff --git a/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.svg b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.svg new file mode 100644 index 0000000..ee86b03 --- /dev/null +++ b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.ttf b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.ttf new file mode 100644 index 0000000..bd7cde8 Binary files /dev/null and b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.ttf differ diff --git a/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.woff b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.woff new file mode 100644 index 0000000..aca865b Binary files /dev/null and b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.woff differ diff --git a/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.woff2 b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.woff2 new file mode 100644 index 0000000..9c7d849 Binary files /dev/null and b/www/lib/robotodraft/fonts/Black/RobotoDraft-Black.woff2 differ diff --git a/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.eot b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.eot new file mode 100644 index 0000000..4b5fe00 Binary files /dev/null and b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.eot differ diff --git a/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.svg b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.svg new file mode 100644 index 0000000..8e75916 --- /dev/null +++ b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.ttf b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.ttf new file mode 100644 index 0000000..41821dc Binary files /dev/null and b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.ttf differ diff --git a/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.woff b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.woff new file mode 100644 index 0000000..1e71acf Binary files /dev/null and b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.woff differ diff --git a/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.woff2 b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.woff2 new file mode 100644 index 0000000..1cb06f8 Binary files /dev/null and b/www/lib/robotodraft/fonts/Bold/RobotoDraft-Bold.woff2 differ diff --git a/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.eot b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.eot new file mode 100644 index 0000000..e63e573 Binary files /dev/null and b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.eot differ diff --git a/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.svg b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.svg new file mode 100644 index 0000000..72288ae --- /dev/null +++ b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.ttf b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.ttf new file mode 100644 index 0000000..b53a84a Binary files /dev/null and b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.ttf differ diff --git a/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.woff b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.woff new file mode 100644 index 0000000..d04c5e0 Binary files /dev/null and b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.woff differ diff --git a/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.woff2 b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.woff2 new file mode 100644 index 0000000..bdcf792 Binary files /dev/null and b/www/lib/robotodraft/fonts/BoldItalic/RobotoDraft-BoldItalic.woff2 differ diff --git a/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.eot b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.eot new file mode 100644 index 0000000..5262888 Binary files /dev/null and b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.eot differ diff --git a/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.svg b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.svg new file mode 100644 index 0000000..a5fc77f --- /dev/null +++ b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.ttf b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.ttf new file mode 100644 index 0000000..81a268a Binary files /dev/null and b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.ttf differ diff --git a/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.woff b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.woff new file mode 100644 index 0000000..c8bbf8c Binary files /dev/null and b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.woff differ diff --git a/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.woff2 b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.woff2 new file mode 100644 index 0000000..ce9f9d0 Binary files /dev/null and b/www/lib/robotodraft/fonts/Italic/RobotoDraft-Italic.woff2 differ diff --git a/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.eot b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.eot new file mode 100644 index 0000000..830eb79 Binary files /dev/null and b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.eot differ diff --git a/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.svg b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.svg new file mode 100644 index 0000000..bfc8613 --- /dev/null +++ b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.ttf b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.ttf new file mode 100644 index 0000000..6b59410 Binary files /dev/null and b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.ttf differ diff --git a/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.woff b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.woff new file mode 100644 index 0000000..1030581 Binary files /dev/null and b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.woff differ diff --git a/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.woff2 b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.woff2 new file mode 100644 index 0000000..8047ab7 Binary files /dev/null and b/www/lib/robotodraft/fonts/Light/RobotoDraft-Light.woff2 differ diff --git a/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.eot b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.eot new file mode 100644 index 0000000..5a8cca7 Binary files /dev/null and b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.eot differ diff --git a/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.svg b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.svg new file mode 100644 index 0000000..b47fa7d --- /dev/null +++ b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.ttf b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.ttf new file mode 100644 index 0000000..47aa32f Binary files /dev/null and b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.ttf differ diff --git a/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.woff b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.woff new file mode 100644 index 0000000..cd66cbf Binary files /dev/null and b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.woff differ diff --git a/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.woff2 b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.woff2 new file mode 100644 index 0000000..064aec3 Binary files /dev/null and b/www/lib/robotodraft/fonts/Medium/RobotoDraft-Medium.woff2 differ diff --git a/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.eot b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.eot new file mode 100644 index 0000000..90e4fb8 Binary files /dev/null and b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.eot differ diff --git a/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.svg b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.svg new file mode 100644 index 0000000..0eee1c6 --- /dev/null +++ b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.ttf b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.ttf new file mode 100644 index 0000000..ce967de Binary files /dev/null and b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.ttf differ diff --git a/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.woff b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.woff new file mode 100644 index 0000000..adf2519 Binary files /dev/null and b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.woff differ diff --git a/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.woff2 b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.woff2 new file mode 100644 index 0000000..969d499 Binary files /dev/null and b/www/lib/robotodraft/fonts/Regular/RobotoDraft-Regular.woff2 differ diff --git a/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.eot b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.eot new file mode 100644 index 0000000..612dcb8 Binary files /dev/null and b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.eot differ diff --git a/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.svg b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.svg new file mode 100644 index 0000000..fa3a473 --- /dev/null +++ b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.ttf b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.ttf new file mode 100644 index 0000000..22eff2f Binary files /dev/null and b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.ttf differ diff --git a/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.woff b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.woff new file mode 100644 index 0000000..fae08e8 Binary files /dev/null and b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.woff differ diff --git a/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.woff2 b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.woff2 new file mode 100644 index 0000000..13d1094 Binary files /dev/null and b/www/lib/robotodraft/fonts/Thin/RobotoDraft-Thin.woff2 differ diff --git a/www/lib/robotodraft/index.html b/www/lib/robotodraft/index.html new file mode 100644 index 0000000..f413946 --- /dev/null +++ b/www/lib/robotodraft/index.html @@ -0,0 +1,70 @@ + + + + RobotoDraft @font-face demo + + + + + +

RobotoDraft @font-face demo

+ + Thin 100 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Light 300 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Regular 400 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Regular 400 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Medium 500 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Bold 700 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Bold 700 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + Black 900 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789ÄäÖöÜüẞß +
+ + + \ No newline at end of file diff --git a/www/lib/robotodraft/less/.gitignore b/www/lib/robotodraft/less/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/www/lib/robotodraft/less/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/www/lib/robotodraft/robotodraft.css b/www/lib/robotodraft/robotodraft.css new file mode 100644 index 0000000..172de7d --- /dev/null +++ b/www/lib/robotodraft/robotodraft.css @@ -0,0 +1,78 @@ +/* BEGIN Thin */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Thin/RobotoDraft-Thin.woff2?v=1.0.0") format("woff2"), url("./fonts/Thin/RobotoDraft-Thin.woff?v=1.0.0") format("woff"), url("./fonts/Thin/RobotoDraft-Thin.ttf?v=1.0.0") format("truetype"); + font-weight: 100; + font-style: normal; } +/* END Thin */ +/* BEGIN Light */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Light/RobotoDraft-Light.woff2?v=1.0.0") format("woff2"), url("./fonts/Light/RobotoDraft-Light.woff?v=1.0.0") format("woff"), url("./fonts/Light/RobotoDraft-Light.ttf?v=1.0.0") format("truetype"); + font-weight: 300; + font-style: normal; } +/* END Light */ +/* BEGIN Regular */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Regular/RobotoDraft-Regular.woff2?v=1.0.0") format("woff2"), url("./fonts/Regular/RobotoDraft-Regular.woff?v=1.0.0") format("woff"), url("./fonts/Regular/RobotoDraft-Regular.ttf?v=1.0.0") format("truetype"); + font-weight: 400; + font-style: normal; } +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Regular/RobotoDraft-Regular.woff2?v=1.0.0") format("woff2"), url("./fonts/Regular/RobotoDraft-Regular.woff?v=1.0.0") format("woff"), url("./fonts/Regular/RobotoDraft-Regular.ttf?v=1.0.0") format("truetype"); + font-weight: normal; + font-style: normal; } +/* END Regular */ +/* BEGIN Italic */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Italic/RobotoDraft-Italic.woff2?v=1.0.0") format("woff2"), url("./fonts/Italic/RobotoDraft-Italic.woff?v=1.0.0") format("woff"), url("./fonts/Italic/RobotoDraft-Italic.ttf?v=1.0.0") format("truetype"); + font-weight: 400; + font-style: italic; } +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Italic/RobotoDraft-Italic.woff2?v=1.0.0") format("woff2"), url("./fonts/Italic/RobotoDraft-Italic.woff?v=1.0.0") format("woff"), url("./fonts/Italic/RobotoDraft-Italic.ttf?v=1.0.0") format("truetype"); + font-weight: normal; + font-style: italic; } +/* END Italic */ +/* BEGIN Medium */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Medium/RobotoDraft-Medium.woff2?v=1.0.0") format("woff2"), url("./fonts/Medium/RobotoDraft-Medium.woff?v=1.0.0") format("woff"), url("./fonts/Medium/RobotoDraft-Medium.ttf?v=1.0.0") format("truetype"); + font-weight: 500; + font-style: normal; } +/* END Medium */ +/* BEGIN Bold */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Bold/RobotoDraft-Bold.woff2?v=1.0.0") format("woff2"), url("./fonts/Bold/RobotoDraft-Bold.woff?v=1.0.0") format("woff"), url("./fonts/Bold/RobotoDraft-Bold.ttf?v=1.0.0") format("truetype"); + font-weight: 700; + font-style: normal; } +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Bold/RobotoDraft-Bold.woff2?v=1.0.0") format("woff2"), url("./fonts/Bold/RobotoDraft-Bold.woff?v=1.0.0") format("woff"), url("./fonts/Bold/RobotoDraft-Bold.ttf?v=1.0.0") format("truetype"); + font-weight: bold; + font-style: normal; } +/* END Bold */ +/* BEGIN Bold Italic */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/BoldItalic/RobotoDraft-BoldItalic.woff2?v=1.0.0") format("woff2"), url("./fonts/BoldItalic/RobotoDraft-BoldItalic.woff?v=1.0.0") format("woff"), url("./fonts/BoldItalic/RobotoDraft-BoldItalic.ttf?v=1.0.0") format("truetype"); + font-weight: 700; + font-style: italic; } +@font-face { + font-family: RobotoDraft; + src: url("./fonts/BoldItalic/RobotoDraft-BoldItalic.woff2?v=1.0.0") format("woff2"), url("./fonts/BoldItalic/RobotoDraft-BoldItalic.woff?v=1.0.0") format("woff"), url("./fonts/BoldItalic/RobotoDraft-BoldItalic.ttf?v=1.0.0") format("truetype"); + font-weight: bold; + font-style: italic; } +/* END Bold Italic */ +/* BEGIN Black */ +@font-face { + font-family: RobotoDraft; + src: url("./fonts/Black/RobotoDraft-Black.woff2?v=1.0.0") format("woff2"), url("./fonts/Black/RobotoDraft-Black.woff?v=1.0.0") format("woff"), url("./fonts/Black/RobotoDraft-Black.ttf?v=1.0.0") format("truetype"); + font-weight: 900; + font-style: normal; } +/* END Black */ + +/*# sourceMappingURL=robotodraft.css.map */ diff --git a/www/lib/robotodraft/robotodraft.css.map b/www/lib/robotodraft/robotodraft.css.map new file mode 100644 index 0000000..e62215f --- /dev/null +++ b/www/lib/robotodraft/robotodraft.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AACA,UAKC;EAJA,WAAW,EAAE,WAAW;ECDxB,GAAG,EAAE,yMAAkG;EDGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;;;AEJnB,UAKC;EAJA,WAAW,EAAE,WAAW;EDDxB,GAAG,EAAE,+MAAkG;ECGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;;;ACJnB,UAKC;EAJA,WAAW,EAAE,WAAW;EFDxB,GAAG,EAAE,2NAAkG;EEGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;AAEnB,UAKC;EAJA,WAAW,EAAE,WAAW;EFPxB,GAAG,EAAE,2NAAkG;EESvG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;;;ACVnB,UAKC;EAJA,WAAW,EAAE,WAAW;EHDxB,GAAG,EAAE,qNAAkG;EGGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;AAEnB,UAKC;EAJA,WAAW,EAAE,WAAW;EHPxB,GAAG,EAAE,qNAAkG;EGSvG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;;;ACVnB,UAKC;EAJA,WAAW,EAAE,WAAW;EJDxB,GAAG,EAAE,qNAAkG;EIGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;;;ACJnB,UAKC;EAJA,WAAW,EAAE,WAAW;ELDxB,GAAG,EAAE,yMAAkG;EKGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;AAEnB,UAKC;EAJA,WAAW,EAAE,WAAW;ELPxB,GAAG,EAAE,yMAAkG;EKSvG,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;;;ACVnB,UAKC;EAJA,WAAW,EAAE,WAAW;ENDxB,GAAG,EAAE,6OAAkG;EMGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;AAEnB,UAKC;EAJA,WAAW,EAAE,WAAW;ENPxB,GAAG,EAAE,6OAAkG;EMSvG,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;;;ACVnB,UAKC;EAJA,WAAW,EAAE,WAAW;EPDxB,GAAG,EAAE,+MAAkG;EOGvG,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM", +"sources": ["sass/_Thin.scss","sass/_mixins.scss","sass/_Light.scss","sass/_Regular.scss","sass/_Italic.scss","sass/_Medium.scss","sass/_Bold.scss","sass/_BoldItalic.scss","sass/_Black.scss"], +"names": [], +"file": "robotodraft.css" +} \ No newline at end of file diff --git a/www/lib/robotodraft/robotodraft.scss b/www/lib/robotodraft/robotodraft.scss new file mode 100644 index 0000000..72fa1a8 --- /dev/null +++ b/www/lib/robotodraft/robotodraft.scss @@ -0,0 +1,12 @@ +@import "sass/variables"; +@import "sass/mixins"; + +@import "sass/Thin"; +@import "sass/Light"; +@import "sass/Regular"; +@import "sass/Italic"; +@import "sass/Medium"; +@import "sass/Bold"; +@import "sass/BoldItalic"; +@import "sass/Black"; + diff --git a/www/lib/robotodraft/sass/_Black.scss b/www/lib/robotodraft/sass/_Black.scss new file mode 100644 index 0000000..a6474bc --- /dev/null +++ b/www/lib/robotodraft/sass/_Black.scss @@ -0,0 +1,8 @@ +/* BEGIN Black */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Black"); + font-weight: 900; + font-style: normal; +} +/* END Black */ diff --git a/www/lib/robotodraft/sass/_Bold.scss b/www/lib/robotodraft/sass/_Bold.scss new file mode 100644 index 0000000..d0ba297 --- /dev/null +++ b/www/lib/robotodraft/sass/_Bold.scss @@ -0,0 +1,14 @@ +/* BEGIN Bold */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Bold"); + font-weight: 700; + font-style: normal; +} +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Bold"); + font-weight: bold; + font-style: normal; +} +/* END Bold */ diff --git a/www/lib/robotodraft/sass/_BoldItalic.scss b/www/lib/robotodraft/sass/_BoldItalic.scss new file mode 100644 index 0000000..5cab31e --- /dev/null +++ b/www/lib/robotodraft/sass/_BoldItalic.scss @@ -0,0 +1,14 @@ +/* BEGIN Bold Italic */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "BoldItalic"); + font-weight: 700; + font-style: italic; +} +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "BoldItalic"); + font-weight: bold; + font-style: italic; +} +/* END Bold Italic */ diff --git a/www/lib/robotodraft/sass/_Italic.scss b/www/lib/robotodraft/sass/_Italic.scss new file mode 100644 index 0000000..6c693c0 --- /dev/null +++ b/www/lib/robotodraft/sass/_Italic.scss @@ -0,0 +1,14 @@ +/* BEGIN Italic */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Italic"); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Italic"); + font-weight: normal; + font-style: italic; +} +/* END Italic */ diff --git a/www/lib/robotodraft/sass/_Light.scss b/www/lib/robotodraft/sass/_Light.scss new file mode 100644 index 0000000..8e60841 --- /dev/null +++ b/www/lib/robotodraft/sass/_Light.scss @@ -0,0 +1,8 @@ +/* BEGIN Light */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Light"); + font-weight: 300; + font-style: normal; +} +/* END Light */ \ No newline at end of file diff --git a/www/lib/robotodraft/sass/_Medium.scss b/www/lib/robotodraft/sass/_Medium.scss new file mode 100644 index 0000000..7138e03 --- /dev/null +++ b/www/lib/robotodraft/sass/_Medium.scss @@ -0,0 +1,8 @@ +/* BEGIN Medium */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Medium"); + font-weight: 500; + font-style: normal; +} +/* END Medium */ \ No newline at end of file diff --git a/www/lib/robotodraft/sass/_Regular.scss b/www/lib/robotodraft/sass/_Regular.scss new file mode 100644 index 0000000..5e436f7 --- /dev/null +++ b/www/lib/robotodraft/sass/_Regular.scss @@ -0,0 +1,14 @@ +/* BEGIN Regular */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Regular"); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Regular"); + font-weight: normal; + font-style: normal; +} +/* END Regular */ diff --git a/www/lib/robotodraft/sass/_Thin.scss b/www/lib/robotodraft/sass/_Thin.scss new file mode 100644 index 0000000..1cf894c --- /dev/null +++ b/www/lib/robotodraft/sass/_Thin.scss @@ -0,0 +1,8 @@ +/* BEGIN Thin */ +@font-face { + font-family: RobotoDraft; + @include fontdef-woff($RobotoDraftFontPath, $RobotoDraftFontName, $RobotoDraftFontVersion, "Thin"); + font-weight: 100; + font-style: normal; +} +/* END Thin */ \ No newline at end of file diff --git a/www/lib/robotodraft/sass/_mixins.scss b/www/lib/robotodraft/sass/_mixins.scss new file mode 100644 index 0000000..3f58bc8 --- /dev/null +++ b/www/lib/robotodraft/sass/_mixins.scss @@ -0,0 +1,6 @@ +@mixin fontdef-woff($FontPath, $FontName, $FontVersion:"1.0.0", $FontType:"Regular") { + src: url('#{$FontPath}/#{$FontType}/#{$FontName}-#{$FontType}.woff2?v=#{$FontVersion}') format('woff2'), + url('#{$FontPath}/#{$FontType}/#{$FontName}-#{$FontType}.woff?v=#{$FontVersion}') format('woff'), + url('#{$FontPath}/#{$FontType}/#{$FontName}-#{$FontType}.ttf?v=#{$FontVersion}') format('truetype'); +} + diff --git a/www/lib/robotodraft/sass/_variables.scss b/www/lib/robotodraft/sass/_variables.scss new file mode 100644 index 0000000..31c5051 --- /dev/null +++ b/www/lib/robotodraft/sass/_variables.scss @@ -0,0 +1,3 @@ +$RobotoDraftFontPath: "./fonts" !default; +$RobotoDraftFontName: "RobotoDraft" !default; +$RobotoDraftFontVersion: "1.0.0" !default; diff --git a/www/lib/robotodraft/sass/robotodraft.scss b/www/lib/robotodraft/sass/robotodraft.scss new file mode 100644 index 0000000..73c3a04 --- /dev/null +++ b/www/lib/robotodraft/sass/robotodraft.scss @@ -0,0 +1,12 @@ +@import "variables"; +@import "mixins"; + +@import "Thin"; +@import "Light"; +@import "Regular"; +@import "Italic"; +@import "Medium"; +@import "Bold"; +@import "BoldItalic"; +@import "Black"; + diff --git a/www/lib/waves/.bower.json b/www/lib/waves/.bower.json new file mode 100644 index 0000000..fff8d80 --- /dev/null +++ b/www/lib/waves/.bower.json @@ -0,0 +1,34 @@ +{ + "name": "Waves", + "version": "0.6.6", + "homepage": "http://fian.my.id/Waves", + "authors": [ + "Alfiana E. Sibuea " + ], + "description": "Click effect inspired by Google's Material Design", + "main": [ + "dist/waves.min.js", + "dist/waves.min.css" + ], + "keywords": [ + "click", + "material-design" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "_release": "0.6.6", + "_resolution": { + "type": "version", + "tag": "v0.6.6", + "commit": "7cfc479b8246e6d15e660bc2a69fa5b3a792ce98" + }, + "_source": "https://github.com/fians/Waves.git", + "_target": "0.6", + "_originalSource": "waves" +} \ No newline at end of file diff --git a/www/lib/waves/Gruntfile.js b/www/lib/waves/Gruntfile.js new file mode 100644 index 0000000..157df91 --- /dev/null +++ b/www/lib/waves/Gruntfile.js @@ -0,0 +1,254 @@ +var fs = require('fs'); + +module.exports = function(grunt) { + grunt.initConfig({ + + less: { + build: { + options: {}, + files: { + 'dist/waves.css': 'src/less/waves.less' + } + }, + minified: { + options: { + cleancss:true + }, + files: { + 'dist/waves.min.css': 'src/less/waves.less' + } + }, + // re-minify everything in tests/ so that they all + // have the same minification for comparision + test: { + options: { + cleancss:true, + cleancssOptions: { + keepSpecialComments:'0' + } + }, + files: { + 'tests/less/waves.min.css': 'src/less/waves.less', + 'tests/sass/waves.min.css': 'tests/sass/waves.css', + 'tests/scss/waves.min.css': 'tests/scss/waves.css', + 'tests/stylus/waves.min.css': 'tests/stylus/waves.css' + } + } + }, + + jshint: { + + files: [ + 'gruntfile.js', + 'src/js/*.js', + ], + + options: { + globals: { + console: true + } + } + }, + + uglify: { + options: { + mangle: true, // false when debugging + compress: true, // false when debugging + sourceMap: true, + sourceMapName: 'dist/waves.min.js.map', + preserveComments: 'some' + }, + js: { + files: { + 'dist/waves.min.js': ['src/js/waves.js'] + } + } + }, + + // Copy to dist + copy: { + js: { + expand: true, + cwd: 'src/js', + src: 'waves.js', + dest: 'dist/' + }, + docs: { + expand: true, + cwd: 'dist', + src: ['waves.min.css', 'waves.min.js'], + dest: 'docs/static' + } + }, + + //convert less to stylus + execute: { + less2stylus: { + call: function(grunt, options, async) { + var done = async(); + var exec = require('child_process').exec; + exec('cd node_modules/less2stylus && ./less2stylus ../../src/less/waves.less', function (error, stdout, stderr) { + grunt.log.writeln('Executing less2styus...'); + + if (error) { + grunt.log.writeln('Error! ' + error); + } + + var fs = require('fs'); + fs.writeFile("src/stylus/waves.styl", stdout, function(err) { + if(err) { + grunt.log.writeln(err); + } else { + grunt.log.writeln("Stylus file was saved!"); + } + + done(); // let grunt resume + }); + }); + } + }, + + less2scss: { + //FUTURE: Put less2scss as it's own script + call: function(grunt, options, async) { + var done = async(); + var text = fs.readFileSync('src/less/waves.less', {encoding:'utf8'}); + + //replace @ with $ + text = text.replace(/@(?!import|media|keyframes|-)/g, '$'); + //replace mixins + text = text.replace(/\.([\w\-]*)\s*\((.*)\)\s*\{/g, '@mixin $1($2){'); + //replace includes + text = text.replace(/\.([\w\-]*\(.*\)\s*;)/g, '@include $1'); + //replace string literals + //eg. ~'!important' -> #{"!important"} + text = text.replace(/~(?:\"|\')(.*)(?:\"|\')/g, '#{"$1"}'); + + //NOTE: for true less->scss transpiling we'd need to replace spin to adjust-hue (not needed but anyway) + + fs.writeFileSync('src/scss/waves.scss', text); + + done(); + } + }, + + test: { + call: function(grunt, options, async) { + var done = async(); + var lessTest = fs.readFileSync('tests/less/waves.min.css', {encoding:'utf8'}); + var sassTest = fs.readFileSync('tests/sass/waves.min.css', {encoding:'utf8'}); + var scssTest = fs.readFileSync('tests/scss/waves.min.css', {encoding:'utf8'}); + var stylusTest = fs.readFileSync('tests/stylus/waves.min.css', {encoding:'utf8'}); + + var failure = false; + if (lessTest != sassTest) { + grunt.log.writeln('ERROR: sass failed test.'); + failure = true; + } + + if (lessTest != scssTest) { + grunt.log.writeln('ERROR: scss failed test.'); + failure = true; + } + + if (lessTest != stylusTest) { + grunt.log.writeln('ERROR: stylus failed test.'); + failure = true; + } + + if (sassTest != scssTest) { + grunt.log.writeln('WARNING: sass files aren\'t equal?'); + failure = true; + } + + if (!failure) grunt.log.writeln('PASS: conversions generated same CSS'); + + done(); + } + } + }, + + 'sass-convert': { + options: { + from: 'scss', + to: 'sass', + indent: 2 + }, + files: { + cwd: 'src/scss', + src: '*.scss', + dest: 'src/sass' + } + }, + + sass: { + test: { + files: [{ + expand: true, + cwd: 'src', + src: ['**/*.sass', '**/*.scss'], + dest: 'tests/', + ext: '.css' + }] + } + }, + + stylus: { + test: { + files: { + 'tests/stylus/waves.css': 'src/stylus/waves.styl' + } + } + }, + + clean: { + test: ['tests/*'] + }, + + watch: { + script: { + options: { + spawn: false, + event: ['added', 'deleted', 'changed'] + }, + files: ['src/**/*.js', 'src/**/*.less'], + tasks: ['build'] + }, + grunt: { + files: ['Gruntfile.js'] + } + } + }); + + // Load module + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-sass'); + grunt.loadNpmTasks('grunt-contrib-stylus'); + grunt.loadNpmTasks('grunt-execute'); + grunt.loadNpmTasks('grunt-sass-convert'); + grunt.loadNpmTasks('grunt-contrib-clean'); + + // Create grunt task + grunt.registerTask('build', [ + 'less:build', + 'less:minified', + 'jshint', + 'uglify', + 'copy', + 'execute:less2stylus', + 'execute:less2scss', + 'sass-convert', + 'sass:test', + 'stylus:test', + 'less:test', + 'execute:test', + 'clean:test' + ]); + + grunt.registerTask('default', ['build', 'watch']); +}; diff --git a/www/lib/waves/LICENSE b/www/lib/waves/LICENSE new file mode 100644 index 0000000..e052828 --- /dev/null +++ b/www/lib/waves/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Alfiana E. Sibuea + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/www/lib/waves/README.md b/www/lib/waves/README.md new file mode 100644 index 0000000..7059a69 --- /dev/null +++ b/www/lib/waves/README.md @@ -0,0 +1,27 @@ +# Waves + +Click effect inspired by Google's Material Design +http://fian.my.id/Waves/ + +## Documentation + +Waves using [Situs](https://github.com/fians/situs) to generate documentation. Here are some steps to run documentation locally on your computer, + +1. Make sure [Node.js](http://nodejs.org/) and [Ruby](https://www.ruby-lang.org/en/) installed in your computer. +2. Install SASS via RubyGems (`gem install sass`). +3. Install Situs globally via npm (`npm install situs -g`). +4. Clone Waves's Github repository, if you haven't already (`git clone https://github.com/fians/Waves.git`). +5. Run `npm install` to install the necessary local node packages. +6. Install grunt globally with `npm install -g grunt-cli`. +7. Run `grunt` to watch the directory, or simply `grunt build` to do a single build. +8. Now just start Situs server (`situs server`), then visit [http://localhost:4000/](http://localhost:4000/) on your browser. + +## Notes + +Thanks for [BrowserStack](http://www.browserstack.com/) by providing a great testing tools for this projects. + + +## License +Waves created by [Alfiana Sibuea](http://fian.my.id), and released under [MIT license](https://github.com/fians/Waves/blob/master/LICENSE). + +Copyright © 2014 Alfiana E. Sibuea. All rights reserved. diff --git a/www/lib/waves/bower.json b/www/lib/waves/bower.json new file mode 100644 index 0000000..93e3b3a --- /dev/null +++ b/www/lib/waves/bower.json @@ -0,0 +1,22 @@ +{ + "name": "Waves", + "version": "0.6.6", + "homepage": "http://fian.my.id/Waves", + "authors": [ + "Alfiana E. Sibuea " + ], + "description": "Click effect inspired by Google's Material Design", + "main": ["dist/waves.min.js", "dist/waves.min.css"], + "keywords": [ + "click", + "material-design" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/www/lib/waves/dist/waves.css b/www/lib/waves/dist/waves.css new file mode 100644 index 0000000..ed4545f --- /dev/null +++ b/www/lib/waves/dist/waves.css @@ -0,0 +1,136 @@ +/*! + * Waves v0.6.6 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; +} +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 100px; + height: 100px; + margin-top: -50px; + margin-left: -50px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + background: -webkit-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -o-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -moz-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; +} +.waves-effect.waves-light .waves-ripple { + background: rgba(255, 255, 255, 0.4); + background: -webkit-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -o-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -moz-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); +} +.waves-effect.waves-classic .waves-ripple { + background: rgba(0, 0, 0, 0.2); +} +.waves-effect.waves-classic.waves-light .waves-ripple { + background: rgba(255, 255, 255, 0.4); +} +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; +} +.waves-button, +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%); +} +.waves-button, +.waves-button:hover, +.waves-button:visited, +.waves-button-input { + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: none; + outline: none; + color: inherit; + background-color: rgba(0, 0, 0, 0); + font-size: 1em; + line-height: 1em; + text-align: center; + text-decoration: none; + z-index: 1; +} +.waves-button { + padding: 0.85em 1.1em; + border-radius: 0.2em; +} +.waves-button-input { + margin: 0; + padding: 0.85em 1.1em; +} +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; +} +.waves-input-wrapper.waves-button { + padding: 0; +} +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; +} +.waves-float { + -webkit-mask-image: none; + -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); +} +.waves-float:active { + -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); +} +.waves-block { + display: block; +} +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; +} diff --git a/www/lib/waves/dist/waves.js b/www/lib/waves/dist/waves.js new file mode 100644 index 0000000..d94df3b --- /dev/null +++ b/www/lib/waves/dist/waves.js @@ -0,0 +1,349 @@ +/*! + * Waves v0.6.6 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + +;(function(window, factory) { + "use strict"; + + // AMD. Register as an anonymous module. Wrap in function so we have access + // to root via `this`. + if (typeof define === "function" && define.amd) { + define([], function() { + return factory.apply(window); + }); + } + + // Node. Does not work with strict CommonJS, but only CommonJS-like + // environments that support module.exports, like Node. + else if (typeof exports === "object") { + module.exports = factory.call(window); + } + + // Browser globals. + else { + window.Waves = factory.call(window); + } +})(typeof global === "object" ? global : this, function () { + "use strict"; + + var Waves = Waves || {}; + var $$ = document.querySelectorAll.bind(document); + + // Find exact position of element + function isWindow(obj) { + return obj !== null && obj === obj.window; + } + + function getWindow(elem) { + return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; + } + + function offset(elem) { + var docElem, win, + box = {top: 0, left: 0}, + doc = elem && elem.ownerDocument; + + docElem = doc.documentElement; + + if (typeof elem.getBoundingClientRect !== typeof undefined) { + box = elem.getBoundingClientRect(); + } + win = getWindow(doc); + return { + top: box.top + win.pageYOffset - docElem.clientTop, + left: box.left + win.pageXOffset - docElem.clientLeft + }; + } + + function convertStyle(obj) { + var style = ''; + + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + style += (a + ':' + obj[a] + ';'); + } + } + + return style; + } + + var Effect = { + + // Effect delay + duration: 750, + + show: function(e, element) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = element || this; + + // Create ripple + var ripple = document.createElement('div'); + ripple.className = 'waves-ripple'; + el.appendChild(ripple); + + // Get click coordinate and element witdh + var pos = offset(el); + var relativeY = (e.pageY - pos.top); + var relativeX = (e.pageX - pos.left); + var scale = 'scale('+((el.clientWidth / 100) * 3)+')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY+'px', + 'left': relativeX+'px' + }; + + ripple.className = ripple.className + ' waves-notransition'; + ripple.setAttribute('style', convertStyle(rippleStyle)); + ripple.className = ripple.className.replace('waves-notransition', ''); + + // Scale the ripple + rippleStyle['-webkit-transform'] = scale; + rippleStyle['-moz-transform'] = scale; + rippleStyle['-ms-transform'] = scale; + rippleStyle['-o-transform'] = scale; + rippleStyle.transform = scale; + rippleStyle.opacity = '1'; + + rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['transition-duration'] = Effect.duration + 'ms'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function(e) { + TouchHandler.touchup(e); + + var el = this; + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + var ripples = el.getElementsByClassName('waves-ripple'); + if (ripples.length > 0) { + ripple = ripples[ripples.length - 1]; + } else { + return false; + } + + var relativeX = ripple.getAttribute('data-x'); + var relativeY = ripple.getAttribute('data-y'); + var scale = ripple.getAttribute('data-scale'); + + // Get delay beetween mousedown and mouse leave + var diff = Date.now() - Number(ripple.getAttribute('data-hold')); + var delay = 350 - diff; + + if (delay < 0) { + delay = 0; + } + + // Fade out ripple after delay + setTimeout(function() { + var style = { + 'top': relativeY+'px', + 'left': relativeX+'px', + 'opacity': '0', + + // Duration + '-webkit-transition-duration': Effect.duration + 'ms', + '-moz-transition-duration': Effect.duration + 'ms', + '-o-transition-duration': Effect.duration + 'ms', + 'transition-duration': Effect.duration + 'ms', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + '-o-transform': scale, + 'transform': scale, + }; + + ripple.setAttribute('style', convertStyle(style)); + + setTimeout(function() { + try { + el.removeChild(ripple); + } catch(e) { + return false; + } + }, Effect.duration); + }, delay); + }, + + // Little hack to make can perform waves effect + wrapInput: function(elements) { + for (var a = 0; a < elements.length; a++) { + var el = elements[a]; + + if (el.tagName.toLowerCase() === 'input') { + var parent = el.parentNode; + + // If input already have parent just pass through + if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { + continue; + } + + // Put element class and style to the specified parent + var wrapper = document.createElement('i'); + wrapper.className = el.className + ' waves-input-wrapper'; + + var elementStyle = el.getAttribute('style'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'waves-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + + /** + * Disable mousedown event for 500ms during and after touch + */ + var TouchHandler = { + /* uses an integer rather than bool so there's no issues with + * needing to clear timeouts if another touch event occurred + * within the 500ms. Cannot mouseup between touchstart and + * touchend, nor in the 500ms after touchend. */ + touches: 0, + allowEvent: function(e) { + var allow = true; + + if (e.type === 'touchstart') { + TouchHandler.touches += 1; //push + } else if (e.type === 'touchend' || e.type === 'touchcancel') { + setTimeout(function() { + if (TouchHandler.touches > 0) { + TouchHandler.touches -= 1; //pop after 500ms + } + }, 500); + } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { + allow = false; + } + + return allow; + }, + touchup: function(e) { + TouchHandler.allowEvent(e); + } + }; + + + /** + * Delegated click handler for .waves-effect element. + * returns null when .waves-effect element not in "click tree" + */ + function getWavesEffectElement(e) { + if (TouchHandler.allowEvent(e) === false) { + return null; + } + + var element = null; + var target = e.target || e.srcElement; + + while (target.parentElement !== null) { + if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { + element = target; + break; + } else if (target.classList.contains('waves-effect')) { + element = target; + break; + } + target = target.parentElement; + } + + return element; + } + + /** + * Bubble the click and show effect if .waves-effect elem was found + */ + function showEffect(e) { + var element = getWavesEffectElement(e); + + if (element !== null) { + Effect.show(e, element); + + if ('ontouchstart' in window) { + element.addEventListener('touchend', Effect.hide, false); + element.addEventListener('touchcancel', Effect.hide, false); + } + + element.addEventListener('mouseup', Effect.hide, false); + element.addEventListener('mouseleave', Effect.hide, false); + } + } + + Waves.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + Effect.wrapInput($$('.waves-effect')); + + if ('ontouchstart' in window) { + document.body.addEventListener('touchstart', showEffect, false); + } + + document.body.addEventListener('mousedown', showEffect, false); + }; + + /** + * Attach Waves to an input element (or any element which doesn't + * bubble mouseup/mousedown events). + * Intended to be used with dynamically loaded forms/inputs, or + * where the user doesn't want a delegated click handler. + */ + Waves.attach = function(element) { + //FUTURE: automatically add waves classes and allow users + // to specify them with an options param? Eg. light/classic/button + if (element.tagName.toLowerCase() === 'input') { + Effect.wrapInput([element]); + element = element.parentElement; + } + + if ('ontouchstart' in window) { + element.addEventListener('touchstart', showEffect, false); + } + + element.addEventListener('mousedown', showEffect, false); + }; + + return Waves; +}); diff --git a/www/lib/waves/dist/waves.min.css b/www/lib/waves/dist/waves.min.css new file mode 100644 index 0000000..56091b6 --- /dev/null +++ b/www/lib/waves/dist/waves.min.css @@ -0,0 +1,8 @@ +/*! + * Waves v0.6.6 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:100px;height:100px;margin-top:-50px;margin-left:-50px;opacity:0;background:rgba(0,0,0,.2);background:-webkit-radial-gradient(rgba(0,0,0,.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,rgba(255,255,255,0) 70%);background:-o-radial-gradient(rgba(0,0,0,.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,rgba(255,255,255,0) 70%);background:-moz-radial-gradient(rgba(0,0,0,.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,rgba(255,255,255,0) 70%);background:radial-gradient(rgba(0,0,0,.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,rgba(255,255,255,0) 70%);-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-o-transition:all .5s ease-out;transition:all .5s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background:rgba(255,255,255,.4);background:-webkit-radial-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.3) 40%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 70%);background:-o-radial-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.3) 40%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 70%);background:-moz-radial-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.3) 40%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 70%);background:radial-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.3) 40%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 70%)}.waves-effect.waves-classic .waves-ripple{background:rgba(0,0,0,.2)}.waves-effect.waves-classic.waves-light .waves-ripple{background:rgba(255,255,255,.4)}.waves-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.waves-button,.waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 100%)}.waves-button,.waves-button:hover,.waves-button:visited,.waves-button-input{white-space:nowrap;vertical-align:middle;cursor:pointer;border:none;outline:0;color:inherit;background-color:transparent;font-size:1em;line-height:1em;text-align:center;text-decoration:none;z-index:1}.waves-button{padding:.85em 1.1em;border-radius:.2em}.waves-button-input{margin:0;padding:.85em 1.1em}.waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.waves-input-wrapper.waves-button{padding:0}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%}.waves-float{-webkit-mask-image:none;-webkit-box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12);box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12)}.waves-float:active{-webkit-box-shadow:0 8px 20px 1px rgba(0,0,0,.3);box-shadow:0 8px 20px 1px rgba(0,0,0,.3)}.waves-block{display:block}a.waves-effect .waves-ripple{z-index:-1} \ No newline at end of file diff --git a/www/lib/waves/dist/waves.min.js b/www/lib/waves/dist/waves.min.js new file mode 100644 index 0000000..5f9da40 --- /dev/null +++ b/www/lib/waves/dist/waves.min.js @@ -0,0 +1,10 @@ +/*! + * Waves v0.6.6 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +!function(a,b){"use strict";"function"==typeof define&&define.amd?define([],function(){return b.apply(a)}):"object"==typeof exports?module.exports=b.call(a):a.Waves=b.call(a)}("object"==typeof global?global:this,function(){"use strict";function a(a){return null!==a&&a===a.window}function b(b){return a(b)?b:9===b.nodeType&&b.defaultView}function c(a){var c,d,e={top:0,left:0},f=a&&a.ownerDocument;return c=f.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect()),d=b(f),{top:e.top+d.pageYOffset-c.clientTop,left:e.left+d.pageXOffset-c.clientLeft}}function d(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}function e(a){if(j.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(!(c instanceof SVGElement||-1===c.className.indexOf("waves-effect"))){b=c;break}if(c.classList.contains("waves-effect")){b=c;break}c=c.parentElement}return b}function f(a){var b=e(a);null!==b&&(i.show(a,b),"ontouchstart"in window&&(b.addEventListener("touchend",i.hide,!1),b.addEventListener("touchcancel",i.hide,!1)),b.addEventListener("mouseup",i.hide,!1),b.addEventListener("mouseleave",i.hide,!1))}var g=g||{},h=document.querySelectorAll.bind(document),i={duration:750,show:function(a,b){if(2===a.button)return!1;var e=b||this,f=document.createElement("div");f.className="waves-ripple",e.appendChild(f);var g=c(e),h=a.pageY-g.top,j=a.pageX-g.left,k="scale("+e.clientWidth/100*3+")";"touches"in a&&(h=a.touches[0].pageY-g.top,j=a.touches[0].pageX-g.left),f.setAttribute("data-hold",Date.now()),f.setAttribute("data-scale",k),f.setAttribute("data-x",j),f.setAttribute("data-y",h);var l={top:h+"px",left:j+"px"};f.className=f.className+" waves-notransition",f.setAttribute("style",d(l)),f.className=f.className.replace("waves-notransition",""),l["-webkit-transform"]=k,l["-moz-transform"]=k,l["-ms-transform"]=k,l["-o-transform"]=k,l.transform=k,l.opacity="1",l["-webkit-transition-duration"]=i.duration+"ms",l["-moz-transition-duration"]=i.duration+"ms",l["-o-transition-duration"]=i.duration+"ms",l["transition-duration"]=i.duration+"ms",f.setAttribute("style",d(l))},hide:function(a){j.touchup(a);var b=this,c=(1.4*b.clientWidth,null),e=b.getElementsByClassName("waves-ripple");if(!(e.length>0))return!1;c=e[e.length-1];var f=c.getAttribute("data-x"),g=c.getAttribute("data-y"),h=c.getAttribute("data-scale"),k=Date.now()-Number(c.getAttribute("data-hold")),l=350-k;0>l&&(l=0),setTimeout(function(){var a={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":i.duration+"ms","-moz-transition-duration":i.duration+"ms","-o-transition-duration":i.duration+"ms","transition-duration":i.duration+"ms","-webkit-transform":h,"-moz-transform":h,"-ms-transform":h,"-o-transform":h,transform:h};c.setAttribute("style",d(a)),setTimeout(function(){try{b.removeChild(c)}catch(a){return!1}},i.duration)},l)},wrapInput:function(a){for(var b=0;b0&&(j.touches-=1)},500):"mousedown"===a.type&&j.touches>0&&(b=!1),b},touchup:function(a){j.allowEvent(a)}};return g.displayEffect=function(a){a=a||{},"duration"in a&&(i.duration=a.duration),i.wrapInput(h(".waves-effect")),"ontouchstart"in window&&document.body.addEventListener("touchstart",f,!1),document.body.addEventListener("mousedown",f,!1)},g.attach=function(a){"input"===a.tagName.toLowerCase()&&(i.wrapInput([a]),a=a.parentElement),"ontouchstart"in window&&a.addEventListener("touchstart",f,!1),a.addEventListener("mousedown",f,!1)},g}); +//# sourceMappingURL=waves.min.js.map \ No newline at end of file diff --git a/www/lib/waves/dist/waves.min.js.map b/www/lib/waves/dist/waves.min.js.map new file mode 100644 index 0000000..506a107 --- /dev/null +++ b/www/lib/waves/dist/waves.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"waves.min.js","sources":["../src/js/waves.js"],"names":["window","factory","define","amd","apply","exports","module","call","Waves","global","this","isWindow","obj","getWindow","elem","nodeType","defaultView","offset","docElem","win","box","top","left","doc","ownerDocument","documentElement","getBoundingClientRect","pageYOffset","clientTop","pageXOffset","clientLeft","convertStyle","style","a","hasOwnProperty","getWavesEffectElement","e","TouchHandler","allowEvent","element","target","srcElement","parentElement","SVGElement","className","indexOf","classList","contains","showEffect","Effect","show","addEventListener","hide","$$","document","querySelectorAll","bind","duration","button","el","ripple","createElement","appendChild","pos","relativeY","pageY","relativeX","pageX","scale","clientWidth","touches","setAttribute","Date","now","rippleStyle","replace","transform","opacity","touchup","ripples","getElementsByClassName","length","getAttribute","diff","Number","delay","setTimeout","-webkit-transition-duration","-moz-transition-duration","-o-transition-duration","transition-duration","-webkit-transform","-moz-transform","-ms-transform","-o-transform","removeChild","wrapInput","elements","tagName","toLowerCase","parent","parentNode","wrapper","elementStyle","removeAttribute","replaceChild","allow","type","displayEffect","options","body","attach"],"mappings":"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"} \ No newline at end of file diff --git a/www/lib/waves/docs/index.html b/www/lib/waves/docs/index.html new file mode 100644 index 0000000..6c5bf19 --- /dev/null +++ b/www/lib/waves/docs/index.html @@ -0,0 +1,684 @@ + + + + + + + + + Waves + + + + + + + + + + + + + + + +
+ + + + + + +
+

Waves

+

Click effect inspired by Google's Material Design

+

v0.6.6

+
+ See the examples +
+ Hint: click button or background +
+
+ + + + +
+ +

Examples

+ +
+

Buttons

+ + + + +

+ Button A + + +

+ +

+ Button A + + +

+
+ +
+

Icons

+ + + + +

+ + + + + + +

+ +

+ + + + + + +

+ +
+ +
+

DIVs & Images

+ + + + +
Flat Box
+
Float Box
+
+ +

+ + + +

+ +

+ Image Source: © Moyan Brenn. Flickr +

+
+ +
+

Action/Event

+ + + + +

Works fully with jQuery and JavaScript click event handlers, like Snarl

+ +

+
+
+ + + + +
+
+ +
+ + +
+

Buttons

+
+{{#code class="lang-markup"}} +

+ Button A + + +

+ +

+ Button A + + +

+{{/code}} +
+
+ +
+

Icons

+
+{{#code class="lang-markup"}} +

+ + + + + + +

+ +

+ + + + + + +

+{{/code}} +
+
+ +
+

DIVs & Images

+
+{{#code class="lang-markup"}} +
Flat Box
+
Float Box
+
+ +

+ + + +

+{{/code}} +
+
+ +
+

Action/Event

+
+{{#code class="lang-markup"}} +

+ +

+ +{{/code}} +
+
+ +
+
+ + + + + +
+

Getting Started

+ +
+ +

+ It's easy to use Waves. Download the latest version of Waves from Github repository. Just include waves.min.css and waves.min.js to your HTML file. And Waves is ready to use! +

+ +{{#code class="lang-markup"}} + + + + Waves example + + + + + + Click Here + + + + + +{{/code}} + +

+ Advanced:
+ Waves also provide LESS, SCSS, and SASS source. So, feel free to used it :) +

+ +

+ To put Waves effect on your buttons, just add .waves-effect and .waves-button class to your buttons. +

+ +{{#code class="lang-markup"}} + + + +A Tag + + +{{/code}} + +

+ Normally, the effect will not work on single tag element like <input>. That's why Waves will wrap <input> inside <i> automatically if you display the effect. +

+ +{{#code class="lang-markup"}} + + + + + + + +{{/code}} + +

+ Waves can also be applied with icons (like FontAwesome) by using waves-circle, so you can give the icons Waves effect. It's simple, just give additional .waves-effect and .waves-circle class to your <i> tags and Waves will wrap icon inside circle spot that will prevent Waves effect spreading. +

+ +{{#code class="lang-markup"}} + +{{/code}} + +

+ You can also give Waves effect to other element tag like <div> or <img>. All you need to do is just put .waves-effect class. For element that not have closing tag like <img>, you have to wrap it inside <span>, and for element that have blocky display like <div>, you need to put .waves-block class to keep its shape. +

+ +{{#code class="lang-markup"}} + + + + + + +
+ Block A +
+{{/code}} + +

Styling

+ +

+ Waves give you capabilities to color your .waves-effect. You can do this by set up the color and background-color/background properties on your element style (or CSS file). +

+ +{{#code class="lang-markup"}} + + + + + + + + + + + +{{/code}} + +

+ By default, Waves ripple is darker. If you want the ripple is lighter, you can set .waves-light along side .waves-effect class. Make sure the element has been colored, because if it haven't colored yet, you cannot see the light ripple. +

+ +{{#code class="lang-markup"}} + + + + + +{{/code}} + +

+ Not only give your "Waves effect", Waves also provide float effect when you click an element + by adding .waves-float class to the element. Once again, before put float effect, your have to make sure the element has been colored, to prevent weird shadow on the element. +

+ +{{#code class="lang-markup"}} + + + + + +{{/code}} + +

Quick Fix

+ +

+ IE Tap highlight on Windows Phone +

+ +

+ By default if you access a web page using IE in Windows Phone, you will get tap highlight + effect when you tapping a link or button and this highlight will shadowed Waves effect. To prevent this thing happen, you will need to add msapplication-tap-highlight meta tag on your header. +

+ +{{#code class="lang-markup"}} + + + + + + + Your Web Page + + + + + + + + +{{/code}} + +
+
+ + + + +
+

API

+ +
+

displayEffect(config)

+ +

+ Arguments +

+ +
    +
  • config - (optional) Configuration object for displaying Waves effect.
  • +
+ +{{#code class="lang-javascript"}} +{ + // How long Waves effect duration + // when its clicked (in milisecond) + duration: 500 +} +{{/code}} +
+
+ + + + + +
+

FAQ

+ +
+

+ Browser support? +

+ +
    +
  • IE 10++
  • +
  • Chrome 14++
  • +
  • Firefox 9++
  • +
  • Safari 5.1++
  • +
  • Opera 11.6++
  • +
  • iOS 6++ (Safari)
  • +
  • Windows Phone 8.1 (IE)
  • +
  • Android Browser 4++
  • +
+ +

+ Can I make Waves better? +

+ +

+ Yes, I strongly encourage you to contribute to make Waves better. So, if you find a bug, or have nice idea for Waves development, please mention me. +

+
+ +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/www/lib/waves/docs/static/jquery.js b/www/lib/waves/docs/static/jquery.js new file mode 100644 index 0000000..25714ed --- /dev/null +++ b/www/lib/waves/docs/static/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) +},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("