├── .gitignore
├── README.md
├── keensoft-example
├── .bowerrc
├── .gitignore
├── bower.json
├── config.xml
├── gulpfile.js
├── ionic.project
├── package.json
├── scss
│ └── ionic.app.scss
└── www
│ ├── css
│ ├── main.css
│ └── style.css
│ ├── img
│ ├── ionic.png
│ ├── keensoft.gif
│ ├── keensoft.jpg
│ └── keensoft.png
│ ├── index.html
│ ├── js
│ ├── app.js
│ └── controllers.js
│ └── lib
│ ├── angular-animate
│ ├── .bower.json
│ ├── README.md
│ ├── angular-animate.js
│ ├── angular-animate.min.js
│ ├── angular-animate.min.js.map
│ ├── bower.json
│ └── package.json
│ ├── angular-sanitize
│ ├── .bower.json
│ ├── README.md
│ ├── angular-sanitize.js
│ ├── angular-sanitize.min.js
│ ├── angular-sanitize.min.js.map
│ ├── bower.json
│ └── package.json
│ ├── angular-ui-router
│ ├── .bower.json
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── README.md
│ ├── api
│ │ └── angular-ui-router.d.ts
│ ├── bower.json
│ ├── release
│ │ ├── angular-ui-router.js
│ │ └── angular-ui-router.min.js
│ └── src
│ │ ├── common.js
│ │ ├── resolve.js
│ │ ├── state.js
│ │ ├── stateDirectives.js
│ │ ├── stateFilters.js
│ │ ├── templateFactory.js
│ │ ├── urlMatcherFactory.js
│ │ ├── urlRouter.js
│ │ ├── view.js
│ │ ├── viewDirective.js
│ │ └── viewScroll.js
│ ├── angular
│ ├── .bower.json
│ ├── README.md
│ ├── angular-csp.css
│ ├── angular.js
│ ├── angular.min.js
│ ├── angular.min.js.gzip
│ ├── angular.min.js.map
│ ├── bower.json
│ └── package.json
│ ├── hammerjs
│ ├── .bower.json
│ ├── .bowerrc
│ ├── .gitignore
│ ├── .jscsrc
│ ├── .jshintrc
│ ├── .travis.yml
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── Gruntfile.coffee
│ ├── LICENSE.md
│ ├── README.md
│ ├── bower.json
│ ├── component.json
│ ├── hammer.js
│ ├── hammer.min.js
│ ├── hammer.min.map
│ └── package.json
│ ├── ionic
│ ├── .bower.json
│ ├── README.md
│ ├── bower.json
│ ├── css
│ │ ├── ionic.css
│ │ └── ionic.min.css
│ ├── fonts
│ │ ├── ionicons.eot
│ │ ├── ionicons.svg
│ │ ├── ionicons.ttf
│ │ └── ionicons.woff
│ ├── js
│ │ ├── ionic-angular.js
│ │ ├── ionic-angular.min.js
│ │ ├── ionic.bundle.js
│ │ ├── ionic.bundle.min.js
│ │ ├── ionic.js
│ │ └── ionic.min.js
│ └── scss
│ │ ├── _action-sheet.scss
│ │ ├── _animations.scss
│ │ ├── _backdrop.scss
│ │ ├── _badge.scss
│ │ ├── _bar.scss
│ │ ├── _button-bar.scss
│ │ ├── _button.scss
│ │ ├── _checkbox.scss
│ │ ├── _form.scss
│ │ ├── _grid.scss
│ │ ├── _items.scss
│ │ ├── _list.scss
│ │ ├── _loading.scss
│ │ ├── _menu.scss
│ │ ├── _mixins.scss
│ │ ├── _modal.scss
│ │ ├── _platform.scss
│ │ ├── _popover.scss
│ │ ├── _popup.scss
│ │ ├── _progress.scss
│ │ ├── _radio.scss
│ │ ├── _range.scss
│ │ ├── _reset.scss
│ │ ├── _scaffolding.scss
│ │ ├── _select.scss
│ │ ├── _slide-box.scss
│ │ ├── _split-pane.scss
│ │ ├── _tabs.scss
│ │ ├── _toggle.scss
│ │ ├── _transitions.scss
│ │ ├── _type.scss
│ │ ├── _util.scss
│ │ ├── _variables.scss
│ │ ├── ionic.scss
│ │ └── ionicons
│ │ ├── _ionicons-animation.scss
│ │ ├── _ionicons-font.scss
│ │ ├── _ionicons-icons.scss
│ │ ├── _ionicons-variables.scss
│ │ └── ionicons.scss
│ └── ryanmullins-angular-hammer
│ ├── .bower.json
│ ├── LICENSE.md
│ ├── README.md
│ ├── angular-hammer-logo.png
│ ├── angular.hammer.js
│ ├── angular.hammer.min.js
│ ├── angular.hammer.min.js.map
│ ├── bower.json
│ ├── doc
│ ├── angular.hammer.js.html
│ ├── index.html
│ ├── module-hmTouchEvents.html
│ ├── scripts
│ │ ├── linenumber.js
│ │ └── prettify
│ │ │ ├── Apache-License-2.0.txt
│ │ │ ├── lang-css.js
│ │ │ └── prettify.js
│ └── styles
│ │ ├── jsdoc-default.css
│ │ ├── prettify-jsdoc.css
│ │ └── prettify-tomorrow.css
│ ├── gruntfile.js
│ ├── jsdoc.json
│ ├── package.json
│ └── server.js
├── plugin.xml
├── src
├── android
│ └── FullScreenImage.java
└── ios
│ ├── FullScreenImage.h
│ ├── FullScreenImage.m
│ ├── NSData+Base64.h
│ └── NSData+Base64.m
└── www
├── bower_components
└── platform
│ ├── .bower.json
│ ├── LICENSE.txt
│ ├── bower.json
│ └── platform.js
└── fullscreenimage.js
/.gitignore:
--------------------------------------------------------------------------------
1 | hooks/
2 | example/.idea
3 | .idea/
4 | /nbproject/private/
5 | build.xml
6 | manifest.mf
7 | build-impl.xml
8 | genfiles.properties
9 | project.properties
10 | project.xml
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Full Screen Image Plugin Cordova iOS/Android
2 | =================================
3 |
4 | Plugin to show images from cordova project and use it with native components.
5 |
6 | Installation:
7 | --------------
8 |
9 | `cordova plugin add https://github.com/keensoft/FullScreenImage-Cordova-Plugin.git`
10 |
11 | OR from http://plugins.cordova.io/
12 |
13 | `cordova plugin add es.keensoft.fullscreenimage`
14 |
15 | Usage:
16 | --------------
17 |
18 | Usage with your javascript code (Images should be inside www/**pathOfImage**):
19 | `FullScreenImage.showImageURL(imageSrc);`
20 |
21 | Usage with base64 image String code:
22 | `FullScreenImage.showImageBase64(base64String, name, type);`
23 |
24 | Platforms:
25 | --------------
26 | * iOS ( >= iOS 6)
27 | Full Screen Image Plugin, open **UIDocumentInteractionController** to show image.
28 |
29 | * Android
30 | Full Screen Image Plugin, use Intent to open it with external Imageviewer. This plugins checks Application *can use getExternalStorageDirectory*
31 |
32 | Example App
33 | --------------
34 | You can test the plugin fast and easy. Go to "example/" path and execute [ionic][4] project. Get started with ionic [here][5]
35 |
36 | First execute: "ionic platform add ios" and then you can open iOS project.
37 |
38 | Added Simple Photo Gallery using IonicFramework, loading array of Base64 images or local URL's.
39 |
40 | Uninstall
41 | --------------
42 |
43 | `cordova plugin remove FullScreenImage`
44 |
45 | Tested devices
46 | --------------
47 | iPad2 (iOS 7), iPhone 4S (iOS 7), iPhone 5 (iOS 7), Galaxy Note II (4.3)
48 |
49 | Info
50 | --------------
51 | ![enter image description here][1]
52 |
53 | Contact: [info@keensoft.es][2]
54 |
55 | Web: [http://keensoft.es][3]
56 |
57 |
58 | [1]: http://www.keensoft.es/wp-content/uploads/2013/04/keensoft-logo1.png
59 | [2]: info@keensoft.es
60 | [3]: http://keensoft.es
61 | [4]: http://ionicframework.com/
62 | [5]: http://ionicframework.com/getting-started/
--------------------------------------------------------------------------------
/keensoft-example/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "www/lib"
3 | }
4 |
--------------------------------------------------------------------------------
/keensoft-example/.gitignore:
--------------------------------------------------------------------------------
1 | # Specifies intentionally untracked files to ignore when using Git
2 | # http://git-scm.com/docs/gitignore
3 |
4 | node_modules/
5 | platforms/
6 | plugins/
7 |
--------------------------------------------------------------------------------
/keensoft-example/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "keensoft-example",
3 | "private": "true",
4 | "devDependencies": {
5 | "ionic": "driftyco/ionic-bower#1.0.0-beta.14"
6 | },
7 | "dependencies": {
8 | "ryanmullins-angular-hammer": "~2.1.10"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/keensoft-example/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | keensoft-example
4 |
5 | Full Screen Image Example
6 |
7 |
8 | keensoft
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/keensoft-example/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp');
2 | var gutil = require('gulp-util');
3 | var bower = require('bower');
4 | var concat = require('gulp-concat');
5 | var sass = require('gulp-sass');
6 | var minifyCss = require('gulp-minify-css');
7 | var rename = require('gulp-rename');
8 | var sh = require('shelljs');
9 |
10 | var paths = {
11 | sass: ['./scss/**/*.scss']
12 | };
13 |
14 | gulp.task('default', ['sass']);
15 |
16 | gulp.task('sass', function(done) {
17 | gulp.src('./scss/ionic.app.scss')
18 | .pipe(sass())
19 | .pipe(gulp.dest('./www/css/'))
20 | .pipe(minifyCss({
21 | keepSpecialComments: 0
22 | }))
23 | .pipe(rename({ extname: '.min.css' }))
24 | .pipe(gulp.dest('./www/css/'))
25 | .on('end', done);
26 | });
27 |
28 | gulp.task('watch', function() {
29 | gulp.watch(paths.sass, ['sass']);
30 | });
31 |
32 | gulp.task('install', ['git-check'], function() {
33 | return bower.commands.install()
34 | .on('log', function(data) {
35 | gutil.log('bower', gutil.colors.cyan(data.id), data.message);
36 | });
37 | });
38 |
39 | gulp.task('git-check', function(done) {
40 | if (!sh.which('git')) {
41 | console.log(
42 | ' ' + gutil.colors.red('Git is not installed.'),
43 | '\n Git, the version control system, is required to download Ionic.',
44 | '\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.',
45 | '\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
46 | );
47 | process.exit(1);
48 | }
49 | done();
50 | });
51 |
--------------------------------------------------------------------------------
/keensoft-example/ionic.project:
--------------------------------------------------------------------------------
1 | {
2 | "name": "keensoft-example",
3 | "app_id": ""
4 | }
--------------------------------------------------------------------------------
/keensoft-example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "keensoft-example",
3 | "version": "1.0.0",
4 | "description": "keensoft-example: An Ionic project",
5 | "dependencies": {
6 | "gulp": "^3.5.6",
7 | "gulp-sass": "^0.7.1",
8 | "gulp-concat": "^2.2.0",
9 | "gulp-minify-css": "^0.3.0",
10 | "gulp-rename": "^1.2.0"
11 | },
12 | "devDependencies": {
13 | "bower": "^1.3.3",
14 | "gulp-util": "^2.2.14",
15 | "shelljs": "^0.3.0"
16 | },
17 | "cordovaPlugins": [
18 | "https://github.com/keensoft/FullScreenImage-Cordova-Plugin.git"
19 | ]
20 | }
--------------------------------------------------------------------------------
/keensoft-example/scss/ionic.app.scss:
--------------------------------------------------------------------------------
1 | /*
2 | To customize the look and feel of Ionic, you can override the variables
3 | in ionic's _variables.scss file.
4 |
5 | For example, you might change some of the default colors:
6 |
7 | $light: #fff !default;
8 | $stable: #f8f8f8 !default;
9 | $positive: #387ef5 !default;
10 | $calm: #11c1f3 !default;
11 | $balanced: #33cd5f !default;
12 | $energized: #ffc900 !default;
13 | $assertive: #ef473a !default;
14 | $royal: #886aea !default;
15 | $dark: #444 !default;
16 | */
17 |
18 | // The path for our ionicons font files, relative to the built CSS in www/css
19 | $ionicons-font-path: "../lib/ionic/fonts" !default;
20 |
21 | // Include all of Ionic
22 | @import "www/lib/ionic/scss/ionic";
23 |
24 |
--------------------------------------------------------------------------------
/keensoft-example/www/css/main.css:
--------------------------------------------------------------------------------
1 | .transparent {
2 | background: transparent !important;
3 | }
4 | .image-modal {
5 | width: 100% !important;
6 | height: 100%;
7 | top: 0 !important;
8 | left: 0 !important;
9 | }
10 | .fullscreen-image {
11 | max-width: 100%;
12 | max-height: 100%;
13 | bottom: 0;
14 | left: 0;
15 | margin: auto;
16 | overflow: auto;
17 | position: fixed;
18 | right: 0;
19 | top: 0;
20 | }
21 | .slider {
22 | width: 100%;
23 | height: 100%;
24 | }
25 |
26 | p.info {
27 | position: absolute;
28 | bottom: 55px;
29 | margin: 0 auto;
30 | width: 100%;
31 | display: block;
32 | text-align: center;
33 | font-size: 28px;
34 | color: #ffffff;
35 | }
36 |
37 | /* Fix modal backdrop for smaller devices */
38 | @media (max-width: 679px) {
39 | .active .modal-backdrop-bg {
40 | opacity: .5;
41 | }
42 | .modal-backdrop-bg {
43 | -webkit-transition: opacity 300ms ease-in-out;
44 | transition: opacity 300ms ease-in-out;
45 | background-color: #000;
46 | opacity: 0;
47 | }
48 | }
--------------------------------------------------------------------------------
/keensoft-example/www/css/style.css:
--------------------------------------------------------------------------------
1 | /* Empty. Add your own CSS if you like */
2 |
--------------------------------------------------------------------------------
/keensoft-example/www/img/ionic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/img/ionic.png
--------------------------------------------------------------------------------
/keensoft-example/www/img/keensoft.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/img/keensoft.gif
--------------------------------------------------------------------------------
/keensoft-example/www/img/keensoft.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/img/keensoft.jpg
--------------------------------------------------------------------------------
/keensoft-example/www/img/keensoft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/img/keensoft.png
--------------------------------------------------------------------------------
/keensoft-example/www/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | Full Screen Plugin
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
![]()
41 |
Open Base64 Image (GIF)
42 |
Use "FullScreenImage.showImageBase64(base64,name,type)"
43 |
44 |
45 |
46 |
![]()
47 |
48 |
49 |
50 |
51 | Show base64 image
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
![]()
60 |
Open Base64 Image (PNG)
61 |
Use "FullScreenImage.showImageBase64(base64,name,type)"
62 |
63 |
64 |
65 |
![]()
66 |
67 |
68 |
69 |
70 | Show base64 image
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
![]()
79 |
Open Base64 Image (JPG)
80 |
Use "FullScreenImage.showImageBase64(base64,name,type)"
81 |
82 |
83 |
84 |
![]()
85 |
86 |
87 |
88 |
89 | Show base64 image
90 |
91 |
92 |
93 |
94 |
112 |
113 |
114 |
115 |
116 |
![]()
117 |
Open Url Path Image (JPG)
118 |
Use "FullScreenImage.showImageUrl(url)"
119 |
120 |
121 |
122 |
![]()
123 |
124 |
125 |
126 |
127 | Show URL Path image
128 |
129 |
130 |
131 |
132 |
144 |
156 |
157 |
158 |
159 |
160 |
--------------------------------------------------------------------------------
/keensoft-example/www/js/app.js:
--------------------------------------------------------------------------------
1 | // Ionic Starter App
2 |
3 | // angular.module is a global place for creating, registering and retrieving Angular modules
4 | // 'starter' is the name of this angular module example (also set in a attribute in index.html)
5 | // the 2nd parameter is an array of 'requires'
6 | angular.module('starter', ['ionic', 'starter.controllers'])
7 |
8 | .run(function($ionicPlatform) {
9 | $ionicPlatform.ready(function() {
10 | // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
11 | // for form inputs)
12 | if(window.cordova && window.cordova.plugins.Keyboard) {
13 | cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
14 | }
15 | if(window.StatusBar) {
16 | StatusBar.styleDefault();
17 | }
18 | });
19 | })
20 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-animate/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-animate",
3 | "version": "1.3.6",
4 | "main": "./angular-animate.js",
5 | "ignore": [],
6 | "dependencies": {
7 | "angular": "1.3.6"
8 | },
9 | "homepage": "https://github.com/angular/bower-angular-animate",
10 | "_release": "1.3.6",
11 | "_resolution": {
12 | "type": "version",
13 | "tag": "v1.3.6",
14 | "commit": "d38c9593911d231cce076c1b64f823e572813214"
15 | },
16 | "_source": "git://github.com/angular/bower-angular-animate.git",
17 | "_target": "1.3.6",
18 | "_originalSource": "angular-animate"
19 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-animate/README.md:
--------------------------------------------------------------------------------
1 | # packaged angular-animate
2 |
3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | You can install this package either with `npm` or with `bower`.
10 |
11 | ### npm
12 |
13 | ```shell
14 | npm install angular-animate
15 | ```
16 |
17 | Add a `
21 | ```
22 |
23 | Then add `ngAnimate` as a dependency for your app:
24 |
25 | ```javascript
26 | angular.module('myApp', ['ngAnimate']);
27 | ```
28 |
29 | Note that this package is not in CommonJS format, so doing `require('angular-animate')` will
30 | return `undefined`.
31 |
32 | ### bower
33 |
34 | ```shell
35 | bower install angular-animate
36 | ```
37 |
38 | Then add a `
42 | ```
43 |
44 | Then add `ngAnimate` as a dependency for your app:
45 |
46 | ```javascript
47 | angular.module('myApp', ['ngAnimate']);
48 | ```
49 |
50 | ## Documentation
51 |
52 | Documentation is available on the
53 | [AngularJS docs site](http://docs.angularjs.org/api/ngAnimate).
54 |
55 | ## License
56 |
57 | The MIT License
58 |
59 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in
69 | all copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
77 | THE SOFTWARE.
78 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-animate/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-animate",
3 | "version": "1.3.6",
4 | "main": "./angular-animate.js",
5 | "ignore": [],
6 | "dependencies": {
7 | "angular": "1.3.6"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-animate/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-animate",
3 | "version": "1.3.6",
4 | "description": "AngularJS module for animations",
5 | "main": "angular-animate.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/angular/angular.js.git"
12 | },
13 | "keywords": [
14 | "angular",
15 | "framework",
16 | "browser",
17 | "animation",
18 | "client-side"
19 | ],
20 | "author": "Angular Core Team ",
21 | "license": "MIT",
22 | "bugs": {
23 | "url": "https://github.com/angular/angular.js/issues"
24 | },
25 | "homepage": "http://angularjs.org"
26 | }
27 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-sanitize/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-sanitize",
3 | "version": "1.3.6",
4 | "main": "./angular-sanitize.js",
5 | "ignore": [],
6 | "dependencies": {
7 | "angular": "1.3.6"
8 | },
9 | "homepage": "https://github.com/angular/bower-angular-sanitize",
10 | "_release": "1.3.6",
11 | "_resolution": {
12 | "type": "version",
13 | "tag": "v1.3.6",
14 | "commit": "ccd773f961fa1fadc8d728c45a2635c73d34fb2d"
15 | },
16 | "_source": "git://github.com/angular/bower-angular-sanitize.git",
17 | "_target": "1.3.6",
18 | "_originalSource": "angular-sanitize"
19 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-sanitize/README.md:
--------------------------------------------------------------------------------
1 | # packaged angular-sanitize
2 |
3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngSanitize).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | You can install this package either with `npm` or with `bower`.
10 |
11 | ### npm
12 |
13 | ```shell
14 | npm install angular-sanitize
15 | ```
16 |
17 | Add a `
21 | ```
22 |
23 | Then add `ngSanitize` as a dependency for your app:
24 |
25 | ```javascript
26 | angular.module('myApp', ['ngSanitize']);
27 | ```
28 |
29 | Note that this package is not in CommonJS format, so doing `require('angular-sanitize')` will
30 | return `undefined`.
31 |
32 | ### bower
33 |
34 | ```shell
35 | bower install angular-sanitize
36 | ```
37 |
38 | Add a `
42 | ```
43 |
44 | Then add `ngSanitize` as a dependency for your app:
45 |
46 | ```javascript
47 | angular.module('myApp', ['ngSanitize']);
48 | ```
49 |
50 | ## Documentation
51 |
52 | Documentation is available on the
53 | [AngularJS docs site](http://docs.angularjs.org/api/ngSanitize).
54 |
55 | ## License
56 |
57 | The MIT License
58 |
59 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in
69 | all copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
77 | THE SOFTWARE.
78 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-sanitize/angular-sanitize.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | AngularJS v1.3.6
3 | (c) 2010-2014 Google, Inc. http://angularjs.org
4 | License: MIT
5 | */
6 | (function(n,h,p){'use strict';function E(a){var d=[];s(d,h.noop).chars(a);return d.join("")}function g(a){var d={};a=a.split(",");var c;for(c=0;c=c;e--)d.end&&d.end(f[e]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],m=a,l;for(f.last=function(){return f[f.length-1]};a;){l="";k=!0;if(f.last()&&x[f.last()])a=a.replace(new RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");d.chars&&d.chars(r(b));return""}),e("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(d.comment&&d.comment(a.substring(4,
8 | b)),a=a.substring(b+3),k=!1);else if(y.test(a)){if(b=a.match(y))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(z))a=a.substring(b[0].length),b[0].replace(z,e),k=!1}else K.test(a)&&((b=a.match(A))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(A,c)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),d.chars&&d.chars(r(l)))}if(a==m)throw L("badparse",a);m=a}e()}function r(a){if(!a)return"";var d=M.exec(a);a=d[1];var c=d[3];if(d=d[2])q.innerHTML=
9 | d.replace(//g,">")}function s(a,d){var c=!1,e=h.bind(a,a.push);return{start:function(a,k,f){a=h.lowercase(a);!c&&x[a]&&(c=a);c||!0!==C[a]||(e("<"),e(a),h.forEach(k,function(c,f){var k=
10 | h.lowercase(f),g="img"===a&&"src"===k||"background"===k;!0!==P[k]||!0===D[k]&&!d(c,g)||(e(" "),e(f),e('="'),e(B(c)),e('"'))}),e(f?"/>":">"))},end:function(a){a=h.lowercase(a);c||!0!==C[a]||(e(""),e(a),e(">"));a==c&&(c=!1)},chars:function(a){c||e(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,z=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^,
11 | J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,y=/]*?)>/i,I=/"\u201d\u2019]/,c=/^mailto:/;return function(e,b){function k(a){a&&g.push(E(a))}
15 | function f(a,c){g.push("');k(c);g.push("")}if(!e)return e;for(var m,l=e,g=[],n,p;m=l.match(d);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),f(n,m[0].replace(c,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
16 | //# sourceMappingURL=angular-sanitize.min.js.map
17 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-sanitize/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-sanitize",
3 | "version": "1.3.6",
4 | "main": "./angular-sanitize.js",
5 | "ignore": [],
6 | "dependencies": {
7 | "angular": "1.3.6"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-sanitize/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-sanitize",
3 | "version": "1.3.6",
4 | "description": "AngularJS module for sanitizing HTML",
5 | "main": "angular-sanitize.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/angular/angular.js.git"
12 | },
13 | "keywords": [
14 | "angular",
15 | "framework",
16 | "browser",
17 | "html",
18 | "client-side"
19 | ],
20 | "author": "Angular Core Team ",
21 | "license": "MIT",
22 | "bugs": {
23 | "url": "https://github.com/angular/angular.js/issues"
24 | },
25 | "homepage": "http://angularjs.org"
26 | }
27 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-ui-router",
3 | "version": "0.2.13",
4 | "main": "./release/angular-ui-router.js",
5 | "dependencies": {
6 | "angular": ">= 1.0.8"
7 | },
8 | "ignore": [
9 | "**/.*",
10 | "node_modules",
11 | "bower_components",
12 | "component.json",
13 | "package.json",
14 | "lib",
15 | "config",
16 | "sample",
17 | "test",
18 | "tests",
19 | "ngdoc_assets",
20 | "Gruntfile.js",
21 | "files.js"
22 | ],
23 | "homepage": "https://github.com/angular-ui/ui-router",
24 | "_release": "0.2.13",
25 | "_resolution": {
26 | "type": "version",
27 | "tag": "0.2.13",
28 | "commit": "c3d543aae43d4600512520a0d70723ac31f2cb62"
29 | },
30 | "_source": "git://github.com/angular-ui/ui-router.git",
31 | "_target": "0.2.13",
32 | "_originalSource": "angular-ui-router"
33 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 |
2 | # Report an Issue
3 |
4 | Help us make UI-Router better! If you think you might have found a bug, or some other weirdness, start by making sure
5 | it hasn't already been reported. You can [search through existing issues](https://github.com/angular-ui/ui-router/search?q=wat%3F&type=Issues)
6 | to see if someone's reported one similar to yours.
7 |
8 | If not, then [create a plunkr](http://bit.ly/UIR-Plunk) that demonstrates the problem (try to use as little code
9 | as possible: the more minimalist, the faster we can debug it).
10 |
11 | Next, [create a new issue](https://github.com/angular-ui/ui-router/issues/new) that briefly explains the problem,
12 | and provides a bit of background as to the circumstances that triggered it. Don't forget to include the link to
13 | that plunkr you created!
14 |
15 | **Note**: If you're unsure how a feature is used, or are encountering some unexpected behavior that you aren't sure
16 | is a bug, it's best to talk it out on
17 | [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) before reporting it. This
18 | keeps development streamlined, and helps us focus on building great software.
19 |
20 |
21 | Issues only! |
22 | -------------|
23 | Please keep in mind that the issue tracker is for *issues*. Please do *not* post an issue if you need help or support. Instead, see one of the above-mentioned forums or [IRC](irc://irc.freenode.net/#angularjs). |
24 |
25 | ####Purple Labels
26 | A purple label means that **you** need to take some further action.
27 | - : Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue.
28 | - : Please [create a plunkr](http://bit.ly/UIR-Plunk)
29 | - : We suspect your issue is really a help request, or could be answered by the community. Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router). If you determine that is an actual issue, please explain why.
30 |
31 | If your issue gets labeled with purple label, no further action will be taken until you respond to the label appropriately.
32 |
33 | # Contribute
34 |
35 | **(1)** See the **[Developing](#developing)** section below, to get the development version of UI-Router up and running on your local machine.
36 |
37 | **(2)** Check out the [roadmap](https://github.com/angular-ui/ui-router/milestones) to see where the project is headed, and if your feature idea fits with where we're headed.
38 |
39 | **(3)** If you're not sure, [open an RFC](https://github.com/angular-ui/ui-router/issues/new?title=RFC:%20My%20idea) to get some feedback on your idea.
40 |
41 | **(4)** Finally, commit some code and open a pull request. Code & commits should abide by the following rules:
42 |
43 | - *Always* have test coverage for new features (or regression tests for bug fixes), and *never* break existing tests
44 | - Commits should represent one logical change each; if a feature goes through multiple iterations, squash your commits down to one
45 | - Make sure to follow the [Angular commit message format](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) so your change will appear in the changelog of the next release.
46 | - Changes should always respect the coding style of the project
47 |
48 |
49 |
50 | # Developing
51 |
52 | UI-Router uses grunt >= 0.4.x
. Make sure to upgrade your environment and read the
53 | [Migration Guide](http://gruntjs.com/upgrading-from-0.3-to-0.4).
54 |
55 | Dependencies for building from source and running tests:
56 |
57 | * [grunt-cli](https://github.com/gruntjs/grunt-cli) - run: `$ npm install -g grunt-cli`
58 | * Then, install the development dependencies by running `$ npm install` from the project directory
59 |
60 | There are a number of targets in the gruntfile that are used to generating different builds:
61 |
62 | * `grunt`: Perform a normal build, runs jshint and karma tests
63 | * `grunt build`: Perform a normal build
64 | * `grunt dist`: Perform a clean build and generate documentation
65 | * `grunt dev`: Run dev server (sample app) and watch for changes, builds and runs karma tests on changes.
66 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2014 The AngularUI Team, Karsten Sperling
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/api/angular-ui-router.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for Angular JS 1.1.5+ (ui.router module)
2 | // Project: https://github.com/angular-ui/ui-router
3 | // Definitions by: Michel Salib
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module ng.ui {
7 |
8 | interface IState {
9 | name?: string;
10 | template?: string;
11 | templateUrl?: any; // string || () => string
12 | templateProvider?: any; // () => string || IPromise
13 | controller?: any;
14 | controllerAs?: string;
15 | controllerProvider?: any;
16 | resolve?: {};
17 | url?: string;
18 | params?: any;
19 | views?: {};
20 | abstract?: boolean;
21 | onEnter?: (...args: any[]) => void;
22 | onExit?: (...args: any[]) => void;
23 | data?: any;
24 | reloadOnSearch?: boolean;
25 | }
26 |
27 | interface ITypedState extends IState {
28 | data?: T;
29 | }
30 |
31 | interface IStateProvider extends IServiceProvider {
32 | state(name: string, config: IState): IStateProvider;
33 | state(config: IState): IStateProvider;
34 | decorator(name?: string, decorator?: (state: IState, parent: Function) => any): any;
35 | }
36 |
37 | interface IUrlMatcher {
38 | concat(pattern: string): IUrlMatcher;
39 | exec(path: string, searchParams: {}): {};
40 | parameters(): string[];
41 | format(values: {}): string;
42 | }
43 |
44 | interface IUrlMatcherFactory {
45 | compile(pattern: string): IUrlMatcher;
46 | isMatcher(o: any): boolean;
47 | }
48 |
49 | interface IUrlRouterProvider extends IServiceProvider {
50 | when(whenPath: RegExp, handler: Function): IUrlRouterProvider;
51 | when(whenPath: RegExp, handler: any[]): IUrlRouterProvider;
52 | when(whenPath: RegExp, toPath: string): IUrlRouterProvider;
53 | when(whenPath: IUrlMatcher, hanlder: Function): IUrlRouterProvider;
54 | when(whenPath: IUrlMatcher, handler: any[]): IUrlRouterProvider;
55 | when(whenPath: IUrlMatcher, toPath: string): IUrlRouterProvider;
56 | when(whenPath: string, handler: Function): IUrlRouterProvider;
57 | when(whenPath: string, handler: any[]): IUrlRouterProvider;
58 | when(whenPath: string, toPath: string): IUrlRouterProvider;
59 | otherwise(handler: Function): IUrlRouterProvider;
60 | otherwise(handler: any[]): IUrlRouterProvider;
61 | otherwise(path: string): IUrlRouterProvider;
62 | rule(handler: Function): IUrlRouterProvider;
63 | rule(handler: any[]): IUrlRouterProvider;
64 | }
65 |
66 | interface IStateOptions {
67 | location?: any;
68 | inherit?: boolean;
69 | relative?: IState;
70 | notify?: boolean;
71 | reload?: boolean;
72 | }
73 |
74 | interface IHrefOptions {
75 | lossy?: boolean;
76 | inherit?: boolean;
77 | relative?: IState;
78 | absolute?: boolean;
79 | }
80 |
81 | interface IStateService {
82 | go(to: string, params?: {}, options?: IStateOptions): IPromise;
83 | transitionTo(state: string, params?: {}, updateLocation?: boolean): void;
84 | transitionTo(state: string, params?: {}, options?: IStateOptions): void;
85 | includes(state: string, params?: {}): boolean;
86 | is(state:string, params?: {}): boolean;
87 | is(state: IState, params?: {}): boolean;
88 | href(state: IState, params?: {}, options?: IHrefOptions): string;
89 | href(state: string, params?: {}, options?: IHrefOptions): string;
90 | get(state: string): IState;
91 | get(): IState[];
92 | current: IState;
93 | params: any;
94 | reload(): void;
95 | }
96 |
97 | interface IStateParamsService {
98 | [key: string]: any;
99 | }
100 |
101 | interface IStateParams {
102 | [key: string]: any;
103 | }
104 |
105 | interface IUrlRouterService {
106 | /*
107 | * Triggers an update; the same update that happens when the address bar
108 | * url changes, aka $locationChangeSuccess.
109 | *
110 | * This method is useful when you need to use preventDefault() on the
111 | * $locationChangeSuccess event, perform some custom logic (route protection,
112 | * auth, config, redirection, etc) and then finally proceed with the transition
113 | * by calling $urlRouter.sync().
114 | *
115 | */
116 | sync(): void;
117 | }
118 |
119 | interface IUiViewScrollProvider {
120 | /*
121 | * Reverts back to using the core $anchorScroll service for scrolling
122 | * based on the url anchor.
123 | */
124 | useAnchorScroll(): void;
125 | }
126 | }
127 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-ui-router",
3 | "version": "0.2.13",
4 | "main": "./release/angular-ui-router.js",
5 | "dependencies": {
6 | "angular": ">= 1.0.8"
7 | },
8 | "ignore": [
9 | "**/.*",
10 | "node_modules",
11 | "bower_components",
12 | "component.json",
13 | "package.json",
14 | "lib",
15 | "config",
16 | "sample",
17 | "test",
18 | "tests",
19 | "ngdoc_assets",
20 | "Gruntfile.js",
21 | "files.js"
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/src/stateFilters.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @ngdoc filter
3 | * @name ui.router.state.filter:isState
4 | *
5 | * @requires ui.router.state.$state
6 | *
7 | * @description
8 | * Translates to {@link ui.router.state.$state#methods_is $state.is("stateName")}.
9 | */
10 | $IsStateFilter.$inject = ['$state'];
11 | function $IsStateFilter($state) {
12 | var isFilter = function (state) {
13 | return $state.is(state);
14 | };
15 | isFilter.$stateful = true;
16 | return isFilter;
17 | }
18 |
19 | /**
20 | * @ngdoc filter
21 | * @name ui.router.state.filter:includedByState
22 | *
23 | * @requires ui.router.state.$state
24 | *
25 | * @description
26 | * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}.
27 | */
28 | $IncludedByStateFilter.$inject = ['$state'];
29 | function $IncludedByStateFilter($state) {
30 | var includesFilter = function (state) {
31 | return $state.includes(state);
32 | };
33 | includesFilter.$stateful = true;
34 | return includesFilter;
35 | }
36 |
37 | angular.module('ui.router.state')
38 | .filter('isState', $IsStateFilter)
39 | .filter('includedByState', $IncludedByStateFilter);
40 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/src/templateFactory.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @ngdoc object
3 | * @name ui.router.util.$templateFactory
4 | *
5 | * @requires $http
6 | * @requires $templateCache
7 | * @requires $injector
8 | *
9 | * @description
10 | * Service. Manages loading of templates.
11 | */
12 | $TemplateFactory.$inject = ['$http', '$templateCache', '$injector'];
13 | function $TemplateFactory( $http, $templateCache, $injector) {
14 |
15 | /**
16 | * @ngdoc function
17 | * @name ui.router.util.$templateFactory#fromConfig
18 | * @methodOf ui.router.util.$templateFactory
19 | *
20 | * @description
21 | * Creates a template from a configuration object.
22 | *
23 | * @param {object} config Configuration object for which to load a template.
24 | * The following properties are search in the specified order, and the first one
25 | * that is defined is used to create the template:
26 | *
27 | * @param {string|object} config.template html string template or function to
28 | * load via {@link ui.router.util.$templateFactory#fromString fromString}.
29 | * @param {string|object} config.templateUrl url to load or a function returning
30 | * the url to load via {@link ui.router.util.$templateFactory#fromUrl fromUrl}.
31 | * @param {Function} config.templateProvider function to invoke via
32 | * {@link ui.router.util.$templateFactory#fromProvider fromProvider}.
33 | * @param {object} params Parameters to pass to the template function.
34 | * @param {object} locals Locals to pass to `invoke` if the template is loaded
35 | * via a `templateProvider`. Defaults to `{ params: params }`.
36 | *
37 | * @return {string|object} The template html as a string, or a promise for
38 | * that string,or `null` if no template is configured.
39 | */
40 | this.fromConfig = function (config, params, locals) {
41 | return (
42 | isDefined(config.template) ? this.fromString(config.template, params) :
43 | isDefined(config.templateUrl) ? this.fromUrl(config.templateUrl, params) :
44 | isDefined(config.templateProvider) ? this.fromProvider(config.templateProvider, params, locals) :
45 | null
46 | );
47 | };
48 |
49 | /**
50 | * @ngdoc function
51 | * @name ui.router.util.$templateFactory#fromString
52 | * @methodOf ui.router.util.$templateFactory
53 | *
54 | * @description
55 | * Creates a template from a string or a function returning a string.
56 | *
57 | * @param {string|object} template html template as a string or function that
58 | * returns an html template as a string.
59 | * @param {object} params Parameters to pass to the template function.
60 | *
61 | * @return {string|object} The template html as a string, or a promise for that
62 | * string.
63 | */
64 | this.fromString = function (template, params) {
65 | return isFunction(template) ? template(params) : template;
66 | };
67 |
68 | /**
69 | * @ngdoc function
70 | * @name ui.router.util.$templateFactory#fromUrl
71 | * @methodOf ui.router.util.$templateFactory
72 | *
73 | * @description
74 | * Loads a template from the a URL via `$http` and `$templateCache`.
75 | *
76 | * @param {string|Function} url url of the template to load, or a function
77 | * that returns a url.
78 | * @param {Object} params Parameters to pass to the url function.
79 | * @return {string|Promise.} The template html as a string, or a promise
80 | * for that string.
81 | */
82 | this.fromUrl = function (url, params) {
83 | if (isFunction(url)) url = url(params);
84 | if (url == null) return null;
85 | else return $http
86 | .get(url, { cache: $templateCache, headers: { Accept: 'text/html' }})
87 | .then(function(response) { return response.data; });
88 | };
89 |
90 | /**
91 | * @ngdoc function
92 | * @name ui.router.util.$templateFactory#fromProvider
93 | * @methodOf ui.router.util.$templateFactory
94 | *
95 | * @description
96 | * Creates a template by invoking an injectable provider function.
97 | *
98 | * @param {Function} provider Function to invoke via `$injector.invoke`
99 | * @param {Object} params Parameters for the template.
100 | * @param {Object} locals Locals to pass to `invoke`. Defaults to
101 | * `{ params: params }`.
102 | * @return {string|Promise.} The template html as a string, or a promise
103 | * for that string.
104 | */
105 | this.fromProvider = function (provider, params, locals) {
106 | return $injector.invoke(provider, null, locals || { params: params });
107 | };
108 | }
109 |
110 | angular.module('ui.router.util').service('$templateFactory', $TemplateFactory);
111 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/src/view.js:
--------------------------------------------------------------------------------
1 |
2 | $ViewProvider.$inject = [];
3 | function $ViewProvider() {
4 |
5 | this.$get = $get;
6 | /**
7 | * @ngdoc object
8 | * @name ui.router.state.$view
9 | *
10 | * @requires ui.router.util.$templateFactory
11 | * @requires $rootScope
12 | *
13 | * @description
14 | *
15 | */
16 | $get.$inject = ['$rootScope', '$templateFactory'];
17 | function $get( $rootScope, $templateFactory) {
18 | return {
19 | // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... })
20 | /**
21 | * @ngdoc function
22 | * @name ui.router.state.$view#load
23 | * @methodOf ui.router.state.$view
24 | *
25 | * @description
26 | *
27 | * @param {string} name name
28 | * @param {object} options option object.
29 | */
30 | load: function load(name, options) {
31 | var result, defaults = {
32 | template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {}
33 | };
34 | options = extend(defaults, options);
35 |
36 | if (options.view) {
37 | result = $templateFactory.fromConfig(options.view, options.params, options.locals);
38 | }
39 | if (result && options.notify) {
40 | /**
41 | * @ngdoc event
42 | * @name ui.router.state.$state#$viewContentLoading
43 | * @eventOf ui.router.state.$view
44 | * @eventType broadcast on root scope
45 | * @description
46 | *
47 | * Fired once the view **begins loading**, *before* the DOM is rendered.
48 | *
49 | * @param {Object} event Event object.
50 | * @param {Object} viewConfig The view config properties (template, controller, etc).
51 | *
52 | * @example
53 | *
54 | *
55 | * $scope.$on('$viewContentLoading',
56 | * function(event, viewConfig){
57 | * // Access to all the view config properties.
58 | * // and one special property 'targetView'
59 | * // viewConfig.targetView
60 | * });
61 | *
62 | */
63 | $rootScope.$broadcast('$viewContentLoading', options);
64 | }
65 | return result;
66 | }
67 | };
68 | }
69 | }
70 |
71 | angular.module('ui.router.state').provider('$view', $ViewProvider);
72 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular-ui-router/src/viewScroll.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @ngdoc object
3 | * @name ui.router.state.$uiViewScrollProvider
4 | *
5 | * @description
6 | * Provider that returns the {@link ui.router.state.$uiViewScroll} service function.
7 | */
8 | function $ViewScrollProvider() {
9 |
10 | var useAnchorScroll = false;
11 |
12 | /**
13 | * @ngdoc function
14 | * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll
15 | * @methodOf ui.router.state.$uiViewScrollProvider
16 | *
17 | * @description
18 | * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for
19 | * scrolling based on the url anchor.
20 | */
21 | this.useAnchorScroll = function () {
22 | useAnchorScroll = true;
23 | };
24 |
25 | /**
26 | * @ngdoc object
27 | * @name ui.router.state.$uiViewScroll
28 | *
29 | * @requires $anchorScroll
30 | * @requires $timeout
31 | *
32 | * @description
33 | * When called with a jqLite element, it scrolls the element into view (after a
34 | * `$timeout` so the DOM has time to refresh).
35 | *
36 | * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,
37 | * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}.
38 | */
39 | this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {
40 | if (useAnchorScroll) {
41 | return $anchorScroll;
42 | }
43 |
44 | return function ($element) {
45 | $timeout(function () {
46 | $element[0].scrollIntoView();
47 | }, 0, false);
48 | };
49 | }];
50 | }
51 |
52 | angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);
53 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular",
3 | "version": "1.3.6",
4 | "main": "./angular.js",
5 | "ignore": [],
6 | "dependencies": {},
7 | "homepage": "https://github.com/angular/bower-angular",
8 | "_release": "1.3.6",
9 | "_resolution": {
10 | "type": "version",
11 | "tag": "v1.3.6",
12 | "commit": "a525f1199d44c2aa6d69b1900d4a2e950adc5752"
13 | },
14 | "_source": "git://github.com/angular/bower-angular.git",
15 | "_target": "1.3.6",
16 | "_originalSource": "angular"
17 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular/README.md:
--------------------------------------------------------------------------------
1 | # packaged angular
2 |
3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | You can install this package either with `npm` or with `bower`.
10 |
11 | ### npm
12 |
13 | ```shell
14 | npm install angular
15 | ```
16 |
17 | Then add a `
21 | ```
22 |
23 | Note that this package is not in CommonJS format, so doing `require('angular')` will return `undefined`.
24 | If you're using [Browserify](https://github.com/substack/node-browserify), you can use
25 | [exposify](https://github.com/thlorenz/exposify) to have `require('angular')` return the `angular`
26 | global.
27 |
28 | ### bower
29 |
30 | ```shell
31 | bower install angular
32 | ```
33 |
34 | Then add a `
38 | ```
39 |
40 | ## Documentation
41 |
42 | Documentation is available on the
43 | [AngularJS docs site](http://docs.angularjs.org/).
44 |
45 | ## License
46 |
47 | The MIT License
48 |
49 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
50 |
51 | Permission is hereby granted, free of charge, to any person obtaining a copy
52 | of this software and associated documentation files (the "Software"), to deal
53 | in the Software without restriction, including without limitation the rights
54 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
55 | copies of the Software, and to permit persons to whom the Software is
56 | furnished to do so, subject to the following conditions:
57 |
58 | The above copyright notice and this permission notice shall be included in
59 | all copies or substantial portions of the Software.
60 |
61 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
62 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
63 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
64 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
65 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
66 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
67 | THE SOFTWARE.
68 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular/angular-csp.css:
--------------------------------------------------------------------------------
1 | /* Include this file in your html if you are using the CSP mode. */
2 |
3 | @charset "UTF-8";
4 |
5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
6 | .ng-cloak, .x-ng-cloak,
7 | .ng-hide:not(.ng-hide-animate) {
8 | display: none !important;
9 | }
10 |
11 | ng\:form {
12 | display: block;
13 | }
14 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular/angular.min.js.gzip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/lib/angular/angular.min.js.gzip
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular",
3 | "version": "1.3.6",
4 | "main": "./angular.js",
5 | "ignore": [],
6 | "dependencies": {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/angular/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular",
3 | "version": "1.3.6",
4 | "description": "HTML enhanced for web apps",
5 | "main": "angular.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/angular/angular.js.git"
12 | },
13 | "keywords": [
14 | "angular",
15 | "framework",
16 | "browser",
17 | "client-side"
18 | ],
19 | "author": "Angular Core Team ",
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/angular/angular.js/issues"
23 | },
24 | "homepage": "http://angularjs.org"
25 | }
26 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hammerjs",
3 | "version": "2.0.4",
4 | "main": "hammer.js",
5 | "ignore": [
6 | "tests",
7 | "src"
8 | ],
9 | "homepage": "https://github.com/EightMedia/hammer.js",
10 | "_release": "2.0.4",
11 | "_resolution": {
12 | "type": "version",
13 | "tag": "2.0.4",
14 | "commit": "7fc11efb37d6f2334ce957e26e9cf53690e10fa5"
15 | },
16 | "_source": "git://github.com/EightMedia/hammer.js.git",
17 | "_target": ">=2.0.0",
18 | "_originalSource": "hammerjs"
19 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "json": "bower.json"
3 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/.gitignore:
--------------------------------------------------------------------------------
1 | # ide
2 | .idea
3 | .iml
4 |
5 | # node
6 | lib-cov
7 | *.seed
8 | *.log
9 | *.csv
10 | *.dat
11 | *.out
12 | *.pid
13 | *.gz
14 |
15 | pids
16 | logs
17 | results
18 | tests/build.js
19 |
20 | npm-debug.log
21 | node_modules
22 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/.jscsrc:
--------------------------------------------------------------------------------
1 | {
2 | "preset": "google",
3 | "excludeFiles": [
4 | "*.js",
5 | "tests/**/assets",
6 | "node_modules/**"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "browser": true,
3 | "curly": true,
4 | "eqnull": true,
5 | "expr": true,
6 | "maxerr": 100,
7 | "freeze": true,
8 | "newcap": true,
9 | "node": true,
10 | "quotmark": "single",
11 | "strict": true,
12 | "sub": true,
13 | "trailing": true,
14 | "undef": true,
15 | "unused": true,
16 | "camelcase": true,
17 | "indent": 4,
18 | "validthis": true,
19 | "globals": {
20 | "define": false
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "0.10"
4 |
5 | before_script:
6 | - npm install -g grunt-cli
7 |
8 | script:
9 | - grunt test-travis
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ### 2.0.4, 2014-09-28
4 | - Fix IE pointer issue. [#665](https://github.com/hammerjs/hammer.js/pull/665)
5 | - Fix multi-touch at different elements. [#668](https://github.com/hammerjs/hammer.js/pull/668)
6 | - Added experimental [single-user Touch input handler](src/input/singletouch.js). This to improve performance/ux when only a single user has to be supported. Plans are to release 2.1 with this as default, and a settings to enable the multi-user handler.
7 |
8 | ### 2.0.3, 2014-09-10
9 | - Manager.set improvements.
10 | - Fix requireFailure() call in Manager.options.recognizers.
11 | - Make DIRECTION_ALL for pan and swipe gestures less blocking.
12 | - Fix Swipe recognizer threshold option.
13 | - Expose the Input classes.
14 | - Added the option `inputClass` to set the used input handler.
15 |
16 | ### 2.0.2, 2014-07-26
17 | - Improved mouse and pointer-events input, now able to move outside the window.
18 | - Added the export name (`Hammer`) as an argument to the wrapper.
19 | - Add the option *experimental* `inputTarget` to change the element that receives the events.
20 | - Improved performance when only one touch being active.
21 | - Fixed the jumping deltaXY bug when going from single to multi-touch.
22 | - Improved velocity calculations.
23 |
24 | ### 2.0.1, 2014-07-15
25 | - Fix issue when no document.body is available
26 | - Added pressup event for the press recognizer
27 | - Removed alternative for Object.create
28 |
29 | ### 2.0.0, 2014-07-11
30 | - Full rewrite of the library.
31 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to Hammer.js
2 |
3 | Looking to contribute something to Hammer.js? **Here's how you can help.**
4 |
5 |
6 | ## Reporting issues
7 |
8 | We only accept issues that are bug reports or feature requests. Bugs must be
9 | isolated and reproducible problems that can be fixed within the Hammer.js.
10 | Please read the following guidelines before opening any issue.
11 |
12 | 1. [**Read the documentation**](https://hammerjs.github.io)
13 |
14 | 2. **Search for existing issues.** We get a lot of duplicate issues, and you'd
15 | help us out a lot by first checking if someone else has reported the same issue.
16 | Moreover, the issue may have already been resolved with a fix available. Also
17 | take a look if your problem is explained at the Wiki.
18 |
19 | 3. **Create an isolated and reproducible test case.** Be sure the problem exists
20 | in Hammer's code with a reduced test case that should be included in each bug
21 | report.
22 |
23 | 4. **Include a live example.** Make use of jsFiddle or jsBin to share your
24 | isolated test cases. Also, a screen capture would work, with tools like LICEcap.
25 |
26 | 5. **Share as much information as possible.** Include operating system and
27 | version, browser and version, version of Hammer.js, customized or vanilla build,
28 | etc. where appropriate. Also include steps to reproduce the bug.
29 |
30 | ## Pull requests
31 |
32 | 1. Changes must be done in `/src` files, never just the compiled files. Also, don't
33 | commit the compiled files.
34 |
35 | 2. Try not to pollute your pull request with unintended changes. Keep them simple
36 | and small
37 |
38 | 3. Try to share which browsers your code has been tested in before submitting a
39 | pull request
40 |
41 | 4. Write tests for your code, these can be found in `/tests`.
42 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/Gruntfile.coffee:
--------------------------------------------------------------------------------
1 | module.exports = (grunt) ->
2 | grunt.initConfig
3 | pkg: grunt.file.readJSON 'package.json'
4 |
5 | usebanner:
6 | taskName:
7 | options:
8 | position: 'top'
9 | banner: '
10 | /*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n
11 | * <%= pkg.homepage %>\n
12 | *\n
13 | * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;\n
14 | * Licensed under the <%= _.pluck(pkg.licenses, "type").join(", ") %> license */'
15 | linebreak: true
16 | files:
17 | src: ['./hammer.js','./hammer.min.js']
18 |
19 | concat:
20 | build:
21 | src: [
22 | 'src/hammer.prefix'
23 | 'src/utils.js'
24 | 'src/input.js'
25 | 'src/input/*.js'
26 | 'src/touchaction.js'
27 | 'src/recognizer.js'
28 | 'src/recognizers/*.js'
29 | 'src/hammer.js'
30 | 'src/manager.js'
31 | 'src/expose.js'
32 | 'src/hammer.suffix']
33 | dest: 'hammer.js'
34 |
35 | uglify:
36 | min:
37 | options:
38 | report: 'gzip'
39 | sourceMap: 'hammer.min.map'
40 | files:
41 | 'hammer.min.js': ['hammer.js']
42 | # special test build that exposes everything so it's testable
43 | test:
44 | options:
45 | wrap: "$H"
46 | comments: 'all'
47 | exportAll: true
48 | mangle: false
49 | beautify: true
50 | compress:
51 | global_defs:
52 | exportName: 'Hammer'
53 | files:
54 | 'tests/build.js': [
55 | 'src/utils.js'
56 | 'src/input.js'
57 | 'src/input/*.js'
58 | 'src/touchaction.js'
59 | 'src/recognizer.js'
60 | 'src/recognizers/*.js'
61 | 'src/hammer.js'
62 | 'src/manager.js'
63 | 'src/expose.js']
64 |
65 | 'string-replace':
66 | version:
67 | files:
68 | 'hammer.js': 'hammer.js'
69 | options:
70 | replacements: [
71 | pattern: '{{PKG_VERSION}}'
72 | replacement: '<%= pkg.version %>'
73 | ]
74 |
75 | jshint:
76 | options:
77 | jshintrc: true
78 | build:
79 | src: ['hammer.js']
80 |
81 | jscs:
82 | src: [
83 | 'src/**/*.js'
84 | 'tests/unit/*.js'
85 | ]
86 | options:
87 | config: "./.jscsrc"
88 | force: true
89 |
90 | watch:
91 | scripts:
92 | files: ['src/**/*.js']
93 | tasks: ['concat','string-replace','uglify','jshint','jscs']
94 | options:
95 | interrupt: true
96 |
97 | connect:
98 | server:
99 | options:
100 | hostname: "0.0.0.0"
101 | port: 8000
102 |
103 | qunit:
104 | all: ['tests/unit/index.html']
105 |
106 |
107 | # Load tasks
108 | grunt.loadNpmTasks 'grunt-contrib-concat'
109 | grunt.loadNpmTasks 'grunt-contrib-uglify'
110 | grunt.loadNpmTasks 'grunt-contrib-qunit'
111 | grunt.loadNpmTasks 'grunt-contrib-watch'
112 | grunt.loadNpmTasks 'grunt-contrib-jshint'
113 | grunt.loadNpmTasks 'grunt-contrib-connect'
114 | grunt.loadNpmTasks 'grunt-string-replace'
115 | grunt.loadNpmTasks 'grunt-banner'
116 | grunt.loadNpmTasks 'grunt-jscs-checker'
117 |
118 | # Default task(s)
119 | grunt.registerTask 'default', ['connect', 'watch']
120 | grunt.registerTask 'default-test', ['connect', 'uglify:test', 'watch']
121 | grunt.registerTask 'build', ['concat', 'string-replace', 'uglify:min', 'usebanner', 'test']
122 | grunt.registerTask 'test', ['jshint', 'jscs', 'uglify:test', 'qunit']
123 | grunt.registerTask 'test-travis', ['build']
124 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (C) 2011-2014 by Jorik Tangelder (Eight Media)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/README.md:
--------------------------------------------------------------------------------
1 | # Hammer.js 2.0 [](https://travis-ci.org/hammerjs/hammer.js/)
2 |
3 | Visit [hammerjs.github.io](http://hammerjs.github.io) for documentation.
4 |
5 | You can get the pre-build versions from the Hammer.js website, or do this by yourself running
6 | `npm install -g grunt-cli && npm install && grunt build`
7 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hammerjs",
3 | "version": "2.0.4",
4 | "main": "hammer.js",
5 | "ignore": [
6 | "tests",
7 | "src"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hammerjs",
3 | "version": "2.0.3",
4 | "main": "hammer.js",
5 | "scripts": [
6 | "hammer.js"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/hammerjs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hammerjs",
3 | "title": "Hammer.JS",
4 | "description": "A javascript library for multi-touch gestures",
5 | "version": "2.0.4",
6 | "homepage": "http://hammerjs.github.io/",
7 | "licenses": [
8 | {
9 | "type": "MIT",
10 | "url": "https://github.com/hammerjs/hammer.js/blob/master/LICENSE.md"
11 | }
12 | ],
13 | "keywords": [
14 | "touch",
15 | "gestures"
16 | ],
17 | "author": {
18 | "name": "Jorik Tangelder",
19 | "email": "j.tangelder@gmail.com"
20 | },
21 | "repository": {
22 | "type": "git",
23 | "url": "git://github.com/hammerjs/hammer.js.git"
24 | },
25 | "bugs": {
26 | "url": "https://github.com/hammerjs/hammer.js/issues"
27 | },
28 | "dependencies": {},
29 | "devDependencies": {
30 | "grunt": "0.4.x",
31 | "grunt-banner": "^0.2.3",
32 | "grunt-contrib-concat": "0.4.x",
33 | "grunt-contrib-connect": "0.7.x",
34 | "grunt-contrib-jshint": "0.10.x",
35 | "grunt-contrib-qunit": "^0.5.1",
36 | "grunt-contrib-uglify": "0.4.x",
37 | "grunt-contrib-watch": "0.6.x",
38 | "grunt-jscs-checker": "^0.4.1",
39 | "grunt-string-replace": "^0.2.7",
40 | "hammer-jquery": "git://github.com/hammerjs/jquery.hammer.js#master",
41 | "hammer-simulator": "git://github.com/hammerjs/simulator#master"
42 | },
43 | "main": "hammer.js",
44 | "engines": {
45 | "node": ">=0.8.0"
46 | },
47 | "scripts": {
48 | "test": "grunt test"
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ionic",
3 | "version": "1.0.0-beta.14",
4 | "codename": "magnesium-mongoose",
5 | "homepage": "https://github.com/driftyco/ionic",
6 | "authors": [
7 | "Max Lynch ",
8 | "Adam Bradley ",
9 | "Ben Sperry "
10 | ],
11 | "description": "Advanced HTML5 hybrid mobile app development framework.",
12 | "main": [
13 | "css/ionic.css",
14 | "fonts/*",
15 | "js/ionic.js",
16 | "js/ionic-angular.js"
17 | ],
18 | "keywords": [
19 | "mobile",
20 | "html5",
21 | "ionic",
22 | "cordova",
23 | "phonegap",
24 | "trigger",
25 | "triggerio",
26 | "angularjs",
27 | "angular"
28 | ],
29 | "license": "MIT",
30 | "private": false,
31 | "dependencies": {
32 | "angular": "1.3.6",
33 | "angular-animate": "1.3.6",
34 | "angular-sanitize": "1.3.6",
35 | "angular-ui-router": "0.2.13"
36 | },
37 | "_release": "1.0.0-beta.14",
38 | "_resolution": {
39 | "type": "version",
40 | "tag": "v1.0.0-beta.14",
41 | "commit": "a6aa20bf5361b24bdbaeb34295a5f1c0e6aa609c"
42 | },
43 | "_source": "git://github.com/driftyco/ionic-bower.git",
44 | "_target": "1.0.0-beta.14",
45 | "_originalSource": "driftyco/ionic-bower"
46 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/README.md:
--------------------------------------------------------------------------------
1 | # ionic-bower
2 |
3 | Bower repository for [Ionic Framework](http://github.com/driftyco/ionic)
4 |
5 | ### Usage
6 |
7 | Include `js/ionic.bundle.js` to get ionic and all of its dependencies.
8 |
9 | Alternatively, include the individual ionic files with the dependencies separately.
10 |
11 | ### Versions
12 |
13 | To install the latest stable version, `bower install driftyco/ionic-bower#v1.0.0-beta.13`
14 |
15 | To install the latest nightly release, `bower install driftyco/ionic-bower#master`
16 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ionic",
3 | "version": "1.0.0-beta.14",
4 | "codename": "magnesium-mongoose",
5 | "homepage": "https://github.com/driftyco/ionic",
6 | "authors": [
7 | "Max Lynch ",
8 | "Adam Bradley ",
9 | "Ben Sperry "
10 | ],
11 | "description": "Advanced HTML5 hybrid mobile app development framework.",
12 | "main": [
13 | "css/ionic.css",
14 | "fonts/*",
15 | "js/ionic.js",
16 | "js/ionic-angular.js"
17 | ],
18 | "keywords": [
19 | "mobile",
20 | "html5",
21 | "ionic",
22 | "cordova",
23 | "phonegap",
24 | "trigger",
25 | "triggerio",
26 | "angularjs",
27 | "angular"
28 | ],
29 | "license": "MIT",
30 | "private": false,
31 | "dependencies": {
32 | "angular": "1.3.6",
33 | "angular-animate": "1.3.6",
34 | "angular-sanitize": "1.3.6",
35 | "angular-ui-router": "0.2.13"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/fonts/ionicons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/lib/ionic/fonts/ionicons.eot
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/fonts/ionicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/lib/ionic/fonts/ionicons.ttf
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/fonts/ionicons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/lib/ionic/fonts/ionicons.woff
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_action-sheet.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Action Sheets
3 | * --------------------------------------------------
4 | */
5 |
6 | .action-sheet-backdrop {
7 | @include transition(background-color 300ms ease-in-out);
8 | position: fixed;
9 | top: 0;
10 | left: 0;
11 | z-index: $z-index-action-sheet;
12 | width: 100%;
13 | height: 100%;
14 | background-color: rgba(0,0,0,0);
15 |
16 | &.active {
17 | background-color: rgba(0,0,0,0.5);
18 | }
19 | }
20 |
21 | .action-sheet-wrapper {
22 | @include translate3d(0, 100%, 0);
23 | @include transition(all ease-in-out 300ms);
24 | position: absolute;
25 | bottom: 0;
26 | width: 100%;
27 | }
28 |
29 | .action-sheet-up {
30 | @include translate3d(0, 0, 0);
31 | }
32 |
33 | .action-sheet {
34 | margin-left: 15px;
35 | margin-right: 15px;
36 | width: auto;
37 | z-index: $z-index-action-sheet;
38 | overflow: hidden;
39 |
40 | .button {
41 | display: block;
42 | padding: 1px;
43 | width: 100%;
44 | border-radius: 0;
45 |
46 | background-color: transparent;
47 |
48 | color: $positive;
49 | font-size: 18px;
50 |
51 | &.destructive {
52 | color: $assertive;
53 | }
54 | }
55 | }
56 |
57 | .action-sheet-title {
58 | padding: 10px;
59 | color: lighten($base-color, 40%);
60 | text-align: center;
61 | font-size: 12px;
62 | }
63 |
64 | .action-sheet-group {
65 | margin-bottom: 5px;
66 | border-radius: $sheet-border-radius;
67 | background-color: #fff;
68 | .button {
69 | border-width: 1px 0px 0px 0px;
70 | border-radius: 0;
71 |
72 | &.active {
73 | background-color: transparent;
74 | color: inherit;
75 | }
76 | }
77 | .button:first-child:last-child {
78 | border-width: 0;
79 | }
80 | }
81 |
82 | .action-sheet-open {
83 | pointer-events: none;
84 |
85 | &.modal-open .modal {
86 | pointer-events: none;
87 | }
88 |
89 | .action-sheet-backdrop {
90 | pointer-events: auto;
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_animations.scss:
--------------------------------------------------------------------------------
1 |
2 | // Slide up from the bottom, used for modals
3 | // -------------------------------
4 |
5 | .slide-in-up {
6 | @include translate3d(0, 100%, 0);
7 | }
8 | .slide-in-up.ng-enter,
9 | .slide-in-up > .ng-enter {
10 | @include transition(all cubic-bezier(.1, .7, .1, 1) 400ms);
11 | }
12 | .slide-in-up.ng-enter-active,
13 | .slide-in-up > .ng-enter-active {
14 | @include translate3d(0, 0, 0);
15 | }
16 |
17 | .slide-in-up.ng-leave,
18 | .slide-in-up > .ng-leave {
19 | @include transition(all ease-in-out 250ms);
20 | }
21 |
22 |
23 | // Scale Out
24 | // Scale from hero (1 in this case) to zero
25 | // -------------------------------
26 |
27 | @-webkit-keyframes scaleOut {
28 | from { -webkit-transform: scale(1); opacity: 1; }
29 | to { -webkit-transform: scale(0.8); opacity: 0; }
30 | }
31 | @keyframes scaleOut {
32 | from { transform: scale(1); opacity: 1; }
33 | to { transform: scale(0.8); opacity: 0; }
34 | }
35 |
36 |
37 | // Super Scale In
38 | // Scale from super (1.x) to duper (1 in this case)
39 | // -------------------------------
40 |
41 | @-webkit-keyframes superScaleIn {
42 | from { -webkit-transform: scale(1.2); opacity: 0; }
43 | to { -webkit-transform: scale(1); opacity: 1 }
44 | }
45 | @keyframes superScaleIn {
46 | from { transform: scale(1.2); opacity: 0; }
47 | to { transform: scale(1); opacity: 1; }
48 | }
49 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_backdrop.scss:
--------------------------------------------------------------------------------
1 |
2 | .backdrop {
3 | position: fixed;
4 | top: 0;
5 | left: 0;
6 | z-index: $z-index-backdrop;
7 |
8 | width: 100%;
9 | height: 100%;
10 |
11 | background-color: $loading-backdrop-bg-color;
12 |
13 | visibility: hidden;
14 | opacity: 0;
15 |
16 | &.visible {
17 | visibility: visible;
18 | }
19 | &.active {
20 | opacity: 1;
21 | }
22 |
23 | @include transition($loading-backdrop-fadein-duration opacity linear);
24 | }
25 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_badge.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Badges
4 | * --------------------------------------------------
5 | */
6 |
7 | .badge {
8 | @include badge-style($badge-default-bg, $badge-default-text);
9 | z-index: $z-index-badge;
10 | display: inline-block;
11 | padding: 3px 8px;
12 | min-width: 10px;
13 | border-radius: $badge-border-radius;
14 | vertical-align: baseline;
15 | text-align: center;
16 | white-space: nowrap;
17 | font-weight: $badge-font-weight;
18 | font-size: $badge-font-size;
19 | line-height: $badge-line-height;
20 |
21 | &:empty {
22 | display: none;
23 | }
24 | }
25 |
26 | //Be sure to override specificity of rule that 'badge color matches tab color by default'
27 | .tabs .tab-item .badge,
28 | .badge {
29 | &.badge-light {
30 | @include badge-style($badge-light-bg, $badge-light-text);
31 | }
32 | &.badge-stable {
33 | @include badge-style($badge-stable-bg, $badge-stable-text);
34 | }
35 | &.badge-positive {
36 | @include badge-style($badge-positive-bg, $badge-positive-text);
37 | }
38 | &.badge-calm {
39 | @include badge-style($badge-calm-bg, $badge-calm-text);
40 | }
41 | &.badge-assertive {
42 | @include badge-style($badge-assertive-bg, $badge-assertive-text);
43 | }
44 | &.badge-balanced {
45 | @include badge-style($badge-balanced-bg, $badge-balanced-text);
46 | }
47 | &.badge-energized {
48 | @include badge-style($badge-energized-bg, $badge-energized-text);
49 | }
50 | &.badge-royal {
51 | @include badge-style($badge-royal-bg, $badge-royal-text);
52 | }
53 | &.badge-dark {
54 | @include badge-style($badge-dark-bg, $badge-dark-text);
55 | }
56 | }
57 |
58 | // Quick fix for labels/badges in buttons
59 | .button .badge {
60 | position: relative;
61 | top: -1px;
62 | }
63 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_button-bar.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Button Bar
4 | * --------------------------------------------------
5 | */
6 |
7 | .button-bar {
8 | @include display-flex();
9 | @include flex(1);
10 | width: 100%;
11 |
12 | &.button-bar-inline {
13 | display: block;
14 | width: auto;
15 |
16 | @include clearfix();
17 |
18 | > .button {
19 | width: auto;
20 | display: inline-block;
21 | float: left;
22 | }
23 | }
24 | }
25 |
26 | .button-bar > .button {
27 | @include flex(1);
28 | display: block;
29 |
30 | overflow: hidden;
31 |
32 | padding: 0 16px;
33 |
34 | width: 0;
35 |
36 | border-width: 1px 0px 1px 1px;
37 | border-radius: 0;
38 | text-align: center;
39 | text-overflow: ellipsis;
40 | white-space: nowrap;
41 |
42 | &:before,
43 | .icon:before {
44 | line-height: 44px;
45 | }
46 |
47 | &:first-child {
48 | border-radius: $button-border-radius 0px 0px $button-border-radius;
49 | }
50 | &:last-child {
51 | border-right-width: 1px;
52 | border-radius: 0px $button-border-radius $button-border-radius 0px;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_button.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Buttons
4 | * --------------------------------------------------
5 | */
6 |
7 | .button {
8 | // set the color defaults
9 | @include button-style($button-default-bg, $button-default-border, $button-default-active-bg, $button-default-active-border, $button-default-text);
10 |
11 | position: relative;
12 | display: inline-block;
13 | margin: 0;
14 | padding: 0 $button-padding;
15 |
16 | min-width: ($button-padding * 3) + $button-font-size;
17 | min-height: $button-height + 5px;
18 |
19 | border-width: $button-border-width;
20 | border-style: solid;
21 | border-radius: $button-border-radius;
22 |
23 | vertical-align: top;
24 | text-align: center;
25 |
26 | text-overflow: ellipsis;
27 | font-size: $button-font-size;
28 | line-height: $button-height - $button-border-width + 1px;
29 |
30 | cursor: pointer;
31 |
32 | &:after {
33 | // used to create a larger button "hit" area
34 | position: absolute;
35 | top: -6px;
36 | right: -6px;
37 | bottom: -6px;
38 | left: -6px;
39 | content: ' ';
40 | }
41 |
42 | .icon {
43 | vertical-align: top;
44 | pointer-events: none;
45 | }
46 |
47 | .icon:before,
48 | &.icon:before,
49 | &.icon-left:before,
50 | &.icon-right:before {
51 | display: inline-block;
52 | padding: 0 0 $button-border-width 0;
53 | vertical-align: inherit;
54 | font-size: $button-icon-size;
55 | line-height: $button-height - $button-border-width;
56 | pointer-events: none;
57 | }
58 | &.icon-left:before {
59 | float: left;
60 | padding-right: .2em;
61 | padding-left: 0;
62 | }
63 | &.icon-right:before {
64 | float: right;
65 | padding-right: 0;
66 | padding-left: .2em;
67 | }
68 |
69 | &.button-block, &.button-full {
70 | margin-top: $button-block-margin;
71 | margin-bottom: $button-block-margin;
72 | }
73 |
74 | &.button-light {
75 | @include button-style($button-light-bg, $button-light-border, $button-light-active-bg, $button-light-active-border, $button-light-text);
76 | @include button-clear($button-light-border);
77 | @include button-outline($button-light-border);
78 | }
79 |
80 | &.button-stable {
81 | @include button-style($button-stable-bg, $button-stable-border, $button-stable-active-bg, $button-stable-active-border, $button-stable-text);
82 | @include button-clear($button-stable-border);
83 | @include button-outline($button-stable-border);
84 | }
85 |
86 | &.button-positive {
87 | @include button-style($button-positive-bg, $button-positive-border, $button-positive-active-bg, $button-positive-active-border, $button-positive-text);
88 | @include button-clear($button-positive-bg);
89 | @include button-outline($button-positive-bg);
90 | }
91 |
92 | &.button-calm {
93 | @include button-style($button-calm-bg, $button-calm-border, $button-calm-active-bg, $button-calm-active-border, $button-calm-text);
94 | @include button-clear($button-calm-bg);
95 | @include button-outline($button-calm-bg);
96 | }
97 |
98 | &.button-assertive {
99 | @include button-style($button-assertive-bg, $button-assertive-border, $button-assertive-active-bg, $button-assertive-active-border, $button-assertive-text);
100 | @include button-clear($button-assertive-bg);
101 | @include button-outline($button-assertive-bg);
102 | }
103 |
104 | &.button-balanced {
105 | @include button-style($button-balanced-bg, $button-balanced-border, $button-balanced-active-bg, $button-balanced-active-border, $button-balanced-text);
106 | @include button-clear($button-balanced-bg);
107 | @include button-outline($button-balanced-bg);
108 | }
109 |
110 | &.button-energized {
111 | @include button-style($button-energized-bg, $button-energized-border, $button-energized-active-bg, $button-energized-active-border, $button-energized-text);
112 | @include button-clear($button-energized-bg);
113 | @include button-outline($button-energized-bg);
114 | }
115 |
116 | &.button-royal {
117 | @include button-style($button-royal-bg, $button-royal-border, $button-royal-active-bg, $button-royal-active-border, $button-royal-text);
118 | @include button-clear($button-royal-bg);
119 | @include button-outline($button-royal-bg);
120 | }
121 |
122 | &.button-dark {
123 | @include button-style($button-dark-bg, $button-dark-border, $button-dark-active-bg, $button-dark-active-border, $button-dark-text);
124 | @include button-clear($button-dark-bg);
125 | @include button-outline($button-dark-bg);
126 | }
127 | }
128 |
129 | .button-small {
130 | padding: 2px $button-small-padding 1px;
131 | min-width: $button-small-height;
132 | min-height: $button-small-height + 2;
133 | font-size: $button-small-font-size;
134 | line-height: $button-small-height - $button-border-width - 1;
135 |
136 | .icon:before,
137 | &.icon:before,
138 | &.icon-left:before,
139 | &.icon-right:before {
140 | font-size: $button-small-icon-size;
141 | line-height: $button-small-icon-size + 3;
142 | margin-top: 3px;
143 | }
144 | }
145 |
146 | .button-large {
147 | padding: 0 $button-large-padding;
148 | min-width: ($button-large-padding * 3) + $button-large-font-size;
149 | min-height: $button-large-height + 5;
150 | font-size: $button-large-font-size;
151 | line-height: $button-large-height - $button-border-width;
152 |
153 | .icon:before,
154 | &.icon:before,
155 | &.icon-left:before,
156 | &.icon-right:before {
157 | padding-bottom: ($button-border-width * 2);
158 | font-size: $button-large-icon-size;
159 | line-height: $button-large-height - ($button-border-width * 2) - 1;
160 | }
161 | }
162 |
163 | .button-icon {
164 | @include transition(opacity .1s);
165 | padding: 0 6px;
166 | min-width: initial;
167 | border-color: transparent;
168 | background: none;
169 |
170 | &.button.active,
171 | &.button.activated {
172 | border-color: transparent;
173 | background: none;
174 | box-shadow: none;
175 | opacity: 0.3;
176 | }
177 |
178 | .icon:before,
179 | &.icon:before {
180 | font-size: $button-large-icon-size;
181 | }
182 | }
183 |
184 | .button-clear {
185 | @include button-clear($button-default-border);
186 | @include transition(opacity .1s);
187 | padding: 0 $button-clear-padding;
188 | max-height: $button-height;
189 | border-color: transparent;
190 | background: none;
191 | box-shadow: none;
192 |
193 | &.active,
194 | &.activated {
195 | opacity: 0.3;
196 | }
197 | }
198 |
199 | .button-outline {
200 | @include button-outline($button-default-border);
201 | @include transition(opacity .1s);
202 | background: none;
203 | box-shadow: none;
204 | }
205 |
206 | .padding > .button.button-block:first-child {
207 | margin-top: 0;
208 | }
209 |
210 | .button-block {
211 | display: block;
212 | clear: both;
213 |
214 | &:after {
215 | clear: both;
216 | }
217 | }
218 |
219 | .button-full,
220 | .button-full > .button {
221 | display: block;
222 | margin-right: 0;
223 | margin-left: 0;
224 | border-right-width: 0;
225 | border-left-width: 0;
226 | border-radius: 0;
227 | }
228 |
229 | button.button-block,
230 | button.button-full,
231 | .button-full > button.button,
232 | input.button.button-block {
233 | width: 100%;
234 | }
235 |
236 | a.button {
237 | text-decoration: none;
238 |
239 | .icon:before,
240 | &.icon:before,
241 | &.icon-left:before,
242 | &.icon-right:before {
243 | margin-top: 2px;
244 | }
245 | }
246 |
247 | .button.disabled,
248 | .button[disabled] {
249 | opacity: .4;
250 | cursor: default !important;
251 | pointer-events: none;
252 | }
253 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_checkbox.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Checkbox
4 | * --------------------------------------------------
5 | */
6 |
7 | .checkbox {
8 | // set the color defaults
9 | @include checkbox-style($checkbox-off-border-default, $checkbox-on-bg-default, $checkbox-on-border-default);
10 |
11 | position: relative;
12 | display: inline-block;
13 | padding: ($checkbox-height / 4) ($checkbox-width / 4);
14 | cursor: pointer;
15 | }
16 | .checkbox-light {
17 | @include checkbox-style($checkbox-off-border-light, $checkbox-on-bg-light, $checkbox-off-border-light);
18 | }
19 | .checkbox-stable {
20 | @include checkbox-style($checkbox-off-border-stable, $checkbox-on-bg-stable, $checkbox-off-border-stable);
21 | }
22 | .checkbox-positive {
23 | @include checkbox-style($checkbox-off-border-positive, $checkbox-on-bg-positive, $checkbox-off-border-positive);
24 | }
25 | .checkbox-calm {
26 | @include checkbox-style($checkbox-off-border-calm, $checkbox-on-bg-calm, $checkbox-off-border-calm);
27 | }
28 | .checkbox-assertive {
29 | @include checkbox-style($checkbox-off-border-assertive, $checkbox-on-bg-assertive, $checkbox-off-border-assertive);
30 | }
31 | .checkbox-balanced {
32 | @include checkbox-style($checkbox-off-border-balanced, $checkbox-on-bg-balanced, $checkbox-off-border-balanced);
33 | }
34 | .checkbox-energized{
35 | @include checkbox-style($checkbox-off-border-energized, $checkbox-on-bg-energized, $checkbox-off-border-energized);
36 | }
37 | .checkbox-royal {
38 | @include checkbox-style($checkbox-off-border-royal, $checkbox-on-bg-royal, $checkbox-off-border-royal);
39 | }
40 | .checkbox-dark {
41 | @include checkbox-style($checkbox-off-border-dark, $checkbox-on-bg-dark, $checkbox-off-border-dark);
42 | }
43 |
44 | .checkbox input:disabled:before,
45 | .checkbox input:disabled + .checkbox-icon:before {
46 | border-color: $checkbox-off-border-light;
47 | }
48 |
49 | .checkbox input:disabled:checked:before,
50 | .checkbox input:disabled:checked + .checkbox-icon:before {
51 | background: $checkbox-on-bg-light;
52 | }
53 |
54 |
55 | .checkbox.checkbox-input-hidden input {
56 | display: none !important;
57 | }
58 |
59 | .checkbox input,
60 | .checkbox-icon {
61 | position: relative;
62 | width: $checkbox-width;
63 | height: $checkbox-height;
64 | display: block;
65 | border: 0;
66 | background: transparent;
67 | cursor: pointer;
68 | -webkit-appearance: none;
69 |
70 | &:before {
71 | // what the checkbox looks like when its not checked
72 | display: table;
73 | width: 100%;
74 | height: 100%;
75 | border-width: $checkbox-border-width;
76 | border-style: solid;
77 | border-radius: $checkbox-border-radius;
78 | background: $checkbox-off-bg-color;
79 | content: ' ';
80 | @include transition(background-color 20ms ease-in-out);
81 | }
82 | }
83 |
84 | .checkbox input:checked:before,
85 | input:checked + .checkbox-icon:before {
86 | border-width: $checkbox-border-width + 1;
87 | }
88 |
89 | // the checkmark within the box
90 | .checkbox input:after,
91 | .checkbox-icon:after {
92 | @include transition(opacity .05s ease-in-out);
93 | @include rotate(-45deg);
94 | position: absolute;
95 | top: 33%;
96 | left: 25%;
97 | display: table;
98 | width: ($checkbox-width / 2);
99 | height: ($checkbox-width / 4) - 1;
100 | border: $checkbox-check-width solid $checkbox-check-color;
101 | border-top: 0;
102 | border-right: 0;
103 | content: ' ';
104 | opacity: 0;
105 | }
106 |
107 | .platform-android .checkbox-platform input:before,
108 | .platform-android .checkbox-platform .checkbox-icon:before,
109 | .checkbox-square input:before,
110 | .checkbox-square .checkbox-icon:before {
111 | border-radius: 2px;
112 | width: 72%;
113 | height: 72%;
114 | margin-top: 14%;
115 | margin-left: 14%;
116 | border-width: 2px;
117 | }
118 |
119 | .platform-android .checkbox-platform input:after,
120 | .platform-android .checkbox-platform .checkbox-icon:after,
121 | .checkbox-square input:after,
122 | .checkbox-square .checkbox-icon:after {
123 | border-width: 2px;
124 | top: 19%;
125 | left: 25%;
126 | width: ($checkbox-width / 2) - 1;
127 | height: 7px;
128 | }
129 |
130 | .grade-c .checkbox input:after,
131 | .grade-c .checkbox-icon:after {
132 | @include rotate(0);
133 | top: 3px;
134 | left: 4px;
135 | border: none;
136 | color: $checkbox-check-color;
137 | content: '\2713';
138 | font-weight: bold;
139 | font-size: 20px;
140 | }
141 |
142 | // what the checkmark looks like when its checked
143 | .checkbox input:checked:after,
144 | input:checked + .checkbox-icon:after {
145 | opacity: 1;
146 | }
147 |
148 | // make sure item content have enough padding on left to fit the checkbox
149 | .item-checkbox {
150 | padding-left: ($item-padding * 2) + $checkbox-width;
151 |
152 | &.active {
153 | box-shadow: none;
154 | }
155 | }
156 |
157 | // position the checkbox to the left within an item
158 | .item-checkbox .checkbox {
159 | position: absolute;
160 | top: 50%;
161 | right: $item-padding / 2;
162 | left: $item-padding / 2;
163 | z-index: $z-index-item-checkbox;
164 | margin-top: (($checkbox-height + ($checkbox-height / 2)) / 2) * -1;
165 | }
166 |
167 |
168 | .item-checkbox.item-checkbox-right {
169 | padding-right: ($item-padding * 2) + $checkbox-width;
170 | padding-left: $item-padding;
171 | }
172 |
173 | .item-checkbox-right .checkbox input,
174 | .item-checkbox-right .checkbox-icon {
175 | float: right;
176 | }
177 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_form.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Forms
3 | * --------------------------------------------------
4 | */
5 |
6 | // Make all forms have space below them
7 | form {
8 | margin: 0 0 $line-height-base;
9 | }
10 |
11 | // Groups of fields with labels on top (legends)
12 | legend {
13 | display: block;
14 | margin-bottom: $line-height-base;
15 | padding: 0;
16 | width: 100%;
17 | border: $input-border-width solid $input-border;
18 | color: $dark;
19 | font-size: $font-size-base * 1.5;
20 | line-height: $line-height-base * 2;
21 |
22 | small {
23 | color: $stable;
24 | font-size: $line-height-base * .75;
25 | }
26 | }
27 |
28 | // Set font for forms
29 | label,
30 | input,
31 | button,
32 | select,
33 | textarea {
34 | @include font-shorthand($font-size-base, normal, $line-height-base); // Set size, weight, line-height here
35 | }
36 | input,
37 | button,
38 | select,
39 | textarea {
40 | font-family: $font-family-base; // And only set font-family here for those that need it (note the missing label element)
41 | }
42 |
43 |
44 | // Input List
45 | // -------------------------------
46 |
47 | .item-input {
48 | @include display-flex();
49 | @include align-items(center);
50 | position: relative;
51 | overflow: hidden;
52 | padding: 6px 0 5px 16px;
53 |
54 | input {
55 | @include border-radius(0);
56 | @include flex(1, 0, 220px);
57 | @include appearance(none);
58 | margin: 0;
59 | padding-right: 24px;
60 | background-color: transparent;
61 | }
62 |
63 | .button .icon {
64 | @include flex(0, 0, 24px);
65 | position: static;
66 | display: inline-block;
67 | height: auto;
68 | text-align: center;
69 | font-size: 16px;
70 | }
71 |
72 | .button-bar {
73 | @include border-radius(0);
74 | @include flex(1, 0, 220px);
75 | @include appearance(none);
76 | }
77 |
78 | .icon {
79 | min-width: 14px;
80 | }
81 | }
82 |
83 | .item-input-inset {
84 | @include display-flex();
85 | @include align-items(center);
86 | position: relative;
87 | overflow: hidden;
88 | padding: ($item-padding / 3) * 2;
89 | }
90 |
91 | .item-input-wrapper {
92 | @include display-flex();
93 | @include flex(1, 0);
94 | @include align-items(center);
95 | @include border-radius(4px);
96 | padding-right: 8px;
97 | padding-left: 8px;
98 | background: #eee;
99 | }
100 |
101 | .item-input-inset .item-input-wrapper input {
102 | padding-left: 4px;
103 | height: 29px;
104 | background: transparent;
105 | line-height: 18px;
106 | }
107 |
108 | .item-input-wrapper ~ .button {
109 | margin-left: ($item-padding / 3) * 2;
110 | }
111 |
112 | .input-label {
113 | @include flex(1, 0, 100px);
114 | display: table;
115 | padding: 7px 10px 7px 0px;
116 | max-width: 200px;
117 | width: 35%;
118 | color: $input-label-color;
119 | font-size: 16px;
120 | }
121 |
122 | .placeholder-icon {
123 | color: #aaa;
124 | &:first-child {
125 | padding-right: 6px;
126 | }
127 | &:last-child {
128 | padding-left: 6px;
129 | }
130 | }
131 |
132 | .item-stacked-label {
133 | display: block;
134 | background-color: transparent;
135 | box-shadow: none;
136 |
137 | .input-label, .icon {
138 | display: inline-block;
139 | padding: 4px 0 0 0px;
140 | vertical-align: middle;
141 | }
142 | }
143 |
144 | .item-stacked-label input,
145 | .item-stacked-label textarea {
146 | @include border-radius(2px);
147 | padding: 4px 8px 3px 0;
148 | border: none;
149 | background-color: $input-bg;
150 | }
151 | .item-stacked-label input {
152 | overflow: hidden;
153 | height: $line-height-computed + $font-size-base + 12px;
154 | }
155 |
156 | .item-floating-label {
157 | display: block;
158 | background-color: transparent;
159 | box-shadow: none;
160 |
161 | .input-label {
162 | position: relative;
163 | padding: 5px 0 0 0;
164 | opacity: 0;
165 | top: 10px;
166 | @include transition(opacity .15s ease-in, top .2s linear);
167 |
168 | &.has-input {
169 | opacity: 1;
170 | top: 0;
171 | @include transition(opacity .15s ease-in, top .2s linear);
172 | }
173 | }
174 | }
175 |
176 |
177 | // Form Controls
178 | // -------------------------------
179 |
180 | // Shared size and type resets
181 | textarea,
182 | input[type="text"],
183 | input[type="password"],
184 | input[type="datetime"],
185 | input[type="datetime-local"],
186 | input[type="date"],
187 | input[type="month"],
188 | input[type="time"],
189 | input[type="week"],
190 | input[type="number"],
191 | input[type="email"],
192 | input[type="url"],
193 | input[type="search"],
194 | input[type="tel"],
195 | input[type="color"] {
196 | display: block;
197 | padding-top: 2px;
198 | padding-left: 0;
199 | height: $line-height-computed + $font-size-base;
200 | color: $input-color;
201 | vertical-align: middle;
202 | font-size: $font-size-base;
203 | line-height: $font-size-base + 2;
204 | }
205 |
206 | .platform-ios,
207 | .platform-android {
208 | input[type="datetime-local"],
209 | input[type="date"],
210 | input[type="month"],
211 | input[type="time"],
212 | input[type="week"] {
213 | padding-top: 8px;
214 | }
215 | }
216 |
217 | input,
218 | textarea {
219 | width: 100%;
220 | }
221 | textarea {
222 | padding-left: 0;
223 | @include placeholder($input-color-placeholder, -3px);
224 | }
225 |
226 | // Reset height since textareas have rows
227 | textarea {
228 | height: auto;
229 | }
230 |
231 | // Everything else
232 | textarea,
233 | input[type="text"],
234 | input[type="password"],
235 | input[type="datetime"],
236 | input[type="datetime-local"],
237 | input[type="date"],
238 | input[type="month"],
239 | input[type="time"],
240 | input[type="week"],
241 | input[type="number"],
242 | input[type="email"],
243 | input[type="url"],
244 | input[type="search"],
245 | input[type="tel"],
246 | input[type="color"] {
247 | border: 0;
248 | }
249 |
250 | // Position radios and checkboxes better
251 | input[type="radio"],
252 | input[type="checkbox"] {
253 | margin: 0;
254 | line-height: normal;
255 | }
256 |
257 | // Reset width of input images, buttons, radios, checkboxes
258 | input[type="file"],
259 | input[type="image"],
260 | input[type="submit"],
261 | input[type="reset"],
262 | input[type="button"],
263 | input[type="radio"],
264 | input[type="checkbox"] {
265 | width: auto; // Override of generic input selector
266 | }
267 |
268 | // Set the height of file to match text inputs
269 | input[type="file"] {
270 | line-height: $input-height-base;
271 | }
272 |
273 | // Text input classes to hide text caret during scroll
274 | .previous-input-focus,
275 | .cloned-text-input + input,
276 | .cloned-text-input + textarea {
277 | position: absolute !important;
278 | left: -9999px;
279 | width: 200px;
280 | }
281 |
282 |
283 | // Placeholder
284 | // -------------------------------
285 | input,
286 | textarea {
287 | @include placeholder();
288 | }
289 |
290 |
291 | // DISABLED STATE
292 | // -------------------------------
293 |
294 | // Disabled and read-only inputs
295 | input[disabled],
296 | select[disabled],
297 | textarea[disabled],
298 | input[readonly]:not(.cloned-text-input),
299 | textarea[readonly]:not(.cloned-text-input),
300 | select[readonly] {
301 | background-color: $input-bg-disabled;
302 | cursor: not-allowed;
303 | }
304 | // Explicitly reset the colors here
305 | input[type="radio"][disabled],
306 | input[type="checkbox"][disabled],
307 | input[type="radio"][readonly],
308 | input[type="checkbox"][readonly] {
309 | background-color: transparent;
310 | }
311 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_grid.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Grid
3 | * --------------------------------------------------
4 | * Using flexbox for the grid, inspired by Philip Walton:
5 | * http://philipwalton.github.io/solved-by-flexbox/demos/grids/
6 | * By default each .col within a .row will evenly take up
7 | * available width, and the height of each .col with take
8 | * up the height of the tallest .col in the same .row.
9 | */
10 |
11 | .row {
12 | @include display-flex();
13 | padding: ($grid-padding-width / 2);
14 | width: 100%;
15 | }
16 |
17 | .row-wrap {
18 | @include flex-wrap(wrap);
19 | }
20 |
21 | .row + .row {
22 | margin-top: ($grid-padding-width / 2) * -1;
23 | padding-top: 0;
24 | }
25 |
26 | .col {
27 | @include flex(1);
28 | display: block;
29 | padding: ($grid-padding-width / 2);
30 | width: 100%;
31 | }
32 |
33 |
34 | /* Vertically Align Columns */
35 | /* .row-* vertically aligns every .col in the .row */
36 | .row-top {
37 | @include align-items(flex-start);
38 | }
39 | .row-bottom {
40 | @include align-items(flex-end);
41 | }
42 | .row-center {
43 | @include align-items(center);
44 | }
45 | .row-stretch {
46 | @include align-items(stretch);
47 | }
48 | .row-baseline {
49 | @include align-items(baseline);
50 | }
51 |
52 | /* .col-* vertically aligns an individual .col */
53 | .col-top {
54 | @include align-self(flex-start);
55 | }
56 | .col-bottom {
57 | @include align-self(flex-end);
58 | }
59 | .col-center {
60 | @include align-self(center);
61 | }
62 |
63 | /* Column Offsets */
64 | .col-offset-10 {
65 | margin-left: 10%;
66 | }
67 | .col-offset-20 {
68 | margin-left: 20%;
69 | }
70 | .col-offset-25 {
71 | margin-left: 25%;
72 | }
73 | .col-offset-33, .col-offset-34 {
74 | margin-left: 33.3333%;
75 | }
76 | .col-offset-50 {
77 | margin-left: 50%;
78 | }
79 | .col-offset-66, .col-offset-67 {
80 | margin-left: 66.6666%;
81 | }
82 | .col-offset-75 {
83 | margin-left: 75%;
84 | }
85 | .col-offset-80 {
86 | margin-left: 80%;
87 | }
88 | .col-offset-90 {
89 | margin-left: 90%;
90 | }
91 |
92 |
93 | /* Explicit Column Percent Sizes */
94 | /* By default each grid column will evenly distribute */
95 | /* across the grid. However, you can specify individual */
96 | /* columns to take up a certain size of the available area */
97 | .col-10 {
98 | @include flex(0, 0, 10%);
99 | max-width: 10%;
100 | }
101 | .col-20 {
102 | @include flex(0, 0, 20%);
103 | max-width: 20%;
104 | }
105 | .col-25 {
106 | @include flex(0, 0, 25%);
107 | max-width: 25%;
108 | }
109 | .col-33, .col-34 {
110 | @include flex(0, 0, 33.3333%);
111 | max-width: 33.3333%;
112 | }
113 | .col-50 {
114 | @include flex(0, 0, 50%);
115 | max-width: 50%;
116 | }
117 | .col-66, .col-67 {
118 | @include flex(0, 0, 66.6666%);
119 | max-width: 66.6666%;
120 | }
121 | .col-75 {
122 | @include flex(0, 0, 75%);
123 | max-width: 75%;
124 | }
125 | .col-80 {
126 | @include flex(0, 0, 80%);
127 | max-width: 80%;
128 | }
129 | .col-90 {
130 | @include flex(0, 0, 90%);
131 | max-width: 90%;
132 | }
133 |
134 |
135 | /* Responsive Grid Classes */
136 | /* Adding a class of responsive-X to a row */
137 | /* will trigger the flex-direction to */
138 | /* change to column and add some margin */
139 | /* to any columns in the row for clearity */
140 |
141 | @include responsive-grid-break('.responsive-sm', $grid-responsive-sm-break);
142 | @include responsive-grid-break('.responsive-md', $grid-responsive-md-break);
143 | @include responsive-grid-break('.responsive-lg', $grid-responsive-lg-break);
144 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_list.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Lists
4 | * --------------------------------------------------
5 | */
6 |
7 | .list {
8 | position: relative;
9 | padding-top: $item-border-width;
10 | padding-bottom: $item-border-width;
11 | padding-left: 0; // reset padding because ul and ol
12 | margin-bottom: 20px;
13 | }
14 | .list:last-child {
15 | margin-bottom: 0px;
16 | &.card{
17 | margin-bottom:40px;
18 | }
19 | }
20 |
21 |
22 | /**
23 | * List Header
24 | * --------------------------------------------------
25 | */
26 |
27 | .list-header {
28 | margin-top: $list-header-margin-top;
29 | padding: $list-header-padding;
30 | background-color: $list-header-bg;
31 | color: $list-header-color;
32 | font-weight: bold;
33 | }
34 |
35 | // when its a card make sure it doesn't duplicate top and bottom borders
36 | .card.list .list-item {
37 | padding-right: 1px;
38 | padding-left: 1px;
39 | }
40 |
41 |
42 | /**
43 | * Cards and Inset Lists
44 | * --------------------------------------------------
45 | * A card and list-inset are close to the same thing, except a card as a box shadow.
46 | */
47 |
48 | .card,
49 | .list-inset {
50 | overflow: hidden;
51 | margin: ($content-padding * 2) $content-padding;
52 | border-radius: $card-border-radius;
53 | background-color: $card-body-bg;
54 | }
55 |
56 | .card {
57 | padding-top: $item-border-width;
58 | padding-bottom: $item-border-width;
59 | box-shadow: $card-box-shadow;
60 |
61 | .item {
62 | border-left: 0;
63 | border-right: 0;
64 | }
65 | .item:first-child {
66 | border-top: 0;
67 | }
68 | .item:last-child {
69 | border-bottom: 0;
70 | }
71 | }
72 |
73 | .padding {
74 | .card, .list-inset {
75 | margin-left: 0;
76 | margin-right: 0;
77 | }
78 | }
79 |
80 | .card .item,
81 | .list-inset .item,
82 | .padding > .list .item
83 | {
84 | &:first-child {
85 | border-top-left-radius: $card-border-radius;
86 | border-top-right-radius: $card-border-radius;
87 |
88 | .item-content {
89 | border-top-left-radius: $card-border-radius;
90 | border-top-right-radius: $card-border-radius;
91 | }
92 | }
93 | &:last-child {
94 | border-bottom-right-radius: $card-border-radius;
95 | border-bottom-left-radius: $card-border-radius;
96 |
97 | .item-content {
98 | border-bottom-right-radius: $card-border-radius;
99 | border-bottom-left-radius: $card-border-radius;
100 | }
101 | }
102 | }
103 |
104 | .card .item:last-child,
105 | .list-inset .item:last-child {
106 | margin-bottom: $item-border-width * -1;
107 | }
108 |
109 | .card .item,
110 | .list-inset .item,
111 | .padding > .list .item,
112 | .padding-horizontal > .list .item {
113 | margin-right: 0;
114 | margin-left: 0;
115 |
116 | &.item-input input {
117 | padding-right: 44px;
118 | }
119 | }
120 | .padding-left > .list .item {
121 | margin-left: 0;
122 | }
123 | .padding-right > .list .item {
124 | margin-right: 0;
125 | }
126 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_loading.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Loading
4 | * --------------------------------------------------
5 | */
6 |
7 | .loading-container {
8 | position: absolute;
9 | left: 0;
10 | top: 0;
11 | right: 0;
12 | bottom: 0;
13 |
14 | z-index: $z-index-loading;
15 |
16 | @include display-flex();
17 | @include justify-content(center);
18 | @include align-items(center);
19 |
20 | @include transition(0.2s opacity linear);
21 | visibility: hidden;
22 | opacity: 0;
23 |
24 | &:not(.visible) .icon {
25 | display: none;
26 | }
27 | &.visible {
28 | visibility: visible;
29 | }
30 | &.active {
31 | opacity: 1;
32 | }
33 |
34 | .loading {
35 | padding: $loading-padding;
36 |
37 | border-radius: $loading-border-radius;
38 | background-color: $loading-bg-color;
39 |
40 | color: $loading-text-color;
41 |
42 | text-align: center;
43 | text-overflow: ellipsis;
44 | font-size: $loading-font-size;
45 |
46 | h1, h2, h3, h4, h5, h6 {
47 | color: $loading-text-color;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_menu.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Menus
4 | * --------------------------------------------------
5 | * Side panel structure
6 | */
7 |
8 | .menu {
9 | position: absolute;
10 | top: 0;
11 | bottom: 0;
12 | z-index: $z-index-menu;
13 | overflow: hidden;
14 |
15 | min-height: 100%;
16 | max-height: 100%;
17 | width: $menu-width;
18 |
19 | background-color: $menu-bg;
20 |
21 | .scroll-content {
22 | z-index: $z-index-menu-scroll-content;
23 | }
24 |
25 | .bar-header {
26 | z-index: $z-index-menu-bar-header;
27 | }
28 | }
29 |
30 | .menu-content {
31 | @include transform(none);
32 | box-shadow: $menu-side-shadow;
33 | }
34 |
35 | .menu-open .menu-content .pane,
36 | .menu-open .menu-content .scroll-content {
37 | pointer-events: none;
38 | }
39 |
40 | .grade-b .menu-content,
41 | .grade-c .menu-content {
42 | @include box-sizing(content-box);
43 | right: -1px;
44 | left: -1px;
45 | border-right: 1px solid #ccc;
46 | border-left: 1px solid #ccc;
47 | box-shadow: none;
48 | }
49 |
50 | .menu-left {
51 | left: 0;
52 | }
53 |
54 | .menu-right {
55 | right: 0;
56 | }
57 |
58 | .aside-open.aside-resizing .menu-right {
59 | display: none;
60 | }
61 |
62 | .menu-animated {
63 | @include transition-transform($menu-animation-speed ease);
64 | }
65 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_modal.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Modals
4 | * --------------------------------------------------
5 | * Modals are independent windows that slide in from off-screen.
6 | */
7 |
8 | .modal-backdrop {
9 | @include transition(background-color 300ms ease-in-out);
10 | position: fixed;
11 | top: 0;
12 | left: 0;
13 | z-index: $z-index-modal;
14 | width: 100%;
15 | height: 100%;
16 | background-color: $modal-backdrop-bg-inactive;
17 |
18 | &.active {
19 | background-color: $modal-backdrop-bg-active;
20 | }
21 | }
22 |
23 | .modal {
24 | display: block;
25 | position: absolute;
26 | top: 0;
27 | z-index: $z-index-modal;
28 | overflow: hidden;
29 | min-height: 100%;
30 | width: 100%;
31 | background-color: $modal-bg-color;
32 | }
33 |
34 | @media (min-width: $modal-inset-mode-break-point) {
35 | // inset mode is when the modal doesn't fill the entire
36 | // display but instead is centered within a large display
37 | .modal {
38 | top: $modal-inset-mode-top;
39 | right: $modal-inset-mode-right;
40 | bottom: $modal-inset-mode-bottom;
41 | left: $modal-inset-mode-left;
42 | overflow: visible;
43 | min-height: $modal-inset-mode-min-height;
44 | width: (100% - $modal-inset-mode-left - $modal-inset-mode-right);
45 | }
46 |
47 | .modal.ng-leave-active {
48 | bottom: 0;
49 | }
50 |
51 | // remove ios header padding from inset header
52 | .platform-ios.platform-cordova .modal-wrapper .modal{
53 | .bar-header:not(.bar-subheader) {
54 | height: $bar-height;
55 | > * {
56 | margin-top: 0;
57 | }
58 | }
59 | .tabs-top > .tabs,
60 | .tabs.tabs-top {
61 | top: $bar-height;
62 | }
63 | .has-header,
64 | .bar-subheader {
65 | top: $bar-height;
66 | }
67 | .has-subheader {
68 | top: $bar-height + $bar-subheader-height;
69 | }
70 | .has-tabs-top {
71 | top: $bar-height + $tabs-height;
72 | }
73 | .has-header.has-subheader.has-tabs-top {
74 | top: $bar-height + $bar-subheader-height + $tabs-height;
75 | }
76 | }
77 | }
78 |
79 | // disable clicks on all but the modal
80 | .modal-open {
81 | pointer-events: none;
82 |
83 | .modal,
84 | .modal-backdrop {
85 | pointer-events: auto;
86 | }
87 | // prevent clicks on modal when loading overlay is active though
88 | &.loading-active {
89 | .modal,
90 | .modal-backdrop {
91 | pointer-events: none;
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_platform.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Platform
4 | * --------------------------------------------------
5 | * Platform specific tweaks
6 | */
7 |
8 | .platform-ios.platform-cordova {
9 | // iOS7/8 has a status bar which sits on top of the header.
10 | // Bump down everything to make room for it. However, if
11 | // if its in Cordova, and set to fullscreen, then disregard the bump.
12 | &:not(.fullscreen) {
13 | .bar-header:not(.bar-subheader) {
14 | height: $bar-height + $ios-statusbar-height;
15 |
16 | &.item-input-inset .item-input-wrapper {
17 | margin-top: 19px !important;
18 | }
19 |
20 | > * {
21 | margin-top: $ios-statusbar-height;
22 | }
23 | }
24 | .tabs-top > .tabs,
25 | .tabs.tabs-top {
26 | top: $bar-height + $ios-statusbar-height;
27 | }
28 |
29 | .has-header,
30 | .bar-subheader {
31 | top: $bar-height + $ios-statusbar-height;
32 | }
33 | .has-subheader {
34 | top: $bar-height + $bar-subheader-height + $ios-statusbar-height;
35 | }
36 | .has-tabs-top {
37 | top: $bar-height + $tabs-height + $ios-statusbar-height;
38 | }
39 | .has-header.has-subheader.has-tabs-top {
40 | top: $bar-height + $bar-subheader-height + $tabs-height + $ios-statusbar-height;
41 | }
42 | }
43 | &.status-bar-hide {
44 | // Cordova doesn't adjust the body height correctly, this makes up for it
45 | margin-bottom: 20px;
46 | }
47 | }
48 |
49 | @media (orientation:landscape) {
50 | .platform-ios.platform-browser.platform-ipad {
51 | position: fixed; // required for iPad 7 Safari
52 | }
53 | }
54 |
55 | .platform-c:not(.enable-transitions) * {
56 | // disable transitions on grade-c devices (Android 2)
57 | -webkit-transition: none !important;
58 | transition: none !important;
59 | }
60 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_popover.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Popovers
4 | * --------------------------------------------------
5 | * Popovers are independent views which float over content
6 | */
7 |
8 | .popover-backdrop {
9 | position: fixed;
10 | top: 0;
11 | left: 0;
12 | z-index: $z-index-popover;
13 | width: 100%;
14 | height: 100%;
15 | background-color: $popover-backdrop-bg-inactive;
16 |
17 | &.active {
18 | background-color: $popover-backdrop-bg-active;
19 | }
20 | }
21 |
22 | .popover {
23 | position: absolute;
24 | top: 25%;
25 | left: 50%;
26 | z-index: $z-index-popover;
27 | display: block;
28 | margin-top: 12px;
29 | margin-left: -$popover-width / 2;
30 | height: $popover-height;
31 | width: $popover-width;
32 | background-color: $popover-bg-color;
33 | box-shadow: $popover-box-shadow;
34 | opacity: 0;
35 |
36 | .item:first-child {
37 | border-top: 0;
38 | }
39 |
40 | .item:last-child {
41 | border-bottom: 0;
42 | }
43 |
44 | &.popover-bottom {
45 | margin-top: -12px;
46 | }
47 | }
48 |
49 |
50 | // Set popover border-radius
51 | .popover,
52 | .popover .bar-header {
53 | border-radius: $popover-border-radius;
54 | }
55 | .popover .scroll-content {
56 | z-index: 1;
57 | margin: 2px 0;
58 | }
59 | .popover .bar-header {
60 | border-bottom-right-radius: 0;
61 | border-bottom-left-radius: 0;
62 | }
63 | .popover .has-header {
64 | border-top-right-radius: 0;
65 | border-top-left-radius: 0;
66 | }
67 | .popover-arrow {
68 | display: none;
69 | }
70 |
71 |
72 | // iOS Popover
73 | .platform-ios {
74 |
75 | .popover {
76 | box-shadow: $popover-box-shadow-ios;
77 | }
78 |
79 | .popover,
80 | .popover .bar-header {
81 | border-radius: $popover-border-radius-ios;
82 | }
83 | .popover .scroll-content {
84 | margin: 8px 0;
85 | border-radius: $popover-border-radius-ios;
86 | }
87 | .popover .scroll-content.has-header {
88 | margin-top: 0;
89 | }
90 | .popover-arrow {
91 | position: absolute;
92 | display: block;
93 | top: -17px;
94 | width: 30px;
95 | height: 19px;
96 | overflow: hidden;
97 |
98 | &:after {
99 | position: absolute;
100 | top: 12px;
101 | left: 5px;
102 | width: 20px;
103 | height: 20px;
104 | background-color: $popover-bg-color;
105 | border-radius: 3px;
106 | content: '';
107 | @include rotate(-45deg);
108 | }
109 | }
110 | .popover-bottom .popover-arrow {
111 | top: auto;
112 | bottom: -10px;
113 | &:after {
114 | top: -6px;
115 | }
116 | }
117 | }
118 |
119 |
120 | // Android Popover
121 | .platform-android {
122 |
123 | .popover {
124 | margin-top: -32px;
125 | background-color: $popover-bg-color-android;
126 | box-shadow: $popover-box-shadow-android;
127 |
128 | .item {
129 | border-color: $popover-bg-color-android;
130 | background-color: $popover-bg-color-android;
131 | color: #4d4d4d;
132 | }
133 | &.popover-bottom {
134 | margin-top: 32px;
135 | }
136 | }
137 |
138 | .popover-backdrop,
139 | .popover-backdrop.active {
140 | background-color: transparent;
141 | }
142 | }
143 |
144 |
145 | // disable clicks on all but the popover
146 | .popover-open {
147 | pointer-events: none;
148 |
149 | .popover,
150 | .popover-backdrop {
151 | pointer-events: auto;
152 | }
153 | // prevent clicks on popover when loading overlay is active though
154 | &.loading-active {
155 | .popover,
156 | .popover-backdrop {
157 | pointer-events: none;
158 | }
159 | }
160 | }
161 |
162 |
163 | // wider popover on larger viewports
164 | @media (min-width: $popover-large-break-point) {
165 | .popover {
166 | width: $popover-large-width;
167 | }
168 | }
169 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_popup.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Popups
4 | * --------------------------------------------------
5 | */
6 |
7 | .popup-container {
8 | position: absolute;
9 | top: 0;
10 | left: 0;
11 | bottom: 0;
12 | right: 0;
13 | background: rgba(0,0,0,0);
14 |
15 | @include display-flex();
16 | @include justify-content(center);
17 | @include align-items(center);
18 |
19 | z-index: $z-index-popup;
20 |
21 | // Start hidden
22 | visibility: hidden;
23 | &.popup-showing {
24 | visibility: visible;
25 | }
26 |
27 | &.popup-hidden .popup {
28 | @include animation-name(scaleOut);
29 | @include animation-duration($popup-leave-animation-duration);
30 | @include animation-timing-function(ease-in-out);
31 | @include animation-fill-mode(both);
32 | }
33 |
34 | &.active .popup {
35 | @include animation-name(superScaleIn);
36 | @include animation-duration($popup-enter-animation-duration);
37 | @include animation-timing-function(ease-in-out);
38 | @include animation-fill-mode(both);
39 | }
40 |
41 | .popup {
42 | width: $popup-width;
43 | max-width: 100%;
44 | max-height: 90%;
45 |
46 | border-radius: $popup-border-radius;
47 | background-color: $popup-background-color;
48 |
49 | @include display-flex();
50 | @include flex-direction(column);
51 | }
52 | }
53 |
54 | .popup-head {
55 | padding: 15px 10px;
56 | border-bottom: 1px solid #eee;
57 | text-align: center;
58 | }
59 | .popup-title {
60 | margin: 0;
61 | padding: 0;
62 | font-size: 15px;
63 | }
64 | .popup-sub-title {
65 | margin: 5px 0 0 0;
66 | padding: 0;
67 | font-weight: normal;
68 | font-size: 11px;
69 | }
70 | .popup-body {
71 | padding: 10px;
72 | overflow: scroll;
73 | }
74 |
75 | .popup-buttons {
76 | @include display-flex();
77 | @include flex-direction(row);
78 | padding: 10px;
79 | min-height: $popup-button-min-height + 20;
80 |
81 | .button {
82 | @include flex(1);
83 | display: block;
84 | min-height: $popup-button-min-height;
85 | border-radius: $popup-button-border-radius;
86 | line-height: $popup-button-line-height;
87 |
88 | margin-right: 5px;
89 | &:last-child {
90 | margin-right: 0px;
91 | }
92 | }
93 | }
94 |
95 | .popup-open {
96 | pointer-events: none;
97 |
98 | &.modal-open .modal {
99 | pointer-events: none;
100 | }
101 |
102 | .popup-backdrop, .popup {
103 | pointer-events: auto;
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_progress.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Progress
4 | * --------------------------------------------------
5 | */
6 |
7 | progress {
8 | display: block;
9 | margin: $progress-margin;
10 | width: $progress-width;
11 | }
12 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_radio.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Radio Button Inputs
4 | * --------------------------------------------------
5 | */
6 |
7 | .item-radio {
8 | padding: 0;
9 |
10 | &:hover {
11 | cursor: pointer;
12 | }
13 | }
14 |
15 | .item-radio .item-content {
16 | /* give some room to the right for the checkmark icon */
17 | padding-right: $item-padding * 4;
18 | }
19 |
20 | .item-radio .radio-icon {
21 | /* checkmark icon will be hidden by default */
22 | position: absolute;
23 | top: 0;
24 | right: 0;
25 | z-index: $z-index-item-radio;
26 | visibility: hidden;
27 | padding: $item-padding - 2;
28 | height: 100%;
29 | font-size: 24px;
30 | }
31 |
32 | .item-radio input {
33 | /* hide any radio button inputs elements (the ugly circles) */
34 | position: absolute;
35 | left: -9999px;
36 |
37 | &:checked ~ .item-content {
38 | /* style the item content when its checked */
39 | background: #f7f7f7;
40 | }
41 |
42 | &:checked ~ .radio-icon {
43 | /* show the checkmark icon when its checked */
44 | visibility: visible;
45 | }
46 | }
47 |
48 | // Hack for Android to correctly display the checked item
49 | // http://timpietrusky.com/advanced-checkbox-hack
50 | .platform-android.grade-b .item-radio,
51 | .platform-android.grade-c .item-radio {
52 | -webkit-animation: androidCheckedbugfix infinite 1s;
53 | }
54 | @-webkit-keyframes androidCheckedbugfix {
55 | from { padding: 0; }
56 | to { padding: 0; }
57 | }
58 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_range.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Range
4 | * --------------------------------------------------
5 | */
6 |
7 | input[type="range"] {
8 | display: inline-block;
9 | overflow: hidden;
10 | margin-top: 5px;
11 | margin-bottom: 5px;
12 | padding-right: 2px;
13 | padding-left: 1px;
14 | width: auto;
15 | height: $range-slider-height + 15;
16 | outline: none;
17 | background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, $range-default-track-bg), color-stop(100%, $range-default-track-bg));
18 | background: linear-gradient(to right, $range-default-track-bg 0%, $range-default-track-bg 100%);
19 | background-position: center;
20 | background-size: 99% $range-track-height;
21 | background-repeat: no-repeat;
22 | -webkit-appearance: none;
23 |
24 | &::-webkit-slider-thumb {
25 | position: relative;
26 | width: $range-slider-width;
27 | height: $range-slider-height;
28 | border-radius: $range-slider-border-radius;
29 | background-color: $toggle-handle-off-bg-color;
30 | box-shadow: $range-slider-box-shadow;
31 | cursor: pointer;
32 | -webkit-appearance: none;
33 | border: 0;
34 | }
35 |
36 | &::-webkit-slider-thumb:before {
37 | /* what creates the colorful line on the left side of the slider */
38 | position: absolute;
39 | top: ($range-slider-height / 2) - ($range-track-height / 2);
40 | left: -2001px;
41 | width: 2000px;
42 | height: $range-track-height;
43 | background: $dark;
44 | content: ' ';
45 | }
46 |
47 | &::-webkit-slider-thumb:after {
48 | /* create a larger (but hidden) hit area */
49 | position: absolute;
50 | top: -15px;
51 | left: -15px;
52 | padding: 30px;
53 | content: ' ';
54 | //background: red;
55 | //opacity: .5;
56 | }
57 |
58 | }
59 |
60 | .range {
61 | @include display-flex();
62 | @include align-items(center);
63 | padding: 2px 11px;
64 |
65 | &.range-light {
66 | input { @include range-style($range-light-track-bg); }
67 | }
68 | &.range-stable {
69 | input { @include range-style($range-stable-track-bg); }
70 | }
71 | &.range-positive {
72 | input { @include range-style($range-positive-track-bg); }
73 | }
74 | &.range-calm {
75 | input { @include range-style($range-calm-track-bg); }
76 | }
77 | &.range-balanced {
78 | input { @include range-style($range-balanced-track-bg); }
79 | }
80 | &.range-assertive {
81 | input { @include range-style($range-assertive-track-bg); }
82 | }
83 | &.range-energized {
84 | input { @include range-style($range-energized-track-bg); }
85 | }
86 | &.range-royal {
87 | input { @include range-style($range-royal-track-bg); }
88 | }
89 | &.range-dark {
90 | input { @include range-style($range-dark-track-bg); }
91 | }
92 | }
93 |
94 | .range .icon {
95 | @include flex(0);
96 | display: block;
97 | min-width: $range-icon-size;
98 | text-align: center;
99 | font-size: $range-icon-size;
100 | }
101 |
102 | .range input {
103 | @include flex(1);
104 | display: block;
105 | margin-right: 10px;
106 | margin-left: 10px;
107 | }
108 |
109 | .range-label {
110 | @include flex(0, 0, auto);
111 | display: block;
112 | white-space: nowrap;
113 | }
114 |
115 | .range-label:first-child {
116 | padding-left: 5px;
117 | }
118 | .range input + .range-label {
119 | padding-right: 5px;
120 | padding-left: 0;
121 | }
122 |
123 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_reset.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Resets
4 | * --------------------------------------------------
5 | * Adapted from normalize.css and some reset.css. We don't care even one
6 | * bit about old IE, so we don't need any hacks for that in here.
7 | *
8 | * There are probably other things we could remove here, as well.
9 | *
10 | * normalize.css v2.1.2 | MIT License | git.io/normalize
11 |
12 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
13 | * http://cssreset.com
14 | */
15 |
16 | html, body, div, span, applet, object, iframe,
17 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
18 | a, abbr, acronym, address, big, cite, code,
19 | del, dfn, em, img, ins, kbd, q, s, samp,
20 | small, strike, strong, sub, sup, tt, var,
21 | b, i, u, center,
22 | dl, dt, dd, ol, ul, li,
23 | fieldset, form, label, legend,
24 | table, caption, tbody, tfoot, thead, tr, th, td,
25 | article, aside, canvas, details, embed, fieldset,
26 | figure, figcaption, footer, header, hgroup,
27 | menu, nav, output, ruby, section, summary,
28 | time, mark, audio, video {
29 | margin: 0;
30 | padding: 0;
31 | border: 0;
32 | vertical-align: baseline;
33 | font: inherit;
34 | font-size: 100%;
35 | }
36 |
37 | ol, ul {
38 | list-style: none;
39 | }
40 | blockquote, q {
41 | quotes: none;
42 | }
43 | blockquote:before, blockquote:after,
44 | q:before, q:after {
45 | content: '';
46 | content: none;
47 | }
48 |
49 | /**
50 | * Prevent modern browsers from displaying `audio` without controls.
51 | * Remove excess height in iOS 5 devices.
52 | */
53 |
54 | audio:not([controls]) {
55 | display: none;
56 | height: 0;
57 | }
58 |
59 | /**
60 | * Hide the `template` element in IE, Safari, and Firefox < 22.
61 | */
62 |
63 | [hidden],
64 | template {
65 | display: none;
66 | }
67 |
68 | script {
69 | display: none !important;
70 | }
71 |
72 | /* ==========================================================================
73 | Base
74 | ========================================================================== */
75 |
76 | /**
77 | * 1. Set default font family to sans-serif.
78 | * 2. Prevent iOS text size adjust after orientation change, without disabling
79 | * user zoom.
80 | */
81 |
82 | html {
83 | @include user-select(none);
84 | font-family: sans-serif; /* 1 */
85 | -webkit-text-size-adjust: 100%;
86 | -ms-text-size-adjust: 100%; /* 2 */
87 | -webkit-text-size-adjust: 100%; /* 2 */
88 | }
89 |
90 | /**
91 | * Remove default margin.
92 | */
93 |
94 | body {
95 | margin: 0;
96 | line-height: 1;
97 | }
98 |
99 |
100 | /**
101 | * Remove default outlines.
102 | */
103 | a,
104 | button,
105 | :focus,
106 | a:focus,
107 | button:focus,
108 | a:active,
109 | a:hover {
110 | outline: 0;
111 | }
112 |
113 | /* *
114 | * Remove tap highlight color
115 | */
116 |
117 | a {
118 | -webkit-user-drag: none;
119 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
120 | -webkit-tap-highlight-color: transparent;
121 |
122 | &[href]:hover {
123 | cursor: pointer;
124 | }
125 | }
126 |
127 | /* ==========================================================================
128 | Typography
129 | ========================================================================== */
130 |
131 |
132 | /**
133 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
134 | */
135 |
136 | b,
137 | strong {
138 | font-weight: bold;
139 | }
140 |
141 | /**
142 | * Address styling not present in Safari 5 and Chrome.
143 | */
144 |
145 | dfn {
146 | font-style: italic;
147 | }
148 |
149 | /**
150 | * Address differences between Firefox and other browsers.
151 | */
152 |
153 | hr {
154 | -moz-box-sizing: content-box;
155 | box-sizing: content-box;
156 | height: 0;
157 | }
158 |
159 |
160 | /**
161 | * Correct font family set oddly in Safari 5 and Chrome.
162 | */
163 |
164 | code,
165 | kbd,
166 | pre,
167 | samp {
168 | font-size: 1em;
169 | font-family: monospace, serif;
170 | }
171 |
172 | /**
173 | * Improve readability of pre-formatted text in all browsers.
174 | */
175 |
176 | pre {
177 | white-space: pre-wrap;
178 | }
179 |
180 | /**
181 | * Set consistent quote types.
182 | */
183 |
184 | q {
185 | quotes: "\201C" "\201D" "\2018" "\2019";
186 | }
187 |
188 | /**
189 | * Address inconsistent and variable font size in all browsers.
190 | */
191 |
192 | small {
193 | font-size: 80%;
194 | }
195 |
196 | /**
197 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
198 | */
199 |
200 | sub,
201 | sup {
202 | position: relative;
203 | vertical-align: baseline;
204 | font-size: 75%;
205 | line-height: 0;
206 | }
207 |
208 | sup {
209 | top: -0.5em;
210 | }
211 |
212 | sub {
213 | bottom: -0.25em;
214 | }
215 |
216 | /**
217 | * Define consistent border, margin, and padding.
218 | */
219 |
220 | fieldset {
221 | margin: 0 2px;
222 | padding: 0.35em 0.625em 0.75em;
223 | border: 1px solid #c0c0c0;
224 | }
225 |
226 | /**
227 | * 1. Correct `color` not being inherited in IE 8/9.
228 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
229 | */
230 |
231 | legend {
232 | padding: 0; /* 2 */
233 | border: 0; /* 1 */
234 | }
235 |
236 | /**
237 | * 1. Correct font family not being inherited in all browsers.
238 | * 2. Correct font size not being inherited in all browsers.
239 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
240 | * 4. Remove any default :focus styles
241 | * 5. Make sure webkit font smoothing is being inherited
242 | * 6. Remove default gradient in Android Firefox / FirefoxOS
243 | */
244 |
245 | button,
246 | input,
247 | select,
248 | textarea {
249 | margin: 0; /* 3 */
250 | font-size: 100%; /* 2 */
251 | font-family: inherit; /* 1 */
252 | outline-offset: 0; /* 4 */
253 | outline-style: none; /* 4 */
254 | outline-width: 0; /* 4 */
255 | -webkit-font-smoothing: inherit; /* 5 */
256 | background-image: none; /* 6 */
257 | }
258 |
259 | /**
260 | * Address Firefox 4+ setting `line-height` on `input` using `importnt` in
261 | * the UA stylesheet.
262 | */
263 |
264 | button,
265 | input {
266 | line-height: normal;
267 | }
268 |
269 | /**
270 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
271 | * All other form control elements do not inherit `text-transform` values.
272 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
273 | * Correct `select` style inheritance in Firefox 4+ and Opera.
274 | */
275 |
276 | button,
277 | select {
278 | text-transform: none;
279 | }
280 |
281 | /**
282 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
283 | * and `video` controls.
284 | * 2. Correct inability to style clickable `input` types in iOS.
285 | * 3. Improve usability and consistency of cursor style between image-type
286 | * `input` and others.
287 | */
288 |
289 | button,
290 | html input[type="button"], /* 1 */
291 | input[type="reset"],
292 | input[type="submit"] {
293 | cursor: pointer; /* 3 */
294 | -webkit-appearance: button; /* 2 */
295 | }
296 |
297 | /**
298 | * Re-set default cursor for disabled elements.
299 | */
300 |
301 | button[disabled],
302 | html input[disabled] {
303 | cursor: default;
304 | }
305 |
306 | /**
307 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
308 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
309 | * (include `-moz` to future-proof).
310 | */
311 |
312 | input[type="search"] {
313 | -webkit-box-sizing: content-box; /* 2 */
314 | -moz-box-sizing: content-box;
315 | box-sizing: content-box;
316 | -webkit-appearance: textfield; /* 1 */
317 | }
318 |
319 | /**
320 | * Remove inner padding and search cancel button in Safari 5 and Chrome
321 | * on OS X.
322 | */
323 |
324 | input[type="search"]::-webkit-search-cancel-button,
325 | input[type="search"]::-webkit-search-decoration {
326 | -webkit-appearance: none;
327 | }
328 |
329 | /**
330 | * Remove inner padding and border in Firefox 4+.
331 | */
332 |
333 | button::-moz-focus-inner,
334 | input::-moz-focus-inner {
335 | padding: 0;
336 | border: 0;
337 | }
338 |
339 | /**
340 | * 1. Remove default vertical scrollbar in IE 8/9.
341 | * 2. Improve readability and alignment in all browsers.
342 | */
343 |
344 | textarea {
345 | overflow: auto; /* 1 */
346 | vertical-align: top; /* 2 */
347 | }
348 |
349 |
350 | img {
351 | -webkit-user-drag: none;
352 | }
353 |
354 | /* ==========================================================================
355 | Tables
356 | ========================================================================== */
357 |
358 | /**
359 | * Remove most spacing between table cells.
360 | */
361 |
362 | table {
363 | border-spacing: 0;
364 | border-collapse: collapse;
365 | }
366 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_select.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Select
4 | * --------------------------------------------------
5 | */
6 |
7 | .item-select {
8 | position: relative;
9 |
10 | select {
11 | @include appearance(none);
12 | position: absolute;
13 | top: 0;
14 | right: 0;
15 | padding: ($item-padding - 2) ($item-padding * 3) ($item-padding) $item-padding;
16 | max-width: 65%;
17 |
18 | border: none;
19 | background: $item-default-bg;
20 | color: #333;
21 |
22 | // hack to hide default dropdown arrow in FF
23 | text-indent: .01px;
24 | text-overflow: '';
25 |
26 | white-space: nowrap;
27 | font-size: $font-size-base;
28 |
29 | cursor: pointer;
30 | direction: rtl; // right align the select text
31 | }
32 |
33 | select::-ms-expand {
34 | // hide default dropdown arrow in IE
35 | display: none;
36 | }
37 |
38 | option {
39 | direction: ltr;
40 | }
41 |
42 | &:after {
43 | position: absolute;
44 | top: 50%;
45 | right: $item-padding;
46 | margin-top: -3px;
47 | width: 0;
48 | height: 0;
49 | border-top: 5px solid;
50 | border-right: 5px solid rgba(0, 0, 0, 0);
51 | border-left: 5px solid rgba(0, 0, 0, 0);
52 | color: #999;
53 | content: "";
54 | pointer-events: none;
55 | }
56 | &.item-light {
57 | select{
58 | background:$item-light-bg;
59 | color:$item-light-text;
60 | }
61 | }
62 | &.item-stable {
63 | select{
64 | background:$item-stable-bg;
65 | color:$item-stable-text;
66 | }
67 | &:after, .input-label{
68 | color:darken($item-stable-border,30%);
69 | }
70 | }
71 | &.item-positive {
72 | select{
73 | background:$item-positive-bg;
74 | color:$item-positive-text;
75 | }
76 | &:after, .input-label{
77 | color:$item-positive-text;
78 | }
79 | }
80 | &.item-calm {
81 | select{
82 | background:$item-calm-bg;
83 | color:$item-calm-text;
84 | }
85 | &:after, .input-label{
86 | color:$item-calm-text;
87 | }
88 | }
89 | &.item-assertive {
90 | select{
91 | background:$item-assertive-bg;
92 | color:$item-assertive-text;
93 | }
94 | &:after, .input-label{
95 | color:$item-assertive-text;
96 | }
97 | }
98 | &.item-balanced {
99 | select{
100 | background:$item-balanced-bg;
101 | color:$item-balanced-text;
102 | }
103 | &:after, .input-label{
104 | color:$item-balanced-text;
105 | }
106 | }
107 | &.item-energized {
108 | select{
109 | background:$item-energized-bg;
110 | color:$item-energized-text;
111 | }
112 | &:after, .input-label{
113 | color:$item-energized-text;
114 | }
115 | }
116 | &.item-royal {
117 | select{
118 | background:$item-royal-bg;
119 | color:$item-royal-text;
120 | }
121 | &:after, .input-label{
122 | color:$item-royal-text;
123 | }
124 | }
125 | &.item-dark {
126 | select{
127 | background:$item-dark-bg;
128 | color:$item-dark-text;
129 | }
130 | &:after, .input-label{
131 | color:$item-dark-text;
132 | }
133 | }
134 | }
135 |
136 | select {
137 | &[multiple],
138 | &[size] {
139 | height: auto;
140 | }
141 | }
142 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_slide-box.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Slide Box
4 | * --------------------------------------------------
5 | */
6 |
7 | .slider {
8 | position: relative;
9 | visibility: hidden;
10 | // Make sure items don't scroll over ever
11 | overflow: hidden;
12 | }
13 |
14 | .slider-slides {
15 | position: relative;
16 | height: 100%;
17 | }
18 |
19 | .slider-slide {
20 | position: relative;
21 | display: block;
22 | float: left;
23 | width: 100%;
24 | height: 100%;
25 | vertical-align: top;
26 | }
27 |
28 | .slider-slide-image {
29 | > img {
30 | width: 100%;
31 | }
32 | }
33 |
34 | .slider-pager {
35 | position: absolute;
36 | bottom: 20px;
37 | z-index: $z-index-slider-pager;
38 | width: 100%;
39 | height: 15px;
40 | text-align: center;
41 |
42 | .slider-pager-page {
43 | display: inline-block;
44 | margin: 0px 3px;
45 | width: 15px;
46 | color: #000;
47 | text-decoration: none;
48 |
49 | opacity: 0.3;
50 |
51 | &.active {
52 | @include transition(opacity 0.4s ease-in);
53 | opacity: 1;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_split-pane.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Split Pane
4 | * --------------------------------------------------
5 | */
6 |
7 | .split-pane {
8 | @include display-flex();
9 | @include align-items(stretch);
10 | width: 100%;
11 | height: 100%;
12 | }
13 |
14 | .split-pane-menu {
15 | @include flex(0, 0, $split-pane-menu-width);
16 |
17 | overflow-y: auto;
18 | width: $split-pane-menu-width;
19 | height: 100%;
20 | border-right: 1px solid $split-pane-menu-border-color;
21 |
22 | @media all and (max-width: 568px) {
23 | border-right: none;
24 | }
25 | }
26 |
27 | .split-pane-content {
28 | @include flex(1, 0, auto);
29 | }
30 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_toggle.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Toggle
4 | * --------------------------------------------------
5 | */
6 |
7 | .item-toggle {
8 | pointer-events: none;
9 | }
10 |
11 | .toggle {
12 | // set the color defaults
13 | @include toggle-style($toggle-on-default-border, $toggle-on-default-bg);
14 |
15 | position: relative;
16 | display: inline-block;
17 | pointer-events: auto;
18 | margin: -$toggle-hit-area-expansion;
19 | padding: $toggle-hit-area-expansion;
20 |
21 | &.dragging {
22 | .handle {
23 | background-color: $toggle-handle-dragging-bg-color !important;
24 | }
25 | }
26 |
27 | &.toggle-light {
28 | @include toggle-style($toggle-on-light-border, $toggle-on-light-bg);
29 | }
30 | &.toggle-stable {
31 | @include toggle-style($toggle-on-stable-border, $toggle-on-stable-bg);
32 | }
33 | &.toggle-positive {
34 | @include toggle-style($toggle-on-positive-border, $toggle-on-positive-bg);
35 | }
36 | &.toggle-calm {
37 | @include toggle-style($toggle-on-calm-border, $toggle-on-calm-bg);
38 | }
39 | &.toggle-assertive {
40 | @include toggle-style($toggle-on-assertive-border, $toggle-on-assertive-bg);
41 | }
42 | &.toggle-balanced {
43 | @include toggle-style($toggle-on-balanced-border, $toggle-on-balanced-bg);
44 | }
45 | &.toggle-energized {
46 | @include toggle-style($toggle-on-energized-border, $toggle-on-energized-bg);
47 | }
48 | &.toggle-royal {
49 | @include toggle-style($toggle-on-royal-border, $toggle-on-royal-bg);
50 | }
51 | &.toggle-dark {
52 | @include toggle-style($toggle-on-dark-border, $toggle-on-dark-bg);
53 | }
54 | }
55 |
56 | .toggle input {
57 | // hide the actual input checkbox
58 | display: none;
59 | }
60 |
61 | /* the track appearance when the toggle is "off" */
62 | .toggle .track {
63 | @include transition-timing-function(ease-in-out);
64 | @include transition-duration($toggle-transition-duration);
65 | @include transition-property((background-color, border));
66 |
67 | display: inline-block;
68 | box-sizing: border-box;
69 | width: $toggle-width;
70 | height: $toggle-height;
71 | border: solid $toggle-border-width $toggle-off-border-color;
72 | border-radius: $toggle-border-radius;
73 | background-color: $toggle-off-bg-color;
74 | content: ' ';
75 | cursor: pointer;
76 | pointer-events: none;
77 | }
78 |
79 | /* Fix to avoid background color bleeding */
80 | /* (occured on (at least) Android 4.2, Asus MeMO Pad HD7 ME173X) */
81 | .platform-android4_2 .toggle .track {
82 | -webkit-background-clip: padding-box;
83 | }
84 |
85 | /* the handle (circle) thats inside the toggle's track area */
86 | /* also the handle's appearance when it is "off" */
87 | .toggle .handle {
88 | @include transition($toggle-transition-duration ease-in-out);
89 | position: absolute;
90 | display: block;
91 | width: $toggle-handle-width;
92 | height: $toggle-handle-height;
93 | border-radius: $toggle-handle-radius;
94 | background-color: $toggle-handle-off-bg-color;
95 | top: $toggle-border-width + $toggle-hit-area-expansion;
96 | left: $toggle-border-width + $toggle-hit-area-expansion;
97 |
98 | &:before {
99 | // used to create a larger (but hidden) hit area to slide the handle
100 | position: absolute;
101 | top: -4px;
102 | left: ( ($toggle-handle-width / 2) * -1) - 8;
103 | padding: ($toggle-handle-height / 2) + 5 ($toggle-handle-width + 7);
104 | content: " ";
105 | }
106 | }
107 |
108 | .toggle input:checked + .track .handle {
109 | // the handle when the toggle is "on"
110 | @include translate3d($toggle-width - $toggle-handle-width - ($toggle-border-width * 2), 0, 0);
111 | background-color: $toggle-handle-on-bg-color;
112 | }
113 |
114 | .item-toggle.active {
115 | box-shadow: none;
116 | }
117 |
118 | .item-toggle,
119 | .item-toggle.item-complex .item-content {
120 | // make sure list item content have enough padding on right to fit the toggle
121 | padding-right: ($item-padding * 3) + $toggle-width;
122 | }
123 |
124 | .item-toggle.item-complex {
125 | padding-right: 0;
126 | }
127 |
128 | .item-toggle .toggle {
129 | // position the toggle to the right within a list item
130 | position: absolute;
131 | top: $item-padding / 2;
132 | right: $item-padding;
133 | z-index: $z-index-item-toggle;
134 | }
135 |
136 | .toggle input:disabled + .track {
137 | opacity: .6;
138 | }
139 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_transitions.scss:
--------------------------------------------------------------------------------
1 |
2 | // iOS View Transitions
3 | // -------------------------------
4 |
5 | $ios-transition-duration: 450ms !default;
6 | $ios-transition-timing-function: cubic-bezier(.3, .9, .4, 1) !default;
7 | $ios-transition-container-bg-color: #000 !default;
8 |
9 |
10 | [nav-view-transition="ios"] {
11 |
12 | [nav-view="entering"],
13 | [nav-view="leaving"] {
14 | @include transition-duration( $ios-transition-duration );
15 | @include transition-timing-function( $ios-transition-timing-function );
16 | -webkit-transition-property: opacity, -webkit-transform;
17 | transition-property: opacity, transform;
18 | }
19 |
20 | &[nav-view-direction="forward"],
21 | &[nav-view-direction="back"] {
22 | background-color: $ios-transition-container-bg-color;
23 | }
24 |
25 | [nav-view="active"],
26 | &[nav-view-direction="forward"] [nav-view="entering"],
27 | &[nav-view-direction="back"] [nav-view="leaving"] {
28 | z-index: $z-index-view-above;
29 | }
30 |
31 | &[nav-view-direction="back"] [nav-view="entering"],
32 | &[nav-view-direction="forward"] [nav-view="leaving"] {
33 | z-index: $z-index-view-below;
34 | }
35 |
36 | }
37 |
38 |
39 |
40 | // iOS Nav Bar Transitions
41 | // -------------------------------
42 |
43 | [nav-bar-transition="ios"] {
44 |
45 | .title,
46 | .buttons,
47 | .back-text {
48 | @include transition-duration( $ios-transition-duration );
49 | @include transition-timing-function( $ios-transition-timing-function );
50 | -webkit-transition-property: opacity, -webkit-transform;
51 | transition-property: opacity, transform;
52 | }
53 |
54 | [nav-bar="active"],
55 | [nav-bar="entering"] {
56 | z-index: $z-index-bar-above;
57 |
58 | .bar {
59 | background: transparent;
60 | }
61 | }
62 |
63 | [nav-bar="cached"] {
64 | display: block;
65 |
66 | .header-item {
67 | display: none;
68 | }
69 | }
70 |
71 | }
72 |
73 |
74 |
75 | // Android View Transitions
76 | // -------------------------------
77 |
78 | $android-transition-duration: 200ms !default;
79 | $android-transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1) !default;
80 |
81 |
82 | [nav-view-transition="android"] {
83 |
84 | [nav-view="entering"],
85 | [nav-view="leaving"] {
86 | @include transition-duration( $android-transition-duration );
87 | @include transition-timing-function( $android-transition-timing-function );
88 | -webkit-transition-property: -webkit-transform;
89 | transition-property: transform;
90 | }
91 |
92 | [nav-view="active"],
93 | &[nav-view-direction="forward"] [nav-view="entering"],
94 | &[nav-view-direction="back"] [nav-view="leaving"] {
95 | z-index: $z-index-view-above;
96 | }
97 |
98 | &[nav-view-direction="back"] [nav-view="entering"],
99 | &[nav-view-direction="forward"] [nav-view="leaving"] {
100 | z-index: $z-index-view-below;
101 | }
102 |
103 | }
104 |
105 |
106 |
107 | // Android Nav Bar Transitions
108 | // -------------------------------
109 |
110 | [nav-bar-transition="android"] {
111 |
112 | .title,
113 | .buttons {
114 | @include transition-duration( $android-transition-duration );
115 | @include transition-timing-function( $android-transition-timing-function );
116 | -webkit-transition-property: opacity;
117 | transition-property: opacity;
118 | }
119 |
120 | [nav-bar="active"],
121 | [nav-bar="entering"] {
122 | z-index: $z-index-bar-above;
123 |
124 | .bar {
125 | background: transparent;
126 | }
127 | }
128 |
129 | [nav-bar="cached"] {
130 | display: block;
131 |
132 | .header-item {
133 | display: none;
134 | }
135 | }
136 |
137 | }
138 |
139 |
140 |
141 | // Transition Settings
142 | // -------------------------------
143 |
144 | [nav-view="cached"],
145 | [nav-bar="cached"] {
146 | display: none;
147 | }
148 |
149 | [nav-view="stage"] {
150 | opacity: 0;
151 | @include transition-duration( 0 );
152 | }
153 |
154 | [nav-bar="stage"] {
155 | .title,
156 | .buttons,
157 | .back-text {
158 | position: absolute;
159 | opacity: 0;
160 | @include transition-duration(0s);
161 | }
162 | }
163 |
164 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_type.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Typography
4 | * --------------------------------------------------
5 | */
6 |
7 |
8 | // Body text
9 | // -------------------------
10 |
11 | p {
12 | margin: 0 0 ($line-height-computed / 2);
13 | }
14 |
15 |
16 | // Emphasis & misc
17 | // -------------------------
18 |
19 | small { font-size: 85%; }
20 | cite { font-style: normal; }
21 |
22 |
23 | // Alignment
24 | // -------------------------
25 |
26 | .text-left { text-align: left; }
27 | .text-right { text-align: right; }
28 | .text-center { text-align: center; }
29 |
30 |
31 | // Headings
32 | // -------------------------
33 |
34 | h1, h2, h3, h4, h5, h6,
35 | .h1, .h2, .h3, .h4, .h5, .h6 {
36 | color: $base-color;
37 | font-weight: $headings-font-weight;
38 | font-family: $headings-font-family;
39 | line-height: $headings-line-height;
40 |
41 | small {
42 | font-weight: normal;
43 | line-height: 1;
44 | }
45 | }
46 |
47 | h1, .h1,
48 | h2, .h2,
49 | h3, .h3 {
50 | margin-top: $line-height-computed;
51 | margin-bottom: ($line-height-computed / 2);
52 |
53 | &:first-child {
54 | margin-top: 0;
55 | }
56 |
57 | + h1, + .h1,
58 | + h2, + .h2,
59 | + h3, + .h3 {
60 | margin-top: ($line-height-computed / 2);
61 | }
62 | }
63 |
64 | h4, .h4,
65 | h5, .h5,
66 | h6, .h6 {
67 | margin-top: ($line-height-computed / 2);
68 | margin-bottom: ($line-height-computed / 2);
69 | }
70 |
71 | h1, .h1 { font-size: floor($font-size-base * 2.60); } // ~36px
72 | h2, .h2 { font-size: floor($font-size-base * 2.15); } // ~30px
73 | h3, .h3 { font-size: ceil($font-size-base * 1.70); } // ~24px
74 | h4, .h4 { font-size: ceil($font-size-base * 1.25); } // ~18px
75 | h5, .h5 { font-size: $font-size-base; }
76 | h6, .h6 { font-size: ceil($font-size-base * 0.85); } // ~12px
77 |
78 | h1 small, .h1 small { font-size: ceil($font-size-base * 1.70); } // ~24px
79 | h2 small, .h2 small { font-size: ceil($font-size-base * 1.25); } // ~18px
80 | h3 small, .h3 small,
81 | h4 small, .h4 small { font-size: $font-size-base; }
82 |
83 |
84 | // Description Lists
85 | // -------------------------
86 |
87 | dl {
88 | margin-bottom: $line-height-computed;
89 | }
90 | dt,
91 | dd {
92 | line-height: $line-height-base;
93 | }
94 | dt {
95 | font-weight: bold;
96 | }
97 |
98 |
99 | // Blockquotes
100 | // -------------------------
101 |
102 | blockquote {
103 | margin: 0 0 $line-height-computed;
104 | padding: ($line-height-computed / 2) $line-height-computed;
105 | border-left: 5px solid gray;
106 |
107 | p {
108 | font-weight: 300;
109 | font-size: ($font-size-base * 1.25);
110 | line-height: 1.25;
111 | }
112 |
113 | p:last-child {
114 | margin-bottom: 0;
115 | }
116 |
117 | small {
118 | display: block;
119 | line-height: $line-height-base;
120 | &:before {
121 | content: '\2014 \00A0';// EM DASH, NBSP;
122 | }
123 | }
124 | }
125 |
126 |
127 | // Quotes
128 | // -------------------------
129 |
130 | q:before,
131 | q:after,
132 | blockquote:before,
133 | blockquote:after {
134 | content: "";
135 | }
136 |
137 |
138 | // Addresses
139 | // -------------------------
140 |
141 | address {
142 | display: block;
143 | margin-bottom: $line-height-computed;
144 | font-style: normal;
145 | line-height: $line-height-base;
146 | }
147 |
148 |
149 | // Links
150 | // -------------------------
151 |
152 | a.subdued {
153 | padding-right: 10px;
154 | color: #888;
155 | text-decoration: none;
156 |
157 | &:hover {
158 | text-decoration: none;
159 | }
160 | &:last-child {
161 | padding-right: 0;
162 | }
163 | }
164 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/_util.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Utility Classes
4 | * --------------------------------------------------
5 | */
6 |
7 | .hide {
8 | display: none;
9 | }
10 | .opacity-hide {
11 | opacity: 0;
12 | }
13 | .grade-b .opacity-hide,
14 | .grade-c .opacity-hide {
15 | opacity: 1;
16 | display: none;
17 | }
18 | .show {
19 | display: block;
20 | }
21 | .opacity-show {
22 | opacity: 1;
23 | }
24 | .invisible {
25 | visibility: hidden;
26 | }
27 |
28 | .keyboard-open .hide-on-keyboard-open {
29 | display: none;
30 | }
31 |
32 | .keyboard-open .tabs.hide-on-keyboard-open + .pane .has-tabs,
33 | .keyboard-open .bar-footer.hide-on-keyboard-open + .pane .has-footer {
34 | bottom: 0;
35 | }
36 |
37 | .inline {
38 | display: inline-block;
39 | }
40 |
41 | .disable-pointer-events {
42 | pointer-events: none;
43 | }
44 |
45 | .enable-pointer-events {
46 | pointer-events: auto;
47 | }
48 |
49 | .disable-user-behavior {
50 | // used to prevent the browser from doing its native behavior. this doesnt
51 | // prevent the scrolling, but cancels the contextmenu, tap highlighting, etc
52 |
53 | @include user-select(none);
54 | @include touch-callout(none);
55 | @include tap-highlight-transparent();
56 |
57 | -webkit-user-drag: none;
58 |
59 | -ms-touch-action: none;
60 | -ms-content-zooming: none;
61 | }
62 |
63 | // Fill the screen to block clicks (a better pointer-events: none) for the body
64 | // to avoid full-page reflows and paints which can cause flickers
65 | .click-block {
66 | position: absolute;
67 | top: 0;
68 | left: 0;
69 | z-index: $z-index-click-block;
70 | width: 100%;
71 | height: 100%;
72 | opacity: 0;
73 | @include translate3d(0, 0, 0);
74 | }
75 | .click-block-hide {
76 | @include translate3d(-9999px, 0, 0);
77 | }
78 |
79 | .no-resize {
80 | resize: none;
81 | }
82 |
83 | .block {
84 | display: block;
85 | clear: both;
86 | &:after {
87 | display: block;
88 | visibility: hidden;
89 | clear: both;
90 | height: 0;
91 | content: ".";
92 | }
93 | }
94 |
95 | .full-image {
96 | width: 100%;
97 | }
98 |
99 | .clearfix {
100 | *zoom: 1;
101 | &:before,
102 | &:after {
103 | display: table;
104 | content: "";
105 | // Fixes Opera/contenteditable bug:
106 | // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
107 | line-height: 0;
108 | }
109 | &:after {
110 | clear: both;
111 | }
112 | }
113 |
114 | /**
115 | * Content Padding
116 | * --------------------------------------------------
117 | */
118 |
119 | .padding {
120 | padding: $content-padding;
121 | }
122 |
123 | .padding-top,
124 | .padding-vertical {
125 | padding-top: $content-padding;
126 | }
127 |
128 | .padding-right,
129 | .padding-horizontal {
130 | padding-right: $content-padding;
131 | }
132 |
133 | .padding-bottom,
134 | .padding-vertical {
135 | padding-bottom: $content-padding;
136 | }
137 |
138 | .padding-left,
139 | .padding-horizontal {
140 | padding-left: $content-padding;
141 | }
142 |
143 |
144 | /**
145 | * Rounded
146 | * --------------------------------------------------
147 | */
148 |
149 | .rounded {
150 | border-radius: $border-radius-base;
151 | }
152 |
153 |
154 | /**
155 | * Utility Colors
156 | * --------------------------------------------------
157 | * Utility colors are added to help set a naming convention. You'll
158 | * notice we purposely do not use words like "red" or "blue", but
159 | * instead have colors which represent an emotion or generic theme.
160 | */
161 |
162 | .light, a.light {
163 | color: $light;
164 | }
165 | .light-bg {
166 | background-color: $light;
167 | }
168 | .light-border {
169 | border-color: $button-light-border;
170 | }
171 |
172 | .stable, a.stable {
173 | color: $stable;
174 | }
175 | .stable-bg {
176 | background-color: $stable;
177 | }
178 | .stable-border {
179 | border-color: $button-stable-border;
180 | }
181 |
182 | .positive, a.positive {
183 | color: $positive;
184 | }
185 | .positive-bg {
186 | background-color: $positive;
187 | }
188 | .positive-border {
189 | border-color: $button-positive-border;
190 | }
191 |
192 | .calm, a.calm {
193 | color: $calm;
194 | }
195 | .calm-bg {
196 | background-color: $calm;
197 | }
198 | .calm-border {
199 | border-color: $button-calm-border;
200 | }
201 |
202 | .assertive, a.assertive {
203 | color: $assertive;
204 | }
205 | .assertive-bg {
206 | background-color: $assertive;
207 | }
208 | .assertive-border {
209 | border-color: $button-assertive-border;
210 | }
211 |
212 | .balanced, a.balanced {
213 | color: $balanced;
214 | }
215 | .balanced-bg {
216 | background-color: $balanced;
217 | }
218 | .balanced-border {
219 | border-color: $button-balanced-border;
220 | }
221 |
222 | .energized, a.energized {
223 | color: $energized;
224 | }
225 | .energized-bg {
226 | background-color: $energized;
227 | }
228 | .energized-border {
229 | border-color: $button-energized-border;
230 | }
231 |
232 | .royal, a.royal {
233 | color: $royal;
234 | }
235 | .royal-bg {
236 | background-color: $royal;
237 | }
238 | .royal-border {
239 | border-color: $button-royal-border;
240 | }
241 |
242 | .dark, a.dark {
243 | color: $dark;
244 | }
245 | .dark-bg {
246 | background-color: $dark;
247 | }
248 | .dark-border {
249 | border-color: $button-dark-border;
250 | }
251 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/ionic.scss:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 |
3 | @import
4 | // Ionicons
5 | "ionicons/ionicons.scss",
6 |
7 | // Variables
8 | "mixins",
9 | "variables",
10 |
11 | // Base
12 | "reset",
13 | "scaffolding",
14 | "type",
15 |
16 | // Components
17 | "action-sheet",
18 | "backdrop",
19 | "bar",
20 | "tabs",
21 | "menu",
22 | "modal",
23 | "popover",
24 | "popup",
25 | "loading",
26 | "items",
27 | "list",
28 | "badge",
29 | "slide-box",
30 |
31 | // Forms
32 | "form",
33 | "checkbox",
34 | "toggle",
35 | "radio",
36 | "range",
37 | "select",
38 | "progress",
39 |
40 | // Buttons
41 | "button",
42 | "button-bar",
43 |
44 | // Util
45 | "grid",
46 | "util",
47 | "platform",
48 |
49 | // Animations
50 | "animations",
51 | "transitions";
52 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/ionicons/_ionicons-animation.scss:
--------------------------------------------------------------------------------
1 | // Animation Icons
2 | // --------------------------
3 |
4 | .#{$ionicons-prefix}spin {
5 | -webkit-animation: spin 1s infinite linear;
6 | -moz-animation: spin 1s infinite linear;
7 | -o-animation: spin 1s infinite linear;
8 | animation: spin 1s infinite linear;
9 | }
10 |
11 | @-moz-keyframes spin {
12 | 0% { -moz-transform: rotate(0deg); }
13 | 100% { -moz-transform: rotate(359deg); }
14 | }
15 | @-webkit-keyframes spin {
16 | 0% { -webkit-transform: rotate(0deg); }
17 | 100% { -webkit-transform: rotate(359deg); }
18 | }
19 | @-o-keyframes spin {
20 | 0% { -o-transform: rotate(0deg); }
21 | 100% { -o-transform: rotate(359deg); }
22 | }
23 | @-ms-keyframes spin {
24 | 0% { -ms-transform: rotate(0deg); }
25 | 100% { -ms-transform: rotate(359deg); }
26 | }
27 | @keyframes spin {
28 | 0% { transform: rotate(0deg); }
29 | 100% { transform: rotate(359deg); }
30 | }
31 |
32 |
33 | .#{$ionicons-prefix}loading-a,
34 | .#{$ionicons-prefix}loading-b,
35 | .#{$ionicons-prefix}loading-c,
36 | .#{$ionicons-prefix}loading-d,
37 | .#{$ionicons-prefix}looping,
38 | .#{$ionicons-prefix}refreshing,
39 | .#{$ionicons-prefix}ios7-reloading {
40 | @extend .ion;
41 | // must spin entire element for android 4.3 and below
42 | @extend .#{$ionicons-prefix}spin;
43 | }
44 |
45 | .#{$ionicons-prefix}loading-a {
46 | -webkit-animation-timing-function: steps(8, start);
47 | -moz-animation-timing-function: steps(8, start);
48 | animation-timing-function: steps(8, start);
49 | }
50 |
51 | .#{$ionicons-prefix}loading-a:before {
52 | @extend .#{$ionicons-prefix}load-a:before;
53 | }
54 |
55 | .#{$ionicons-prefix}loading-b:before {
56 | @extend .#{$ionicons-prefix}load-b:before;
57 | }
58 |
59 | .#{$ionicons-prefix}loading-c:before {
60 | @extend .#{$ionicons-prefix}load-c:before;
61 | }
62 |
63 | .#{$ionicons-prefix}loading-d:before {
64 | @extend .#{$ionicons-prefix}load-d:before;
65 | }
66 |
67 | .#{$ionicons-prefix}looping:before {
68 | @extend .#{$ionicons-prefix}loop:before;
69 | }
70 |
71 | .#{$ionicons-prefix}refreshing:before {
72 | @extend .#{$ionicons-prefix}refresh:before;
73 | }
74 |
75 | .#{$ionicons-prefix}ios7-reloading:before {
76 | @extend .#{$ionicons-prefix}ios7-reload:before;
77 | }
78 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/ionicons/_ionicons-font.scss:
--------------------------------------------------------------------------------
1 | // Ionicons Font Path
2 | // --------------------------
3 |
4 | @font-face {
5 | font-family: $ionicons-font-family;
6 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}");
7 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}#iefix") format("embedded-opentype"),
8 | url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype"),
9 | url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"),
10 | url("#{$ionicons-font-path}/ionicons.svg?v=#{$ionicons-version}#Ionicons") format("svg");
11 | font-weight: normal;
12 | font-style: normal;
13 | }
14 |
15 | .ion {
16 | display: inline-block;
17 | font-family: $ionicons-font-family;
18 | speak: none;
19 | font-style: normal;
20 | font-weight: normal;
21 | font-variant: normal;
22 | text-transform: none;
23 | text-rendering: auto;
24 | line-height: 1;
25 | -webkit-font-smoothing: antialiased;
26 | -moz-osx-font-smoothing: grayscale;
27 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ionic/scss/ionicons/ionicons.scss:
--------------------------------------------------------------------------------
1 | @import "ionicons-variables";
2 | /*!
3 | Ionicons, v1.5.2
4 | Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
5 | https://twitter.com/benjsperry https://twitter.com/ionicframework
6 | MIT License: https://github.com/driftyco/ionicons
7 | */
8 |
9 | @import "ionicons-font";
10 | @import "ionicons-animation";
11 | @import "ionicons-icons";
12 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AngularHammer",
3 | "version": "2.1.10",
4 | "authors": [
5 | "Ryan S Mullins "
6 | ],
7 | "homepage": "https://github.com/RyanMullins/angular-hammer",
8 | "main": "angular.hammer.js",
9 | "license": "MIT",
10 | "keywords": [
11 | "Angular",
12 | "Hammer",
13 | "touch",
14 | "javascript",
15 | "gesture"
16 | ],
17 | "ignore": [
18 | "**/.*",
19 | "node_modules",
20 | "bower_components",
21 | "components",
22 | "examples"
23 | ],
24 | "dependencies": {
25 | "angular": ">=1.2.0",
26 | "hammerjs": ">=2.0.0"
27 | },
28 | "_release": "2.1.10",
29 | "_resolution": {
30 | "type": "version",
31 | "tag": "v2.1.10",
32 | "commit": "d2d40497bc86322e7b9d68b8aa471bf81a5fedf5"
33 | },
34 | "_source": "git://github.com/ryanmullins/angular-hammer.git",
35 | "_target": "~2.1.10",
36 | "_originalSource": "ryanmullins-angular-hammer",
37 | "_direct": true
38 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Ryan S Mullins
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/angular-hammer-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keensoft/FullScreenImage-Cordova-Plugin/5db2f7cd330d3d68b3d1c0609d6055887a9d9e1c/keensoft-example/www/lib/ryanmullins-angular-hammer/angular-hammer-logo.png
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/angular.hammer.min.js:
--------------------------------------------------------------------------------
1 | // ---- Angular Hammer ----
2 | // Copyright (c) 2014 Ryan S Mullins
3 | // Licensed under the MIT Software License
4 | !function(a,b,c){"use strict";function d(a,b){if(!a||!b||!b.type)return null;var d;return d=b.type.indexOf("pan")>-1?new c.Pan(b):b.type.indexOf("pinch")>-1?new c.Pinch(b):b.type.indexOf("press")>-1?new c.Press(b):b.type.indexOf("rotate")>-1?new c.Rotate(b):b.type.indexOf("swipe")>-1?new c.Swipe(b):new c.Tap(b),a.add(d),d}function e(a,b){return a&&(b.preventGhosts=a.preventGhosts),b}function f(a){return a.indexOf("pan")>-1?"pan":a.indexOf("pinch")>-1?"pinch":a.indexOf("press")>-1?"press":a.indexOf("rotate")>-1?"rotate":a.indexOf("swipe")>-1?"swipe":"tap"}function g(a,b,c){if(a&&b){var e=a.get(b.type);e||(e=d(a,b)),b.directions||(b.directions="pan"===b.type||"swipe"===b.type?"DIRECTION_ALL":b.type.indexOf("left")>-1?"DIRECTION_LEFT":b.type.indexOf("right")>-1?"DIRECTION_RIGHT":b.type.indexOf("up")>-1?"DIRECTION_UP":b.type.indexOf("down")>-1?"DIRECTION_DOWN":""),b.direction=h(b.directions),e.set(b),b.recognizeWith&&(a.get(b.recognizeWith)||d(a,{type:b.recognizeWith}),e.recognizeWith(a.get(b.recognizeWith))),b.dropRecognizeWith&&a.get(b.dropRecognizeWith)&&e.dropRecognizeWith(a.get(b.dropRecognizeWith)),b.requireFailure&&(a.get(b.requireFailure)||d(a,{type:b.requireFailure}),e.requireFailure(a.get(b.requireFailure))),b.dropRequireFailure&&a.get(b.dropRequireFailure)&&e.dropRequireFailure(a.get(b.dropRequireFailure)),b.preventGhosts&&c&&i(c)}}function h(a){var d=0;return b.forEach(a.split("|"),function(a){c.hasOwnProperty(a)&&(d|=c[a])}),d}function i(b){function c(a){for(var b=0;b-1)&&g(m,e(n,a),k)}):b.isObject(o)?("hmCustom"===h?i=o.event:(o.type||(o.type=f(i)),o.event&&delete o.event),("hmCustom"===h||i.indexOf(o.type)>-1)&&g(m,e(n,o),k)):"hmCustom"!==h?(o={type:f(i)},"hmDoubletap"===h&&(o.event=i,o.taps=2,m.get("tap")&&(o.recognizeWith="tap")),o.type.indexOf("pan")>-1&&m.get("swipe")&&(o.recognizeWith="swipe"),o.type.indexOf("pinch")>-1&&m.get("rotate")&&(o.recognizeWith="rotate"),g(m,e(n,o),k)):i=null,i&&m.on(i,r)}}}])})}(window,window.angular,window.Hammer);
5 | //# sourceMappingURL=angular.hammer.min.js.map
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/angular.hammer.min.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"angular.hammer.min.js","sources":["angular.hammer.js"],"names":["window","angular","Hammer","addRecognizer","manager","options","type","recognizer","indexOf","Pan","Pinch","Press","Rotate","Swipe","Tap","add","applyManagerOptions","managerOpts","recognizerOpts","preventGhosts","getRecognizerTypeFromeventName","eventName","setupRecognizerWithOptions","element","get","directions","direction","parseDirections","set","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","dirs","forEach","split","hasOwnProperty","preventGhostClick","ev","i","coordinates","length","x","y","Math","abs","clientX","threshold","clientY","stopPropagation","preventDefault","resetCoordinates","popCoordinates","splice","registerCoordinates","touches","changedTouches","touch","push","setTimeout","timeout","addEventListener","require","e","console","log","gestureTypes","module","directive","directiveName","$parse","$window","restrict","link","scope","attrs","bind","handler","hammer","data","fromJson","hmManagerOptions","hmRecognizerOptions","Manager","$on","destroy","handlerName","handlerExpr","event","callHandler","fn","$event","call","phase","$root","$$phase","srcEvent","$apply","isArray","isObject","taps","on"],"mappings":";;;CAKA,SAAWA,EAAQC,EAASC,GAC1B,YAyRA,SAASC,GAAeC,EAASC,GAC/B,IAAKD,IAAYC,IAAYA,EAAQC,KAAQ,MAAO,KAEpD,IAAIC,EAiBJ,OAdEA,GADEF,EAAQC,KAAKE,QAAQ,OAAS,GACnB,GAAIN,GAAOO,IAAIJ,GACnBA,EAAQC,KAAKE,QAAQ,SAAW,GAC5B,GAAIN,GAAOQ,MAAML,GACrBA,EAAQC,KAAKE,QAAQ,SAAW,GAC5B,GAAIN,GAAOS,MAAMN,GACrBA,EAAQC,KAAKE,QAAQ,UAAY,GAC7B,GAAIN,GAAOU,OAAOP,GACtBA,EAAQC,KAAKE,QAAQ,SAAW,GAC5B,GAAIN,GAAOW,MAAMR,GAEjB,GAAIH,GAAOY,IAAIT,GAG9BD,EAAQW,IAAIR,GACLA,EAUT,QAASS,GAAqBC,EAAaC,GAKzC,MAJID,KACFC,EAAeC,cAAgBF,EAAYE,eAGtCD,EAUT,QAASE,GAAgCC,GACvC,MAAIA,GAAUb,QAAQ,OAAS,GACtB,MACEa,EAAUb,QAAQ,SAAW,GAC/B,QACEa,EAAUb,QAAQ,SAAW,GAC/B,QACEa,EAAUb,QAAQ,UAAY,GAChC,SACEa,EAAUb,QAAQ,SAAW,GAC/B,QAEA,MAaX,QAASc,GAA4BlB,EAASC,EAASkB,GACrD,GAAKnB,GAAYC,EAAjB,CAEA,GAAIE,GAAaH,EAAQoB,IAAInB,EAAQC,KAEhCC,KACHA,EAAaJ,EAAcC,EAASC,IAGjCA,EAAQoB,aAETpB,EAAQoB,WADW,QAAjBpB,EAAQC,MAAmC,UAAjBD,EAAQC,KACf,gBACZD,EAAQC,KAAKE,QAAQ,QAAU,GACnB,iBACZH,EAAQC,KAAKE,QAAQ,SAAW,GACpB,kBACZH,EAAQC,KAAKE,QAAQ,MAAQ,GACjB,eACZH,EAAQC,KAAKE,QAAQ,QAAU,GACnB,iBAEA,IAIzBH,EAAQqB,UAAYC,EAAgBtB,EAAQoB,YAC5ClB,EAAWqB,IAAIvB,GAEXA,EAAQwB,gBACLzB,EAAQoB,IAAInB,EAAQwB,gBACvB1B,EAAcC,GAAUE,KAAKD,EAAQwB,gBAGvCtB,EAAWsB,cAAczB,EAAQoB,IAAInB,EAAQwB,iBAG3CxB,EAAQyB,mBAAqB1B,EAAQoB,IAAInB,EAAQyB,oBACnDvB,EAAWuB,kBAAkB1B,EAAQoB,IAAInB,EAAQyB,oBAG/CzB,EAAQ0B,iBACL3B,EAAQoB,IAAInB,EAAQ0B,iBACvB5B,EAAcC,GAAUE,KAAKD,EAAQ0B,iBAGvCxB,EAAWwB,eAAe3B,EAAQoB,IAAInB,EAAQ0B,kBAG5C1B,EAAQ2B,oBAAsB5B,EAAQoB,IAAInB,EAAQ2B,qBACpDzB,EAAWyB,mBAAmB5B,EAAQoB,IAAInB,EAAQ2B,qBAGhD3B,EAAQc,eAAiBI,GAC3BJ,EAAcI,IAWlB,QAASI,GAAiBM,GACxB,GAAIR,GAAa,CAQjB,OANAxB,GAAQiC,QAAQD,EAAKE,MAAM,KAAM,SAAUT,GACrCxB,EAAOkC,eAAeV,KACxBD,GAA0BvB,EAAOwB,MAI9BD,EAcT,QAASN,GAAeI,GAkBtB,QAASc,GAAmBC,GAC1B,IAAK,GAAIC,GAAI,EAAGA,EAAIC,EAAYC,OAAQF,IAAK,CAC3C,GAAIG,GAAIF,EAAYD,GAAG,GACnBI,EAAIH,EAAYD,GAAG,EAGvB,IAAIK,KAAKC,IAAIP,EAAGQ,QAAUJ,GAAKK,GAC3BH,KAAKC,IAAIP,EAAGU,QAAUL,GAAKI,EAAW,CACxCT,EAAGW,kBACHX,EAAGY,gBACH,SAQN,QAASC,KACPX,KAMF,QAASY,KACPZ,EAAYa,OAAO,EAAG,GAOxB,QAASC,GAAqBhB,GAK5B,GAAGA,EAAGiB,QAAQd,OAASH,EAAGkB,eAAef,QAAU,EAAG,CACpD,GAAIgB,GAAQnB,EAAGkB,eAAe,EAC9BhB,GAAYkB,MAAMD,EAAMX,QAASW,EAAMT,UAEvCW,WAAWP,EAAgBQ,IA3D/B,GAAKrC,EAAL,CAEA,GAAIiB,MACAO,EAAY,GACZa,EAAU,IAEV,iBAAkB5D,KACpBuB,EAAQ,GAAGsC,iBAAiB,aAAcV,GAAkB,GAC5D5B,EAAQ,GAAGsC,iBAAiB,WAAYP,GAAqB,GAC7D/B,EAAQ,GAAGsC,iBAAiB,QAASxB,GAAmB,GACxDd,EAAQ,GAAGsC,iBAAiB,UAAWxB,GAAmB,KA7b9D,GAAuB,mBAAZpC,GACT,GAAuB,mBAAZ6D,UAA2BA,QACpC,IACE7D,EAAU6D,QAAQ,WAClB,MAAOC,GACP,MAAOC,SAAQC,IAAI,wEAEhB,CAAA,GAA8B,mBAAnBjE,GAAOC,QAGvB,MAAO+D,SAAQC,IAAI,2EAFnBhE,GAAUD,EAAOC,QAMrB,GAAsB,mBAAXC,GACT,GAAuB,mBAAZ4D,UAA2BA,QACpC,IACE5D,EAAS4D,QAAQ,YACjB,MAAOC,GACP,MAAOC,SAAQC,IAAI,uEAEhB,CAAA,GAA6B,mBAAlBjE,GAAOE,OAGvB,MAAO8D,SAAQC,IAAI,0EAFnB/D,GAASF,EAAOE,OAYpB,GAAIgE,IACF,kBACA,gBACA,wBACA,0BACA,oBACA,wBACA,YACA,sBACA,oBACA,kBACA,wBACA,oBACA,sBACA,gBACA,oBACA,gBACA,oBACA,kBACA,4BACA,0BACA,wBACA,8BACA,gBACA,0BACA,wBACA,sBACA,4BACA,oBACA,sBACA,YACA,wBAYFjE,GAAQkE,OAAO,oBASflE,EAAQiC,QAAQgC,EAAc,SAAU5D,GACtC,GAAI8D,GAAY9D,EAAK6B,MAAM,KACvBkC,EAAgBD,EAAU,GAC1B/C,EAAY+C,EAAU,EAE1BnE,GAAQkE,OAAO,iBACZC,UAAUC,GAAgB,SAAU,UAAW,SAAUC,EAAQC,GAChE,OACEC,SAAa,IACbC,KAAS,SAAUC,EAAOnD,EAASoD,GAKjC,IAAKzE,IAAWqE,EAAQV,iBAStB,MARsB,UAAlBQ,GACF9C,EAAQqD,KAAK,QAASC,QAGF,gBAAlBR,GACF9C,EAAQqD,KAAK,WAAYC,GAM7B,IAAIC,GAASvD,EAAQwD,KAAK,UACtB9D,EAAchB,EAAQ+E,SAASL,EAAMM,kBACrC/D,EAAiBjB,EAAQ+E,SAASL,EAAMO,oBAMvCJ,KACHA,EAAS,GAAI5E,GAAOiF,QAAQ5D,EAAQ,GAAIN,GACxCM,EAAQwD,KAAK,SAAUD,GACvBJ,EAAMU,IAAI,WAAY,WACpBN,EAAOO,YAMX,IAAIC,GAAcX,EAAMN,GACpBkB,EAAcjB,EAAOgB,GACrBT,EAAU,SAAUW,GAsBlB,QAASC,KACP,GAAIC,GAAKH,EAAYb,GAAQiB,OAASH,GAElCE,IACFA,EAAGE,KAAKlB,EAAOc,GAzBnB,GAAIK,GAAQnB,EAAMoB,MAAMC,QACpBxF,EAAauE,EAAOtD,IAAIgE,EAAMlF,KAElCkF,GAAMjE,QAAUA,EAEZhB,IACEA,EAAWF,QAAQ6C,gBACrBsC,EAAMtC,iBAGJ3C,EAAWF,QAAQ4C,iBACrBuC,EAAMQ,SAAS/C,mBAIL,WAAV4C,GAAgC,YAAVA,EACxBJ,IAEAf,EAAMuB,OAAOR,GAcjBxF,GAAQiG,QAAQhF,GAQlBjB,EAAQiC,QAAQhB,EAAgB,SAAUb,GAClB,aAAlBgE,EACFhD,EAAYhB,EAAQmF,OAEfnF,EAAQC,OACXD,EAAQC,KAAOc,EAA+BC,IAG5ChB,EAAQmF,aACHnF,GAAQmF,QAIG,aAAlBnB,GACAhD,EAAUb,QAAQH,EAAQC,MAAQ,KACpCgB,EACEwD,EACA9D,EAAoBC,EAAaZ,GACjCkB,KAGGtB,EAAQkG,SAASjF,IAQJ,aAAlBmD,EACFhD,EAAYH,EAAesE,OAEpBtE,EAAeZ,OAClBY,EAAeZ,KAAOc,EAA+BC,IAGnDH,EAAesE,aACVtE,GAAesE,QAIN,aAAlBnB,GACAhD,EAAUb,QAAQU,EAAeZ,MAAQ,KAC3CgB,EACEwD,EACA9D,EAAoBC,EAAaC,GACjCK,IAEuB,aAAlB8C,GAMTnD,GACEZ,KAAQc,EAA+BC,IAGnB,gBAAlBgD,IACFnD,EAAesE,MAAQnE,EACvBH,EAAekF,KAAO,EAElBtB,EAAOtD,IAAI,SACbN,EAAeW,cAAgB,QAI/BX,EAAeZ,KAAKE,QAAQ,OAAS,IACrCsE,EAAOtD,IAAI,WACbN,EAAeW,cAAgB,SAG7BX,EAAeZ,KAAKE,QAAQ,SAAW,IACvCsE,EAAOtD,IAAI,YACbN,EAAeW,cAAgB,UAGjCP,EACEwD,EACA9D,EAAoBC,EAAaC,GACjCK,IAEFF,EAAY,KAGVA,GACFyD,EAAOuB,GAAGhF,EAAWwD,WA+OhC7E,OAAQA,OAAOC,QAASD,OAAOE"}
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AngularHammer",
3 | "version": "2.1.10",
4 | "authors": [
5 | "Ryan S Mullins "
6 | ],
7 | "homepage": "https://github.com/RyanMullins/angular-hammer",
8 | "main": "angular.hammer.js",
9 | "license": "MIT",
10 | "keywords": [
11 | "Angular",
12 | "Hammer",
13 | "touch",
14 | "javascript",
15 | "gesture"
16 | ],
17 | "ignore": [
18 | "**/.*",
19 | "node_modules",
20 | "bower_components",
21 | "components",
22 | "examples"
23 | ],
24 | "dependencies": {
25 | "angular": ">=1.2.0",
26 | "hammerjs": ">=2.0.0"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | JSDoc: Index
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Index
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
53 |
54 |
55 |
56 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/module-hmTouchEvents.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | JSDoc: Module: hmTouchEvents
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Module: hmTouchEvents
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | hmTouchEvents
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
Angular.js module for adding Hammer.js event listeners to HTML
42 | elements using attribute directives
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | - Source:
67 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | Requires
90 |
91 |
92 | - module:angular
93 |
94 | - module:hammer
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
121 |
122 |
123 |
124 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/scripts/linenumber.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var counter = 0;
3 | var numbered;
4 | var source = document.getElementsByClassName('prettyprint source');
5 |
6 | if (source && source[0]) {
7 | source = source[0].getElementsByTagName('code')[0];
8 |
9 | numbered = source.innerHTML.split('\n');
10 | numbered = numbered.map(function(item) {
11 | counter++;
12 | return '' + item;
13 | });
14 |
15 | source.innerHTML = numbered.join('\n');
16 | }
17 | })();
18 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/scripts/prettify/lang-css.js:
--------------------------------------------------------------------------------
1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com",
2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
3 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/styles/jsdoc-default.css:
--------------------------------------------------------------------------------
1 | html
2 | {
3 | overflow: auto;
4 | background-color: #fff;
5 | }
6 |
7 | body
8 | {
9 | font: 14px "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans serif;
10 | line-height: 130%;
11 | color: #000;
12 | background-color: #fff;
13 | }
14 |
15 | a {
16 | color: #444;
17 | }
18 |
19 | a:visited {
20 | color: #444;
21 | }
22 |
23 | a:active {
24 | color: #444;
25 | }
26 |
27 | header
28 | {
29 | display: block;
30 | padding: 6px 4px;
31 | }
32 |
33 | .class-description {
34 | font-style: italic;
35 | font-family: Palatino, 'Palatino Linotype', serif;
36 | font-size: 130%;
37 | line-height: 140%;
38 | margin-bottom: 1em;
39 | margin-top: 1em;
40 | }
41 |
42 | #main {
43 | float: left;
44 | width: 100%;
45 | }
46 |
47 | section
48 | {
49 | display: block;
50 |
51 | background-color: #fff;
52 | padding: 12px 24px;
53 | border-bottom: 1px solid #ccc;
54 | margin-right: 240px;
55 | }
56 |
57 | .variation {
58 | display: none;
59 | }
60 |
61 | .optional:after {
62 | content: "opt";
63 | font-size: 60%;
64 | color: #aaa;
65 | font-style: italic;
66 | font-weight: lighter;
67 | }
68 |
69 | nav
70 | {
71 | display: block;
72 | float: left;
73 | margin-left: -230px;
74 | margin-top: 28px;
75 | width: 220px;
76 | border-left: 1px solid #ccc;
77 | padding-left: 9px;
78 | }
79 |
80 | nav ul {
81 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
82 | font-size: 100%;
83 | line-height: 17px;
84 | padding:0;
85 | margin:0;
86 | list-style-type:none;
87 | }
88 |
89 | nav h2 a, nav h2 a:visited {
90 | color: #A35A00;
91 | text-decoration: none;
92 | }
93 |
94 | nav h3 {
95 | margin-top: 12px;
96 | }
97 |
98 | nav li {
99 | margin-top: 6px;
100 | }
101 |
102 | nav a {
103 | color: #5C5954;
104 | }
105 |
106 | nav a:visited {
107 | color: #5C5954;
108 | }
109 |
110 | nav a:active {
111 | color: #5C5954;
112 | }
113 |
114 | footer {
115 | display: block;
116 | padding: 6px;
117 | margin-top: 12px;
118 | font-style: italic;
119 | font-size: 90%;
120 | }
121 |
122 | h1
123 | {
124 | font-size: 200%;
125 | font-weight: bold;
126 | letter-spacing: -0.01em;
127 | margin: 6px 0 9px 0;
128 | }
129 |
130 | h2
131 | {
132 | font-size: 170%;
133 | font-weight: bold;
134 | letter-spacing: -0.01em;
135 | margin: 6px 0 3px 0;
136 | }
137 |
138 | h3
139 | {
140 | font-size: 150%;
141 | font-weight: bold;
142 | letter-spacing: -0.01em;
143 | margin-top: 16px;
144 | margin: 6px 0 3px 0;
145 | }
146 |
147 | h4
148 | {
149 | font-size: 130%;
150 | font-weight: bold;
151 | letter-spacing: -0.01em;
152 | margin-top: 16px;
153 | margin: 18px 0 3px 0;
154 | color: #A35A00;
155 | }
156 |
157 | h5, .container-overview .subsection-title
158 | {
159 | font-size: 120%;
160 | font-weight: bold;
161 | letter-spacing: -0.01em;
162 | margin: 8px 0 3px -16px;
163 | }
164 |
165 | h6
166 | {
167 | font-size: 100%;
168 | letter-spacing: -0.01em;
169 | margin: 6px 0 3px 0;
170 | font-style: italic;
171 | }
172 |
173 | .ancestors { color: #999; }
174 | .ancestors a
175 | {
176 | color: #999 !important;
177 | text-decoration: none;
178 | }
179 |
180 | .important
181 | {
182 | font-weight: bold;
183 | color: #950B02;
184 | }
185 |
186 | .yes-def {
187 | text-indent: -1000px;
188 | }
189 |
190 | .type-signature {
191 | color: #aaa;
192 | }
193 |
194 | .name, .signature {
195 | font-family: Consolas, "Lucida Console", Monaco, monospace;
196 | }
197 |
198 | .details { margin-top: 14px; border-left: 2px solid #DDD; }
199 | .details dt { width:100px; float:left; padding-left: 10px; padding-top: 6px; }
200 | .details dd { margin-left: 50px; }
201 | .details ul { margin: 0; }
202 | .details ul { list-style-type: none; }
203 | .details li { margin-left: 30px; padding-top: 6px; }
204 | .details pre.prettyprint { margin: 0 }
205 | .details .object-value { padding-top: 0; }
206 |
207 | .description {
208 | margin-bottom: 1em;
209 | margin-left: -16px;
210 | margin-top: 1em;
211 | }
212 |
213 | .code-caption
214 | {
215 | font-style: italic;
216 | font-family: Palatino, 'Palatino Linotype', serif;
217 | font-size: 107%;
218 | margin: 0;
219 | }
220 |
221 | .prettyprint
222 | {
223 | border: 1px solid #ddd;
224 | width: 80%;
225 | overflow: auto;
226 | }
227 |
228 | .prettyprint.source {
229 | width: inherit;
230 | }
231 |
232 | .prettyprint code
233 | {
234 | font-family: Consolas, 'Lucida Console', Monaco, monospace;
235 | font-size: 100%;
236 | line-height: 18px;
237 | display: block;
238 | padding: 4px 12px;
239 | margin: 0;
240 | background-color: #fff;
241 | color: #000;
242 | border-left: 3px #ddd solid;
243 | }
244 |
245 | .prettyprint code span.line
246 | {
247 | display: inline-block;
248 | }
249 |
250 | .params, .props
251 | {
252 | border-spacing: 0;
253 | border: 0;
254 | border-collapse: collapse;
255 | }
256 |
257 | .params .name, .props .name, .name code {
258 | color: #A35A00;
259 | font-family: Consolas, 'Lucida Console', Monaco, monospace;
260 | font-size: 100%;
261 | }
262 |
263 | .params td, .params th, .props td, .props th
264 | {
265 | border: 1px solid #ddd;
266 | margin: 0px;
267 | text-align: left;
268 | vertical-align: top;
269 | padding: 4px 6px;
270 | display: table-cell;
271 | }
272 |
273 | .params thead tr, .props thead tr
274 | {
275 | background-color: #ddd;
276 | font-weight: bold;
277 | }
278 |
279 | .params .params thead tr, .props .props thead tr
280 | {
281 | background-color: #fff;
282 | font-weight: bold;
283 | }
284 |
285 | .params th, .props th { border-right: 1px solid #aaa; }
286 | .params thead .last, .props thead .last { border-right: 1px solid #ddd; }
287 |
288 | .disabled {
289 | color: #454545;
290 | }
291 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/styles/prettify-jsdoc.css:
--------------------------------------------------------------------------------
1 | /* JSDoc prettify.js theme */
2 |
3 | /* plain text */
4 | .pln {
5 | color: #000000;
6 | font-weight: normal;
7 | font-style: normal;
8 | }
9 |
10 | /* string content */
11 | .str {
12 | color: #006400;
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
17 | /* a keyword */
18 | .kwd {
19 | color: #000000;
20 | font-weight: bold;
21 | font-style: normal;
22 | }
23 |
24 | /* a comment */
25 | .com {
26 | font-weight: normal;
27 | font-style: italic;
28 | }
29 |
30 | /* a type name */
31 | .typ {
32 | color: #000000;
33 | font-weight: normal;
34 | font-style: normal;
35 | }
36 |
37 | /* a literal value */
38 | .lit {
39 | color: #006400;
40 | font-weight: normal;
41 | font-style: normal;
42 | }
43 |
44 | /* punctuation */
45 | .pun {
46 | color: #000000;
47 | font-weight: bold;
48 | font-style: normal;
49 | }
50 |
51 | /* lisp open bracket */
52 | .opn {
53 | color: #000000;
54 | font-weight: bold;
55 | font-style: normal;
56 | }
57 |
58 | /* lisp close bracket */
59 | .clo {
60 | color: #000000;
61 | font-weight: bold;
62 | font-style: normal;
63 | }
64 |
65 | /* a markup tag name */
66 | .tag {
67 | color: #006400;
68 | font-weight: normal;
69 | font-style: normal;
70 | }
71 |
72 | /* a markup attribute name */
73 | .atn {
74 | color: #006400;
75 | font-weight: normal;
76 | font-style: normal;
77 | }
78 |
79 | /* a markup attribute value */
80 | .atv {
81 | color: #006400;
82 | font-weight: normal;
83 | font-style: normal;
84 | }
85 |
86 | /* a declaration */
87 | .dec {
88 | color: #000000;
89 | font-weight: bold;
90 | font-style: normal;
91 | }
92 |
93 | /* a variable name */
94 | .var {
95 | color: #000000;
96 | font-weight: normal;
97 | font-style: normal;
98 | }
99 |
100 | /* a function name */
101 | .fun {
102 | color: #000000;
103 | font-weight: bold;
104 | font-style: normal;
105 | }
106 |
107 | /* Specify class=linenums on a pre to get line numbering */
108 | ol.linenums {
109 | margin-top: 0;
110 | margin-bottom: 0;
111 | }
112 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/doc/styles/prettify-tomorrow.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* Pretty printing styles. Used with prettify.js. */
4 | /* SPAN elements with the classes below are added by prettyprint. */
5 | /* plain text */
6 | .pln {
7 | color: #4d4d4c; }
8 |
9 | @media screen {
10 | /* string content */
11 | .str {
12 | color: #718c00; }
13 |
14 | /* a keyword */
15 | .kwd {
16 | color: #8959a8; }
17 |
18 | /* a comment */
19 | .com {
20 | color: #8e908c; }
21 |
22 | /* a type name */
23 | .typ {
24 | color: #4271ae; }
25 |
26 | /* a literal value */
27 | .lit {
28 | color: #f5871f; }
29 |
30 | /* punctuation */
31 | .pun {
32 | color: #4d4d4c; }
33 |
34 | /* lisp open bracket */
35 | .opn {
36 | color: #4d4d4c; }
37 |
38 | /* lisp close bracket */
39 | .clo {
40 | color: #4d4d4c; }
41 |
42 | /* a markup tag name */
43 | .tag {
44 | color: #c82829; }
45 |
46 | /* a markup attribute name */
47 | .atn {
48 | color: #f5871f; }
49 |
50 | /* a markup attribute value */
51 | .atv {
52 | color: #3e999f; }
53 |
54 | /* a declaration */
55 | .dec {
56 | color: #f5871f; }
57 |
58 | /* a variable name */
59 | .var {
60 | color: #c82829; }
61 |
62 | /* a function name */
63 | .fun {
64 | color: #4271ae; } }
65 | /* Use higher contrast and text-weight for printable form. */
66 | @media print, projection {
67 | .str {
68 | color: #060; }
69 |
70 | .kwd {
71 | color: #006;
72 | font-weight: bold; }
73 |
74 | .com {
75 | color: #600;
76 | font-style: italic; }
77 |
78 | .typ {
79 | color: #404;
80 | font-weight: bold; }
81 |
82 | .lit {
83 | color: #044; }
84 |
85 | .pun, .opn, .clo {
86 | color: #440; }
87 |
88 | .tag {
89 | color: #006;
90 | font-weight: bold; }
91 |
92 | .atn {
93 | color: #404; }
94 |
95 | .atv {
96 | color: #060; } }
97 | /* Style */
98 | /*
99 | pre.prettyprint {
100 | background: white;
101 | font-family: Menlo, Monaco, Consolas, monospace;
102 | font-size: 12px;
103 | line-height: 1.5;
104 | border: 1px solid #ccc;
105 | padding: 10px; }
106 | */
107 |
108 | /* Specify class=linenums on a pre to get line numbering */
109 | ol.linenums {
110 | margin-top: 0;
111 | margin-bottom: 0; }
112 |
113 | /* IE indents via margin-left */
114 | li.L0,
115 | li.L1,
116 | li.L2,
117 | li.L3,
118 | li.L4,
119 | li.L5,
120 | li.L6,
121 | li.L7,
122 | li.L8,
123 | li.L9 {
124 | /* */ }
125 |
126 | /* Alternate shading for lines */
127 | li.L1,
128 | li.L3,
129 | li.L5,
130 | li.L7,
131 | li.L9 {
132 | /* */ }
133 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.initConfig({
3 | pkg: grunt.file.readJSON('package.json'),
4 | browserify: {
5 | demo: {
6 | files: {
7 | './examples/browserify/example.js': ['./examples/browserify/index.js']
8 | },
9 | options: {
10 | browserifyOptions: {
11 | debug: true
12 | }
13 | }
14 | }
15 | },
16 | concurrent: {
17 | tasks: ['watch:raw','nodemon'],
18 | options: {
19 | logConcurrentOutput: true
20 | }
21 | },
22 | copy: {
23 | raw: {
24 | expand: true,
25 | flatten: true,
26 | src: [
27 | './angular.hammer.js',
28 | './node_modules/hammerjs/hammer.js',
29 | './node_modules/angular/angular.js'
30 | ],
31 | dest: './examples/raw/'
32 | },
33 | rawmin: {
34 | expand: true,
35 | flatten: true,
36 | src: [
37 | './angular.hammer.min.js',
38 | './angular.hammer.min.js.map',
39 | './node_modules/angular/angular.min.js',
40 | './node_modules/angular/angular.min.js.map',
41 | './node_modules/hammerjs/hammer.min.js',
42 | './node_modules/hammerjs/hammer.min.js.map'
43 | ],
44 | dest: './examples/raw/'
45 | }
46 | },
47 | jsdoc : {
48 | dist : {
49 | src: ['./angular.hammer.js'],
50 | dest: './doc',
51 | options: {
52 | configure: 'jsdoc.json'
53 | }
54 | }
55 | },
56 | nodemon: {
57 | demo: {
58 | script:'server.js',
59 | options: {
60 | watch: ['./examples']
61 | }
62 | }
63 | },
64 | requirejs: {
65 | },
66 | uglify: {
67 | dist: {
68 | options: {
69 | sourceMap: true,
70 | sourceMapName: './angular.hammer.min.js.map',
71 | mangle: true,
72 | preserveComments: require('uglify-save-license')
73 | },
74 | files: {
75 | './angular.hammer.min.js': './angular.hammer.js'
76 | }
77 | },
78 | browserify: {
79 | options: {
80 | sourceMap: true,
81 | sourceMapName: './examples/browserify/example.min.js.map',
82 | mangle: true
83 | },
84 | files: {
85 | './examples/browserify/example.js': ['./examples/browserify/example.js']
86 | }
87 | }
88 | },
89 | watch: {
90 | js: {
91 | files: ['./angular.hammer.js'],
92 | tasks: ['copy']
93 | },
94 | raw: {
95 | files: [
96 | './angular.hammer.js',
97 | './angular.hammer.min.js'
98 | ],
99 | tasks: ['copy']
100 | }
101 | },
102 | webpack: {
103 | }
104 | });
105 |
106 | grunt.loadNpmTasks('grunt-browserify');
107 | grunt.loadNpmTasks('grunt-concurrent');
108 | grunt.loadNpmTasks('grunt-contrib-copy');
109 | grunt.loadNpmTasks('grunt-contrib-requirejs');
110 | grunt.loadNpmTasks('grunt-contrib-uglify');
111 | grunt.loadNpmTasks('grunt-contrib-watch');
112 | grunt.loadNpmTasks('grunt-jsdoc');
113 | grunt.loadNpmTasks('grunt-nodemon');
114 | grunt.loadNpmTasks('grunt-webpack');
115 |
116 | grunt.registerTask('build', ['uglify:dist', 'jsdoc:dist']);
117 | grunt.registerTask('default', ['copy', 'concurrent']);
118 | grunt.registerTask('demo-browserify', ['browserify', 'nodemon']);
119 | grunt.registerTask('demo-browserify-min', ['browserify', 'uglify:browserify', 'nodemon']);
120 | grunt.registerTask('demo-raw', ['copy:raw', 'nodemon']);
121 | grunt.registerTask('demo-raw-min', ['copy:rawmin', 'nodemon']);
122 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/jsdoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": ["plugins/markdown"],
3 | "markdown": {
4 | "parser": "gfm"
5 | }
6 | }
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-hammer",
3 | "version": "2.1.10",
4 | "description": "Hammer.js support for Angular.js applications",
5 | "main": "angular.hammer.js",
6 | "directories": {
7 | "example": "examples"
8 | },
9 | "scripts": {
10 | "test": "echo \"Error: no test specified\" && exit 1"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/RyanMullins/angular-hammer.git"
15 | },
16 | "keywords": [
17 | "hammer",
18 | "angular",
19 | "javascript",
20 | "touch",
21 | "gesture"
22 | ],
23 | "author": "Ryan S Mullins",
24 | "license": "MIT",
25 | "bugs": {
26 | "url": "https://github.com/RyanMullins/angular-hammer/issues"
27 | },
28 | "homepage": "http://ryanmullins.github.io/angular-hammer/",
29 | "devDependencies": {
30 | "angular": ">=1.2.0",
31 | "browserify": "^8.0.3",
32 | "browserify-shim": "^3.8.2",
33 | "finalhandler": "^0.3.2",
34 | "grunt": "^0.4.5",
35 | "grunt-browserify": "^3.2.1",
36 | "grunt-concurrent": "^1.0.0",
37 | "grunt-contrib-copy": "^0.7.0",
38 | "grunt-contrib-requirejs": "^0.4.4",
39 | "grunt-contrib-uglify": "^0.6.0",
40 | "grunt-contrib-watch": "^0.6.1",
41 | "grunt-jsdoc": "^0.5.7",
42 | "grunt-nodemon": "^0.3.0",
43 | "grunt-webpack": "^1.0.8",
44 | "hammerjs": ">=2.0.0",
45 | "serve-static": "^1.7.1",
46 | "uglify-save-license": "^0.4.1",
47 | "webpack": "^1.4.15",
48 | "webpack-dev-server": "^1.7.0"
49 | },
50 | "browserify": {
51 | "transform": [
52 | "browserify-shim"
53 | ]
54 | },
55 | "browser": {
56 | "angular": "./node_modules/angular/angular.js",
57 | "hammerjs": "./node_modules/hammerjs/hammer.js",
58 | "angular-hammer": "./angular.hammer.js"
59 | },
60 | "browserify-shim": {
61 | "angular": {
62 | "exports": "angular"
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/keensoft-example/www/lib/ryanmullins-angular-hammer/server.js:
--------------------------------------------------------------------------------
1 | // ---- Modules ----
2 |
3 | var finalhandler = require('finalhandler'),
4 | http = require('http'),
5 | serveStatic = require('serve-static');
6 |
7 | // ---- Local Variables ----
8 |
9 | var serve = serveStatic('examples');
10 |
11 | // ---- HTTP Server ----
12 |
13 | http.createServer(function (req, res) {
14 | var done = finalhandler(req, res);
15 | serve(req, res, done);
16 | }).listen(3000);
--------------------------------------------------------------------------------
/plugin.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 | Full Screen Image
7 |
8 |
9 |
10 |
11 |
12 | keensoft (http://keensoft.es/)
13 | Show image in full screen mode with native components.
14 | cordova, image, spanish, fullscreen, photos, keensoft, gallery
15 |
16 | MIT
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/src/android/FullScreenImage.java:
--------------------------------------------------------------------------------
1 | //
2 | // FullScreenImage.java
3 | // Copyright (c) 2014 keensoft - http://keensoft.es
4 | //
5 |
6 | package es.keensoft.fullscreenimage;
7 |
8 | import java.io.File;
9 | import java.io.FileOutputStream;
10 | import java.io.IOException;
11 | import java.io.InputStream;
12 | import java.io.OutputStream;
13 | import java.io.ByteArrayInputStream;
14 | import java.io.ByteArrayOutputStream;
15 | import java.util.Locale;
16 |
17 | import android.annotation.SuppressLint;
18 |
19 | import org.json.JSONArray;
20 | import org.json.JSONObject;
21 | import org.json.JSONException;
22 |
23 |
24 | import android.content.Intent;
25 | import android.net.Uri;
26 | import android.os.Environment;
27 | import android.util.Log;
28 | import android.util.Base64;
29 | import android.*;
30 | import android.graphics.Bitmap;
31 | import android.graphics.BitmapFactory;
32 | import android.webkit.MimeTypeMap;
33 |
34 | import org.apache.cordova.CallbackContext;
35 | import org.apache.cordova.CordovaPlugin;
36 |
37 |
38 |
39 | @SuppressLint("DefaultLocale")
40 | public class FullScreenImage extends CordovaPlugin {
41 | private CallbackContext command;
42 | private static final String LOG_TAG = "FullScreenImagePlugin";
43 |
44 | /**
45 | * Executes the request.
46 | *
47 | * This method is called from the WebView thread.
48 | * To do a non-trivial amount of work, use:
49 | * cordova.getThreadPool().execute(runnable);
50 | *
51 | * To run on the UI thread, use:
52 | * cordova.getActivity().runOnUiThread(runnable);
53 | *
54 | * @param action The action to execute.
55 | * @param args The exec() arguments in JSON form.
56 | * @param callback The callback context used when calling
57 | * back into JavaScript.
58 | * @return Whether the action was valid.
59 | */
60 | @Override
61 | public boolean execute (String action, JSONArray args,
62 | CallbackContext callback) throws JSONException {
63 |
64 | this.command = callback;
65 |
66 | if ("showImageURL".equals(action)) {
67 | showImageURL(args);
68 |
69 | return true;
70 | }
71 |
72 | if ("showImageBase64".equals(action)) {
73 | showImageBase64(args);
74 |
75 | return true;
76 | }
77 |
78 | // Returning false results in a "MethodNotFound" error.
79 | return false;
80 | }
81 |
82 | private String getJSONProperty(JSONObject json, String property) throws JSONException {
83 | if (json.has(property)) {
84 | return json.getString(property);
85 | }
86 | return null;
87 | }
88 |
89 | /**
90 | * Show image in full screen from local resources.
91 | *
92 | * @param url File path in local system
93 | */
94 | public void showImageURL (JSONArray args) throws JSONException {
95 | JSONObject json = args.getJSONObject(0);
96 | String url = getJSONProperty(json, "url");
97 | try {
98 |
99 | Uri path = Uri.parse(url);
100 | File source = new File(path.getPath());
101 | String filenameArray[] = url.split("\\.");
102 | String extension = filenameArray[filenameArray.length-1];
103 | if (!source.isFile()) {
104 | Log.d(LOG_TAG, "Not a file. Trying www/");
105 | InputStream inputStream = null;
106 | OutputStream outputStream = null;
107 |
108 | File pPath = getTempDirectoryPath();
109 |
110 | File f= new File(pPath, "output."+extension);
111 | f.createNewFile();
112 | inputStream = this.cordova.getActivity().getAssets().open("www/"+url);
113 | outputStream =new FileOutputStream(f);
114 | byte buf[]=new byte[1024];
115 | int len;
116 |
117 | while((len=inputStream.read(buf))>0)
118 | outputStream.write(buf,0,len);
119 | outputStream.close();
120 | inputStream.close();
121 |
122 | path = Uri.fromFile(f);
123 | }
124 | Intent intent = new Intent(Intent.ACTION_VIEW);
125 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
126 | // Convert the URI string to lower case to ensure compatibility with MimeTypeMap (see CB-2185).
127 | intent.setDataAndType(path, MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase(Locale.getDefault())));
128 | this.cordova.getActivity().startActivity(intent);
129 |
130 | } catch (IOException e) {
131 | Log.d(LOG_TAG, "Could not create file: " + e.toString());
132 |
133 | }
134 | }
135 |
136 |
137 | /**
138 | * Show image in full screen from base64 String.
139 | * @param base64 Image base64 String
140 | * @param name image Name to show on intent view
141 | */
142 | public void showImageBase64 (JSONArray args) throws JSONException{
143 | JSONObject json = args.getJSONObject(0);
144 |
145 | String base64Image = getJSONProperty(json, "base64");
146 | String name = getJSONProperty(json, "name");
147 | String extension = getJSONProperty(json, "type");
148 | File pPath = getTempDirectoryPath();
149 |
150 | try {
151 |
152 | byte[] imageAsBytes = Base64.decode(base64Image, Base64.DEFAULT);
153 |
154 | File filePath= new File(pPath, "output."+extension);
155 | filePath.createNewFile();
156 |
157 | FileOutputStream os = new FileOutputStream(filePath, false);
158 | os.write(imageAsBytes);
159 | os.flush();
160 | os.close();
161 |
162 | Uri path = Uri.fromFile(filePath);
163 | Intent intent = new Intent(Intent.ACTION_VIEW);
164 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
165 | intent.setDataAndType(path, "image/*");
166 | this.cordova.getActivity().startActivity(intent);
167 |
168 | } catch (IOException e) {
169 | Log.d(LOG_TAG, "Could not create file: " + e.toString());
170 | }
171 |
172 |
173 | }
174 |
175 |
176 | /**
177 | * Get temporary directory for copied image
178 | * Refer to cordova-plugin-camera/src/android/CameraLauncher.java
179 | */
180 | private File getTempDirectoryPath() {
181 | File cache = null;
182 |
183 | // SD Card Mounted
184 | if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
185 | cache = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
186 | "/Android/data/" + cordova.getActivity().getPackageName() + "/cache/");
187 | }
188 | // Use internal storage
189 | else {
190 | cache = cordova.getActivity().getCacheDir();
191 | }
192 |
193 | // Create the cache directory if it doesn't exist
194 | cache.mkdirs();
195 | return cache;
196 | }
197 | }
198 |
--------------------------------------------------------------------------------
/src/ios/FullScreenImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // FullScreenImage.h
3 | // Copyright (c) 2014 keensoft - http://keensoft.es
4 | //
5 |
6 | #import
7 | #import
8 | #import
9 |
10 | @interface FullScreenImage : CDVPlugin
11 |
12 | @property (nonatomic, strong) UIDocumentInteractionController *docInteractionController;
13 | @property (nonatomic, strong) NSMutableArray *documentURLs;
14 |
15 | - (void) showImageURL:(CDVInvokedUrlCommand*)command;
16 | - (void) showImageBase64:(CDVInvokedUrlCommand*)command;
17 | @end
18 |
--------------------------------------------------------------------------------
/src/ios/FullScreenImage.m:
--------------------------------------------------------------------------------
1 | //
2 | // FullScreenImage.m
3 | // Copyright (c) 2014 keensoft - http://keensoft.es
4 | //
5 |
6 | #import "FullScreenImage.h"
7 | #import
8 | #import "NSData+Base64.h"
9 |
10 |
11 | @implementation FullScreenImage
12 |
13 |
14 | - (void)setupDocumentControllerWithURL:(NSURL *)url
15 | {
16 | //checks if docInteractionController has been initialized with the URL
17 | if (self.docInteractionController == nil)
18 | {
19 | self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
20 | self.docInteractionController.delegate = self;
21 | }
22 | else
23 | {
24 | self.docInteractionController.URL = url;
25 | }
26 | }
27 |
28 |
29 | - (void) showImageURL:(CDVInvokedUrlCommand*)command{
30 | // Check command.arguments here.
31 | [self.commandDelegate runInBackground:^{
32 | self.documentURLs = [NSMutableArray array];
33 |
34 | NSString *fullPath = [[command.arguments objectAtIndex:0] valueForKey:@"url"];
35 | NSURL *URL = [NSURL URLWithString:fullPath];
36 |
37 | BOOL fileExists = URL.isFileURL && [[NSFileManager defaultManager] fileExistsAtPath:URL.path];
38 |
39 | if (!fileExists) {
40 | NSString *soundFilePath = [NSString stringWithFormat:@"%@/www/%@",[[NSBundle mainBundle] resourcePath],fullPath];
41 | URL = [NSURL fileURLWithPath:soundFilePath];
42 | }
43 |
44 | if (URL) {
45 | [self.documentURLs addObject:URL];
46 | [self setupDocumentControllerWithURL:URL];
47 | double delayInSeconds = 0.1;
48 | dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
49 | dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
50 | [self.docInteractionController presentPreviewAnimated:YES];
51 | });
52 | }
53 | }];
54 | }
55 |
56 | - (void) showImageBase64:(CDVInvokedUrlCommand*)command{
57 |
58 | [self.commandDelegate runInBackground:^{
59 | NSString *fullPath = [[command.arguments objectAtIndex:0] valueForKey:@"base64"];
60 |
61 | NSString *imageName = [[command.arguments objectAtIndex:0] valueForKey:@"name"];
62 |
63 | NSString *imageType = [[command.arguments objectAtIndex:0] valueForKey:@"type"];
64 |
65 | if([imageName isKindOfClass:[NSNull class]] || [imageName isEqualToString:@""]){
66 | imageName = @"default";
67 | }
68 |
69 | if([imageType isKindOfClass:[NSNull class]] || [imageType isEqualToString:@""]){
70 |
71 | NSData *imageDatatest = [NSData dataFromBase64String:fullPath];
72 | imageType = [self contentTypeForImageData:imageDatatest];
73 | }
74 |
75 | // Problem with large base64 strings
76 | // https://github.com/keensoft/FullScreenImage-Cordova-Plugin/issues/22
77 | NSData *imageData = [NSData dataFromBase64String:fullPath];
78 | UIImage *ret = [UIImage imageWithData:imageData];
79 |
80 |
81 | NSData *imageDataSaved=UIImagePNGRepresentation(ret);
82 |
83 |
84 | NSString *docsDir;
85 | NSArray *dirPaths;
86 |
87 |
88 | dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
89 | docsDir = [dirPaths objectAtIndex:0];
90 | NSString *completeImageName = [NSString stringWithFormat:@"%@.%@",imageName,imageType];
91 | NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:completeImageName]];
92 | [imageDataSaved writeToFile:databasePath atomically:YES];
93 |
94 | NSURL *imageURL=[NSURL fileURLWithPath:databasePath];
95 |
96 | if (imageURL) {
97 | [self.documentURLs addObject:imageURL];
98 | [self setupDocumentControllerWithURL:imageURL];
99 | double delayInSeconds = 0.1;
100 | dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
101 | dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
102 | [self.docInteractionController presentPreviewAnimated:YES];
103 | });
104 | }
105 | }];
106 | }
107 |
108 | - (UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL
109 | usingDelegate: (id ) interactionDelegate {
110 |
111 | UIDocumentInteractionController *interactionController =
112 | [UIDocumentInteractionController interactionControllerWithURL: fileURL];
113 | interactionController.delegate = interactionDelegate;
114 |
115 | return interactionController;
116 | }
117 |
118 | - (UIViewController *) documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *) controller {
119 | return self.viewController;
120 | }
121 |
122 | - (NSString *)contentTypeForImageData:(NSData *)data {
123 | uint8_t c;
124 | [data getBytes:&c length:1];
125 |
126 | switch (c) {
127 | case 0xFF:
128 | return @"jpeg";
129 | case 0x89:
130 | return @"png";
131 | case 0x47:
132 | return @"gif";
133 | case 0x49:
134 | case 0x4D:
135 | return @"tiff";
136 | }
137 | return nil;
138 | }
139 |
140 |
141 |
142 | @end
143 |
144 |
--------------------------------------------------------------------------------
/src/ios/NSData+Base64.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSData+Base64.h
3 | // base64
4 | //
5 | // Created by Matt Gallagher on 2009/06/03.
6 | // Copyright 2009 Matt Gallagher. All rights reserved.
7 | //
8 | // This software is provided 'as-is', without any express or implied
9 | // warranty. In no event will the authors be held liable for any damages
10 | // arising from the use of this software. Permission is granted to anyone to
11 | // use this software for any purpose, including commercial applications, and to
12 | // alter it and redistribute it freely, subject to the following restrictions:
13 | //
14 | // 1. The origin of this software must not be misrepresented; you must not
15 | // claim that you wrote the original software. If you use this software
16 | // in a product, an acknowledgment in the product documentation would be
17 | // appreciated but is not required.
18 | // 2. Altered source versions must be plainly marked as such, and must not be
19 | // misrepresented as being the original software.
20 | // 3. This notice may not be removed or altered from any source
21 | // distribution.
22 | //
23 |
24 | #import
25 |
26 | void *NewBase64Decode(
27 | const char *inputBuffer,
28 | size_t length,
29 | size_t *outputLength);
30 |
31 | char *NewBase64Encode(
32 | const void *inputBuffer,
33 | size_t length,
34 | bool separateLines,
35 | size_t *outputLength);
36 |
37 | @interface NSData (Base64)
38 |
39 | + (NSData *)dataFromBase64String:(NSString *)aString;
40 | - (NSString *)base64EncodedString;
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/www/bower_components/platform/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "platform.js",
3 | "version": "1.3.0",
4 | "main": "platform.js",
5 | "ignore": [
6 | ".*",
7 | "*.log",
8 | "*.md",
9 | "component.json",
10 | "package.json",
11 | "doc",
12 | "test",
13 | "vendor"
14 | ],
15 | "homepage": "https://github.com/bestiejs/platform.js",
16 | "_release": "1.3.0",
17 | "_resolution": {
18 | "type": "version",
19 | "tag": "1.3.0",
20 | "commit": "d7c905ed9ce308c5bd54584a4a5dccd20c4bbd30"
21 | },
22 | "_source": "git://github.com/bestiejs/platform.js.git",
23 | "_target": "~1.3.0",
24 | "_originalSource": "platform",
25 | "_direct": true
26 | }
--------------------------------------------------------------------------------
/www/bower_components/platform/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright 2014 Benjamin Tan
2 | Copyright 2011-2014 John-David Dalton
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining
5 | a copy of this software and associated documentation files (the
6 | "Software"), to deal in the Software without restriction, including
7 | without limitation the rights to use, copy, modify, merge, publish,
8 | distribute, sublicense, and/or sell copies of the Software, and to
9 | permit persons to whom the Software is furnished to do so, subject to
10 | the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/www/bower_components/platform/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "platform.js",
3 | "version": "1.3.0",
4 | "main": "platform.js",
5 | "ignore": [
6 | ".*",
7 | "*.log",
8 | "*.md",
9 | "component.json",
10 | "package.json",
11 | "doc",
12 | "test",
13 | "vendor"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/www/fullscreenimage.js:
--------------------------------------------------------------------------------
1 |
2 | //
3 | // fullscreenimage.js
4 | //
5 | // Copyright (c) 2014 keensoft - http://keensoft.es
6 | //
7 |
8 | var exec = require("cordova/exec");
9 |
10 | var FullScreenImage = function () {
11 | this.name = "FullScreenImage";
12 | };
13 |
14 | /*
15 | * Show image from url
16 | *
17 | * Parameters:
18 | * url: url to show
19 | *
20 | */
21 |
22 | FullScreenImage.prototype.showImageURL = function (url) {
23 |
24 | exec(null, null, "FullScreenImage", "showImageURL", [{"url":url}]);
25 |
26 |
27 | };
28 |
29 | /*
30 | * Show image from base64
31 | *
32 | * Parameters:
33 | * base64String: base64String
34 | * name: filename to show
35 | * type: image type
36 | *
37 | */
38 |
39 | FullScreenImage.prototype.showImageBase64 = function (base64String, name, type) {
40 |
41 | exec(null, null, "FullScreenImage", "showImageBase64", [{"base64":base64String, "name":name, "type":type}]);
42 |
43 |
44 | };
45 |
46 | module.exports = new FullScreenImage();
47 |
--------------------------------------------------------------------------------