From 210e8feae2fb4842bfb2de38666e6c41671fef3c Mon Sep 17 00:00:00 2001 From: Pliable Pixels Date: Wed, 27 Sep 2017 12:42:48 -0400 Subject: removed lib --- www/lib/angular-animate/.bower.json | 19 - www/lib/angular-animate/README.md | 68 - www/lib/angular-animate/angular-animate.js | 3721 -- www/lib/angular-animate/angular-animate.min.js | 52 - www/lib/angular-animate/angular-animate.min.js.map | 8 - www/lib/angular-animate/bower.json | 9 - www/lib/angular-animate/index.js | 2 - www/lib/angular-animate/package.json | 26 - www/lib/angular-awesome-slider/.bower.json | 52 - www/lib/angular-awesome-slider/Gruntfile.js | 136 - www/lib/angular-awesome-slider/MIT-LICENSE.txt | 20 - www/lib/angular-awesome-slider/README.md | 259 - www/lib/angular-awesome-slider/bower.json | 43 - .../dist/angular-awesome-slider.js | 1267 - .../dist/angular-awesome-slider.min.js | 85 - .../dist/css/angular-awesome-slider.min.css | 7 - .../dist/img/jslider.blue.png | Bin 1140 -> 0 bytes .../dist/img/jslider.blue.vertical.png | Bin 1463 -> 0 bytes .../dist/img/jslider.plastic.png | Bin 1423 -> 0 bytes .../dist/img/jslider.plastic.vertical.png | Bin 1729 -> 0 bytes .../angular-awesome-slider/dist/img/jslider.png | Bin 1133 -> 0 bytes .../dist/img/jslider.round.plastic.png | Bin 1956 -> 0 bytes .../dist/img/jslider.round.png | Bin 1973 -> 0 bytes .../dist/img/jslider.round.vertical.png | Bin 2369 -> 0 bytes .../dist/img/jslider.vertical.png | Bin 1456 -> 0 bytes www/lib/angular-awesome-slider/package.json | 46 - .../src/core/config/constants.js | 32 - www/lib/angular-awesome-slider/src/core/index.js | 195 - .../src/core/model/draggable.factory.js | 192 - .../src/core/model/pointer.factory.js | 100 - .../src/core/model/slider.factory.js | 686 - .../src/core/template/slider.tmpl.js | 29 - .../src/core/utils/utils.factory.js | 34 - .../src/css/angular-awesome-slider.css | 531 - .../angular-awesome-slider/src/css/less/main.less | 339 - .../src/css/less/skin-blue.less | 79 - .../src/css/less/skin-css.less | 139 - .../src/css/less/skin-plastic.less | 78 - .../src/css/less/skin-round.less | 81 - .../src/css/less/variables.less | 42 - .../src/css/sass/core/_variables.sass | 28 - .../src/css/sass/horizontal/_horizontal.sass | 23 - .../src/css/sass/horizontal/_labels.sass | 17 - .../src/css/sass/horizontal/_main.sass | 8 - .../src/css/sass/horizontal/_pointers-value.sass | 11 - .../src/css/sass/horizontal/_pointers.sass | 21 - .../src/css/sass/horizontal/_ranges.sass | 31 - .../src/css/sass/horizontal/_scale.sass | 15 - .../angular-awesome-slider/src/css/sass/main.sass | 17 - .../src/css/sass/skins/_skin-blue.sass | 55 - .../src/css/sass/skins/_skin-css.sass | 110 - .../src/css/sass/skins/_skin-plastic.sass | 51 - .../src/css/sass/skins/_skin-round.sass | 56 - .../src/css/sass/vertical/_labels.sass | 11 - .../src/css/sass/vertical/_main.sass | 8 - .../src/css/sass/vertical/_pointers-value.sass | 9 - .../src/css/sass/vertical/_pointers.sass | 13 - .../src/css/sass/vertical/_ranges.sass | 46 - .../src/css/sass/vertical/_scales.sass | 16 - .../src/css/sass/vertical/_vertical.sass | 13 - .../src/css/scss/core/_variables.scss | 28 - .../src/css/scss/horizontal/_horizontal.scss | 24 - .../src/css/scss/horizontal/_labels.scss | 19 - .../src/css/scss/horizontal/_main.scss | 8 - .../src/css/scss/horizontal/_pointers-value.scss | 12 - .../src/css/scss/horizontal/_pointers.scss | 24 - .../src/css/scss/horizontal/_ranges.scss | 34 - .../src/css/scss/horizontal/_scale.scss | 16 - .../angular-awesome-slider/src/css/scss/main.scss | 17 - .../src/css/scss/skins/_skin-blue.scss | 60 - .../src/css/scss/skins/_skin-css.scss | 116 - .../src/css/scss/skins/_skin-plastic.scss | 56 - .../src/css/scss/skins/_skin-round.scss | 61 - .../src/css/scss/vertical/_labels.scss | 12 - .../src/css/scss/vertical/_main.scss | 8 - .../src/css/scss/vertical/_pointers-value.scss | 10 - .../src/css/scss/vertical/_pointers.scss | 15 - .../src/css/scss/vertical/_ranges.scss | 48 - .../src/css/scss/vertical/_scales.scss | 18 - .../src/css/scss/vertical/_vertical.scss | 14 - .../src/img/jslider.blue.png | Bin 1140 -> 0 bytes .../src/img/jslider.blue.vertical.png | Bin 1463 -> 0 bytes .../src/img/jslider.plastic.png | Bin 1423 -> 0 bytes .../src/img/jslider.plastic.vertical.png | Bin 1729 -> 0 bytes www/lib/angular-awesome-slider/src/img/jslider.png | Bin 1133 -> 0 bytes .../src/img/jslider.round.plastic.png | Bin 1956 -> 0 bytes .../src/img/jslider.round.png | Bin 1973 -> 0 bytes .../src/img/jslider.round.vertical.png | Bin 2369 -> 0 bytes .../src/img/jslider.vertical.png | Bin 1456 -> 0 bytes www/lib/angular-awesome-slider/src/index.html | 391 - .../angular-awesome-slider/src/jquery.slider.js | 700 - www/lib/angular-cookies/.bower.json | 20 - www/lib/angular-cookies/README.md | 68 - www/lib/angular-cookies/angular-cookies.js | 322 - www/lib/angular-cookies/angular-cookies.min.js | 9 - www/lib/angular-cookies/angular-cookies.min.js.map | 8 - www/lib/angular-cookies/bower.json | 10 - www/lib/angular-cookies/index.js | 2 - www/lib/angular-cookies/package.json | 26 - www/lib/angular-sanitize/.bower.json | 19 - www/lib/angular-sanitize/README.md | 68 - www/lib/angular-sanitize/angular-sanitize.js | 683 - www/lib/angular-sanitize/angular-sanitize.min.js | 16 - .../angular-sanitize/angular-sanitize.min.js.map | 8 - www/lib/angular-sanitize/bower.json | 9 - www/lib/angular-sanitize/index.js | 2 - www/lib/angular-sanitize/package.json | 26 - www/lib/angular-touch/.bower.json | 21 - www/lib/angular-touch/LICENSE.md | 21 - www/lib/angular-touch/README.md | 68 - www/lib/angular-touch/angular-touch.js | 735 - www/lib/angular-touch/angular-touch.min.js | 14 - www/lib/angular-touch/angular-touch.min.js.map | 8 - www/lib/angular-touch/bower.json | 10 - www/lib/angular-touch/index.js | 2 - www/lib/angular-touch/package.json | 33 - .../.bower.json | 23 - .../README.md | 29 - .../angular-translate-loader-static-files.js | 107 - .../angular-translate-loader-static-files.min.js | 12 - .../bower.json | 12 - .../package.json | 24 - .../angular-translate-storage-cookie/.bower.json | 23 - www/lib/angular-translate-storage-cookie/README.md | 28 - .../angular-translate-storage-cookie.js | 97 - .../angular-translate-storage-cookie.min.js | 47 - .../angular-translate-storage-cookie/bower.json | 13 - .../angular-translate-storage-cookie/package.json | 26 - .../angular-translate-storage-local/.bower.json | 24 - www/lib/angular-translate-storage-local/README.md | 30 - .../angular-translate-storage-local.js | 123 - .../angular-translate-storage-local.min.js | 52 - www/lib/angular-translate-storage-local/bower.json | 13 - .../angular-translate-storage-local/package.json | 26 - www/lib/angular-translate/.bower.json | 23 - www/lib/angular-translate/README.md | 23 - www/lib/angular-translate/angular-translate.js | 3404 - www/lib/angular-translate/angular-translate.min.js | 1065 - www/lib/angular-translate/bower.json | 12 - www/lib/angular-ui-router/.bower.json | 33 - www/lib/angular-ui-router/CHANGELOG.md | 197 - www/lib/angular-ui-router/CONTRIBUTING.md | 65 - www/lib/angular-ui-router/LICENSE | 21 - www/lib/angular-ui-router/README.md | 243 - .../angular-ui-router/api/angular-ui-router.d.ts | 126 - www/lib/angular-ui-router/bower.json | 23 - .../angular-ui-router/release/angular-ui-router.js | 4232 -- .../release/angular-ui-router.min.js | 7 - www/lib/angular-ui-router/src/common.js | 292 - www/lib/angular-ui-router/src/resolve.js | 252 - www/lib/angular-ui-router/src/state.js | 1373 - www/lib/angular-ui-router/src/stateDirectives.js | 268 - www/lib/angular-ui-router/src/stateFilters.js | 39 - www/lib/angular-ui-router/src/templateFactory.js | 110 - www/lib/angular-ui-router/src/urlMatcherFactory.js | 1036 - www/lib/angular-ui-router/src/urlRouter.js | 413 - www/lib/angular-ui-router/src/view.js | 71 - www/lib/angular-ui-router/src/viewDirective.js | 302 - www/lib/angular-ui-router/src/viewScroll.js | 52 - www/lib/angular-wizard/.bower.json | 32 - www/lib/angular-wizard/.gitignore | 20 - www/lib/angular-wizard/.travis.yml | 7 - www/lib/angular-wizard/CHANGELOG.md | 0 www/lib/angular-wizard/CONTRIBUTE.md | 17 - www/lib/angular-wizard/Gruntfile.js | 201 - www/lib/angular-wizard/README.md | 265 - www/lib/angular-wizard/bower.json | 21 - www/lib/angular-wizard/dist/angular-wizard.css | 138 - www/lib/angular-wizard/dist/angular-wizard.js | 446 - www/lib/angular-wizard/dist/angular-wizard.less | 179 - www/lib/angular-wizard/dist/angular-wizard.min.css | 1 - www/lib/angular-wizard/dist/angular-wizard.min.js | 7 - www/lib/angular-wizard/karma.conf.js | 80 - www/lib/angular-wizard/license.md | 21 - www/lib/angular-wizard/package.json | 58 - www/lib/angular-wizard/src/angular-wizard.less | 179 - www/lib/angular-wizard/src/angularModule.js | 1 - www/lib/angular-wizard/src/step.html | 2 - www/lib/angular-wizard/src/step.js | 23 - www/lib/angular-wizard/src/wizard.html | 8 - www/lib/angular-wizard/src/wizard.js | 340 - www/lib/angular-wizard/src/wizardButtons.js | 26 - www/lib/angular-wizard/src/wizardHandler.js | 26 - www/lib/angular-wizard/test/angularWizardSpec.js | 299 - www/lib/angular/.bower.json | 18 - www/lib/angular/LICENSE.md | 21 - www/lib/angular/README.md | 64 - www/lib/angular/angular-csp.css | 21 - www/lib/angular/angular.js | 31768 --------- www/lib/angular/angular.min.js | 318 - www/lib/angular/angular.min.js.gzip | Bin 56905 -> 0 bytes www/lib/angular/angular.min.js.map | 8 - www/lib/angular/bower.json | 9 - www/lib/angular/index.js | 2 - www/lib/angular/package.json | 25 - www/lib/crypto-js/.bower.json | 45 - www/lib/crypto-js/CONTRIBUTING.md | 28 - www/lib/crypto-js/LICENSE | 24 - www/lib/crypto-js/README.md | 198 - www/lib/crypto-js/aes.js | 227 - www/lib/crypto-js/bower.json | 35 - www/lib/crypto-js/cipher-core.js | 875 - www/lib/crypto-js/core.js | 742 - www/lib/crypto-js/crypto-js.js | 5949 -- www/lib/crypto-js/docs/QuickStartGuide.wiki | 470 - www/lib/crypto-js/enc-base64.js | 124 - www/lib/crypto-js/enc-hex.js | 18 - www/lib/crypto-js/enc-latin1.js | 18 - www/lib/crypto-js/enc-utf16.js | 149 - www/lib/crypto-js/enc-utf8.js | 18 - www/lib/crypto-js/evpkdf.js | 132 - www/lib/crypto-js/format-hex.js | 66 - www/lib/crypto-js/format-openssl.js | 18 - www/lib/crypto-js/hmac-md5.js | 18 - www/lib/crypto-js/hmac-ripemd160.js | 18 - www/lib/crypto-js/hmac-sha1.js | 18 - www/lib/crypto-js/hmac-sha224.js | 18 - www/lib/crypto-js/hmac-sha256.js | 18 - www/lib/crypto-js/hmac-sha3.js | 18 - www/lib/crypto-js/hmac-sha384.js | 18 - www/lib/crypto-js/hmac-sha512.js | 18 - www/lib/crypto-js/hmac.js | 143 - www/lib/crypto-js/index.js | 18 - www/lib/crypto-js/lib-typedarrays.js | 76 - www/lib/crypto-js/md5.js | 268 - www/lib/crypto-js/mode-cfb.js | 78 - www/lib/crypto-js/mode-ctr-gladman.js | 116 - www/lib/crypto-js/mode-ctr.js | 58 - www/lib/crypto-js/mode-ecb.js | 40 - www/lib/crypto-js/mode-ofb.js | 54 - www/lib/crypto-js/package.json | 38 - www/lib/crypto-js/pad-ansix923.js | 49 - www/lib/crypto-js/pad-iso10126.js | 44 - www/lib/crypto-js/pad-iso97971.js | 40 - www/lib/crypto-js/pad-nopadding.js | 30 - www/lib/crypto-js/pad-pkcs7.js | 18 - www/lib/crypto-js/pad-zeropadding.js | 45 - www/lib/crypto-js/pbkdf2.js | 145 - www/lib/crypto-js/rabbit-legacy.js | 190 - www/lib/crypto-js/rabbit.js | 192 - www/lib/crypto-js/rc4.js | 139 - www/lib/crypto-js/ripemd160.js | 267 - www/lib/crypto-js/sha1.js | 150 - www/lib/crypto-js/sha224.js | 80 - www/lib/crypto-js/sha256.js | 199 - www/lib/crypto-js/sha3.js | 323 - www/lib/crypto-js/sha384.js | 83 - www/lib/crypto-js/sha512.js | 323 - www/lib/crypto-js/tripledes.js | 770 - www/lib/crypto-js/x64-core.js | 304 - www/lib/filelogger/.bower.json | 39 - www/lib/filelogger/LICENSE | 21 - www/lib/filelogger/README.md | 190 - www/lib/filelogger/bower.json | 30 - www/lib/filelogger/dist/filelogger.js | 358 - www/lib/filelogger/dist/filelogger.min.js | 6 - www/lib/filelogger/package.json | 29 - www/lib/font-awesome/.bower.json | 37 - www/lib/font-awesome/.gitignore | 33 - www/lib/font-awesome/.npmignore | 42 - www/lib/font-awesome/bower.json | 23 - www/lib/font-awesome/css/font-awesome.css | 1801 - www/lib/font-awesome/css/font-awesome.css.map | 7 - www/lib/font-awesome/css/font-awesome.min.css | 4 - www/lib/font-awesome/fonts/FontAwesome.otf | Bin 93888 -> 0 bytes www/lib/font-awesome/fonts/fontawesome-webfont.eot | Bin 60767 -> 0 bytes www/lib/font-awesome/fonts/fontawesome-webfont.svg | 565 - www/lib/font-awesome/fonts/fontawesome-webfont.ttf | Bin 122092 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.woff | Bin 71508 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.woff2 | Bin 56780 -> 0 bytes www/lib/font-awesome/less/animated.less | 34 - www/lib/font-awesome/less/bordered-pulled.less | 16 - www/lib/font-awesome/less/core.less | 13 - www/lib/font-awesome/less/fixed-width.less | 6 - www/lib/font-awesome/less/font-awesome.less | 17 - www/lib/font-awesome/less/icons.less | 596 - www/lib/font-awesome/less/larger.less | 13 - www/lib/font-awesome/less/list.less | 19 - www/lib/font-awesome/less/mixins.less | 27 - www/lib/font-awesome/less/path.less | 15 - www/lib/font-awesome/less/rotated-flipped.less | 20 - www/lib/font-awesome/less/stacked.less | 20 - www/lib/font-awesome/less/variables.less | 606 - www/lib/font-awesome/scss/_animated.scss | 34 - www/lib/font-awesome/scss/_bordered-pulled.scss | 16 - www/lib/font-awesome/scss/_core.scss | 13 - www/lib/font-awesome/scss/_fixed-width.scss | 6 - www/lib/font-awesome/scss/_icons.scss | 596 - www/lib/font-awesome/scss/_larger.scss | 13 - www/lib/font-awesome/scss/_list.scss | 19 - www/lib/font-awesome/scss/_mixins.scss | 27 - www/lib/font-awesome/scss/_path.scss | 15 - www/lib/font-awesome/scss/_rotated-flipped.scss | 20 - www/lib/font-awesome/scss/_stacked.scss | 20 - www/lib/font-awesome/scss/_variables.scss | 606 - www/lib/font-awesome/scss/font-awesome.scss | 17 - www/lib/ion-datetime-picker/.bower.json | 39 - www/lib/ion-datetime-picker/LICENSE | 22 - www/lib/ion-datetime-picker/README.md | 118 - www/lib/ion-datetime-picker/bower.json | 30 - www/lib/ion-datetime-picker/gulpfile.js | 43 - www/lib/ion-datetime-picker/package.json | 23 - .../release/ion-datetime-picker.min.css | 1 - .../release/ion-datetime-picker.min.js | 1 - www/lib/ion-datetime-picker/src/picker-i18n.js | 9 - www/lib/ion-datetime-picker/src/picker-popup.html | 81 - www/lib/ion-datetime-picker/src/picker.js | 185 - www/lib/ion-datetime-picker/src/picker.scss | 133 - www/lib/ionic-native-transitions/.bower.json | 24 - www/lib/ionic-native-transitions/.gitignore | 32 - www/lib/ionic-native-transitions/CHANGELOG.md | 96 - www/lib/ionic-native-transitions/Copyright.txt | 7 - www/lib/ionic-native-transitions/LICENSE | 22 - www/lib/ionic-native-transitions/README.md | 406 - www/lib/ionic-native-transitions/bower.json | 14 - www/lib/ionic-native-transitions/config.xml | 35 - .../dist/ionic-native-transitions.js | 771 - .../dist/ionic-native-transitions.js.map | 1 - .../dist/ionic-native-transitions.min.js | 11 - www/lib/ionic-native-transitions/lib/index.js | 14 - www/lib/ionic-native-transitions/lib/nativeSref.js | 44 - www/lib/ionic-native-transitions/lib/provider.js | 525 - www/lib/ionic-native-transitions/lib/run.js | 19 - www/lib/ionic-native-transitions/package.json | 66 - .../test/angular-ios9-uiwebview.patch.js | 75 - www/lib/ionic-native-transitions/test/config.js | 149 - .../ionic-native-transitions/test/controller.js | 124 - www/lib/ionic-native-transitions/test/index.html | 168 - www/lib/ionic-native-transitions/test/index.js | 21 - .../webpack.config.dist.js | 36 - .../webpack.config.dist.min.js | 39 - www/lib/ionic-native-transitions/webpack.config.js | 38 - www/lib/ionic-native-transitions/www/.gitignore | 2 - www/lib/ionic/.bower.json | 46 - www/lib/ionic/css/ionic.css | 9729 --- www/lib/ionic/css/ionic.min.css | 23 - www/lib/ionic/fonts/ionicons.eot | Bin 120724 -> 0 bytes www/lib/ionic/fonts/ionicons.svg | 2230 - www/lib/ionic/fonts/ionicons.ttf | Bin 188508 -> 0 bytes www/lib/ionic/fonts/ionicons.woff | Bin 67904 -> 0 bytes www/lib/ionic/js/ionic-angular.js | 14044 ---- www/lib/ionic/js/ionic-angular.min.js | 18 - www/lib/ionic/js/ionic.bundle.js | 64386 ------------------- www/lib/ionic/js/ionic.bundle.min.js | 448 - www/lib/ionic/js/ionic.js | 13298 ---- www/lib/ionic/js/ionic.min.js | 20 - www/lib/ionic/scss/_action-sheet.scss | 170 - www/lib/ionic/scss/_animations.scss | 48 - www/lib/ionic/scss/_backdrop.scss | 24 - www/lib/ionic/scss/_badge.scss | 62 - www/lib/ionic/scss/_bar.scss | 404 - www/lib/ionic/scss/_button-bar.scss | 64 - www/lib/ionic/scss/_button.scss | 252 - www/lib/ionic/scss/_checkbox.scss | 180 - www/lib/ionic/scss/_form.scss | 327 - www/lib/ionic/scss/_grid.scss | 159 - www/lib/ionic/scss/_items.scss | 815 - www/lib/ionic/scss/_list.scss | 125 - www/lib/ionic/scss/_loading.scss | 51 - www/lib/ionic/scss/_menu.scss | 70 - www/lib/ionic/scss/_mixins.scss | 640 - www/lib/ionic/scss/_modal.scss | 102 - www/lib/ionic/scss/_platform.scss | 77 - www/lib/ionic/scss/_popover.scss | 168 - www/lib/ionic/scss/_popup.scss | 110 - www/lib/ionic/scss/_progress.scss | 11 - www/lib/ionic/scss/_radio.scss | 47 - www/lib/ionic/scss/_range.scss | 160 - www/lib/ionic/scss/_refresher.scss | 113 - www/lib/ionic/scss/_reset.scss | 365 - www/lib/ionic/scss/_scaffolding.scss | 295 - www/lib/ionic/scss/_select.scss | 142 - www/lib/ionic/scss/_slide-box.scss | 71 - www/lib/ionic/scss/_slides.scss | 529 - www/lib/ionic/scss/_spinner.scss | 100 - www/lib/ionic/scss/_tabs.scss | 528 - www/lib/ionic/scss/_toggle.scss | 198 - www/lib/ionic/scss/_transitions.scss | 188 - www/lib/ionic/scss/_type.scss | 166 - www/lib/ionic/scss/_util.scss | 296 - www/lib/ionic/scss/_variables.scss | 761 - www/lib/ionic/scss/ionic.scss | 54 - www/lib/ionic/scss/ionicons/_ionicons-font.scss | 28 - www/lib/ionic/scss/ionicons/_ionicons-icons.scss | 1473 - .../ionic/scss/ionicons/_ionicons-variables.scss | 741 - www/lib/ionic/scss/ionicons/ionicons.scss | 16 - www/lib/ionic/scss/tsconfig.json | 18 - www/lib/ionic/version.json | 5 - www/lib/localforage-cordovasqlitedriver/.babelrc | 3 - .../localforage-cordovasqlitedriver/.bower.json | 34 - www/lib/localforage-cordovasqlitedriver/.eslintrc | 25 - www/lib/localforage-cordovasqlitedriver/.gitignore | 35 - www/lib/localforage-cordovasqlitedriver/.jscsrc | 31 - www/lib/localforage-cordovasqlitedriver/.jshintrc | 32 - www/lib/localforage-cordovasqlitedriver/README.md | 65 - www/lib/localforage-cordovasqlitedriver/bower.json | 23 - .../dist/localforage-cordovasqlitedriver.es6.js | 142 - .../dist/localforage-cordovasqlitedriver.js | 150 - .../lib/cordova-sqlite.js | 25 - .../lib/localforage-cordovasqlitedriver.js | 120 - .../localforage-cordovasqlitedriver/lib/utils.js | 40 - .../localforage-cordovasqlitedriver/package.json | 44 - .../rollup.config.es6.js | 6 - .../rollup.config.js | 7 - .../rollup.config.test.js | 11 - .../rollup.config.umd.js | 7 - www/lib/localforage/.babelrc | 6 - www/lib/localforage/.babelrc-umd | 7 - www/lib/localforage/.bower.json | 40 - www/lib/localforage/.gitignore | 40 - www/lib/localforage/.jscsrc | 31 - www/lib/localforage/.jshintrc | 32 - www/lib/localforage/CHANGELOG.md | 99 - www/lib/localforage/Gruntfile.js | 262 - www/lib/localforage/README.md | 263 - www/lib/localforage/bower.json | 29 - www/lib/localforage/component.json | 15 - www/lib/localforage/contribute.json | 31 - www/lib/localforage/dist/localforage.js | 2313 - www/lib/localforage/dist/localforage.min.js | 7 - www/lib/localforage/dist/localforage.nopromises.js | 1977 - .../localforage/dist/localforage.nopromises.min.js | 7 - www/lib/localforage/package.json | 67 - www/lib/localforage/src/drivers/indexeddb.js | 692 - www/lib/localforage/src/drivers/localstorage.js | 270 - www/lib/localforage/src/drivers/websql.js | 359 - www/lib/localforage/src/localforage.js | 383 - www/lib/localforage/src/utils/createBlob.js | 29 - www/lib/localforage/src/utils/executeCallback.js | 11 - .../localforage/src/utils/executeTwoCallbacks.js | 11 - www/lib/localforage/src/utils/idb.js | 23 - www/lib/localforage/src/utils/isIndexedDBValid.js | 34 - .../localforage/src/utils/isLocalStorageValid.js | 11 - www/lib/localforage/src/utils/isWebSQLValid.js | 5 - www/lib/localforage/src/utils/promise.js | 8 - www/lib/localforage/src/utils/serializer.js | 235 - .../localforage/typing-tests/localforage-tests.ts | 128 - www/lib/localforage/typing-tests/tsconfig.json | 19 - www/lib/moment/.bower.json | 33 - www/lib/moment/CHANGELOG.md | 459 - www/lib/moment/LICENSE | 22 - www/lib/moment/README.md | 58 - www/lib/moment/bower.json | 22 - www/lib/moment/locale/af.js | 72 - www/lib/moment/locale/ar-ma.js | 58 - www/lib/moment/locale/ar-sa.js | 102 - www/lib/moment/locale/ar-tn.js | 56 - www/lib/moment/locale/ar.js | 135 - www/lib/moment/locale/az.js | 103 - www/lib/moment/locale/be.js | 146 - www/lib/moment/locale/bg.js | 89 - www/lib/moment/locale/bn.js | 112 - www/lib/moment/locale/bo.js | 109 - www/lib/moment/locale/br.js | 106 - www/lib/moment/locale/bs.js | 140 - www/lib/moment/locale/ca.js | 78 - www/lib/moment/locale/cs.js | 156 - www/lib/moment/locale/cv.js | 62 - www/lib/moment/locale/cy.js | 78 - www/lib/moment/locale/da.js | 59 - www/lib/moment/locale/de-at.js | 75 - www/lib/moment/locale/de.js | 74 - www/lib/moment/locale/el.js | 93 - www/lib/moment/locale/en-au.js | 65 - www/lib/moment/locale/en-ca.js | 62 - www/lib/moment/locale/en-gb.js | 66 - www/lib/moment/locale/eo.js | 72 - www/lib/moment/locale/es.js | 78 - www/lib/moment/locale/et.js | 79 - www/lib/moment/locale/eu.js | 63 - www/lib/moment/locale/fa.js | 104 - www/lib/moment/locale/fi.js | 106 - www/lib/moment/locale/fo.js | 59 - www/lib/moment/locale/fr-ca.js | 57 - www/lib/moment/locale/fr.js | 61 - www/lib/moment/locale/fy.js | 70 - www/lib/moment/locale/gl.js | 74 - www/lib/moment/locale/he.js | 81 - www/lib/moment/locale/hi.js | 122 - www/lib/moment/locale/hr.js | 139 - www/lib/moment/locale/hu.js | 108 - www/lib/moment/locale/hy-am.js | 110 - www/lib/moment/locale/id.js | 82 - www/lib/moment/locale/is.js | 126 - www/lib/moment/locale/it.js | 69 - www/lib/moment/locale/ja.js | 64 - www/lib/moment/locale/jv.js | 82 - www/lib/moment/locale/ka.js | 102 - www/lib/moment/locale/km.js | 57 - www/lib/moment/locale/ko.js | 67 - www/lib/moment/locale/lb.js | 133 - www/lib/moment/locale/lt.js | 124 - www/lib/moment/locale/lv.js | 95 - www/lib/moment/locale/me.js | 108 - www/lib/moment/locale/mk.js | 89 - www/lib/moment/locale/ml.js | 70 - www/lib/moment/locale/mr.js | 120 - www/lib/moment/locale/ms-my.js | 81 - www/lib/moment/locale/ms.js | 81 - www/lib/moment/locale/my.js | 92 - www/lib/moment/locale/nb.js | 60 - www/lib/moment/locale/ne.js | 122 - www/lib/moment/locale/nl.js | 70 - www/lib/moment/locale/nn.js | 59 - www/lib/moment/locale/pl.js | 104 - www/lib/moment/locale/pt-br.js | 59 - www/lib/moment/locale/pt.js | 63 - www/lib/moment/locale/ro.js | 73 - www/lib/moment/locale/ru.js | 163 - www/lib/moment/locale/si.js | 64 - www/lib/moment/locale/sk.js | 157 - www/lib/moment/locale/sl.js | 159 - www/lib/moment/locale/sq.js | 68 - www/lib/moment/locale/sr-cyrl.js | 107 - www/lib/moment/locale/sr.js | 107 - www/lib/moment/locale/sv.js | 66 - www/lib/moment/locale/ta.js | 94 - www/lib/moment/locale/th.js | 64 - www/lib/moment/locale/tl-ph.js | 61 - www/lib/moment/locale/tr.js | 89 - www/lib/moment/locale/tzl.js | 84 - www/lib/moment/locale/tzm-latn.js | 57 - www/lib/moment/locale/tzm.js | 57 - www/lib/moment/locale/uk.js | 152 - www/lib/moment/locale/uz.js | 57 - www/lib/moment/locale/vi.js | 65 - www/lib/moment/locale/zh-cn.js | 126 - www/lib/moment/locale/zh-tw.js | 100 - www/lib/moment/min/locales.js | 6787 -- www/lib/moment/min/locales.min.js | 78 - www/lib/moment/min/moment-with-locales.js | 9977 --- www/lib/moment/min/moment-with-locales.min.js | 80 - www/lib/moment/min/moment.min.js | 7 - www/lib/moment/min/tests.js | 40548 ------------ www/lib/moment/moment.js | 3195 - www/lib/moment/src/lib/create/check-overflow.js | 28 - www/lib/moment/src/lib/create/date-from-array.js | 19 - www/lib/moment/src/lib/create/from-anything.js | 96 - www/lib/moment/src/lib/create/from-array.js | 124 - www/lib/moment/src/lib/create/from-object.js | 13 - .../moment/src/lib/create/from-string-and-array.js | 50 - .../src/lib/create/from-string-and-format.js | 102 - www/lib/moment/src/lib/create/from-string.js | 83 - www/lib/moment/src/lib/create/local.js | 5 - www/lib/moment/src/lib/create/parsing-flags.js | 22 - www/lib/moment/src/lib/create/utc.js | 5 - www/lib/moment/src/lib/create/valid.js | 37 - www/lib/moment/src/lib/duration/abs.js | 18 - www/lib/moment/src/lib/duration/add-subtract.js | 21 - www/lib/moment/src/lib/duration/as.js | 55 - www/lib/moment/src/lib/duration/bubble.js | 61 - www/lib/moment/src/lib/duration/constructor.js | 41 - www/lib/moment/src/lib/duration/create.js | 113 - www/lib/moment/src/lib/duration/duration.js | 12 - www/lib/moment/src/lib/duration/get.js | 25 - www/lib/moment/src/lib/duration/humanize.js | 64 - www/lib/moment/src/lib/duration/iso-string.js | 52 - www/lib/moment/src/lib/duration/prototype.js | 48 - www/lib/moment/src/lib/format/format.js | 92 - www/lib/moment/src/lib/locale/calendar.js | 13 - www/lib/moment/src/lib/locale/constructor.js | 2 - www/lib/moment/src/lib/locale/en.js | 15 - www/lib/moment/src/lib/locale/formats.js | 23 - www/lib/moment/src/lib/locale/invalid.js | 5 - www/lib/moment/src/lib/locale/lists.js | 48 - www/lib/moment/src/lib/locale/locale.js | 35 - www/lib/moment/src/lib/locale/locales.js | 117 - www/lib/moment/src/lib/locale/ordinal.js | 7 - www/lib/moment/src/lib/locale/pre-post-format.js | 3 - www/lib/moment/src/lib/locale/prototype.js | 70 - www/lib/moment/src/lib/locale/relative.js | 27 - www/lib/moment/src/lib/locale/set.js | 14 - www/lib/moment/src/lib/moment/add-subtract.js | 46 - www/lib/moment/src/lib/moment/calendar.js | 17 - www/lib/moment/src/lib/moment/clone.js | 5 - www/lib/moment/src/lib/moment/compare.js | 43 - www/lib/moment/src/lib/moment/constructor.js | 73 - www/lib/moment/src/lib/moment/diff.js | 49 - www/lib/moment/src/lib/moment/format.js | 27 - www/lib/moment/src/lib/moment/from.js | 13 - www/lib/moment/src/lib/moment/get-set.js | 39 - www/lib/moment/src/lib/moment/locale.js | 34 - www/lib/moment/src/lib/moment/min-max.js | 54 - www/lib/moment/src/lib/moment/moment.js | 26 - www/lib/moment/src/lib/moment/prototype.js | 145 - www/lib/moment/src/lib/moment/start-end-of.js | 52 - www/lib/moment/src/lib/moment/to-type.js | 29 - www/lib/moment/src/lib/moment/to.js | 13 - www/lib/moment/src/lib/moment/valid.js | 15 - www/lib/moment/src/lib/parse/regex.js | 51 - www/lib/moment/src/lib/parse/token.js | 32 - www/lib/moment/src/lib/units/aliases.js | 29 - www/lib/moment/src/lib/units/constants.js | 7 - www/lib/moment/src/lib/units/day-of-month.js | 32 - www/lib/moment/src/lib/units/day-of-week.js | 134 - www/lib/moment/src/lib/units/day-of-year.js | 49 - www/lib/moment/src/lib/units/hour.js | 77 - www/lib/moment/src/lib/units/millisecond.js | 64 - www/lib/moment/src/lib/units/minute.js | 24 - www/lib/moment/src/lib/units/month.js | 129 - www/lib/moment/src/lib/units/offset.js | 213 - www/lib/moment/src/lib/units/quarter.js | 27 - www/lib/moment/src/lib/units/second.js | 24 - www/lib/moment/src/lib/units/timestamp.js | 20 - www/lib/moment/src/lib/units/timezone.js | 16 - www/lib/moment/src/lib/units/units.js | 20 - www/lib/moment/src/lib/units/week-year.js | 78 - www/lib/moment/src/lib/units/week.js | 88 - www/lib/moment/src/lib/units/year.js | 62 - www/lib/moment/src/lib/utils/abs-ceil.js | 7 - www/lib/moment/src/lib/utils/abs-floor.js | 7 - www/lib/moment/src/lib/utils/compare-arrays.js | 16 - www/lib/moment/src/lib/utils/defaults.js | 10 - www/lib/moment/src/lib/utils/deprecate.js | 32 - www/lib/moment/src/lib/utils/extend.js | 19 - www/lib/moment/src/lib/utils/has-own-prop.js | 3 - www/lib/moment/src/lib/utils/hooks.js | 13 - www/lib/moment/src/lib/utils/is-array.js | 3 - www/lib/moment/src/lib/utils/is-date.js | 3 - www/lib/moment/src/lib/utils/map.js | 7 - www/lib/moment/src/lib/utils/to-int.js | 12 - www/lib/moment/src/lib/utils/zero-fill.js | 7 - www/lib/moment/src/locale/af.js | 63 - www/lib/moment/src/locale/ar-ma.js | 50 - www/lib/moment/src/locale/ar-sa.js | 94 - www/lib/moment/src/locale/ar-tn.js | 48 - www/lib/moment/src/locale/ar.js | 127 - www/lib/moment/src/locale/az.js | 95 - www/lib/moment/src/locale/be.js | 138 - www/lib/moment/src/locale/bg.js | 81 - www/lib/moment/src/locale/bn.js | 104 - www/lib/moment/src/locale/bo.js | 101 - www/lib/moment/src/locale/br.js | 98 - www/lib/moment/src/locale/bs.js | 132 - www/lib/moment/src/locale/ca.js | 70 - www/lib/moment/src/locale/cs.js | 148 - www/lib/moment/src/locale/cv.js | 53 - www/lib/moment/src/locale/cy.js | 70 - www/lib/moment/src/locale/da.js | 51 - www/lib/moment/src/locale/de-at.js | 67 - www/lib/moment/src/locale/de.js | 66 - www/lib/moment/src/locale/el.js | 85 - www/lib/moment/src/locale/en-au.js | 57 - www/lib/moment/src/locale/en-ca.js | 54 - www/lib/moment/src/locale/en-gb.js | 58 - www/lib/moment/src/locale/eo.js | 64 - www/lib/moment/src/locale/es.js | 70 - www/lib/moment/src/locale/et.js | 71 - www/lib/moment/src/locale/eu.js | 55 - www/lib/moment/src/locale/fa.js | 96 - www/lib/moment/src/locale/fi.js | 98 - www/lib/moment/src/locale/fo.js | 51 - www/lib/moment/src/locale/fr-ca.js | 49 - www/lib/moment/src/locale/fr.js | 53 - www/lib/moment/src/locale/fy.js | 62 - www/lib/moment/src/locale/gl.js | 66 - www/lib/moment/src/locale/he.js | 73 - www/lib/moment/src/locale/hi.js | 114 - www/lib/moment/src/locale/hr.js | 131 - www/lib/moment/src/locale/hu.js | 100 - www/lib/moment/src/locale/hy-am.js | 102 - www/lib/moment/src/locale/id.js | 74 - www/lib/moment/src/locale/is.js | 118 - www/lib/moment/src/locale/it.js | 61 - www/lib/moment/src/locale/ja.js | 56 - www/lib/moment/src/locale/jv.js | 73 - www/lib/moment/src/locale/ka.js | 94 - www/lib/moment/src/locale/km.js | 49 - www/lib/moment/src/locale/ko.js | 59 - www/lib/moment/src/locale/lb.js | 125 - www/lib/moment/src/locale/lt.js | 116 - www/lib/moment/src/locale/lv.js | 87 - www/lib/moment/src/locale/me.js | 99 - www/lib/moment/src/locale/mk.js | 81 - www/lib/moment/src/locale/ml.js | 62 - www/lib/moment/src/locale/mr.js | 112 - www/lib/moment/src/locale/ms-my.js | 73 - www/lib/moment/src/locale/ms.js | 73 - www/lib/moment/src/locale/my.js | 84 - www/lib/moment/src/locale/nb.js | 52 - www/lib/moment/src/locale/ne.js | 114 - www/lib/moment/src/locale/nl.js | 62 - www/lib/moment/src/locale/nn.js | 51 - www/lib/moment/src/locale/pl.js | 95 - www/lib/moment/src/locale/pt-br.js | 51 - www/lib/moment/src/locale/pt.js | 55 - www/lib/moment/src/locale/ro.js | 65 - www/lib/moment/src/locale/ru.js | 155 - www/lib/moment/src/locale/si.js | 56 - www/lib/moment/src/locale/sk.js | 149 - www/lib/moment/src/locale/sl.js | 150 - www/lib/moment/src/locale/sq.js | 60 - www/lib/moment/src/locale/sr-cyrl.js | 99 - www/lib/moment/src/locale/sr.js | 99 - www/lib/moment/src/locale/sv.js | 58 - www/lib/moment/src/locale/ta.js | 86 - www/lib/moment/src/locale/th.js | 56 - www/lib/moment/src/locale/tl-ph.js | 53 - www/lib/moment/src/locale/tr.js | 81 - www/lib/moment/src/locale/tzl.js | 78 - www/lib/moment/src/locale/tzm-latn.js | 49 - www/lib/moment/src/locale/tzm.js | 49 - www/lib/moment/src/locale/uk.js | 144 - www/lib/moment/src/locale/uz.js | 49 - www/lib/moment/src/locale/vi.js | 57 - www/lib/moment/src/locale/zh-cn.js | 118 - www/lib/moment/src/locale/zh-tw.js | 91 - www/lib/moment/src/moment.js | 68 - www/lib/moment/templates/amd-named.js | 7 - www/lib/moment/templates/amd.js | 7 - www/lib/moment/templates/globals.js | 5 - www/lib/moment/templates/locale-header.js | 5 - www/lib/moment/templates/test-header.js | 5 - www/lib/ng-mfb/.bower.json | 48 - www/lib/ng-mfb/CHANGELOG.md | 13 - www/lib/ng-mfb/LICENSE | 22 - www/lib/ng-mfb/bower.json | 39 - www/lib/ng-mfb/demo/demo-module.js | 55 - www/lib/ng-mfb/demo/svg/addme.svg | 1 - www/lib/ng-mfb/demo/svg/close.svg | 1 - www/lib/ng-mfb/demo/svg/menu.svg | 1 - www/lib/ng-mfb/demo/svg/share.svg | 1 - www/lib/ng-mfb/demo/svg/star.svg | 1 - www/lib/ng-mfb/mfb/LICENSE | 22 - www/lib/ng-mfb/mfb/src/_/_fountain.scss | 77 - www/lib/ng-mfb/mfb/src/_/_slidein-spring.scss | 67 - www/lib/ng-mfb/mfb/src/_/_slidein.scss | 53 - www/lib/ng-mfb/mfb/src/_/_zoomin.scss | 78 - www/lib/ng-mfb/mfb/src/index.css | 236 - www/lib/ng-mfb/mfb/src/lib/modernizr.touch.js | 4 - www/lib/ng-mfb/mfb/src/mfb.css | 670 - www/lib/ng-mfb/mfb/src/mfb.css.map | 7 - www/lib/ng-mfb/mfb/src/mfb.js | 94 - www/lib/ng-mfb/mfb/src/mfb.min.css | 1 - www/lib/ng-mfb/mfb/src/mfb.min.js | 1 - www/lib/ng-mfb/mfb/src/mfb.scss | 403 - www/lib/ng-mfb/src/mfb-directive.js | 175 - www/lib/ngCordova/.bower.json | 56 - www/lib/ngCordova/CHANGELOG.md | 7 - www/lib/ngCordova/LICENSE | 21 - www/lib/ngCordova/README.md | 131 - www/lib/ngCordova/bower.json | 46 - www/lib/ngCordova/dist/ng-cordova-mocks.js | 3486 - www/lib/ngCordova/dist/ng-cordova-mocks.min.js | 7 - www/lib/ngCordova/dist/ng-cordova.js | 7361 --- www/lib/ngCordova/dist/ng-cordova.min.js | 9 - www/lib/ngCordova/package.json | 44 - www/lib/videogular-buffering/.bower.json | 19 - www/lib/videogular-buffering/.gitignore | 3 - www/lib/videogular-buffering/Gruntfile.js | 35 - www/lib/videogular-buffering/LICENSE | 20 - www/lib/videogular-buffering/README.md | 59 - www/lib/videogular-buffering/bower.json | 8 - www/lib/videogular-buffering/index.js | 4 - www/lib/videogular-buffering/package.json | 15 - www/lib/videogular-buffering/vg-buffering.js | 116 - www/lib/videogular-buffering/vg-buffering.min.js | 1 - www/lib/videogular-controls/.bower.json | 19 - www/lib/videogular-controls/.gitignore | 3 - www/lib/videogular-controls/Gruntfile.js | 35 - www/lib/videogular-controls/LICENSE | 20 - www/lib/videogular-controls/README.md | 59 - www/lib/videogular-controls/bower.json | 8 - www/lib/videogular-controls/index.js | 4 - www/lib/videogular-controls/package.json | 15 - www/lib/videogular-controls/vg-controls.js | 1408 - www/lib/videogular-controls/vg-controls.min.js | 1 - www/lib/videogular-cuepoints/.bower.json | 33 - www/lib/videogular-cuepoints/LICENSE | 21 - www/lib/videogular-cuepoints/bower.json | 21 - www/lib/videogular-cuepoints/cuepoints.css | 18 - www/lib/videogular-cuepoints/cuepoints.js | 52 - www/lib/videogular-overlay-play/.bower.json | 19 - www/lib/videogular-overlay-play/.gitignore | 3 - www/lib/videogular-overlay-play/Gruntfile.js | 35 - www/lib/videogular-overlay-play/LICENSE | 20 - www/lib/videogular-overlay-play/README.md | 59 - www/lib/videogular-overlay-play/bower.json | 8 - www/lib/videogular-overlay-play/index.js | 4 - www/lib/videogular-overlay-play/package.json | 15 - www/lib/videogular-overlay-play/vg-overlay-play.js | 76 - .../videogular-overlay-play/vg-overlay-play.min.js | 1 - www/lib/videogular-themes-default/.bower.json | 26 - www/lib/videogular-themes-default/.gitignore | 3 - www/lib/videogular-themes-default/Gruntfile.js | 35 - www/lib/videogular-themes-default/LICENSE | 20 - www/lib/videogular-themes-default/README.md | 55 - www/lib/videogular-themes-default/bower.json | 15 - .../fonts/videogular.dev.svg | 37 - .../videogular-themes-default/fonts/videogular.eot | Bin 2544 -> 0 bytes .../videogular-themes-default/fonts/videogular.svg | 37 - .../videogular-themes-default/fonts/videogular.ttf | Bin 2380 -> 0 bytes .../fonts/videogular.woff | Bin 1948 -> 0 bytes www/lib/videogular-themes-default/package.json | 15 - www/lib/videogular-themes-default/videogular.css | 459 - .../videogular-themes-default/videogular.css.map | 7 - .../videogular-themes-default/videogular.min.css | 1 - www/lib/videogular/.bower.json | 20 - www/lib/videogular/.gitignore | 3 - www/lib/videogular/Gruntfile.js | 35 - www/lib/videogular/LICENSE | 20 - www/lib/videogular/README.md | 55 - www/lib/videogular/bower.json | 9 - www/lib/videogular/index.js | 5 - www/lib/videogular/package.json | 16 - www/lib/videogular/videogular.js | 1597 - www/lib/videogular/videogular.min.js | 1 - www/lib/vis/.bower.json | 56 - www/lib/vis/CONTRIBUTING.md | 14 - www/lib/vis/HISTORY.md | 1585 - www/lib/vis/LICENSE-APACHE-2.0 | 176 - www/lib/vis/LICENSE-MIT | 22 - www/lib/vis/NOTICE | 33 - www/lib/vis/README.md | 325 - www/lib/vis/bower.json | 39 - www/lib/vis/dist/img/network/acceptDeleteIcon.png | Bin 20675 -> 0 bytes www/lib/vis/dist/img/network/addNodeIcon.png | Bin 20998 -> 0 bytes www/lib/vis/dist/img/network/backIcon.png | Bin 20802 -> 0 bytes www/lib/vis/dist/img/network/connectIcon.png | Bin 20764 -> 0 bytes www/lib/vis/dist/img/network/cross.png | Bin 18303 -> 0 bytes www/lib/vis/dist/img/network/cross2.png | Bin 17768 -> 0 bytes www/lib/vis/dist/img/network/deleteIcon.png | Bin 20981 -> 0 bytes www/lib/vis/dist/img/network/downArrow.png | Bin 4460 -> 0 bytes www/lib/vis/dist/img/network/editIcon.png | Bin 21016 -> 0 bytes www/lib/vis/dist/img/network/leftArrow.png | Bin 4531 -> 0 bytes www/lib/vis/dist/img/network/minus.png | Bin 4147 -> 0 bytes www/lib/vis/dist/img/network/plus.png | Bin 4341 -> 0 bytes www/lib/vis/dist/img/network/rightArrow.png | Bin 4514 -> 0 bytes www/lib/vis/dist/img/network/upArrow.png | Bin 4461 -> 0 bytes www/lib/vis/dist/img/network/zoomExtends.png | Bin 4464 -> 0 bytes www/lib/vis/dist/vis-graph3d.min.js | 33 - www/lib/vis/dist/vis-network.min.css | 1 - www/lib/vis/dist/vis-network.min.js | 41 - www/lib/vis/dist/vis-timeline-graph2d.min.css | 1 - www/lib/vis/dist/vis-timeline-graph2d.min.js | 39 - www/lib/vis/dist/vis.css | 1389 - www/lib/vis/dist/vis.js | 47739 -------------- www/lib/vis/dist/vis.min.css | 1 - www/lib/vis/dist/vis.min.js | 45 - www/lib/vis/docs/css/bootstrap-theme.css | 470 - www/lib/vis/docs/css/bootstrap-theme.css.map | 1 - www/lib/vis/docs/css/bootstrap-theme.min.css | 5 - www/lib/vis/docs/css/bootstrap.css | 6332 -- www/lib/vis/docs/css/bootstrap.css.map | 1 - www/lib/vis/docs/css/bootstrap.min.css | 5 - www/lib/vis/docs/css/carousel.css | 142 - www/lib/vis/docs/css/prettify.css | 87 - www/lib/vis/docs/css/style.css | 238 - www/lib/vis/docs/css/tipuesearch.css | 205 - www/lib/vis/docs/data/dataset.html | 1025 - www/lib/vis/docs/data/dataview.html | 413 - www/lib/vis/docs/data/index.html | 138 - .../docs/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../docs/fonts/glyphicons-halflings-regular.svg | 288 - .../docs/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../docs/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../docs/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes www/lib/vis/docs/graph2d/index.html | 1511 - www/lib/vis/docs/graph3d/index.html | 808 - www/lib/vis/docs/img/arrow.svg | 102 - www/lib/vis/docs/img/crossword.png | Bin 43694 -> 0 bytes www/lib/vis/docs/img/crosswordStrong.png | Bin 125557 -> 0 bytes .../external-link-icon-white.png | Bin 194 -> 0 bytes .../img/external-link-icons/external-link-icon.png | Bin 205 -> 0 bytes .../vis/docs/img/external-link-icons/license.txt | 40 - www/lib/vis/docs/img/graph/graph.png | Bin 23400 -> 0 bytes www/lib/vis/docs/img/graph/graph120x60.png | Bin 4678 -> 0 bytes www/lib/vis/docs/img/graph3d.png | Bin 101584 -> 0 bytes www/lib/vis/docs/img/graph3d120x60.png | Bin 9904 -> 0 bytes www/lib/vis/docs/img/timeline/timeline.png | Bin 23229 -> 0 bytes www/lib/vis/docs/img/timeline/timeline120x60.png | Bin 6671 -> 0 bytes www/lib/vis/docs/img/vis_overview.odg | Bin 16920 -> 0 bytes www/lib/vis/docs/img/vis_overview.png | Bin 66220 -> 0 bytes www/lib/vis/docs/index.html | 11 - www/lib/vis/docs/js/bootstrap.js | 2320 - www/lib/vis/docs/js/bootstrap.min.js | 7 - www/lib/vis/docs/js/docs.min.js | 26 - www/lib/vis/docs/js/googleAnalytics.js | 15 - www/lib/vis/docs/js/ie-emulation-modes-warning.js | 51 - .../vis/docs/js/ie10-viewport-bug-workaround.js | 22 - www/lib/vis/docs/js/jquery.highlight.js | 108 - www/lib/vis/docs/js/jquery.min.js | 4 - www/lib/vis/docs/js/jquery.url.min.js | 1 - www/lib/vis/docs/js/main.js | 144 - www/lib/vis/docs/js/prettify/lang-apollo.js | 2 - www/lib/vis/docs/js/prettify/lang-css.js | 2 - www/lib/vis/docs/js/prettify/lang-hs.js | 2 - www/lib/vis/docs/js/prettify/lang-lisp.js | 2 - www/lib/vis/docs/js/prettify/lang-lua.js | 2 - www/lib/vis/docs/js/prettify/lang-ml.js | 2 - www/lib/vis/docs/js/prettify/lang-proto.js | 1 - www/lib/vis/docs/js/prettify/lang-scala.js | 2 - www/lib/vis/docs/js/prettify/lang-sql.js | 2 - www/lib/vis/docs/js/prettify/lang-vb.js | 2 - www/lib/vis/docs/js/prettify/lang-vhdl.js | 3 - www/lib/vis/docs/js/prettify/lang-wiki.js | 2 - www/lib/vis/docs/js/prettify/lang-yaml.js | 2 - www/lib/vis/docs/js/prettify/prettify.css | 1 - www/lib/vis/docs/js/prettify/prettify.js | 33 - www/lib/vis/docs/js/smooth-scroll.min.js | 2 - www/lib/vis/docs/js/tipuesearch.config.js | 76 - www/lib/vis/docs/js/tipuesearch.js | 529 - www/lib/vis/docs/js/tipuesearch.min.js | 155 - www/lib/vis/docs/js/toggleTable.js | 81 - www/lib/vis/docs/network/configure.html | 193 - www/lib/vis/docs/network/edges.html | 712 - www/lib/vis/docs/network/groups.html | 177 - www/lib/vis/docs/network/index.html | 1644 - www/lib/vis/docs/network/interaction.html | 172 - www/lib/vis/docs/network/layout.html | 169 - www/lib/vis/docs/network/manipulation.html | 204 - www/lib/vis/docs/network/nodes.html | 742 - www/lib/vis/docs/network/physics.html | 224 - www/lib/vis/docs/timeline/index.html | 1906 - www/lib/vis/examples/googleAnalytics.js | 12 - www/lib/vis/examples/graph2d/01_basic.html | 52 - www/lib/vis/examples/graph2d/02_bars.html | 57 - www/lib/vis/examples/graph2d/03_groups.html | 112 - www/lib/vis/examples/graph2d/04_rightAxis.html | 126 - www/lib/vis/examples/graph2d/05_bothAxis.html | 137 - www/lib/vis/examples/graph2d/06_interpolation.html | 101 - .../examples/graph2d/07_scrollingAndSorting.html | 74 - www/lib/vis/examples/graph2d/08_performance.html | 150 - .../vis/examples/graph2d/09_external_legend.html | 363 - .../vis/examples/graph2d/10_barsSideBySide.html | 75 - .../examples/graph2d/11_barsSideBySideGroups.html | 88 - www/lib/vis/examples/graph2d/12_customRange.html | 92 - www/lib/vis/examples/graph2d/13_localization.html | 65 - www/lib/vis/examples/graph2d/14_toggleGroups.html | 145 - .../vis/examples/graph2d/15_streaming_data.html | 122 - .../vis/examples/graph2d/16_bothAxisTitles.html | 201 - .../vis/examples/graph2d/17_dynamicStyling.html | 257 - www/lib/vis/examples/graph2d/18_scatterplot.html | 63 - www/lib/vis/examples/graph2d/19_labels.html | 135 - www/lib/vis/examples/graph2d/20_shading.html | 117 - www/lib/vis/examples/graph2d/default.css | 87 - www/lib/vis/examples/graph3d/01_basics.html | 61 - www/lib/vis/examples/graph3d/02_camera.html | 110 - www/lib/vis/examples/graph3d/03_filter_data.html | 64 - www/lib/vis/examples/graph3d/04_animation.html | 71 - www/lib/vis/examples/graph3d/05_line.html | 60 - www/lib/vis/examples/graph3d/06_moving_dots.html | 78 - .../vis/examples/graph3d/07_dot_cloud_colors.html | 68 - .../vis/examples/graph3d/08_dot_cloud_size.html | 67 - www/lib/vis/examples/graph3d/09_mobile.html | 79 - www/lib/vis/examples/graph3d/10_styling.html | 121 - www/lib/vis/examples/graph3d/11_tooltips.html | 118 - www/lib/vis/examples/graph3d/12_custom_labels.html | 116 - www/lib/vis/examples/graph3d/default.css | 87 - .../vis/examples/graph3d/playground/csv2array.js | 120 - .../examples/graph3d/playground/csv2datatable.html | 80 - .../examples/graph3d/playground/datasource.html | 173 - .../vis/examples/graph3d/playground/datasource.php | 155 - www/lib/vis/examples/graph3d/playground/index.html | 183 - .../vis/examples/graph3d/playground/playground.css | 91 - .../vis/examples/graph3d/playground/playground.js | 545 - .../graph3d/playground/prettify/lang-apollo.js | 2 - .../graph3d/playground/prettify/lang-css.js | 2 - .../graph3d/playground/prettify/lang-hs.js | 2 - .../graph3d/playground/prettify/lang-lisp.js | 2 - .../graph3d/playground/prettify/lang-lua.js | 2 - .../graph3d/playground/prettify/lang-ml.js | 2 - .../graph3d/playground/prettify/lang-proto.js | 1 - .../graph3d/playground/prettify/lang-scala.js | 2 - .../graph3d/playground/prettify/lang-sql.js | 2 - .../graph3d/playground/prettify/lang-vb.js | 2 - .../graph3d/playground/prettify/lang-vhdl.js | 3 - .../graph3d/playground/prettify/lang-wiki.js | 2 - .../graph3d/playground/prettify/lang-yaml.js | 2 - .../graph3d/playground/prettify/prettify.css | 1 - .../graph3d/playground/prettify/prettify.js | 33 - www/lib/vis/examples/network/basicUsage.html | 55 - www/lib/vis/examples/network/data/datasets.html | 140 - .../data/dotLanguage/data/cellular_automata.gv.txt | 23 - .../data/dotLanguage/data/computer_network.gv.txt | 19 - .../network/data/dotLanguage/data/simple.gv.txt | 15 - .../network/data/dotLanguage/dotLanguage.html | 22 - .../network/data/dotLanguage/dotPlayground.html | 216 - .../data/dotLanguage/graphvizGallery/fsm.gv.txt | 20 - .../data/dotLanguage/graphvizGallery/hello.gv.txt | 1 - .../dotLanguage/graphvizGallery/process.gv.txt | 15 - .../graphvizGallery/screenshots/fsm.png | Bin 70809 -> 0 bytes .../graphvizGallery/screenshots/hello.png | Bin 18000 -> 0 bytes .../graphvizGallery/screenshots/softmaint.png | Bin 267856 -> 0 bytes .../graphvizGallery/screenshots/traffic_lights.png | Bin 59829 -> 0 bytes .../dotLanguage/graphvizGallery/siblings.gv.txt | 512 - .../dotLanguage/graphvizGallery/softmaint.gv.txt | 377 - .../graphvizGallery/traffic_lights.gv.txt | 29 - .../graphvizGallery/transparency.gv.txt | 105 - .../data/dotLanguage/graphvizGallery/twopi2.gv.txt | 2212 - .../data/dotLanguage/graphvizGallery/unix.gv.txt | 55 - .../data/dotLanguage/graphvizGallery/world.gv.txt | 67 - www/lib/vis/examples/network/data/dynamicData.html | 266 - .../examples/network/data/importingFromGephi.html | 174 - .../vis/examples/network/data/scalingCustom.html | 86 - .../examples/network/data/scalingNodesEdges.html | 79 - .../network/data/scalingNodesEdgesLabels.html | 85 - .../examples/network/datasources/WorldCup2014.js | 9970 --- .../examples/network/datasources/WorldCup2014.json | 1 - .../datasources/largeHierarchicalDataset.js | 2 - .../examples/network/edgeStyles/arrowTypes.html | 55 - .../vis/examples/network/edgeStyles/arrows.html | 61 - .../vis/examples/network/edgeStyles/colors.html | 67 - .../vis/examples/network/edgeStyles/dashes.html | 57 - .../vis/examples/network/edgeStyles/smooth.html | 78 - .../network/edgeStyles/smoothWorldCup.html | 97 - .../examples/network/events/interactionEvents.html | 119 - .../vis/examples/network/events/physicsEvents.html | 73 - .../vis/examples/network/events/renderEvents.html | 83 - .../exampleApplications/disassemblerExample.html | 67 - .../network/exampleApplications/lesMiserables.html | 396 - .../network/exampleApplications/loadingBar.html | 504 - .../neighbourhoodHighlight.html | 162 - .../network/exampleApplications/nodeLegend.html | 163 - .../exampleApplications/worldCupPerformance.html | 98 - www/lib/vis/examples/network/exampleUtil.js | 133 - www/lib/vis/examples/network/img/indonesia/1.png | Bin 31035 -> 0 bytes www/lib/vis/examples/network/img/indonesia/10.png | Bin 29214 -> 0 bytes www/lib/vis/examples/network/img/indonesia/11.png | Bin 28546 -> 0 bytes www/lib/vis/examples/network/img/indonesia/12.png | Bin 30019 -> 0 bytes www/lib/vis/examples/network/img/indonesia/13.png | Bin 30734 -> 0 bytes www/lib/vis/examples/network/img/indonesia/14.png | Bin 30190 -> 0 bytes www/lib/vis/examples/network/img/indonesia/2.png | Bin 31437 -> 0 bytes www/lib/vis/examples/network/img/indonesia/3.png | Bin 31941 -> 0 bytes www/lib/vis/examples/network/img/indonesia/4.png | Bin 31358 -> 0 bytes www/lib/vis/examples/network/img/indonesia/5.png | Bin 31461 -> 0 bytes www/lib/vis/examples/network/img/indonesia/6.png | Bin 31014 -> 0 bytes www/lib/vis/examples/network/img/indonesia/7.png | Bin 30069 -> 0 bytes www/lib/vis/examples/network/img/indonesia/8.png | Bin 31864 -> 0 bytes www/lib/vis/examples/network/img/indonesia/9.png | Bin 30693 -> 0 bytes .../network/img/refresh-cl/Hardware-Fax-icon.png | Bin 3645 -> 0 bytes .../img/refresh-cl/Hardware-Laptop-1-icon.png | Bin 3781 -> 0 bytes .../img/refresh-cl/Hardware-Mobile-Phone-icon.png | Bin 3463 -> 0 bytes .../img/refresh-cl/Hardware-My-Computer-3-icon.png | Bin 5402 -> 0 bytes .../img/refresh-cl/Hardware-My-PDA-02-icon.png | Bin 3531 -> 0 bytes .../img/refresh-cl/Hardware-My-PDA-04-icon.png | Bin 4153 -> 0 bytes .../img/refresh-cl/Hardware-My-PDA-05-icon.png | Bin 4131 -> 0 bytes .../refresh-cl/Hardware-My-Phone-Picture-icon.png | Bin 3234 -> 0 bytes .../img/refresh-cl/Hardware-Printer-Blue-icon.png | Bin 3478 -> 0 bytes .../img/refresh-cl/Misc-Scanner-default-icon.png | Bin 3168 -> 0 bytes .../network/img/refresh-cl/Network-Drive-icon.png | Bin 3320 -> 0 bytes .../Network-Internet-Connection-icon.png | Bin 4320 -> 0 bytes .../network/img/refresh-cl/Network-Pipe-icon.png | Bin 1000 -> 0 bytes .../img/refresh-cl/System-Firewall-2-icon.png | Bin 4668 -> 0 bytes .../network/img/refresh-cl/System-Globe-icon.png | Bin 4595 -> 0 bytes .../examples/network/img/refresh-cl/license.txt | 14 - .../img/soft-scraps-icons/Document-icon24.png | Bin 1104 -> 0 bytes .../img/soft-scraps-icons/Document-icon32.png | Bin 2771 -> 0 bytes .../img/soft-scraps-icons/Document-icon48.png | Bin 2771 -> 0 bytes .../network/img/soft-scraps-icons/Email-icon24.png | Bin 668 -> 0 bytes .../network/img/soft-scraps-icons/Email-icon32.png | Bin 873 -> 0 bytes .../network/img/soft-scraps-icons/Email-icon48.png | Bin 1487 -> 0 bytes .../img/soft-scraps-icons/Folder-icon24.png | Bin 691 -> 0 bytes .../img/soft-scraps-icons/Folder-icon32.png | Bin 874 -> 0 bytes .../img/soft-scraps-icons/Folder-icon48.png | Bin 1506 -> 0 bytes .../img/soft-scraps-icons/Folder-icon64.png | Bin 1771 -> 0 bytes .../img/soft-scraps-icons/Smiley-Angry-icon.png | Bin 3210 -> 0 bytes .../img/soft-scraps-icons/Smiley-Grin-icon.png | Bin 3917 -> 0 bytes .../User-Administrator-Blue-icon.png | Bin 3901 -> 0 bytes .../User-Administrator-Green-icon.png | Bin 3906 -> 0 bytes .../img/soft-scraps-icons/User-Coat-Blue-icon.png | Bin 3559 -> 0 bytes .../img/soft-scraps-icons/User-Coat-Green-icon.png | Bin 3571 -> 0 bytes .../img/soft-scraps-icons/User-Coat-Red-icon.png | Bin 3544 -> 0 bytes .../User-Executive-Green-icon.png | Bin 3805 -> 0 bytes .../soft-scraps-icons/User-Preppy-Blue-icon.png | Bin 3802 -> 0 bytes .../img/soft-scraps-icons/User-Preppy-Red-icon.png | Bin 3800 -> 0 bytes .../network/img/soft-scraps-icons/license.txt | 12 - .../examples/network/labels/labelAlignment.html | 61 - .../examples/network/labels/labelBackground.html | 57 - .../examples/network/labels/labelColorAndSize.html | 61 - .../vis/examples/network/labels/labelStroke.html | 61 - .../vis/examples/network/labels/multilineText.html | 52 - .../network/layout/hierarchicalLayout.html | 114 - .../network/layout/hierarchicalLayoutMethods.html | 108 - .../layout/hierarchicalLayoutUserdefined.html | 152 - .../layout/hierarchicalLayoutWithoutPhysics.html | 89 - .../vis/examples/network/layout/randomSeed.html | 60 - .../examples/network/nodeStyles/HTMLInNodes.html | 83 - .../network/nodeStyles/circularImages.html | 102 - .../vis/examples/network/nodeStyles/colors.html | 67 - .../examples/network/nodeStyles/customGroups.html | 132 - .../vis/examples/network/nodeStyles/groups.html | 119 - www/lib/vis/examples/network/nodeStyles/icons.html | 196 - .../vis/examples/network/nodeStyles/images.html | 82 - .../network/nodeStyles/imagesWithBorders.html | 105 - .../vis/examples/network/nodeStyles/shadows.html | 119 - .../vis/examples/network/nodeStyles/shapes.html | 73 - .../nodeStyles/shapesWithDashedBorders.html | 61 - .../examples/network/other/animationShowcase.html | 279 - .../network/other/changingClusteredEdgesNodes.html | 107 - www/lib/vis/examples/network/other/clustering.html | 141 - .../examples/network/other/clusteringByZoom.html | 160 - .../examples/network/other/clustersOfclusters.html | 75 - .../vis/examples/network/other/configuration.html | 83 - .../vis/examples/network/other/manipulation.html | 193 - www/lib/vis/examples/network/other/navigation.html | 135 - .../vis/examples/network/other/performance.html | 91 - .../vis/examples/network/other/saveAndLoad.html | 177 - .../network/physics/physicsConfiguration.html | 80 - www/lib/vis/examples/timeline/basicUsage.html | 45 - .../timeline/dataHandling/dataSerialization.html | 122 - .../timeline/dataHandling/loadExternalData.html | 58 - .../timeline/editing/customSnappingOfItems.html | 55 - .../examples/timeline/editing/editingItems.html | 77 - .../timeline/editing/editingItemsCallbacks.html | 141 - .../timeline/editing/individualEditableItems.html | 58 - .../timeline/editing/tooltipOnItemChange.html | 130 - .../timeline/editing/updateDataOnEvent.html | 90 - www/lib/vis/examples/timeline/groups/groups.html | 74 - .../examples/timeline/groups/groupsEditable.html | 316 - .../examples/timeline/groups/groupsOrdering.html | 68 - .../vis/examples/timeline/groups/subgroups.html | 76 - .../timeline/groups/verticalItemsHide.html | 126 - .../timeline/interaction/animateWindow.html | 96 - .../examples/timeline/interaction/clickToUse.html | 73 - .../timeline/interaction/eventListeners.html | 79 - .../timeline/interaction/limitMoveAndZoom.html | 53 - .../timeline/interaction/navigationMenu.html | 80 - .../timeline/interaction/setSelection.html | 66 - .../examples/timeline/items/backgroundAreas.html | 50 - .../timeline/items/backgroundAreasWithGroups.html | 57 - .../vis/examples/timeline/items/htmlContents.html | 75 - .../vis/examples/timeline/items/itemOrdering.html | 82 - .../vis/examples/timeline/items/pointItems.html | 60 - .../examples/timeline/items/rangeOverflowItem.html | 54 - .../examples/timeline/other/customTimeBars.html | 89 - .../examples/timeline/other/dataAttributes.html | 44 - .../examples/timeline/other/dataAttributesAll.html | 44 - www/lib/vis/examples/timeline/other/drag&drop.html | 131 - .../timeline/other/functionLabelFormats.html | 141 - .../examples/timeline/other/groupsPerformance.html | 110 - .../vis/examples/timeline/other/hidingPeriods.html | 53 - .../examples/timeline/other/horizontalScroll.html | 77 - .../vis/examples/timeline/other/localization.html | 68 - .../vis/examples/timeline/other/performance.html | 65 - .../other/requirejs/requirejs_example.html | 17 - .../timeline/other/requirejs/scripts/main.js | 19 - .../timeline/other/requirejs/scripts/require.js | 35 - www/lib/vis/examples/timeline/other/rtl.html | 50 - www/lib/vis/examples/timeline/other/timezone.html | 80 - .../vis/examples/timeline/other/usingReact.html | 123 - .../examples/timeline/other/verticalScroll.html | 93 - .../examples/timeline/resources/data/basic.json | 34 - .../examples/timeline/resources/data/wk2014.json | 152 - .../resources/img/Hardware-Mobile-Phone-icon.png | Bin 3463 -> 0 bytes .../timeline/resources/img/attachment-icon.png | Bin 2774 -> 0 bytes .../timeline/resources/img/blog-post-edit-icon.png | Bin 4225 -> 0 bytes .../timeline/resources/img/comments-icon.png | Bin 3173 -> 0 bytes .../resources/img/community-users-icon.png | Bin 4664 -> 0 bytes .../examples/timeline/resources/img/license.txt | 17 - .../resources/img/license_aesthetica-2.txt | 36 - .../timeline/resources/img/license_refresh-cl.txt | 26 - .../examples/timeline/resources/img/mail-icon.png | Bin 3298 -> 0 bytes .../timeline/resources/img/notes-edit-icon.png | Bin 2913 -> 0 bytes .../timeline/resources/img/product-icon.png | Bin 1594 -> 0 bytes .../examples/timeline/resources/img/truck-icon.png | Bin 1703 -> 0 bytes .../examples/timeline/styling/axisOrientation.html | 76 - .../vis/examples/timeline/styling/customCss.html | 100 - .../vis/examples/timeline/styling/gridStyling.html | 54 - .../examples/timeline/styling/itemClassNames.html | 117 - .../examples/timeline/styling/itemTemplates.html | 251 - 1161 files changed, 407795 deletions(-) delete mode 100644 www/lib/angular-animate/.bower.json delete mode 100644 www/lib/angular-animate/README.md delete mode 100644 www/lib/angular-animate/angular-animate.js delete mode 100644 www/lib/angular-animate/angular-animate.min.js delete mode 100644 www/lib/angular-animate/angular-animate.min.js.map delete mode 100644 www/lib/angular-animate/bower.json delete mode 100644 www/lib/angular-animate/index.js delete mode 100644 www/lib/angular-animate/package.json delete mode 100644 www/lib/angular-awesome-slider/.bower.json delete mode 100644 www/lib/angular-awesome-slider/Gruntfile.js delete mode 100644 www/lib/angular-awesome-slider/MIT-LICENSE.txt delete mode 100644 www/lib/angular-awesome-slider/README.md delete mode 100644 www/lib/angular-awesome-slider/bower.json delete mode 100644 www/lib/angular-awesome-slider/dist/angular-awesome-slider.js delete mode 100644 www/lib/angular-awesome-slider/dist/angular-awesome-slider.min.js delete mode 100644 www/lib/angular-awesome-slider/dist/css/angular-awesome-slider.min.css delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.blue.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.blue.vertical.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.plastic.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.plastic.vertical.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.round.plastic.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.round.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.round.vertical.png delete mode 100644 www/lib/angular-awesome-slider/dist/img/jslider.vertical.png delete mode 100644 www/lib/angular-awesome-slider/package.json delete mode 100644 www/lib/angular-awesome-slider/src/core/config/constants.js delete mode 100644 www/lib/angular-awesome-slider/src/core/index.js delete mode 100644 www/lib/angular-awesome-slider/src/core/model/draggable.factory.js delete mode 100644 www/lib/angular-awesome-slider/src/core/model/pointer.factory.js delete mode 100644 www/lib/angular-awesome-slider/src/core/model/slider.factory.js delete mode 100644 www/lib/angular-awesome-slider/src/core/template/slider.tmpl.js delete mode 100644 www/lib/angular-awesome-slider/src/core/utils/utils.factory.js delete mode 100644 www/lib/angular-awesome-slider/src/css/angular-awesome-slider.css delete mode 100644 www/lib/angular-awesome-slider/src/css/less/main.less delete mode 100644 www/lib/angular-awesome-slider/src/css/less/skin-blue.less delete mode 100644 www/lib/angular-awesome-slider/src/css/less/skin-css.less delete mode 100644 www/lib/angular-awesome-slider/src/css/less/skin-plastic.less delete mode 100644 www/lib/angular-awesome-slider/src/css/less/skin-round.less delete mode 100644 www/lib/angular-awesome-slider/src/css/less/variables.less delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/core/_variables.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_horizontal.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_labels.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_main.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_pointers-value.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_pointers.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_ranges.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/horizontal/_scale.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/main.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/skins/_skin-blue.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/skins/_skin-css.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/skins/_skin-plastic.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/skins/_skin-round.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_labels.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_main.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_pointers-value.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_pointers.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_ranges.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_scales.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/sass/vertical/_vertical.sass delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/core/_variables.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_horizontal.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_labels.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_main.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_pointers-value.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_pointers.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_ranges.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/horizontal/_scale.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/main.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/skins/_skin-blue.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/skins/_skin-css.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/skins/_skin-plastic.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/skins/_skin-round.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_labels.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_main.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_pointers-value.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_pointers.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_ranges.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_scales.scss delete mode 100644 www/lib/angular-awesome-slider/src/css/scss/vertical/_vertical.scss delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.blue.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.blue.vertical.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.plastic.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.plastic.vertical.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.round.plastic.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.round.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.round.vertical.png delete mode 100644 www/lib/angular-awesome-slider/src/img/jslider.vertical.png delete mode 100644 www/lib/angular-awesome-slider/src/index.html delete mode 100644 www/lib/angular-awesome-slider/src/jquery.slider.js delete mode 100644 www/lib/angular-cookies/.bower.json delete mode 100644 www/lib/angular-cookies/README.md delete mode 100644 www/lib/angular-cookies/angular-cookies.js delete mode 100644 www/lib/angular-cookies/angular-cookies.min.js delete mode 100644 www/lib/angular-cookies/angular-cookies.min.js.map delete mode 100644 www/lib/angular-cookies/bower.json delete mode 100644 www/lib/angular-cookies/index.js delete mode 100644 www/lib/angular-cookies/package.json delete mode 100644 www/lib/angular-sanitize/.bower.json delete mode 100644 www/lib/angular-sanitize/README.md delete mode 100644 www/lib/angular-sanitize/angular-sanitize.js delete mode 100644 www/lib/angular-sanitize/angular-sanitize.min.js delete mode 100644 www/lib/angular-sanitize/angular-sanitize.min.js.map delete mode 100644 www/lib/angular-sanitize/bower.json delete mode 100644 www/lib/angular-sanitize/index.js delete mode 100644 www/lib/angular-sanitize/package.json delete mode 100644 www/lib/angular-touch/.bower.json delete mode 100644 www/lib/angular-touch/LICENSE.md delete mode 100644 www/lib/angular-touch/README.md delete mode 100644 www/lib/angular-touch/angular-touch.js delete mode 100644 www/lib/angular-touch/angular-touch.min.js delete mode 100644 www/lib/angular-touch/angular-touch.min.js.map delete mode 100644 www/lib/angular-touch/bower.json delete mode 100644 www/lib/angular-touch/index.js delete mode 100644 www/lib/angular-touch/package.json delete mode 100644 www/lib/angular-translate-loader-static-files/.bower.json delete mode 100644 www/lib/angular-translate-loader-static-files/README.md delete mode 100644 www/lib/angular-translate-loader-static-files/angular-translate-loader-static-files.js delete mode 100644 www/lib/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js delete mode 100644 www/lib/angular-translate-loader-static-files/bower.json delete mode 100644 www/lib/angular-translate-loader-static-files/package.json delete mode 100644 www/lib/angular-translate-storage-cookie/.bower.json delete mode 100644 www/lib/angular-translate-storage-cookie/README.md delete mode 100644 www/lib/angular-translate-storage-cookie/angular-translate-storage-cookie.js delete mode 100644 www/lib/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js delete mode 100644 www/lib/angular-translate-storage-cookie/bower.json delete mode 100644 www/lib/angular-translate-storage-cookie/package.json delete mode 100644 www/lib/angular-translate-storage-local/.bower.json delete mode 100644 www/lib/angular-translate-storage-local/README.md delete mode 100644 www/lib/angular-translate-storage-local/angular-translate-storage-local.js delete mode 100644 www/lib/angular-translate-storage-local/angular-translate-storage-local.min.js delete mode 100644 www/lib/angular-translate-storage-local/bower.json delete mode 100644 www/lib/angular-translate-storage-local/package.json delete mode 100644 www/lib/angular-translate/.bower.json delete mode 100644 www/lib/angular-translate/README.md delete mode 100644 www/lib/angular-translate/angular-translate.js delete mode 100644 www/lib/angular-translate/angular-translate.min.js delete mode 100644 www/lib/angular-translate/bower.json delete mode 100644 www/lib/angular-ui-router/.bower.json delete mode 100644 www/lib/angular-ui-router/CHANGELOG.md delete mode 100644 www/lib/angular-ui-router/CONTRIBUTING.md delete mode 100644 www/lib/angular-ui-router/LICENSE delete mode 100644 www/lib/angular-ui-router/README.md delete mode 100644 www/lib/angular-ui-router/api/angular-ui-router.d.ts delete mode 100644 www/lib/angular-ui-router/bower.json delete mode 100644 www/lib/angular-ui-router/release/angular-ui-router.js delete mode 100644 www/lib/angular-ui-router/release/angular-ui-router.min.js delete mode 100644 www/lib/angular-ui-router/src/common.js delete mode 100644 www/lib/angular-ui-router/src/resolve.js delete mode 100644 www/lib/angular-ui-router/src/state.js delete mode 100644 www/lib/angular-ui-router/src/stateDirectives.js delete mode 100644 www/lib/angular-ui-router/src/stateFilters.js delete mode 100644 www/lib/angular-ui-router/src/templateFactory.js delete mode 100644 www/lib/angular-ui-router/src/urlMatcherFactory.js delete mode 100644 www/lib/angular-ui-router/src/urlRouter.js delete mode 100644 www/lib/angular-ui-router/src/view.js delete mode 100644 www/lib/angular-ui-router/src/viewDirective.js delete mode 100644 www/lib/angular-ui-router/src/viewScroll.js delete mode 100644 www/lib/angular-wizard/.bower.json delete mode 100644 www/lib/angular-wizard/.gitignore delete mode 100644 www/lib/angular-wizard/.travis.yml delete mode 100644 www/lib/angular-wizard/CHANGELOG.md delete mode 100644 www/lib/angular-wizard/CONTRIBUTE.md delete mode 100644 www/lib/angular-wizard/Gruntfile.js delete mode 100644 www/lib/angular-wizard/README.md delete mode 100644 www/lib/angular-wizard/bower.json delete mode 100644 www/lib/angular-wizard/dist/angular-wizard.css delete mode 100644 www/lib/angular-wizard/dist/angular-wizard.js delete mode 100644 www/lib/angular-wizard/dist/angular-wizard.less delete mode 100644 www/lib/angular-wizard/dist/angular-wizard.min.css delete mode 100644 www/lib/angular-wizard/dist/angular-wizard.min.js delete mode 100644 www/lib/angular-wizard/karma.conf.js delete mode 100644 www/lib/angular-wizard/license.md delete mode 100644 www/lib/angular-wizard/package.json delete mode 100644 www/lib/angular-wizard/src/angular-wizard.less delete mode 100644 www/lib/angular-wizard/src/angularModule.js delete mode 100644 www/lib/angular-wizard/src/step.html delete mode 100644 www/lib/angular-wizard/src/step.js delete mode 100644 www/lib/angular-wizard/src/wizard.html delete mode 100644 www/lib/angular-wizard/src/wizard.js delete mode 100644 www/lib/angular-wizard/src/wizardButtons.js delete mode 100644 www/lib/angular-wizard/src/wizardHandler.js delete mode 100644 www/lib/angular-wizard/test/angularWizardSpec.js delete mode 100644 www/lib/angular/.bower.json delete mode 100644 www/lib/angular/LICENSE.md delete mode 100644 www/lib/angular/README.md delete mode 100644 www/lib/angular/angular-csp.css delete mode 100644 www/lib/angular/angular.js delete mode 100644 www/lib/angular/angular.min.js delete mode 100644 www/lib/angular/angular.min.js.gzip delete mode 100644 www/lib/angular/angular.min.js.map delete mode 100644 www/lib/angular/bower.json delete mode 100644 www/lib/angular/index.js delete mode 100644 www/lib/angular/package.json delete mode 100644 www/lib/crypto-js/.bower.json delete mode 100644 www/lib/crypto-js/CONTRIBUTING.md delete mode 100644 www/lib/crypto-js/LICENSE delete mode 100644 www/lib/crypto-js/README.md delete mode 100644 www/lib/crypto-js/aes.js delete mode 100644 www/lib/crypto-js/bower.json delete mode 100644 www/lib/crypto-js/cipher-core.js delete mode 100644 www/lib/crypto-js/core.js delete mode 100644 www/lib/crypto-js/crypto-js.js delete mode 100644 www/lib/crypto-js/docs/QuickStartGuide.wiki delete mode 100644 www/lib/crypto-js/enc-base64.js delete mode 100644 www/lib/crypto-js/enc-hex.js delete mode 100644 www/lib/crypto-js/enc-latin1.js delete mode 100644 www/lib/crypto-js/enc-utf16.js delete mode 100644 www/lib/crypto-js/enc-utf8.js delete mode 100644 www/lib/crypto-js/evpkdf.js delete mode 100644 www/lib/crypto-js/format-hex.js delete mode 100644 www/lib/crypto-js/format-openssl.js delete mode 100644 www/lib/crypto-js/hmac-md5.js delete mode 100644 www/lib/crypto-js/hmac-ripemd160.js delete mode 100644 www/lib/crypto-js/hmac-sha1.js delete mode 100644 www/lib/crypto-js/hmac-sha224.js delete mode 100644 www/lib/crypto-js/hmac-sha256.js delete mode 100644 www/lib/crypto-js/hmac-sha3.js delete mode 100644 www/lib/crypto-js/hmac-sha384.js delete mode 100644 www/lib/crypto-js/hmac-sha512.js delete mode 100644 www/lib/crypto-js/hmac.js delete mode 100644 www/lib/crypto-js/index.js delete mode 100644 www/lib/crypto-js/lib-typedarrays.js delete mode 100644 www/lib/crypto-js/md5.js delete mode 100644 www/lib/crypto-js/mode-cfb.js delete mode 100644 www/lib/crypto-js/mode-ctr-gladman.js delete mode 100644 www/lib/crypto-js/mode-ctr.js delete mode 100644 www/lib/crypto-js/mode-ecb.js delete mode 100644 www/lib/crypto-js/mode-ofb.js delete mode 100644 www/lib/crypto-js/package.json delete mode 100644 www/lib/crypto-js/pad-ansix923.js delete mode 100644 www/lib/crypto-js/pad-iso10126.js delete mode 100644 www/lib/crypto-js/pad-iso97971.js delete mode 100644 www/lib/crypto-js/pad-nopadding.js delete mode 100644 www/lib/crypto-js/pad-pkcs7.js delete mode 100644 www/lib/crypto-js/pad-zeropadding.js delete mode 100644 www/lib/crypto-js/pbkdf2.js delete mode 100644 www/lib/crypto-js/rabbit-legacy.js delete mode 100644 www/lib/crypto-js/rabbit.js delete mode 100644 www/lib/crypto-js/rc4.js delete mode 100644 www/lib/crypto-js/ripemd160.js delete mode 100644 www/lib/crypto-js/sha1.js delete mode 100644 www/lib/crypto-js/sha224.js delete mode 100644 www/lib/crypto-js/sha256.js delete mode 100644 www/lib/crypto-js/sha3.js delete mode 100644 www/lib/crypto-js/sha384.js delete mode 100644 www/lib/crypto-js/sha512.js delete mode 100644 www/lib/crypto-js/tripledes.js delete mode 100644 www/lib/crypto-js/x64-core.js delete mode 100644 www/lib/filelogger/.bower.json delete mode 100644 www/lib/filelogger/LICENSE delete mode 100644 www/lib/filelogger/README.md delete mode 100644 www/lib/filelogger/bower.json delete mode 100644 www/lib/filelogger/dist/filelogger.js delete mode 100644 www/lib/filelogger/dist/filelogger.min.js delete mode 100644 www/lib/filelogger/package.json delete mode 100644 www/lib/font-awesome/.bower.json delete mode 100644 www/lib/font-awesome/.gitignore delete mode 100644 www/lib/font-awesome/.npmignore delete mode 100644 www/lib/font-awesome/bower.json delete mode 100644 www/lib/font-awesome/css/font-awesome.css delete mode 100644 www/lib/font-awesome/css/font-awesome.css.map delete mode 100644 www/lib/font-awesome/css/font-awesome.min.css delete mode 100644 www/lib/font-awesome/fonts/FontAwesome.otf delete mode 100644 www/lib/font-awesome/fonts/fontawesome-webfont.eot delete mode 100644 www/lib/font-awesome/fonts/fontawesome-webfont.svg delete mode 100644 www/lib/font-awesome/fonts/fontawesome-webfont.ttf delete mode 100644 www/lib/font-awesome/fonts/fontawesome-webfont.woff delete mode 100644 www/lib/font-awesome/fonts/fontawesome-webfont.woff2 delete mode 100644 www/lib/font-awesome/less/animated.less delete mode 100644 www/lib/font-awesome/less/bordered-pulled.less delete mode 100644 www/lib/font-awesome/less/core.less delete mode 100644 www/lib/font-awesome/less/fixed-width.less delete mode 100644 www/lib/font-awesome/less/font-awesome.less delete mode 100644 www/lib/font-awesome/less/icons.less delete mode 100644 www/lib/font-awesome/less/larger.less delete mode 100644 www/lib/font-awesome/less/list.less delete mode 100644 www/lib/font-awesome/less/mixins.less delete mode 100644 www/lib/font-awesome/less/path.less delete mode 100644 www/lib/font-awesome/less/rotated-flipped.less delete mode 100644 www/lib/font-awesome/less/stacked.less delete mode 100644 www/lib/font-awesome/less/variables.less delete mode 100644 www/lib/font-awesome/scss/_animated.scss delete mode 100644 www/lib/font-awesome/scss/_bordered-pulled.scss delete mode 100644 www/lib/font-awesome/scss/_core.scss delete mode 100644 www/lib/font-awesome/scss/_fixed-width.scss delete mode 100644 www/lib/font-awesome/scss/_icons.scss delete mode 100644 www/lib/font-awesome/scss/_larger.scss delete mode 100644 www/lib/font-awesome/scss/_list.scss delete mode 100644 www/lib/font-awesome/scss/_mixins.scss delete mode 100644 www/lib/font-awesome/scss/_path.scss delete mode 100644 www/lib/font-awesome/scss/_rotated-flipped.scss delete mode 100644 www/lib/font-awesome/scss/_stacked.scss delete mode 100644 www/lib/font-awesome/scss/_variables.scss delete mode 100644 www/lib/font-awesome/scss/font-awesome.scss delete mode 100644 www/lib/ion-datetime-picker/.bower.json delete mode 100644 www/lib/ion-datetime-picker/LICENSE delete mode 100644 www/lib/ion-datetime-picker/README.md delete mode 100644 www/lib/ion-datetime-picker/bower.json delete mode 100644 www/lib/ion-datetime-picker/gulpfile.js delete mode 100644 www/lib/ion-datetime-picker/package.json delete mode 100644 www/lib/ion-datetime-picker/release/ion-datetime-picker.min.css delete mode 100644 www/lib/ion-datetime-picker/release/ion-datetime-picker.min.js delete mode 100644 www/lib/ion-datetime-picker/src/picker-i18n.js delete mode 100644 www/lib/ion-datetime-picker/src/picker-popup.html delete mode 100644 www/lib/ion-datetime-picker/src/picker.js delete mode 100644 www/lib/ion-datetime-picker/src/picker.scss delete mode 100644 www/lib/ionic-native-transitions/.bower.json delete mode 100644 www/lib/ionic-native-transitions/.gitignore delete mode 100644 www/lib/ionic-native-transitions/CHANGELOG.md delete mode 100644 www/lib/ionic-native-transitions/Copyright.txt delete mode 100644 www/lib/ionic-native-transitions/LICENSE delete mode 100644 www/lib/ionic-native-transitions/README.md delete mode 100644 www/lib/ionic-native-transitions/bower.json delete mode 100644 www/lib/ionic-native-transitions/config.xml delete mode 100644 www/lib/ionic-native-transitions/dist/ionic-native-transitions.js delete mode 100644 www/lib/ionic-native-transitions/dist/ionic-native-transitions.js.map delete mode 100644 www/lib/ionic-native-transitions/dist/ionic-native-transitions.min.js delete mode 100644 www/lib/ionic-native-transitions/lib/index.js delete mode 100644 www/lib/ionic-native-transitions/lib/nativeSref.js delete mode 100644 www/lib/ionic-native-transitions/lib/provider.js delete mode 100644 www/lib/ionic-native-transitions/lib/run.js delete mode 100644 www/lib/ionic-native-transitions/package.json delete mode 100644 www/lib/ionic-native-transitions/test/angular-ios9-uiwebview.patch.js delete mode 100644 www/lib/ionic-native-transitions/test/config.js delete mode 100644 www/lib/ionic-native-transitions/test/controller.js delete mode 100644 www/lib/ionic-native-transitions/test/index.html delete mode 100644 www/lib/ionic-native-transitions/test/index.js delete mode 100644 www/lib/ionic-native-transitions/webpack.config.dist.js delete mode 100644 www/lib/ionic-native-transitions/webpack.config.dist.min.js delete mode 100644 www/lib/ionic-native-transitions/webpack.config.js delete mode 100644 www/lib/ionic-native-transitions/www/.gitignore delete mode 100644 www/lib/ionic/.bower.json delete mode 100644 www/lib/ionic/css/ionic.css delete mode 100644 www/lib/ionic/css/ionic.min.css delete mode 100644 www/lib/ionic/fonts/ionicons.eot delete mode 100644 www/lib/ionic/fonts/ionicons.svg delete mode 100644 www/lib/ionic/fonts/ionicons.ttf delete mode 100644 www/lib/ionic/fonts/ionicons.woff delete mode 100644 www/lib/ionic/js/ionic-angular.js delete mode 100644 www/lib/ionic/js/ionic-angular.min.js delete mode 100644 www/lib/ionic/js/ionic.bundle.js delete mode 100644 www/lib/ionic/js/ionic.bundle.min.js delete mode 100644 www/lib/ionic/js/ionic.js delete mode 100644 www/lib/ionic/js/ionic.min.js delete mode 100644 www/lib/ionic/scss/_action-sheet.scss delete mode 100644 www/lib/ionic/scss/_animations.scss delete mode 100644 www/lib/ionic/scss/_backdrop.scss delete mode 100644 www/lib/ionic/scss/_badge.scss delete mode 100644 www/lib/ionic/scss/_bar.scss delete mode 100644 www/lib/ionic/scss/_button-bar.scss delete mode 100644 www/lib/ionic/scss/_button.scss delete mode 100644 www/lib/ionic/scss/_checkbox.scss delete mode 100644 www/lib/ionic/scss/_form.scss delete mode 100644 www/lib/ionic/scss/_grid.scss delete mode 100644 www/lib/ionic/scss/_items.scss delete mode 100644 www/lib/ionic/scss/_list.scss delete mode 100644 www/lib/ionic/scss/_loading.scss delete mode 100644 www/lib/ionic/scss/_menu.scss delete mode 100644 www/lib/ionic/scss/_mixins.scss delete mode 100644 www/lib/ionic/scss/_modal.scss delete mode 100644 www/lib/ionic/scss/_platform.scss delete mode 100644 www/lib/ionic/scss/_popover.scss delete mode 100644 www/lib/ionic/scss/_popup.scss delete mode 100644 www/lib/ionic/scss/_progress.scss delete mode 100644 www/lib/ionic/scss/_radio.scss delete mode 100644 www/lib/ionic/scss/_range.scss delete mode 100644 www/lib/ionic/scss/_refresher.scss delete mode 100644 www/lib/ionic/scss/_reset.scss delete mode 100644 www/lib/ionic/scss/_scaffolding.scss delete mode 100644 www/lib/ionic/scss/_select.scss delete mode 100644 www/lib/ionic/scss/_slide-box.scss delete mode 100644 www/lib/ionic/scss/_slides.scss delete mode 100644 www/lib/ionic/scss/_spinner.scss delete mode 100644 www/lib/ionic/scss/_tabs.scss delete mode 100644 www/lib/ionic/scss/_toggle.scss delete mode 100644 www/lib/ionic/scss/_transitions.scss delete mode 100644 www/lib/ionic/scss/_type.scss delete mode 100644 www/lib/ionic/scss/_util.scss delete mode 100644 www/lib/ionic/scss/_variables.scss delete mode 100644 www/lib/ionic/scss/ionic.scss delete mode 100644 www/lib/ionic/scss/ionicons/_ionicons-font.scss delete mode 100644 www/lib/ionic/scss/ionicons/_ionicons-icons.scss delete mode 100644 www/lib/ionic/scss/ionicons/_ionicons-variables.scss delete mode 100644 www/lib/ionic/scss/ionicons/ionicons.scss delete mode 100644 www/lib/ionic/scss/tsconfig.json delete mode 100644 www/lib/ionic/version.json delete mode 100644 www/lib/localforage-cordovasqlitedriver/.babelrc delete mode 100644 www/lib/localforage-cordovasqlitedriver/.bower.json delete mode 100644 www/lib/localforage-cordovasqlitedriver/.eslintrc delete mode 100644 www/lib/localforage-cordovasqlitedriver/.gitignore delete mode 100644 www/lib/localforage-cordovasqlitedriver/.jscsrc delete mode 100644 www/lib/localforage-cordovasqlitedriver/.jshintrc delete mode 100644 www/lib/localforage-cordovasqlitedriver/README.md delete mode 100644 www/lib/localforage-cordovasqlitedriver/bower.json delete mode 100644 www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.es6.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/lib/cordova-sqlite.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/lib/localforage-cordovasqlitedriver.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/lib/utils.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/package.json delete mode 100644 www/lib/localforage-cordovasqlitedriver/rollup.config.es6.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/rollup.config.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/rollup.config.test.js delete mode 100644 www/lib/localforage-cordovasqlitedriver/rollup.config.umd.js delete mode 100644 www/lib/localforage/.babelrc delete mode 100644 www/lib/localforage/.babelrc-umd delete mode 100644 www/lib/localforage/.bower.json delete mode 100644 www/lib/localforage/.gitignore delete mode 100644 www/lib/localforage/.jscsrc delete mode 100644 www/lib/localforage/.jshintrc delete mode 100644 www/lib/localforage/CHANGELOG.md delete mode 100644 www/lib/localforage/Gruntfile.js delete mode 100644 www/lib/localforage/README.md delete mode 100644 www/lib/localforage/bower.json delete mode 100644 www/lib/localforage/component.json delete mode 100644 www/lib/localforage/contribute.json delete mode 100644 www/lib/localforage/dist/localforage.js delete mode 100644 www/lib/localforage/dist/localforage.min.js delete mode 100644 www/lib/localforage/dist/localforage.nopromises.js delete mode 100644 www/lib/localforage/dist/localforage.nopromises.min.js delete mode 100644 www/lib/localforage/package.json delete mode 100644 www/lib/localforage/src/drivers/indexeddb.js delete mode 100644 www/lib/localforage/src/drivers/localstorage.js delete mode 100644 www/lib/localforage/src/drivers/websql.js delete mode 100644 www/lib/localforage/src/localforage.js delete mode 100644 www/lib/localforage/src/utils/createBlob.js delete mode 100644 www/lib/localforage/src/utils/executeCallback.js delete mode 100644 www/lib/localforage/src/utils/executeTwoCallbacks.js delete mode 100644 www/lib/localforage/src/utils/idb.js delete mode 100644 www/lib/localforage/src/utils/isIndexedDBValid.js delete mode 100644 www/lib/localforage/src/utils/isLocalStorageValid.js delete mode 100644 www/lib/localforage/src/utils/isWebSQLValid.js delete mode 100644 www/lib/localforage/src/utils/promise.js delete mode 100644 www/lib/localforage/src/utils/serializer.js delete mode 100644 www/lib/localforage/typing-tests/localforage-tests.ts delete mode 100644 www/lib/localforage/typing-tests/tsconfig.json delete mode 100644 www/lib/moment/.bower.json delete mode 100644 www/lib/moment/CHANGELOG.md delete mode 100644 www/lib/moment/LICENSE delete mode 100644 www/lib/moment/README.md delete mode 100644 www/lib/moment/bower.json delete mode 100644 www/lib/moment/locale/af.js delete mode 100644 www/lib/moment/locale/ar-ma.js delete mode 100644 www/lib/moment/locale/ar-sa.js delete mode 100644 www/lib/moment/locale/ar-tn.js delete mode 100644 www/lib/moment/locale/ar.js delete mode 100644 www/lib/moment/locale/az.js delete mode 100644 www/lib/moment/locale/be.js delete mode 100644 www/lib/moment/locale/bg.js delete mode 100644 www/lib/moment/locale/bn.js delete mode 100644 www/lib/moment/locale/bo.js delete mode 100644 www/lib/moment/locale/br.js delete mode 100644 www/lib/moment/locale/bs.js delete mode 100644 www/lib/moment/locale/ca.js delete mode 100644 www/lib/moment/locale/cs.js delete mode 100644 www/lib/moment/locale/cv.js delete mode 100644 www/lib/moment/locale/cy.js delete mode 100644 www/lib/moment/locale/da.js delete mode 100644 www/lib/moment/locale/de-at.js delete mode 100644 www/lib/moment/locale/de.js delete mode 100644 www/lib/moment/locale/el.js delete mode 100644 www/lib/moment/locale/en-au.js delete mode 100644 www/lib/moment/locale/en-ca.js delete mode 100644 www/lib/moment/locale/en-gb.js delete mode 100644 www/lib/moment/locale/eo.js delete mode 100644 www/lib/moment/locale/es.js delete mode 100644 www/lib/moment/locale/et.js delete mode 100644 www/lib/moment/locale/eu.js delete mode 100644 www/lib/moment/locale/fa.js delete mode 100644 www/lib/moment/locale/fi.js delete mode 100644 www/lib/moment/locale/fo.js delete mode 100644 www/lib/moment/locale/fr-ca.js delete mode 100644 www/lib/moment/locale/fr.js delete mode 100644 www/lib/moment/locale/fy.js delete mode 100644 www/lib/moment/locale/gl.js delete mode 100644 www/lib/moment/locale/he.js delete mode 100644 www/lib/moment/locale/hi.js delete mode 100644 www/lib/moment/locale/hr.js delete mode 100644 www/lib/moment/locale/hu.js delete mode 100644 www/lib/moment/locale/hy-am.js delete mode 100644 www/lib/moment/locale/id.js delete mode 100644 www/lib/moment/locale/is.js delete mode 100644 www/lib/moment/locale/it.js delete mode 100644 www/lib/moment/locale/ja.js delete mode 100644 www/lib/moment/locale/jv.js delete mode 100644 www/lib/moment/locale/ka.js delete mode 100644 www/lib/moment/locale/km.js delete mode 100644 www/lib/moment/locale/ko.js delete mode 100644 www/lib/moment/locale/lb.js delete mode 100644 www/lib/moment/locale/lt.js delete mode 100644 www/lib/moment/locale/lv.js delete mode 100644 www/lib/moment/locale/me.js delete mode 100644 www/lib/moment/locale/mk.js delete mode 100644 www/lib/moment/locale/ml.js delete mode 100644 www/lib/moment/locale/mr.js delete mode 100644 www/lib/moment/locale/ms-my.js delete mode 100644 www/lib/moment/locale/ms.js delete mode 100644 www/lib/moment/locale/my.js delete mode 100644 www/lib/moment/locale/nb.js delete mode 100644 www/lib/moment/locale/ne.js delete mode 100644 www/lib/moment/locale/nl.js delete mode 100644 www/lib/moment/locale/nn.js delete mode 100644 www/lib/moment/locale/pl.js delete mode 100644 www/lib/moment/locale/pt-br.js delete mode 100644 www/lib/moment/locale/pt.js delete mode 100644 www/lib/moment/locale/ro.js delete mode 100644 www/lib/moment/locale/ru.js delete mode 100644 www/lib/moment/locale/si.js delete mode 100644 www/lib/moment/locale/sk.js delete mode 100644 www/lib/moment/locale/sl.js delete mode 100644 www/lib/moment/locale/sq.js delete mode 100644 www/lib/moment/locale/sr-cyrl.js delete mode 100644 www/lib/moment/locale/sr.js delete mode 100644 www/lib/moment/locale/sv.js delete mode 100644 www/lib/moment/locale/ta.js delete mode 100644 www/lib/moment/locale/th.js delete mode 100644 www/lib/moment/locale/tl-ph.js delete mode 100644 www/lib/moment/locale/tr.js delete mode 100644 www/lib/moment/locale/tzl.js delete mode 100644 www/lib/moment/locale/tzm-latn.js delete mode 100644 www/lib/moment/locale/tzm.js delete mode 100644 www/lib/moment/locale/uk.js delete mode 100644 www/lib/moment/locale/uz.js delete mode 100644 www/lib/moment/locale/vi.js delete mode 100644 www/lib/moment/locale/zh-cn.js delete mode 100644 www/lib/moment/locale/zh-tw.js delete mode 100644 www/lib/moment/min/locales.js delete mode 100644 www/lib/moment/min/locales.min.js delete mode 100644 www/lib/moment/min/moment-with-locales.js delete mode 100644 www/lib/moment/min/moment-with-locales.min.js delete mode 100644 www/lib/moment/min/moment.min.js delete mode 100644 www/lib/moment/min/tests.js delete mode 100644 www/lib/moment/moment.js delete mode 100644 www/lib/moment/src/lib/create/check-overflow.js delete mode 100644 www/lib/moment/src/lib/create/date-from-array.js delete mode 100644 www/lib/moment/src/lib/create/from-anything.js delete mode 100644 www/lib/moment/src/lib/create/from-array.js delete mode 100644 www/lib/moment/src/lib/create/from-object.js delete mode 100644 www/lib/moment/src/lib/create/from-string-and-array.js delete mode 100644 www/lib/moment/src/lib/create/from-string-and-format.js delete mode 100644 www/lib/moment/src/lib/create/from-string.js delete mode 100644 www/lib/moment/src/lib/create/local.js delete mode 100644 www/lib/moment/src/lib/create/parsing-flags.js delete mode 100644 www/lib/moment/src/lib/create/utc.js delete mode 100644 www/lib/moment/src/lib/create/valid.js delete mode 100644 www/lib/moment/src/lib/duration/abs.js delete mode 100644 www/lib/moment/src/lib/duration/add-subtract.js delete mode 100644 www/lib/moment/src/lib/duration/as.js delete mode 100644 www/lib/moment/src/lib/duration/bubble.js delete mode 100644 www/lib/moment/src/lib/duration/constructor.js delete mode 100644 www/lib/moment/src/lib/duration/create.js delete mode 100644 www/lib/moment/src/lib/duration/duration.js delete mode 100644 www/lib/moment/src/lib/duration/get.js delete mode 100644 www/lib/moment/src/lib/duration/humanize.js delete mode 100644 www/lib/moment/src/lib/duration/iso-string.js delete mode 100644 www/lib/moment/src/lib/duration/prototype.js delete mode 100644 www/lib/moment/src/lib/format/format.js delete mode 100644 www/lib/moment/src/lib/locale/calendar.js delete mode 100644 www/lib/moment/src/lib/locale/constructor.js delete mode 100644 www/lib/moment/src/lib/locale/en.js delete mode 100644 www/lib/moment/src/lib/locale/formats.js delete mode 100644 www/lib/moment/src/lib/locale/invalid.js delete mode 100644 www/lib/moment/src/lib/locale/lists.js delete mode 100644 www/lib/moment/src/lib/locale/locale.js delete mode 100644 www/lib/moment/src/lib/locale/locales.js delete mode 100644 www/lib/moment/src/lib/locale/ordinal.js delete mode 100644 www/lib/moment/src/lib/locale/pre-post-format.js delete mode 100644 www/lib/moment/src/lib/locale/prototype.js delete mode 100644 www/lib/moment/src/lib/locale/relative.js delete mode 100644 www/lib/moment/src/lib/locale/set.js delete mode 100644 www/lib/moment/src/lib/moment/add-subtract.js delete mode 100644 www/lib/moment/src/lib/moment/calendar.js delete mode 100644 www/lib/moment/src/lib/moment/clone.js delete mode 100644 www/lib/moment/src/lib/moment/compare.js delete mode 100644 www/lib/moment/src/lib/moment/constructor.js delete mode 100644 www/lib/moment/src/lib/moment/diff.js delete mode 100644 www/lib/moment/src/lib/moment/format.js delete mode 100644 www/lib/moment/src/lib/moment/from.js delete mode 100644 www/lib/moment/src/lib/moment/get-set.js delete mode 100644 www/lib/moment/src/lib/moment/locale.js delete mode 100644 www/lib/moment/src/lib/moment/min-max.js delete mode 100644 www/lib/moment/src/lib/moment/moment.js delete mode 100644 www/lib/moment/src/lib/moment/prototype.js delete mode 100644 www/lib/moment/src/lib/moment/start-end-of.js delete mode 100644 www/lib/moment/src/lib/moment/to-type.js delete mode 100644 www/lib/moment/src/lib/moment/to.js delete mode 100644 www/lib/moment/src/lib/moment/valid.js delete mode 100644 www/lib/moment/src/lib/parse/regex.js delete mode 100644 www/lib/moment/src/lib/parse/token.js delete mode 100644 www/lib/moment/src/lib/units/aliases.js delete mode 100644 www/lib/moment/src/lib/units/constants.js delete mode 100644 www/lib/moment/src/lib/units/day-of-month.js delete mode 100644 www/lib/moment/src/lib/units/day-of-week.js delete mode 100644 www/lib/moment/src/lib/units/day-of-year.js delete mode 100644 www/lib/moment/src/lib/units/hour.js delete mode 100644 www/lib/moment/src/lib/units/millisecond.js delete mode 100644 www/lib/moment/src/lib/units/minute.js delete mode 100644 www/lib/moment/src/lib/units/month.js delete mode 100644 www/lib/moment/src/lib/units/offset.js delete mode 100644 www/lib/moment/src/lib/units/quarter.js delete mode 100644 www/lib/moment/src/lib/units/second.js delete mode 100644 www/lib/moment/src/lib/units/timestamp.js delete mode 100644 www/lib/moment/src/lib/units/timezone.js delete mode 100644 www/lib/moment/src/lib/units/units.js delete mode 100644 www/lib/moment/src/lib/units/week-year.js delete mode 100644 www/lib/moment/src/lib/units/week.js delete mode 100644 www/lib/moment/src/lib/units/year.js delete mode 100644 www/lib/moment/src/lib/utils/abs-ceil.js delete mode 100644 www/lib/moment/src/lib/utils/abs-floor.js delete mode 100644 www/lib/moment/src/lib/utils/compare-arrays.js delete mode 100644 www/lib/moment/src/lib/utils/defaults.js delete mode 100644 www/lib/moment/src/lib/utils/deprecate.js delete mode 100644 www/lib/moment/src/lib/utils/extend.js delete mode 100644 www/lib/moment/src/lib/utils/has-own-prop.js delete mode 100644 www/lib/moment/src/lib/utils/hooks.js delete mode 100644 www/lib/moment/src/lib/utils/is-array.js delete mode 100644 www/lib/moment/src/lib/utils/is-date.js delete mode 100644 www/lib/moment/src/lib/utils/map.js delete mode 100644 www/lib/moment/src/lib/utils/to-int.js delete mode 100644 www/lib/moment/src/lib/utils/zero-fill.js delete mode 100644 www/lib/moment/src/locale/af.js delete mode 100644 www/lib/moment/src/locale/ar-ma.js delete mode 100644 www/lib/moment/src/locale/ar-sa.js delete mode 100644 www/lib/moment/src/locale/ar-tn.js delete mode 100644 www/lib/moment/src/locale/ar.js delete mode 100644 www/lib/moment/src/locale/az.js delete mode 100644 www/lib/moment/src/locale/be.js delete mode 100644 www/lib/moment/src/locale/bg.js delete mode 100644 www/lib/moment/src/locale/bn.js delete mode 100644 www/lib/moment/src/locale/bo.js delete mode 100644 www/lib/moment/src/locale/br.js delete mode 100644 www/lib/moment/src/locale/bs.js delete mode 100644 www/lib/moment/src/locale/ca.js delete mode 100644 www/lib/moment/src/locale/cs.js delete mode 100644 www/lib/moment/src/locale/cv.js delete mode 100644 www/lib/moment/src/locale/cy.js delete mode 100644 www/lib/moment/src/locale/da.js delete mode 100644 www/lib/moment/src/locale/de-at.js delete mode 100644 www/lib/moment/src/locale/de.js delete mode 100644 www/lib/moment/src/locale/el.js delete mode 100644 www/lib/moment/src/locale/en-au.js delete mode 100644 www/lib/moment/src/locale/en-ca.js delete mode 100644 www/lib/moment/src/locale/en-gb.js delete mode 100644 www/lib/moment/src/locale/eo.js delete mode 100644 www/lib/moment/src/locale/es.js delete mode 100644 www/lib/moment/src/locale/et.js delete mode 100644 www/lib/moment/src/locale/eu.js delete mode 100644 www/lib/moment/src/locale/fa.js delete mode 100644 www/lib/moment/src/locale/fi.js delete mode 100644 www/lib/moment/src/locale/fo.js delete mode 100644 www/lib/moment/src/locale/fr-ca.js delete mode 100644 www/lib/moment/src/locale/fr.js delete mode 100644 www/lib/moment/src/locale/fy.js delete mode 100644 www/lib/moment/src/locale/gl.js delete mode 100644 www/lib/moment/src/locale/he.js delete mode 100644 www/lib/moment/src/locale/hi.js delete mode 100644 www/lib/moment/src/locale/hr.js delete mode 100644 www/lib/moment/src/locale/hu.js delete mode 100644 www/lib/moment/src/locale/hy-am.js delete mode 100644 www/lib/moment/src/locale/id.js delete mode 100644 www/lib/moment/src/locale/is.js delete mode 100644 www/lib/moment/src/locale/it.js delete mode 100644 www/lib/moment/src/locale/ja.js delete mode 100644 www/lib/moment/src/locale/jv.js delete mode 100644 www/lib/moment/src/locale/ka.js delete mode 100644 www/lib/moment/src/locale/km.js delete mode 100644 www/lib/moment/src/locale/ko.js delete mode 100644 www/lib/moment/src/locale/lb.js delete mode 100644 www/lib/moment/src/locale/lt.js delete mode 100644 www/lib/moment/src/locale/lv.js delete mode 100644 www/lib/moment/src/locale/me.js delete mode 100644 www/lib/moment/src/locale/mk.js delete mode 100644 www/lib/moment/src/locale/ml.js delete mode 100644 www/lib/moment/src/locale/mr.js delete mode 100644 www/lib/moment/src/locale/ms-my.js delete mode 100644 www/lib/moment/src/locale/ms.js delete mode 100644 www/lib/moment/src/locale/my.js delete mode 100644 www/lib/moment/src/locale/nb.js delete mode 100644 www/lib/moment/src/locale/ne.js delete mode 100644 www/lib/moment/src/locale/nl.js delete mode 100644 www/lib/moment/src/locale/nn.js delete mode 100644 www/lib/moment/src/locale/pl.js delete mode 100644 www/lib/moment/src/locale/pt-br.js delete mode 100644 www/lib/moment/src/locale/pt.js delete mode 100644 www/lib/moment/src/locale/ro.js delete mode 100644 www/lib/moment/src/locale/ru.js delete mode 100644 www/lib/moment/src/locale/si.js delete mode 100644 www/lib/moment/src/locale/sk.js delete mode 100644 www/lib/moment/src/locale/sl.js delete mode 100644 www/lib/moment/src/locale/sq.js delete mode 100644 www/lib/moment/src/locale/sr-cyrl.js delete mode 100644 www/lib/moment/src/locale/sr.js delete mode 100644 www/lib/moment/src/locale/sv.js delete mode 100644 www/lib/moment/src/locale/ta.js delete mode 100644 www/lib/moment/src/locale/th.js delete mode 100644 www/lib/moment/src/locale/tl-ph.js delete mode 100644 www/lib/moment/src/locale/tr.js delete mode 100644 www/lib/moment/src/locale/tzl.js delete mode 100644 www/lib/moment/src/locale/tzm-latn.js delete mode 100644 www/lib/moment/src/locale/tzm.js delete mode 100644 www/lib/moment/src/locale/uk.js delete mode 100644 www/lib/moment/src/locale/uz.js delete mode 100644 www/lib/moment/src/locale/vi.js delete mode 100644 www/lib/moment/src/locale/zh-cn.js delete mode 100644 www/lib/moment/src/locale/zh-tw.js delete mode 100644 www/lib/moment/src/moment.js delete mode 100644 www/lib/moment/templates/amd-named.js delete mode 100644 www/lib/moment/templates/amd.js delete mode 100644 www/lib/moment/templates/globals.js delete mode 100644 www/lib/moment/templates/locale-header.js delete mode 100644 www/lib/moment/templates/test-header.js delete mode 100644 www/lib/ng-mfb/.bower.json delete mode 100644 www/lib/ng-mfb/CHANGELOG.md delete mode 100644 www/lib/ng-mfb/LICENSE delete mode 100644 www/lib/ng-mfb/bower.json delete mode 100644 www/lib/ng-mfb/demo/demo-module.js delete mode 100644 www/lib/ng-mfb/demo/svg/addme.svg delete mode 100644 www/lib/ng-mfb/demo/svg/close.svg delete mode 100644 www/lib/ng-mfb/demo/svg/menu.svg delete mode 100644 www/lib/ng-mfb/demo/svg/share.svg delete mode 100644 www/lib/ng-mfb/demo/svg/star.svg delete mode 100644 www/lib/ng-mfb/mfb/LICENSE delete mode 100644 www/lib/ng-mfb/mfb/src/_/_fountain.scss delete mode 100644 www/lib/ng-mfb/mfb/src/_/_slidein-spring.scss delete mode 100644 www/lib/ng-mfb/mfb/src/_/_slidein.scss delete mode 100644 www/lib/ng-mfb/mfb/src/_/_zoomin.scss delete mode 100644 www/lib/ng-mfb/mfb/src/index.css delete mode 100644 www/lib/ng-mfb/mfb/src/lib/modernizr.touch.js delete mode 100644 www/lib/ng-mfb/mfb/src/mfb.css delete mode 100644 www/lib/ng-mfb/mfb/src/mfb.css.map delete mode 100644 www/lib/ng-mfb/mfb/src/mfb.js delete mode 100644 www/lib/ng-mfb/mfb/src/mfb.min.css delete mode 100644 www/lib/ng-mfb/mfb/src/mfb.min.js delete mode 100644 www/lib/ng-mfb/mfb/src/mfb.scss delete mode 100644 www/lib/ng-mfb/src/mfb-directive.js delete mode 100644 www/lib/ngCordova/.bower.json delete mode 100644 www/lib/ngCordova/CHANGELOG.md delete mode 100644 www/lib/ngCordova/LICENSE delete mode 100644 www/lib/ngCordova/README.md delete mode 100644 www/lib/ngCordova/bower.json delete mode 100644 www/lib/ngCordova/dist/ng-cordova-mocks.js delete mode 100644 www/lib/ngCordova/dist/ng-cordova-mocks.min.js delete mode 100644 www/lib/ngCordova/dist/ng-cordova.js delete mode 100644 www/lib/ngCordova/dist/ng-cordova.min.js delete mode 100644 www/lib/ngCordova/package.json delete mode 100644 www/lib/videogular-buffering/.bower.json delete mode 100644 www/lib/videogular-buffering/.gitignore delete mode 100644 www/lib/videogular-buffering/Gruntfile.js delete mode 100644 www/lib/videogular-buffering/LICENSE delete mode 100644 www/lib/videogular-buffering/README.md delete mode 100644 www/lib/videogular-buffering/bower.json delete mode 100644 www/lib/videogular-buffering/index.js delete mode 100644 www/lib/videogular-buffering/package.json delete mode 100644 www/lib/videogular-buffering/vg-buffering.js delete mode 100644 www/lib/videogular-buffering/vg-buffering.min.js delete mode 100644 www/lib/videogular-controls/.bower.json delete mode 100644 www/lib/videogular-controls/.gitignore delete mode 100644 www/lib/videogular-controls/Gruntfile.js delete mode 100644 www/lib/videogular-controls/LICENSE delete mode 100644 www/lib/videogular-controls/README.md delete mode 100644 www/lib/videogular-controls/bower.json delete mode 100644 www/lib/videogular-controls/index.js delete mode 100644 www/lib/videogular-controls/package.json delete mode 100644 www/lib/videogular-controls/vg-controls.js delete mode 100644 www/lib/videogular-controls/vg-controls.min.js delete mode 100644 www/lib/videogular-cuepoints/.bower.json delete mode 100644 www/lib/videogular-cuepoints/LICENSE delete mode 100644 www/lib/videogular-cuepoints/bower.json delete mode 100644 www/lib/videogular-cuepoints/cuepoints.css delete mode 100644 www/lib/videogular-cuepoints/cuepoints.js delete mode 100644 www/lib/videogular-overlay-play/.bower.json delete mode 100644 www/lib/videogular-overlay-play/.gitignore delete mode 100644 www/lib/videogular-overlay-play/Gruntfile.js delete mode 100644 www/lib/videogular-overlay-play/LICENSE delete mode 100644 www/lib/videogular-overlay-play/README.md delete mode 100644 www/lib/videogular-overlay-play/bower.json delete mode 100644 www/lib/videogular-overlay-play/index.js delete mode 100644 www/lib/videogular-overlay-play/package.json delete mode 100644 www/lib/videogular-overlay-play/vg-overlay-play.js delete mode 100644 www/lib/videogular-overlay-play/vg-overlay-play.min.js delete mode 100644 www/lib/videogular-themes-default/.bower.json delete mode 100644 www/lib/videogular-themes-default/.gitignore delete mode 100644 www/lib/videogular-themes-default/Gruntfile.js delete mode 100644 www/lib/videogular-themes-default/LICENSE delete mode 100644 www/lib/videogular-themes-default/README.md delete mode 100644 www/lib/videogular-themes-default/bower.json delete mode 100644 www/lib/videogular-themes-default/fonts/videogular.dev.svg delete mode 100644 www/lib/videogular-themes-default/fonts/videogular.eot delete mode 100644 www/lib/videogular-themes-default/fonts/videogular.svg delete mode 100644 www/lib/videogular-themes-default/fonts/videogular.ttf delete mode 100644 www/lib/videogular-themes-default/fonts/videogular.woff delete mode 100644 www/lib/videogular-themes-default/package.json delete mode 100644 www/lib/videogular-themes-default/videogular.css delete mode 100644 www/lib/videogular-themes-default/videogular.css.map delete mode 100644 www/lib/videogular-themes-default/videogular.min.css delete mode 100644 www/lib/videogular/.bower.json delete mode 100644 www/lib/videogular/.gitignore delete mode 100644 www/lib/videogular/Gruntfile.js delete mode 100644 www/lib/videogular/LICENSE delete mode 100644 www/lib/videogular/README.md delete mode 100644 www/lib/videogular/bower.json delete mode 100644 www/lib/videogular/index.js delete mode 100644 www/lib/videogular/package.json delete mode 100644 www/lib/videogular/videogular.js delete mode 100644 www/lib/videogular/videogular.min.js delete mode 100644 www/lib/vis/.bower.json delete mode 100644 www/lib/vis/CONTRIBUTING.md delete mode 100644 www/lib/vis/HISTORY.md delete mode 100644 www/lib/vis/LICENSE-APACHE-2.0 delete mode 100644 www/lib/vis/LICENSE-MIT delete mode 100644 www/lib/vis/NOTICE delete mode 100644 www/lib/vis/README.md delete mode 100644 www/lib/vis/bower.json delete mode 100644 www/lib/vis/dist/img/network/acceptDeleteIcon.png delete mode 100644 www/lib/vis/dist/img/network/addNodeIcon.png delete mode 100644 www/lib/vis/dist/img/network/backIcon.png delete mode 100644 www/lib/vis/dist/img/network/connectIcon.png delete mode 100644 www/lib/vis/dist/img/network/cross.png delete mode 100644 www/lib/vis/dist/img/network/cross2.png delete mode 100644 www/lib/vis/dist/img/network/deleteIcon.png delete mode 100644 www/lib/vis/dist/img/network/downArrow.png delete mode 100644 www/lib/vis/dist/img/network/editIcon.png delete mode 100644 www/lib/vis/dist/img/network/leftArrow.png delete mode 100644 www/lib/vis/dist/img/network/minus.png delete mode 100644 www/lib/vis/dist/img/network/plus.png delete mode 100644 www/lib/vis/dist/img/network/rightArrow.png delete mode 100644 www/lib/vis/dist/img/network/upArrow.png delete mode 100644 www/lib/vis/dist/img/network/zoomExtends.png delete mode 100644 www/lib/vis/dist/vis-graph3d.min.js delete mode 100644 www/lib/vis/dist/vis-network.min.css delete mode 100644 www/lib/vis/dist/vis-network.min.js delete mode 100644 www/lib/vis/dist/vis-timeline-graph2d.min.css delete mode 100644 www/lib/vis/dist/vis-timeline-graph2d.min.js delete mode 100644 www/lib/vis/dist/vis.css delete mode 100644 www/lib/vis/dist/vis.js delete mode 100644 www/lib/vis/dist/vis.min.css delete mode 100644 www/lib/vis/dist/vis.min.js delete mode 100644 www/lib/vis/docs/css/bootstrap-theme.css delete mode 100644 www/lib/vis/docs/css/bootstrap-theme.css.map delete mode 100644 www/lib/vis/docs/css/bootstrap-theme.min.css delete mode 100644 www/lib/vis/docs/css/bootstrap.css delete mode 100644 www/lib/vis/docs/css/bootstrap.css.map delete mode 100644 www/lib/vis/docs/css/bootstrap.min.css delete mode 100644 www/lib/vis/docs/css/carousel.css delete mode 100644 www/lib/vis/docs/css/prettify.css delete mode 100644 www/lib/vis/docs/css/style.css delete mode 100755 www/lib/vis/docs/css/tipuesearch.css delete mode 100644 www/lib/vis/docs/data/dataset.html delete mode 100644 www/lib/vis/docs/data/dataview.html delete mode 100644 www/lib/vis/docs/data/index.html delete mode 100644 www/lib/vis/docs/fonts/glyphicons-halflings-regular.eot delete mode 100644 www/lib/vis/docs/fonts/glyphicons-halflings-regular.svg delete mode 100644 www/lib/vis/docs/fonts/glyphicons-halflings-regular.ttf delete mode 100644 www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff delete mode 100644 www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 www/lib/vis/docs/graph2d/index.html delete mode 100644 www/lib/vis/docs/graph3d/index.html delete mode 100644 www/lib/vis/docs/img/arrow.svg delete mode 100644 www/lib/vis/docs/img/crossword.png delete mode 100644 www/lib/vis/docs/img/crosswordStrong.png delete mode 100644 www/lib/vis/docs/img/external-link-icons/external-link-icon-white.png delete mode 100644 www/lib/vis/docs/img/external-link-icons/external-link-icon.png delete mode 100644 www/lib/vis/docs/img/external-link-icons/license.txt delete mode 100644 www/lib/vis/docs/img/graph/graph.png delete mode 100644 www/lib/vis/docs/img/graph/graph120x60.png delete mode 100644 www/lib/vis/docs/img/graph3d.png delete mode 100644 www/lib/vis/docs/img/graph3d120x60.png delete mode 100644 www/lib/vis/docs/img/timeline/timeline.png delete mode 100644 www/lib/vis/docs/img/timeline/timeline120x60.png delete mode 100644 www/lib/vis/docs/img/vis_overview.odg delete mode 100644 www/lib/vis/docs/img/vis_overview.png delete mode 100644 www/lib/vis/docs/index.html delete mode 100644 www/lib/vis/docs/js/bootstrap.js delete mode 100644 www/lib/vis/docs/js/bootstrap.min.js delete mode 100644 www/lib/vis/docs/js/docs.min.js delete mode 100644 www/lib/vis/docs/js/googleAnalytics.js delete mode 100644 www/lib/vis/docs/js/ie-emulation-modes-warning.js delete mode 100644 www/lib/vis/docs/js/ie10-viewport-bug-workaround.js delete mode 100644 www/lib/vis/docs/js/jquery.highlight.js delete mode 100644 www/lib/vis/docs/js/jquery.min.js delete mode 100644 www/lib/vis/docs/js/jquery.url.min.js delete mode 100644 www/lib/vis/docs/js/main.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-apollo.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-css.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-hs.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-lisp.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-lua.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-ml.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-proto.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-scala.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-sql.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-vb.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-vhdl.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-wiki.js delete mode 100644 www/lib/vis/docs/js/prettify/lang-yaml.js delete mode 100644 www/lib/vis/docs/js/prettify/prettify.css delete mode 100644 www/lib/vis/docs/js/prettify/prettify.js delete mode 100644 www/lib/vis/docs/js/smooth-scroll.min.js delete mode 100644 www/lib/vis/docs/js/tipuesearch.config.js delete mode 100644 www/lib/vis/docs/js/tipuesearch.js delete mode 100644 www/lib/vis/docs/js/tipuesearch.min.js delete mode 100644 www/lib/vis/docs/js/toggleTable.js delete mode 100644 www/lib/vis/docs/network/configure.html delete mode 100644 www/lib/vis/docs/network/edges.html delete mode 100644 www/lib/vis/docs/network/groups.html delete mode 100644 www/lib/vis/docs/network/index.html delete mode 100644 www/lib/vis/docs/network/interaction.html delete mode 100644 www/lib/vis/docs/network/layout.html delete mode 100644 www/lib/vis/docs/network/manipulation.html delete mode 100644 www/lib/vis/docs/network/nodes.html delete mode 100644 www/lib/vis/docs/network/physics.html delete mode 100644 www/lib/vis/docs/timeline/index.html delete mode 100644 www/lib/vis/examples/googleAnalytics.js delete mode 100644 www/lib/vis/examples/graph2d/01_basic.html delete mode 100644 www/lib/vis/examples/graph2d/02_bars.html delete mode 100644 www/lib/vis/examples/graph2d/03_groups.html delete mode 100644 www/lib/vis/examples/graph2d/04_rightAxis.html delete mode 100644 www/lib/vis/examples/graph2d/05_bothAxis.html delete mode 100644 www/lib/vis/examples/graph2d/06_interpolation.html delete mode 100644 www/lib/vis/examples/graph2d/07_scrollingAndSorting.html delete mode 100644 www/lib/vis/examples/graph2d/08_performance.html delete mode 100644 www/lib/vis/examples/graph2d/09_external_legend.html delete mode 100644 www/lib/vis/examples/graph2d/10_barsSideBySide.html delete mode 100644 www/lib/vis/examples/graph2d/11_barsSideBySideGroups.html delete mode 100644 www/lib/vis/examples/graph2d/12_customRange.html delete mode 100644 www/lib/vis/examples/graph2d/13_localization.html delete mode 100644 www/lib/vis/examples/graph2d/14_toggleGroups.html delete mode 100644 www/lib/vis/examples/graph2d/15_streaming_data.html delete mode 100644 www/lib/vis/examples/graph2d/16_bothAxisTitles.html delete mode 100644 www/lib/vis/examples/graph2d/17_dynamicStyling.html delete mode 100644 www/lib/vis/examples/graph2d/18_scatterplot.html delete mode 100644 www/lib/vis/examples/graph2d/19_labels.html delete mode 100644 www/lib/vis/examples/graph2d/20_shading.html delete mode 100644 www/lib/vis/examples/graph2d/default.css delete mode 100644 www/lib/vis/examples/graph3d/01_basics.html delete mode 100644 www/lib/vis/examples/graph3d/02_camera.html delete mode 100644 www/lib/vis/examples/graph3d/03_filter_data.html delete mode 100644 www/lib/vis/examples/graph3d/04_animation.html delete mode 100644 www/lib/vis/examples/graph3d/05_line.html delete mode 100644 www/lib/vis/examples/graph3d/06_moving_dots.html delete mode 100644 www/lib/vis/examples/graph3d/07_dot_cloud_colors.html delete mode 100644 www/lib/vis/examples/graph3d/08_dot_cloud_size.html delete mode 100644 www/lib/vis/examples/graph3d/09_mobile.html delete mode 100644 www/lib/vis/examples/graph3d/10_styling.html delete mode 100644 www/lib/vis/examples/graph3d/11_tooltips.html delete mode 100644 www/lib/vis/examples/graph3d/12_custom_labels.html delete mode 100644 www/lib/vis/examples/graph3d/default.css delete mode 100644 www/lib/vis/examples/graph3d/playground/csv2array.js delete mode 100644 www/lib/vis/examples/graph3d/playground/csv2datatable.html delete mode 100644 www/lib/vis/examples/graph3d/playground/datasource.html delete mode 100644 www/lib/vis/examples/graph3d/playground/datasource.php delete mode 100644 www/lib/vis/examples/graph3d/playground/index.html delete mode 100644 www/lib/vis/examples/graph3d/playground/playground.css delete mode 100644 www/lib/vis/examples/graph3d/playground/playground.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-css.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/prettify.css delete mode 100644 www/lib/vis/examples/graph3d/playground/prettify/prettify.js delete mode 100644 www/lib/vis/examples/network/basicUsage.html delete mode 100644 www/lib/vis/examples/network/data/datasets.html delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/data/cellular_automata.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/data/computer_network.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/data/simple.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/dotLanguage.html delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/dotPlayground.html delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/fsm.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/hello.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/process.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/fsm.png delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/hello.png delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/softmaint.png delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/traffic_lights.png delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/siblings.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/softmaint.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/traffic_lights.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/transparency.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/twopi2.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/unix.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/world.gv.txt delete mode 100644 www/lib/vis/examples/network/data/dynamicData.html delete mode 100644 www/lib/vis/examples/network/data/importingFromGephi.html delete mode 100644 www/lib/vis/examples/network/data/scalingCustom.html delete mode 100644 www/lib/vis/examples/network/data/scalingNodesEdges.html delete mode 100644 www/lib/vis/examples/network/data/scalingNodesEdgesLabels.html delete mode 100644 www/lib/vis/examples/network/datasources/WorldCup2014.js delete mode 100644 www/lib/vis/examples/network/datasources/WorldCup2014.json delete mode 100644 www/lib/vis/examples/network/datasources/largeHierarchicalDataset.js delete mode 100644 www/lib/vis/examples/network/edgeStyles/arrowTypes.html delete mode 100644 www/lib/vis/examples/network/edgeStyles/arrows.html delete mode 100644 www/lib/vis/examples/network/edgeStyles/colors.html delete mode 100644 www/lib/vis/examples/network/edgeStyles/dashes.html delete mode 100644 www/lib/vis/examples/network/edgeStyles/smooth.html delete mode 100644 www/lib/vis/examples/network/edgeStyles/smoothWorldCup.html delete mode 100644 www/lib/vis/examples/network/events/interactionEvents.html delete mode 100644 www/lib/vis/examples/network/events/physicsEvents.html delete mode 100644 www/lib/vis/examples/network/events/renderEvents.html delete mode 100644 www/lib/vis/examples/network/exampleApplications/disassemblerExample.html delete mode 100644 www/lib/vis/examples/network/exampleApplications/lesMiserables.html delete mode 100644 www/lib/vis/examples/network/exampleApplications/loadingBar.html delete mode 100644 www/lib/vis/examples/network/exampleApplications/neighbourhoodHighlight.html delete mode 100644 www/lib/vis/examples/network/exampleApplications/nodeLegend.html delete mode 100644 www/lib/vis/examples/network/exampleApplications/worldCupPerformance.html delete mode 100644 www/lib/vis/examples/network/exampleUtil.js delete mode 100644 www/lib/vis/examples/network/img/indonesia/1.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/10.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/11.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/12.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/13.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/14.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/2.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/3.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/4.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/5.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/6.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/7.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/8.png delete mode 100644 www/lib/vis/examples/network/img/indonesia/9.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-Fax-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-Laptop-1-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-Mobile-Phone-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Computer-3-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-02-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-04-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-05-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Phone-Picture-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Hardware-Printer-Blue-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Misc-Scanner-default-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Network-Drive-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Network-Internet-Connection-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/Network-Pipe-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/System-Firewall-2-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/System-Globe-icon.png delete mode 100644 www/lib/vis/examples/network/img/refresh-cl/license.txt delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon24.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon32.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon48.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon24.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon32.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon48.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon24.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon32.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon48.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon64.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Angry-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Grin-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Blue-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Green-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Blue-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Green-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Red-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Executive-Green-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Blue-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Red-icon.png delete mode 100644 www/lib/vis/examples/network/img/soft-scraps-icons/license.txt delete mode 100644 www/lib/vis/examples/network/labels/labelAlignment.html delete mode 100644 www/lib/vis/examples/network/labels/labelBackground.html delete mode 100644 www/lib/vis/examples/network/labels/labelColorAndSize.html delete mode 100644 www/lib/vis/examples/network/labels/labelStroke.html delete mode 100644 www/lib/vis/examples/network/labels/multilineText.html delete mode 100644 www/lib/vis/examples/network/layout/hierarchicalLayout.html delete mode 100644 www/lib/vis/examples/network/layout/hierarchicalLayoutMethods.html delete mode 100644 www/lib/vis/examples/network/layout/hierarchicalLayoutUserdefined.html delete mode 100644 www/lib/vis/examples/network/layout/hierarchicalLayoutWithoutPhysics.html delete mode 100644 www/lib/vis/examples/network/layout/randomSeed.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/HTMLInNodes.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/circularImages.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/colors.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/customGroups.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/groups.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/icons.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/images.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/imagesWithBorders.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/shadows.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/shapes.html delete mode 100644 www/lib/vis/examples/network/nodeStyles/shapesWithDashedBorders.html delete mode 100644 www/lib/vis/examples/network/other/animationShowcase.html delete mode 100644 www/lib/vis/examples/network/other/changingClusteredEdgesNodes.html delete mode 100644 www/lib/vis/examples/network/other/clustering.html delete mode 100644 www/lib/vis/examples/network/other/clusteringByZoom.html delete mode 100644 www/lib/vis/examples/network/other/clustersOfclusters.html delete mode 100644 www/lib/vis/examples/network/other/configuration.html delete mode 100644 www/lib/vis/examples/network/other/manipulation.html delete mode 100644 www/lib/vis/examples/network/other/navigation.html delete mode 100644 www/lib/vis/examples/network/other/performance.html delete mode 100644 www/lib/vis/examples/network/other/saveAndLoad.html delete mode 100644 www/lib/vis/examples/network/physics/physicsConfiguration.html delete mode 100644 www/lib/vis/examples/timeline/basicUsage.html delete mode 100644 www/lib/vis/examples/timeline/dataHandling/dataSerialization.html delete mode 100644 www/lib/vis/examples/timeline/dataHandling/loadExternalData.html delete mode 100644 www/lib/vis/examples/timeline/editing/customSnappingOfItems.html delete mode 100644 www/lib/vis/examples/timeline/editing/editingItems.html delete mode 100644 www/lib/vis/examples/timeline/editing/editingItemsCallbacks.html delete mode 100644 www/lib/vis/examples/timeline/editing/individualEditableItems.html delete mode 100644 www/lib/vis/examples/timeline/editing/tooltipOnItemChange.html delete mode 100644 www/lib/vis/examples/timeline/editing/updateDataOnEvent.html delete mode 100644 www/lib/vis/examples/timeline/groups/groups.html delete mode 100644 www/lib/vis/examples/timeline/groups/groupsEditable.html delete mode 100644 www/lib/vis/examples/timeline/groups/groupsOrdering.html delete mode 100644 www/lib/vis/examples/timeline/groups/subgroups.html delete mode 100644 www/lib/vis/examples/timeline/groups/verticalItemsHide.html delete mode 100644 www/lib/vis/examples/timeline/interaction/animateWindow.html delete mode 100644 www/lib/vis/examples/timeline/interaction/clickToUse.html delete mode 100644 www/lib/vis/examples/timeline/interaction/eventListeners.html delete mode 100644 www/lib/vis/examples/timeline/interaction/limitMoveAndZoom.html delete mode 100755 www/lib/vis/examples/timeline/interaction/navigationMenu.html delete mode 100644 www/lib/vis/examples/timeline/interaction/setSelection.html delete mode 100644 www/lib/vis/examples/timeline/items/backgroundAreas.html delete mode 100644 www/lib/vis/examples/timeline/items/backgroundAreasWithGroups.html delete mode 100644 www/lib/vis/examples/timeline/items/htmlContents.html delete mode 100644 www/lib/vis/examples/timeline/items/itemOrdering.html delete mode 100755 www/lib/vis/examples/timeline/items/pointItems.html delete mode 100644 www/lib/vis/examples/timeline/items/rangeOverflowItem.html delete mode 100644 www/lib/vis/examples/timeline/other/customTimeBars.html delete mode 100644 www/lib/vis/examples/timeline/other/dataAttributes.html delete mode 100644 www/lib/vis/examples/timeline/other/dataAttributesAll.html delete mode 100644 www/lib/vis/examples/timeline/other/drag&drop.html delete mode 100644 www/lib/vis/examples/timeline/other/functionLabelFormats.html delete mode 100644 www/lib/vis/examples/timeline/other/groupsPerformance.html delete mode 100644 www/lib/vis/examples/timeline/other/hidingPeriods.html delete mode 100644 www/lib/vis/examples/timeline/other/horizontalScroll.html delete mode 100644 www/lib/vis/examples/timeline/other/localization.html delete mode 100644 www/lib/vis/examples/timeline/other/performance.html delete mode 100644 www/lib/vis/examples/timeline/other/requirejs/requirejs_example.html delete mode 100644 www/lib/vis/examples/timeline/other/requirejs/scripts/main.js delete mode 100644 www/lib/vis/examples/timeline/other/requirejs/scripts/require.js delete mode 100644 www/lib/vis/examples/timeline/other/rtl.html delete mode 100644 www/lib/vis/examples/timeline/other/timezone.html delete mode 100644 www/lib/vis/examples/timeline/other/usingReact.html delete mode 100644 www/lib/vis/examples/timeline/other/verticalScroll.html delete mode 100644 www/lib/vis/examples/timeline/resources/data/basic.json delete mode 100644 www/lib/vis/examples/timeline/resources/data/wk2014.json delete mode 100644 www/lib/vis/examples/timeline/resources/img/Hardware-Mobile-Phone-icon.png delete mode 100755 www/lib/vis/examples/timeline/resources/img/attachment-icon.png delete mode 100755 www/lib/vis/examples/timeline/resources/img/blog-post-edit-icon.png delete mode 100755 www/lib/vis/examples/timeline/resources/img/comments-icon.png delete mode 100755 www/lib/vis/examples/timeline/resources/img/community-users-icon.png delete mode 100644 www/lib/vis/examples/timeline/resources/img/license.txt delete mode 100644 www/lib/vis/examples/timeline/resources/img/license_aesthetica-2.txt delete mode 100644 www/lib/vis/examples/timeline/resources/img/license_refresh-cl.txt delete mode 100755 www/lib/vis/examples/timeline/resources/img/mail-icon.png delete mode 100755 www/lib/vis/examples/timeline/resources/img/notes-edit-icon.png delete mode 100644 www/lib/vis/examples/timeline/resources/img/product-icon.png delete mode 100644 www/lib/vis/examples/timeline/resources/img/truck-icon.png delete mode 100644 www/lib/vis/examples/timeline/styling/axisOrientation.html delete mode 100644 www/lib/vis/examples/timeline/styling/customCss.html delete mode 100644 www/lib/vis/examples/timeline/styling/gridStyling.html delete mode 100755 www/lib/vis/examples/timeline/styling/itemClassNames.html delete mode 100644 www/lib/vis/examples/timeline/styling/itemTemplates.html (limited to 'www') diff --git a/www/lib/angular-animate/.bower.json b/www/lib/angular-animate/.bower.json deleted file mode 100644 index df96d342..00000000 --- a/www/lib/angular-animate/.bower.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "angular-animate", - "version": "1.4.3", - "main": "./angular-animate.js", - "ignore": [], - "dependencies": { - "angular": "1.4.3" - }, - "homepage": "https://github.com/angular/bower-angular-animate", - "_release": "1.4.3", - "_resolution": { - "type": "version", - "tag": "v1.4.3", - "commit": "4ce2a76359401102d2e0146ccf69e6c060799ff8" - }, - "_source": "git://github.com/angular/bower-angular-animate.git", - "_target": "1.4.3", - "_originalSource": "angular-animate" -} \ No newline at end of file diff --git a/www/lib/angular-animate/README.md b/www/lib/angular-animate/README.md deleted file mode 100644 index 8313da67..00000000 --- a/www/lib/angular-animate/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# packaged angular-animate - -This repo is for distribution on `npm` and `bower`. The source for this module is in the -[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate). -Please file issues and pull requests against that repo. - -## Install - -You can install this package either with `npm` or with `bower`. - -### npm - -```shell -npm install angular-animate -``` - -Then add `ngAnimate` as a dependency for your app: - -```javascript -angular.module('myApp', [require('angular-animate')]); -``` - -### bower - -```shell -bower install angular-animate -``` - -Then add a ` -``` - -Then add `ngAnimate` as a dependency for your app: - -```javascript -angular.module('myApp', ['ngAnimate']); -``` - -## Documentation - -Documentation is available on the -[AngularJS docs site](http://docs.angularjs.org/api/ngAnimate). - -## License - -The MIT License - -Copyright (c) 2010-2015 Google, Inc. http://angularjs.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/www/lib/angular-animate/angular-animate.js b/www/lib/angular-animate/angular-animate.js deleted file mode 100644 index fc0e217f..00000000 --- a/www/lib/angular-animate/angular-animate.js +++ /dev/null @@ -1,3721 +0,0 @@ -/** - * @license AngularJS v1.4.3 - * (c) 2010-2015 Google, Inc. http://angularjs.org - * License: MIT - */ -(function(window, angular, undefined) {'use strict'; - -/* jshint ignore:start */ -var noop = angular.noop; -var extend = angular.extend; -var jqLite = angular.element; -var forEach = angular.forEach; -var isArray = angular.isArray; -var isString = angular.isString; -var isObject = angular.isObject; -var isUndefined = angular.isUndefined; -var isDefined = angular.isDefined; -var isFunction = angular.isFunction; -var isElement = angular.isElement; - -var ELEMENT_NODE = 1; -var COMMENT_NODE = 8; - -var NG_ANIMATE_CLASSNAME = 'ng-animate'; -var NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren'; - -var isPromiseLike = function(p) { - return p && p.then ? true : false; -} - -function assertArg(arg, name, reason) { - if (!arg) { - throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required")); - } - return arg; -} - -function mergeClasses(a,b) { - if (!a && !b) return ''; - if (!a) return b; - if (!b) return a; - if (isArray(a)) a = a.join(' '); - if (isArray(b)) b = b.join(' '); - return a + ' ' + b; -} - -function packageStyles(options) { - var styles = {}; - if (options && (options.to || options.from)) { - styles.to = options.to; - styles.from = options.from; - } - return styles; -} - -function pendClasses(classes, fix, isPrefix) { - var className = ''; - classes = isArray(classes) - ? classes - : classes && isString(classes) && classes.length - ? classes.split(/\s+/) - : []; - forEach(classes, function(klass, i) { - if (klass && klass.length > 0) { - className += (i > 0) ? ' ' : ''; - className += isPrefix ? fix + klass - : klass + fix; - } - }); - return className; -} - -function removeFromArray(arr, val) { - var index = arr.indexOf(val); - if (val >= 0) { - arr.splice(index, 1); - } -} - -function stripCommentsFromElement(element) { - if (element instanceof jqLite) { - switch (element.length) { - case 0: - return []; - break; - - case 1: - // there is no point of stripping anything if the element - // is the only element within the jqLite wrapper. - // (it's important that we retain the element instance.) - if (element[0].nodeType === ELEMENT_NODE) { - return element; - } - break; - - default: - return jqLite(extractElementNode(element)); - break; - } - } - - if (element.nodeType === ELEMENT_NODE) { - return jqLite(element); - } -} - -function extractElementNode(element) { - if (!element[0]) return element; - for (var i = 0; i < element.length; i++) { - var elm = element[i]; - if (elm.nodeType == ELEMENT_NODE) { - return elm; - } - } -} - -function $$addClass($$jqLite, element, className) { - forEach(element, function(elm) { - $$jqLite.addClass(elm, className); - }); -} - -function $$removeClass($$jqLite, element, className) { - forEach(element, function(elm) { - $$jqLite.removeClass(elm, className); - }); -} - -function applyAnimationClassesFactory($$jqLite) { - return function(element, options) { - if (options.addClass) { - $$addClass($$jqLite, element, options.addClass); - options.addClass = null; - } - if (options.removeClass) { - $$removeClass($$jqLite, element, options.removeClass); - options.removeClass = null; - } - } -} - -function prepareAnimationOptions(options) { - options = options || {}; - if (!options.$$prepared) { - var domOperation = options.domOperation || noop; - options.domOperation = function() { - options.$$domOperationFired = true; - domOperation(); - domOperation = noop; - }; - options.$$prepared = true; - } - return options; -} - -function applyAnimationStyles(element, options) { - applyAnimationFromStyles(element, options); - applyAnimationToStyles(element, options); -} - -function applyAnimationFromStyles(element, options) { - if (options.from) { - element.css(options.from); - options.from = null; - } -} - -function applyAnimationToStyles(element, options) { - if (options.to) { - element.css(options.to); - options.to = null; - } -} - -function mergeAnimationOptions(element, target, newOptions) { - var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || ''); - var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || ''); - var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove); - - extend(target, newOptions); - - if (classes.addClass) { - target.addClass = classes.addClass; - } else { - target.addClass = null; - } - - if (classes.removeClass) { - target.removeClass = classes.removeClass; - } else { - target.removeClass = null; - } - - return target; -} - -function resolveElementClasses(existing, toAdd, toRemove) { - var ADD_CLASS = 1; - var REMOVE_CLASS = -1; - - var flags = {}; - existing = splitClassesToLookup(existing); - - toAdd = splitClassesToLookup(toAdd); - forEach(toAdd, function(value, key) { - flags[key] = ADD_CLASS; - }); - - toRemove = splitClassesToLookup(toRemove); - forEach(toRemove, function(value, key) { - flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS; - }); - - var classes = { - addClass: '', - removeClass: '' - }; - - forEach(flags, function(val, klass) { - var prop, allow; - if (val === ADD_CLASS) { - prop = 'addClass'; - allow = !existing[klass]; - } else if (val === REMOVE_CLASS) { - prop = 'removeClass'; - allow = existing[klass]; - } - if (allow) { - if (classes[prop].length) { - classes[prop] += ' '; - } - classes[prop] += klass; - } - }); - - function splitClassesToLookup(classes) { - if (isString(classes)) { - classes = classes.split(' '); - } - - var obj = {}; - forEach(classes, function(klass) { - // sometimes the split leaves empty string values - // incase extra spaces were applied to the options - if (klass.length) { - obj[klass] = true; - } - }); - return obj; - } - - return classes; -} - -function getDomNode(element) { - return (element instanceof angular.element) ? element[0] : element; -} - -var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) { - var tickQueue = []; - var cancelFn; - - function scheduler(tasks) { - // we make a copy since RAFScheduler mutates the state - // of the passed in array variable and this would be difficult - // to track down on the outside code - tickQueue.push([].concat(tasks)); - nextTick(); - } - - /* waitUntilQuiet does two things: - * 1. It will run the FINAL `fn` value only when an uncancelled RAF has passed through - * 2. It will delay the next wave of tasks from running until the quiet `fn` has run. - * - * The motivation here is that animation code can request more time from the scheduler - * before the next wave runs. This allows for certain DOM properties such as classes to - * be resolved in time for the next animation to run. - */ - scheduler.waitUntilQuiet = function(fn) { - if (cancelFn) cancelFn(); - - cancelFn = $$rAF(function() { - cancelFn = null; - fn(); - nextTick(); - }); - }; - - return scheduler; - - function nextTick() { - if (!tickQueue.length) return; - - var updatedQueue = []; - for (var i = 0; i < tickQueue.length; i++) { - var innerQueue = tickQueue[i]; - runNextTask(innerQueue); - if (innerQueue.length) { - updatedQueue.push(innerQueue); - } - } - tickQueue = updatedQueue; - - if (!cancelFn) { - $$rAF(function() { - if (!cancelFn) nextTick(); - }); - } - } - - function runNextTask(tasks) { - var nextTask = tasks.shift(); - nextTask(); - } -}]; - -var $$AnimateChildrenDirective = [function() { - return function(scope, element, attrs) { - var val = attrs.ngAnimateChildren; - if (angular.isString(val) && val.length === 0) { //empty attribute - element.data(NG_ANIMATE_CHILDREN_DATA, true); - } else { - attrs.$observe('ngAnimateChildren', function(value) { - value = value === 'on' || value === 'true'; - element.data(NG_ANIMATE_CHILDREN_DATA, value); - }); - } - }; -}]; - -/** - * @ngdoc service - * @name $animateCss - * @kind object - * - * @description - * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes - * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT - * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or - * directives to create more complex animations that can be purely driven using CSS code. - * - * Note that only browsers that support CSS transitions and/or keyframe animations are capable of - * rendering animations triggered via `$animateCss` (bad news for IE9 and lower). - * - * ## Usage - * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that - * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however, - * any automatic control over cancelling animations and/or preventing animations from being run on - * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to - * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger - * the CSS animation. - * - * The example below shows how we can create a folding animation on an element using `ng-if`: - * - * ```html - * - *
- * This element will go BOOM - *
- * - * ``` - * - * Now we create the **JavaScript animation** that will trigger the CSS transition: - * - * ```js - * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { - * return { - * enter: function(element, doneFn) { - * var height = element[0].offsetHeight; - * return $animateCss(element, { - * from: { height:'0px' }, - * to: { height:height + 'px' }, - * duration: 1 // one second - * }); - * } - * } - * }]); - * ``` - * - * ## More Advanced Uses - * - * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks - * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code. - * - * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation, - * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with - * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order - * to provide a working animation that will run in CSS. - * - * The example below showcases a more advanced version of the `.fold-animation` from the example above: - * - * ```js - * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { - * return { - * enter: function(element, doneFn) { - * var height = element[0].offsetHeight; - * return $animateCss(element, { - * addClass: 'red large-text pulse-twice', - * easing: 'ease-out', - * from: { height:'0px' }, - * to: { height:height + 'px' }, - * duration: 1 // one second - * }); - * } - * } - * }]); - * ``` - * - * Since we're adding/removing CSS classes then the CSS transition will also pick those up: - * - * ```css - * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code, - * the CSS classes below will be transitioned despite them being defined as regular CSS classes */ - * .red { background:red; } - * .large-text { font-size:20px; } - * - * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */ - * .pulse-twice { - * animation: 0.5s pulse linear 2; - * -webkit-animation: 0.5s pulse linear 2; - * } - * - * @keyframes pulse { - * from { transform: scale(0.5); } - * to { transform: scale(1.5); } - * } - * - * @-webkit-keyframes pulse { - * from { -webkit-transform: scale(0.5); } - * to { -webkit-transform: scale(1.5); } - * } - * ``` - * - * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen. - * - * ## How the Options are handled - * - * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation - * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline - * styles using the `from` and `to` properties. - * - * ```js - * var animator = $animateCss(element, { - * from: { background:'red' }, - * to: { background:'blue' } - * }); - * animator.start(); - * ``` - * - * ```css - * .rotating-animation { - * animation:0.5s rotate linear; - * -webkit-animation:0.5s rotate linear; - * } - * - * @keyframes rotate { - * from { transform: rotate(0deg); } - * to { transform: rotate(360deg); } - * } - * - * @-webkit-keyframes rotate { - * from { -webkit-transform: rotate(0deg); } - * to { -webkit-transform: rotate(360deg); } - * } - * ``` - * - * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is - * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition - * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition - * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied - * and spread across the transition and keyframe animation. - * - * ## What is returned - * - * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually - * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are - * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties: - * - * ```js - * var animator = $animateCss(element, { ... }); - * ``` - * - * Now what do the contents of our `animator` variable look like: - * - * ```js - * { - * // starts the animation - * start: Function, - * - * // ends (aborts) the animation - * end: Function - * } - * ``` - * - * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends. - * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and stlyes may have been - * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties - * and that changing them will not reconfigure the parameters of the animation. - * - * ### runner.done() vs runner.then() - * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the - * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**. - * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()` - * unless you really need a digest to kick off afterwards. - * - * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss - * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code). - * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works. - * - * @param {DOMElement} element the element that will be animated - * @param {object} options the animation-related options that will be applied during the animation - * - * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied - * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.) - * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both). - * * `transition` - The raw CSS transition style that will be used (e.g. `1s linear all`). - * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`). - * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation. - * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition. - * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation. - * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation. - * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0` - * is provided then the animation will be skipped entirely. - * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is - * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value - * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same - * CSS delay value. - * * `stagger` - A numeric time value representing the delay between successively animated elements - * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.}) - * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a - * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`) - * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occuring on the classes being added and removed.) - * - * @return {object} an object with start and end methods and details about the animation. - * - * * `start` - The method to start the animation. This will return a `Promise` when called. - * * `end` - This method will cancel the animation and remove all applied CSS classes and styles. - */ - -// Detect proper transitionend/animationend event names. -var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; - -// If unprefixed events are not supported but webkit-prefixed are, use the latter. -// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. -// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` -// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. -// Register both events in case `window.onanimationend` is not supported because of that, -// do the same for `transitionend` as Safari is likely to exhibit similar behavior. -// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit -// therefore there is no reason to test anymore for other vendor prefixes: -// http://caniuse.com/#search=transition -if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) { - CSS_PREFIX = '-webkit-'; - TRANSITION_PROP = 'WebkitTransition'; - TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; -} else { - TRANSITION_PROP = 'transition'; - TRANSITIONEND_EVENT = 'transitionend'; -} - -if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) { - CSS_PREFIX = '-webkit-'; - ANIMATION_PROP = 'WebkitAnimation'; - ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; -} else { - ANIMATION_PROP = 'animation'; - ANIMATIONEND_EVENT = 'animationend'; -} - -var DURATION_KEY = 'Duration'; -var PROPERTY_KEY = 'Property'; -var DELAY_KEY = 'Delay'; -var TIMING_KEY = 'TimingFunction'; -var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; -var ANIMATION_PLAYSTATE_KEY = 'PlayState'; -var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; -var CLOSING_TIME_BUFFER = 1.5; -var ONE_SECOND = 1000; -var BASE_TEN = 10; - -var SAFE_FAST_FORWARD_DURATION_VALUE = 9999; - -var ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY; -var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY; - -var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY; -var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY; - -var DETECT_CSS_PROPERTIES = { - transitionDuration: TRANSITION_DURATION_PROP, - transitionDelay: TRANSITION_DELAY_PROP, - transitionProperty: TRANSITION_PROP + PROPERTY_KEY, - animationDuration: ANIMATION_DURATION_PROP, - animationDelay: ANIMATION_DELAY_PROP, - animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY -}; - -var DETECT_STAGGER_CSS_PROPERTIES = { - transitionDuration: TRANSITION_DURATION_PROP, - transitionDelay: TRANSITION_DELAY_PROP, - animationDuration: ANIMATION_DURATION_PROP, - animationDelay: ANIMATION_DELAY_PROP -}; - -function computeCssStyles($window, element, properties) { - var styles = Object.create(null); - var detectedStyles = $window.getComputedStyle(element) || {}; - forEach(properties, function(formalStyleName, actualStyleName) { - var val = detectedStyles[formalStyleName]; - if (val) { - var c = val.charAt(0); - - // only numerical-based values have a negative sign or digit as the first value - if (c === '-' || c === '+' || c >= 0) { - val = parseMaxTime(val); - } - - // by setting this to null in the event that the delay is not set or is set directly as 0 - // then we can still allow for zegative values to be used later on and not mistake this - // value for being greater than any other negative value. - if (val === 0) { - val = null; - } - styles[actualStyleName] = val; - } - }); - - return styles; -} - -function parseMaxTime(str) { - var maxValue = 0; - var values = str.split(/\s*,\s*/); - forEach(values, function(value) { - // it's always safe to consider only second values and omit `ms` values since - // getComputedStyle will always handle the conversion for us - if (value.charAt(value.length - 1) == 's') { - value = value.substring(0, value.length - 1); - } - value = parseFloat(value) || 0; - maxValue = maxValue ? Math.max(value, maxValue) : value; - }); - return maxValue; -} - -function truthyTimingValue(val) { - return val === 0 || val != null; -} - -function getCssTransitionDurationStyle(duration, applyOnlyDuration) { - var style = TRANSITION_PROP; - var value = duration + 's'; - if (applyOnlyDuration) { - style += DURATION_KEY; - } else { - value += ' linear all'; - } - return [style, value]; -} - -function getCssKeyframeDurationStyle(duration) { - return [ANIMATION_DURATION_PROP, duration + 's']; -} - -function getCssDelayStyle(delay, isKeyframeAnimation) { - var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP; - return [prop, delay + 's']; -} - -function blockTransitions(node, duration) { - // we use a negative delay value since it performs blocking - // yet it doesn't kill any existing transitions running on the - // same element which makes this safe for class-based animations - var value = duration ? '-' + duration + 's' : ''; - applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]); - return [TRANSITION_DELAY_PROP, value]; -} - -function blockKeyframeAnimations(node, applyBlock) { - var value = applyBlock ? 'paused' : ''; - var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY; - applyInlineStyle(node, [key, value]); - return [key, value]; -} - -function applyInlineStyle(node, styleTuple) { - var prop = styleTuple[0]; - var value = styleTuple[1]; - node.style[prop] = value; -} - -function createLocalCacheLookup() { - var cache = Object.create(null); - return { - flush: function() { - cache = Object.create(null); - }, - - count: function(key) { - var entry = cache[key]; - return entry ? entry.total : 0; - }, - - get: function(key) { - var entry = cache[key]; - return entry && entry.value; - }, - - put: function(key, value) { - if (!cache[key]) { - cache[key] = { total: 1, value: value }; - } else { - cache[key].total++; - } - } - }; -} - -var $AnimateCssProvider = ['$animateProvider', function($animateProvider) { - var gcsLookup = createLocalCacheLookup(); - var gcsStaggerLookup = createLocalCacheLookup(); - - this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', - '$document', '$sniffer', '$$rAFScheduler', - function($window, $$jqLite, $$AnimateRunner, $timeout, - $document, $sniffer, $$rAFScheduler) { - - var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); - - var parentCounter = 0; - function gcsHashFn(node, extraClasses) { - var KEY = "$$ngAnimateParentKey"; - var parentNode = node.parentNode; - var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter); - return parentID + '-' + node.getAttribute('class') + '-' + extraClasses; - } - - function computeCachedCssStyles(node, className, cacheKey, properties) { - var timings = gcsLookup.get(cacheKey); - - if (!timings) { - timings = computeCssStyles($window, node, properties); - if (timings.animationIterationCount === 'infinite') { - timings.animationIterationCount = 1; - } - } - - // we keep putting this in multiple times even though the value and the cacheKey are the same - // because we're keeping an interal tally of how many duplicate animations are detected. - gcsLookup.put(cacheKey, timings); - return timings; - } - - function computeCachedCssStaggerStyles(node, className, cacheKey, properties) { - var stagger; - - // if we have one or more existing matches of matching elements - // containing the same parent + CSS styles (which is how cacheKey works) - // then staggering is possible - if (gcsLookup.count(cacheKey) > 0) { - stagger = gcsStaggerLookup.get(cacheKey); - - if (!stagger) { - var staggerClassName = pendClasses(className, '-stagger'); - - $$jqLite.addClass(node, staggerClassName); - - stagger = computeCssStyles($window, node, properties); - - // force the conversion of a null value to zero incase not set - stagger.animationDuration = Math.max(stagger.animationDuration, 0); - stagger.transitionDuration = Math.max(stagger.transitionDuration, 0); - - $$jqLite.removeClass(node, staggerClassName); - - gcsStaggerLookup.put(cacheKey, stagger); - } - } - - return stagger || {}; - } - - var bod = getDomNode($document).body; - var rafWaitQueue = []; - function waitUntilQuiet(callback) { - rafWaitQueue.push(callback); - $$rAFScheduler.waitUntilQuiet(function() { - gcsLookup.flush(); - gcsStaggerLookup.flush(); - - //the line below will force the browser to perform a repaint so - //that all the animated elements within the animation frame will - //be properly updated and drawn on screen. This is required to - //ensure that the preparation animation is properly flushed so that - //the active state picks up from there. DO NOT REMOVE THIS LINE. - //DO NOT OPTIMIZE THIS LINE. THE MINIFIER WILL REMOVE IT OTHERWISE WHICH - //WILL RESULT IN AN UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND - //WILL TAKE YEARS AWAY FROM YOUR LIFE. - var width = bod.offsetWidth + 1; - - // we use a for loop to ensure that if the queue is changed - // during this looping then it will consider new requests - for (var i = 0; i < rafWaitQueue.length; i++) { - rafWaitQueue[i](width); - } - rafWaitQueue.length = 0; - }); - } - - return init; - - function computeTimings(node, className, cacheKey) { - var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES); - var aD = timings.animationDelay; - var tD = timings.transitionDelay; - timings.maxDelay = aD && tD - ? Math.max(aD, tD) - : (aD || tD); - timings.maxDuration = Math.max( - timings.animationDuration * timings.animationIterationCount, - timings.transitionDuration); - - return timings; - } - - function init(element, options) { - var node = getDomNode(element); - if (!node || !node.parentNode) { - return closeAndReturnNoopAnimator(); - } - - options = prepareAnimationOptions(options); - - var temporaryStyles = []; - var classes = element.attr('class'); - var styles = packageStyles(options); - var animationClosed; - var animationPaused; - var animationCompleted; - var runner; - var runnerHost; - var maxDelay; - var maxDelayTime; - var maxDuration; - var maxDurationTime; - - if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) { - return closeAndReturnNoopAnimator(); - } - - var method = options.event && isArray(options.event) - ? options.event.join(' ') - : options.event; - - var isStructural = method && options.structural; - var structuralClassName = ''; - var addRemoveClassName = ''; - - if (isStructural) { - structuralClassName = pendClasses(method, 'ng-', true); - } else if (method) { - structuralClassName = method; - } - - if (options.addClass) { - addRemoveClassName += pendClasses(options.addClass, '-add'); - } - - if (options.removeClass) { - if (addRemoveClassName.length) { - addRemoveClassName += ' '; - } - addRemoveClassName += pendClasses(options.removeClass, '-remove'); - } - - // there may be a situation where a structural animation is combined together - // with CSS classes that need to resolve before the animation is computed. - // However this means that there is no explicit CSS code to block the animation - // from happening (by setting 0s none in the class name). If this is the case - // we need to apply the classes before the first rAF so we know to continue if - // there actually is a detected transition or keyframe animation - if (options.applyClassesEarly && addRemoveClassName.length) { - applyAnimationClasses(element, options); - addRemoveClassName = ''; - } - - var setupClasses = [structuralClassName, addRemoveClassName].join(' ').trim(); - var fullClassName = classes + ' ' + setupClasses; - var activeClasses = pendClasses(setupClasses, '-active'); - var hasToStyles = styles.to && Object.keys(styles.to).length > 0; - var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0; - - // there is no way we can trigger an animation if no styles and - // no classes are being applied which would then trigger a transition, - // unless there a is raw keyframe value that is applied to the element. - if (!containsKeyframeAnimation - && !hasToStyles - && !setupClasses) { - return closeAndReturnNoopAnimator(); - } - - var cacheKey, stagger; - if (options.stagger > 0) { - var staggerVal = parseFloat(options.stagger); - stagger = { - transitionDelay: staggerVal, - animationDelay: staggerVal, - transitionDuration: 0, - animationDuration: 0 - }; - } else { - cacheKey = gcsHashFn(node, fullClassName); - stagger = computeCachedCssStaggerStyles(node, setupClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES); - } - - $$jqLite.addClass(element, setupClasses); - - var applyOnlyDuration; - - if (options.transitionStyle) { - var transitionStyle = [TRANSITION_PROP, options.transitionStyle]; - applyInlineStyle(node, transitionStyle); - temporaryStyles.push(transitionStyle); - } - - if (options.duration >= 0) { - applyOnlyDuration = node.style[TRANSITION_PROP].length > 0; - var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration); - - // we set the duration so that it will be picked up by getComputedStyle later - applyInlineStyle(node, durationStyle); - temporaryStyles.push(durationStyle); - } - - if (options.keyframeStyle) { - var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle]; - applyInlineStyle(node, keyframeStyle); - temporaryStyles.push(keyframeStyle); - } - - var itemIndex = stagger - ? options.staggerIndex >= 0 - ? options.staggerIndex - : gcsLookup.count(cacheKey) - : 0; - - var isFirst = itemIndex === 0; - - // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY - // without causing any combination of transitions to kick in. By adding a negative delay value - // it forces the setup class' transition to end immediately. We later then remove the negative - // transition delay to allow for the transition to naturally do it's thing. The beauty here is - // that if there is no transition defined then nothing will happen and this will also allow - // other transitions to be stacked on top of each other without any chopping them out. - if (isFirst) { - blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE); - } - - var timings = computeTimings(node, fullClassName, cacheKey); - var relativeDelay = timings.maxDelay; - maxDelay = Math.max(relativeDelay, 0); - maxDuration = timings.maxDuration; - - var flags = {}; - flags.hasTransitions = timings.transitionDuration > 0; - flags.hasAnimations = timings.animationDuration > 0; - flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty == 'all'; - flags.applyTransitionDuration = hasToStyles && ( - (flags.hasTransitions && !flags.hasTransitionAll) - || (flags.hasAnimations && !flags.hasTransitions)); - flags.applyAnimationDuration = options.duration && flags.hasAnimations; - flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions); - flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations; - flags.recalculateTimingStyles = addRemoveClassName.length > 0; - - if (flags.applyTransitionDuration || flags.applyAnimationDuration) { - maxDuration = options.duration ? parseFloat(options.duration) : maxDuration; - - if (flags.applyTransitionDuration) { - flags.hasTransitions = true; - timings.transitionDuration = maxDuration; - applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0; - temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration)); - } - - if (flags.applyAnimationDuration) { - flags.hasAnimations = true; - timings.animationDuration = maxDuration; - temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration)); - } - } - - if (maxDuration === 0 && !flags.recalculateTimingStyles) { - return closeAndReturnNoopAnimator(); - } - - // we need to recalculate the delay value since we used a pre-emptive negative - // delay value and the delay value is required for the final event checking. This - // property will ensure that this will happen after the RAF phase has passed. - if (options.duration == null && timings.transitionDuration > 0) { - flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst; - } - - maxDelayTime = maxDelay * ONE_SECOND; - maxDurationTime = maxDuration * ONE_SECOND; - if (!options.skipBlocking) { - flags.blockTransition = timings.transitionDuration > 0; - flags.blockKeyframeAnimation = timings.animationDuration > 0 && - stagger.animationDelay > 0 && - stagger.animationDuration === 0; - } - - applyAnimationFromStyles(element, options); - if (!flags.blockTransition) { - blockTransitions(node, false); - } - - applyBlocking(maxDuration); - - // TODO(matsko): for 1.5 change this code to have an animator object for better debugging - return { - $$willAnimate: true, - end: endFn, - start: function() { - if (animationClosed) return; - - runnerHost = { - end: endFn, - cancel: cancelFn, - resume: null, //this will be set during the start() phase - pause: null - }; - - runner = new $$AnimateRunner(runnerHost); - - waitUntilQuiet(start); - - // we don't have access to pause/resume the animation - // since it hasn't run yet. AnimateRunner will therefore - // set noop functions for resume and pause and they will - // later be overridden once the animation is triggered - return runner; - } - }; - - function endFn() { - close(); - } - - function cancelFn() { - close(true); - } - - function close(rejected) { // jshint ignore:line - // if the promise has been called already then we shouldn't close - // the animation again - if (animationClosed || (animationCompleted && animationPaused)) return; - animationClosed = true; - animationPaused = false; - - $$jqLite.removeClass(element, setupClasses); - $$jqLite.removeClass(element, activeClasses); - - blockKeyframeAnimations(node, false); - blockTransitions(node, false); - - forEach(temporaryStyles, function(entry) { - // There is only one way to remove inline style properties entirely from elements. - // By using `removeProperty` this works, but we need to convert camel-cased CSS - // styles down to hyphenated values. - node.style[entry[0]] = ''; - }); - - applyAnimationClasses(element, options); - applyAnimationStyles(element, options); - - // the reason why we have this option is to allow a synchronous closing callback - // that is fired as SOON as the animation ends (when the CSS is removed) or if - // the animation never takes off at all. A good example is a leave animation since - // the element must be removed just after the animation is over or else the element - // will appear on screen for one animation frame causing an overbearing flicker. - if (options.onDone) { - options.onDone(); - } - - // if the preparation function fails then the promise is not setup - if (runner) { - runner.complete(!rejected); - } - } - - function applyBlocking(duration) { - if (flags.blockTransition) { - blockTransitions(node, duration); - } - - if (flags.blockKeyframeAnimation) { - blockKeyframeAnimations(node, !!duration); - } - } - - function closeAndReturnNoopAnimator() { - runner = new $$AnimateRunner({ - end: endFn, - cancel: cancelFn - }); - - close(); - - return { - $$willAnimate: false, - start: function() { - return runner; - }, - end: endFn - }; - } - - function start() { - if (animationClosed) return; - if (!node.parentNode) { - close(); - return; - } - - var startTime, events = []; - - // even though we only pause keyframe animations here the pause flag - // will still happen when transitions are used. Only the transition will - // not be paused since that is not possible. If the animation ends when - // paused then it will not complete until unpaused or cancelled. - var playPause = function(playAnimation) { - if (!animationCompleted) { - animationPaused = !playAnimation; - if (timings.animationDuration) { - var value = blockKeyframeAnimations(node, animationPaused); - animationPaused - ? temporaryStyles.push(value) - : removeFromArray(temporaryStyles, value); - } - } else if (animationPaused && playAnimation) { - animationPaused = false; - close(); - } - }; - - // checking the stagger duration prevents an accidently cascade of the CSS delay style - // being inherited from the parent. If the transition duration is zero then we can safely - // rely that the delay value is an intential stagger delay style. - var maxStagger = itemIndex > 0 - && ((timings.transitionDuration && stagger.transitionDuration === 0) || - (timings.animationDuration && stagger.animationDuration === 0)) - && Math.max(stagger.animationDelay, stagger.transitionDelay); - if (maxStagger) { - $timeout(triggerAnimationStart, - Math.floor(maxStagger * itemIndex * ONE_SECOND), - false); - } else { - triggerAnimationStart(); - } - - // this will decorate the existing promise runner with pause/resume methods - runnerHost.resume = function() { - playPause(true); - }; - - runnerHost.pause = function() { - playPause(false); - }; - - function triggerAnimationStart() { - // just incase a stagger animation kicks in when the animation - // itself was cancelled entirely - if (animationClosed) return; - - applyBlocking(false); - - forEach(temporaryStyles, function(entry) { - var key = entry[0]; - var value = entry[1]; - node.style[key] = value; - }); - - applyAnimationClasses(element, options); - $$jqLite.addClass(element, activeClasses); - - if (flags.recalculateTimingStyles) { - fullClassName = node.className + ' ' + setupClasses; - cacheKey = gcsHashFn(node, fullClassName); - - timings = computeTimings(node, fullClassName, cacheKey); - relativeDelay = timings.maxDelay; - maxDelay = Math.max(relativeDelay, 0); - maxDuration = timings.maxDuration; - - if (maxDuration === 0) { - close(); - return; - } - - flags.hasTransitions = timings.transitionDuration > 0; - flags.hasAnimations = timings.animationDuration > 0; - } - - if (flags.applyTransitionDelay || flags.applyAnimationDelay) { - relativeDelay = typeof options.delay !== "boolean" && truthyTimingValue(options.delay) - ? parseFloat(options.delay) - : relativeDelay; - - maxDelay = Math.max(relativeDelay, 0); - - var delayStyle; - if (flags.applyTransitionDelay) { - timings.transitionDelay = relativeDelay; - delayStyle = getCssDelayStyle(relativeDelay); - temporaryStyles.push(delayStyle); - node.style[delayStyle[0]] = delayStyle[1]; - } - - if (flags.applyAnimationDelay) { - timings.animationDelay = relativeDelay; - delayStyle = getCssDelayStyle(relativeDelay, true); - temporaryStyles.push(delayStyle); - node.style[delayStyle[0]] = delayStyle[1]; - } - } - - maxDelayTime = maxDelay * ONE_SECOND; - maxDurationTime = maxDuration * ONE_SECOND; - - if (options.easing) { - var easeProp, easeVal = options.easing; - if (flags.hasTransitions) { - easeProp = TRANSITION_PROP + TIMING_KEY; - temporaryStyles.push([easeProp, easeVal]); - node.style[easeProp] = easeVal; - } - if (flags.hasAnimations) { - easeProp = ANIMATION_PROP + TIMING_KEY; - temporaryStyles.push([easeProp, easeVal]); - node.style[easeProp] = easeVal; - } - } - - if (timings.transitionDuration) { - events.push(TRANSITIONEND_EVENT); - } - - if (timings.animationDuration) { - events.push(ANIMATIONEND_EVENT); - } - - startTime = Date.now(); - element.on(events.join(' '), onAnimationProgress); - $timeout(onAnimationExpired, maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime); - - applyAnimationToStyles(element, options); - } - - function onAnimationExpired() { - // although an expired animation is a failed animation, getting to - // this outcome is very easy if the CSS code screws up. Therefore we - // should still continue normally as if the animation completed correctly. - close(); - } - - function onAnimationProgress(event) { - event.stopPropagation(); - var ev = event.originalEvent || event; - var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now(); - - /* Firefox (or possibly just Gecko) likes to not round values up - * when a ms measurement is used for the animation */ - var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); - - /* $manualTimeStamp is a mocked timeStamp value which is set - * within browserTrigger(). This is only here so that tests can - * mock animations properly. Real events fallback to event.timeStamp, - * or, if they don't, then a timeStamp is automatically created for them. - * We're checking to see if the timeStamp surpasses the expected delay, - * but we're using elapsedTime instead of the timeStamp on the 2nd - * pre-condition since animations sometimes close off early */ - if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { - // we set this flag to ensure that if the transition is paused then, when resumed, - // the animation will automatically close itself since transitions cannot be paused. - animationCompleted = true; - close(); - } - } - } - } - }]; -}]; - -var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationProvider) { - $$animationProvider.drivers.push('$$animateCssDriver'); - - var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim'; - var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor'; - - var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out'; - var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in'; - - this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$document', '$sniffer', - function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $document, $sniffer) { - - // only browsers that support these properties can render animations - if (!$sniffer.animations && !$sniffer.transitions) return noop; - - var bodyNode = getDomNode($document).body; - var rootNode = getDomNode($rootElement); - - var rootBodyElement = jqLite(bodyNode.parentNode === rootNode ? bodyNode : rootNode); - - return function initDriverFn(animationDetails) { - return animationDetails.from && animationDetails.to - ? prepareFromToAnchorAnimation(animationDetails.from, - animationDetails.to, - animationDetails.classes, - animationDetails.anchors) - : prepareRegularAnimation(animationDetails); - }; - - function filterCssClasses(classes) { - //remove all the `ng-` stuff - return classes.replace(/\bng-\S+\b/g, ''); - } - - function getUniqueValues(a, b) { - if (isString(a)) a = a.split(' '); - if (isString(b)) b = b.split(' '); - return a.filter(function(val) { - return b.indexOf(val) === -1; - }).join(' '); - } - - function prepareAnchoredAnimation(classes, outAnchor, inAnchor) { - var clone = jqLite(getDomNode(outAnchor).cloneNode(true)); - var startingClasses = filterCssClasses(getClassVal(clone)); - - outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); - inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); - - clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME); - - rootBodyElement.append(clone); - - var animatorIn, animatorOut = prepareOutAnimation(); - - // the user may not end up using the `out` animation and - // only making use of the `in` animation or vice-versa. - // In either case we should allow this and not assume the - // animation is over unless both animations are not used. - if (!animatorOut) { - animatorIn = prepareInAnimation(); - if (!animatorIn) { - return end(); - } - } - - var startingAnimator = animatorOut || animatorIn; - - return { - start: function() { - var runner; - - var currentAnimation = startingAnimator.start(); - currentAnimation.done(function() { - currentAnimation = null; - if (!animatorIn) { - animatorIn = prepareInAnimation(); - if (animatorIn) { - currentAnimation = animatorIn.start(); - currentAnimation.done(function() { - currentAnimation = null; - end(); - runner.complete(); - }); - return currentAnimation; - } - } - // in the event that there is no `in` animation - end(); - runner.complete(); - }); - - runner = new $$AnimateRunner({ - end: endFn, - cancel: endFn - }); - - return runner; - - function endFn() { - if (currentAnimation) { - currentAnimation.end(); - } - } - } - }; - - function calculateAnchorStyles(anchor) { - var styles = {}; - - var coords = getDomNode(anchor).getBoundingClientRect(); - - // we iterate directly since safari messes up and doesn't return - // all the keys for the coods object when iterated - forEach(['width','height','top','left'], function(key) { - var value = coords[key]; - switch (key) { - case 'top': - value += bodyNode.scrollTop; - break; - case 'left': - value += bodyNode.scrollLeft; - break; - } - styles[key] = Math.floor(value) + 'px'; - }); - return styles; - } - - function prepareOutAnimation() { - var animator = $animateCss(clone, { - addClass: NG_OUT_ANCHOR_CLASS_NAME, - delay: true, - from: calculateAnchorStyles(outAnchor) - }); - - // read the comment within `prepareRegularAnimation` to understand - // why this check is necessary - return animator.$$willAnimate ? animator : null; - } - - function getClassVal(element) { - return element.attr('class') || ''; - } - - function prepareInAnimation() { - var endingClasses = filterCssClasses(getClassVal(inAnchor)); - var toAdd = getUniqueValues(endingClasses, startingClasses); - var toRemove = getUniqueValues(startingClasses, endingClasses); - - var animator = $animateCss(clone, { - to: calculateAnchorStyles(inAnchor), - addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd, - removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove, - delay: true - }); - - // read the comment within `prepareRegularAnimation` to understand - // why this check is necessary - return animator.$$willAnimate ? animator : null; - } - - function end() { - clone.remove(); - outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); - inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); - } - } - - function prepareFromToAnchorAnimation(from, to, classes, anchors) { - var fromAnimation = prepareRegularAnimation(from); - var toAnimation = prepareRegularAnimation(to); - - var anchorAnimations = []; - forEach(anchors, function(anchor) { - var outElement = anchor['out']; - var inElement = anchor['in']; - var animator = prepareAnchoredAnimation(classes, outElement, inElement); - if (animator) { - anchorAnimations.push(animator); - } - }); - - // no point in doing anything when there are no elements to animate - if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return; - - return { - start: function() { - var animationRunners = []; - - if (fromAnimation) { - animationRunners.push(fromAnimation.start()); - } - - if (toAnimation) { - animationRunners.push(toAnimation.start()); - } - - forEach(anchorAnimations, function(animation) { - animationRunners.push(animation.start()); - }); - - var runner = new $$AnimateRunner({ - end: endFn, - cancel: endFn // CSS-driven animations cannot be cancelled, only ended - }); - - $$AnimateRunner.all(animationRunners, function(status) { - runner.complete(status); - }); - - return runner; - - function endFn() { - forEach(animationRunners, function(runner) { - runner.end(); - }); - } - } - }; - } - - function prepareRegularAnimation(animationDetails) { - var element = animationDetails.element; - var options = animationDetails.options || {}; - - if (animationDetails.structural) { - // structural animations ensure that the CSS classes are always applied - // before the detection starts. - options.structural = options.applyClassesEarly = true; - - // we special case the leave animation since we want to ensure that - // the element is removed as soon as the animation is over. Otherwise - // a flicker might appear or the element may not be removed at all - options.event = animationDetails.event; - if (options.event === 'leave') { - options.onDone = options.domOperation; - } - } else { - options.event = null; - } - - var animator = $animateCss(element, options); - - // the driver lookup code inside of $$animation attempts to spawn a - // driver one by one until a driver returns a.$$willAnimate animator object. - // $animateCss will always return an object, however, it will pass in - // a flag as a hint as to whether an animation was detected or not - return animator.$$willAnimate ? animator : null; - } - }]; -}]; - -// TODO(matsko): use caching here to speed things up for detection -// TODO(matsko): add documentation -// by the time... - -var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) { - this.$get = ['$injector', '$$AnimateRunner', '$$rAFMutex', '$$jqLite', - function($injector, $$AnimateRunner, $$rAFMutex, $$jqLite) { - - var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); - // $animateJs(element, 'enter'); - return function(element, event, classes, options) { - // the `classes` argument is optional and if it is not used - // then the classes will be resolved from the element's className - // property as well as options.addClass/options.removeClass. - if (arguments.length === 3 && isObject(classes)) { - options = classes; - classes = null; - } - - options = prepareAnimationOptions(options); - if (!classes) { - classes = element.attr('class') || ''; - if (options.addClass) { - classes += ' ' + options.addClass; - } - if (options.removeClass) { - classes += ' ' + options.removeClass; - } - } - - var classesToAdd = options.addClass; - var classesToRemove = options.removeClass; - - // the lookupAnimations function returns a series of animation objects that are - // matched up with one or more of the CSS classes. These animation objects are - // defined via the module.animation factory function. If nothing is detected then - // we don't return anything which then makes $animation query the next driver. - var animations = lookupAnimations(classes); - var before, after; - if (animations.length) { - var afterFn, beforeFn; - if (event == 'leave') { - beforeFn = 'leave'; - afterFn = 'afterLeave'; // TODO(matsko): get rid of this - } else { - beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1); - afterFn = event; - } - - if (event !== 'enter' && event !== 'move') { - before = packageAnimations(element, event, options, animations, beforeFn); - } - after = packageAnimations(element, event, options, animations, afterFn); - } - - // no matching animations - if (!before && !after) return; - - function applyOptions() { - options.domOperation(); - applyAnimationClasses(element, options); - } - - return { - start: function() { - var closeActiveAnimations; - var chain = []; - - if (before) { - chain.push(function(fn) { - closeActiveAnimations = before(fn); - }); - } - - if (chain.length) { - chain.push(function(fn) { - applyOptions(); - fn(true); - }); - } else { - applyOptions(); - } - - if (after) { - chain.push(function(fn) { - closeActiveAnimations = after(fn); - }); - } - - var animationClosed = false; - var runner = new $$AnimateRunner({ - end: function() { - endAnimations(); - }, - cancel: function() { - endAnimations(true); - } - }); - - $$AnimateRunner.chain(chain, onComplete); - return runner; - - function onComplete(success) { - animationClosed = true; - applyOptions(); - applyAnimationStyles(element, options); - runner.complete(success); - } - - function endAnimations(cancelled) { - if (!animationClosed) { - (closeActiveAnimations || noop)(cancelled); - onComplete(cancelled); - } - } - } - }; - - function executeAnimationFn(fn, element, event, options, onDone) { - var args; - switch (event) { - case 'animate': - args = [element, options.from, options.to, onDone]; - break; - - case 'setClass': - args = [element, classesToAdd, classesToRemove, onDone]; - break; - - case 'addClass': - args = [element, classesToAdd, onDone]; - break; - - case 'removeClass': - args = [element, classesToRemove, onDone]; - break; - - default: - args = [element, onDone]; - break; - } - - args.push(options); - - var value = fn.apply(fn, args); - if (value) { - if (isFunction(value.start)) { - value = value.start(); - } - - if (value instanceof $$AnimateRunner) { - value.done(onDone); - } else if (isFunction(value)) { - // optional onEnd / onCancel callback - return value; - } - } - - return noop; - } - - function groupEventedAnimations(element, event, options, animations, fnName) { - var operations = []; - forEach(animations, function(ani) { - var animation = ani[fnName]; - if (!animation) return; - - // note that all of these animations will run in parallel - operations.push(function() { - var runner; - var endProgressCb; - - var resolved = false; - var onAnimationComplete = function(rejected) { - if (!resolved) { - resolved = true; - (endProgressCb || noop)(rejected); - runner.complete(!rejected); - } - }; - - runner = new $$AnimateRunner({ - end: function() { - onAnimationComplete(); - }, - cancel: function() { - onAnimationComplete(true); - } - }); - - endProgressCb = executeAnimationFn(animation, element, event, options, function(result) { - var cancelled = result === false; - onAnimationComplete(cancelled); - }); - - return runner; - }); - }); - - return operations; - } - - function packageAnimations(element, event, options, animations, fnName) { - var operations = groupEventedAnimations(element, event, options, animations, fnName); - if (operations.length === 0) { - var a,b; - if (fnName === 'beforeSetClass') { - a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass'); - b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass'); - } else if (fnName === 'setClass') { - a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass'); - b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass'); - } - - if (a) { - operations = operations.concat(a); - } - if (b) { - operations = operations.concat(b); - } - } - - if (operations.length === 0) return; - - // TODO(matsko): add documentation - return function startAnimation(callback) { - var runners = []; - if (operations.length) { - forEach(operations, function(animateFn) { - runners.push(animateFn()); - }); - } - - runners.length ? $$AnimateRunner.all(runners, callback) : callback(); - - return function endFn(reject) { - forEach(runners, function(runner) { - reject ? runner.cancel() : runner.end(); - }); - }; - }; - } - }; - - function lookupAnimations(classes) { - classes = isArray(classes) ? classes : classes.split(' '); - var matches = [], flagMap = {}; - for (var i=0; i < classes.length; i++) { - var klass = classes[i], - animationFactory = $animateProvider.$$registeredAnimations[klass]; - if (animationFactory && !flagMap[klass]) { - matches.push($injector.get(animationFactory)); - flagMap[klass] = true; - } - } - return matches; - } - }]; -}]; - -var $$AnimateJsDriverProvider = ['$$animationProvider', function($$animationProvider) { - $$animationProvider.drivers.push('$$animateJsDriver'); - this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) { - return function initDriverFn(animationDetails) { - if (animationDetails.from && animationDetails.to) { - var fromAnimation = prepareAnimation(animationDetails.from); - var toAnimation = prepareAnimation(animationDetails.to); - if (!fromAnimation && !toAnimation) return; - - return { - start: function() { - var animationRunners = []; - - if (fromAnimation) { - animationRunners.push(fromAnimation.start()); - } - - if (toAnimation) { - animationRunners.push(toAnimation.start()); - } - - $$AnimateRunner.all(animationRunners, done); - - var runner = new $$AnimateRunner({ - end: endFnFactory(), - cancel: endFnFactory() - }); - - return runner; - - function endFnFactory() { - return function() { - forEach(animationRunners, function(runner) { - // at this point we cannot cancel animations for groups just yet. 1.5+ - runner.end(); - }); - }; - } - - function done(status) { - runner.complete(status); - } - } - }; - } else { - return prepareAnimation(animationDetails); - } - }; - - function prepareAnimation(animationDetails) { - // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations - var element = animationDetails.element; - var event = animationDetails.event; - var options = animationDetails.options; - var classes = animationDetails.classes; - return $$animateJs(element, event, classes, options); - } - }]; -}]; - -var NG_ANIMATE_ATTR_NAME = 'data-ng-animate'; -var NG_ANIMATE_PIN_DATA = '$ngAnimatePin'; -var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { - var PRE_DIGEST_STATE = 1; - var RUNNING_STATE = 2; - - var rules = this.rules = { - skip: [], - cancel: [], - join: [] - }; - - function isAllowed(ruleType, element, currentAnimation, previousAnimation) { - return rules[ruleType].some(function(fn) { - return fn(element, currentAnimation, previousAnimation); - }); - } - - function hasAnimationClasses(options, and) { - options = options || {}; - var a = (options.addClass || '').length > 0; - var b = (options.removeClass || '').length > 0; - return and ? a && b : a || b; - } - - rules.join.push(function(element, newAnimation, currentAnimation) { - // if the new animation is class-based then we can just tack that on - return !newAnimation.structural && hasAnimationClasses(newAnimation.options); - }); - - rules.skip.push(function(element, newAnimation, currentAnimation) { - // there is no need to animate anything if no classes are being added and - // there is no structural animation that will be triggered - return !newAnimation.structural && !hasAnimationClasses(newAnimation.options); - }); - - rules.skip.push(function(element, newAnimation, currentAnimation) { - // why should we trigger a new structural animation if the element will - // be removed from the DOM anyway? - return currentAnimation.event == 'leave' && newAnimation.structural; - }); - - rules.skip.push(function(element, newAnimation, currentAnimation) { - // if there is a current animation then skip the class-based animation - return currentAnimation.structural && !newAnimation.structural; - }); - - rules.cancel.push(function(element, newAnimation, currentAnimation) { - // there can never be two structural animations running at the same time - return currentAnimation.structural && newAnimation.structural; - }); - - rules.cancel.push(function(element, newAnimation, currentAnimation) { - // if the previous animation is already running, but the new animation will - // be triggered, but the new animation is structural - return currentAnimation.state === RUNNING_STATE && newAnimation.structural; - }); - - rules.cancel.push(function(element, newAnimation, currentAnimation) { - var nO = newAnimation.options; - var cO = currentAnimation.options; - - // if the exact same CSS class is added/removed then it's safe to cancel it - return (nO.addClass && nO.addClass === cO.removeClass) || (nO.removeClass && nO.removeClass === cO.addClass); - }); - - this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap', - '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', - function($$rAF, $rootScope, $rootElement, $document, $$HashMap, - $$animation, $$AnimateRunner, $templateRequest, $$jqLite) { - - var activeAnimationsLookup = new $$HashMap(); - var disabledElementsLookup = new $$HashMap(); - - var animationsEnabled = null; - - // Wait until all directive and route-related templates are downloaded and - // compiled. The $templateRequest.totalPendingRequests variable keeps track of - // all of the remote templates being currently downloaded. If there are no - // templates currently downloading then the watcher will still fire anyway. - var deregisterWatch = $rootScope.$watch( - function() { return $templateRequest.totalPendingRequests === 0; }, - function(isEmpty) { - if (!isEmpty) return; - deregisterWatch(); - - // Now that all templates have been downloaded, $animate will wait until - // the post digest queue is empty before enabling animations. By having two - // calls to $postDigest calls we can ensure that the flag is enabled at the - // very end of the post digest queue. Since all of the animations in $animate - // use $postDigest, it's important that the code below executes at the end. - // This basically means that the page is fully downloaded and compiled before - // any animations are triggered. - $rootScope.$$postDigest(function() { - $rootScope.$$postDigest(function() { - // we check for null directly in the event that the application already called - // .enabled() with whatever arguments that it provided it with - if (animationsEnabled === null) { - animationsEnabled = true; - } - }); - }); - } - ); - - var bodyElement = jqLite($document[0].body); - - var callbackRegistry = {}; - - // remember that the classNameFilter is set during the provider/config - // stage therefore we can optimize here and setup a helper function - var classNameFilter = $animateProvider.classNameFilter(); - var isAnimatableClassName = !classNameFilter - ? function() { return true; } - : function(className) { - return classNameFilter.test(className); - }; - - var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); - - function normalizeAnimationOptions(element, options) { - return mergeAnimationOptions(element, options, {}); - } - - function findCallbacks(element, event) { - var targetNode = getDomNode(element); - - var matches = []; - var entries = callbackRegistry[event]; - if (entries) { - forEach(entries, function(entry) { - if (entry.node.contains(targetNode)) { - matches.push(entry.callback); - } - }); - } - - return matches; - } - - function triggerCallback(event, element, phase, data) { - $$rAF(function() { - forEach(findCallbacks(element, event), function(callback) { - callback(element, phase, data); - }); - }); - } - - return { - on: function(event, container, callback) { - var node = extractElementNode(container); - callbackRegistry[event] = callbackRegistry[event] || []; - callbackRegistry[event].push({ - node: node, - callback: callback - }); - }, - - off: function(event, container, callback) { - var entries = callbackRegistry[event]; - if (!entries) return; - - callbackRegistry[event] = arguments.length === 1 - ? null - : filterFromRegistry(entries, container, callback); - - function filterFromRegistry(list, matchContainer, matchCallback) { - var containerNode = extractElementNode(matchContainer); - return list.filter(function(entry) { - var isMatch = entry.node === containerNode && - (!matchCallback || entry.callback === matchCallback); - return !isMatch; - }); - } - }, - - pin: function(element, parentElement) { - assertArg(isElement(element), 'element', 'not an element'); - assertArg(isElement(parentElement), 'parentElement', 'not an element'); - element.data(NG_ANIMATE_PIN_DATA, parentElement); - }, - - push: function(element, event, options, domOperation) { - options = options || {}; - options.domOperation = domOperation; - return queueAnimation(element, event, options); - }, - - // this method has four signatures: - // () - global getter - // (bool) - global setter - // (element) - element getter - // (element, bool) - element setter - enabled: function(element, bool) { - var argCount = arguments.length; - - if (argCount === 0) { - // () - Global getter - bool = !!animationsEnabled; - } else { - var hasElement = isElement(element); - - if (!hasElement) { - // (bool) - Global setter - bool = animationsEnabled = !!element; - } else { - var node = getDomNode(element); - var recordExists = disabledElementsLookup.get(node); - - if (argCount === 1) { - // (element) - Element getter - bool = !recordExists; - } else { - // (element, bool) - Element setter - bool = !!bool; - if (!bool) { - disabledElementsLookup.put(node, true); - } else if (recordExists) { - disabledElementsLookup.remove(node); - } - } - } - } - - return bool; - } - }; - - function queueAnimation(element, event, options) { - var node, parent; - element = stripCommentsFromElement(element); - if (element) { - node = getDomNode(element); - parent = element.parent(); - } - - options = prepareAnimationOptions(options); - - // we create a fake runner with a working promise. - // These methods will become available after the digest has passed - var runner = new $$AnimateRunner(); - - // there are situations where a directive issues an animation for - // a jqLite wrapper that contains only comment nodes... If this - // happens then there is no way we can perform an animation - if (!node) { - close(); - return runner; - } - - if (isArray(options.addClass)) { - options.addClass = options.addClass.join(' '); - } - - if (isArray(options.removeClass)) { - options.removeClass = options.removeClass.join(' '); - } - - if (options.from && !isObject(options.from)) { - options.from = null; - } - - if (options.to && !isObject(options.to)) { - options.to = null; - } - - var className = [node.className, options.addClass, options.removeClass].join(' '); - if (!isAnimatableClassName(className)) { - close(); - return runner; - } - - var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; - - // this is a hard disable of all animations for the application or on - // the element itself, therefore there is no need to continue further - // past this point if not enabled - var skipAnimations = !animationsEnabled || disabledElementsLookup.get(node); - var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {}; - var hasExistingAnimation = !!existingAnimation.state; - - // there is no point in traversing the same collection of parent ancestors if a followup - // animation will be run on the same element that already did all that checking work - if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state != PRE_DIGEST_STATE)) { - skipAnimations = !areAnimationsAllowed(element, parent, event); - } - - if (skipAnimations) { - close(); - return runner; - } - - if (isStructural) { - closeChildAnimations(element); - } - - var newAnimation = { - structural: isStructural, - element: element, - event: event, - close: close, - options: options, - runner: runner - }; - - if (hasExistingAnimation) { - var skipAnimationFlag = isAllowed('skip', element, newAnimation, existingAnimation); - if (skipAnimationFlag) { - if (existingAnimation.state === RUNNING_STATE) { - close(); - return runner; - } else { - mergeAnimationOptions(element, existingAnimation.options, options); - return existingAnimation.runner; - } - } - - var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation); - if (cancelAnimationFlag) { - if (existingAnimation.state === RUNNING_STATE) { - // this will end the animation right away and it is safe - // to do so since the animation is already running and the - // runner callback code will run in async - existingAnimation.runner.end(); - } else if (existingAnimation.structural) { - // this means that the animation is queued into a digest, but - // hasn't started yet. Therefore it is safe to run the close - // method which will call the runner methods in async. - existingAnimation.close(); - } else { - // this will merge the existing animation options into this new follow-up animation - mergeAnimationOptions(element, newAnimation.options, existingAnimation.options); - } - } else { - // a joined animation means that this animation will take over the existing one - // so an example would involve a leave animation taking over an enter. Then when - // the postDigest kicks in the enter will be ignored. - var joinAnimationFlag = isAllowed('join', element, newAnimation, existingAnimation); - if (joinAnimationFlag) { - if (existingAnimation.state === RUNNING_STATE) { - normalizeAnimationOptions(element, options); - } else { - event = newAnimation.event = existingAnimation.event; - options = mergeAnimationOptions(element, existingAnimation.options, newAnimation.options); - return runner; - } - } - } - } else { - // normalization in this case means that it removes redundant CSS classes that - // already exist (addClass) or do not exist (removeClass) on the element - normalizeAnimationOptions(element, options); - } - - // when the options are merged and cleaned up we may end up not having to do - // an animation at all, therefore we should check this before issuing a post - // digest callback. Structural animations will always run no matter what. - var isValidAnimation = newAnimation.structural; - if (!isValidAnimation) { - // animate (from/to) can be quickly checked first, otherwise we check if any classes are present - isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0) - || hasAnimationClasses(newAnimation.options); - } - - if (!isValidAnimation) { - close(); - clearElementAnimationState(element); - return runner; - } - - if (isStructural) { - closeParentClassBasedAnimations(parent); - } - - // the counter keeps track of cancelled animations - var counter = (existingAnimation.counter || 0) + 1; - newAnimation.counter = counter; - - markElementAnimationState(element, PRE_DIGEST_STATE, newAnimation); - - $rootScope.$$postDigest(function() { - var animationDetails = activeAnimationsLookup.get(node); - var animationCancelled = !animationDetails; - animationDetails = animationDetails || {}; - - // if addClass/removeClass is called before something like enter then the - // registered parent element may not be present. The code below will ensure - // that a final value for parent element is obtained - var parentElement = element.parent() || []; - - // animate/structural/class-based animations all have requirements. Otherwise there - // is no point in performing an animation. The parent node must also be set. - var isValidAnimation = parentElement.length > 0 - && (animationDetails.event === 'animate' - || animationDetails.structural - || hasAnimationClasses(animationDetails.options)); - - // this means that the previous animation was cancelled - // even if the follow-up animation is the same event - if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) { - // if another animation did not take over then we need - // to make sure that the domOperation and options are - // handled accordingly - if (animationCancelled) { - applyAnimationClasses(element, options); - applyAnimationStyles(element, options); - } - - // if the event changed from something like enter to leave then we do - // it, otherwise if it's the same then the end result will be the same too - if (animationCancelled || (isStructural && animationDetails.event !== event)) { - options.domOperation(); - runner.end(); - } - - // in the event that the element animation was not cancelled or a follow-up animation - // isn't allowed to animate from here then we need to clear the state of the element - // so that any future animations won't read the expired animation data. - if (!isValidAnimation) { - clearElementAnimationState(element); - } - - return; - } - - // this combined multiple class to addClass / removeClass into a setClass event - // so long as a structural event did not take over the animation - event = !animationDetails.structural && hasAnimationClasses(animationDetails.options, true) - ? 'setClass' - : animationDetails.event; - - if (animationDetails.structural) { - closeParentClassBasedAnimations(parentElement); - } - - markElementAnimationState(element, RUNNING_STATE); - var realRunner = $$animation(element, event, animationDetails.options); - realRunner.done(function(status) { - close(!status); - var animationDetails = activeAnimationsLookup.get(node); - if (animationDetails && animationDetails.counter === counter) { - clearElementAnimationState(getDomNode(element)); - } - notifyProgress(runner, event, 'close', {}); - }); - - // this will update the runner's flow-control events based on - // the `realRunner` object. - runner.setHost(realRunner); - notifyProgress(runner, event, 'start', {}); - }); - - return runner; - - function notifyProgress(runner, event, phase, data) { - triggerCallback(event, element, phase, data); - runner.progress(event, phase, data); - } - - function close(reject) { // jshint ignore:line - applyAnimationClasses(element, options); - applyAnimationStyles(element, options); - options.domOperation(); - runner.complete(!reject); - } - } - - function closeChildAnimations(element) { - var node = getDomNode(element); - var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']'); - forEach(children, function(child) { - var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME)); - var animationDetails = activeAnimationsLookup.get(child); - switch (state) { - case RUNNING_STATE: - animationDetails.runner.end(); - /* falls through */ - case PRE_DIGEST_STATE: - if (animationDetails) { - activeAnimationsLookup.remove(child); - } - break; - } - }); - } - - function clearElementAnimationState(element) { - var node = getDomNode(element); - node.removeAttribute(NG_ANIMATE_ATTR_NAME); - activeAnimationsLookup.remove(node); - } - - function isMatchingElement(nodeOrElmA, nodeOrElmB) { - return getDomNode(nodeOrElmA) === getDomNode(nodeOrElmB); - } - - function closeParentClassBasedAnimations(startingElement) { - var parentNode = getDomNode(startingElement); - do { - if (!parentNode || parentNode.nodeType !== ELEMENT_NODE) break; - - var animationDetails = activeAnimationsLookup.get(parentNode); - if (animationDetails) { - examineParentAnimation(parentNode, animationDetails); - } - - parentNode = parentNode.parentNode; - } while (true); - - // since animations are detected from CSS classes, we need to flush all parent - // class-based animations so that the parent classes are all present for child - // animations to properly function (otherwise any CSS selectors may not work) - function examineParentAnimation(node, animationDetails) { - // enter/leave/move always have priority - if (animationDetails.structural || !hasAnimationClasses(animationDetails.options)) return; - - if (animationDetails.state === RUNNING_STATE) { - animationDetails.runner.end(); - } - clearElementAnimationState(node); - } - } - - function areAnimationsAllowed(element, parentElement, event) { - var bodyElementDetected = false; - var rootElementDetected = false; - var parentAnimationDetected = false; - var animateChildren; - - var parentHost = element.data(NG_ANIMATE_PIN_DATA); - if (parentHost) { - parentElement = parentHost; - } - - while (parentElement && parentElement.length) { - if (!rootElementDetected) { - // angular doesn't want to attempt to animate elements outside of the application - // therefore we need to ensure that the rootElement is an ancestor of the current element - rootElementDetected = isMatchingElement(parentElement, $rootElement); - } - - var parentNode = parentElement[0]; - if (parentNode.nodeType !== ELEMENT_NODE) { - // no point in inspecting the #document element - break; - } - - var details = activeAnimationsLookup.get(parentNode) || {}; - // either an enter, leave or move animation will commence - // therefore we can't allow any animations to take place - // but if a parent animation is class-based then that's ok - if (!parentAnimationDetected) { - parentAnimationDetected = details.structural || disabledElementsLookup.get(parentNode); - } - - if (isUndefined(animateChildren) || animateChildren === true) { - var value = parentElement.data(NG_ANIMATE_CHILDREN_DATA); - if (isDefined(value)) { - animateChildren = value; - } - } - - // there is no need to continue traversing at this point - if (parentAnimationDetected && animateChildren === false) break; - - if (!rootElementDetected) { - // angular doesn't want to attempt to animate elements outside of the application - // therefore we need to ensure that the rootElement is an ancestor of the current element - rootElementDetected = isMatchingElement(parentElement, $rootElement); - if (!rootElementDetected) { - parentHost = parentElement.data(NG_ANIMATE_PIN_DATA); - if (parentHost) { - parentElement = parentHost; - } - } - } - - if (!bodyElementDetected) { - // we also need to ensure that the element is or will be apart of the body element - // otherwise it is pointless to even issue an animation to be rendered - bodyElementDetected = isMatchingElement(parentElement, bodyElement); - } - - parentElement = parentElement.parent(); - } - - var allowAnimation = !parentAnimationDetected || animateChildren; - return allowAnimation && rootElementDetected && bodyElementDetected; - } - - function markElementAnimationState(element, state, details) { - details = details || {}; - details.state = state; - - var node = getDomNode(element); - node.setAttribute(NG_ANIMATE_ATTR_NAME, state); - - var oldValue = activeAnimationsLookup.get(node); - var newValue = oldValue - ? extend(oldValue, details) - : details; - activeAnimationsLookup.put(node, newValue); - } - }]; -}]; - -var $$rAFMutexFactory = ['$$rAF', function($$rAF) { - return function() { - var passed = false; - $$rAF(function() { - passed = true; - }); - return function(fn) { - passed ? fn() : $$rAF(fn); - }; - }; -}]; - -var $$AnimateRunnerFactory = ['$q', '$$rAFMutex', function($q, $$rAFMutex) { - var INITIAL_STATE = 0; - var DONE_PENDING_STATE = 1; - var DONE_COMPLETE_STATE = 2; - - AnimateRunner.chain = function(chain, callback) { - var index = 0; - - next(); - function next() { - if (index === chain.length) { - callback(true); - return; - } - - chain[index](function(response) { - if (response === false) { - callback(false); - return; - } - index++; - next(); - }); - } - }; - - AnimateRunner.all = function(runners, callback) { - var count = 0; - var status = true; - forEach(runners, function(runner) { - runner.done(onProgress); - }); - - function onProgress(response) { - status = status && response; - if (++count === runners.length) { - callback(status); - } - } - }; - - function AnimateRunner(host) { - this.setHost(host); - - this._doneCallbacks = []; - this._runInAnimationFrame = $$rAFMutex(); - this._state = 0; - } - - AnimateRunner.prototype = { - setHost: function(host) { - this.host = host || {}; - }, - - done: function(fn) { - if (this._state === DONE_COMPLETE_STATE) { - fn(); - } else { - this._doneCallbacks.push(fn); - } - }, - - progress: noop, - - getPromise: function() { - if (!this.promise) { - var self = this; - this.promise = $q(function(resolve, reject) { - self.done(function(status) { - status === false ? reject() : resolve(); - }); - }); - } - return this.promise; - }, - - then: function(resolveHandler, rejectHandler) { - return this.getPromise().then(resolveHandler, rejectHandler); - }, - - 'catch': function(handler) { - return this.getPromise()['catch'](handler); - }, - - 'finally': function(handler) { - return this.getPromise()['finally'](handler); - }, - - pause: function() { - if (this.host.pause) { - this.host.pause(); - } - }, - - resume: function() { - if (this.host.resume) { - this.host.resume(); - } - }, - - end: function() { - if (this.host.end) { - this.host.end(); - } - this._resolve(true); - }, - - cancel: function() { - if (this.host.cancel) { - this.host.cancel(); - } - this._resolve(false); - }, - - complete: function(response) { - var self = this; - if (self._state === INITIAL_STATE) { - self._state = DONE_PENDING_STATE; - self._runInAnimationFrame(function() { - self._resolve(response); - }); - } - }, - - _resolve: function(response) { - if (this._state !== DONE_COMPLETE_STATE) { - forEach(this._doneCallbacks, function(fn) { - fn(response); - }); - this._doneCallbacks.length = 0; - this._state = DONE_COMPLETE_STATE; - } - } - }; - - return AnimateRunner; -}]; - -var $$AnimationProvider = ['$animateProvider', function($animateProvider) { - var NG_ANIMATE_REF_ATTR = 'ng-animate-ref'; - - var drivers = this.drivers = []; - - var RUNNER_STORAGE_KEY = '$$animationRunner'; - - function setRunner(element, runner) { - element.data(RUNNER_STORAGE_KEY, runner); - } - - function removeRunner(element) { - element.removeData(RUNNER_STORAGE_KEY); - } - - function getRunner(element) { - return element.data(RUNNER_STORAGE_KEY); - } - - this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$rAFScheduler', - function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$rAFScheduler) { - - var animationQueue = []; - var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); - - var totalPendingClassBasedAnimations = 0; - var totalActiveClassBasedAnimations = 0; - var classBasedAnimationsQueue = []; - - // TODO(matsko): document the signature in a better way - return function(element, event, options) { - options = prepareAnimationOptions(options); - var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; - - // there is no animation at the current moment, however - // these runner methods will get later updated with the - // methods leading into the driver's end/cancel methods - // for now they just stop the animation from starting - var runner = new $$AnimateRunner({ - end: function() { close(); }, - cancel: function() { close(true); } - }); - - if (!drivers.length) { - close(); - return runner; - } - - setRunner(element, runner); - - var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass)); - var tempClasses = options.tempClasses; - if (tempClasses) { - classes += ' ' + tempClasses; - options.tempClasses = null; - } - - var classBasedIndex; - if (!isStructural) { - classBasedIndex = totalPendingClassBasedAnimations; - totalPendingClassBasedAnimations += 1; - } - - animationQueue.push({ - // this data is used by the postDigest code and passed into - // the driver step function - element: element, - classes: classes, - event: event, - classBasedIndex: classBasedIndex, - structural: isStructural, - options: options, - beforeStart: beforeStart, - close: close - }); - - element.on('$destroy', handleDestroyedElement); - - // we only want there to be one function called within the post digest - // block. This way we can group animations for all the animations that - // were apart of the same postDigest flush call. - if (animationQueue.length > 1) return runner; - - $rootScope.$$postDigest(function() { - totalActiveClassBasedAnimations = totalPendingClassBasedAnimations; - totalPendingClassBasedAnimations = 0; - classBasedAnimationsQueue.length = 0; - - var animations = []; - forEach(animationQueue, function(entry) { - // the element was destroyed early on which removed the runner - // form its storage. This means we can't animate this element - // at all and it already has been closed due to destruction. - if (getRunner(entry.element)) { - animations.push(entry); - } - }); - - // now any future animations will be in another postDigest - animationQueue.length = 0; - - forEach(groupAnimations(animations), function(animationEntry) { - if (animationEntry.structural) { - triggerAnimationStart(); - } else { - classBasedAnimationsQueue.push({ - node: getDomNode(animationEntry.element), - fn: triggerAnimationStart - }); - - if (animationEntry.classBasedIndex === totalActiveClassBasedAnimations - 1) { - // we need to sort each of the animations in order of parent to child - // relationships. This ensures that the child classes are applied at the - // right time. - classBasedAnimationsQueue = classBasedAnimationsQueue.sort(function(a,b) { - return b.node.contains(a.node); - }).map(function(entry) { - return entry.fn; - }); - - $$rAFScheduler(classBasedAnimationsQueue); - } - } - - function triggerAnimationStart() { - // it's important that we apply the `ng-animate` CSS class and the - // temporary classes before we do any driver invoking since these - // CSS classes may be required for proper CSS detection. - animationEntry.beforeStart(); - - var startAnimationFn, closeFn = animationEntry.close; - - // in the event that the element was removed before the digest runs or - // during the RAF sequencing then we should not trigger the animation. - var targetElement = animationEntry.anchors - ? (animationEntry.from.element || animationEntry.to.element) - : animationEntry.element; - - if (getRunner(targetElement) && getDomNode(targetElement).parentNode) { - var operation = invokeFirstDriver(animationEntry); - if (operation) { - startAnimationFn = operation.start; - } - } - - if (!startAnimationFn) { - closeFn(); - } else { - var animationRunner = startAnimationFn(); - animationRunner.done(function(status) { - closeFn(!status); - }); - updateAnimationRunners(animationEntry, animationRunner); - } - } - }); - }); - - return runner; - - // TODO(matsko): change to reference nodes - function getAnchorNodes(node) { - var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']'; - var items = node.hasAttribute(NG_ANIMATE_REF_ATTR) - ? [node] - : node.querySelectorAll(SELECTOR); - var anchors = []; - forEach(items, function(node) { - var attr = node.getAttribute(NG_ANIMATE_REF_ATTR); - if (attr && attr.length) { - anchors.push(node); - } - }); - return anchors; - } - - function groupAnimations(animations) { - var preparedAnimations = []; - var refLookup = {}; - forEach(animations, function(animation, index) { - var element = animation.element; - var node = getDomNode(element); - var event = animation.event; - var enterOrMove = ['enter', 'move'].indexOf(event) >= 0; - var anchorNodes = animation.structural ? getAnchorNodes(node) : []; - - if (anchorNodes.length) { - var direction = enterOrMove ? 'to' : 'from'; - - forEach(anchorNodes, function(anchor) { - var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR); - refLookup[key] = refLookup[key] || {}; - refLookup[key][direction] = { - animationID: index, - element: jqLite(anchor) - }; - }); - } else { - preparedAnimations.push(animation); - } - }); - - var usedIndicesLookup = {}; - var anchorGroups = {}; - forEach(refLookup, function(operations, key) { - var from = operations.from; - var to = operations.to; - - if (!from || !to) { - // only one of these is set therefore we can't have an - // anchor animation since all three pieces are required - var index = from ? from.animationID : to.animationID; - var indexKey = index.toString(); - if (!usedIndicesLookup[indexKey]) { - usedIndicesLookup[indexKey] = true; - preparedAnimations.push(animations[index]); - } - return; - } - - var fromAnimation = animations[from.animationID]; - var toAnimation = animations[to.animationID]; - var lookupKey = from.animationID.toString(); - if (!anchorGroups[lookupKey]) { - var group = anchorGroups[lookupKey] = { - structural: true, - beforeStart: function() { - fromAnimation.beforeStart(); - toAnimation.beforeStart(); - }, - close: function() { - fromAnimation.close(); - toAnimation.close(); - }, - classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes), - from: fromAnimation, - to: toAnimation, - anchors: [] // TODO(matsko): change to reference nodes - }; - - // the anchor animations require that the from and to elements both have at least - // one shared CSS class which effictively marries the two elements together to use - // the same animation driver and to properly sequence the anchor animation. - if (group.classes.length) { - preparedAnimations.push(group); - } else { - preparedAnimations.push(fromAnimation); - preparedAnimations.push(toAnimation); - } - } - - anchorGroups[lookupKey].anchors.push({ - 'out': from.element, 'in': to.element - }); - }); - - return preparedAnimations; - } - - function cssClassesIntersection(a,b) { - a = a.split(' '); - b = b.split(' '); - var matches = []; - - for (var i = 0; i < a.length; i++) { - var aa = a[i]; - if (aa.substring(0,3) === 'ng-') continue; - - for (var j = 0; j < b.length; j++) { - if (aa === b[j]) { - matches.push(aa); - break; - } - } - } - - return matches.join(' '); - } - - function invokeFirstDriver(animationDetails) { - // we loop in reverse order since the more general drivers (like CSS and JS) - // may attempt more elements, but custom drivers are more particular - for (var i = drivers.length - 1; i >= 0; i--) { - var driverName = drivers[i]; - if (!$injector.has(driverName)) continue; // TODO(matsko): remove this check - - var factory = $injector.get(driverName); - var driver = factory(animationDetails); - if (driver) { - return driver; - } - } - } - - function beforeStart() { - element.addClass(NG_ANIMATE_CLASSNAME); - if (tempClasses) { - $$jqLite.addClass(element, tempClasses); - } - } - - function updateAnimationRunners(animation, newRunner) { - if (animation.from && animation.to) { - update(animation.from.element); - update(animation.to.element); - } else { - update(animation.element); - } - - function update(element) { - getRunner(element).setHost(newRunner); - } - } - - function handleDestroyedElement() { - var runner = getRunner(element); - if (runner && (event !== 'leave' || !options.$$domOperationFired)) { - runner.end(); - } - } - - function close(rejected) { // jshint ignore:line - element.off('$destroy', handleDestroyedElement); - removeRunner(element); - - applyAnimationClasses(element, options); - applyAnimationStyles(element, options); - options.domOperation(); - - if (tempClasses) { - $$jqLite.removeClass(element, tempClasses); - } - - element.removeClass(NG_ANIMATE_CLASSNAME); - runner.complete(!rejected); - } - }; - }]; -}]; - -/* global angularAnimateModule: true, - - $$rAFMutexFactory, - $$rAFSchedulerFactory, - $$AnimateChildrenDirective, - $$AnimateRunnerFactory, - $$AnimateQueueProvider, - $$AnimationProvider, - $AnimateCssProvider, - $$AnimateCssDriverProvider, - $$AnimateJsProvider, - $$AnimateJsDriverProvider, -*/ - -/** - * @ngdoc module - * @name ngAnimate - * @description - * - * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via - * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` then the animation hooks are enabled for an Angular app. - * - *
- * - * # Usage - * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based - * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For - * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within - * the HTML element that the animation will be triggered on. - * - * ## Directive Support - * The following directives are "animation aware": - * - * | Directive | Supported Animations | - * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| - * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move | - * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave | - * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave | - * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave | - * | {@link ng.directive:ngIf#animations ngIf} | enter and leave | - * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) | - * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) | - * | {@link ng.directive:form#animation-hooks form} & {@link ng.directive:ngModel#animation-hooks ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) | - * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) | - * | {@link module:ngMessages#animations ngMessage} | enter and leave | - * - * (More information can be found by visiting each the documentation associated with each directive.) - * - * ## CSS-based Animations - * - * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML - * and CSS code we can create an animation that will be picked up by Angular when an the underlying directive performs an operation. - * - * The example below shows how an `enter` animation can be made possible on a element using `ng-if`: - * - * ```html - *
- * Fade me in out - *
- * - * - * ``` - * - * Notice the CSS class **fade**? We can now create the CSS transition code that references this class: - * - * ```css - * /* The starting CSS styles for the enter animation */ - * .fade.ng-enter { - * transition:0.5s linear all; - * opacity:0; - * } - * - * /* The finishing CSS styles for the enter animation */ - * .fade.ng-enter.ng-enter-active { - * opacity:1; - * } - * ``` - * - * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two - * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition - * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards. - * - * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions: - * - * ```css - * /* now the element will fade out before it is removed from the DOM */ - * .fade.ng-leave { - * transition:0.5s linear all; - * opacity:1; - * } - * .fade.ng-leave.ng-leave-active { - * opacity:0; - * } - * ``` - * - * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class: - * - * ```css - * /* there is no need to define anything inside of the destination - * CSS class since the keyframe will take charge of the animation */ - * .fade.ng-leave { - * animation: my_fade_animation 0.5s linear; - * -webkit-animation: my_fade_animation 0.5s linear; - * } - * - * @keyframes my_fade_animation { - * from { opacity:1; } - * to { opacity:0; } - * } - * - * @-webkit-keyframes my_fade_animation { - * from { opacity:1; } - * to { opacity:0; } - * } - * ``` - * - * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element. - * - * ### CSS Class-based Animations - * - * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different - * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added - * and removed. - * - * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class: - * - * ```html - *
- * Show and hide me - *
- * - * - * - * ``` - * - * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since - * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest. - * - * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation - * with CSS styles. - * - * ```html - *
- * Highlight this box - *
- * - * - * - * ``` - * - * We can also make use of CSS keyframes by placing them within the CSS classes. - * - * - * ### CSS Staggering Animations - * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a - * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be - * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for - * the animation. The style property expected within the stagger class can either be a **transition-delay** or an - * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). - * - * ```css - * .my-animation.ng-enter { - * /* standard transition code */ - * transition: 1s linear all; - * opacity:0; - * } - * .my-animation.ng-enter-stagger { - * /* this will have a 100ms delay between each successive leave animation */ - * transition-delay: 0.1s; - * - * /* in case the stagger doesn't work then the duration value - * must be set to 0 to avoid an accidental CSS inheritance */ - * transition-duration: 0s; - * } - * .my-animation.ng-enter.ng-enter-active { - * /* standard transition styles */ - * opacity:1; - * } - * ``` - * - * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations - * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this - * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation - * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired. - * - * The following code will issue the **ng-leave-stagger** event on the element provided: - * - * ```js - * var kids = parent.children(); - * - * $animate.leave(kids[0]); //stagger index=0 - * $animate.leave(kids[1]); //stagger index=1 - * $animate.leave(kids[2]); //stagger index=2 - * $animate.leave(kids[3]); //stagger index=3 - * $animate.leave(kids[4]); //stagger index=4 - * - * window.requestAnimationFrame(function() { - * //stagger has reset itself - * $animate.leave(kids[5]); //stagger index=0 - * $animate.leave(kids[6]); //stagger index=1 - * - * $scope.$digest(); - * }); - * ``` - * - * Stagger animations are currently only supported within CSS-defined animations. - * - * ### The `ng-animate` CSS class - * - * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation. - * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations). - * - * Therefore, animations can be applied to an element using this temporary class directly via CSS. - * - * ```css - * .zipper.ng-animate { - * transition:0.5s linear all; - * } - * .zipper.ng-enter { - * opacity:0; - * } - * .zipper.ng-enter.ng-enter-active { - * opacity:1; - * } - * .zipper.ng-leave { - * opacity:1; - * } - * .zipper.ng-leave.ng-leave-active { - * opacity:0; - * } - * ``` - * - * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove - * the CSS class once an animation has completed.) - * - * - * ## JavaScript-based Animations - * - * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared - * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the - * `module.animation()` module function we can register the ainmation. - * - * Let's see an example of a enter/leave animation using `ngRepeat`: - * - * ```html - *
- * {{ item }} - *
- * ``` - * - * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`: - * - * ```js - * myModule.animation('.slide', [function() { - * return { - * // make note that other events (like addClass/removeClass) - * // have different function input parameters - * enter: function(element, doneFn) { - * jQuery(element).fadeIn(1000, doneFn); - * - * // remember to call doneFn so that angular - * // knows that the animation has concluded - * }, - * - * move: function(element, doneFn) { - * jQuery(element).fadeIn(1000, doneFn); - * }, - * - * leave: function(element, doneFn) { - * jQuery(element).fadeOut(1000, doneFn); - * } - * } - * }] - * ``` - * - * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as - * greensock.js and velocity.js. - * - * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define - * our animations inside of the same registered animation, however, the function input arguments are a bit different: - * - * ```html - *
- * this box is moody - *
- * - * - * - * ``` - * - * ```js - * myModule.animation('.colorful', [function() { - * return { - * addClass: function(element, className, doneFn) { - * // do some cool animation and call the doneFn - * }, - * removeClass: function(element, className, doneFn) { - * // do some cool animation and call the doneFn - * }, - * setClass: function(element, addedClass, removedClass, doneFn) { - * // do some cool animation and call the doneFn - * } - * } - * }] - * ``` - * - * ## CSS + JS Animations Together - * - * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular, - * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking - * charge of the animation**: - * - * ```html - *
- * Slide in and out - *
- * ``` - * - * ```js - * myModule.animation('.slide', [function() { - * return { - * enter: function(element, doneFn) { - * jQuery(element).slideIn(1000, doneFn); - * } - * } - * }] - * ``` - * - * ```css - * .slide.ng-enter { - * transition:0.5s linear all; - * transform:translateY(-100px); - * } - * .slide.ng-enter.ng-enter-active { - * transform:translateY(0); - * } - * ``` - * - * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the - * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from - * our own JS-based animation code: - * - * ```js - * myModule.animation('.slide', ['$animateCss', function($animateCss) { - * return { - * enter: function(element, doneFn) { -* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`. - * var runner = $animateCss(element, { - * event: 'enter', - * structural: true - * }).start(); -* runner.done(doneFn); - * } - * } - * }] - * ``` - * - * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework. - * - * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or - * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that - * data into `$animateCss` directly: - * - * ```js - * myModule.animation('.slide', ['$animateCss', function($animateCss) { - * return { - * enter: function(element, doneFn) { - * var runner = $animateCss(element, { - * event: 'enter', - * addClass: 'maroon-setting', - * from: { height:0 }, - * to: { height: 200 } - * }).start(); - * - * runner.done(doneFn); - * } - * } - * }] - * ``` - * - * Now we can fill in the rest via our transition CSS code: - * - * ```css - * /* the transition tells ngAnimate to make the animation happen */ - * .slide.ng-enter { transition:0.5s linear all; } - * - * /* this extra CSS class will be absorbed into the transition - * since the $animateCss code is adding the class */ - * .maroon-setting { background:red; } - * ``` - * - * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over. - * - * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}. - * - * ## Animation Anchoring (via `ng-animate-ref`) - * - * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between - * structural areas of an application (like views) by pairing up elements using an attribute - * called `ng-animate-ref`. - * - * Let's say for example we have two views that are managed by `ng-view` and we want to show - * that there is a relationship between two components situated in within these views. By using the - * `ng-animate-ref` attribute we can identify that the two components are paired together and we - * can then attach an animation, which is triggered when the view changes. - * - * Say for example we have the following template code: - * - * ```html - * - *
- *
- * - * - * - * - * - * - * - * - * ``` - * - * Now, when the view changes (once the link is clicked), ngAnimate will examine the - * HTML contents to see if there is a match reference between any components in the view - * that is leaving and the view that is entering. It will scan both the view which is being - * removed (leave) and inserted (enter) to see if there are any paired DOM elements that - * contain a matching ref value. - * - * The two images match since they share the same ref value. ngAnimate will now create a - * transport element (which is a clone of the first image element) and it will then attempt - * to animate to the position of the second image element in the next view. For the animation to - * work a special CSS class called `ng-anchor` will be added to the transported element. - * - * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then - * ngAnimate will handle the entire transition for us as well as the addition and removal of - * any changes of CSS classes between the elements: - * - * ```css - * .banner.ng-anchor { - * /* this animation will last for 1 second since there are - * two phases to the animation (an `in` and an `out` phase) */ - * transition:0.5s linear all; - * } - * ``` - * - * We also **must** include animations for the views that are being entered and removed - * (otherwise anchoring wouldn't be possible since the new view would be inserted right away). - * - * ```css - * .view-animation.ng-enter, .view-animation.ng-leave { - * transition:0.5s linear all; - * position:fixed; - * left:0; - * top:0; - * width:100%; - * } - * .view-animation.ng-enter { - * transform:translateX(100%); - * } - * .view-animation.ng-leave, - * .view-animation.ng-enter.ng-enter-active { - * transform:translateX(0%); - * } - * .view-animation.ng-leave.ng-leave-active { - * transform:translateX(-100%); - * } - * ``` - * - * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur: - * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away - * from its origin. Once that animation is over then the `in` stage occurs which animates the - * element to its destination. The reason why there are two animations is to give enough time - * for the enter animation on the new element to be ready. - * - * The example above sets up a transition for both the in and out phases, but we can also target the out or - * in phases directly via `ng-anchor-out` and `ng-anchor-in`. - * - * ```css - * .banner.ng-anchor-out { - * transition: 0.5s linear all; - * - * /* the scale will be applied during the out animation, - * but will be animated away when the in animation runs */ - * transform: scale(1.2); - * } - * - * .banner.ng-anchor-in { - * transition: 1s linear all; - * } - * ``` - * - * - * - * - * ### Anchoring Demo - * - - - Home -
-
-
-
-
- - angular.module('anchoringExample', ['ngAnimate', 'ngRoute']) - .config(['$routeProvider', function($routeProvider) { - $routeProvider.when('/', { - templateUrl: 'home.html', - controller: 'HomeController as home' - }); - $routeProvider.when('/profile/:id', { - templateUrl: 'profile.html', - controller: 'ProfileController as profile' - }); - }]) - .run(['$rootScope', function($rootScope) { - $rootScope.records = [ - { id:1, title: "Miss Beulah Roob" }, - { id:2, title: "Trent Morissette" }, - { id:3, title: "Miss Ava Pouros" }, - { id:4, title: "Rod Pouros" }, - { id:5, title: "Abdul Rice" }, - { id:6, title: "Laurie Rutherford Sr." }, - { id:7, title: "Nakia McLaughlin" }, - { id:8, title: "Jordon Blanda DVM" }, - { id:9, title: "Rhoda Hand" }, - { id:10, title: "Alexandrea Sauer" } - ]; - }]) - .controller('HomeController', [function() { - //empty - }]) - .controller('ProfileController', ['$rootScope', '$routeParams', function($rootScope, $routeParams) { - var index = parseInt($routeParams.id, 10); - var record = $rootScope.records[index - 1]; - - this.title = record.title; - this.id = record.id; - }]); - - -

Welcome to the home page

-

Please click on an element

- - {{ record.title }} - -
- -
- {{ profile.title }} -
-
- - .record { - display:block; - font-size:20px; - } - .profile { - background:black; - color:white; - font-size:100px; - } - .view-container { - position:relative; - } - .view-container > .view.ng-animate { - position:absolute; - top:0; - left:0; - width:100%; - min-height:500px; - } - .view.ng-enter, .view.ng-leave, - .record.ng-anchor { - transition:0.5s linear all; - } - .view.ng-enter { - transform:translateX(100%); - } - .view.ng-enter.ng-enter-active, .view.ng-leave { - transform:translateX(0%); - } - .view.ng-leave.ng-leave-active { - transform:translateX(-100%); - } - .record.ng-anchor-out { - background:red; - } - -
- * - * ### How is the element transported? - * - * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting - * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element - * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The - * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match - * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied - * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class - * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element - * will become visible since the shim class will be removed. - * - * ### How is the morphing handled? - * - * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out - * what CSS classes differ between the starting element and the destination element. These different CSS classes - * will be added/removed on the anchor element and a transition will be applied (the transition that is provided - * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will - * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that - * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since - * the cloned element is placed inside of root element which is likely close to the body element). - * - * Note that if the root element is on the `` element then the cloned node will be placed inside of body. - * - * - * ## Using $animate in your directive code - * - * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application? - * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's - * imagine we have a greeting box that shows and hides itself when the data changes - * - * ```html - * Hi there - * ``` - * - * ```js - * ngModule.directive('greetingBox', ['$animate', function($animate) { - * return function(scope, element, attrs) { - * attrs.$observe('active', function(value) { - * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on'); - * }); - * }); - * }]); - * ``` - * - * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element - * in our HTML code then we can trigger a CSS or JS animation to happen. - * - * ```css - * /* normally we would create a CSS class to reference on the element */ - * greeting-box.on { transition:0.5s linear all; background:green; color:white; } - * ``` - * - * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's - * possible be sure to visit the {@link ng.$animate $animate service API page}. - * - * - * ### Preventing Collisions With Third Party Libraries - * - * Some third-party frameworks place animation duration defaults across many element or className - * selectors in order to make their code small and reuseable. This can lead to issues with ngAnimate, which - * is expecting actual animations on these elements and has to wait for their completion. - * - * You can prevent this unwanted behavior by using a prefix on all your animation classes: - * - * ```css - * /* prefixed with animate- */ - * .animate-fade-add.animate-fade-add-active { - * transition:1s linear all; - * opacity:0; - * } - * ``` - * - * You then configure `$animate` to enforce this prefix: - * - * ```js - * $animateProvider.classNameFilter(/animate-/); - * ``` - * - * This also may provide your application with a speed boost since only specific elements containing CSS class prefix - * will be evaluated for animation when any DOM changes occur in the application. - * - * ## Callbacks and Promises - * - * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger - * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has - * ended by chaining onto the returned promise that animation method returns. - * - * ```js - * // somewhere within the depths of the directive - * $animate.enter(element, parent).then(function() { - * //the animation has completed - * }); - * ``` - * - * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case - * anymore.) - * - * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering - * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view - * routing controller to hook into that: - * - * ```js - * ngModule.controller('HomePageController', ['$animate', function($animate) { - * $animate.on('enter', ngViewElement, function(element) { - * // the animation for this route has completed - * }]); - * }]) - * ``` - * - * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.) - */ - -/** - * @ngdoc service - * @name $animate - * @kind object - * - * @description - * The ngAnimate `$animate` service documentation is the same for the core `$animate` service. - * - * Click here {@link ng.$animate $animate to learn more about animations with `$animate`}. - */ -angular.module('ngAnimate', []) - .directive('ngAnimateChildren', $$AnimateChildrenDirective) - - .factory('$$rAFMutex', $$rAFMutexFactory) - .factory('$$rAFScheduler', $$rAFSchedulerFactory) - - .factory('$$AnimateRunner', $$AnimateRunnerFactory) - - .provider('$$animateQueue', $$AnimateQueueProvider) - .provider('$$animation', $$AnimationProvider) - - .provider('$animateCss', $AnimateCssProvider) - .provider('$$animateCssDriver', $$AnimateCssDriverProvider) - - .provider('$$animateJs', $$AnimateJsProvider) - .provider('$$animateJsDriver', $$AnimateJsDriverProvider); - - -})(window, window.angular); diff --git a/www/lib/angular-animate/angular-animate.min.js b/www/lib/angular-animate/angular-animate.min.js deleted file mode 100644 index a99eac13..00000000 --- a/www/lib/angular-animate/angular-animate.min.js +++ /dev/null @@ -1,52 +0,0 @@ -/* - AngularJS v1.4.3 - (c) 2010-2015 Google, Inc. http://angularjs.org - License: MIT -*/ -(function(F,t,W){'use strict';function ua(a,b,c){if(!a)throw ngMinErr("areq",b||"?",c||"required");return a}function va(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;X(a)&&(a=a.join(" "));X(b)&&(b=b.join(" "));return a+" "+b}function Ea(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function ba(a,b,c){var d="";a=X(a)?a:a&&U(a)&&a.length?a.split(/\s+/):[];u(a,function(a,s){a&&0=F&&b>=J&&(C=!0,m())}if(!K)if(g.parentNode){var x,p=[],k=function(a){if(C)D&&a&&(D=!1,m());else if(D=!a,y.animationDuration)if(a= -ma(g,D),D)l.push(a);else{var b=l,c=b.indexOf(a);0<=a&&b.splice(c,1)}},r=0", - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/angular.js/issues" - }, - "homepage": "http://angularjs.org" -} diff --git a/www/lib/angular-awesome-slider/.bower.json b/www/lib/angular-awesome-slider/.bower.json deleted file mode 100644 index 9257386f..00000000 --- a/www/lib/angular-awesome-slider/.bower.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "angular-awesome-slider", - "version": "2.4.4", - "author": { - "name": "Julien Valéry", - "email": "darul75@gmail.com" - }, - "homepage": "https://github.com/darul75/angular-awesome-slider", - "repository": { - "type": "git", - "url": "https://github.com/darul75/angular-awesome-slider.git" - }, - "keywords": [ - "angular", - "slider", - "control", - "ui" - ], - "main": [ - "./dist/angular-awesome-slider.js", - "./dist/css/angular-awesome-slider.min.css", - "./dist/img/*" - ], - "dependencies": { - "angular": "^1.3.x" - }, - "devDependencies": { - "angular-mocks": "^1.3.x", - "bourbon": "~4.2.2" - }, - "authors": [ - "darul " - ], - "description": "AngularJS directive slider control.", - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "_release": "2.4.4", - "_resolution": { - "type": "version", - "tag": "2.4.4", - "commit": "1ceb23fbc755a99a9c625dabacf7b182bbe9f9f5" - }, - "_source": "https://github.com/darul75/angular-awesome-slider.git", - "_target": "~2.4.0", - "_originalSource": "angular-awesome-slider" -} \ No newline at end of file diff --git a/www/lib/angular-awesome-slider/Gruntfile.js b/www/lib/angular-awesome-slider/Gruntfile.js deleted file mode 100644 index 0d5619cb..00000000 --- a/www/lib/angular-awesome-slider/Gruntfile.js +++ /dev/null @@ -1,136 +0,0 @@ -module.exports = function(grunt) { - 'use strict'; - - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - jshint: { - files: ['src/core/**/*.js', 'test/**/*.js'] - }, - // BOWER - bower: { - install: { - options: { - targetDir: './bower_components' - } - } - }, - // KARMA TASK CONFIG - karma: { - options: { - basePath: './', - frameworks: ['jasmine'], - files: [ - 'bower_components/angular/angular.js', - 'bower_components/angular-mocks/angular-mocks.js', - 'dist/angular-awesome-slider.min.js', - /*'src/core/ng-slider.js', - 'src/core/config/constants.js', - 'src/core/model/draggable.factory.js', - 'src/core/model/pointer.factory.js', - 'src/core/model/slider.factory.js', - 'src/core/utils/utils.factory.js', - 'src/core/template/slider.tmpl.js',*/ - 'dist/css/angular-awesome-slider.min.css', - 'test/**/*Spec.js' - ], - autoWatch: true, - singleRun: true - }, - unit: { - options: { - browsers: ['PhantomJS'] - } - }, - captureTimeout: 20000, - continuous: { - options: { - browsers: ['PhantomJS'] - } - } - }, - // LESS CSS TASKS - less: { - development: { - options: { - paths: ['src/css/less/'] - }, - files: { - 'src/css/angular-awesome-slider.css': 'src/css/less/main.less' - } - } - }, - // UGLIFY TASK - uglify: { - task1: { - options: { - preserveComments: 'some', - report: 'min', - banner: '/** \n* @license <%= pkg.name %> - v<%= pkg.version %>\n' + - '* (c) 2013 Julien VALERY https://github.com/darul75/angular-awesome-slider\n' + - '* License: MIT \n**/\n' - }, - files: { - 'dist/angular-awesome-slider.min.js': ['dist/angular-awesome-slider.js'] - /*'dist/ng-slider.tmpl.min.js': ['src/ng-slider.tmpl.js']*/ - } - } - }, - // CONCAT FILES - concat: { - options: { - separator: ';' - }, - dist: { - src: [ - 'src/core/index.js', - 'src/core/config/constants.js', - 'src/core/utils/utils.factory.js', - 'src/core/model/draggable.factory.js', - 'src/core/model/pointer.factory.js', - 'src/core/model/slider.factory.js', - 'src/core/template/slider.tmpl.js' - ], - dest: 'dist/angular-awesome-slider.js' - } - }, - // MINIFY CSS - cssmin: { - options: { - keepSpecialComments: false, - banner: '/** \n* @license <%= pkg.name %> - v<%= pkg.version %>\n' + - '* (c) 2013 Julien VALERY https://github.com/darul75/angular-awesome-slider\n' + - '* License: MIT \n**/\n' - }, - compress: { - files: { - 'dist/css/angular-awesome-slider.min.css': ['src/css/angular-awesome-slider.css'] - } - } - }, - // COPY CONTENT - copy: { - main: { - files: [ - // slider - {expand: true, flatten: true, src: ['src/img/*'], dest: 'dist/img/'}, - ] - } - }, -}); - - // LOAD PLUGINS - grunt.loadNpmTasks('grunt-bower-task'); - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-less'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-cssmin'); - grunt.loadNpmTasks('grunt-karma'); - - // TASK REGISTER - //grunt.registerTask('default', ['jshint', 'cssmin', 'uglify:task1', 'karma']); - grunt.registerTask('default', ['bower', 'copy', 'concat', 'less', 'cssmin', 'jshint', 'uglify:task1']); - grunt.registerTask('test-continuous', ['jshint', 'bower', 'karma:unit']); -}; diff --git a/www/lib/angular-awesome-slider/MIT-LICENSE.txt b/www/lib/angular-awesome-slider/MIT-LICENSE.txt deleted file mode 100644 index c9b4ae36..00000000 --- a/www/lib/angular-awesome-slider/MIT-LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) -Copyright (c) 2013 Julien Valéry - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/www/lib/angular-awesome-slider/README.md b/www/lib/angular-awesome-slider/README.md deleted file mode 100644 index d31eeb8f..00000000 --- a/www/lib/angular-awesome-slider/README.md +++ /dev/null @@ -1,259 +0,0 @@ -angular-awesome-slider [![NPM version](https://badge.fury.io/js/angular-awesome-slider.png)](http://badge.fury.io/js/angular-awesome-slider) [![Build Status](https://travis-ci.org/darul75/angular-awesome-slider.png?branch=master)](https://travis-ci.org/darul75/angular-awesome-slider) [![Join the chat at https://gitter.im/darul75/angular-awesome-slider](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/darul75/angular-awesome-slider?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -===================== - -Angular directive slider control. - -**No JQUERY dependency needed anymore** - -**Skins available** - -Why -------------- - -Original implementation provides very nice features but too much for my needs, this one just simplified. - -Source files were divided in several files, and not angular integrated. - -Screenshot -------------- - -![angular slider demo](http://darul75.github.io/angular-awesome-slider/images/slider3.png "angular slider demo screenshot") - -Demo -------------- -http://darul75.github.io/angular-awesome-slider/ - -http://jsfiddle.net/darul75/g9e9n8xc/ - -How to use it -------------- - -You should already have script required for Angular. - -```html - -``` - -to the list above, you should add: - -```html - -``` - -```html - -``` -in case you want to use your own template, omit the last line and instead add some template code -to your project: -```html - -``` - -Then, inject `angularAwesomeSlider` in your application module: - -```javascript -angular.module('myApp', ['angularAwesomeSlider']); -``` - -and then just add an `input` with `slider` directive name attribute, `value` and `options` scope variable attribute. - -```html - -``` - -'value' your slider scope end value, as string. -'options' slider scope options value as json. -'ng-disabled' angular common attribute. - -```javascript -$scope.value = "10"; -// $scope.value = "10;15"; FOR DOUBLE VIEW -``` - -### Options - -Options for your slider in json format {from:.....} - -* `from`: start value -* `to`: end value -* `step`: step value -* `dimension`: string, example " $" -* `scale`: array for scale -* `round`: how many numbers allowed after comma -* `smooth`: true/false; false snaps the button to value -* `vertical`: true/false; vertical slider, default false -* `skin`: empty or 'blue' 'plastic' 'round' -* `css`: hash object, do not mix with 'skin' ! -* `className`: custom class added to root slider DOM -* `realtime`: triggers changes and model update on every moves -* `threshold`: minimum distance allowed between 2 pointers, default both pointers overlap -* `limits`: true/false; toggles bounds labels visibility -* `modelLabels`: custom model for pointers labels based on pointer value -* `watchOptions`: default is 'true', watch this options changes by [equals](https://docs.angularjs.org/api/ng/function/angular.equals) -* `heterogeneity`: array [percentage of point on slider]/[value in that point] - -![angular slider css](http://darul75.github.io/angular-awesome-slider/images/slider2.png "angular slider css explained") -``` -css: { - background: {"background-color": "silver"}, - before: {"background-color": "purple"},// zone before default value - default: {"background-color": "white"}, // default value: 1px - after: {"background-color": "green"}, // zone after default value - pointer: {"background-color": "red"} // circle pointer - range: {"background-color": "red"} // use it if double value -} -```` -* `callback` : function triggering current value, can be useful - -```javascript -// example -callback: function(value, released) { - // useful when combined with 'realtime' option - // released it triggered when mouse up - console.log(value + " " + released); -} -``` - -* `scale` : model for slide scale - -```javascript -// divide slider into parts -scale: [0, '|', 10, '|', 20, '|' , 30, '|', 40] - -// or with some custom labels -scale: [{val:10, label:'low'}, {val:25, label:'middle'}, {val:30, label:'high'}] -``` - -* `modelLabels` : model for pointers labels by object or function - -```javascript -// overrides default value label displayed combined with 'dimension' by an arbitrary label model -modelLabels: {1: 'top', 2: 'middle', 3: 'bottom'}; - -// or dynamicaly based -modelLabels: function(value) { - return 'my value is' + value; // momentjs external library call... -} -``` - -* `heterogeneity` : repartition of possible values -```javascript -// example here, first value is percentage of slider length, second is value -heterogeneity: ['50/100', '75/250'] // 50% value is 100, 75% value must be 250 -``` - -Installation ------------- - -Using npm: - -``` -npm install angular-awesome-slider -``` - -Using bower: - -``` -bower install angular-awesome-slider -``` - -RELEASE -------------- - -* 2.4.4: move by grabbing the label -* 2.4.3: fix label + switch from range <=> one value -* 2.4.2: update angular version + fix for programmatic movement of slider (double value) -* 2.4.1: non-minified version added + bower update -* 2.4.0: fix while updating both range values from code -* 2.3.9: callback not fired in case slider is on threshold values -* 2.3.8: bind to touch AND non touch events -* 2.3.7: heterogeneity option -* 2.3.6: watch options, fix threshold and click handler + date display testing. -* 2.3.5: do not remember -* 2.3.4: fix css regressions + modelLabels with function -* 2.3.3: details for modelLabels options + merge showLabels option -* 2.3.2: fix css pointer position + hover sking pointers background positions -* 2.3.1: fix from and to in floating values -* 2.3.0: new module name, no more ng-sorry-prefix, classname option, sass/scss support, scale object option -* 2.2.6: refactoring classnames -* 2.2.5: skin availables + less all css -* 2.2.4: fix when 2 pointers overlap on limits -* 2.2.3: mouse up event indicator in callback -* 2.2.2: default indicator display + visibility and move events -* 2.2.1: fix disable+default position css+decimal value on init value -* 2.2.0: handle from greater than to + gap pointer threshold option -* 2.1.9: fix labels positions while gluing, gap was too big + options changed watch by value -* 2.1.8: fix labels positions while gluing + realtime model changes option + ngDisable option fix -* 2.1.7: fix pointer position on click for double value -* 2.1.6: starting mocha tests -* 2.1.5: directive refactoring -* 2.1.4: fix overlap on labels -* 2.1.3: bug fixes, refactoring, inline options param -* 2.1.2: bug fixes, changes in z-index via CSS and not js -* 2.1.1: override css, colors... -* 2.1.0: bug fixes -* 2.0.0: no JQuery - -### Build - -You can run the tests by running - -``` -npm install -``` -or -``` -npm test -``` - -assuming you already have `grunt` installed, otherwise you also need to do: - -``` -npm install -g grunt-cli -``` - -### Issue - -To help me on reproducing any issues, please feel free to modify/fork this fiddle: http://jsfiddle.net/darul75/b09m7183/ - -## Metrics - -[![NPM](https://nodei.co/npm/ng-slider.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/ng-slider/) - -## who's who - -Who use it ? feel free add issue or edit readme with PR, to see how you use it and give some ideas, thx - -[openenergygroup](https://www.openenergygroup.com/) - -[google?](https://www.google.com) - -## License - -The MIT License (MIT) - -Copyright (c) 2013 Julien Valéry - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - - diff --git a/www/lib/angular-awesome-slider/bower.json b/www/lib/angular-awesome-slider/bower.json deleted file mode 100644 index 85d3aaba..00000000 --- a/www/lib/angular-awesome-slider/bower.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "angular-awesome-slider", - "version": "2.4.4", - "author": { - "name": "Julien Valéry", - "email": "darul75@gmail.com" - }, - "homepage": "https://github.com/darul75/angular-awesome-slider", - "repository": { - "type": "git", - "url": "https://github.com/darul75/angular-awesome-slider.git" - }, - "keywords": [ - "angular", - "slider", - "control", - "ui" - ], - "main": [ - "./dist/angular-awesome-slider.js", - "./dist/css/angular-awesome-slider.min.css", - "./dist/img/*" - ], - "dependencies": { - "angular": "^1.3.x" - }, - "devDependencies": { - "angular-mocks": "^1.3.x", - "bourbon": "~4.2.2" - }, - "authors": [ - "darul " - ], - "description": "AngularJS directive slider control.", - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/www/lib/angular-awesome-slider/dist/angular-awesome-slider.js b/www/lib/angular-awesome-slider/dist/angular-awesome-slider.js deleted file mode 100644 index 49749246..00000000 --- a/www/lib/angular-awesome-slider/dist/angular-awesome-slider.js +++ /dev/null @@ -1,1267 +0,0 @@ -(function (angular) { - 'use strict'; - - angular.module('angularAwesomeSlider', []) - // DIRECTIVE - .directive('slider', [ - '$compile', '$templateCache','$timeout', '$window', 'slider', - function(compile, templateCache, timeout, win, Slider) { - return { - restrict : 'AE', - require: '?ngModel', - scope: { options:'=', ngDisabled: '='}, - priority: 1, - link : function(scope, element, attrs, ngModel) { - - if(!ngModel) return; - - if (!scope.options) - throw new Error('You must provide a value for "options" attribute.'); - - var injector = angular.injector(); - - // options as inline variable - if (angular.isString(scope.options)) { - scope.options = angular.toJson(scope.options); - } - - scope.mainSliderClass = 'jslider'; - scope.mainSliderClass += scope.options.skin ? ' jslider_' + scope.options.skin : ' '; - scope.mainSliderClass += scope.options.vertical ? ' vertical ' : ''; - scope.mainSliderClass += scope.options.css ? ' sliderCSS' : ''; - scope.mainSliderClass += scope.options.className ? ' ' + scope.options.className : ''; - - // handle limit labels visibility - scope.options.limits = angular.isDefined(scope.options.limits) ? scope.options.limits : true; - - // compile template - element.after(compile(templateCache.get('ng-slider/slider-bar.tmpl.html'))(scope, function(clonedElement, scope) { - scope.tmplElt = clonedElement; - })); - - // init - - var initialized = false; - - var init = function(value) { - scope.from = ''+scope.options.from; - scope.to = ''+scope.options.to; - if (scope.options.calculate && angular.isFunction(scope.options.calculate)) { - scope.from = scope.options.calculate(scope.from); - scope.to = scope.options.calculate(scope.to); - } - - var OPTIONS = { - from: !scope.options.round ? parseInt(scope.options.from, 10) : parseFloat(scope.options.from), - to: !scope.options.round ? parseInt(scope.options.to, 10) : parseFloat(scope.options.to), - step: scope.options.step, - smooth: scope.options.smooth, - limits: scope.options.limits, - round: scope.options.round || false, - value: value || ngModel.$viewValue, - dimension: '', - scale: scope.options.scale, - modelLabels: scope.options.modelLabels, - vertical: scope.options.vertical, - css: scope.options.css, - className: scope.options.className, - realtime: scope.options.realtime, - cb: forceApply, - threshold: scope.options.threshold, - heterogeneity: scope.options.heterogeneity - }; - - OPTIONS.calculate = scope.options.calculate || undefined; - OPTIONS.onstatechange = scope.options.onstatechange || undefined; - - // slider - scope.slider = !scope.slider ? slidering(element, scope.tmplElt, OPTIONS) : scope.slider.init(element, scope.tmplElt, OPTIONS); - - if (!initialized) { - initListener(); - } - - // scale - var scaleDiv = scope.tmplElt.find('div')[7]; - angular.element(scaleDiv).html(scope.slider.generateScale()); - scope.slider.drawScale(scaleDiv); - - if (scope.ngDisabled) { - disabler(scope.ngDisabled); - } - - initialized = true; - }; - - function initListener() { - // window resize listener - angular.element(win).bind('resize', function(event) { - scope.slider.onresize(); - }); - } - - // model -> view - ngModel.$render = function () { - //elm.html(ctrl.$viewValue); - var singleValue = false; - - if (!ngModel.$viewValue && ngModel.$viewValue !== 0) { - return; - } - - if (typeof(ngModel.$viewValue) === 'number') { - ngModel.$viewValue = ''+ngModel.$viewValue; - } - - if( !ngModel.$viewValue.split(';')[1]) { - scope.mainSliderClass += ' jslider-single'; - } - else { - scope.mainSliderClass = scope.mainSliderClass.replace(' jslider-single', ''); - } - - if (scope.slider) { - var vals = ngModel.$viewValue.split(";"); - scope.slider.getPointers()[0].set(vals[0], true); - if (vals[1]) { - scope.slider.getPointers()[1].set(vals[1], true); - //if moving left to right with two pointers - //we need to "finish" moving the first - if(parseInt(vals[1]) > parseInt(vals[0])){ - scope.slider.getPointers()[0].set(vals[0], true); - } - } - } - - }; - - scope.$on('slider-value-update', function(e, msg){ - init(msg.value); - timeout(function(){ - scope.slider.redrawPointers(); - }); - }); - - // view -> model - var forceApply = function(value, released) { - if (scope.disabled) - return; - scope.$apply(function() { - ngModel.$setViewValue(value); - }); - if (scope.options.callback){ - scope.options.callback(value, released); - } - }; - - // watch options - scope.$watch('options', function(value) { - timeout(function(){ - init(); - }); - }, scope.watchOptions || true); - - // disabling - var disabler = function(value) { - scope.disabled = value; - if (scope.slider) { - scope.tmplElt.toggleClass('disabled'); - scope.slider.disable(value); - } - }; - - scope.$watch('ngDisabled', function(value) { - disabler(value); - }); - - scope.limitValue = function(value) { - if (scope.options.modelLabels) { - if (angular.isFunction(scope.options.modelLabels)) { - return scope.options.modelLabels(value); - } - return scope.options.modelLabels[value] !== undefined ? scope.options.modelLabels[value] : value; - } - return value; - }; - - var slidering = function( inputElement, element, settings) { - return new Slider( inputElement, element, settings ); - }; - } - }; - }]) -.config(function() {}) -.run(function() {}); -})(angular); -;(function(angular){ - 'use strict'; - angular.module('angularAwesomeSlider').constant('sliderConstants', { - SLIDER: { - settings: { - from: 1, - to: 40, - step: 1, - smooth: true, - limits: false, - round: false, - value: "3", - dimension: "", - vertical: false, - calculate: false, - onstatechange: false, - callback: false, - realtime: false - }, - className: "jslider", - selector: ".jslider-", - css: { - visible : { visibility: "visible" }, - hidden : { visibility: "hidden" } - } - }, - EVENTS: { - - } - }); - -}(angular));;(function(angular){ - 'use strict'; - - angular.module('angularAwesomeSlider').factory('sliderUtils', ['$window', function(win) { - return { - offset: function(elm) { - // try {return elm.offset();} catch(e) {} - var rawDom = elm[0]; - var _x = 0; - var _y = 0; - var body = document.documentElement || document.body; - var scrollX = window.pageXOffset || body.scrollLeft; - var scrollY = window.pageYOffset || body.scrollTop; - _x = rawDom.getBoundingClientRect().left + scrollX; - _y = rawDom.getBoundingClientRect().top + scrollY; - return { left: _x, top:_y }; - }, - browser: function() { - // TODO finish browser detection and this case - var userAgent = win.navigator.userAgent; - var browsers = {mozilla: /mozilla/i, chrome: /chrome/i, safari: /safari/i, firefox: /firefox/i, ie: /internet explorer/i}; - for(var key in browsers) { - if (browsers[key].test(userAgent)) { - return key; - } - } - return 'unknown'; - } - }; - }]); -})(angular); - - - -;(function(angular){ - 'use strict'; - - angular.module('angularAwesomeSlider').factory('sliderDraggable', ['sliderUtils', function(utils) { - - function Draggable(){ - this._init.apply( this, arguments ); - } - - Draggable.prototype.oninit = function(){ - }; - - Draggable.prototype.events = function(){ - }; - - Draggable.prototype.onmousedown = function(){ - this.ptr.css({ position: 'absolute' }); - }; - - Draggable.prototype.onmousemove = function( evt, x, y ){ - this.ptr.css({ left: x, top: y }); - }; - - Draggable.prototype.onmouseup = function(){}; - - Draggable.prototype.isDefault = { - drag: false, - clicked: false, - toclick: true, - mouseup: false - }; - - Draggable.prototype._init = function() { - if( arguments.length > 0 ){ - this.ptr = arguments[0]; - this.label = arguments[3]; - this.parent = arguments[2]; - - if (!this.ptr) - return; - //this.outer = $(".draggable-outer"); - - this.is = {}; - angular.extend( this.is, this.isDefault ); - var offset = utils.offset(this.ptr); - - this.d = { - left: offset.left, - top: offset.top, - width: this.ptr[0].clientWidth, - height: this.ptr[0].clientHeight - }; - - this.oninit.apply( this, arguments ); - - this._events(); - } - }; - - Draggable.prototype._getPageCoords = function( event ){ - if( event.targetTouches && event.targetTouches[0] ){ - return { x: event.targetTouches[0].pageX, y: event.targetTouches[0].pageY }; - } else - return { x: event.pageX, y: event.pageY }; - }; - - Draggable.prototype._bindEvent = function( ptr, eventType, handler ){ - var self = this; - - // PS need to bind to touch and non-touch events for devices which support both - if( this.supportTouches_ ){ - ptr[0].addEventListener( this.events_[ eventType ].touch, handler, false ); - } - - ptr.bind( this.events_[ eventType ].nonTouch, handler ); - }; - - Draggable.prototype._events = function(){ - var self = this; - - this.supportTouches_ = 'ontouchend' in document; - this.events_ = { - 'click': { touch : 'touchstart', nonTouch : 'click' }, - 'down': { touch : 'touchstart', nonTouch : 'mousedown' }, - 'move': { touch : 'touchmove', nonTouch : 'mousemove' }, - 'up' : { touch : 'touchend', nonTouch: 'mouseup'}, - 'mousedown' : { touch : 'mousedown', nonTouch : 'mousedown' } - }; - - var documentElt = angular.element(window.document); - - this._bindEvent(documentElt, 'move', function(event) { - if(self.is.drag) { - event.stopPropagation(); - event.preventDefault(); - if (!self.parent.disabled) { - self._mousemove(event); - } - } - }); - this._bindEvent(documentElt, 'down', function(event) { - if(self.is.drag) { - event.stopPropagation(); - event.preventDefault(); - } - }); - this._bindEvent(documentElt, 'up', function(event) { - self._mouseup(event); - }); - - this._bindEvent( this.label, 'down', function(event) { - self._mousedown( event ); - return false; - }); - this._bindEvent( this.label, 'up', function(event) { - self._mouseup( event ); - }); - - this._bindEvent( this.ptr, 'down', function(event) { - self._mousedown( event ); - return false; - }); - this._bindEvent( this.ptr, 'up', function(event) { - self._mouseup( event ); - }); - - // TODO see if needed - this.events(); - }; - - Draggable.prototype._mousedown = function( evt ){ - this.is.drag = true; - this.is.clicked = false; - this.is.mouseup = false; - - var coords = this._getPageCoords( evt ); - this.cx = coords.x - this.ptr[0].offsetLeft; - this.cy = coords.y - this.ptr[0].offsetTop; - - angular.extend(this.d, { - left: coords.x, - top: coords.y, - width: this.ptr[0].clientWidth, - height: this.ptr[0].clientHeight - }); - - if( this.outer && this.outer.get(0) ){ - this.outer.css({ height: Math.max(this.outer.height(), $(document.body).height()), overflow: 'hidden' }); - } - - this.onmousedown( evt ); - }; - - Draggable.prototype._mousemove = function( evt ){ - this.is.toclick = false; - var coords = this._getPageCoords( evt ); - this.onmousemove( evt, coords.x - this.cx, coords.y - this.cy ); - }; - - Draggable.prototype._mouseup = function( evt ){ - var oThis = this; - - if( this.is.drag ){ - this.is.drag = false; - - var browser = utils.browser(); - - if( this.outer && this.outer.get(0) ) { - - if( browser === 'mozilla' ){ - this.outer.css({ overflow: "hidden" }); - } else { - this.outer.css({ overflow: "visible" }); - } - - // TODO finish browser detection and this case, remove following line - this.outer.css({ height: "auto" }); - // if( browser === 'ie' && $.browser.version == '6.0' ){ - // this.outer.css({ height: "100%" }); - // } else { - // this.outer.css({ height: "auto" }); - // } - - } - - this.onmouseup( evt ); - } - }; - - return Draggable; - }]); -}(angular)); -;(function(angular){ - 'use strict'; - - angular.module('angularAwesomeSlider').factory('sliderPointer', ['sliderDraggable', 'sliderUtils', function(Draggable, utils) { - - function SliderPointer() { - Draggable.apply(this, arguments); - } - - SliderPointer.prototype = new Draggable(); - - SliderPointer.prototype.oninit = function( ptr, id, vertical, label, _constructor ) { - this.uid = id; - this.parent = _constructor; - this.value = {}; - this.vertical = vertical; - this.settings = angular.copy(_constructor.settings); - this.threshold = this.settings.threshold; - }; - - SliderPointer.prototype.onmousedown = function( evt ) { - var off = utils.offset(this.parent.domNode); - - var offset = { - left: off.left, - top: off.top, - width: this.parent.domNode[0].clientWidth, - height: this.parent.domNode[0].clientHeight - }; - - this._parent = { - offset: offset, - width: offset.width, - height: offset.height - }; - - this.ptr.addClass('jslider-pointer-hover'); - }; - - SliderPointer.prototype.onmousemove = function( evt, x, y ){ - var coords = this._getPageCoords( evt ); - this._set(!this.vertical ? this.calc( coords.x ) : this.calc( coords.y )); - if( this.settings.realtime && this.settings.cb && angular.isFunction(this.settings.cb) ) - this.settings.cb.call( this.parent, this.parent.getValue(), !this.is.drag ); - }; - - SliderPointer.prototype.onmouseup = function(evt){ - if( this.settings.cb && angular.isFunction(this.settings.cb)) - this.settings.cb.call( this.parent, this.parent.getValue(), !this.is.drag ); - - if (!this.is.drag) - this.ptr.removeClass('jslider-pointer-hover'); - }; - - SliderPointer.prototype.limits = function( x ){ - return this.parent.limits(x, this); - }; - - SliderPointer.prototype.calc = function( coords ){ - return !this.vertical ? - this.limits(((coords-this._parent.offset.left)*100)/this._parent.width) - : - this.limits(((coords-this._parent.offset.top)*100)/this._parent.height); - }; - - SliderPointer.prototype.set = function( value, opt_origin ){ - this.value.origin = this.parent.round(value); - this._set(this.parent.valueToPrc(value,this), opt_origin); - }; - - SliderPointer.prototype._set = function( prc, opt_origin ){ - this.allowed = true; - - var oldOrigin = this.value.origin; - var oldPerc = this.value.prc; - - this.value.origin = this.parent.prcToValue(prc); - this.value.prc = prc; - - // check threshold - if (this.threshold && this.parent.o.pointers[1]) { - var v1 = this.value.origin, - v2 = this.parent.o.pointers[this.uid === 0 ? 1:0].value.origin; - this.allowed = Math.abs(v2 - v1) >= this.threshold; - if (!this.allowed && oldOrigin !== undefined && oldPerc !== undefined){ - this.value.origin = oldOrigin; - this.value.prc = oldPerc; - } - } - - if (!this.vertical) - this.ptr.css({left:this.value.prc+'%'}); - else - this.ptr.css({top:this.value.prc+'%', marginTop: -5}); - this.parent.redraw(this); - }; - - return SliderPointer; - }]); -}(angular)); -;(function(angular){ - 'use strict'; - - angular.module('angularAwesomeSlider').factory('slider', ['sliderPointer', 'sliderConstants', 'sliderUtils', function(SliderPointer, sliderConstants, utils) { - - function Slider(){ - return this.init.apply(this, arguments); - } - - Slider.prototype.init = function( inputNode, templateNode, settings ){ - this.settings = settings; - this.inputNode = inputNode; - this.inputNode.addClass('ng-hide'); - - this.settings.interval = this.settings.to-this.settings.from; - - if(this.settings.calculate && angular.isFunction(this.settings.calculate)) { - this.nice = this.settings.calculate; - } - - if(this.settings.onstatechange && angular.isFunction(this.settings.onstatechange)) { - this.onstatechange = this.settings.onstatechange; - } - - this.css = sliderConstants.SLIDER.css; - this.is = {init: false}; - this.o = {}; - this.initValue = {}; - this.isAsc = settings.from < settings.to; - - this.create(templateNode); - - return this; - }; - - Slider.prototype.create = function( templateNode ){ - // set skin class - // if( this.settings.skin && this.settings.skin.length > 0 ) - // this.setSkin( this.settings.skin ); - - var self = this; - - this.domNode = templateNode; - - var divs = this.domNode.find('div'), - is = this.domNode.find('i'), - angElt = angular.element, - angExt = angular.extend, - angForEach = angular.forEach, - pointer1 = angElt(divs[1]), - pointer2 = angElt(divs[2]), - pointerLabel1 = angElt(divs[5]), - pointerLabel2 = angElt(divs[6]), - indicatorLeft = angElt(is[0]), - indicatorRight = angElt(is[1]), - range = angElt(is[2]), - indicator1 = angElt(is[3]), - indicator2 = angElt(is[4]), - indicator3 = angElt(is[5]), - indicator4 = angElt(is[6]), - labels = [pointerLabel1, pointerLabel2], - pointers = [pointer1, pointer2], - off = utils.offset(this.domNode), - offset = { - left: off.left, - top: off.top, - width: this.domNode[0].clientWidth, - height: this.domNode[0].clientHeight - }, - values = self.settings.value.split(';'); - - this.sizes = { - domWidth: this.domNode[0].clientWidth, - domHeight: this.domNode[0].clientHeight, - domOffset: offset - }; - - // find some objects - angExt(this.o, { - pointers: {}, - labels: { 0: { o : pointerLabel1 }, 1: { o : pointerLabel2 } }, - limits: { 0: angular.element(divs[3]), 1: angular.element(divs[4]) }, - indicators: { 0: indicator1, 1: indicator2, 2: indicator3, 3: indicator4 } - }); - - angExt(this.o.labels[0], { - value: this.o.labels[0].o.find("span") - }); - - angExt(this.o.labels[1], { - value: this.o.labels[1].o.find("span") - }); - - // single pointer - this.settings.single = !self.settings.value.split(";")[1]; - - if (this.settings.single) { - range.addClass('ng-hide'); - } else { - range.removeClass('ng-hide'); - } - - angForEach(pointers, function(pointer, key) { - self.settings = angular.copy(self.settings); - - var value = values[key], - prev, - prevValue, - test, - value1, - offset; - - if(value) { - self.o.pointers[key] = new SliderPointer(pointer, key, self.settings.vertical, labels[key], self); - - prev = values[key-1]; - prevValue = prev ? parseInt(prev, 10 ) : undefined; - - value = self.settings.round ? parseFloat(value) : parseInt(value, 10); - - if( prev && self.isAsc ? value < prevValue : value > prevValue ) { - value = prev; - } - - // limit threshold adjust -/* test = self.isAsc ? value < self.settings.from : value > self.settings.from, - value1 = test ? self.settings.from : value; */ - - test = self.isAsc ? value > self.settings.to : value < self.settings.to; - value1 = test ? self.settings.to : value; - - self.o.pointers[key].set( value1, true ); - - // reinit position d - offset = utils.offset(self.o.pointers[key].ptr); - - self.o.pointers[key].d = { - left: offset.left, - top: offset.top - }; - } - }); - - self.domNode.bind('mousedown', self.clickHandler.apply(self)); - - this.o.value = angElt(this.domNode.find("i")[2]); - this.is.init = true; - - // CSS SKIN - if (this.settings.css) { - indicatorLeft.css(this.settings.css.background ? this.settings.css.background : {}); - indicatorRight.css(this.settings.css.background ? this.settings.css.background : {}); - if (!this.o.pointers[1]) { - indicator1.css(this.settings.css.before ? this.settings.css.before : {}); - indicator4.css(this.settings.css.after ? this.settings.css.after : {}); - } - - indicator2.css(this.settings.css.default ? this.settings.css.default : {}); - indicator3.css(this.settings.css.default ? this.settings.css.default : {}); - - range.css(this.settings.css.range ? this.settings.css.range : {}); - pointer1.css(this.settings.css.pointer ? this.settings.css.pointer : {}); - pointer2.css(this.settings.css.pointer ? this.settings.css.pointer : {}); - } - - this.redrawPointers(); - }; - - Slider.prototype.clickHandler = function() { - var self = this; - - // in case of showing/hiding - var resetPtrSize = function( ptr ) { - var ptr1 = self.o.pointers[0].ptr, - ptr2 = self.o.pointers[1].ptr, - offset1 = utils.offset(ptr1), - offset2 = utils.offset(ptr2); - - self.o.pointers[0].d = { - left: offset1.left, - top: offset1.top, - width: ptr1[0].clientWidth, - height: ptr1[0].clientHeight - }; - - self.o.pointers[1].d = { - left: offset2.left, - top: offset2.top, - width: ptr2[0].clientWidth, - height: ptr2[0].clientHeight - }; - }; - - return function(evt) { - if (self.disabled) - return; - var vertical = self.settings.vertical, - targetIdx = 0, - _off = utils.offset(self.domNode), - firstPtr = self.o.pointers[0], - secondPtr = self.o.pointers[1] ? self.o.pointers[1] : null, - tmpPtr, - evtPosition = evt.originalEvent ? evt.originalEvent: evt, - mouse = vertical ? evtPosition.pageY : evtPosition.pageX, - css = vertical ? 'top' : 'left', - offset = { left: _off.left, top: _off.top, width: self.domNode[0].clientWidth, height: self.domNode[0].clientHeight }, - targetPtr = self.o.pointers[targetIdx]; - - if (secondPtr) { - if (!secondPtr.d.width) { - resetPtrSize(); - } - var firstPtrPosition = utils.offset(firstPtr.ptr)[css]; - var secondPtrPosition = utils.offset(secondPtr.ptr)[css]; - var middleGap = Math.abs((secondPtrPosition - firstPtrPosition) / 2); - var testSecondPtrToMove = mouse >= secondPtrPosition || mouse >= (secondPtrPosition - middleGap); - if (testSecondPtrToMove) { - targetPtr = secondPtr; - } - } - targetPtr._parent = {offset: offset, width: offset.width, height: offset.height}; - var coords = firstPtr._getPageCoords( evt ); - targetPtr.cx = coords.x - targetPtr.d.left; - targetPtr.cy = coords.y - targetPtr.d.top; - targetPtr.onmousemove( evt, coords.x, coords.y); - targetPtr.onmouseup(); - angular.extend(targetPtr.d, { - left: coords.x, - top: coords.y - }); - - self.redraw(targetPtr); - return false; - }; - }; - - - Slider.prototype.disable = function( bool ) { - this.disabled = bool; - }; - - Slider.prototype.nice = function( value ){ - return value; - }; - - Slider.prototype.onstatechange = function(){}; - - Slider.prototype.limits = function( x, pointer ){ - // smooth - if(!this.settings.smooth){ - var step = this.settings.step*100 / ( this.settings.interval ); - x = Math.round( x/step ) * step; - } - - if (pointer) { - var another = this.o.pointers[1-pointer.uid]; - if(another && pointer.uid && x < another.value.prc) x = another.value.prc; - if(another && !pointer.uid && x > another.value.prc) x = another.value.prc; - } - // base limit - if(x < 0) x = 0; - if(x > 100) x = 100; - - return Math.round(x*10) / 10; - }; - - Slider.prototype.getPointers = function(){ - return this.o.pointers; - }; - - Slider.prototype.generateScale = function(){ - if (this.settings.scale && this.settings.scale.length > 0){ - var str = '', - s = this.settings.scale, - // FIX Big Scale Failure #34 - // var prc = Math.round((100/(s.length-1))*10)/10; - prc, - label, - duplicate = {}, - position = this.settings.vertical ? 'top' : 'left', - i=0; - for(; i < s.length; i++) { - if (!angular.isDefined(s[i].val)) { - prc = (100/(s.length-1)).toFixed(2); - str += '' + ( s[i] != '|' ? '' + s[i] + '' : '' ) + ''; - } - - if (s[i].val <= this.settings.to && s[i].val >= this.settings.from && ! duplicate[s[i].val]) { - duplicate[s[i].val] = true; - prc = this.valueToPrc(s[i].val); - label = s[i].label ? s[i].label : s[i].val; - str += '' + '' + label + '' + ''; - } - } - return str; - } - - return ''; - }; - - Slider.prototype.onresize = function(){ - var self = this; - - this.sizes = { - domWidth: this.domNode[0].clientWidth, - domHeight: this.domNode[0].clientHeight, - domOffset: { - left: this.domNode[0].offsetLeft, - top: this.domNode[0].offsetTop, - width: this.domNode[0].clientWidth, - height: this.domNode[0].clientHeight - } - }; - - this.redrawPointers(); - }; - - Slider.prototype.update = function(){ - this.onresize(); - this.drawScale(); - }; - - Slider.prototype.drawScale = function( scaleDiv ){ - angular.forEach(angular.element(scaleDiv).find('ins'), function(scaleLabel, key) { - scaleLabel.style.marginLeft = - scaleLabel.clientWidth / 2; - }); - }; - - Slider.prototype.redrawPointers = function() { - - angular.forEach(this.o.pointers, function(pointer){ - this.redraw(pointer); - }, this); - }; - - Slider.prototype.redraw = function( pointer ){ - if(!this.is.init) { - // this.settings.single - if(this.o.pointers[0] && !this.o.pointers[1]) { - this.originValue = this.o.pointers[0].value.prc; - this.o.indicators[0].css(!this.settings.vertical ? {left:0, width:this.o.pointers[0].value.prc + "%"} : {top:0, height:this.o.pointers[0].value.prc + "%"}); - this.o.indicators[1].css(!this.settings.vertical ? {left:this.o.pointers[0].value.prc + "%"} : {top:this.o.pointers[0].value.prc + "%"}); - this.o.indicators[3].css(!this.settings.vertical ? {left:this.o.pointers[0].value.prc + "%"} : {top:this.o.pointers[0].value.prc + "%"}); - } else { - this.o.indicators[2].css(!this.settings.vertical ? {left:this.o.pointers[1].value.prc + "%"} : {top:this.o.pointers[1].value.prc + "%"}); - this.o.indicators[0].css(!this.settings.vertical ? {left:0, width:"0"} : {top:0, height:"0"}); - this.o.indicators[3].css(!this.settings.vertical ? {left:"0", width:"0"} : {top:"0", height:"0"}); - } - - return false; - } - - this.setValue(); - - var newPos, - newWidth; - - // redraw range line - if(this.o.pointers[0] && this.o.pointers[1]) { - newPos = !this.settings.vertical ? - { left: this.o.pointers[0].value.prc + "%", width: ( this.o.pointers[1].value.prc - this.o.pointers[0].value.prc ) + "%" } - : - { top: this.o.pointers[0].value.prc + "%", height: ( this.o.pointers[1].value.prc - this.o.pointers[0].value.prc ) + "%" }; - - this.o.value.css(newPos); - - // both pointer overlap on limits - if (this.o.pointers[0].value.prc === this.o.pointers[1].value.prc) { - this.o.pointers[1].ptr.css("z-index", this.o.pointers[0].value.prc === 0 ? '3' : '1'); - } - - } - - if(this.o.pointers[0] && !this.o.pointers[1]) { - newWidth = this.o.pointers[0].value.prc - this.originValue; - if (newWidth >= 0) { - this.o.indicators[3].css(!this.settings.vertical ? {width: newWidth + "%"} : {height: newWidth + "%"}); - } - else { - this.o.indicators[3].css(!this.settings.vertical ? {width: 0} : {height: 0}); - } - - if (this.o.pointers[0].value.prc < this.originValue) { - this.o.indicators[0].css(!this.settings.vertical ? {width: this.o.pointers[0].value.prc + "%"} : {height: this.o.pointers[0].value.prc + "%"}); - } - else { - this.o.indicators[0].css(!this.settings.vertical ? {width: this.originValue + "%"} : {height: this.originValue + "%"}); - } - - } - - var value = this.nice(pointer.value.origin); - if (this.settings.modelLabels) { - if (angular.isFunction(this.settings.modelLabels)) { - value = this.settings.modelLabels(value); - } - else { - value = this.settings.modelLabels[value] !== undefined ? this.settings.modelLabels[value] : value; - } - } - - this.o.labels[pointer.uid].value.html(value); - - // redraw position of labels - this.redrawLabels( pointer ); - }; - - Slider.prototype.redrawLabels = function( pointer ) { - - function setPosition( label, sizes, prc ) { - sizes.margin = -sizes.label/2; - var domSize = !self.settings.vertical ? self.sizes.domWidth : self.sizes.domHeight; - - if (self.sizes.domWidth) { - // left limit - var label_left = sizes.border + sizes.margin; - if(label_left < 0) - sizes.margin -= label_left; - - // right limit - if(self.sizes.domWidth > 0 && sizes.border+sizes.label / 2 > domSize){ - sizes.margin = 0; - sizes.right = true; - } else - sizes.right = false; - } - - if (!self.settings.vertical) - label.o.css({ left: prc + "%", marginLeft: sizes.margin+"px", right: "auto" }); - else - label.o.css({ top: prc + "%", marginLeft: "20px", marginTop: sizes.margin, bottom: "auto" }); - if(sizes.right && self.sizes.domWidth > 0) { - if (!self.settings.vertical) - label.o.css({ left: "auto", right: 0 }); - else - label.o.css({ top: "auto", bottom: 0 }); - } - return sizes; - } - - var self = this, - label = this.o.labels[pointer.uid], - prc = pointer.value.prc, - // case hidden - labelWidthSize = label.o[0].offsetWidth === 0 ? (label.o[0].textContent.length)*7 : label.o[0].offsetWidth; - - this.sizes.domWidth = this.domNode[0].clientWidth; - this.sizes.domHeight = this.domNode[0].clientHeight; - - var sizes = { - label: !self.settings.vertical ? labelWidthSize : label.o[0].offsetHeight, - right: false, - border: (prc * (!self.settings.vertical ? this.sizes.domWidth: this.sizes.domHeight)) / 100 - }; - - var anotherIdx = pointer.uid === 0 ? 1:0, - anotherLabel, - anotherPtr; - - if (!this.settings.single && !this.settings.vertical){ - // glue if near; - anotherLabel = this.o.labels[anotherIdx]; - anotherPtr = this.o.pointers[anotherIdx]; - var label1 = this.o.labels[0], - label2 = this.o.labels[1], - ptr1 = this.o.pointers[0], - ptr2 = this.o.pointers[1], - gapBetweenLabel = ptr2.ptr[0].offsetLeft - ptr1.ptr[0].offsetLeft, - value = this.nice(anotherPtr.value.origin); - - label1.o.css(this.css.visible); - label2.o.css(this.css.visible); - - value = this.getLabelValue(value); - - if (gapBetweenLabel + 10 < label1.o[0].offsetWidth+label2.o[0].offsetWidth) { - anotherLabel.o.css(this.css.hidden); - - anotherLabel.value.html(value); - prc = (anotherPtr.value.prc - prc) / 2 + prc; - if(anotherPtr.value.prc != pointer.value.prc){ - value = this.nice(this.o.pointers[0].value.origin); - var value1 = this.nice(this.o.pointers[1].value.origin); - value = this.getLabelValue(value); - value1 = this.getLabelValue(value1); - - label.value.html(value + " – " + value1); - sizes.label = label.o[0].offsetWidth; - sizes.border = (prc * domSize) / 100; - } - } - else { - anotherLabel.value.html(value); - anotherLabel.o.css(this.css.visible); - } - } - - sizes = setPosition(label, sizes, prc); - - var domSize = !self.settings.vertical ? self.sizes.domWidth : self.sizes.domHeight; - - /* draw second label */ - if(anotherLabel){ - // case hidden - var labelWidthSize2 = label.o[0].offsetWidth === 0 ? (label.o[0].textContent.length/2)*7 : label.o[0].offsetWidth, - sizes2 = { - label: !self.settings.vertical ? labelWidthSize2: anotherLabel.o[0].offsetHeight, - right: false, - border: (anotherPtr.value.prc * this.sizes.domWidth) / 100 - }; - sizes = setPosition(anotherLabel, sizes2, anotherPtr.value.prc); - } - - this.redrawLimits(); - }; - - Slider.prototype.redrawLimits = function() { - if (this.settings.limits) { - - var limits = [true, true], - i = 0; - - for(var key in this.o.pointers){ - - if(!this.settings.single || key === 0){ - - var pointer = this.o.pointers[key], - label = this.o.labels[pointer.uid], - label_left = label.o[0].offsetLeft - this.sizes.domOffset.left, - limit = this.o.limits[0]; - - if(label_left < limit[0].clientWidth) { - limits[0] = false; - } - - limit = this.o.limits[1]; - if(label_left + label.o[0].clientWidth > this.sizes.domWidth - limit[0].clientWidth){ - limits[1] = false; - } - - } - } - - for(; i < limits.length; i++){ - if(limits[i]){ // TODO animate - angular.element(this.o.limits[i]).addClass("animate-show"); - } - else{ - angular.element(this.o.limits[i]).addClass("animate-hidde"); - } - } - } - }; - - Slider.prototype.setValue = function(){ - var value = this.getValue(); - this.inputNode.attr("value", value); - this.onstatechange.call(this, value, this.inputNode); - }; - - Slider.prototype.getValue = function(){ - if(!this.is.init) return false; - var $this = this; - - var value = ""; - angular.forEach(this.o.pointers, function(pointer, key){ - if(pointer.value.prc !== undefined && !isNaN(pointer.value.prc)) - value += (key > 0 ? ";" : "") + $this.prcToValue(pointer.value.prc); - }); - return value; - }; - - Slider.prototype.getLabelValue = function(value){ - if (this.settings.modelLabels) { - if (angular.isFunction(this.settings.modelLabels)) { - return this.settings.modelLabels(value); - } - else { - return this.settings.modelLabels[value] !== undefined ? this.settings.modelLabels[value] : value; - } - } - - return value; - }; - - Slider.prototype.getPrcValue = function(){ - if(!this.is.init) return false; - var $this = this; - - var value = ""; - // TODO remove jquery and see if % value is nice feature - /*$.each(this.o.pointers, function(i){ - if(this.value.prc !== undefined && !isNaN(this.value.prc)) value += (i > 0 ? ";" : "") + this.value.prc; - });*/ - return value; - }; - - Slider.prototype.prcToValue = function( prc ){ - var value; - if (this.settings.heterogeneity && this.settings.heterogeneity.length > 0){ - var h = this.settings.heterogeneity, - _start = 0, - _from = this.settings.round ? parseFloat(this.settings.from) : parseInt(this.settings.from, 10), - _to = this.settings.round ? parseFloat(this.settings.to) : parseInt(this.settings.to, 10), - i = 0; - - for (; i <= h.length; i++){ - var v; - if(h[i]) - v = h[i].split('/'); - else - v = [100, _to]; - - var v1 = this.settings.round ? parseFloat(v[0]) : parseInt(v[0], 10); - var v2 = this.settings.round ? parseFloat(v[1]) : parseInt(v[1], 10); - - if (prc >= _start && prc <= v1) { - value = _from + ((prc-_start) * (v2-_from)) / (v1-_start); - } - - _start = v1; - _from = v2; - } - } - else { - value = this.settings.from + (prc * this.settings.interval) / 100; - } - - return this.round(value); - }; - - Slider.prototype.valueToPrc = function( value, pointer ){ - var prc, - _from = this.settings.round ? parseFloat(this.settings.from) : parseInt(this.settings.from, 10); - - if (this.settings.heterogeneity && this.settings.heterogeneity.length > 0){ - var h = this.settings.heterogeneity, - _start = 0, - i = 0; - - for (; i <= h.length; i++) { - var v; - if(h[i]) - v = h[i].split('/'); - else - v = [100, this.settings.to]; - - var v1 = this.settings.round ? parseFloat(v[0]) : parseInt(v[0], 10); - var v2 = this.settings.round ? parseFloat(v[1]) : parseInt(v[1], 10); - - if(value >= _from && value <= v2){ - if (pointer) { - prc = pointer.limits(_start + (value-_from)*(v1-_start)/(v2-_from)); - } else { - prc = this.limits(_start + (value-_from)*(v1-_start)/(v2-_from)); - } - } - - _start = v1; _from = v2; - } - - } else { - if (pointer) { - prc = pointer.limits((value-_from)*100/this.settings.interval); - } else { - prc = this.limits((value-_from)*100/this.settings.interval); - } - } - - return prc; - }; - - Slider.prototype.round = function( value ){ - value = Math.round(value / this.settings.step) * this.settings.step; - - if(this.settings.round) - value = Math.round(value * Math.pow(10, this.settings.round)) / Math.pow(10, this.settings.round); - else - value = Math.round(value); - return value; - }; - - return Slider; - - }]); -}(angular)); -;(function(angular, undefined) { -'use strict'; - - angular.module('angularAwesomeSlider') - .run(['$templateCache', function ($templateCache) { - $templateCache.put('ng-slider/slider-bar.tmpl.html', - '' + - '
' + - '
' + - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
' + - '
' + - '
' + - '
{{options.dimension}}
' + - '
{{options.dimension}}
' + - '
{{options.dimension}}
' + - '
{{options.dimension}}
' + - '
' + - '
' + - '
'); - }]); - -})(window.angular); diff --git a/www/lib/angular-awesome-slider/dist/angular-awesome-slider.min.js b/www/lib/angular-awesome-slider/dist/angular-awesome-slider.min.js deleted file mode 100644 index 81bd82d9..00000000 --- a/www/lib/angular-awesome-slider/dist/angular-awesome-slider.min.js +++ /dev/null @@ -1,85 +0,0 @@ -/** -* @license angular-awesome-slider - v2.4.4 -* (c) 2013 Julien VALERY https://github.com/darul75/angular-awesome-slider -* License: MIT -**/ -!function(a){"use strict";a.module("angularAwesomeSlider",[]).directive("slider",["$compile","$templateCache","$timeout","$window","slider",function(b,c,d,e,f){return{restrict:"AE",require:"?ngModel",scope:{options:"=",ngDisabled:"="},priority:1,link:function(g,h,i,j){function k(){ -// window resize listener -a.element(e).bind("resize",function(a){g.slider.onresize()})}if(j){if(!g.options)throw new Error('You must provide a value for "options" attribute.');a.injector(); -// options as inline variable -a.isString(g.options)&&(g.options=a.toJson(g.options)),g.mainSliderClass="jslider",g.mainSliderClass+=g.options.skin?" jslider_"+g.options.skin:" ",g.mainSliderClass+=g.options.vertical?" vertical ":"",g.mainSliderClass+=g.options.css?" sliderCSS":"",g.mainSliderClass+=g.options.className?" "+g.options.className:"", -// handle limit labels visibility -g.options.limits=a.isDefined(g.options.limits)?g.options.limits:!0, -// compile template -h.after(b(c.get("ng-slider/slider-bar.tmpl.html"))(g,function(a,b){b.tmplElt=a})); -// init -var l=!1,m=function(b){g.from=""+g.options.from,g.to=""+g.options.to,g.options.calculate&&a.isFunction(g.options.calculate)&&(g.from=g.options.calculate(g.from),g.to=g.options.calculate(g.to));var c={from:g.options.round?parseFloat(g.options.from):parseInt(g.options.from,10),to:g.options.round?parseFloat(g.options.to):parseInt(g.options.to,10),step:g.options.step,smooth:g.options.smooth,limits:g.options.limits,round:g.options.round||!1,value:b||j.$viewValue,dimension:"",scale:g.options.scale,modelLabels:g.options.modelLabels,vertical:g.options.vertical,css:g.options.css,className:g.options.className,realtime:g.options.realtime,cb:n,threshold:g.options.threshold,heterogeneity:g.options.heterogeneity};c.calculate=g.options.calculate||void 0,c.onstatechange=g.options.onstatechange||void 0, -// slider -g.slider=g.slider?g.slider.init(h,g.tmplElt,c):p(h,g.tmplElt,c),l||k(); -// scale -var d=g.tmplElt.find("div")[7];a.element(d).html(g.slider.generateScale()),g.slider.drawScale(d),g.ngDisabled&&o(g.ngDisabled),l=!0}; -// model -> view -j.$render=function(){if((j.$viewValue||0===j.$viewValue)&&("number"==typeof j.$viewValue&&(j.$viewValue=""+j.$viewValue),j.$viewValue.split(";")[1]?g.mainSliderClass=g.mainSliderClass.replace(" jslider-single",""):g.mainSliderClass+=" jslider-single",g.slider)){var a=j.$viewValue.split(";");g.slider.getPointers()[0].set(a[0],!0),a[1]&&(g.slider.getPointers()[1].set(a[1],!0), -//if moving left to right with two pointers -//we need to "finish" moving the first -parseInt(a[1])>parseInt(a[0])&&g.slider.getPointers()[0].set(a[0],!0))}},g.$on("slider-value-update",function(a,b){m(b.value),d(function(){g.slider.redrawPointers()})}); -// view -> model -var n=function(a,b){g.disabled||(g.$apply(function(){j.$setViewValue(a)}),g.options.callback&&g.options.callback(a,b))}; -// watch options -g.$watch("options",function(a){d(function(){m()})},g.watchOptions||!0); -// disabling -var o=function(a){g.disabled=a,g.slider&&(g.tmplElt.toggleClass("disabled"),g.slider.disable(a))};g.$watch("ngDisabled",function(a){o(a)}),g.limitValue=function(b){return g.options.modelLabels?a.isFunction(g.options.modelLabels)?g.options.modelLabels(b):void 0!==g.options.modelLabels[b]?g.options.modelLabels[b]:b:b};var p=function(a,b,c){return new f(a,b,c)}}}}}]).config(function(){}).run(function(){})}(angular),function(a){"use strict";a.module("angularAwesomeSlider").constant("sliderConstants",{SLIDER:{settings:{from:1,to:40,step:1,smooth:!0,limits:!1,round:!1,value:"3",dimension:"",vertical:!1,calculate:!1,onstatechange:!1,callback:!1,realtime:!1},className:"jslider",selector:".jslider-",css:{visible:{visibility:"visible"},hidden:{visibility:"hidden"}}},EVENTS:{}})}(angular),function(a){"use strict";a.module("angularAwesomeSlider").factory("sliderUtils",["$window",function(a){return{offset:function(a){ -// try {return elm.offset();} catch(e) {} -var b=a[0],c=0,d=0,e=document.documentElement||document.body,f=window.pageXOffset||e.scrollLeft,g=window.pageYOffset||e.scrollTop;return c=b.getBoundingClientRect().left+f,d=b.getBoundingClientRect().top+g,{left:c,top:d}},browser:function(){ -// TODO finish browser detection and this case -var b=a.navigator.userAgent,c={mozilla:/mozilla/i,chrome:/chrome/i,safari:/safari/i,firefox:/firefox/i,ie:/internet explorer/i};for(var d in c)if(c[d].test(b))return d;return"unknown"}}}])}(angular),function(a){"use strict";a.module("angularAwesomeSlider").factory("sliderDraggable",["sliderUtils",function(b){function c(){this._init.apply(this,arguments)}return c.prototype.oninit=function(){},c.prototype.events=function(){},c.prototype.onmousedown=function(){this.ptr.css({position:"absolute"})},c.prototype.onmousemove=function(a,b,c){this.ptr.css({left:b,top:c})},c.prototype.onmouseup=function(){},c.prototype.isDefault={drag:!1,clicked:!1,toclick:!0,mouseup:!1},c.prototype._init=function(){if(arguments.length>0){if(this.ptr=arguments[0],this.label=arguments[3],this.parent=arguments[2],!this.ptr)return; -//this.outer = $(".draggable-outer"); -this.is={},a.extend(this.is,this.isDefault);var c=b.offset(this.ptr);this.d={left:c.left,top:c.top,width:this.ptr[0].clientWidth,height:this.ptr[0].clientHeight},this.oninit.apply(this,arguments),this._events()}},c.prototype._getPageCoords=function(a){return a.targetTouches&&a.targetTouches[0]?{x:a.targetTouches[0].pageX,y:a.targetTouches[0].pageY}:{x:a.pageX,y:a.pageY}},c.prototype._bindEvent=function(a,b,c){ -// PS need to bind to touch and non-touch events for devices which support both -this.supportTouches_&&a[0].addEventListener(this.events_[b].touch,c,!1),a.bind(this.events_[b].nonTouch,c)},c.prototype._events=function(){var b=this;this.supportTouches_="ontouchend"in document,this.events_={click:{touch:"touchstart",nonTouch:"click"},down:{touch:"touchstart",nonTouch:"mousedown"},move:{touch:"touchmove",nonTouch:"mousemove"},up:{touch:"touchend",nonTouch:"mouseup"},mousedown:{touch:"mousedown",nonTouch:"mousedown"}};var c=a.element(window.document);this._bindEvent(c,"move",function(a){b.is.drag&&(a.stopPropagation(),a.preventDefault(),b.parent.disabled||b._mousemove(a))}),this._bindEvent(c,"down",function(a){b.is.drag&&(a.stopPropagation(),a.preventDefault())}),this._bindEvent(c,"up",function(a){b._mouseup(a)}),this._bindEvent(this.label,"down",function(a){return b._mousedown(a),!1}),this._bindEvent(this.label,"up",function(a){b._mouseup(a)}),this._bindEvent(this.ptr,"down",function(a){return b._mousedown(a),!1}),this._bindEvent(this.ptr,"up",function(a){b._mouseup(a)}), -// TODO see if needed -this.events()},c.prototype._mousedown=function(b){this.is.drag=!0,this.is.clicked=!1,this.is.mouseup=!1;var c=this._getPageCoords(b);this.cx=c.x-this.ptr[0].offsetLeft,this.cy=c.y-this.ptr[0].offsetTop,a.extend(this.d,{left:c.x,top:c.y,width:this.ptr[0].clientWidth,height:this.ptr[0].clientHeight}),this.outer&&this.outer.get(0)&&this.outer.css({height:Math.max(this.outer.height(),$(document.body).height()),overflow:"hidden"}),this.onmousedown(b)},c.prototype._mousemove=function(a){this.is.toclick=!1;var b=this._getPageCoords(a);this.onmousemove(a,b.x-this.cx,b.y-this.cy)},c.prototype._mouseup=function(a){if(this.is.drag){this.is.drag=!1;var c=b.browser();this.outer&&this.outer.get(0)&&("mozilla"===c?this.outer.css({overflow:"hidden"}):this.outer.css({overflow:"visible"}), -// TODO finish browser detection and this case, remove following line -this.outer.css({height:"auto"})),this.onmouseup(a)}},c}])}(angular),function(a){"use strict";a.module("angularAwesomeSlider").factory("sliderPointer",["sliderDraggable","sliderUtils",function(b,c){function d(){b.apply(this,arguments)}return d.prototype=new b,d.prototype.oninit=function(b,c,d,e,f){this.uid=c,this.parent=f,this.value={},this.vertical=d,this.settings=a.copy(f.settings),this.threshold=this.settings.threshold},d.prototype.onmousedown=function(a){var b=c.offset(this.parent.domNode),d={left:b.left,top:b.top,width:this.parent.domNode[0].clientWidth,height:this.parent.domNode[0].clientHeight};this._parent={offset:d,width:d.width,height:d.height},this.ptr.addClass("jslider-pointer-hover")},d.prototype.onmousemove=function(b,c,d){var e=this._getPageCoords(b);this._set(this.vertical?this.calc(e.y):this.calc(e.x)),this.settings.realtime&&this.settings.cb&&a.isFunction(this.settings.cb)&&this.settings.cb.call(this.parent,this.parent.getValue(),!this.is.drag)},d.prototype.onmouseup=function(b){this.settings.cb&&a.isFunction(this.settings.cb)&&this.settings.cb.call(this.parent,this.parent.getValue(),!this.is.drag),this.is.drag||this.ptr.removeClass("jslider-pointer-hover")},d.prototype.limits=function(a){return this.parent.limits(a,this)},d.prototype.calc=function(a){return this.vertical?this.limits(100*(a-this._parent.offset.top)/this._parent.height):this.limits(100*(a-this._parent.offset.left)/this._parent.width)},d.prototype.set=function(a,b){this.value.origin=this.parent.round(a),this._set(this.parent.valueToPrc(a,this),b)},d.prototype._set=function(a,b){this.allowed=!0;var c=this.value.origin,d=this.value.prc; -// check threshold -if(this.value.origin=this.parent.prcToValue(a),this.value.prc=a,this.threshold&&this.parent.o.pointers[1]){var e=this.value.origin,f=this.parent.o.pointers[0===this.uid?1:0].value.origin;this.allowed=Math.abs(f-e)>=this.threshold,this.allowed||void 0===c||void 0===d||(this.value.origin=c,this.value.prc=d)}this.vertical?this.ptr.css({top:this.value.prc+"%",marginTop:-5}):this.ptr.css({left:this.value.prc+"%"}),this.parent.redraw(this)},d}])}(angular),function(a){"use strict";a.module("angularAwesomeSlider").factory("slider",["sliderPointer","sliderConstants","sliderUtils",function(b,c,d){function e(){return this.init.apply(this,arguments)}return e.prototype.init=function(b,d,e){return this.settings=e,this.inputNode=b,this.inputNode.addClass("ng-hide"),this.settings.interval=this.settings.to-this.settings.from,this.settings.calculate&&a.isFunction(this.settings.calculate)&&(this.nice=this.settings.calculate),this.settings.onstatechange&&a.isFunction(this.settings.onstatechange)&&(this.onstatechange=this.settings.onstatechange),this.css=c.SLIDER.css,this.is={init:!1},this.o={},this.initValue={},this.isAsc=e.from 0 ) -// this.setSkin( this.settings.skin ); -var e=this;this.domNode=c;var f=this.domNode.find("div"),g=this.domNode.find("i"),h=a.element,i=a.extend,j=a.forEach,k=h(f[1]),l=h(f[2]),m=h(f[5]),n=h(f[6]),o=h(g[0]),p=h(g[1]),q=h(g[2]),r=h(g[3]),s=h(g[4]),t=h(g[5]),u=h(g[6]),v=[m,n],w=[k,l],x=d.offset(this.domNode),y={left:x.left,top:x.top,width:this.domNode[0].clientWidth,height:this.domNode[0].clientHeight},z=e.settings.value.split(";");this.sizes={domWidth:this.domNode[0].clientWidth,domHeight:this.domNode[0].clientHeight,domOffset:y}, -// find some objects -i(this.o,{pointers:{},labels:{0:{o:m},1:{o:n}},limits:{0:a.element(f[3]),1:a.element(f[4])},indicators:{0:r,1:s,2:t,3:u}}),i(this.o.labels[0],{value:this.o.labels[0].o.find("span")}),i(this.o.labels[1],{value:this.o.labels[1].o.find("span")}), -// single pointer -this.settings.single=!e.settings.value.split(";")[1],this.settings.single?q.addClass("ng-hide"):q.removeClass("ng-hide"),j(w,function(c,f){e.settings=a.copy(e.settings);var g,h,i,j,k,l=z[f];l&&(e.o.pointers[f]=new b(c,f,e.settings.vertical,v[f],e),g=z[f-1],h=g?parseInt(g,10):void 0,l=e.settings.round?parseFloat(l):parseInt(l,10),(g&&e.isAsc?h>l:l>h)&&(l=g),i=e.isAsc?l>e.settings.to:l=q||l>=q-r;s&&(o=j)}o._parent={offset:n,width:n.width,height:n.height};var t=i._getPageCoords(e);return o.cx=t.x-o.d.left,o.cy=t.y-o.d.top,o.onmousemove(e,t.x,t.y),o.onmouseup(),a.extend(o.d,{left:t.x,top:t.y}),b.redraw(o),!1}}},e.prototype.disable=function(a){this.disabled=a},e.prototype.nice=function(a){return a},e.prototype.onstatechange=function(){},e.prototype.limits=function(a,b){ -// smooth -if(!this.settings.smooth){var c=100*this.settings.step/this.settings.interval;a=Math.round(a/c)*c}if(b){var d=this.o.pointers[1-b.uid];d&&b.uid&&ad.value.prc&&(a=d.value.prc)} -// base limit -return 0>a&&(a=0),a>100&&(a=100),Math.round(10*a)/10},e.prototype.getPointers=function(){return this.o.pointers},e.prototype.generateScale=function(){if(this.settings.scale&&this.settings.scale.length>0){for(var -// FIX Big Scale Failure #34 -// var prc = Math.round((100/(s.length-1))*10)/10; -b,c,d="",e=this.settings.scale,f={},g=this.settings.vertical?"top":"left",h=0;h'+("|"!=e[h]?""+e[h]+"":"")+""),e[h].val<=this.settings.to&&e[h].val>=this.settings.from&&!f[e[h].val]&&(f[e[h].val]=!0,b=this.valueToPrc(e[h].val),c=e[h].label?e[h].label:e[h].val,d+=''+c+"");return d}return""},e.prototype.onresize=function(){this.sizes={domWidth:this.domNode[0].clientWidth,domHeight:this.domNode[0].clientHeight,domOffset:{left:this.domNode[0].offsetLeft,top:this.domNode[0].offsetTop,width:this.domNode[0].clientWidth,height:this.domNode[0].clientHeight}},this.redrawPointers()},e.prototype.update=function(){this.onresize(),this.drawScale()},e.prototype.drawScale=function(b){a.forEach(a.element(b).find("ins"),function(a,b){a.style.marginLeft=-a.clientWidth/2})},e.prototype.redrawPointers=function(){a.forEach(this.o.pointers,function(a){this.redraw(a)},this)},e.prototype.redraw=function(b){if(!this.is.init) -// this.settings.single -return this.o.pointers[0]&&!this.o.pointers[1]?(this.originValue=this.o.pointers[0].value.prc,this.o.indicators[0].css(this.settings.vertical?{top:0,height:this.o.pointers[0].value.prc+"%"}:{left:0,width:this.o.pointers[0].value.prc+"%"}),this.o.indicators[1].css(this.settings.vertical?{top:this.o.pointers[0].value.prc+"%"}:{left:this.o.pointers[0].value.prc+"%"}),this.o.indicators[3].css(this.settings.vertical?{top:this.o.pointers[0].value.prc+"%"}:{left:this.o.pointers[0].value.prc+"%"})):(this.o.indicators[2].css(this.settings.vertical?{top:this.o.pointers[1].value.prc+"%"}:{left:this.o.pointers[1].value.prc+"%"}),this.o.indicators[0].css(this.settings.vertical?{top:0,height:"0"}:{left:0,width:"0"}),this.o.indicators[3].css(this.settings.vertical?{top:"0",height:"0"}:{left:"0",width:"0"})),!1;this.setValue();var c,d; -// redraw range line -this.o.pointers[0]&&this.o.pointers[1]&&(c=this.settings.vertical?{top:this.o.pointers[0].value.prc+"%",height:this.o.pointers[1].value.prc-this.o.pointers[0].value.prc+"%"}:{left:this.o.pointers[0].value.prc+"%",width:this.o.pointers[1].value.prc-this.o.pointers[0].value.prc+"%"},this.o.value.css(c),this.o.pointers[0].value.prc===this.o.pointers[1].value.prc&&this.o.pointers[1].ptr.css("z-index",0===this.o.pointers[0].value.prc?"3":"1")),this.o.pointers[0]&&!this.o.pointers[1]&&(d=this.o.pointers[0].value.prc-this.originValue,d>=0?this.o.indicators[3].css(this.settings.vertical?{height:d+"%"}:{width:d+"%"}):this.o.indicators[3].css(this.settings.vertical?{height:0}:{width:0}),this.o.pointers[0].value.prcf&&(b.margin-=f), -// right limit -c.sizes.domWidth>0&&b.border+b.label/2>e?(b.margin=0,b.right=!0):b.right=!1}return c.settings.vertical?a.o.css({top:d+"%",marginLeft:"20px",marginTop:b.margin,bottom:"auto"}):a.o.css({left:d+"%",marginLeft:b.margin+"px",right:"auto"}),b.right&&c.sizes.domWidth>0&&(c.settings.vertical?a.o.css({top:"auto",bottom:0}):a.o.css({left:"auto",right:0})),b}var c=this,d=this.o.labels[a.uid],e=a.value.prc, -// case hidden -f=0===d.o[0].offsetWidth?7*d.o[0].textContent.length:d.o[0].offsetWidth;this.sizes.domWidth=this.domNode[0].clientWidth,this.sizes.domHeight=this.domNode[0].clientHeight;var g,h,i={label:c.settings.vertical?d.o[0].offsetHeight:f,right:!1,border:e*(c.settings.vertical?this.sizes.domHeight:this.sizes.domWidth)/100},j=0===a.uid?1:0;if(!this.settings.single&&!this.settings.vertical){ -// glue if near; -g=this.o.labels[j],h=this.o.pointers[j];var k=this.o.labels[0],l=this.o.labels[1],m=this.o.pointers[0],n=this.o.pointers[1],o=n.ptr[0].offsetLeft-m.ptr[0].offsetLeft,p=this.nice(h.value.origin);if(k.o.css(this.css.visible),l.o.css(this.css.visible),p=this.getLabelValue(p),o+10