From f53cb76ed1f89607bb8f8c261fa771d733d04b3f Mon Sep 17 00:00:00 2001 From: PliablePixels Date: Fri, 31 Jul 2015 09:21:51 -0400 Subject: modified image access to route through index.php and fixed cookie intercept and insert --- config.xml | 5 +- plugins/android.json | 14 +- .../cordova-plugin-splashscreen/CONTRIBUTING.md | 37 + plugins/cordova-plugin-splashscreen/LICENSE | 202 + plugins/cordova-plugin-splashscreen/NOTICE | 5 + plugins/cordova-plugin-splashscreen/README.md | 131 + .../cordova-plugin-splashscreen/RELEASENOTES.md | 143 + .../cordova-plugin-splashscreen/doc/de/README.md | 119 + .../cordova-plugin-splashscreen/doc/de/index.md | 78 + .../cordova-plugin-splashscreen/doc/es/README.md | 119 + .../cordova-plugin-splashscreen/doc/es/index.md | 76 + .../cordova-plugin-splashscreen/doc/fr/README.md | 119 + .../cordova-plugin-splashscreen/doc/fr/index.md | 78 + .../cordova-plugin-splashscreen/doc/it/README.md | 119 + .../cordova-plugin-splashscreen/doc/it/index.md | 78 + .../cordova-plugin-splashscreen/doc/ja/README.md | 119 + .../cordova-plugin-splashscreen/doc/ja/index.md | 78 + .../cordova-plugin-splashscreen/doc/ko/README.md | 119 + .../cordova-plugin-splashscreen/doc/ko/index.md | 78 + .../cordova-plugin-splashscreen/doc/pl/README.md | 119 + .../cordova-plugin-splashscreen/doc/pl/index.md | 78 + .../cordova-plugin-splashscreen/doc/ru/index.md | 75 + .../cordova-plugin-splashscreen/doc/zh/README.md | 119 + .../cordova-plugin-splashscreen/doc/zh/index.md | 78 + plugins/cordova-plugin-splashscreen/package.json | 45 + plugins/cordova-plugin-splashscreen/plugin.xml | 134 + .../src/android/SplashScreen.java | 328 + .../src/blackberry10/index.js | 28 + .../src/browser/SplashScreenProxy.js | 138 + .../src/ios/CDVSplashScreen.h | 43 + .../src/ios/CDVSplashScreen.m | 330 + .../src/ios/CDVViewController+SplashScreen.h | 28 + .../src/ios/CDVViewController+SplashScreen.m | 82 + .../src/tizen/SplashScreenProxy.js | 43 + .../src/ubuntu/splashscreen.cpp | 42 + .../src/ubuntu/splashscreen.h | 52 + .../src/wp/ResolutionHelper.cs | 39 + .../src/wp/SplashScreen.cs | 252 + .../contents.xcworkspacedata | 7 + .../xcshareddata/CDVSplashScreenTest.xccheckout | 41 + .../xcshareddata/xcschemes/CordovaLib.xcscheme | 77 + .../tests/ios/CDVSplashScreenTest/.npmignore | 1 + .../CDVSplashScreenLibTests/ImageNameTest.m | 702 ++ .../ImageNameTestDelegates.h | 57 + .../ImageNameTestDelegates.m | 200 + .../CDVSplashScreenLibTests/Info.plist | 44 + .../CDVSplashScreenTest.xcodeproj/project.pbxproj | 505 + .../project.xcworkspace/contents.xcworkspacedata | 7 + .../xcshareddata/CDVSplashScreenTest.xccheckout | 41 + .../xcschemes/CDVSplashScreenLib.xcscheme | 77 + .../xcschemes/CDVSplashScreenLibTests.xcscheme | 96 + .../tests/ios/README.md | 40 + .../tests/ios/doc/de/README.md | 39 + .../tests/ios/doc/es/README.md | 39 + .../tests/ios/doc/fr/README.md | 39 + .../tests/ios/doc/it/README.md | 39 + .../tests/ios/doc/ja/README.md | 39 + .../tests/ios/doc/ko/README.md | 39 + .../tests/ios/doc/pl/README.md | 39 + .../tests/ios/doc/zh/README.md | 39 + .../tests/ios/package.json | 13 + .../cordova-plugin-splashscreen/tests/plugin.xml | 29 + plugins/cordova-plugin-splashscreen/tests/tests.js | 62 + .../www/splashscreen.js | 33 + .../www/windows/SplashScreenProxy.js | 77 + plugins/fetch.json | 24 +- plugins/ios.json | 16 +- .../CONTRIBUTING.md | 37 - plugins/org.apache.cordova.splashscreen/LICENSE | 202 - plugins/org.apache.cordova.splashscreen/NOTICE | 5 - plugins/org.apache.cordova.splashscreen/README.md | 22 - .../RELEASENOTES.md | 105 - .../doc/de/index.md | 75 - .../doc/es/index.md | 75 - .../doc/fr/index.md | 75 - .../org.apache.cordova.splashscreen/doc/index.md | 88 - .../doc/it/index.md | 75 - .../doc/ja/index.md | 74 - .../doc/ko/index.md | 75 - .../doc/pl/index.md | 75 - .../doc/ru/index.md | 75 - .../doc/zh/index.md | 74 - .../org.apache.cordova.splashscreen/package.json | 31 - plugins/org.apache.cordova.splashscreen/plugin.xml | 130 - .../src/android/SplashScreen.java | 281 - .../src/blackberry10/index.js | 28 - .../src/ios/CDVSplashScreen.h | 43 - .../src/ios/CDVSplashScreen.m | 308 - .../src/tizen/SplashScreenProxy.js | 43 - .../src/ubuntu/splashscreen.cpp | 42 - .../src/ubuntu/splashscreen.h | 52 - .../src/wp/SplashScreen.cs | 167 - .../contents.xcworkspacedata | 7 - .../xcshareddata/CDVSplashScreenTest.xccheckout | 41 - .../xcshareddata/xcschemes/CordovaLib.xcscheme | 77 - .../CDVSplashScreenLibTests/ImageNameTest.m | 702 -- .../ImageNameTestDelegates.h | 57 - .../ImageNameTestDelegates.m | 200 - .../CDVSplashScreenLibTests/Info.plist | 24 - .../CDVSplashScreenTest.xcodeproj/project.pbxproj | 505 - .../project.xcworkspace/contents.xcworkspacedata | 7 - .../xcshareddata/CDVSplashScreenTest.xccheckout | 41 - .../xcschemes/CDVSplashScreenLib.xcscheme | 77 - .../xcschemes/CDVSplashScreenLibTests.xcscheme | 96 - .../tests/ios/README.md | 21 - .../tests/ios/package.json | 13 - .../tests/plugin.xml | 29 - .../org.apache.cordova.splashscreen/tests/tests.js | 62 - .../www/splashscreen.js | 33 - .../www/windows8/SplashScreenProxy.js | 106 - www/external/angular-carousel.js | 19 +- www/index.html | 1 + www/js/EventCtrl.js | 19 +- www/js/app.js | 45 +- www/lib/angular/.bower.json | 10 +- www/lib/angular/README.md | 7 +- www/lib/angular/angular-csp.css | 8 + www/lib/angular/angular.js | 10962 +++++++++++-------- www/lib/angular/angular.min.js | 532 +- www/lib/angular/angular.min.js.gzip | Bin 49992 -> 51629 bytes www/lib/angular/angular.min.js.map | 6 +- www/lib/angular/bower.json | 2 +- www/lib/angular/index.js | 2 + www/lib/angular/package.json | 4 +- www/templates/events-modal.html | 9 +- www/templates/events.html | 18 +- 126 files changed, 13198 insertions(+), 9032 deletions(-) create mode 100644 plugins/cordova-plugin-splashscreen/CONTRIBUTING.md create mode 100644 plugins/cordova-plugin-splashscreen/LICENSE create mode 100644 plugins/cordova-plugin-splashscreen/NOTICE create mode 100644 plugins/cordova-plugin-splashscreen/README.md create mode 100644 plugins/cordova-plugin-splashscreen/RELEASENOTES.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/de/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/de/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/es/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/es/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/fr/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/fr/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/it/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/it/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/ja/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/ja/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/ko/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/ko/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/pl/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/pl/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/ru/index.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/zh/README.md create mode 100644 plugins/cordova-plugin-splashscreen/doc/zh/index.md create mode 100644 plugins/cordova-plugin-splashscreen/package.json create mode 100644 plugins/cordova-plugin-splashscreen/plugin.xml create mode 100644 plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java create mode 100644 plugins/cordova-plugin-splashscreen/src/blackberry10/index.js create mode 100644 plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js create mode 100644 plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h create mode 100644 plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m create mode 100644 plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h create mode 100644 plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m create mode 100644 plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js create mode 100644 plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp create mode 100644 plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h create mode 100644 plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs create mode 100644 plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/.npmignore create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/de/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/es/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/fr/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/it/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/ja/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/ko/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/pl/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/doc/zh/README.md create mode 100644 plugins/cordova-plugin-splashscreen/tests/ios/package.json create mode 100644 plugins/cordova-plugin-splashscreen/tests/plugin.xml create mode 100644 plugins/cordova-plugin-splashscreen/tests/tests.js create mode 100644 plugins/cordova-plugin-splashscreen/www/splashscreen.js create mode 100644 plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js delete mode 100644 plugins/org.apache.cordova.splashscreen/CONTRIBUTING.md delete mode 100644 plugins/org.apache.cordova.splashscreen/LICENSE delete mode 100644 plugins/org.apache.cordova.splashscreen/NOTICE delete mode 100644 plugins/org.apache.cordova.splashscreen/README.md delete mode 100644 plugins/org.apache.cordova.splashscreen/RELEASENOTES.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/de/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/es/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/fr/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/it/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/ja/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/ko/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/pl/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/ru/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/doc/zh/index.md delete mode 100644 plugins/org.apache.cordova.splashscreen/package.json delete mode 100644 plugins/org.apache.cordova.splashscreen/plugin.xml delete mode 100644 plugins/org.apache.cordova.splashscreen/src/android/SplashScreen.java delete mode 100644 plugins/org.apache.cordova.splashscreen/src/blackberry10/index.js delete mode 100644 plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h delete mode 100644 plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m delete mode 100644 plugins/org.apache.cordova.splashscreen/src/tizen/SplashScreenProxy.js delete mode 100644 plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.cpp delete mode 100644 plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.h delete mode 100644 plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/README.md delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/ios/package.json delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/plugin.xml delete mode 100644 plugins/org.apache.cordova.splashscreen/tests/tests.js delete mode 100644 plugins/org.apache.cordova.splashscreen/www/splashscreen.js delete mode 100644 plugins/org.apache.cordova.splashscreen/www/windows8/SplashScreenProxy.js create mode 100644 www/lib/angular/index.js diff --git a/config.xml b/config.xml index ac9d301c..dadbc7d0 100644 --- a/config.xml +++ b/config.xml @@ -15,11 +15,12 @@ - + - + + diff --git a/plugins/android.json b/plugins/android.json index 2978230a..9c919fd6 100644 --- a/plugins/android.json +++ b/plugins/android.json @@ -40,10 +40,6 @@ "xml": "", "count": 1 }, - { - "xml": "", - "count": 1 - }, { "xml": "", "count": 1 @@ -59,6 +55,10 @@ { "xml": "", "count": 1 + }, + { + "xml": "", + "count": 1 } ] } @@ -103,9 +103,6 @@ "org.apache.cordova.device": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, - "org.apache.cordova.splashscreen": { - "PACKAGE_NAME": "com.pliablepixels.zmninja" - }, "org.apache.cordova.statusbar": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, @@ -117,6 +114,9 @@ }, "com.phonegap.plugins.OrientationLock": { "PACKAGE_NAME": "com.pliablepixels.zmninja" + }, + "cordova-plugin-splashscreen": { + "PACKAGE_NAME": "com.pliablepixels.zmninja" } }, "dependent_plugins": {} diff --git a/plugins/cordova-plugin-splashscreen/CONTRIBUTING.md b/plugins/cordova-plugin-splashscreen/CONTRIBUTING.md new file mode 100644 index 00000000..f7dbcaba --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/CONTRIBUTING.md @@ -0,0 +1,37 @@ + + +# Contributing to Apache Cordova + +Anyone can contribute to Cordova. And we need your contributions. + +There are multiple ways to contribute: report bugs, improve the docs, and +contribute code. + +For instructions on this, start with the +[contribution overview](http://cordova.apache.org/#contribute). + +The details are explained there, but the important items are: + - Sign and submit an Apache ICLA (Contributor License Agreement). + - Have a Jira issue open that corresponds to your contribution. + - Run the tests so your patch doesn't break existing functionality. + +We look forward to your contributions! diff --git a/plugins/cordova-plugin-splashscreen/LICENSE b/plugins/cordova-plugin-splashscreen/LICENSE new file mode 100644 index 00000000..7a4a3ea2 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/NOTICE b/plugins/cordova-plugin-splashscreen/NOTICE new file mode 100644 index 00000000..8ec56a52 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/NOTICE @@ -0,0 +1,5 @@ +Apache Cordova +Copyright 2012 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/plugins/cordova-plugin-splashscreen/README.md b/plugins/cordova-plugin-splashscreen/README.md new file mode 100644 index 00000000..b43c2c59 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/README.md @@ -0,0 +1,131 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +This plugin displays and hides a splash screen during application launch. + +## Installation + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + +## Supported Platforms + +- Amazon Fire OS +- Android +- BlackBerry 10 +- iOS +- Windows Phone 7 and 8 +- Windows 8 +- Windows +- Browser + + +## Methods + +- splashscreen.show +- splashscreen.hide + +### Android Quirks + +In your `config.xml`, you need to add the following preferences: + + + + + +Where foo is the name of the splashscreen file, preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders. The second parameter represents how long the splashscreen will appear in milliseconds. It defaults to 3000 ms. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) +for more information. + +"SplashMaintainAspectRatio" preference is optional. If set to true, splash screen drawable is not stretched to fit screen, but instead simply "covers" the screen, like CSS "background-size:cover". This is very useful when splash screen images cannot be distorted in any way, for example when they contain scenery or text. This setting works best with images that have large margins (safe areas) that can be safely cropped on screens with different aspect ratios. + +The plugin reloads splash drawable whenever orientation changes, so you can specify different drawables for portrait and landscape orientations. + +### Browser Quirks + +You can use the following preferences in your `config.xml`: + + + + + + + + + + + +### iOS Quirks + +- `FadeSplashScreen` (boolean, defaults to `true`): Set to `false` to + prevent the splash screen from fading in and out when its display + state changes. + + + +- `FadeSplashScreenDuration` (float, defaults to `2`): Specifies the + number of seconds for the splash screen fade effect to execute. + + + +- `ShowSplashScreenSpinner` (boolean, defaults to `true`): Set to `false` + to hide the splash-screen spinner. + + + +## splashscreen.hide + +Dismiss the splash screen. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +The `config.xml` file's `AutoHideSplashScreen` setting must be +`false`. To delay hiding the splash screen for two seconds, add a +timer such as the following in the `deviceready` event handler: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + +## splashscreen.show + +Displays the splash screen. + + navigator.splashscreen.show(); + + +Your application cannot call `navigator.splashscreen.show()` until the app has +started and the `deviceready` event has fired. But since typically the splash +screen is meant to be visible before your app has started, that would seem to +defeat the purpose of the splash screen. Providing some configuration in +`config.xml` will automatically `show` the splash screen immediately after your +app launch and before it has fully started and received the `deviceready` +event. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) +for more information on doing this configuration. For this reason, it is +unlikely you need to call `navigator.splashscreen.show()` to make the splash +screen visible for app startup. + diff --git a/plugins/cordova-plugin-splashscreen/RELEASENOTES.md b/plugins/cordova-plugin-splashscreen/RELEASENOTES.md new file mode 100644 index 00000000..2c6b0013 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/RELEASENOTES.md @@ -0,0 +1,143 @@ + +# Release Notes + +### 0.2.2 (Sept 25, 2013) +* CB-4889 bumping&resetting version +* CB-4889 renaming org.apache.cordova.core.splashscreen to org.apache.cordova.splashscreen +* Rename CHANGELOG.md -> RELEASENOTES.md +* [CB-4806] Update splashscreen image bounds for iOS 7 +* [CB-4752] Incremented plugin version on dev branch. + +### 0.2.3 (Oct 9, 2013) +* [CB-4806] Re-fix Update splashscreen image bounds for iOS 7 +* [CB-4934] plugin-splashscreen should not show by default on Windows8 +* [CB-4929] plugin-splashscreen not loading proxy windows8 +* [CB-4915] Incremented plugin version on dev branch. + +### 0.2.4 (Oct 28, 2013) +* CB-5128: add repo + issue tag to plugin.xml for splashscreen plugin +* [CB-5010] Incremented plugin version on dev branch. + +### 0.2.5 (Dec 4, 2013) +* add ubuntu platform +* Added amazon-fireos platform. Change to use amazon-fireos as a platform if the user agent string contains 'cordova-amazon-fireos' +* CB-5124 - Remove splashscreen config.xml values from iOS Configuration Docs, move to plugin docs + +### 0.2.6 (Jan 02, 2014) +* CB-5658 Add doc/index.md for Splashscreen plugin +* Handle error when splash image is missing. + +### 0.2.7 (Feb 05, 2014) +* [CB-3562] Fix aspect ratio on landscape-only iPhone applications +* CB-4051 fix for splashscreen rotation problem + +### 0.3.0 (Apr 17, 2014) +* Add Tizen support to plugin +* CB-6422: [windows8] use cordova/exec/proxy +* CB-4051: [ios] - Re-fix - Splashscreen rotation problem (closes #13) +* CB-6460: Update license headers +* CB-6465: Add license headers to Tizen code +* Add NOTICE file + +### 0.3.1 (Jun 05, 2014) +* documentation translation: cordova-plugin-splashscreen +* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen +* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen +* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen +* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen +* CB-6810 Add license to CONTRIBUTING.md +* [wp8] updated quirk for and combined iOS,WP8,BB10 quirks as they are all the same +* [wp] implemented OnInit so splash screen can be shown before cordova page is loaded +* [wp] plugin must be autoloaded for AutoHideSplashScreen preference to work +* CB-6483 Use splash screen image from manifest on Windows8 +* CB-6491 add CONTRIBUTING.md +* Revert "Merge branch 'tizen' of http://github.com/siovene/cordova-plugin-splashscreen" + +### 0.3.2 (Aug 06, 2014) +* CB-6127 Updated translations for docs +* CB-7041 ios: Fix image filename logic when setting the iPad splash screen +* fixes Splashscreen crash on WP8 +* Remove outdated doc + +### 0.3.3 (Sep 17, 2014) +* CB-7249 cordova-plugin-splashscreen documentation translation +* Renamed test dir, added nested plugin.xml +* added documentation for manual tests +* CB-7196 port splashscreen tests to framework + +### 0.3.4 (Oct 03, 2014) +* Finalized iOS splash screen (image name) tests. 176 tests in all, 44 for each type of device (iPad, iPhone, iPhone5, iPhone6, iPhone 6 Plus). +* CB-7633 - (Re-fix based on updated unit tests) iPhone 6 Plus support +* Updated iOS tests for locked orientations +* Added more iOS splash screen tests. +* CB-7633 - Add support for iPhone 6/6+ +* Added failing iPhone 6/6 Plus tests. +* Added 'npm test' +* CB-7663 - iOS unit tests for splash screen +* Properly formatted splashscreen preference docs. + +### 0.3.5 (Dec 02, 2014) +* CB-7204 - Race condition when hiding and showing spinner (closes #21) +* CB-7700 cordova-plugin-splashscreen documentation translation: cordova-plugin-splashscreen + +### 1.0.0 (Feb 04, 2015) +* CB-8351 ios: Stop using deprecated IsIpad macro +* CB-3679 Add engine tag for Android >= 3.6.0 due to use of `preferences` +* CB-3679 Make SplashScreen plugin compatible with cordova-android@4.0.x + +### 2.0.0 (Apr 15, 2015) +* give users a way to install the bleeding edge. +* CB-8746 gave plugin major version bump +* CB-8797 - Splashscreen preferences FadeSplashScreenDuration and FadeSplashScreen (iOS) are missing +* CB-8836 - Crashes after animating splashscreen +* CB-8753 android: Fix missing import in previous commit +* CB-8753 android: Adds `SplashMaintainAspectRatio` preference (close #43) +* CB-8683 changed plugin-id to pacakge-name +* CB-8653 properly updated translated docs to use new id +* CB-8653 updated translated docs to use new id +* CB-8345 Make default for splashscreen resource "screen" (which is what template and CLI assume it to be) +* Revert "CB-8345 android: Make "splash" the default resource ID instead of null" +* Use TRAVIS_BUILD_DIR, install paramedic by npm +* CB-8345 android: Make "splash" the default resource ID instead of null +* docs: added Windows to supported platforms +* CB-7964 Add cordova-plugin-splashscreen support for browser platform +* CB-8653 Updated Readme +* [wp8] oops, Added back config parse result checks +* [WP8] code cleanup, minor refactors, comments to clarify some stuff. +* Extend WP8 Splash Screen to respect SplashScreen and SplashScreenDelay preferences from config file +* CB-8574 Integrate TravisCI +* CB-8438 cordova-plugin-splashscreen documentation translation: cordova-plugin-splashscreen +* CB-8538 Added package.json file +* CB-8397 Add support to 'windows' for showing the Windows Phone splashscreen + +### 2.1.0 (Jun 17, 2015) +* added missing license headers +* CB-9128 cordova-plugin-splashscreen documentation translation: cordova-plugin-splashscreen +* fix npm md issue +* Fixed iOS unit tests. +* CB-3562: Disable screen rotation for iPhone when splash screen is shown. (closes #47) +* CB-8988: Fix rotation on iOS/iPad (closes #46) +* CB-8904: Don't reset the static variable when it's destroyed, otherwise we might as well just have a member variable +* Removed wp7 from plugin.xml and package.json +* CB-8750 [wp8]: Rewrite resoultion helper +* CB-8750 [wp8]: Allow resolution-specific splashscreen images +* CB-8758 [wp8]: UnauthorizedAccessException on hide() diff --git a/plugins/cordova-plugin-splashscreen/doc/de/README.md b/plugins/cordova-plugin-splashscreen/doc/de/README.md new file mode 100644 index 00000000..f876eff8 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/de/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +Dieses Plugin zeigt und verbirgt einen Splash-Screen beim Start der Anwendung. + +## Installation + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## Unterstützte Plattformen + + * Amazon Fire OS + * Android + * BlackBerry 10 + * iOS + * Windows Phone 7 und 8 + * Windows 8 + * Windows + * Browser + +## Methoden + + * SplashScreen.Show + * SplashScreen.Hide + +### Android Eigenarten + +Sie müssen in Ihrem `"config.xml"`fügen Sie die folgenden Einstellungen: + + + + + + +Wo Foo ist der Name der Datei Splashscreen, vorzugsweise eine 9-Patch-Datei. Stellen Sie sicher, Splashcreen Dateien zu Ihrem res/xml-Verzeichnis unter den entsprechenden Ordnern hinzuzufügen. Der zweite Parameter stellt dar, wie lange das Splashscreen in Millisekunden angezeigt werden. Es wird standardmäßig auf 3000 ms. Weitere Informationen finden Sie unter [Symbole und Splash-Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). + +"SplashMaintainAspectRatio" Präferenz ist optional. Wenn wahr, Splash-Screen zeichenbaren nicht gestreckt wird, um den Bildschirm passen, sondern stattdessen einfach "" den Bildschirm, wie CSS abdeckt "Hintergrund-Größe: Schutz vor". Dies ist sehr nützlich, wenn Splash-Bildschirm Bilder können nicht, in keiner Weise, zum Beispiel verzerrt werden wenn sie Landschaft oder Text enthalten. Diese Einstellung funktioniert am besten mit Bildern, die große Margen (sichere Bereiche) haben, die sicher auf Bildschirme mit unterschiedlichen Seitenverhältnissen zugeschnitten werden können. + +Das Plugin lädt platsch zeichenbaren wenn Ausrichtung ändert, sodass Sie verschiedene Drawables für hoch- und Querformat Ausrichtungen angeben können. + +### Browser-Eigenheiten + +In Ihrem `"config.xml"`können Sie die folgenden Einstellungen: + + + + + + + + + + + +### iOS Macken + + * `FadeSplashScreen` (Boolean, standardmäßig auf `true festgelegt`): um zu verhindern, dass den Begrüßungsbildschirm ein-und ausblenden bei ihrer Anzeige Statusänderungen auf `false` festgelegt. + + + + + * `FadeSplashScreenDuration` (float, Standardwert ist `2`): gibt die Anzahl der Sekunden für den Begrüßungsbildschirm fade Effekt ausgeführt. + + + + + * `ShowSplashScreenSpinner` (Boolean, standardmäßig auf `true festgelegt`): auf `false` festgelegt wird, um den Begrüßungsbildschirm Spinner auszublenden. + + + + +## SplashScreen.Hide + +Schließen Sie den Splash-Screen. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Eigenarten + +Die Datei `config.xml` `AutoHideSplashScreen` Einstellung muss `false` sein. Verstecken des Begrüßungsbildschirms für zwei Sekunden Verzögerung, fügen Sie einen Timer wie die folgende in der `deviceready`-Ereignishandler: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## SplashScreen.Show + +Zeigt den Begrüßungsbildschirm. + + navigator.splashscreen.show(); + + +Ihre Anwendung kann nicht `navigator.splashscreen.show()` aufrufen, bis die app begonnen hat und das `deviceready`-Ereignis ausgelöst hat. Aber da in der Regel der Splash-Screen soll sichtbar sein, bevor die Anwendung gestartet wurde, scheint die Niederlage der Zweck des Begrüßungsbildschirms. Somit einige Konfiguration in der Datei `config.xml` werden automatisch die Splash `show` sofort nach Ihrer app-Start und Bildschirm bevor es voll begonnen hat, und das `deviceready`-Ereignis empfangen. Weitere Informationen zu dieser Konfiguration finden Sie unter [Symbole und Splash-Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). Aus diesem Grund ist es unwahrscheinlich, dass Sie `navigator.splashscreen.show()` damit den Splash-Screen sichtbar ist für app-Start aufrufen müssen. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/de/index.md b/plugins/cordova-plugin-splashscreen/doc/de/index.md new file mode 100644 index 00000000..b9fc40d2 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/de/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +Dieses Plugin zeigt und verbirgt einen Splash-Screen beim Start der Anwendung. + +## Installation + + cordova plugin add cordova-plugin-splashscreen + + +## Unterstützte Plattformen + +* Amazon Fire OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 und 8 +* Windows 8 + +## Methoden + +* SplashScreen.Show +* SplashScreen.Hide + +### Android Eigenarten + +Sie müssen in der config.xml folgende Einstellungen vornehmen: + + + + + +Wo Foo ist der Name der Datei Splashscreen, vorzugsweise eine 9-Patch-Datei. Stellen Sie sicher, Splashcreen Dateien zu Ihrem res/xml-Verzeichnis unter den entsprechenden Ordnern hinzuzufügen. Der zweite Parameter stellt dar, wie lange das Splashscreen in Millisekunden angezeigt werden. Es wird standardmäßig auf 3000 ms. Weitere Informationen finden Sie unter [Symbole und Splash-Screens][1]. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## SplashScreen.Hide + +Schließen Sie den Splash-Screen. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Eigenarten + +Die Datei `config.xml` `AutoHideSplashScreen` Einstellung muss `false` sein. Verstecken des Begrüßungsbildschirms für zwei Sekunden Verzögerung, fügen Sie einen Timer wie die folgende in der `deviceready`-Ereignishandler: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## SplashScreen.Show + +Zeigt den Begrüßungsbildschirm. + + navigator.splashscreen.show(); + + +Ihre Anwendung kann nicht `navigator.splashscreen.show()` aufrufen, bis die app begonnen hat und das `deviceready`-Ereignis ausgelöst hat. Aber da in der Regel der Splash-Screen soll sichtbar sein, bevor die Anwendung gestartet wurde, scheint die Niederlage der Zweck des Begrüßungsbildschirms. Somit einige Konfiguration in der Datei `config.xml` werden automatisch die Splash `show` sofort nach Ihrer app-Start und Bildschirm bevor es voll begonnen hat, und das `deviceready`-Ereignis empfangen. Weitere Informationen zu dieser Konfiguration finden Sie unter [Symbole und Splash-Screens][1]. Aus diesem Grund ist es unwahrscheinlich, dass Sie `navigator.splashscreen.show()` damit den Splash-Screen sichtbar ist für app-Start aufrufen müssen. diff --git a/plugins/cordova-plugin-splashscreen/doc/es/README.md b/plugins/cordova-plugin-splashscreen/doc/es/README.md new file mode 100644 index 00000000..1a94161a --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/es/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +Este plugin muestra y esconde una pantalla de bienvenida durante el inicio de la aplicación. + +## Instalación + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## Plataformas soportadas + + * Amazon fire OS + * Android + * BlackBerry 10 + * iOS + * Windows Phone 7 y 8 + * Windows 8 + * Windows + * Explorador + +## Métodos + + * splashscreen.show + * splashscreen.hide + +### Rarezas Android + +En el `archivo config.xml`, es necesario agregar las siguientes preferencias: + + + + + + +Donde foo es el nombre del archivo splashscreen, preferiblemente un archivo de 9 parche. Asegúrese de agregar tus archivos splashcreen en tu directorio res/xml bajo las carpetas apropiadas. El segundo parámetro representa cuánto aparecerán el splashscreen en milisegundos. Valor predeterminado es ms 3000. Ver [los iconos y salpicadura pantallas](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) para obtener más información. + +Preferencia "SplashMaintainAspectRatio" es opcional. Si establece en true, pantalla dibujable no es estirado para caber la pantalla, pero en su lugar simplemente "cover" la pantalla, como CSS "background-size: cover". Esto es muy útil cuando las imágenes de pantallas splash no distorsionadas de cualquier manera, por ejemplo cuando contienen texto o paisaje. Esta opción funciona mejor con imágenes que tienen bordes grandes (zonas seguras) que pueden ser recortadas con seguridad en pantallas con diferentes relaciones de aspecto. + +El plugin recarga splash dibujable cuando cambia de orientación, por lo que puede especificar diferente dibujo para orientaciones vertical y horizontal. + +### Navegador rarezas + +Puede utilizar las siguientes preferencias en el `archivo config.xml`: + + + + + + + + + + + +### iOS rarezas + + * `FadeSplashScreen` (booleano, por defecto `true`): establecida en `false` para evitar que la pantalla de bienvenida de descolorarse adentro y hacia fuera cuando cambia su estado de presentación. + + + + + * `FadeSplashScreenDuration` (float, por defecto es `2`): especifica el número de segundos para que la pantalla se descolora efecto para ejecutar. + + + + + * `ShowSplashScreenSpinner` (booleano, por defecto `true`): establecida en `false` para ocultar la ruleta de la pantalla de bienvenida. + + + + +## splashscreen.hide + +Despedir a la pantalla de bienvenida. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +El `config.xml` del archivo `AutoHideSplashScreen` la configuración debe ser `false` . Para retrasar oculta la pantalla splash durante dos segundos, agregue un temporizador como la siguiente en el `deviceready` controlador de eventos: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +Muestra la pantalla de bienvenida. + + navigator.splashscreen.show(); + + +La aplicación no se puede llamar `navigator.splashscreen.show()` hasta que haya iniciado la aplicación y el `deviceready` evento ha despedido. Pero puesto que normalmente la pantalla está destinada a ser visible antes de que comience su aplicación, que parecería que el propósito de la pantalla de bienvenida. Proporcionar cierta configuración en `config.xml` automáticamente `show` la pantalla de presentación inmediatamente después de su lanzamiento de la aplicación y antes de ser completamente ha iniciado y recibió el `deviceready` evento. Ver [los iconos y salpicadura pantallas](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) para obtener más información sobre haciendo esta configuración. Por esta razón, es poco probable que necesitas llamar a `navigator.splashscreen.show()` para hacer la pantalla visible para el inicio de la aplicación. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/es/index.md b/plugins/cordova-plugin-splashscreen/doc/es/index.md new file mode 100644 index 00000000..3295c27f --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/es/index.md @@ -0,0 +1,76 @@ + + +# cordova-plugin-splashscreen + +Este plugin muestra y esconde una pantalla de bienvenida durante el inicio de la aplicación. + +## Instalación + + cordova plugin add cordova-plugin-splashscreen + + +## Plataformas soportadas + +* Amazon fire OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 y 8 +* Windows 8 + +## Métodos + +* splashscreen.show +* splashscreen.hide + +### Rarezas Android + +En el archivo config.xml, tienes que añadir las siguientes preferencias: + + < nombre de preferencia = "SplashScreen" value = "foo" / >< nombre de preferencia = "SplashScreenDelay" value = "10000" / > + + +Donde foo es el nombre del archivo splashscreen, preferiblemente un archivo de 9 parche. Asegúrese de agregar tus archivos splashcreen en tu directorio res/xml bajo las carpetas apropiadas. El segundo parámetro representa cuánto aparecerán el splashscreen en milisegundos. Valor predeterminado es ms 3000. Ver [los iconos y salpicadura pantallas][1] para obtener más información. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.hide + +Despedir a la pantalla de bienvenida. + + Navigator.SplashScreen.Hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +El `config.xml` del archivo `AutoHideSplashScreen` la configuración debe ser `false` . Para retrasar oculta la pantalla splash durante dos segundos, agregue un temporizador como la siguiente en el `deviceready` controlador de eventos: + + setTimeout(function() {navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +Muestra la pantalla de bienvenida. + + Navigator.SplashScreen.Show(); + + +La aplicación no se puede llamar `navigator.splashscreen.show()` hasta que haya iniciado la aplicación y el `deviceready` evento ha despedido. Pero puesto que normalmente la pantalla está destinada a ser visible antes de que comience su aplicación, que parecería que el propósito de la pantalla de bienvenida. Proporcionar cierta configuración en `config.xml` automáticamente `show` la pantalla de presentación inmediatamente después de su lanzamiento de la aplicación y antes de ser completamente ha iniciado y recibió el `deviceready` evento. Ver [los iconos y salpicadura pantallas][1] para obtener más información sobre haciendo esta configuración. Por esta razón, es poco probable que necesitas llamar a `navigator.splashscreen.show()` para hacer la pantalla visible para el inicio de la aplicación. diff --git a/plugins/cordova-plugin-splashscreen/doc/fr/README.md b/plugins/cordova-plugin-splashscreen/doc/fr/README.md new file mode 100644 index 00000000..65f58803 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/fr/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +Ce plugin affiche et masque un écran de démarrage lors du lancement de l'application. + +## Installation + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## Plates-formes supportées + + * Amazon Fire OS + * Android + * BlackBerry 10 + * iOS + * Windows Phone 7 et 8 + * Windows 8 + * Windows + * Navigateur + +## Méthodes + + * splashscreen.Show + * splashscreen.Hide + +### Quirks Android + +Dans votre `fichier config.xml`, vous devez ajouter les préférences suivantes : + + + + + + +Où foo est le nom du fichier splashscreen, préférablement un fichier de 9 correctif. Assurez-vous d'ajouter vos fichiers splashcreen dans votre répertoire res/xml dans les dossiers appropriés. Le deuxième paramètre représente combien de temps le splashscreen apparaîtra en millisecondes. Il est par défaut à 3000 ms. Pour plus d'informations, consultez [icônes et écrans de démarrage](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). + +Préférence de « SplashMaintainAspectRatio » est facultative. Si défini à true, écran de démarrage drawable n'est pas étirée pour s'adapter écran, mais plutôt simplement « couvre » l'écran, comme CSS "fond-taille : couverture". Ceci est très utile lorsque images écran de démarrage ne peut pas être déformées en quelque sorte, par exemple lorsqu'ils contiennent des décors ou texte. Ce paramètre fonctionne mieux avec des images qui ont des marges importantes (zones de sécurité) qui peuvent être recadrées en toute sécurité sur les écrans avec des proportions différentes. + +Le plugin recharge splash drawable chaque fois que l'orientation change, donc vous pouvez spécifier différents drawables pour les orientations portrait et paysage. + +### Bizarreries navigateur + +Vous pouvez utiliser les préférences suivantes dans votre `fichier config.xml`: + + + + + + + + + + + +### Notes au sujet d'iOS + + * `FadeSplashScreen` (boolean, par défaut est `true`): la valeur `false` pour empêcher l'écran de démarrage de fading in et out lorsque son état d'affichage est modifié. + + + + + * `FadeSplashScreenDuration` (float, la valeur par défaut `2`): spécifie le nombre de secondes que l'écran de démarrage s'estomper l'effet d'exécuter. + + + + + * `ShowSplashScreenSpinner` (boolean, par défaut est `true`): la valeur `false` pour masquer le cône de l'écran de démarrage. + + + + +## splashscreen.Hide + +Faire disparaître de l'écran de démarrage. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +Paramètre `AutoHideSplashScreen` du fichier `config.xml` doit avoir la valeur `false`. Pour retarder la cacher l'écran de démarrage pendant deux secondes, ajouter un minuteur semblable à la suivante dans le gestionnaire d'événements `deviceready` : + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.Show + +Affiche l'écran de démarrage. + + navigator.splashscreen.show(); + + +Votre application ne peut pas appeler `navigator.splashscreen.show()` jusqu'à ce que l'application a commencé et l'événement `deviceready` est déclenché. Mais puisqu'en général, l'écran de démarrage est destiné à être visible avant que votre application a commencé, qui semblerait à l'encontre des objectifs de l'écran de démarrage. Fournir une configuration dans le fichier `config.xml` automatiquement `show` le splash projettera immédiatement après votre lancement de l'app et avant qu'il a complètement démarré et a reçu l'événement `deviceready`. Voir les [icônes et les écrans de démarrage](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) pour plus d'informations sur la conduite de cette configuration. Pour cette raison, il est peu probable que vous devez appeler `navigator.splashscreen.show()` pour rendre l'écran de démarrage visible pour le démarrage de l'application. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/fr/index.md b/plugins/cordova-plugin-splashscreen/doc/fr/index.md new file mode 100644 index 00000000..6d2fd088 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/fr/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +Ce plugin affiche et masque un écran de démarrage lors du lancement de l'application. + +## Installation + + cordova plugin add cordova-plugin-splashscreen + + +## Plates-formes prises en charge + +* Amazon Fire OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 et 8 +* Windows 8 + +## Méthodes + +* splashscreen.Show +* splashscreen.Hide + +### Quirks Android + +Dans votre fichier config.xml, vous devez ajouter les préférences suivantes : + + + + + +Où foo est le nom du fichier splashscreen, préférablement un fichier de 9 correctif. Assurez-vous d'ajouter vos fichiers splashcreen dans votre répertoire res/xml dans les dossiers appropriés. Le deuxième paramètre représente combien de temps le splashscreen apparaîtra en millisecondes. Il est par défaut à 3000 ms. Pour plus d'informations, consultez [icônes et écrans de démarrage][1]. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.Hide + +Faire disparaître de l'écran de démarrage. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +Paramètre `AutoHideSplashScreen` du fichier `config.xml` doit avoir la valeur `false`. Pour retarder la cacher l'écran de démarrage pendant deux secondes, ajouter un minuteur semblable à la suivante dans le gestionnaire d'événements `deviceready` : + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.Show + +Affiche l'écran de démarrage. + + navigator.splashscreen.show(); + + +Votre application ne peut pas appeler `navigator.splashscreen.show()` jusqu'à ce que l'application a commencé et l'événement `deviceready` est déclenché. Mais puisqu'en général, l'écran de démarrage est destiné à être visible avant que votre application a commencé, qui semblerait à l'encontre des objectifs de l'écran de démarrage. Fournir une configuration dans le fichier `config.xml` automatiquement `show` le splash projettera immédiatement après votre lancement de l'app et avant qu'il a complètement démarré et a reçu l'événement `deviceready`. Voir les [icônes et les écrans de démarrage][1] pour plus d'informations sur la conduite de cette configuration. Pour cette raison, il est peu probable que vous devez appeler `navigator.splashscreen.show()` pour rendre l'écran de démarrage visible pour le démarrage de l'application. diff --git a/plugins/cordova-plugin-splashscreen/doc/it/README.md b/plugins/cordova-plugin-splashscreen/doc/it/README.md new file mode 100644 index 00000000..2a6c6ba4 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/it/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +Questo plugin Visualizza e nasconde una schermata iniziale durante l'avvio dell'applicazione. + +## Installazione + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## Piattaforme supportate + + * Amazon fuoco OS + * Android + * BlackBerry 10 + * iOS + * Windows Phone 7 e 8 + * Windows 8 + * Windows + * Browser + +## Metodi + + * splashscreen + * splashscreen.Hide + +### Stranezze Android + +Nel vostro `config. XML`, è necessario aggiungere le seguenti preferenze: + + + + + + +Dove foo è il nome del file splashscreen, preferibilmente un file 9 patch. Assicurati di aggiungere i tuoi file splashcreen res/xml nella directory sotto cartelle appropriate. Il secondo parametro rappresenta quanto tempo lo splashscreen apparirà in millisecondi. Il valore predefinito è 3000 ms. Per ulteriori informazioni, vedere [icone e schermate iniziali](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). + +"SplashMaintainAspectRatio" preferenza è facoltativo. Se impostato su true, schermata iniziale drawable non viene adattata per misura lo schermo, ma invece semplicemente "copre" lo schermo, come CSS "sfondo-dimensione: copertina". Questo è molto utile quando immagini schermata iniziale non possono essere distorta in qualche modo, per esempio quando contengono testo o scenario. Questa impostazione funziona meglio con immagini che hanno grandi margini (zone sicure) che possono essere ritagliati in modo sicuro su schermi con proporzioni diverse. + +Il plugin viene ricaricata splash drawable ogni volta che cambia orientamento, è possibile specificare diversi parte per orientamento verticale e orizzontale. + +### Stranezze browser + +Nel vostro `config. XML`, è possibile utilizzare le seguenti preferenze: + + + + + + + + + + + +### iOS stranezze + + * `FadeSplashScreen` (boolean, impostazioni predefinite a `true`): impostare su `false` per impedire che la schermata iniziale e scompaiono quando cambia il relativo stato di visualizzazione. + + + + + * `FadeSplashScreenDuration` (float, il valore predefinito è `2`): specifica il numero di secondi per la schermata iniziale dissolvenza effetto da eseguire. + + + + + * `ShowSplashScreenSpinner` (boolean, impostazioni predefinite a `true`): impostare su `false` per nascondere la filatrice schermata iniziale. + + + + +## splashscreen.Hide + +Respingere la schermata iniziale. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +Impostazione `AutoHideSplashScreen` del file `config.xml` deve essere `false`. Per ritardare nascondendo la schermata iniziale per due secondi, aggiungere un timer ad esempio nel gestore eventi `deviceready`: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen + +Visualizza la schermata iniziale. + + navigator.splashscreen.show(); + + +L'applicazione non può chiamare `navigator.splashscreen.show()` fino a quando l'app ha iniziato e ha generato l'evento `deviceready`. Ma poiché in genere la schermata iniziale è destinata ad essere visibile prima app ha iniziato, che sembrerebbe per sconfiggere lo scopo della schermata iniziale. Fornendo qualche configurazione nel `file config.xml` sarà automaticamente `show` il tonfo schermo subito dopo il lancio dell'app e prima che completamente ha iniziato e ha ricevuto l'evento `deviceready`. Per ulteriori informazioni su facendo questa configurazione, vedere [icone e schermate iniziali](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). Per questo motivo, è improbabile che dovete chiamare `navigator.splashscreen.show()` per rendere la schermata visibile per avvio di app. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/it/index.md b/plugins/cordova-plugin-splashscreen/doc/it/index.md new file mode 100644 index 00000000..70435415 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/it/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +Questo plugin Visualizza e nasconde una schermata iniziale durante l'avvio dell'applicazione. + +## Installazione + + cordova plugin add cordova-plugin-splashscreen + + +## Piattaforme supportate + +* Amazon fuoco OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 e 8 +* Windows 8 + +## Metodi + +* splashscreen +* splashscreen.Hide + +### Stranezze Android + +Nel vostro config. xml, è necessario aggiungere le seguenti preferenze: + + + + + +Dove foo è il nome del file splashscreen, preferibilmente un file 9 patch. Assicurati di aggiungere i tuoi file splashcreen res/xml nella directory sotto cartelle appropriate. Il secondo parametro rappresenta quanto tempo lo splashscreen apparirà in millisecondi. Il valore predefinito è 3000 ms. Per ulteriori informazioni, vedere [icone e schermate iniziali][1]. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.Hide + +Respingere la schermata iniziale. + + navigator.splashscreen.hide(); + + +### BlackBerry 10, WP8, iOS Quirk + +Impostazione `AutoHideSplashScreen` del file `config.xml` deve essere `false`. Per ritardare nascondendo la schermata iniziale per due secondi, aggiungere un timer ad esempio nel gestore eventi `deviceready`: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen + +Visualizza la schermata iniziale. + + navigator.splashscreen.show(); + + +L'applicazione non può chiamare `navigator.splashscreen.show()` fino a quando l'app ha iniziato e ha generato l'evento `deviceready`. Ma poiché in genere la schermata iniziale è destinata ad essere visibile prima app ha iniziato, che sembrerebbe per sconfiggere lo scopo della schermata iniziale. Fornendo qualche configurazione nel `file config.xml` sarà automaticamente `show` il tonfo schermo subito dopo il lancio dell'app e prima che completamente ha iniziato e ha ricevuto l'evento `deviceready`. Per ulteriori informazioni su facendo questa configurazione, vedere [icone e schermate iniziali][1]. Per questo motivo, è improbabile che dovete chiamare `navigator.splashscreen.show()` per rendere la schermata visibile per avvio di app. diff --git a/plugins/cordova-plugin-splashscreen/doc/ja/README.md b/plugins/cordova-plugin-splashscreen/doc/ja/README.md new file mode 100644 index 00000000..a688b279 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/ja/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +このプラグインが表示され、アプリケーションの起動中にスプラッシュ スクリーンを非表示にします。 + +## インストール + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## サポートされているプラットフォーム + + * アマゾン火 OS + * アンドロイド + * ブラックベリー 10 + * iOS + * Windows Phone 7 と 8 + * Windows 8 + * Windows + * ブラウザー + +## メソッド + + * splashscreen.show + * splashscreen.hide + +### Android の癖 + +あなたの`config.xml`内の次の設定を追加する必要があります。 + + + + + + +Foo ができれば 9 パッチファイル splashscreen ファイルの名前です。 解像度/xml ディレクトリの適切なフォルダーの下に splashcreen ファイルを追加することを確認します。 2 番目のパラメーターは、スプラッシュ ・ スクリーンがの表示時間 (ミリ秒単位) を表します。 デフォルトでは 3000 ミリ秒です。 詳細については、[アイコンとスプラッシュ画面](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) を参照してください。 + +"SplashMaintainAspectRatio"の設定はオプションです。 True の場合、スプラッシュ画面描画に設定画面を埋めるために拡大されませんが、代わりに単に「カバー」画面では、CSS のような場合「背景-サイズ: カバー」. これは、たとえば風景またはテキストが含まれている場合、任意の方法でスプラッシュ画面画像が歪むことができない非常に便利です。 この設定は、画面と異なる縦横比で安全にトリミングすることができます大規模なマージン (安全な地域) の画像に適しています。 + +縦長と横長の異なるドロウアブルを指定できるように、プラグインは向きを変更するたびにスプラッシュ ドロウアブルをリロードします。 + +### ブラウザーの癖 + +あなたの`config.xml`で次の設定を使用できます。 + + + + + + + + + + + +### iOS の癖 + + * `FadeSplashScreen`(ブール値、既定で [ `true`): スプラッシュ画面がフェードインとフェードアウトの表示状態が変更されたときすることを防ぐために`false`に設定します。 + + + + + * `FadeSplashScreenDuration`(float, デフォルトは`2`): スプラッシュ画面の秒数のフェードを実行する効果を指定します。 + + + + + * `ShowSplashScreenSpinner`(ブール値、既定で [ `true`): スプラッシュ スクリーン スピナーを非表示にするを`false`に設定します。 + + + + +## splashscreen.hide + +スプラッシュ スクリーンを閉じます。 + + navigator.splashscreen.hide(); + + +### ブラックベリー 10、WP8、iOS の気まぐれ + +`config.xml` ファイルの `AutoHideSplashScreen` の設定は `false` である必要があります。 遅延を 2 秒間スプラッシュ スクリーンを非表示に `deviceready` イベント ハンドラーで、次のようタイマーを追加します。 + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +スプラッシュ画面が表示されます。 + + navigator.splashscreen.show(); + + +アプリが開始され、`deviceready` イベントが発生するまで、アプリケーションは `navigator.splashscreen.show()` を呼び出すことはできません。 しかし、以来、通常スプラッシュ画面アプリ開始前に表示するものですと思われる、スプラッシュ スクリーンの目的の敗北します。 `config.xml` にいくつかの構成を提供するは自動的に `表示` スプラッシュ画面、アプリを起動後すぐに、それが完全に起動し、`deviceready` イベントを受信する前に。 詳細についてはこの構成を行うには、[アイコンとスプラッシュ画面](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) を参照してください。 この理由のためにアプリ起動時のスプラッシュ スクリーンを確認 `navigator.splashscreen.show()` をコールする必要がある可能性が高いです。 \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/ja/index.md b/plugins/cordova-plugin-splashscreen/doc/ja/index.md new file mode 100644 index 00000000..24e72e5a --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/ja/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +このプラグインが表示され、アプリケーションの起動中にスプラッシュ スクリーンを非表示にします。 + +## インストール + + cordova plugin add cordova-plugin-splashscreen + + +## サポートされているプラットフォーム + +* アマゾン火 OS +* アンドロイド +* ブラックベリー 10 +* iOS +* Windows Phone 7 と 8 +* Windows 8 + +## メソッド + +* splashscreen.show +* splashscreen.hide + +### Android の癖 + +あなたの config.xml を以下の設定を追加する必要があります。 + + + + + +Foo ができれば 9 パッチファイル splashscreen ファイルの名前です。 解像度/xml ディレクトリの適切なフォルダーの下に splashcreen ファイルを追加することを確認します。 2 番目のパラメーターは、スプラッシュ ・ スクリーンがの表示時間 (ミリ秒単位) を表します。 デフォルトでは 3000 ミリ秒です。 詳細については、[アイコンとスプラッシュ画面][1] を参照してください。 + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.hide + +スプラッシュ スクリーンを閉じます。 + + navigator.splashscreen.hide(); + + +### ブラックベリー 10、WP8、iOS の気まぐれ + +`config.xml` ファイルの `AutoHideSplashScreen` の設定は `false` である必要があります。 遅延を 2 秒間スプラッシュ スクリーンを非表示に `deviceready` イベント ハンドラーで、次のようタイマーを追加します。 + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +スプラッシュ画面が表示されます。 + + navigator.splashscreen.show(); + + +アプリが開始され、`deviceready` イベントが発生するまで、アプリケーションは `navigator.splashscreen.show()` を呼び出すことはできません。 しかし、以来、通常スプラッシュ画面アプリ開始前に表示するものですと思われる、スプラッシュ スクリーンの目的の敗北します。 `config.xml` にいくつかの構成を提供するは自動的に `表示` スプラッシュ画面、アプリを起動後すぐに、それが完全に起動し、`deviceready` イベントを受信する前に。 詳細についてはこの構成を行うには、[アイコンとスプラッシュ画面][1] を参照してください。 この理由のためにアプリ起動時のスプラッシュ スクリーンを確認 `navigator.splashscreen.show()` をコールする必要がある可能性が高いです。 diff --git a/plugins/cordova-plugin-splashscreen/doc/ko/README.md b/plugins/cordova-plugin-splashscreen/doc/ko/README.md new file mode 100644 index 00000000..5e10d207 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/ko/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +이 플러그인은 표시 하 고 응용 프로그램 실행 하는 동안 시작 화면을 숨깁니다. + +## 설치 + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## 지원 되는 플랫폼 + + * 아마존 화재 운영 체제 + * 안 드 로이드 + * 블랙베리 10 + * iOS + * Windows Phone 7과 8 + * 윈도우 8 + * 윈도우 + * 브라우저 + +## 메서드 + + * splashscreen.show + * splashscreen.hide + +### 안 드 로이드 단점 + +`Config.xml`에 다음 환경 설정에 추가 해야 합니다. + + + + + + +여기서 foo splashscreen 파일, 선호 9 패치 파일의 이름입니다. 적절 한 폴더 아래 res/xml 디렉토리에 splashcreen 파일을 추가 해야 합니다. 두 번째 매개 변수는 splashscreen 얼마나 밀리초 단위로 표시 됩니다 나타냅니다. 3000 ms 기본값으로 사용 됩니다. 자세한 내용은 [아이콘 및 시작 화면을](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) 참조 하십시오. + +"SplashMaintainAspectRatio" 취향은 선택 사항입니다. Drawable, 시작 화면 설정 화면에 맞게 확장 되지 하지만 대신 단순히 "커버" CSS 같은 화면 "배경-크기: 덮개". 시작 화면 이미지 예: 풍경 또는 텍스트를 포함 하는 경우 어떤 식으로든에서 왜곡 될 수 없는 경우에 매우 유용 합니다. 이 설정은 큰 여백 (안전 지역) 안전 하 게 다른 종횡비와 화면에 자를 수 있는 이미지에 가장 적합 합니다. + +플러그인 다시 로드 스플래시 drawable 방향이 변경 될 때마다 세로 및 가로 방향에 대 한 다른 drawables를 지정할 수 있도록 합니다. + +### 브라우저 만지면 + +`Config.xml`에 다음 기본 설정을 사용할 수 있습니다. + + + + + + + + + + + +### iOS 단점 + + * `FadeSplashScreen` (부울 `true`로 기본값): 시작 화면 표시 상태로 변경 될 때 밖으로 퇴색 하지 않도록 하려면 `false` 로 설정. + + + + + * `FadeSplashScreenDuration` (부동, `2`기본값): 시작 화면에 대 한 초 페이드 효과를 실행 하는 지정 합니다. + + + + + * `ShowSplashScreenSpinner` (부울 `true`로 기본값): 스플래시 화면 회전자를 숨기려면 `false` 로 설정. + + + + +## splashscreen.hide + +시작 화면을 닫습니다. + + navigator.splashscreen.hide(); + + +### 블랙베리 10, WP8, iOS 특질 + +`config.xml` 파일의 `AutoHideSplashScreen` 설정을 `false` 여야 합니다. 2 초 동안 시작 화면을 숨기고 지연, `deviceready` 이벤트 처리기에서 다음과 같은 타이머를 추가: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +시작 화면을 표시합니다. + + navigator.splashscreen.show(); + + +응용 프로그램 시작 및 `deviceready` 이벤트는 발생 될 때까지 응용 프로그램이 `navigator.splashscreen.show()`을 호출할 수 없습니다. 하지만 그 스플래시 스크린의 목적 것 같다 일반적으로 시작 화면이 당신의 애플 리 케이 션 시작 하기 전에 표시 될 운명이 다, 이후. `config.xml에서` 몇 가지 구성을 제공 하 자동으로 스플래시 `표시` 화면 애플 리 케이 션 출시 직후와 그것은 완벽 하 게 시작 하 고 `deviceready` 이벤트를 받은 전에. 이 구성 하 고 자세한 내용은 [아이콘 및 시작 화면을](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) 참조 하십시오. 이러한 이유로, 그것은 가능성이 시작 화면은 응용 프로그램 시작에 대 한 표시 되도록 `navigator.splashscreen.show()`를 호출 해야입니다. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/ko/index.md b/plugins/cordova-plugin-splashscreen/doc/ko/index.md new file mode 100644 index 00000000..6a0ea989 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/ko/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +이 플러그인은 표시 하 고 응용 프로그램 실행 하는 동안 시작 화면을 숨깁니다. + +## 설치 + + cordova plugin add cordova-plugin-splashscreen + + +## 지원 되는 플랫폼 + +* 아마존 화재 운영 체제 +* 안 드 로이드 +* 블랙베리 10 +* iOS +* Windows Phone 7과 8 +* 윈도우 8 + +## 메서드 + +* splashscreen.show +* splashscreen.hide + +### 안 드 로이드 단점 + +당신의 config.xml에 다음 환경 설정에 추가 해야 합니다. + + + + + +여기서 foo splashscreen 파일, 선호 9 패치 파일의 이름입니다. 적절 한 폴더 아래 res/xml 디렉토리에 splashcreen 파일을 추가 해야 합니다. 두 번째 매개 변수는 splashscreen 얼마나 밀리초 단위로 표시 됩니다 나타냅니다. 3000 ms 기본값으로 사용 됩니다. 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.hide + +시작 화면을 닫습니다. + + navigator.splashscreen.hide(); + + +### 블랙베리 10, WP8, iOS 특질 + +`config.xml` 파일의 `AutoHideSplashScreen` 설정을 `false` 여야 합니다. 2 초 동안 시작 화면을 숨기고 지연, `deviceready` 이벤트 처리기에서 다음과 같은 타이머를 추가: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +시작 화면을 표시합니다. + + navigator.splashscreen.show(); + + +응용 프로그램 시작 및 `deviceready` 이벤트는 발생 될 때까지 응용 프로그램이 `navigator.splashscreen.show()`을 호출할 수 없습니다. 하지만 그 스플래시 스크린의 목적 것 같다 일반적으로 시작 화면이 당신의 애플 리 케이 션 시작 하기 전에 표시 될 운명이 다, 이후. `config.xml에서` 몇 가지 구성을 제공 하 자동으로 스플래시 `표시` 화면 애플 리 케이 션 출시 직후와 그것은 완벽 하 게 시작 하 고 `deviceready` 이벤트를 받은 전에. 이 구성 하 고 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. 이러한 이유로, 그것은 가능성이 시작 화면은 응용 프로그램 시작에 대 한 표시 되도록 `navigator.splashscreen.show()`를 호출 해야입니다. diff --git a/plugins/cordova-plugin-splashscreen/doc/pl/README.md b/plugins/cordova-plugin-splashscreen/doc/pl/README.md new file mode 100644 index 00000000..0156be56 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/pl/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +Ten plugin wyświetla i ukrywa ekran powitalny podczas uruchamiania aplikacji. + +## Instalacja + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## Obsługiwane platformy + + * Amazon Fire OS + * Android + * BlackBerry 10 + * iOS + * Windows Phone 7 i 8 + * Windows 8 + * Windows + * Przeglądarka + +## Metody + + * splashscreen.show + * splashscreen.Hide + +### Dziwactwa Androida + +W pliku `config.xml`musisz dodać następujące preferencje: + + + + + + +Gdzie foo jest nazwą pliku ekranu powitalnego, najlepiej 9 łatce. Upewnij się dodać pliki splashcreen do katalogu res/xml w odpowiednich folderach. Drugi parametr reprezentuje, jak długo ekranu powitalnego pojawi się w milisekundach. Domyślnie 3000 ms. Aby uzyskać więcej informacji, zobacz [ikony i ekrany powitalne w aplikacjach](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). + +"SplashMaintainAspectRatio" preferencji jest opcjonalne. Jeśli zestaw na wartość true, ekran powitalny dolarowe nie jest rozciągnięty do ekranów, ale zamiast po prostu "obejmuje" ekranu, jak CSS "tło-rozmiar: okładka". Jest to bardzo przydatne, kiedy opryskać tęcza obrazy nie zniekształcony w jakikolwiek sposób, na przykład, gdy zawierają one dekoracje lub tekst. To ustawienie działa najlepiej z obrazów, które mają duże marginesy (bezpiecznych obszarów), które mogą być bezpiecznie przycięte na ekrany z różnych proporcji. + +Plugin ładuje rozchlapać dolarowe, gdy zmienia orientację, tak można określić różnych drawables do orientacji pionowej i poziomej. + +### Quirks przeglądarki + +W pliku `config.xml`można użyć następujące preferencje: + + + + + + + + + + + +### Dziwactwa iOS + + * `FadeSplashScreen` (wartość logiczna, domyślnie `true`): zestaw na `false` , aby zapobiec Znikająca i odkładane po zmianie stanu wyświetlania ekranu powitalnego. + + + + + * `FadeSplashScreenDuration` (float, domyślnie `2`): określa liczbę sekund dla ekranu powitalnego zanikanie efekt do wykonać. + + + + + * `ShowSplashScreenSpinner` (wartość logiczna, domyślnie `true`): zestaw na `false` , aby ukryć pokrętła ekran powitalny. + + + + +## splashscreen.Hide + +Odrzucić ten opryskaæ têcza. + + navigator.splashscreen.hide(); + + +### Jeżyna 10, WP8, iOS dziwactwo + +Plik `config.xml` `AutoHideSplashScreen` ustawienie musi być `false`. Opóźnienia, ukrywanie ekranu powitalnego przez dwie sekundy, dodać timer następujących w `deviceready` obsługa zdarzeń: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +Wyświetla ekran powitalny. + + navigator.splashscreen.show(); + + +Aplikacja nie można wywołać `navigator.splashscreen.show()`, aż aplikacja została uruchomiona i zdarzenie `deviceready` został zwolniony. Ale ponieważ zazwyczaj opryskać tęcza ma być widoczne przed rozpoczęciem aplikacji, wydaje się sprzeczne z celem ekranu powitalnego. Dostarczanie niektórych konfiguracji w `pliku config.xml` będzie automatycznie `show` splash na ekranie natychmiast po uruchomienie aplikacji i przed pełni rozpoczął i odebrał zdarzenie `deviceready`. Aby uzyskać więcej informacji na robienie tej konfiguracji, zobacz [ikony i ekrany powitalne w aplikacjach](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html). Z tego powodu jest mało prawdopodobne, należy zadzwonić `navigator.splashscreen.show()`, aby wyświetlić ekran powitalny dla uruchamiania aplikacji. \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/pl/index.md b/plugins/cordova-plugin-splashscreen/doc/pl/index.md new file mode 100644 index 00000000..33045cb7 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/pl/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +Ten plugin wyświetla i ukrywa ekran powitalny podczas uruchamiania aplikacji. + +## Instalacja + + cordova plugin add cordova-plugin-splashscreen + + +## Obsługiwane platformy + +* Amazon Fire OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 i 8 +* Windows 8 + +## Metody + +* splashscreen.show +* splashscreen.Hide + +### Dziwactwa Androida + +W pliku config.xml musisz dodać następujące preferencje: + + + + + +Gdzie foo jest nazwą pliku ekranu powitalnego, najlepiej 9 łatce. Upewnij się dodać pliki splashcreen do katalogu res/xml w odpowiednich folderach. Drugi parametr reprezentuje, jak długo ekranu powitalnego pojawi się w milisekundach. Domyślnie 3000 ms. Aby uzyskać więcej informacji, zobacz [ikony i ekrany powitalne w aplikacjach][1]. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.Hide + +Odrzucić ten opryskaæ têcza. + + navigator.splashscreen.hide(); + + +### Jeżyna 10, WP8, iOS dziwactwo + +Plik `config.xml` `AutoHideSplashScreen` ustawienie musi być `false`. Opóźnienia, ukrywanie ekranu powitalnego przez dwie sekundy, dodać timer następujących w `deviceready` obsługa zdarzeń: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +Wyświetla ekran powitalny. + + navigator.splashscreen.show(); + + +Aplikacja nie można wywołać `navigator.splashscreen.show()`, aż aplikacja została uruchomiona i zdarzenie `deviceready` został zwolniony. Ale ponieważ zazwyczaj opryskać tęcza ma być widoczne przed rozpoczęciem aplikacji, wydaje się sprzeczne z celem ekranu powitalnego. Dostarczanie niektórych konfiguracji w `pliku config.xml` będzie automatycznie `show` splash na ekranie natychmiast po uruchomienie aplikacji i przed pełni rozpoczął i odebrał zdarzenie `deviceready`. Aby uzyskać więcej informacji na robienie tej konfiguracji, zobacz [ikony i ekrany powitalne w aplikacjach][1]. Z tego powodu jest mało prawdopodobne, należy zadzwonić `navigator.splashscreen.show()`, aby wyświetlić ekran powitalny dla uruchamiania aplikacji. diff --git a/plugins/cordova-plugin-splashscreen/doc/ru/index.md b/plugins/cordova-plugin-splashscreen/doc/ru/index.md new file mode 100644 index 00000000..635c22d8 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/ru/index.md @@ -0,0 +1,75 @@ + + +# cordova-plugin-splashscreen + +Этот плагин отображает и скрывает экран-заставку при запуске приложения. + +## Установка + + cordova plugin add cordova-plugin-splashscreen + + +## Поддерживаемые платформы + +* Amazon Fire OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 и 8 +* Windows 8 + +## Методы + +* splashscreen.show +* splashscreen.hide + +### Особенности Android + +В вашем файле config.xml необходимо добавить следующие настройки: + +`` `` + +Где foo это имя файла splashscreen, желательно 9 заплатку. Убедитесь в том добавить ваши splashcreen файлы в папку res/xml в соответствующие папки. Второй параметр представляет, как долго splashscreen появится в миллисекундах. По умолчанию он 3000 МС. Увидеть [иконки и заставки][1] для получения дополнительной информации. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.hide + +Закройте экран-заставка. + + Navigator.SplashScreen.Hide(); + + +### Особенности BlackBerry 10, WP8, iOS + +`config.xml`Файла `AutoHideSplashScreen` должен быть `false` . Для задержки скрытия заставки на две секунды, добавить таймер, например в `deviceready` обработчик событий: + + setTimeout(function() {navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +Отображает экран-заставку. + + Navigator.SplashScreen.Show(); + + +Ваше приложение не может вызвать `navigator.splashscreen.show()` до тех пор, пока приложение началась и `deviceready` событие инициировано. Но поскольку обычно экран-заставка должен быть видимым до начала вашего приложения, что казалось бы поражение цели экрана-заставки. Предоставление некоторых конфигурации в `config.xml` будет автоматически `show` экран-заставку сразу же после запуска вашего приложения и перед его полностью запущен и получил `deviceready` событие. Увидеть [иконки и заставки][1] для получения дополнительной информации на делать этой конфигурации. По этой причине маловероятно, вам нужно вызвать `navigator.splashscreen.show()` для отображения экрана-заставки для запуска приложения. diff --git a/plugins/cordova-plugin-splashscreen/doc/zh/README.md b/plugins/cordova-plugin-splashscreen/doc/zh/README.md new file mode 100644 index 00000000..da37405b --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/zh/README.md @@ -0,0 +1,119 @@ + + +# cordova-plugin-splashscreen + +[![Build Status](https://travis-ci.org/apache/cordova-plugin-splashscreen.svg)](https://travis-ci.org/apache/cordova-plugin-splashscreen) + +這個外掛程式顯示和隱藏在應用程式啟動期間的初始螢幕。 + +## 安裝 + + // npm hosted (new) id + cordova plugin add cordova-plugin-splashscreen + // you may also install directly from this repo + cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git + + +## 支援的平臺 + + * 亞馬遜火 OS + * Android 系統 + * 黑莓 10 + * iOS + * Windows Phone 7 和 8 + * Windows 8 + * Windows + * 瀏覽器 + +## 方法 + + * splashscreen.show + * splashscreen.hide + +### Android 的怪癖 + +在你的`config.xml`,您需要添加以下優惠: + + + + + + +美孚在哪裡閃屏檔,最好是 9 修補程式檔的名稱。 請確保您的 splashcreen 檔添加到 res/xml 目錄下相應的資料夾。 第二個參數表示多久閃屏會顯示以毫秒為單位。 它將預設為 3000 毫秒。 有關更多資訊,請參見 [圖示和啟動畫面](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)。 + +"SplashMaintainAspectRatio"首選項是可選的。 如果設置為 true,可繪製的初始螢幕不會拉伸以適合螢幕,但相反只是"覆蓋"螢幕,像 CSS"背景-大小: 蓋"。 這是非常有用的不能以任何方式,例如當他們包含文本或風景畸變閃屏圖像時。 此設置適用于有大利潤 (安全區),可以安全地裁剪不同長寬比與螢幕上的圖像。 + +該外掛程式重新載入初始可繪製只要方向發生變化,所以您可以指定不同的畫板為縱向和橫向方向。 + +### 瀏覽器的怪癖 + +你可以用你的`config.xml`下列優先選項: + + + + + + + + + + + +### iOS 的怪癖 + + * `FadeSplashScreen`(預設為`true`的布林值): 設置為`false` ,以防止出現閃屏衰落和退出其顯示狀態發生變化時。 + + + + + * `FadeSplashScreenDuration`(float,預設為`2`): 指定的閃屏秒數淡出效果來執行。 + + + + + * `ShowSplashScreenSpinner`(boolean, `true`的布林值): 設置為`false`來隱藏初始螢幕微調框。 + + + + +## splashscreen.hide + +解雇的閃屏。 + + navigator.splashscreen.hide(); + + +### 黑莓 10,WP8,iOS 怪癖 + +`config.xml` 檔 `AutoHideSplashScreen` 設置必須是 `假` 的。 若要延遲兩秒鐘隱藏的閃屏,`deviceready` 事件處理常式中添加一個計時器,如下所示: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +顯示初始螢幕。 + + navigator.splashscreen.show(); + + +您的應用程式無法調用 `navigator.splashscreen.show()`,直到該應用程式已啟動,且觸發了 `deviceready` 事件。 但是,由於通常的閃屏為了是可見的在您的應用程式啟動之前,這似乎會打敗閃屏的目的。 提供一些配置在 `config.xml` 中的會自動 `show` 初始螢幕您的應用程式啟動後立即和之前它已經完全起步並收到 `deviceready` 事件。 做這種配置的詳細資訊,請參閱 [圖示和啟動畫面](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)。 出於此原因,不太可能您需要調用 `navigator.splashscreen.show()`,使初始螢幕可見為應用程式啟動。 \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/doc/zh/index.md b/plugins/cordova-plugin-splashscreen/doc/zh/index.md new file mode 100644 index 00000000..efb309d0 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/doc/zh/index.md @@ -0,0 +1,78 @@ + + +# cordova-plugin-splashscreen + +這個外掛程式顯示和隱藏在應用程式啟動期間的初始螢幕。 + +## 安裝 + + cordova plugin add cordova-plugin-splashscreen + + +## 支援的平臺 + +* 亞馬遜火 OS +* Android 系統 +* 黑莓 10 +* iOS +* Windows Phone 7 和 8 +* Windows 8 + +## 方法 + +* splashscreen.show +* splashscreen.hide + +### Android 的怪癖 + +在你的 config.xml,您需要添加以下優惠: + + + + + +美孚在哪裡閃屏檔,最好是 9 修補程式檔的名稱。 請確保您的 splashcreen 檔添加到 res/xml 目錄下相應的資料夾。 第二個參數表示多久閃屏會顯示以毫秒為單位。 它將預設為 3000 毫秒。 有關更多資訊,請參見 [圖示和啟動畫面][1]。 + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.hide + +解雇的閃屏。 + + navigator.splashscreen.hide(); + + +### 黑莓 10,WP8,iOS 怪癖 + +`config.xml` 檔 `AutoHideSplashScreen` 設置必須是 `假` 的。 若要延遲兩秒鐘隱藏的閃屏,`deviceready` 事件處理常式中添加一個計時器,如下所示: + + setTimeout(function() { + navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +顯示初始螢幕。 + + navigator.splashscreen.show(); + + +您的應用程式無法調用 `navigator.splashscreen.show()`,直到該應用程式已啟動,且觸發了 `deviceready` 事件。 但是,由於通常的閃屏為了是可見的在您的應用程式啟動之前,這似乎會打敗閃屏的目的。 提供一些配置在 `config.xml` 中的會自動 `show` 初始螢幕您的應用程式啟動後立即和之前它已經完全起步並收到 `deviceready` 事件。 做這種配置的詳細資訊,請參閱 [圖示和啟動畫面][1]。 出於此原因,不太可能您需要調用 `navigator.splashscreen.show()`,使初始螢幕可見為應用程式啟動。 diff --git a/plugins/cordova-plugin-splashscreen/package.json b/plugins/cordova-plugin-splashscreen/package.json new file mode 100644 index 00000000..447ac7e9 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/package.json @@ -0,0 +1,45 @@ +{ + "name": "cordova-plugin-splashscreen", + "version": "2.1.0", + "description": "Cordova Splashscreen Plugin", + "cordova": { + "id": "cordova-plugin-splashscreen", + "platforms": [ + "android", + "amazon-fireos", + "ubuntu", + "ios", + "blackberry10", + "wp8", + "windows8", + "windows", + "tizen" + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/apache/cordova-plugin-splashscreen" + }, + "keywords": [ + "cordova", + "splashscreen", + "ecosystem:cordova", + "cordova-android", + "cordova-amazon-fireos", + "cordova-ubuntu", + "cordova-ios", + "cordova-blackberry10", + "cordova-wp8", + "cordova-windows8", + "cordova-windows", + "cordova-tizen" + ], + "engines": [ + { + "name": "cordova-android", + "version": ">=3.6.0" + } + ], + "author": "Apache Software Foundation", + "license": "Apache 2.0" +} diff --git a/plugins/cordova-plugin-splashscreen/plugin.xml b/plugins/cordova-plugin-splashscreen/plugin.xml new file mode 100644 index 00000000..e6370fa9 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/plugin.xml @@ -0,0 +1,134 @@ + + + + + Splashscreen + Cordova Splashscreen Plugin + Apache 2.0 + cordova,splashscreen + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + https://issues.apache.org/jira/browse/CB/component/12320653 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java b/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java new file mode 100644 index 00000000..75ad724c --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java @@ -0,0 +1,328 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +package org.apache.cordova.splashscreen; + +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.Configuration; +import android.graphics.Color; +import android.os.Handler; +import android.view.Display; +import android.view.View; +import android.view.ViewGroup.LayoutParams; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.LinearLayout; + +import org.apache.cordova.CallbackContext; +import org.apache.cordova.CordovaPlugin; +import org.apache.cordova.CordovaWebView; +import org.json.JSONArray; +import org.json.JSONException; + +public class SplashScreen extends CordovaPlugin { + private static final String LOG_TAG = "SplashScreen"; + // Cordova 3.x.x has a copy of this plugin bundled with it (SplashScreenInternal.java). + // Enable functionality only if running on 4.x.x. + private static final boolean HAS_BUILT_IN_SPLASH_SCREEN = Integer.valueOf(CordovaWebView.CORDOVA_VERSION.split("\\.")[0]) < 4; + private static Dialog splashDialog; + private static ProgressDialog spinnerDialog; + private static boolean firstShow = true; + + /** + * Displays the splash drawable. + */ + private ImageView splashImageView; + + /** + * Remember last device orientation to detect orientation changes. + */ + private int orientation; + + // Helper to be compile-time compatible with both Cordova 3.x and 4.x. + private View getView() { + try { + return (View)webView.getClass().getMethod("getView").invoke(webView); + } catch (Exception e) { + return (View)webView; + } + } + + @Override + protected void pluginInitialize() { + if (HAS_BUILT_IN_SPLASH_SCREEN || !firstShow) { + return; + } + // Make WebView invisible while loading URL + getView().setVisibility(View.INVISIBLE); + int drawableId = preferences.getInteger("SplashDrawableId", 0); + if (drawableId == 0) { + String splashResource = preferences.getString("SplashScreen", "screen"); + if (splashResource != null) { + drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getClass().getPackage().getName()); + if (drawableId == 0) { + drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getPackageName()); + } + preferences.set("SplashDrawableId", drawableId); + } + } + + // Save initial orientation. + orientation = cordova.getActivity().getResources().getConfiguration().orientation; + + firstShow = false; + loadSpinner(); + showSplashScreen(true); + } + + /** + * Shorter way to check value of "SplashMaintainAspectRatio" preference. + */ + private boolean isMaintainAspectRatio () { + return preferences.getBoolean("SplashMaintainAspectRatio", false); + } + + @Override + public void onPause(boolean multitasking) { + if (HAS_BUILT_IN_SPLASH_SCREEN) { + return; + } + // hide the splash screen to avoid leaking a window + this.removeSplashScreen(); + } + + @Override + public void onDestroy() { + if (HAS_BUILT_IN_SPLASH_SCREEN) { + return; + } + // hide the splash screen to avoid leaking a window + this.removeSplashScreen(); + // If we set this to true onDestroy, we lose track when we go from page to page! + //firstShow = true; + } + + @Override + public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { + if (action.equals("hide")) { + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + webView.postMessage("splashscreen", "hide"); + } + }); + } else if (action.equals("show")) { + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + webView.postMessage("splashscreen", "show"); + } + }); + } else if (action.equals("spinnerStart")) { + if (!HAS_BUILT_IN_SPLASH_SCREEN) { + final String title = args.getString(0); + final String message = args.getString(1); + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + spinnerStart(title, message); + } + }); + } + } else { + return false; + } + + callbackContext.success(); + return true; + } + + @Override + public Object onMessage(String id, Object data) { + if (HAS_BUILT_IN_SPLASH_SCREEN) { + return null; + } + if ("splashscreen".equals(id)) { + if ("hide".equals(data.toString())) { + this.removeSplashScreen(); + } else { + this.showSplashScreen(false); + } + } else if ("spinner".equals(id)) { + if ("stop".equals(data.toString())) { + this.spinnerStop(); + getView().setVisibility(View.VISIBLE); + } + } else if ("onReceivedError".equals(id)) { + spinnerStop(); + } + return null; + } + + // Don't add @Override so that plugin still compiles on 3.x.x for a while + public void onConfigurationChanged(Configuration newConfig) { + if (newConfig.orientation != orientation) { + orientation = newConfig.orientation; + + // Splash drawable may change with orientation, so reload it. + if (splashImageView != null) { + int drawableId = preferences.getInteger("SplashDrawableId", 0); + if (drawableId != 0) { + splashImageView.setImageDrawable(cordova.getActivity().getResources().getDrawable(drawableId)); + } + } + } + } + + private void removeSplashScreen() { + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + if (splashDialog != null && splashDialog.isShowing()) { + splashDialog.dismiss(); + splashDialog = null; + splashImageView = null; + } + } + }); + } + + /** + * Shows the splash screen over the full Activity + */ + @SuppressWarnings("deprecation") + private void showSplashScreen(final boolean hideAfterDelay) { + final int splashscreenTime = preferences.getInteger("SplashScreenDelay", 3000); + final int drawableId = preferences.getInteger("SplashDrawableId", 0); + + // If the splash dialog is showing don't try to show it again + if (splashDialog != null && splashDialog.isShowing()) { + return; + } + if (drawableId == 0 || (splashscreenTime <= 0 && hideAfterDelay)) { + return; + } + + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + // Get reference to display + Display display = cordova.getActivity().getWindowManager().getDefaultDisplay(); + Context context = webView.getContext(); + + // Use an ImageView to render the image because of its flexible scaling options. + splashImageView = new ImageView(context); + splashImageView.setImageResource(drawableId); + LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + splashImageView.setLayoutParams(layoutParams); + + splashImageView.setMinimumHeight(display.getHeight()); + splashImageView.setMinimumWidth(display.getWidth()); + + // TODO: Use the background color of the webView's parent instead of using the preference. + splashImageView.setBackgroundColor(preferences.getInteger("backgroundColor", Color.BLACK)); + + if (isMaintainAspectRatio()) { + // CENTER_CROP scale mode is equivalent to CSS "background-size:cover" + splashImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); + } + else { + // FIT_XY scales image non-uniformly to fit into image view. + splashImageView.setScaleType(ImageView.ScaleType.FIT_XY); + } + + // Create and show the dialog + splashDialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar); + // check to see if the splash screen should be full screen + if ((cordova.getActivity().getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) + == WindowManager.LayoutParams.FLAG_FULLSCREEN) { + splashDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + splashDialog.setContentView(splashImageView); + splashDialog.setCancelable(false); + splashDialog.show(); + + // Set Runnable to remove splash screen just in case + if (hideAfterDelay) { + final Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + public void run() { + removeSplashScreen(); + } + }, splashscreenTime); + } + } + }); + } + + /* + * Load the spinner + */ + private void loadSpinner() { + // If loadingDialog property, then show the App loading dialog for first page of app + String loading = null; + if (webView.canGoBack()) { + loading = preferences.getString("LoadingDialog", null); + } + else { + loading = preferences.getString("LoadingPageDialog", null); + } + if (loading != null) { + String title = ""; + String message = "Loading Application..."; + + if (loading.length() > 0) { + int comma = loading.indexOf(','); + if (comma > 0) { + title = loading.substring(0, comma); + message = loading.substring(comma + 1); + } + else { + title = ""; + message = loading; + } + } + spinnerStart(title, message); + } + } + + private void spinnerStart(final String title, final String message) { + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + spinnerStop(); + spinnerDialog = ProgressDialog.show(webView.getContext(), title, message, true, true, + new DialogInterface.OnCancelListener() { + public void onCancel(DialogInterface dialog) { + spinnerDialog = null; + } + }); + } + }); + } + + private void spinnerStop() { + cordova.getActivity().runOnUiThread(new Runnable() { + public void run() { + if (spinnerDialog != null && spinnerDialog.isShowing()) { + spinnerDialog.dismiss(); + spinnerDialog = null; + } + } + }); + } +} diff --git a/plugins/cordova-plugin-splashscreen/src/blackberry10/index.js b/plugins/cordova-plugin-splashscreen/src/blackberry10/index.js new file mode 100644 index 00000000..bd7e48c8 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/blackberry10/index.js @@ -0,0 +1,28 @@ +/* + * Copyright 2013 Research In Motion Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +module.exports = { + show: function (success, fail, args, env) { + var result = new PluginResult(args, env); + result.error("Not supported on platform", false); + }, + + hide: function (success, fail, args, env) { + var result = new PluginResult(args, env); + window.qnx.webplatform.getApplication().windowVisible = true; + result.ok(undefined, false); + } +}; diff --git a/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js b/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js new file mode 100644 index 00000000..76d51bfa --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js @@ -0,0 +1,138 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +// Default parameter values including image size can be changed in `config.xml` +var splashImageWidth = 170; +var splashImageHeight = 200; +var position = { x: 0, y: 0, width: splashImageWidth, height: splashImageHeight }; +var splash = null; // +var localSplash; // the image to display +var localSplashImage; +var bgColor = "#464646"; +var imageSrc = 'img/logo.png'; +var splashScreenDelay = 3000; // in milliseconds +var showSplashScreen = true; // show splashcreen by default +var configHelper = cordova.require('cordova/confighelper'); + +function updateImageLocation() { + position.width = Math.min(splashImageWidth, window.innerWidth); + position.height = position.width * (splashImageHeight / splashImageWidth); + + localSplash.style.width = window.innerWidth + "px"; + localSplash.style.height = window.innerHeight + "px"; + localSplash.style.top = "0px"; + localSplash.style.left = "0px"; + + localSplashImage.style.top = "50%"; + localSplashImage.style.left = "50%"; + localSplashImage.style.height = position.height + "px"; + localSplashImage.style.width = position.width + "px"; + localSplashImage.style.marginTop = (-position.height / 2) + "px"; + localSplashImage.style.marginLeft = (-position.width / 2) + "px"; +} + +function onResize() { + updateImageLocation(); +} + +var SplashScreen = { + setBGColor: function (cssBGColor) { + bgColor = cssBGColor; + if (localSplash) { + localSplash.style.backgroundColor = bgColor; + } + }, + show: function () { + if(!localSplash) { + window.addEventListener("resize", onResize, false); + localSplash = document.createElement("div"); + localSplash.style.backgroundColor = bgColor; + localSplash.style.position = "absolute"; + + localSplashImage = document.createElement("img"); + localSplashImage.src = imageSrc; + localSplashImage.style.position = "absolute"; + + updateImageLocation(); + + localSplash.appendChild(localSplashImage); + document.body.appendChild(localSplash); + } + }, + hide: function () { + if(localSplash) { + window.removeEventListener("resize", onResize, false); + document.body.removeChild(localSplash); + localSplash = null; + } + } +}; + +/** + * Reads preferences via ConfigHelper and substitutes default parameters. + */ +function readPreferencesFromCfg(cfg) { + try { + var value = cfg.getPreferenceValue('ShowSplashScreen'); + if(typeof value != 'undefined') { + showSplashScreen = value === 'true'; + } + + splashScreenDelay = cfg.getPreferenceValue('SplashScreenDelay') || splashScreenDelay; + imageSrc = cfg.getPreferenceValue('SplashScreen') || imageSrc; + bgColor = cfg.getPreferenceValue('SplashScreenBackgroundColor') || bgColor; + splashImageWidth = cfg.getPreferenceValue('SplashScreenWidth') || splashImageWidth; + splashImageHeight = cfg.getPreferenceValue('SplashScreenHeight') || splashImageHeight; + } catch(e) { + var msg = '[Browser][SplashScreen] Error occured on loading preferences from config.xml: ' + JSON.stringify(e); + console.error(msg); + error(msg); + } +} + +/** + * Shows and hides splashscreen if it is enabled, with a delay according the current preferences. + */ +function showAndHide() { + if(showSplashScreen) { + SplashScreen.show(); + + window.setTimeout(function() { + SplashScreen.hide(); + }, splashScreenDelay); + } +} + +/** + * Tries to read config.xml and override default properties and then shows and hides splashcreen if it is enabled. + */ +(function initAndShow() { + configHelper.readConfig(function(config) { + readPreferencesFromCfg(config); + showAndHide(); + }, function(err) { + console.error(err); + }); +})(); + +module.exports = SplashScreen; + +require("cordova/exec/proxy").add("SplashScreen", SplashScreen); + diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h b/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h new file mode 100644 index 00000000..3feede64 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h @@ -0,0 +1,43 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import +#import + +typedef struct { + BOOL iPhone; + BOOL iPad; + BOOL iPhone5; + BOOL iPhone6; + BOOL iPhone6Plus; + BOOL retina; + +} CDV_iOSDevice; + +@interface CDVSplashScreen : CDVPlugin { + UIActivityIndicatorView* _activityView; + UIImageView* _imageView; + NSString* _curImageName; + BOOL _visible; +} + +- (void)show:(CDVInvokedUrlCommand*)command; +- (void)hide:(CDVInvokedUrlCommand*)command; + +@end diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m b/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m new file mode 100644 index 00000000..43b356ad --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m @@ -0,0 +1,330 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import "CDVSplashScreen.h" +#import +#import +#import "CDVViewController+SplashScreen.h" + +#define kSplashScreenDurationDefault 0.25f + + +@implementation CDVSplashScreen + +- (void)pluginInitialize +{ + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pageDidLoad) name:CDVPageDidLoadNotification object:self.webView]; + + [self setVisible:YES]; +} + +- (void)show:(CDVInvokedUrlCommand*)command +{ + [self setVisible:YES]; +} + +- (void)hide:(CDVInvokedUrlCommand*)command +{ + [self setVisible:NO]; +} + +- (void)pageDidLoad +{ + id autoHideSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"AutoHideSplashScreen" lowercaseString]]; + + // if value is missing, default to yes + if ((autoHideSplashScreenValue == nil) || [autoHideSplashScreenValue boolValue]) { + [self setVisible:NO]; + } +} + +- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context +{ + [self updateImage]; +} + +- (void)createViews +{ + /* + * The Activity View is the top spinning throbber in the status/battery bar. We init it with the default Grey Style. + * + * whiteLarge = UIActivityIndicatorViewStyleWhiteLarge + * white = UIActivityIndicatorViewStyleWhite + * gray = UIActivityIndicatorViewStyleGray + * + */ + + // Determine whether rotation should be enabled for this device + // Per iOS HIG, landscape is only supported on iPad and iPhone 6+ + CDV_iOSDevice device = [self getCurrentDevice]; + BOOL autorotateValue = (device.iPad || device.iPhone6Plus) ? + [(CDVViewController *)self.viewController shouldAutorotateDefaultValue] : + NO; + + [(CDVViewController *)self.viewController setEnabledAutorotation:autorotateValue]; + + NSString* topActivityIndicator = [self.commandDelegate.settings objectForKey:[@"TopActivityIndicator" lowercaseString]]; + UIActivityIndicatorViewStyle topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray; + + if ([topActivityIndicator isEqualToString:@"whiteLarge"]) { + topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhiteLarge; + } else if ([topActivityIndicator isEqualToString:@"white"]) { + topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhite; + } else if ([topActivityIndicator isEqualToString:@"gray"]) { + topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray; + } + + UIView* parentView = self.viewController.view; + parentView.userInteractionEnabled = NO; // disable user interaction while splashscreen is shown + _activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:topActivityIndicatorStyle]; + _activityView.center = CGPointMake(parentView.bounds.size.width / 2, parentView.bounds.size.height / 2); + _activityView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin + | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin; + [_activityView startAnimating]; + + // Set the frame & image later. + _imageView = [[UIImageView alloc] init]; + [parentView addSubview:_imageView]; + + id showSplashScreenSpinnerValue = [self.commandDelegate.settings objectForKey:[@"ShowSplashScreenSpinner" lowercaseString]]; + // backwards compatibility - if key is missing, default to true + if ((showSplashScreenSpinnerValue == nil) || [showSplashScreenSpinnerValue boolValue]) { + [parentView addSubview:_activityView]; + } + + // Frame is required when launching in portrait mode. + // Bounds for landscape since it captures the rotation. + [parentView addObserver:self forKeyPath:@"frame" options:0 context:nil]; + [parentView addObserver:self forKeyPath:@"bounds" options:0 context:nil]; + + [self updateImage]; +} + +- (void)destroyViews +{ + [(CDVViewController *)self.viewController setEnabledAutorotation:[(CDVViewController *)self.viewController shouldAutorotateDefaultValue]]; + + [_imageView removeFromSuperview]; + [_activityView removeFromSuperview]; + _imageView = nil; + _activityView = nil; + _curImageName = nil; + + self.viewController.view.userInteractionEnabled = YES; // re-enable user interaction upon completion + [self.viewController.view removeObserver:self forKeyPath:@"frame"]; + [self.viewController.view removeObserver:self forKeyPath:@"bounds"]; +} + +- (CDV_iOSDevice) getCurrentDevice +{ + CDV_iOSDevice device; + + UIScreen* mainScreen = [UIScreen mainScreen]; + CGFloat mainScreenHeight = mainScreen.bounds.size.height; + CGFloat mainScreenWidth = mainScreen.bounds.size.width; + + int limit = MAX(mainScreenHeight,mainScreenWidth); + + device.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); + device.iPhone = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone); + device.retina = ([mainScreen scale] == 2.0); + device.iPhone5 = (device.iPhone && limit == 568.0); + // note these below is not a true device detect, for example if you are on an + // iPhone 6/6+ but the app is scaled it will prob set iPhone5 as true, but + // this is appropriate for detecting the runtime screen environment + device.iPhone6 = (device.iPhone && limit == 667.0); + device.iPhone6Plus = (device.iPhone && limit == 736.0); + + return device; +} + +- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device +{ + // Use UILaunchImageFile if specified in plist. Otherwise, use Default. + NSString* imageName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchImageFile"]; + + NSUInteger supportedOrientations = [orientationDelegate supportedInterfaceOrientations]; + + // Checks to see if the developer has locked the orientation to use only one of Portrait or Landscape + BOOL supportsLandscape = (supportedOrientations & UIInterfaceOrientationMaskLandscape); + BOOL supportsPortrait = (supportedOrientations & UIInterfaceOrientationMaskPortrait || supportedOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); + // this means there are no mixed orientations in there + BOOL isOrientationLocked = !(supportsPortrait && supportsLandscape); + + if (imageName) { + imageName = [imageName stringByDeletingPathExtension]; + } else { + imageName = @"Default"; + } + + if (device.iPhone5) { // does not support landscape + imageName = [imageName stringByAppendingString:@"-568h"]; + } else if (device.iPhone6) { // does not support landscape + imageName = [imageName stringByAppendingString:@"-667h"]; + } else if (device.iPhone6Plus) { // supports landscape + if (isOrientationLocked) { + imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"")]; + } else { + switch (currentOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + imageName = [imageName stringByAppendingString:@"-Landscape"]; + break; + default: + break; + } + } + imageName = [imageName stringByAppendingString:@"-736h"]; + + } else if (device.iPad) { // supports landscape + if (isOrientationLocked) { + imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")]; + } else { + switch (currentOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + imageName = [imageName stringByAppendingString:@"-Landscape"]; + break; + + case UIInterfaceOrientationPortrait: + case UIInterfaceOrientationPortraitUpsideDown: + default: + imageName = [imageName stringByAppendingString:@"-Portrait"]; + break; + } + } + } + + return imageName; +} + +// Sets the view's frame and image. +- (void)updateImage +{ + NSString* imageName = [self getImageName:[[UIApplication sharedApplication] statusBarOrientation] delegate:(id)self.viewController device:[self getCurrentDevice]]; + + if (![imageName isEqualToString:_curImageName]) { + UIImage* img = [UIImage imageNamed:imageName]; + _imageView.image = img; + _curImageName = imageName; + } + + // Check that splash screen's image exists before updating bounds + if (_imageView.image) { + [self updateBounds]; + } else { + NSLog(@"WARNING: The splashscreen image named %@ was not found", imageName); + } +} + +- (void)updateBounds +{ + UIImage* img = _imageView.image; + CGRect imgBounds = (img) ? CGRectMake(0, 0, img.size.width, img.size.height) : CGRectZero; + + CGSize screenSize = [self.viewController.view convertRect:[UIScreen mainScreen].bounds fromView:nil].size; + UIInterfaceOrientation orientation = self.viewController.interfaceOrientation; + CGAffineTransform imgTransform = CGAffineTransformIdentity; + + /* If and only if an iPhone application is landscape-only as per + * UISupportedInterfaceOrientations, the view controller's orientation is + * landscape. In this case the image must be rotated in order to appear + * correctly. + */ + BOOL isIPad = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad; + if (UIInterfaceOrientationIsLandscape(orientation) && !isIPad) { + imgTransform = CGAffineTransformMakeRotation(M_PI / 2); + imgBounds.size = CGSizeMake(imgBounds.size.height, imgBounds.size.width); + } + + // There's a special case when the image is the size of the screen. + if (CGSizeEqualToSize(screenSize, imgBounds.size)) { + CGRect statusFrame = [self.viewController.view convertRect:[UIApplication sharedApplication].statusBarFrame fromView:nil]; + if (!(IsAtLeastiOSVersion(@"7.0"))) { + imgBounds.origin.y -= statusFrame.size.height; + } + } else if (imgBounds.size.width > 0) { + CGRect viewBounds = self.viewController.view.bounds; + CGFloat imgAspect = imgBounds.size.width / imgBounds.size.height; + CGFloat viewAspect = viewBounds.size.width / viewBounds.size.height; + // This matches the behaviour of the native splash screen. + CGFloat ratio; + if (viewAspect > imgAspect) { + ratio = viewBounds.size.width / imgBounds.size.width; + } else { + ratio = viewBounds.size.height / imgBounds.size.height; + } + imgBounds.size.height *= ratio; + imgBounds.size.width *= ratio; + } + + _imageView.transform = imgTransform; + _imageView.frame = imgBounds; +} + +- (void)setVisible:(BOOL)visible +{ + if (visible == _visible) { + return; + } + _visible = visible; + + id fadeSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreen" lowercaseString]]; + id fadeSplashScreenDuration = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreenDuration" lowercaseString]]; + + float fadeDuration = fadeSplashScreenDuration == nil ? kSplashScreenDurationDefault : [fadeSplashScreenDuration floatValue]; + + if ((fadeSplashScreenValue == nil) || ![fadeSplashScreenValue boolValue]) { + fadeDuration = 0; + } + + // Never animate the showing of the splash screen. + if (visible) { + if (_imageView == nil) { + [self createViews]; + } + } else if (fadeDuration == 0) { + [self destroyViews]; + } else { + __weak __typeof(self) weakSelf = self; + + [UIView transitionWithView:self.viewController.view + duration:fadeDuration + options:UIViewAnimationOptionTransitionNone + animations:^(void) { + __typeof(self) strongSelf = weakSelf; + if (strongSelf != nil) { + dispatch_async(dispatch_get_main_queue(), ^{ + [strongSelf->_activityView setAlpha:0]; + [strongSelf->_imageView setAlpha:0]; + }); + } + } + completion:^(BOOL finished) { + if (finished) { + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf destroyViews]; + }); + } + } + ]; + } +} + +@end diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h b/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h new file mode 100644 index 00000000..a948ea31 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h @@ -0,0 +1,28 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import + +@interface CDVViewController (SplashScreen) + +@property (nonatomic, assign) BOOL enabledAutorotation; +@property (nonatomic, readonly) BOOL shouldAutorotateDefaultValue; + + +@end diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m b/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m new file mode 100644 index 00000000..5736b6f2 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m @@ -0,0 +1,82 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import "CDVViewController+SplashScreen.h" +#import + +@implementation CDVViewController (SplashScreen) + +@dynamic enabledAutorotation; + +- (void)setEnabledAutorotation:(BOOL)value +{ + objc_setAssociatedObject(self, + @selector(enabledAutorotation), + [NSNumber numberWithBool:value], + OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (BOOL)enabledAutorotation +{ + NSNumber *number = (NSNumber *)objc_getAssociatedObject(self, @selector(enabledAutorotation)); + return [number boolValue]; +} + ++ (void)load +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class class = [self class]; + + SEL originalSelector = @selector(shouldAutorotate); + SEL swizzledSelector = @selector(splash_shouldAutorotate); + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + BOOL didAddMethod = class_addMethod(class, + originalSelector, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + + if (didAddMethod) { + class_replaceMethod(class, + swizzledSelector, + method_getImplementation(originalMethod), + method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } + }); +} + +#pragma mark - Method Swizzling + +- (BOOL)splash_shouldAutorotate +{ + return self.enabledAutorotation; +} + + +- (BOOL)shouldAutorotateDefaultValue +{ + return [self splash_shouldAutorotate]; +} + +@end diff --git a/plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js b/plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js new file mode 100644 index 00000000..fbd9f35f --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js @@ -0,0 +1,43 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +( function() { + +win = null; + +module.exports = { + show: function() { + if ( win === null ) { + win = window.open('splashscreen.html'); + } + }, + + hide: function() { + if ( win !== null ) { + win.close(); + win = null; + } + } +}; + +require("cordova/tizen/commandProxy").add("SplashScreen", module.exports); + +})(); diff --git a/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp b/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp new file mode 100644 index 00000000..1c9ecac8 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp @@ -0,0 +1,42 @@ +/* + * + * Copyright 2013 Canonical Ltd. + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +#include + +#include "splashscreen.h" +#include + +#define SPLASHSCREEN_STATE_NAME "splashscreen" + +Splashscreen::Splashscreen(Cordova *cordova): CPlugin(cordova) { +} + +void Splashscreen::show(int, int) { + m_cordova->rootObject()->setProperty("splashscreenPath", m_cordova->getSplashscreenPath()); + + m_cordova->pushViewState(SPLASHSCREEN_STATE_NAME); +} + +void Splashscreen::hide(int, int) { + m_cordova->popViewState(SPLASHSCREEN_STATE_NAME); +} diff --git a/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h b/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h new file mode 100644 index 00000000..1d437f84 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h @@ -0,0 +1,52 @@ +/* + * + * Copyright 2013 Canonical Ltd. + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +#ifndef SPLASHSCREEN_H +#define SPLASHSCREEN_H + +#include +#include + +class Splashscreen: public CPlugin { + Q_OBJECT +public: + explicit Splashscreen(Cordova *cordova); + + virtual const QString fullName() override { + return Splashscreen::fullID(); + } + + virtual const QString shortName() override { + return "SplashScreen"; + } + + static const QString fullID() { + return "SplashScreen"; + } + +public slots: + void show(int, int); + void hide(int, int); +}; + +#endif // SPLASHSCREEN_H diff --git a/plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs b/plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs new file mode 100644 index 00000000..2c02e744 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs @@ -0,0 +1,39 @@ +/* + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +using Microsoft.Phone.Info; +using System; +using System.Windows; + +namespace WPCordovaClassLib.Cordova.Commands +{ + public enum Resolutions { WVGA, WXGA, HD }; + + public static class ResolutionHelper + { + public static Resolutions CurrentResolution + { + get + { + switch (Application.Current.Host.Content.ScaleFactor) + { + case 100: return Resolutions.WVGA; + case 160: return Resolutions.WXGA; + case 150: return Resolutions.HD; + } + throw new InvalidOperationException("Unknown resolution"); + } + } + } +} diff --git a/plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs b/plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs new file mode 100644 index 00000000..680a8058 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs @@ -0,0 +1,252 @@ +/* + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +using System; +using System.Net; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Shapes; +using Microsoft.Phone.Info; +using System.Windows.Controls.Primitives; +using System.Diagnostics; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.IO; +using System.Xml.Linq; +using System.Linq; +using System.Windows.Threading; + +namespace WPCordovaClassLib.Cordova.Commands +{ + /// + /// Listens for changes to the state of the battery on the device. + /// Currently only the "isPlugged" parameter available via native APIs. + /// + public class SplashScreen : BaseCommand + { + private Popup popup; + + // Time until we dismiss the splashscreen + private int prefDelay = 3000; + + // Whether we hide it by default + private bool prefAutoHide = true; + + // Path to image to use + private string prefImagePath = "SplashScreenImage.jpg"; + + // static because autodismiss is only ever applied once, at app launch + // subsequent page loads should not cause the SplashScreen to be shown. + private static bool WasShown = false; + + public SplashScreen() + { + LoadConfigPrefs(); + + Image SplashScreen = new Image() + { + Height = Application.Current.Host.Content.ActualHeight, + Width = Application.Current.Host.Content.ActualWidth, + Stretch = Stretch.Fill + }; + + var imageResource = GetSplashScreenImageResource(); + if (imageResource != null) + { + BitmapImage splash_image = new BitmapImage(); + splash_image.SetSource(imageResource.Stream); + SplashScreen.Source = splash_image; + } + + // Instansiate the popup and set the Child property of Popup to SplashScreen + popup = new Popup() { IsOpen = false, + Child = SplashScreen, + HorizontalAlignment = HorizontalAlignment.Stretch, + VerticalAlignment = VerticalAlignment.Center + + }; + } + + public override void OnInit() + { + // we only want to autoload on the first page load. + // but OnInit is called for every page load. + if (!SplashScreen.WasShown) + { + SplashScreen.WasShown = true; + show(); + } + } + + private void LoadConfigPrefs() + { + StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri("config.xml", UriKind.Relative)); + if (streamInfo != null) + { + using (StreamReader sr = new StreamReader(streamInfo.Stream)) + { + //This will Read Keys Collection for the xml file + XDocument configFile = XDocument.Parse(sr.ReadToEnd()); + + string configAutoHide = configFile.Descendants() + .Where(x => (string)x.Attribute("name") == "AutoHideSplashScreen") + .Select(x => (string)x.Attribute("value")) + .FirstOrDefault(); + + bool bVal; + prefAutoHide = bool.TryParse(configAutoHide, out bVal) ? bVal : prefAutoHide; + + string configDelay = configFile.Descendants() + .Where(x => (string)x.Attribute("name") == "SplashScreenDelay") + .Select(x => (string)x.Attribute("value")) + .FirstOrDefault(); + int nVal; + prefDelay = int.TryParse(configDelay, out nVal) ? nVal : prefDelay; + + string configImage = configFile.Descendants() + .Where(x => (string)x.Attribute("name") == "SplashScreen") + .Select(x => (string)x.Attribute("value")) + .FirstOrDefault(); + + if (!String.IsNullOrEmpty(configImage)) + { + prefImagePath = configImage; + } + } + } + } + + private StreamResourceInfo GetSplashScreenImageResource() + { + // Get the base filename for the splash screen images + string imageName = System.IO.Path.GetFileNameWithoutExtension(prefImagePath); + Uri imageUri = null; + StreamResourceInfo imageResource = null; + + // First, try to get a resolution-specific splashscreen + try + { + // Determine the device's resolution + switch (ResolutionHelper.CurrentResolution) + { + case Resolutions.HD: + imageUri = new Uri(imageName + ".screen-720p.jpg", UriKind.Relative); + break; + + case Resolutions.WVGA: + imageUri = new Uri(imageName + ".screen-WVGA.jpg", UriKind.Relative); + break; + + case Resolutions.WXGA: + default: + imageUri = new Uri(imageName + ".screen-WXGA.jpg", UriKind.Relative); + break; + } + + imageResource = Application.GetResourceStream(imageUri); + } + catch (Exception) + { + // It's OK if we didn't get a resolution-specific image + } + + // Fallback to the default image name without decoration + if (imageResource == null) + { + imageUri = new Uri(prefImagePath, UriKind.Relative); + imageResource = Application.GetResourceStream(imageUri); + } + + if (imageUri != null) Debug.WriteLine("INFO :: SplashScreen: using image {0}", imageUri.OriginalString); + + return imageResource; + } + + public void show(string options = null) + { + Deployment.Current.Dispatcher.BeginInvoke(() => + { + if (!popup.IsOpen) + { + popup.Child.Opacity = 0; + + Storyboard story = new Storyboard(); + DoubleAnimation animation = new DoubleAnimation() + { + From = 0.0, + To = 1.0, + Duration = new Duration(TimeSpan.FromSeconds(0.2)) + }; + + Storyboard.SetTarget(animation, popup.Child); + Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity")); + story.Children.Add(animation); + + story.Begin(); + + popup.IsOpen = true; + + if (prefAutoHide) + { + StartAutoHideTimer(); + } + } + }); + } + + public void hide(string options = null) + { + Deployment.Current.Dispatcher.BeginInvoke(() => + { + if (popup.IsOpen) + { + popup.Child.Opacity = 1.0; + + Storyboard story = new Storyboard(); + DoubleAnimation animation = new DoubleAnimation() + { + From = 1.0, + To = 0.0, + Duration = new Duration(TimeSpan.FromSeconds(0.4)) + }; + + Storyboard.SetTarget(animation, popup.Child); + Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity")); + story.Children.Add(animation); + story.Completed += (object sender, EventArgs e) => + { + popup.IsOpen = false; + }; + story.Begin(); + } + }); + } + + private void StartAutoHideTimer() + { + var timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(prefDelay) }; + timer.Tick += (object sender, EventArgs e) => + { + hide(); + timer.Stop(); + }; + timer.Start(); + } + } +} diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..2dd325a0 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout new file mode 100644 index 00000000..7e4cdb93 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 + IDESourceControlProjectName + CDVSplashScreenTest + IDESourceControlProjectOriginsDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + + IDESourceControlProjectPath + tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + ../../../../.. + + IDESourceControlProjectURL + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlWCCName + cordova-plugin-splashscreen + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme new file mode 100644 index 00000000..13f9a157 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/.npmignore b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/.npmignore new file mode 100644 index 00000000..c795b054 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/.npmignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m new file mode 100644 index 00000000..1637d247 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m @@ -0,0 +1,702 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import +#import +#import +#import "CDVSplashScreen.h" +#import "ImageNameTestDelegates.h" + +const CDV_iOSDevice CDV_iOSDeviceZero = { 0, 0, 0, 0, 0, 0 }; + +@interface ImageNameTest : XCTestCase + +@property (nonatomic, strong) CDVSplashScreen* plugin; + +@end + +@interface CDVSplashScreen () + +// expose private interface +- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device; + +@end + +@implementation ImageNameTest + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. + + self.plugin = [[CDVSplashScreen alloc] init]; +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void) orientationHelper:(id)delegate expectedImageNameDictionary:(NSDictionary*)expectedImageNameDictionary device:(CDV_iOSDevice)device{ + + NSString* name = nil; + NSString* expectedImageName = nil; + UIInterfaceOrientation currentOrientation; + NSString* deviceName = device.iPad? @"iPad" : device.iPhone6Plus? @"iPhone6Plus": device.iPhone6? @"iPhone6": device.iPhone5? @"iPhone5" : @"iPhone"; + + // LandscapeLeft, should always return expectedImageName + currentOrientation = UIInterfaceOrientationLandscapeLeft; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeLeft"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); + + // LandscapeRight - should always return expectedImageName + currentOrientation = UIInterfaceOrientationLandscapeRight; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeRight"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); + + // Portrait - should always return expectedImageName + currentOrientation = UIInterfaceOrientationPortrait; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"portrait"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); + + // PortraitUpsideDown - should always return expectedImageName + currentOrientation = UIInterfaceOrientationPortraitUpsideDown; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"portraitUpsideDown"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); +} + +- (void)testiPadOrientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPad = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Portrait", + @"landscapeRight" : @"Default-Portrait", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Portrait", + @"landscapeRight" : @"Default-Portrait", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Landscape", + @"portraitUpsideDown" : @"Default-Landscape" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Landscape", + @"portraitUpsideDown" : @"Default-Landscape" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Portrait", + @"landscapeRight" : @"Default-Portrait", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Landscape", + @"portraitUpsideDown" : @"Default-Landscape" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; +} + +- (void)testiPhoneOrientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; +} + +- (void)testiPhone5Orientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + device.iPhone5 = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; +} + +- (void)testiPhone6Orientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + device.iPhone6 = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; +} + +- (void)testiPhone6PlusOrientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + device.iPhone6Plus = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-736h", + @"landscapeRight" : @"Default-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-736h", + @"landscapeRight" : @"Default-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-Landscape-736h", + @"portraitUpsideDown" : @"Default-Landscape-736h" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-Landscape-736h", + @"portraitUpsideDown" : @"Default-Landscape-736h" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-736h", + @"landscapeRight" : @"Default-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-Landscape-736h", + @"portraitUpsideDown" : @"Default-Landscape-736h" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; +} + + + +@end diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h new file mode 100644 index 00000000..4756c79e --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h @@ -0,0 +1,57 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import +#import + +@interface PortraitOnly : NSObject +@end + +@interface PortraitUpsideDownOnly : NSObject +@end + +@interface AllPortraitOnly : NSObject +@end + + +@interface LandscapeLeftOnly : NSObject +@end + +@interface LandscapeRightOnly : NSObject +@end + +@interface AllLandscapeOnly : NSObject +@end + + +@interface AllOrientations : NSObject +@end + +@interface PortraitAndLandscapeLeftOnly : NSObject +@end + +@interface PortraitAndLandscapeRightOnly : NSObject +@end + +@interface PortraitUpsideDownAndLandscapeLeftOnly : NSObject +@end + +@interface PortraitUpsideDownAndLandscapeRightOnly : NSObject +@end + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m new file mode 100644 index 00000000..b5a1b23e --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m @@ -0,0 +1,200 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + */ + +#import +#import "ImageNameTestDelegates.h" + +@implementation PortraitOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitUpsideDownOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortraitUpsideDown; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation AllPortraitOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + + +@implementation LandscapeLeftOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskLandscapeLeft; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation LandscapeRightOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation AllLandscapeOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + + +@implementation AllOrientations + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskAll; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitAndLandscapeLeftOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitAndLandscapeRightOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitUpsideDownAndLandscapeLeftOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeLeft; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitUpsideDownAndLandscapeRightOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist new file mode 100644 index 00000000..95c8addb --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist @@ -0,0 +1,44 @@ + + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.apache.cordova.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj new file mode 100644 index 00000000..ce820d81 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj @@ -0,0 +1,505 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */; }; + 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B019DA114400DA31AC /* ImageNameTest.m */; }; + 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B219DA116500DA31AC /* Foundation.framework */; }; + 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B419DA127E00DA31AC /* UIKit.framework */; }; + 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */; }; + 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; }; + 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519019DA0F8300DA31AC /* libCordova.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 68A32D7114102E1C006B237C; + remoteInfo = CordovaLib; + }; + 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E9F517219DA09CE00DA31AC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7E9F519419DA102000DA31AC; + remoteInfo = CDVSplashScreenLib; + }; + 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC07D0554694100DB518D; + remoteInfo = CordovaLib; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7E9F519319DA102000DA31AC /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = "../node_modules/cordova-ios/CordovaLib/CordovaLib.xcodeproj"; sourceTree = ""; }; + 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCDVSplashScreenLib.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CDVSplashScreenLibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 7E9F51A219DA102000DA31AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = ../../../src/ios/CDVSplashScreen.m; sourceTree = SOURCE_ROOT; }; + 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = ../../../src/ios/CDVSplashScreen.h; sourceTree = SOURCE_ROOT; }; + 7E9F51B019DA114400DA31AC /* ImageNameTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTest.m; sourceTree = ""; }; + 7E9F51B219DA116500DA31AC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 7E9F51B419DA127E00DA31AC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageNameTestDelegates.h; sourceTree = ""; }; + 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTestDelegates.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7E9F519219DA102000DA31AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7E9F519C19DA102000DA31AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */, + 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */, + 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */, + 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7E9F517119DA09CE00DA31AC = { + isa = PBXGroup; + children = ( + 7E9F51B419DA127E00DA31AC /* UIKit.framework */, + 7E9F51B219DA116500DA31AC /* Foundation.framework */, + 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */, + 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */, + 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */, + 7E9F517D19DA0A0A00DA31AC /* Products */, + ); + sourceTree = ""; + }; + 7E9F517D19DA0A0A00DA31AC /* Products */ = { + isa = PBXGroup; + children = ( + 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */, + 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 7E9F518C19DA0F8300DA31AC /* Products */ = { + isa = PBXGroup; + children = ( + 7E9F519019DA0F8300DA31AC /* libCordova.a */, + ); + name = Products; + sourceTree = ""; + }; + 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */ = { + isa = PBXGroup; + children = ( + 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */, + 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */, + ); + path = CDVSplashScreenLib; + sourceTree = SOURCE_ROOT; + }; + 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */ = { + isa = PBXGroup; + children = ( + 7E9F51A119DA102000DA31AC /* Supporting Files */, + 7E9F51B019DA114400DA31AC /* ImageNameTest.m */, + 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */, + 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */, + ); + path = CDVSplashScreenLibTests; + sourceTree = ""; + }; + 7E9F51A119DA102000DA31AC /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 7E9F51A219DA102000DA31AC /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */; + buildPhases = ( + 7E9F519119DA102000DA31AC /* Sources */, + 7E9F519219DA102000DA31AC /* Frameworks */, + 7E9F519319DA102000DA31AC /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CDVSplashScreenLib; + productName = CDVSplashScreenLib; + productReference = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; + productType = "com.apple.product-type.library.static"; + }; + 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */; + buildPhases = ( + 7E9F519B19DA102000DA31AC /* Sources */, + 7E9F519C19DA102000DA31AC /* Frameworks */, + 7E9F519D19DA102000DA31AC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */, + 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */, + ); + name = CDVSplashScreenLibTests; + productName = CDVSplashScreenLibTests; + productReference = 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7E9F517219DA09CE00DA31AC /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0600; + TargetAttributes = { + 7E9F519419DA102000DA31AC = { + CreatedOnToolsVersion = 6.0; + }; + 7E9F519E19DA102000DA31AC = { + CreatedOnToolsVersion = 6.0; + }; + }; + }; + buildConfigurationList = 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7E9F517119DA09CE00DA31AC; + productRefGroup = 7E9F517D19DA0A0A00DA31AC /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7E9F518C19DA0F8300DA31AC /* Products */; + ProjectRef = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */, + 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 7E9F519019DA0F8300DA31AC /* libCordova.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libCordova.a; + remoteRef = 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 7E9F519D19DA102000DA31AC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7E9F519119DA102000DA31AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7E9F519B19DA102000DA31AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */, + 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */; + targetProxy = 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */; + }; + 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = CordovaLib; + targetProxy = 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7E9F517619DA09CE00DA31AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + 7E9F517719DA09CE00DA31AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; + 7E9F51A419DA102000DA31AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", + "\"$(OBJROOT)/UninstalledProducts/include\"", + "\"$(BUILT_PRODUCTS_DIR)\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 7E9F51A519DA102000DA31AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", + "\n\"$(OBJROOT)/UninstalledProducts/include\"\n\"$(BUILT_PRODUCTS_DIR)\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7E9F51A719DA102000DA31AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 7E9F51A819DA102000DA31AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E9F517619DA09CE00DA31AC /* Debug */, + 7E9F517719DA09CE00DA31AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E9F51A419DA102000DA31AC /* Debug */, + 7E9F51A519DA102000DA31AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E9F51A719DA102000DA31AC /* Debug */, + 7E9F51A819DA102000DA31AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7E9F517219DA09CE00DA31AC /* Project object */; +} diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..8f912784 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout new file mode 100644 index 00000000..7e4cdb93 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 + IDESourceControlProjectName + CDVSplashScreenTest + IDESourceControlProjectOriginsDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + + IDESourceControlProjectPath + tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + ../../../../.. + + IDESourceControlProjectURL + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlWCCName + cordova-plugin-splashscreen + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme new file mode 100644 index 00000000..b97b8633 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme new file mode 100644 index 00000000..6a2a5261 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/README.md new file mode 100644 index 00000000..97ee9dff --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/README.md @@ -0,0 +1,40 @@ + + +# iOS Tests for CDVSplashScreen + +You need to install `node.js` to pull in `cordova-ios`. + +First install cordova-ios: + + npm install + +... in the current folder. + + +# Testing from Xcode + +1. Launch the `CDVSplashScreenTest.xcworkspace` file. +2. Choose "CDVSplashScreenLibTests" from the scheme drop-down menu +3. Click and hold on the `Play` button, and choose the `Wrench` icon to run the tests + + +# Testing from the command line + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/de/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/de/README.md new file mode 100644 index 00000000..9c7f0a4f --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/de/README.md @@ -0,0 +1,39 @@ + + +# iOS-Tests für CDVSplashScreen + +Sie müssen installieren `node.js` in `Cordova-Ios` zu ziehen. + +Installieren Sie Cordova-Ios zum ersten Mal: + + npm install + + +... im aktuellen Ordner. + +# Testen von Xcode + + 1. Starten Sie die Datei `CDVSplashScreenTest.xcworkspace` . + 2. Wählen Sie im Dropdown-Schema "CDVSplashScreenLibTests" + 3. Klicken Sie und halten Sie auf den `Play` -Button und wählen Sie das `Schraubenschlüssel` -Symbol zum Ausführen der tests + +# Tests von der Befehlszeile aus + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/es/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/es/README.md new file mode 100644 index 00000000..2176c921 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/es/README.md @@ -0,0 +1,39 @@ + + +# Pruebas de iOS para CDVSplashScreen + +Necesita instalar `node.js` en `Córdoba-ios`. + +Primero instalar cordova-ios: + + npm install + + +... en la carpeta actual. + +# Prueba de Xcode + + 1. Iniciar el archivo `CDVSplashScreenTest.xcworkspace` . + 2. Elija "CDVSplashScreenLibTests" en el menú de lista desplegable esquema + 3. Haga clic y mantenga el botón de `Play` y elegir el icono de `llave inglesa` para ejecutar las pruebas + +# Pruebas desde la línea de comandos + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/fr/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/fr/README.md new file mode 100644 index 00000000..0dbbd0d2 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/fr/README.md @@ -0,0 +1,39 @@ + + +# Tests d'iOS pour CDVSplashScreen + +Vous devez installer `node.js` à `cordova-ios`. + +Commencez par installer cordova-ios : + + npm install + + +... dans le dossier actuel. + +# Tests de Xcode + + 1. Lancez le fichier `CDVSplashScreenTest.xcworkspace` . + 2. Choisissez « CDVSplashScreenLibTests » dans le menu déroulant de régime + 3. Cliquez et maintenez sur la touche `Play` et cliquez sur l'icône de `clé` pour exécuter les tests + +# Test de la ligne de commande + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/it/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/it/README.md new file mode 100644 index 00000000..2a42df67 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/it/README.md @@ -0,0 +1,39 @@ + + +# Test di iOS per CDVSplashScreen + +È necessario installare `node. js` per tirare in `cordova-ios`. + +In primo luogo installare cordova-ios: + + npm install + + +... nella cartella corrente. + +# Test da Xcode + + 1. Lanciare il file `CDVSplashScreenTest.xcworkspace` . + 2. Scegli "CDVSplashScreenLibTests" dal menu a discesa Schema + 3. Fare clic e tenere premuto il pulsante `Play` e scegliere l'icona della `chiave inglese` per eseguire i test + +# Test dalla riga di comando + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/ja/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/ja/README.md new file mode 100644 index 00000000..011b8242 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/ja/README.md @@ -0,0 +1,39 @@ + + +# CDVSplashScreen の iOS のテスト + +`Node.js` `コルドバ`ios をプルするをインストールする必要があります。. + +コルドバ ios をインストールします。 + + npm install + + +現在のフォルダーに. + +# Xcode からテスト + + 1. `CDVSplashScreenTest.xcworkspace`ファイルを起動します。 + 2. スキーム] ドロップダウン メニューから"CDVSplashScreenLibTests"を選択します。 + 3. クリックし、`再生`ボタンを押し、テストを実行する`レンチ`のアイコンを選択 + +# コマンドラインからテスト + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/ko/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/ko/README.md new file mode 100644 index 00000000..6981207a --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/ko/README.md @@ -0,0 +1,39 @@ + + +# CDVSplashScreen에 대 한 iOS 테스트 + +`Node.js` `코르도바` ios에서를 설치 해야. + +코르도바-ios를 설치 하는 첫번째는: + + npm install + + +현재 폴더에.... + +# Xcode에서 테스트 + + 1. `CDVSplashScreenTest.xcworkspace` 파일을 시작 합니다. + 2. 구성표 드롭 다운 메뉴에서 "CDVSplashScreenLibTests"를 선택 + 3. 클릭 하 고 `재생` 버튼에는 테스트를 실행 하려면 `공구 모양` 아이콘을 선택 + +# 명령줄에서 테스트 + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/pl/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/pl/README.md new file mode 100644 index 00000000..f13828fe --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/pl/README.md @@ -0,0 +1,39 @@ + + +# iOS testy dla CDVSplashScreen + +Musisz zainstalować `node.js` ciągnąć w `cordova-ios`. + +Najpierw zainstalować cordova-ios: + + npm install + + +... w folderze bieżącym. + +# Badania z Xcode + + 1. Uruchom plik `CDVSplashScreenTest.xcworkspace` . + 2. Wybierz z menu rozwijanego systemu "CDVSplashScreenLibTests" + 3. Kliknij i przytrzymaj przycisk `Play` i wybrać ikonę `klucz` do testów + +# Badania z wiersza polecenia + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/doc/zh/README.md b/plugins/cordova-plugin-splashscreen/tests/ios/doc/zh/README.md new file mode 100644 index 00000000..3a04bcd1 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/doc/zh/README.md @@ -0,0 +1,39 @@ + + +# CDVSplashScreen 的 iOS 測試 + +您需要安裝`node.js`拉`科爾多瓦 ios`中. + +第一次安裝科爾多瓦 ios: + + npm install + + +在當前資料夾中。 + +# 從 Xcode 測試 + + 1. 啟動`CDVSplashScreenTest.xcworkspace`檔。 + 2. 從方案下拉式功能表中選擇"CDVSplashScreenLibTests" + 3. 按一下並堅持`播放`按鈕,然後選擇要運行的測試的`扳手`圖示 + +# 從命令列測試 + + npm test diff --git a/plugins/cordova-plugin-splashscreen/tests/ios/package.json b/plugins/cordova-plugin-splashscreen/tests/ios/package.json new file mode 100644 index 00000000..761436c5 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/ios/package.json @@ -0,0 +1,13 @@ +{ + "name": "cordova-plugin-splashscreen-test-ios", + "version": "1.0.0", + "description": "iOS Unit Tests for Splashscreen Plugin", + "author": "Apache Software Foundation", + "license": "Apache Version 2.0", + "dependencies": { + "cordova-ios": "^3.6.0" + }, + "scripts": { + "test": "xcodebuild test -workspace CDVSplashScreenTest.xcworkspace -scheme CDVSplashScreenLibTests -destination 'platform=iOS Simulator,name=iPhone 5' CONFIGURATION_BUILD_DIR='/tmp'" + } +} diff --git a/plugins/cordova-plugin-splashscreen/tests/plugin.xml b/plugins/cordova-plugin-splashscreen/tests/plugin.xml new file mode 100644 index 00000000..bf9cb0ac --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/plugin.xml @@ -0,0 +1,29 @@ + + + + + Cordova Splashscreen Plugin Tests + Apache 2.0 + + + + diff --git a/plugins/cordova-plugin-splashscreen/tests/tests.js b/plugins/cordova-plugin-splashscreen/tests/tests.js new file mode 100644 index 00000000..8c4d22b4 --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/tests/tests.js @@ -0,0 +1,62 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +exports.defineAutoTest = function () { + describe('Splashscreen (cordova)', function () { + it("splashscreen.spec.1 should exist", function () { + expect(navigator.splashscreen).toBeDefined(); + }); + + it("splashscreen.spec.2 exec method should exist", function () { + expect(navigator.splashscreen.show).toBeDefined(); + expect(typeof navigator.splashscreen.show).toBe('function'); + }); + + it("splashscreen.spec.3 exec method should exist", function () { + expect(navigator.splashscreen.hide).toBeDefined(); + expect(typeof navigator.splashscreen.hide).toBe('function'); + }); + }); +}; + +exports.defineManualTests = function (contentEl, createActionButton) { + function showFor(duration) { + navigator.splashscreen.show(); + window.setTimeout(function () { + navigator.splashscreen.hide(); + }, 1000 * duration); + } + + contentEl.innerHTML = '

Splashscreen Tests

' + + '

Note for WP: AutoHideSplashScreen must be set to false in config.xml

' + + '
' + + 'Expected result: Will show the Cordova splashscreen for 1 second' + + '

' + + 'Expected result: Will show the Cordova splashscreen for 5 seconds'; + + createActionButton('Show for 1 second', function () { + showFor(1); + }, 'show1'); + + createActionButton('Show for 5 seconds', function () { + showFor(5); + }, 'show5'); +}; diff --git a/plugins/cordova-plugin-splashscreen/www/splashscreen.js b/plugins/cordova-plugin-splashscreen/www/splashscreen.js new file mode 100644 index 00000000..7cb48bdd --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/www/splashscreen.js @@ -0,0 +1,33 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +var exec = require('cordova/exec'); + +var splashscreen = { + show:function() { + exec(null, null, "SplashScreen", "show", []); + }, + hide:function() { + exec(null, null, "SplashScreen", "hide", []); + } +}; + +module.exports = splashscreen; diff --git a/plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js b/plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js new file mode 100644 index 00000000..1974b7dc --- /dev/null +++ b/plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js @@ -0,0 +1,77 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +/*jslint sloppy:true */ +/*global Windows:true, require, module, window, document, WinJS */ + +var cordova = require('cordova'), + channel = require('cordova/channel'); + +var isPhone = (cordova.platformId == "windows") && WinJS.Utilities.isPhone; +var localSplash = null; +var bgColor = "#464646"; // default backgrond color; TDOO - read it from .appxmanifest +var splashImageSrc = isPhone ? "ms-appx:///images/splashscreenphone.png" : "ms-appx:///images/splashscreen.png"; + +var SplashScreen = { + setBGColor: function (cssBGColor) { + bgColor = cssBGColor; + if (localSplash) { + localSplash.style.backgroundColor = bgColor; + } + }, + show: function () { + if (localSplash) { + return; // already showed + } + + localSplash = document.createElement("div"); + localSplash.style.backgroundColor = bgColor; + localSplash.style.position = "fixed"; + localSplash.style.top = "0"; + localSplash.style.width = "100%"; + localSplash.style.height = "100%"; + + localSplashImage = document.createElement("img"); + localSplashImage.src = splashImageSrc; + localSplashImage.style.maxWidth = "100%"; + localSplashImage.style.maxHeight = "100%"; + // center horizontally + localSplashImage.style.margin = "0 auto"; + localSplashImage.style.display = "block"; + // center vertically + localSplashImage.style.position = "relative"; + localSplashImage.style.top = "50%"; + localSplashImage.style.transform = "translateY(-50%)"; + + localSplash.appendChild(localSplashImage); + document.body.appendChild(localSplash); + }, + hide: function () { + if (localSplash) { + document.body.removeChild(localSplash); + localSplash = null; + } + } +}; + +module.exports = SplashScreen; + +require("cordova/exec/proxy").add("SplashScreen", SplashScreen); diff --git a/plugins/fetch.json b/plugins/fetch.json index d4ce0140..4701fbf0 100644 --- a/plugins/fetch.json +++ b/plugins/fetch.json @@ -19,14 +19,6 @@ "is_top_level": true, "variables": {} }, - "org.apache.cordova.splashscreen": { - "source": { - "type": "registry", - "id": "org.apache.cordova.splashscreen" - }, - "is_top_level": true, - "variables": {} - }, "org.apache.cordova.statusbar": { "source": { "type": "registry", @@ -59,14 +51,6 @@ "is_top_level": true, "variables": {} }, - "cordova-plugin-splashscreen": { - "source": { - "type": "registry", - "id": "cordova-plugin-splashscreen" - }, - "is_top_level": true, - "variables": {} - }, "nl.x-services.plugins.insomnia": { "source": { "type": "git", @@ -128,5 +112,13 @@ }, "is_top_level": true, "variables": {} + }, + "cordova-plugin-splashscreen": { + "source": { + "type": "registry", + "id": "cordova-plugin-splashscreen" + }, + "is_top_level": true, + "variables": {} } } diff --git a/plugins/ios.json b/plugins/ios.json index 637e10e9..a44da041 100644 --- a/plugins/ios.json +++ b/plugins/ios.json @@ -36,10 +36,6 @@ "xml": "", "count": 1 }, - { - "xml": "", - "count": 1 - }, { "xml": "", "count": 1 @@ -59,6 +55,10 @@ { "xml": "", "count": 1 + }, + { + "xml": "", + "count": 1 } ] } @@ -80,7 +80,7 @@ "CoreGraphics.framework": [ { "xml": false, - "count": 2 + "count": 1 } ], "MessageUI.framework": [ @@ -121,9 +121,6 @@ "org.apache.cordova.device": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, - "org.apache.cordova.splashscreen": { - "PACKAGE_NAME": "com.pliablepixels.zmninja" - }, "org.apache.cordova.statusbar": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, @@ -135,6 +132,9 @@ }, "com.phonegap.plugins.OrientationLock": { "PACKAGE_NAME": "com.pliablepixels.zmninja" + }, + "cordova-plugin-splashscreen": { + "PACKAGE_NAME": "com.pliablepixels.zmninja" } }, "dependent_plugins": {} diff --git a/plugins/org.apache.cordova.splashscreen/CONTRIBUTING.md b/plugins/org.apache.cordova.splashscreen/CONTRIBUTING.md deleted file mode 100644 index f7dbcaba..00000000 --- a/plugins/org.apache.cordova.splashscreen/CONTRIBUTING.md +++ /dev/null @@ -1,37 +0,0 @@ - - -# Contributing to Apache Cordova - -Anyone can contribute to Cordova. And we need your contributions. - -There are multiple ways to contribute: report bugs, improve the docs, and -contribute code. - -For instructions on this, start with the -[contribution overview](http://cordova.apache.org/#contribute). - -The details are explained there, but the important items are: - - Sign and submit an Apache ICLA (Contributor License Agreement). - - Have a Jira issue open that corresponds to your contribution. - - Run the tests so your patch doesn't break existing functionality. - -We look forward to your contributions! diff --git a/plugins/org.apache.cordova.splashscreen/LICENSE b/plugins/org.apache.cordova.splashscreen/LICENSE deleted file mode 100644 index 7a4a3ea2..00000000 --- a/plugins/org.apache.cordova.splashscreen/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/NOTICE b/plugins/org.apache.cordova.splashscreen/NOTICE deleted file mode 100644 index 8ec56a52..00000000 --- a/plugins/org.apache.cordova.splashscreen/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Cordova -Copyright 2012 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/plugins/org.apache.cordova.splashscreen/README.md b/plugins/org.apache.cordova.splashscreen/README.md deleted file mode 100644 index 7ad24017..00000000 --- a/plugins/org.apache.cordova.splashscreen/README.md +++ /dev/null @@ -1,22 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Plugin documentation: [doc/index.md](doc/index.md) diff --git a/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md b/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md deleted file mode 100644 index 1be97903..00000000 --- a/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md +++ /dev/null @@ -1,105 +0,0 @@ - -# Release Notes - -### 0.2.2 (Sept 25, 2013) -* CB-4889 bumping&resetting version -* CB-4889 renaming org.apache.cordova.core.splashscreen to org.apache.cordova.splashscreen -* Rename CHANGELOG.md -> RELEASENOTES.md -* [CB-4806] Update splashscreen image bounds for iOS 7 -* [CB-4752] Incremented plugin version on dev branch. - -### 0.2.3 (Oct 9, 2013) -* [CB-4806] Re-fix Update splashscreen image bounds for iOS 7 -* [CB-4934] plugin-splashscreen should not show by default on Windows8 -* [CB-4929] plugin-splashscreen not loading proxy windows8 -* [CB-4915] Incremented plugin version on dev branch. - -### 0.2.4 (Oct 28, 2013) -* CB-5128: add repo + issue tag to plugin.xml for splashscreen plugin -* [CB-5010] Incremented plugin version on dev branch. - -### 0.2.5 (Dec 4, 2013) -* add ubuntu platform -* Added amazon-fireos platform. Change to use amazon-fireos as a platform if the user agent string contains 'cordova-amazon-fireos' -* CB-5124 - Remove splashscreen config.xml values from iOS Configuration Docs, move to plugin docs - -### 0.2.6 (Jan 02, 2014) -* CB-5658 Add doc/index.md for Splashscreen plugin -* Handle error when splash image is missing. - -### 0.2.7 (Feb 05, 2014) -* [CB-3562] Fix aspect ratio on landscape-only iPhone applications -* CB-4051 fix for splashscreen rotation problem - -### 0.3.0 (Apr 17, 2014) -* Add Tizen support to plugin -* CB-6422: [windows8] use cordova/exec/proxy -* CB-4051: [ios] - Re-fix - Splashscreen rotation problem (closes #13) -* CB-6460: Update license headers -* CB-6465: Add license headers to Tizen code -* Add NOTICE file - -### 0.3.1 (Jun 05, 2014) -* documentation translation: cordova-plugin-splashscreen -* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen -* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen -* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen -* Lisa testing pulling in plugins for plugin: cordova-plugin-splashscreen -* CB-6810 Add license to CONTRIBUTING.md -* [wp8] updated quirk for and combined iOS,WP8,BB10 quirks as they are all the same -* [wp] implemented OnInit so splash screen can be shown before cordova page is loaded -* [wp] plugin must be autoloaded for AutoHideSplashScreen preference to work -* CB-6483 Use splash screen image from manifest on Windows8 -* CB-6491 add CONTRIBUTING.md -* Revert "Merge branch 'tizen' of http://github.com/siovene/cordova-plugin-splashscreen" - -### 0.3.2 (Aug 06, 2014) -* CB-6127 Updated translations for docs -* CB-7041 ios: Fix image filename logic when setting the iPad splash screen -* fixes Splashscreen crash on WP8 -* Remove outdated doc - -### 0.3.3 (Sep 17, 2014) -* CB-7249 cordova-plugin-splashscreen documentation translation -* Renamed test dir, added nested plugin.xml -* added documentation for manual tests -* CB-7196 port splashscreen tests to framework - -### 0.3.4 (Oct 03, 2014) -* Finalized iOS splash screen (image name) tests. 176 tests in all, 44 for each type of device (iPad, iPhone, iPhone5, iPhone6, iPhone 6 Plus). -* CB-7633 - (Re-fix based on updated unit tests) iPhone 6 Plus support -* Updated iOS tests for locked orientations -* Added more iOS splash screen tests. -* CB-7633 - Add support for iPhone 6/6+ -* Added failing iPhone 6/6 Plus tests. -* Added 'npm test' -* CB-7663 - iOS unit tests for splash screen -* Properly formatted splashscreen preference docs. - -### 0.3.5 (Dec 02, 2014) -* CB-7204 - Race condition when hiding and showing spinner (closes #21) -* CB-7700 cordova-plugin-splashscreen documentation translation: cordova-plugin-splashscreen - -### 1.0.0 (Feb 04, 2015) -* CB-8351 ios: Stop using deprecated IsIpad macro -* CB-3679 Add engine tag for Android >= 3.6.0 due to use of `preferences` -* CB-3679 Make SplashScreen plugin compatible with cordova-android@4.0.x diff --git a/plugins/org.apache.cordova.splashscreen/doc/de/index.md b/plugins/org.apache.cordova.splashscreen/doc/de/index.md deleted file mode 100644 index be0c3337..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/de/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Dieses Plugin zeigt und verbirgt einen Splash-Screen beim Start der Anwendung. - -## Installation - - cordova plugin add org.apache.cordova.splashscreen - - -## Unterstützte Plattformen - -* Amazon Fire OS -* Android -* BlackBerry 10 -* iOS -* Windows Phone 7 und 8 -* Windows 8 - -## Methoden - -* SplashScreen.Show -* SplashScreen.Hide - -### Android Eigenarten - -Sie müssen in der config.xml folgende Einstellungen vornehmen: - -`` `` - -Wo Foo ist der Name der Datei Splashscreen, vorzugsweise eine 9-Patch-Datei. Stellen Sie sicher, Splashcreen Dateien zu Ihrem Res/Xml-Verzeichnis unter den entsprechenden Ordnern hinzuzufügen. Der zweite Parameter stellt dar, wie lange das Splashscreen in Millisekunden angezeigt werden. Es wird standardmäßig auf 3000 ms. Weitere Informationen finden Sie unter [Symbole und Splash-Screens][1] . - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## SplashScreen.Hide - -Schließen Sie den Splash-Screen. - - Navigator.SplashScreen.Hide(); - - -### BlackBerry 10, WP8, iOS Eigenarten - -Die `config.xml` der Datei `AutoHideSplashScreen` muss `false` . Verstecken des Begrüßungsbildschirms für zwei Sekunden Verzögerung, fügen Sie einen Timer wie die folgende in der `deviceready` -Ereignishandler: - - setTimeout(function() {navigator.splashscreen.hide(); - }, 2000); - - -## SplashScreen.Show - -Zeigt den Begrüßungsbildschirm. - - Navigator.SplashScreen.Show(); - - -Ihre Anwendung kann nicht aufgerufen werden `navigator.splashscreen.show()` bis die app gestartet hat und das `deviceready` -Ereignis ausgelöst hat. Aber da in der Regel der Splash-Screen soll sichtbar sein, bevor die Anwendung gestartet wurde, scheint die Niederlage der Zweck des Begrüßungsbildschirms. Somit einige Konfiguration in `config.xml` wird automatisch `show` den Splash-Screen unmittelbar nach Ihrer app starten und bevor es voll gestartet und hat das `deviceready` Ereignis. Weitere Informationen zu dieser Konfiguration finden Sie unter [Symbole und Splash-Screens][1] . Aus diesem Grund ist es unwahrscheinlich, dass Sie aufrufen müssen `navigator.splashscreen.show()` den Splash-Screen beim Starten der app sichtbar zu machen. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/es/index.md b/plugins/org.apache.cordova.splashscreen/doc/es/index.md deleted file mode 100644 index 644bec3e..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/es/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Este plugin muestra y esconde una pantalla de bienvenida durante el inicio de la aplicación. - -## Instalación - - cordova plugin add org.apache.cordova.splashscreen - - -## Plataformas soportadas - -* Amazon fire OS -* Android -* BlackBerry 10 -* iOS -* Windows Phone 7 y 8 -* Windows 8 - -## Métodos - -* splashscreen.show -* splashscreen.hide - -### Rarezas Android - -En el archivo config.xml, tienes que añadir las siguientes preferencias: - -`` `` - -Donde foo es el nombre del archivo splashscreen, preferiblemente un archivo de 9 parche. Asegúrese de agregar tus archivos splashcreen en tu directorio res/xml bajo las carpetas apropiadas. El segundo parámetro representa cuánto aparecerán el splashscreen en milisegundos. Valor predeterminado es ms 3000. Ver [los iconos y salpicadura pantallas][1] para obtener más información. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.hide - -Despedir a la pantalla de bienvenida. - - Navigator.SplashScreen.Hide(); - - -### BlackBerry 10, WP8, iOS Quirk - -El `config.xml` del archivo `AutoHideSplashScreen` la configuración debe ser `false` . Para retrasar oculta la pantalla splash durante dos segundos, agregue un temporizador como la siguiente en el `deviceready` controlador de eventos: - - setTimeout(function() {navigator.splashscreen.hide(); - }, 2000); - - -## splashscreen.show - -Muestra la pantalla de bienvenida. - - Navigator.SplashScreen.Show(); - - -La aplicación no se puede llamar `navigator.splashscreen.show()` hasta que haya iniciado la aplicación y el `deviceready` evento ha despedido. Pero puesto que normalmente la pantalla está destinada a ser visible antes de que comience su aplicación, que parecería que el propósito de la pantalla de bienvenida. Proporcionar cierta configuración en `config.xml` automáticamente `show` la pantalla de presentación inmediatamente después de su lanzamiento de la aplicación y antes de ser completamente ha iniciado y recibió el `deviceready` evento. Ver [los iconos y salpicadura pantallas][1] para obtener más información sobre haciendo esta configuración. Por esta razón, es poco probable que necesitas llamar a `navigator.splashscreen.show()` para hacer la pantalla visible para el inicio de la aplicación. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/fr/index.md b/plugins/org.apache.cordova.splashscreen/doc/fr/index.md deleted file mode 100644 index a898d80f..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/fr/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Ce plugin affiche et masque un écran de démarrage lors du lancement de l'application. - -## Installation - - cordova plugin add org.apache.cordova.splashscreen - - -## Plates-formes prises en charge - -* Amazon Fire OS -* Android -* BlackBerry 10 -* iOS -* Windows Phone 7 et 8 -* Windows 8 - -## Méthodes - -* splashscreen.Show -* splashscreen.Hide - -### Quirks Android - -Dans votre fichier config.xml, vous devez ajouter les préférences suivantes : - -`` `` - -Où foo est le nom du fichier splashscreen, préférablement un fichier de 9 correctif. Assurez-vous d'ajouter vos fichiers splashcreen dans votre répertoire res/xml dans les dossiers appropriés. Le deuxième paramètre représente combien de temps le splashscreen apparaîtra en millisecondes. Il est par défaut à 3000 ms. Pour plus d'informations, consultez [icônes et écrans de démarrage][1] . - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.Hide - -Faire disparaître de l'écran de démarrage. - - Navigator.SplashScreen.Hide() ; - - -### BlackBerry 10, WP8, iOS Quirk - -La `config.xml` du fichier `AutoHideSplashScreen` doit être `false` . Pour retarder la cacher l'écran de démarrage pendant deux secondes, ajouter un minuteur comme suit dans la `deviceready` gestionnaire d'événements : - - setTimeout(function() {navigator.splashscreen.hide() ; - }, 2000) ; - - -## splashscreen.Show - -Affiche l'écran de démarrage. - - Navigator.SplashScreen.Show() ; - - -Votre application ne peut pas appeler `navigator.splashscreen.show()` jusqu'à ce que l'application a commencé et le `deviceready` événement a été déclenché. Mais puisqu'en général, l'écran de démarrage est destiné à être visible avant que votre application a commencé, qui semblerait à l'encontre des objectifs de l'écran de démarrage. Fournir une configuration en `config.xml` sera automatiquement `show` l'écran de démarrage immédiatement après votre lancement de l'app et avant qu'il a complètement démarré et a reçu le `deviceready` événement. Voir les [icônes et les écrans de démarrage][1] pour plus d'informations sur la conduite de cette configuration. Pour cette raison, il est peu probable que vous devez appeler `navigator.splashscreen.show()` pour rendre l'écran de démarrage visible pour le démarrage de l'application. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/index.md b/plugins/org.apache.cordova.splashscreen/doc/index.md deleted file mode 100644 index c3070cc4..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/index.md +++ /dev/null @@ -1,88 +0,0 @@ - - -# org.apache.cordova.splashscreen - -This plugin displays and hides a splash screen during application launch. - -## Installation - - cordova plugin add org.apache.cordova.splashscreen - - -## Supported Platforms - -- Amazon Fire OS -- Android -- BlackBerry 10 -- iOS -- Windows Phone 7 and 8 -- Windows 8 - - -## Methods - -- splashscreen.show -- splashscreen.hide - -### Android Quirks - -In your config.xml, you need to add the following preferences: - - - - -Where foo is the name of the splashscreen file, preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders. The second parameter represents how long the splashscreen will appear in milliseconds. It defaults to 3000 ms. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) -for more information. - -## splashscreen.hide - -Dismiss the splash screen. - - navigator.splashscreen.hide(); - - -### BlackBerry 10, WP8, iOS Quirk - -The `config.xml` file's `AutoHideSplashScreen` setting must be -`false`. To delay hiding the splash screen for two seconds, add a -timer such as the following in the `deviceready` event handler: - - setTimeout(function() { - navigator.splashscreen.hide(); - }, 2000); - -## splashscreen.show - -Displays the splash screen. - - navigator.splashscreen.show(); - - -Your application cannot call `navigator.splashscreen.show()` until the app has -started and the `deviceready` event has fired. But since typically the splash -screen is meant to be visible before your app has started, that would seem to -defeat the purpose of the splash screen. Providing some configuration in -`config.xml` will automatically `show` the splash screen immediately after your -app launch and before it has fully started and received the `deviceready` -event. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) -for more information on doing this configuration. For this reason, it is -unlikely you need to call `navigator.splashscreen.show()` to make the splash -screen visible for app startup. - diff --git a/plugins/org.apache.cordova.splashscreen/doc/it/index.md b/plugins/org.apache.cordova.splashscreen/doc/it/index.md deleted file mode 100644 index 2f6d2f1c..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/it/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Questo plugin Visualizza e nasconde una schermata iniziale durante l'avvio dell'applicazione. - -## Installazione - - cordova plugin add org.apache.cordova.splashscreen - - -## Piattaforme supportate - -* Amazon fuoco OS -* Android -* BlackBerry 10 -* iOS -* Windows Phone 7 e 8 -* Windows 8 - -## Metodi - -* splashscreen -* splashscreen.Hide - -### Stranezze Android - -Nel vostro config. xml, è necessario aggiungere le seguenti preferenze: - -`` `` - -Dove foo è il nome del file splashscreen, preferibilmente un file 9 patch. Assicurati di aggiungere i tuoi file splashcreen res/xml nella directory sotto cartelle appropriate. Il secondo parametro rappresenta quanto tempo lo splashscreen apparirà in millisecondi. Il valore predefinito è 3000 ms. Per ulteriori informazioni, vedere [icone e schermate iniziali][1] . - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.Hide - -Respingere la schermata iniziale. - - Navigator.SplashScreen.Hide(); - - -### BlackBerry 10, WP8, iOS Quirk - -Il `config.xml` di file `AutoHideSplashScreen` impostazione deve essere `false` . Per ritardare nascondendo la schermata iniziale per due secondi, aggiungere un timer ad esempio nel `deviceready` gestore di evento: - - setTimeout(function() {navigator.splashscreen.hide(); - }, 2000); - - -## splashscreen - -Visualizza la schermata iniziale. - - Navigator.SplashScreen.Show(); - - -L'applicazione non può chiamare `navigator.splashscreen.show()` fino a quando ha iniziato l'app e il `deviceready` ha generato l'evento. Ma poiché in genere la schermata iniziale è destinata ad essere visibile prima app ha iniziato, che sembrerebbe per sconfiggere lo scopo della schermata iniziale. Fornendo qualche configurazione in `config.xml` verrà automaticamente `show` la schermata iniziale subito dopo il lancio dell'app e prima che completamente ha iniziato e ha ricevuto il `deviceready` evento. Per ulteriori informazioni su facendo questa configurazione, vedere [icone e schermate iniziali][1] . Per questo motivo, è improbabile che dovete chiamare `navigator.splashscreen.show()` per rendere la schermata visibile per avvio di app. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/ja/index.md b/plugins/org.apache.cordova.splashscreen/doc/ja/index.md deleted file mode 100644 index d96a6140..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/ja/index.md +++ /dev/null @@ -1,74 +0,0 @@ - - -# org.apache.cordova.splashscreen - -このプラグインが表示され、アプリケーションの起動中にスプラッシュ スクリーンを非表示にします。 - -## インストール - - cordova plugin add org.apache.cordova.splashscreen - - -## サポートされているプラットフォーム - -* アマゾン火 OS -* アンドロイド -* ブラックベリー 10 -* iOS -* Windows Phone 7 と 8 -* Windows 8 - -## メソッド - -* splashscreen.show -* splashscreen.hide - -### Android の癖 - -あなたの config.xml を以下の設定を追加する必要があります。 - -`` `` - -Foo ができれば 9 パッチファイル splashscreen ファイルの名前です。 解像度/xml ディレクトリの適切なフォルダーの下に splashcreen ファイルを追加することを確認します。 2 番目のパラメーターは、スプラッシュ ・ スクリーンがの表示時間 (ミリ秒単位) を表します。 デフォルトでは 3000 ミリ秒です。 詳細については、[アイコンとスプラッシュ画面][1]を参照してください。 - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.hide - -スプラッシュ スクリーンを閉じます。 - - navigator.splashscreen.hide(); - - -### ブラックベリー 10、WP8、iOS の気まぐれ - -`config.xml`ファイルの `AutoHideSplashScreen` 設定する必要があります `false` 。 遅延を 2 秒間スプラッシュ スクリーンを非表示、タイマーを追加しますで次のように `deviceready` イベント ハンドラー。 - - setTimeout(function() {navigator.splashscreen.hide();}, 2000年); - - -## splashscreen.show - -スプラッシュ画面が表示されます。 - - navigator.splashscreen.show(); - - -アプリケーションを呼び出すことはできません `navigator.splashscreen.show()` 、アプリが開始されるまで、 `deviceready` イベントが発生します。 しかし、以来、通常スプラッシュ画面アプリ開始前に表示するものですと思われる、スプラッシュ スクリーンの目的の敗北します。 いくつかの構成を提供する `config.xml` は自動的に `show` スプラッシュ画面、アプリを起動後すぐに、それが完全に起動し、受信する前に、 `deviceready` イベント。 詳細についてはこの構成を行うには、[アイコンとスプラッシュ画面][1]を参照してください。 このような理由から、それは可能性を呼び出す必要があります `navigator.splashscreen.show()` アプリ起動時のスプラッシュ画面を見やすくします。 \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/ko/index.md b/plugins/org.apache.cordova.splashscreen/doc/ko/index.md deleted file mode 100644 index 86a4e837..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/ko/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -이 플러그인은 표시 하 고 응용 프로그램 실행 하는 동안 시작 화면을 숨깁니다. - -## 설치 - - cordova plugin add org.apache.cordova.splashscreen - - -## 지원 되는 플랫폼 - -* 아마존 화재 운영 체제 -* 안 드 로이드 -* 블랙베리 10 -* iOS -* Windows Phone 7과 8 -* 윈도우 8 - -## 메서드 - -* splashscreen.show -* splashscreen.hide - -### 안 드 로이드 단점 - -당신의 config.xml에 다음 환경 설정에 추가 해야 합니다. - -`` `` - -여기서 foo splashscreen 파일, 선호 9 패치 파일의 이름입니다. 적절 한 폴더 아래 res/xml 디렉토리에 splashcreen 파일을 추가 해야 합니다. 두 번째 매개 변수는 splashscreen 얼마나 밀리초 단위로 표시 됩니다 나타냅니다. 3000 ms 기본값으로 사용 됩니다. 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.hide - -시작 화면을 닫습니다. - - navigator.splashscreen.hide(); - - -### 블랙베리 10, WP8, iOS 특질 - -`config.xml`파일의 `AutoHideSplashScreen` 설정을 해야 합니다 `false` . 2 초 동안 시작 화면을 숨기고 지연에 다음과 같이 타이머 추가 `deviceready` 이벤트 처리기: - - setTimeout(function() {navigator.splashscreen.hide(); - }, 2000); - - -## splashscreen.show - -시작 화면을 표시합니다. - - navigator.splashscreen.show(); - - -응용 프로그램 호출할 수 없습니다 `navigator.splashscreen.show()` 응용 프로그램은 시작 될 때까지 및 `deviceready` 이벤트를 해 고 했다. 하지만 그 스플래시 스크린의 목적 것 같다 일반적으로 시작 화면이 당신의 애플 리 케이 션 시작 하기 전에 표시 될 운명이 다, 이후. 몇 가지 구성을 제공 `config.xml` 자동으로 `show` 시작 화면 응용 프로그램 실행 후 즉시 및 그것은 완벽 하 게 시작 하 고 받은 전에 `deviceready` 이벤트. 이 구성 하 고 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. 이러한 이유로, 그것은 가능성이 호출 해야 `navigator.splashscreen.show()` 시작 화면은 응용 프로그램 시작에 대 한 표시 되도록 합니다. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/pl/index.md b/plugins/org.apache.cordova.splashscreen/doc/pl/index.md deleted file mode 100644 index c23a332e..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/pl/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Ten plugin wyświetla i ukrywa ekran powitalny podczas uruchamiania aplikacji. - -## Instalacja - - cordova plugin add org.apache.cordova.splashscreen - - -## Obsługiwane platformy - -* Amazon Fire OS -* Android -* BlackBerry 10 -* iOS -* Windows Phone 7 i 8 -* Windows 8 - -## Metody - -* splashscreen.show -* splashscreen.Hide - -### Dziwactwa Androida - -W pliku config.xml musisz dodać następujące preferencje: - -`` `` - -Gdzie foo jest nazwą pliku ekranu powitalnego, najlepiej 9 łatce. Upewnij się dodać pliki splashcreen do katalogu res/xml w odpowiednich folderach. Drugi parametr reprezentuje, jak długo ekranu powitalnego pojawi się w milisekundach. Domyślnie 3000 ms. Aby uzyskać więcej informacji, zobacz [ikony i ekrany powitalne w aplikacjach][1] . - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.Hide - -Odrzucić ten opryskaæ têcza. - - Navigator.splashscreen.Hide(); - - -### Jeżyna 10, WP8, iOS dziwactwo - -`config.xml`Pliku `AutoHideSplashScreen` ustawienie musi być `false` . Opóźnienia, ukrywanie ekranu powitalnego przez dwie sekundy, dodać timer następujących w `deviceready` obsługa zdarzeń: - - setTimeout(function() {navigator.splashscreen.hide(); - }, 2000); - - -## splashscreen.show - -Wyświetla ekran powitalny. - - Navigator.splashscreen.show(); - - -Aplikacja nie może wywołać `navigator.splashscreen.show()` aż aplikacja została uruchomiona i `deviceready` imprezy został zwolniony. Ale ponieważ zazwyczaj opryskać tęcza ma być widoczne przed rozpoczęciem aplikacji, wydaje się sprzeczne z celem ekranu powitalnego. Dostarczanie niektórych konfiguracji w `config.xml` będzie automatycznie `show` ekran powitalny, natychmiast po uruchomienie aplikacji i przed pełni rozpoczął i otrzymał `deviceready` zdarzenie. Aby uzyskać więcej informacji na robienie tej konfiguracji, zobacz [ikony i ekrany powitalne w aplikacjach][1] . Z tego powodu, jest mało prawdopodobne, należy zadzwonić `navigator.splashscreen.show()` Aby wyświetlić ekran powitalny dla uruchamiania aplikacji. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/ru/index.md b/plugins/org.apache.cordova.splashscreen/doc/ru/index.md deleted file mode 100644 index 1f872273..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/ru/index.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# org.apache.cordova.splashscreen - -Этот плагин отображает и скрывает экран-заставку при запуске приложения. - -## Установка - - cordova plugin add org.apache.cordova.splashscreen - - -## Поддерживаемые платформы - -* Amazon Fire OS -* Android -* BlackBerry 10 -* iOS -* Windows Phone 7 и 8 -* Windows 8 - -## Методы - -* splashscreen.show -* splashscreen.hide - -### Особенности Android - -В вашем файле config.xml необходимо добавить следующие настройки: - -`` `` - -Где foo это имя файла splashscreen, желательно 9 заплатку. Убедитесь в том добавить ваши splashcreen файлы в папку res/xml в соответствующие папки. Второй параметр представляет, как долго splashscreen появится в миллисекундах. По умолчанию он 3000 МС. Увидеть [иконки и заставки][1] для получения дополнительной информации. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.hide - -Закройте экран-заставка. - - Navigator.SplashScreen.Hide(); - - -### Особенности BlackBerry 10, WP8, iOS - -`config.xml`Файла `AutoHideSplashScreen` должен быть `false` . Для задержки скрытия заставки на две секунды, добавить таймер, например в `deviceready` обработчик событий: - - setTimeout(function() {navigator.splashscreen.hide(); - }, 2000); - - -## splashscreen.show - -Отображает экран-заставку. - - Navigator.SplashScreen.Show(); - - -Ваше приложение не может вызвать `navigator.splashscreen.show()` до тех пор, пока приложение началась и `deviceready` событие инициировано. Но поскольку обычно экран-заставка должен быть видимым до начала вашего приложения, что казалось бы поражение цели экрана-заставки. Предоставление некоторых конфигурации в `config.xml` будет автоматически `show` экран-заставку сразу же после запуска вашего приложения и перед его полностью запущен и получил `deviceready` событие. Увидеть [иконки и заставки][1] для получения дополнительной информации на делать этой конфигурации. По этой причине маловероятно, вам нужно вызвать `navigator.splashscreen.show()` для отображения экрана-заставки для запуска приложения. \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/doc/zh/index.md b/plugins/org.apache.cordova.splashscreen/doc/zh/index.md deleted file mode 100644 index 40e66918..00000000 --- a/plugins/org.apache.cordova.splashscreen/doc/zh/index.md +++ /dev/null @@ -1,74 +0,0 @@ - - -# org.apache.cordova.splashscreen - -這個外掛程式顯示和隱藏在應用程式啟動期間的初始螢幕。 - -## 安裝 - - cordova plugin add org.apache.cordova.splashscreen - - -## 支援的平臺 - -* 亞馬遜火 OS -* Android 系統 -* 黑莓 10 -* iOS -* Windows Phone 7 和 8 -* Windows 8 - -## 方法 - -* splashscreen.show -* splashscreen.hide - -### Android 的怪癖 - -在你的 config.xml,您需要添加以下優惠: - -`` `` - -美孚在哪裡閃屏檔,最好是 9 修補程式檔的名稱。 請確保您的 splashcreen 檔添加到 res/xml 目錄下相應的資料夾。 第二個參數表示多久閃屏會顯示以毫秒為單位。 它將預設為 3000 毫秒。 有關更多資訊,請參見[圖示和啟動畫面][1]。 - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html - -## splashscreen.hide - -解雇的閃屏。 - - navigator.splashscreen.hide() ; - - -### 黑莓 10,WP8,iOS 怪癖 - -`config.xml`檔的 `AutoHideSplashScreen` 設置必須為 `false` 。 若要延遲兩秒鐘隱藏的閃屏,添加如下所示在計時器 `deviceready` 事件處理常式: - - setTimeout(function() {navigator.splashscreen.hide() ;},2000年) ; - - -## splashscreen.show - -顯示初始螢幕。 - - navigator.splashscreen.show() ; - - -您的應用程式無法調用 `navigator.splashscreen.show()` 直到應用程式已經開始, `deviceready` 觸發了事件。 但是,由於通常的閃屏為了是可見的在您的應用程式啟動之前,這似乎會打敗閃屏的目的。 提供一些配置在 `config.xml` 將自動 `show` 閃屏您的應用程式啟動後立即和之前它已經完全起步並收到 `deviceready` 事件。 做這種配置的詳細資訊,請參閱[圖示和啟動畫面][1]。 出於這個原因,它不太可能您需要調用 `navigator.splashscreen.show()` ,使初始螢幕可見為應用程式啟動。 \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/package.json b/plugins/org.apache.cordova.splashscreen/package.json deleted file mode 100644 index 02b30c34..00000000 --- a/plugins/org.apache.cordova.splashscreen/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "version": "1.0.0", - "name": "org.apache.cordova.splashscreen", - "cordova_name": "Splashscreen", - "description": "Cordova Splashscreen Plugin", - "license": "Apache 2.0", - "repo": "https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git", - "issue": "https://issues.apache.org/jira/browse/CB/component/12320653", - "keywords": [ - "cordova", - "splashscreen" - ], - "platforms": [ - "android", - "amazon-fireos", - "ubuntu", - "ios", - "blackberry10", - "wp7", - "wp8", - "windows8", - "tizen" - ], - "engines": [ - { - "name": "cordova-android", - "version": ">=3.6.0" - } - ], - "englishdoc": "\n\n# org.apache.cordova.splashscreen\n\nThis plugin displays and hides a splash screen during application launch.\n\n## Installation\n\n cordova plugin add org.apache.cordova.splashscreen\n\n\n## Supported Platforms\n\n- Amazon Fire OS\n- Android\n- BlackBerry 10\n- iOS\n- Windows Phone 7 and 8\n- Windows 8\n\n\n## Methods\n\n- splashscreen.show\n- splashscreen.hide\n\n### Android Quirks\n\nIn your config.xml, you need to add the following preferences:\n\n \n \n\nWhere foo is the name of the splashscreen file, preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders. The second parameter represents how long the splashscreen will appear in milliseconds. It defaults to 3000 ms. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)\nfor more information.\n\n## splashscreen.hide\n\nDismiss the splash screen.\n\n navigator.splashscreen.hide();\n\n\n### BlackBerry 10, WP8, iOS Quirk\n\nThe `config.xml` file's `AutoHideSplashScreen` setting must be\n`false`. To delay hiding the splash screen for two seconds, add a\ntimer such as the following in the `deviceready` event handler:\n\n setTimeout(function() {\n navigator.splashscreen.hide();\n }, 2000);\n\n## splashscreen.show\n\nDisplays the splash screen.\n\n navigator.splashscreen.show();\n\n\nYour application cannot call `navigator.splashscreen.show()` until the app has\nstarted and the `deviceready` event has fired. But since typically the splash\nscreen is meant to be visible before your app has started, that would seem to\ndefeat the purpose of the splash screen. Providing some configuration in\n`config.xml` will automatically `show` the splash screen immediately after your\napp launch and before it has fully started and received the `deviceready`\nevent. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)\nfor more information on doing this configuration. For this reason, it is\nunlikely you need to call `navigator.splashscreen.show()` to make the splash\nscreen visible for app startup.\n\n" -} \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/plugin.xml b/plugins/org.apache.cordova.splashscreen/plugin.xml deleted file mode 100644 index fd70fd2c..00000000 --- a/plugins/org.apache.cordova.splashscreen/plugin.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - Splashscreen - Cordova Splashscreen Plugin - Apache 2.0 - cordova,splashscreen - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - https://issues.apache.org/jira/browse/CB/component/12320653 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/org.apache.cordova.splashscreen/src/android/SplashScreen.java b/plugins/org.apache.cordova.splashscreen/src/android/SplashScreen.java deleted file mode 100644 index ec3ad931..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/android/SplashScreen.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ - -package org.apache.cordova.splashscreen; - -import android.app.Dialog; -import android.app.ProgressDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.graphics.Color; -import android.os.Handler; -import android.view.Display; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.LinearLayout; - -import org.apache.cordova.CallbackContext; -import org.apache.cordova.CordovaPlugin; -import org.apache.cordova.CordovaWebView; -import org.json.JSONArray; -import org.json.JSONException; - -public class SplashScreen extends CordovaPlugin { - private static final String LOG_TAG = "SplashScreen"; - // Cordova 3.x.x has a copy of this plugin bundled with it (SplashScreenInternal.java). - // Enable functionality only if running on 4.x.x. - private static final boolean HAS_BUILT_IN_SPLASH_SCREEN = Integer.valueOf(CordovaWebView.CORDOVA_VERSION.split("\\.")[0]) < 4; - private static Dialog splashDialog; - private static ProgressDialog spinnerDialog; - private static boolean firstShow = true; - - // Helper to be compile-time compatable with both Cordova 3.x and 4.x. - private View getView() { - try { - return (View)webView.getClass().getMethod("getView").invoke(webView); - } catch (Exception e) { - return (View)webView; - } - } - - @Override - protected void pluginInitialize() { - if (HAS_BUILT_IN_SPLASH_SCREEN || !firstShow) { - return; - } - // Make WebView invisible while loading URL - getView().setVisibility(View.INVISIBLE); - int drawableId = preferences.getInteger("SplashDrawableId", 0); - if (drawableId == 0) { - String splashResource = preferences.getString("SplashScreen", null); - if (splashResource != null) { - drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getClass().getPackage().getName()); - if (drawableId == 0) { - drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getPackageName()); - } - preferences.set("SplashDrawableId", drawableId); - } - } - - firstShow = false; - loadSpinner(); - showSplashScreen(true); - } - - @Override - public void onPause(boolean multitasking) { - if (HAS_BUILT_IN_SPLASH_SCREEN) { - return; - } - // hide the splash screen to avoid leaking a window - this.removeSplashScreen(); - } - - @Override - public void onDestroy() { - if (HAS_BUILT_IN_SPLASH_SCREEN) { - return; - } - // hide the splash screen to avoid leaking a window - this.removeSplashScreen(); - firstShow = true; - } - - @Override - public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { - if (action.equals("hide")) { - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - webView.postMessage("splashscreen", "hide"); - } - }); - } else if (action.equals("show")) { - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - webView.postMessage("splashscreen", "show"); - } - }); - } else if (action.equals("spinnerStart")) { - if (!HAS_BUILT_IN_SPLASH_SCREEN) { - final String title = args.getString(0); - final String message = args.getString(1); - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - spinnerStart(title, message); - } - }); - } - } else { - return false; - } - - callbackContext.success(); - return true; - } - - @Override - public Object onMessage(String id, Object data) { - if (HAS_BUILT_IN_SPLASH_SCREEN) { - return null; - } - if ("splashscreen".equals(id)) { - if ("hide".equals(data.toString())) { - this.removeSplashScreen(); - } else { - this.showSplashScreen(false); - } - } else if ("spinner".equals(id)) { - if ("stop".equals(data.toString())) { - this.spinnerStop(); - getView().setVisibility(View.VISIBLE); - } - } else if ("onReceivedError".equals(id)) { - spinnerStop(); - } - return null; - } - - private void removeSplashScreen() { - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - if (splashDialog != null && splashDialog.isShowing()) { - splashDialog.dismiss(); - splashDialog = null; - } - } - }); - } - - /** - * Shows the splash screen over the full Activity - */ - @SuppressWarnings("deprecation") - private void showSplashScreen(final boolean hideAfterDelay) { - final int splashscreenTime = preferences.getInteger("SplashScreenDelay", 3000); - final int drawableId = preferences.getInteger("SplashDrawableId", 0); - - // If the splash dialog is showing don't try to show it again - if (this.splashDialog != null && splashDialog.isShowing()) { - return; - } - if (drawableId == 0 || (splashscreenTime <= 0 && hideAfterDelay)) { - return; - } - - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - // Get reference to display - Display display = cordova.getActivity().getWindowManager().getDefaultDisplay(); - Context context = webView.getContext(); - - // Create the layout for the dialog - LinearLayout root = new LinearLayout(context); - root.setMinimumHeight(display.getHeight()); - root.setMinimumWidth(display.getWidth()); - root.setOrientation(LinearLayout.VERTICAL); - - // TODO: Use the background color of the webview's parent instead of using the - // preference. - root.setBackgroundColor(preferences.getInteger("backgroundColor", Color.BLACK)); - root.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT, 0.0F)); - root.setBackgroundResource(drawableId); - - // Create and show the dialog - splashDialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar); - // check to see if the splash screen should be full screen - if ((cordova.getActivity().getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) - == WindowManager.LayoutParams.FLAG_FULLSCREEN) { - splashDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - } - splashDialog.setContentView(root); - splashDialog.setCancelable(false); - splashDialog.show(); - - // Set Runnable to remove splash screen just in case - if (hideAfterDelay) { - final Handler handler = new Handler(); - handler.postDelayed(new Runnable() { - public void run() { - removeSplashScreen(); - } - }, splashscreenTime); - } - } - }); - } - - /* - * Load the spinner - */ - private void loadSpinner() { - // If loadingDialog property, then show the App loading dialog for first page of app - String loading = null; - if (webView.canGoBack()) { - loading = preferences.getString("LoadingDialog", null); - } - else { - loading = preferences.getString("LoadingPageDialog", null); - } - if (loading != null) { - String title = ""; - String message = "Loading Application..."; - - if (loading.length() > 0) { - int comma = loading.indexOf(','); - if (comma > 0) { - title = loading.substring(0, comma); - message = loading.substring(comma + 1); - } - else { - title = ""; - message = loading; - } - } - spinnerStart(title, message); - } - } - - private void spinnerStart(final String title, final String message) { - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - spinnerStop(); - spinnerDialog = ProgressDialog.show(webView.getContext(), title, message, true, true, - new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - spinnerDialog = null; - } - }); - } - }); - } - - private void spinnerStop() { - cordova.getActivity().runOnUiThread(new Runnable() { - public void run() { - if (spinnerDialog != null && spinnerDialog.isShowing()) { - spinnerDialog.dismiss(); - spinnerDialog = null; - } - } - }); - } -} diff --git a/plugins/org.apache.cordova.splashscreen/src/blackberry10/index.js b/plugins/org.apache.cordova.splashscreen/src/blackberry10/index.js deleted file mode 100644 index bd7e48c8..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/blackberry10/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2013 Research In Motion Limited. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -module.exports = { - show: function (success, fail, args, env) { - var result = new PluginResult(args, env); - result.error("Not supported on platform", false); - }, - - hide: function (success, fail, args, env) { - var result = new PluginResult(args, env); - window.qnx.webplatform.getApplication().windowVisible = true; - result.ok(undefined, false); - } -}; diff --git a/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h b/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h deleted file mode 100644 index 0d6ae397..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import - -typedef struct { - BOOL iPhone; - BOOL iPad; - BOOL iPhone5; - BOOL iPhone6; - BOOL iPhone6Plus; - BOOL retina; - -} CDV_iOSDevice; - -@interface CDVSplashScreen : CDVPlugin { - UIActivityIndicatorView* _activityView; - UIImageView* _imageView; - NSString* _curImageName; - BOOL _visible; -} - -- (void)show:(CDVInvokedUrlCommand*)command; -- (void)hide:(CDVInvokedUrlCommand*)command; - -@end diff --git a/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m b/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m deleted file mode 100644 index c28ae2f5..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m +++ /dev/null @@ -1,308 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import "CDVSplashScreen.h" -#import -#import - -#define kSplashScreenDurationDefault 0.25f - - -@implementation CDVSplashScreen - -- (void)pluginInitialize -{ - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pageDidLoad) name:CDVPageDidLoadNotification object:self.webView]; - - [self setVisible:YES]; -} - -- (void)show:(CDVInvokedUrlCommand*)command -{ - [self setVisible:YES]; -} - -- (void)hide:(CDVInvokedUrlCommand*)command -{ - [self setVisible:NO]; -} - -- (void)pageDidLoad -{ - id autoHideSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"AutoHideSplashScreen" lowercaseString]]; - - // if value is missing, default to yes - if ((autoHideSplashScreenValue == nil) || [autoHideSplashScreenValue boolValue]) { - [self setVisible:NO]; - } -} - -- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context -{ - [self updateImage]; -} - -- (void)createViews -{ - /* - * The Activity View is the top spinning throbber in the status/battery bar. We init it with the default Grey Style. - * - * whiteLarge = UIActivityIndicatorViewStyleWhiteLarge - * white = UIActivityIndicatorViewStyleWhite - * gray = UIActivityIndicatorViewStyleGray - * - */ - NSString* topActivityIndicator = [self.commandDelegate.settings objectForKey:[@"TopActivityIndicator" lowercaseString]]; - UIActivityIndicatorViewStyle topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray; - - if ([topActivityIndicator isEqualToString:@"whiteLarge"]) { - topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhiteLarge; - } else if ([topActivityIndicator isEqualToString:@"white"]) { - topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhite; - } else if ([topActivityIndicator isEqualToString:@"gray"]) { - topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray; - } - - UIView* parentView = self.viewController.view; - parentView.userInteractionEnabled = NO; // disable user interaction while splashscreen is shown - _activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:topActivityIndicatorStyle]; - _activityView.center = CGPointMake(parentView.bounds.size.width / 2, parentView.bounds.size.height / 2); - _activityView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin - | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin; - [_activityView startAnimating]; - - // Set the frame & image later. - _imageView = [[UIImageView alloc] init]; - [parentView addSubview:_imageView]; - - id showSplashScreenSpinnerValue = [self.commandDelegate.settings objectForKey:[@"ShowSplashScreenSpinner" lowercaseString]]; - // backwards compatibility - if key is missing, default to true - if ((showSplashScreenSpinnerValue == nil) || [showSplashScreenSpinnerValue boolValue]) { - [parentView addSubview:_activityView]; - } - - // Frame is required when launching in portrait mode. - // Bounds for landscape since it captures the rotation. - [parentView addObserver:self forKeyPath:@"frame" options:0 context:nil]; - [parentView addObserver:self forKeyPath:@"bounds" options:0 context:nil]; - - [self updateImage]; -} - -- (void)destroyViews -{ - [_imageView removeFromSuperview]; - [_activityView removeFromSuperview]; - _imageView = nil; - _activityView = nil; - _curImageName = nil; - - self.viewController.view.userInteractionEnabled = YES; // re-enable user interaction upon completion - [self.viewController.view removeObserver:self forKeyPath:@"frame"]; - [self.viewController.view removeObserver:self forKeyPath:@"bounds"]; -} - -- (CDV_iOSDevice) getCurrentDevice -{ - CDV_iOSDevice device; - - UIScreen* mainScreen = [UIScreen mainScreen]; - CGFloat mainScreenHeight = mainScreen.bounds.size.height; - CGFloat mainScreenWidth = mainScreen.bounds.size.width; - - int limit = MAX(mainScreenHeight,mainScreenWidth); - - device.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); - device.iPhone = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone); - device.retina = ([mainScreen scale] == 2.0); - device.iPhone5 = (device.iPhone && limit == 568.0); - // note these below is not a true device detect, for example if you are on an - // iPhone 6/6+ but the app is scaled it will prob set iPhone5 as true, but - // this is appropriate for detecting the runtime screen environment - device.iPhone6 = (device.iPhone && limit == 667.0); - device.iPhone6Plus = (device.iPhone && limit == 736.0); - - return device; -} - -- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device -{ - // Use UILaunchImageFile if specified in plist. Otherwise, use Default. - NSString* imageName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchImageFile"]; - - NSUInteger supportedOrientations = [orientationDelegate supportedInterfaceOrientations]; - - // Checks to see if the developer has locked the orientation to use only one of Portrait or Landscape - BOOL supportsLandscape = (supportedOrientations & UIInterfaceOrientationMaskLandscape); - BOOL supportsPortrait = (supportedOrientations & UIInterfaceOrientationMaskPortrait || supportedOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); - // this means there are no mixed orientations in there - BOOL isOrientationLocked = !(supportsPortrait && supportsLandscape); - - if (imageName) { - imageName = [imageName stringByDeletingPathExtension]; - } else { - imageName = @"Default"; - } - - if (device.iPhone5) { // does not support landscape - imageName = [imageName stringByAppendingString:@"-568h"]; - } else if (device.iPhone6) { // does not support landscape - imageName = [imageName stringByAppendingString:@"-667h"]; - } else if (device.iPhone6Plus) { // supports landscape - if (isOrientationLocked) { - imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"")]; - } else { - switch (currentOrientation) { - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - imageName = [imageName stringByAppendingString:@"-Landscape"]; - break; - default: - break; - } - } - imageName = [imageName stringByAppendingString:@"-736h"]; - - } else if (device.iPad) { // supports landscape - if (isOrientationLocked) { - imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")]; - } else { - switch (currentOrientation) { - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - imageName = [imageName stringByAppendingString:@"-Landscape"]; - break; - - case UIInterfaceOrientationPortrait: - case UIInterfaceOrientationPortraitUpsideDown: - default: - imageName = [imageName stringByAppendingString:@"-Portrait"]; - break; - } - } - } - - return imageName; -} - -// Sets the view's frame and image. -- (void)updateImage -{ - NSString* imageName = [self getImageName:self.viewController.interfaceOrientation delegate:(id)self.viewController device:[self getCurrentDevice]]; - - if (![imageName isEqualToString:_curImageName]) { - UIImage* img = [UIImage imageNamed:imageName]; - _imageView.image = img; - _curImageName = imageName; - } - - // Check that splash screen's image exists before updating bounds - if (_imageView.image) { - [self updateBounds]; - } else { - NSLog(@"WARNING: The splashscreen image named %@ was not found", imageName); - } -} - -- (void)updateBounds -{ - UIImage* img = _imageView.image; - CGRect imgBounds = (img) ? CGRectMake(0, 0, img.size.width, img.size.height) : CGRectZero; - - CGSize screenSize = [self.viewController.view convertRect:[UIScreen mainScreen].bounds fromView:nil].size; - UIInterfaceOrientation orientation = self.viewController.interfaceOrientation; - CGAffineTransform imgTransform = CGAffineTransformIdentity; - - /* If and only if an iPhone application is landscape-only as per - * UISupportedInterfaceOrientations, the view controller's orientation is - * landscape. In this case the image must be rotated in order to appear - * correctly. - */ - BOOL isIPad = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad; - if (UIInterfaceOrientationIsLandscape(orientation) && !isIPad) { - imgTransform = CGAffineTransformMakeRotation(M_PI / 2); - imgBounds.size = CGSizeMake(imgBounds.size.height, imgBounds.size.width); - } - - // There's a special case when the image is the size of the screen. - if (CGSizeEqualToSize(screenSize, imgBounds.size)) { - CGRect statusFrame = [self.viewController.view convertRect:[UIApplication sharedApplication].statusBarFrame fromView:nil]; - if (!(IsAtLeastiOSVersion(@"7.0"))) { - imgBounds.origin.y -= statusFrame.size.height; - } - } else if (imgBounds.size.width > 0) { - CGRect viewBounds = self.viewController.view.bounds; - CGFloat imgAspect = imgBounds.size.width / imgBounds.size.height; - CGFloat viewAspect = viewBounds.size.width / viewBounds.size.height; - // This matches the behaviour of the native splash screen. - CGFloat ratio; - if (viewAspect > imgAspect) { - ratio = viewBounds.size.width / imgBounds.size.width; - } else { - ratio = viewBounds.size.height / imgBounds.size.height; - } - imgBounds.size.height *= ratio; - imgBounds.size.width *= ratio; - } - - _imageView.transform = imgTransform; - _imageView.frame = imgBounds; -} - -- (void)setVisible:(BOOL)visible -{ - if (visible == _visible) { - return; - } - _visible = visible; - - id fadeSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreen" lowercaseString]]; - id fadeSplashScreenDuration = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreenDuration" lowercaseString]]; - - float fadeDuration = fadeSplashScreenDuration == nil ? kSplashScreenDurationDefault : [fadeSplashScreenDuration floatValue]; - - if ((fadeSplashScreenValue == nil) || ![fadeSplashScreenValue boolValue]) { - fadeDuration = 0; - } - - // Never animate the showing of the splash screen. - if (visible) { - if (_imageView == nil) { - [self createViews]; - } - } else if (fadeDuration == 0) { - [self destroyViews]; - } else { - [UIView transitionWithView:self.viewController.view - duration:fadeDuration - options:UIViewAnimationOptionTransitionNone - animations:^(void) { - [_imageView setAlpha:0]; - [_activityView setAlpha:0]; - } - completion:^(BOOL finished) { - if (finished) { - [self destroyViews]; - } - } - ]; - } -} - -@end diff --git a/plugins/org.apache.cordova.splashscreen/src/tizen/SplashScreenProxy.js b/plugins/org.apache.cordova.splashscreen/src/tizen/SplashScreenProxy.js deleted file mode 100644 index fbd9f35f..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/tizen/SplashScreenProxy.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -( function() { - -win = null; - -module.exports = { - show: function() { - if ( win === null ) { - win = window.open('splashscreen.html'); - } - }, - - hide: function() { - if ( win !== null ) { - win.close(); - win = null; - } - } -}; - -require("cordova/tizen/commandProxy").add("SplashScreen", module.exports); - -})(); diff --git a/plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.cpp b/plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.cpp deleted file mode 100644 index 1c9ecac8..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * Copyright 2013 Canonical Ltd. - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -#include - -#include "splashscreen.h" -#include - -#define SPLASHSCREEN_STATE_NAME "splashscreen" - -Splashscreen::Splashscreen(Cordova *cordova): CPlugin(cordova) { -} - -void Splashscreen::show(int, int) { - m_cordova->rootObject()->setProperty("splashscreenPath", m_cordova->getSplashscreenPath()); - - m_cordova->pushViewState(SPLASHSCREEN_STATE_NAME); -} - -void Splashscreen::hide(int, int) { - m_cordova->popViewState(SPLASHSCREEN_STATE_NAME); -} diff --git a/plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.h b/plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.h deleted file mode 100644 index 1d437f84..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/ubuntu/splashscreen.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2013 Canonical Ltd. - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -#ifndef SPLASHSCREEN_H -#define SPLASHSCREEN_H - -#include -#include - -class Splashscreen: public CPlugin { - Q_OBJECT -public: - explicit Splashscreen(Cordova *cordova); - - virtual const QString fullName() override { - return Splashscreen::fullID(); - } - - virtual const QString shortName() override { - return "SplashScreen"; - } - - static const QString fullID() { - return "SplashScreen"; - } - -public slots: - void show(int, int); - void hide(int, int); -}; - -#endif // SPLASHSCREEN_H diff --git a/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs b/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs deleted file mode 100644 index 4d3545b0..00000000 --- a/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs +++ /dev/null @@ -1,167 +0,0 @@ -/* - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -using System; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using Microsoft.Phone.Info; -using System.Windows.Controls.Primitives; -using System.Diagnostics; -using System.Windows.Media.Imaging; -using System.Windows.Resources; -using System.IO; -using System.Xml.Linq; -using System.Linq; -using System.Windows.Threading; - -namespace WPCordovaClassLib.Cordova.Commands -{ - /// - /// Listens for changes to the state of the battery on the device. - /// Currently only the "isPlugged" parameter available via native APIs. - /// - public class SplashScreen : BaseCommand - { - private Popup popup; - private bool autohide = true; - - private static bool WasShown = false; - - public SplashScreen() - { - Image SplashScreen = new Image(); - BitmapImage splash_image = new BitmapImage(); - splash_image.SetSource(Application.GetResourceStream(new Uri(@"SplashScreenImage.jpg", UriKind.Relative)).Stream); - SplashScreen.Source = splash_image; - - // Instansiate the popup and set the Child property of Popup to SplashScreen - popup = new Popup() {IsOpen = false, Child = SplashScreen }; - // Orient the popup accordingly - popup.HorizontalAlignment = HorizontalAlignment.Stretch; - popup.VerticalAlignment = VerticalAlignment.Center; - - - LoadConfigValues(); - } - - public override void OnInit() - { - // we only want to autoload the first time a page is loaded. - if (!WasShown) - { - WasShown = true; - show(); - } - } - - void LoadConfigValues() - { - StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri("config.xml", UriKind.Relative)); - - if (streamInfo != null) - { - StreamReader sr = new StreamReader(streamInfo.Stream); - //This will Read Keys Collection for the xml file - XDocument document = XDocument.Parse(sr.ReadToEnd()); - - var preferences = from results in document.Descendants() - where (string)results.Attribute("name") == "AutoHideSplashScreen" - select (string)results.Attribute("value") == "true"; - - if (preferences.Count() > 0 && preferences.First() == false) - { - autohide = false; - } - } - } - - public void show(string options = null) - { - Deployment.Current.Dispatcher.BeginInvoke(() => - { - if (popup.IsOpen) - { - return; - } - - popup.Child.Opacity = 0; - - Storyboard story = new Storyboard(); - DoubleAnimation animation; - animation = new DoubleAnimation(); - animation.From = 0.0; - animation.To = 1.0; - animation.Duration = new Duration(TimeSpan.FromSeconds(0.2)); - - Storyboard.SetTarget(animation, popup.Child); - Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity")); - story.Children.Add(animation); - - Debug.WriteLine("Fading the splash screen in"); - - story.Begin(); - - popup.IsOpen = true; - - if (autohide) - { - DispatcherTimer timer = new DispatcherTimer(); - timer.Tick += (object sender, EventArgs e) => - { - hide(); - }; - timer.Interval = TimeSpan.FromSeconds(1.2); - timer.Start(); - } - }); - } - - - public void hide(string options = null) - { - Deployment.Current.Dispatcher.BeginInvoke(() => - { - if (!popup.IsOpen) - { - return; - } - - popup.Child.Opacity = 1.0; - - Storyboard story = new Storyboard(); - DoubleAnimation animation; - animation = new DoubleAnimation(); - animation.From = 1.0; - animation.To = 0.0; - animation.Duration = new Duration(TimeSpan.FromSeconds(0.4)); - - Storyboard.SetTarget(animation, popup.Child); - Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity")); - story.Children.Add(animation); - story.Completed += (object sender, EventArgs e) => - { - popup.IsOpen = false; - }; - story.Begin(); - }); - } - } -} diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 2dd325a0..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout deleted file mode 100644 index 7e4cdb93..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 - IDESourceControlProjectName - CDVSplashScreenTest - IDESourceControlProjectOriginsDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - - IDESourceControlProjectPath - tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj - IDESourceControlProjectRelativeInstallPathDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - ../../../../.. - - IDESourceControlProjectURL - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlWCCName - cordova-plugin-splashscreen - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme deleted file mode 100644 index 13f9a157..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m deleted file mode 100644 index 1637d247..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m +++ /dev/null @@ -1,702 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import -#import -#import "CDVSplashScreen.h" -#import "ImageNameTestDelegates.h" - -const CDV_iOSDevice CDV_iOSDeviceZero = { 0, 0, 0, 0, 0, 0 }; - -@interface ImageNameTest : XCTestCase - -@property (nonatomic, strong) CDVSplashScreen* plugin; - -@end - -@interface CDVSplashScreen () - -// expose private interface -- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device; - -@end - -@implementation ImageNameTest - -- (void)setUp { - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. - - self.plugin = [[CDVSplashScreen alloc] init]; -} - -- (void)tearDown { - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void) orientationHelper:(id)delegate expectedImageNameDictionary:(NSDictionary*)expectedImageNameDictionary device:(CDV_iOSDevice)device{ - - NSString* name = nil; - NSString* expectedImageName = nil; - UIInterfaceOrientation currentOrientation; - NSString* deviceName = device.iPad? @"iPad" : device.iPhone6Plus? @"iPhone6Plus": device.iPhone6? @"iPhone6": device.iPhone5? @"iPhone5" : @"iPhone"; - - // LandscapeLeft, should always return expectedImageName - currentOrientation = UIInterfaceOrientationLandscapeLeft; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeLeft"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); - - // LandscapeRight - should always return expectedImageName - currentOrientation = UIInterfaceOrientationLandscapeRight; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeRight"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); - - // Portrait - should always return expectedImageName - currentOrientation = UIInterfaceOrientationPortrait; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"portrait"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); - - // PortraitUpsideDown - should always return expectedImageName - currentOrientation = UIInterfaceOrientationPortraitUpsideDown; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"portraitUpsideDown"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); -} - -- (void)testiPadOrientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPad = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Portrait", - @"landscapeRight" : @"Default-Portrait", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Portrait", - @"landscapeRight" : @"Default-Portrait", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Landscape", - @"portraitUpsideDown" : @"Default-Landscape" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Landscape", - @"portraitUpsideDown" : @"Default-Landscape" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Portrait", - @"landscapeRight" : @"Default-Portrait", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Landscape", - @"portraitUpsideDown" : @"Default-Landscape" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; -} - -- (void)testiPhoneOrientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; -} - -- (void)testiPhone5Orientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - device.iPhone5 = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; -} - -- (void)testiPhone6Orientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - device.iPhone6 = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; -} - -- (void)testiPhone6PlusOrientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - device.iPhone6Plus = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-736h", - @"landscapeRight" : @"Default-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-736h", - @"landscapeRight" : @"Default-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-Landscape-736h", - @"portraitUpsideDown" : @"Default-Landscape-736h" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-Landscape-736h", - @"portraitUpsideDown" : @"Default-Landscape-736h" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-736h", - @"landscapeRight" : @"Default-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-Landscape-736h", - @"portraitUpsideDown" : @"Default-Landscape-736h" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; -} - - - -@end diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h deleted file mode 100644 index be4a7883..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import - -@interface PortraitOnly : NSObject -@end - -@interface PortraitUpsideDownOnly : NSObject -@end - -@interface AllPortraitOnly : NSObject -@end - - -@interface LandscapeLeftOnly : NSObject -@end - -@interface LandscapeRightOnly : NSObject -@end - -@interface AllLandscapeOnly : NSObject -@end - - -@interface AllOrientations : NSObject -@end - -@interface PortraitAndLandscapeLeftOnly : NSObject -@end - -@interface PortraitAndLandscapeRightOnly : NSObject -@end - -@interface PortraitUpsideDownAndLandscapeLeftOnly : NSObject -@end - -@interface PortraitUpsideDownAndLandscapeRightOnly : NSObject -@end - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m deleted file mode 100644 index b5a1b23e..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m +++ /dev/null @@ -1,200 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import "ImageNameTestDelegates.h" - -@implementation PortraitOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitUpsideDownOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortraitUpsideDown; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation AllPortraitOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - - -@implementation LandscapeLeftOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscapeLeft; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation LandscapeRightOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation AllLandscapeOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - - -@implementation AllOrientations - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskAll; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitAndLandscapeLeftOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitAndLandscapeRightOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitUpsideDownAndLandscapeLeftOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeLeft; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitUpsideDownAndLandscapeRightOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist deleted file mode 100644 index a949946d..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.apache.cordova.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj deleted file mode 100644 index ce820d81..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj +++ /dev/null @@ -1,505 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */; }; - 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B019DA114400DA31AC /* ImageNameTest.m */; }; - 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B219DA116500DA31AC /* Foundation.framework */; }; - 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B419DA127E00DA31AC /* UIKit.framework */; }; - 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */; }; - 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; }; - 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519019DA0F8300DA31AC /* libCordova.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 68A32D7114102E1C006B237C; - remoteInfo = CordovaLib; - }; - 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7E9F517219DA09CE00DA31AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7E9F519419DA102000DA31AC; - remoteInfo = CDVSplashScreenLib; - }; - 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2AAC07D0554694100DB518D; - remoteInfo = CordovaLib; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 7E9F519319DA102000DA31AC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = "../node_modules/cordova-ios/CordovaLib/CordovaLib.xcodeproj"; sourceTree = ""; }; - 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCDVSplashScreenLib.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CDVSplashScreenLibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E9F51A219DA102000DA31AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = ../../../src/ios/CDVSplashScreen.m; sourceTree = SOURCE_ROOT; }; - 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = ../../../src/ios/CDVSplashScreen.h; sourceTree = SOURCE_ROOT; }; - 7E9F51B019DA114400DA31AC /* ImageNameTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTest.m; sourceTree = ""; }; - 7E9F51B219DA116500DA31AC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 7E9F51B419DA127E00DA31AC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageNameTestDelegates.h; sourceTree = ""; }; - 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTestDelegates.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 7E9F519219DA102000DA31AC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7E9F519C19DA102000DA31AC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */, - 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */, - 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */, - 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 7E9F517119DA09CE00DA31AC = { - isa = PBXGroup; - children = ( - 7E9F51B419DA127E00DA31AC /* UIKit.framework */, - 7E9F51B219DA116500DA31AC /* Foundation.framework */, - 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */, - 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */, - 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */, - 7E9F517D19DA0A0A00DA31AC /* Products */, - ); - sourceTree = ""; - }; - 7E9F517D19DA0A0A00DA31AC /* Products */ = { - isa = PBXGroup; - children = ( - 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */, - 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 7E9F518C19DA0F8300DA31AC /* Products */ = { - isa = PBXGroup; - children = ( - 7E9F519019DA0F8300DA31AC /* libCordova.a */, - ); - name = Products; - sourceTree = ""; - }; - 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */ = { - isa = PBXGroup; - children = ( - 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */, - 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */, - ); - path = CDVSplashScreenLib; - sourceTree = SOURCE_ROOT; - }; - 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */ = { - isa = PBXGroup; - children = ( - 7E9F51A119DA102000DA31AC /* Supporting Files */, - 7E9F51B019DA114400DA31AC /* ImageNameTest.m */, - 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */, - 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */, - ); - path = CDVSplashScreenLibTests; - sourceTree = ""; - }; - 7E9F51A119DA102000DA31AC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 7E9F51A219DA102000DA31AC /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */; - buildPhases = ( - 7E9F519119DA102000DA31AC /* Sources */, - 7E9F519219DA102000DA31AC /* Frameworks */, - 7E9F519319DA102000DA31AC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CDVSplashScreenLib; - productName = CDVSplashScreenLib; - productReference = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; - productType = "com.apple.product-type.library.static"; - }; - 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */; - buildPhases = ( - 7E9F519B19DA102000DA31AC /* Sources */, - 7E9F519C19DA102000DA31AC /* Frameworks */, - 7E9F519D19DA102000DA31AC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */, - 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */, - ); - name = CDVSplashScreenLibTests; - productName = CDVSplashScreenLibTests; - productReference = 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 7E9F517219DA09CE00DA31AC /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0600; - TargetAttributes = { - 7E9F519419DA102000DA31AC = { - CreatedOnToolsVersion = 6.0; - }; - 7E9F519E19DA102000DA31AC = { - CreatedOnToolsVersion = 6.0; - }; - }; - }; - buildConfigurationList = 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 7E9F517119DA09CE00DA31AC; - productRefGroup = 7E9F517D19DA0A0A00DA31AC /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 7E9F518C19DA0F8300DA31AC /* Products */; - ProjectRef = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */, - 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 7E9F519019DA0F8300DA31AC /* libCordova.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libCordova.a; - remoteRef = 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 7E9F519D19DA102000DA31AC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7E9F519119DA102000DA31AC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7E9F519B19DA102000DA31AC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */, - 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */; - targetProxy = 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */; - }; - 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CordovaLib; - targetProxy = 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 7E9F517619DA09CE00DA31AC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Debug; - }; - 7E9F517719DA09CE00DA31AC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; - 7E9F51A419DA102000DA31AC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", - "\"$(OBJROOT)/UninstalledProducts/include\"", - "\"$(BUILT_PRODUCTS_DIR)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 7E9F51A519DA102000DA31AC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", - "\n\"$(OBJROOT)/UninstalledProducts/include\"\n\"$(BUILT_PRODUCTS_DIR)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7E9F51A719DA102000DA31AC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 7E9F51A819DA102000DA31AC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7E9F517619DA09CE00DA31AC /* Debug */, - 7E9F517719DA09CE00DA31AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7E9F51A419DA102000DA31AC /* Debug */, - 7E9F51A519DA102000DA31AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7E9F51A719DA102000DA31AC /* Debug */, - 7E9F51A819DA102000DA31AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 7E9F517219DA09CE00DA31AC /* Project object */; -} diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 8f912784..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout deleted file mode 100644 index 7e4cdb93..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 - IDESourceControlProjectName - CDVSplashScreenTest - IDESourceControlProjectOriginsDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - - IDESourceControlProjectPath - tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj - IDESourceControlProjectRelativeInstallPathDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - ../../../../.. - - IDESourceControlProjectURL - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlWCCName - cordova-plugin-splashscreen - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme deleted file mode 100644 index b97b8633..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme b/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme deleted file mode 100644 index 6a2a5261..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/README.md b/plugins/org.apache.cordova.splashscreen/tests/ios/README.md deleted file mode 100644 index b6bf31b2..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# iOS Tests for CDVSplashScreen - -You need to install `node.js` to pull in `cordova-ios`. - -First install cordova-ios: - - npm install - -... in the current folder. - - -# Testing from Xcode - -1. Launch the `CDVSplashScreenTest.xcworkspace` file. -2. Choose "CDVSplashScreenLibTests" from the scheme drop-down menu -3. Click and hold on the `Play` button, and choose the `Wrench` icon to run the tests - - -# Testing from the command line - - npm test diff --git a/plugins/org.apache.cordova.splashscreen/tests/ios/package.json b/plugins/org.apache.cordova.splashscreen/tests/ios/package.json deleted file mode 100644 index ca5db593..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/ios/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "cordova-plugin-splashscreen-test-ios", - "version": "1.0.0", - "description": "iOS Unit Tests for Splashscreen Plugin", - "author": "Apache Software Foundation", - "license": "Apache Version 2.0", - "dependencies": { - "cordova-ios": "^3.6.0" - }, - "scripts": { - "test": "xcodebuild -scheme CordovaLib && xcodebuild test -scheme CDVSplashScreenLibTests -destination 'platform=iOS Simulator,name=iPhone 5'" - } -} \ No newline at end of file diff --git a/plugins/org.apache.cordova.splashscreen/tests/plugin.xml b/plugins/org.apache.cordova.splashscreen/tests/plugin.xml deleted file mode 100644 index 008a851f..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/plugin.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Cordova Splashscreen Plugin Tests - Apache 2.0 - - - - diff --git a/plugins/org.apache.cordova.splashscreen/tests/tests.js b/plugins/org.apache.cordova.splashscreen/tests/tests.js deleted file mode 100644 index 8c4d22b4..00000000 --- a/plugins/org.apache.cordova.splashscreen/tests/tests.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -exports.defineAutoTest = function () { - describe('Splashscreen (cordova)', function () { - it("splashscreen.spec.1 should exist", function () { - expect(navigator.splashscreen).toBeDefined(); - }); - - it("splashscreen.spec.2 exec method should exist", function () { - expect(navigator.splashscreen.show).toBeDefined(); - expect(typeof navigator.splashscreen.show).toBe('function'); - }); - - it("splashscreen.spec.3 exec method should exist", function () { - expect(navigator.splashscreen.hide).toBeDefined(); - expect(typeof navigator.splashscreen.hide).toBe('function'); - }); - }); -}; - -exports.defineManualTests = function (contentEl, createActionButton) { - function showFor(duration) { - navigator.splashscreen.show(); - window.setTimeout(function () { - navigator.splashscreen.hide(); - }, 1000 * duration); - } - - contentEl.innerHTML = '

Splashscreen Tests

' + - '

Note for WP: AutoHideSplashScreen must be set to false in config.xml

' + - '
' + - 'Expected result: Will show the Cordova splashscreen for 1 second' + - '

' + - 'Expected result: Will show the Cordova splashscreen for 5 seconds'; - - createActionButton('Show for 1 second', function () { - showFor(1); - }, 'show1'); - - createActionButton('Show for 5 seconds', function () { - showFor(5); - }, 'show5'); -}; diff --git a/plugins/org.apache.cordova.splashscreen/www/splashscreen.js b/plugins/org.apache.cordova.splashscreen/www/splashscreen.js deleted file mode 100644 index 7cb48bdd..00000000 --- a/plugins/org.apache.cordova.splashscreen/www/splashscreen.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -var exec = require('cordova/exec'); - -var splashscreen = { - show:function() { - exec(null, null, "SplashScreen", "show", []); - }, - hide:function() { - exec(null, null, "SplashScreen", "hide", []); - } -}; - -module.exports = splashscreen; diff --git a/plugins/org.apache.cordova.splashscreen/www/windows8/SplashScreenProxy.js b/plugins/org.apache.cordova.splashscreen/www/windows8/SplashScreenProxy.js deleted file mode 100644 index 42068ddf..00000000 --- a/plugins/org.apache.cordova.splashscreen/www/windows8/SplashScreenProxy.js +++ /dev/null @@ -1,106 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -/*jslint sloppy:true */ -/*global Windows:true, require, module, window, document, WinJS */ - -var cordova = require('cordova'), - channel = require('cordova/channel'); - -/* This is the actual implementation part that returns the result on Windows 8 -*/ - -var position = { x: 0, y: 0, width: 0, height: 0 }; // defined by evt.detail.splashScreen.imageLocation -var splash = null; // -var localSplash; // the image to display -var localSplashImage; -var bgColor = "#464646"; - - - -function updateImageLocation() { - localSplash.style.width = window.innerWidth + "px"; - localSplash.style.height = window.innerHeight + "px"; - localSplash.style.top = "0px"; - localSplash.style.left = "0px"; - - localSplashImage.style.top = position.y + "px"; - localSplashImage.style.left = position.x + "px"; - localSplashImage.style.height = position.height + "px"; - localSplashImage.style.width = position.width + "px"; -} - -function onResize(evt) { - if (splash) { - position = splash.imageLocation; - updateImageLocation(); - } -} - -var SplashScreen = { - setBGColor: function (cssBGColor) { - bgColor = cssBGColor; - if (localSplash) { - localSplash.style.backgroundColor = bgColor; - } - }, - show: function () { - window.addEventListener("resize", onResize, false); - localSplash = document.createElement("div"); - localSplash.style.backgroundColor = bgColor; - localSplash.style.position = "absolute"; - - localSplashImage = document.createElement("img"); - localSplashImage.src = "ms-appx:///images/splashscreen.png"; - localSplashImage.style.position = "absolute"; - - updateImageLocation(); - - localSplash.appendChild(localSplashImage); - document.body.appendChild(localSplash); - }, - hide: function () { - window.removeEventListener("resize", onResize, false); - document.body.removeChild(localSplash); - localSplash = null; - } -}; - -module.exports = SplashScreen; - -function activated(evt) { - if (evt.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) { - splash = evt.detail.splashScreen; - position = evt.detail.splashScreen.imageLocation; - } -} - - - - -channel.onCordovaReady.subscribe(function (evt) { - document.addEventListener("DOMContentLoaded", function (evt) { - WinJS.Application.addEventListener("activated", activated, false); - }, false); -}); - -require("cordova/exec/proxy").add("SplashScreen", SplashScreen); - diff --git a/www/external/angular-carousel.js b/www/external/angular-carousel.js index c117a642..9c7f770a 100644 --- a/www/external/angular-carousel.js +++ b/www/external/angular-carousel.js @@ -1,4 +1,6 @@ +/* jshint ignore:start */ /** + * Angular Carousel - Mobile friendly touch carousel for AngularJS * @version v0.3.12 - 2015-06-11 * @link http://revolunet.github.com/angular-carousel @@ -13,6 +15,9 @@ http://github.com/revolunet/angular-carousel */ +// Modified by PP for mobile friendly touch, start without auto slide but enabled it if tapped +// and logic to wait for an image to load before it slides to the next one + angular.module('angular-carousel', [ 'ngTouch', 'angular-carousel.shifty' @@ -22,6 +27,8 @@ angular.module('angular-carousel') // PP modified carousel to work in conjunction with lazy loading // so slide does not progress if image is not loaded or gets an error +// imageLoadingDataShare is the factory that has a value +// of 0 if no image is being loaded, -1 if there was an error and 1 if an image is currently being loaded .directive('rnCarouselAutoSlide', ['$interval','$timeout', 'imageLoadingDataShare', function($interval,$timeout, imageLoadingDataShare) { return { restrict: 'A', @@ -41,6 +48,7 @@ angular.module('angular-carousel') var toggleAutoPlay = function() { if (scope.autoSlider) { + // PP - If autoslide was on and we tapped, stop auto slide scope.rnForceStop = true; //PP console.log ("***RN: Stopping Play"); stopAutoPlay(); @@ -58,7 +66,7 @@ angular.module('angular-carousel') scope.$watch('carouselIndex', restartTimer); if (attrs.hasOwnProperty('rnCarouselPauseOnHover') && attrs.rnCarouselPauseOnHover !== 'false'){ - // PP + // PP - added touchend to make it react to touch devices element.on('touchend', toggleAutoPlay); element.on('mouseenter', stopAutoPlay); element.on('mouseleave', restartTimer); @@ -68,6 +76,7 @@ angular.module('angular-carousel') stopAutoPlay(); element.off('mouseenter', stopAutoPlay); element.off('mouseleave', restartTimer); + element.off('touchend', toggleAutoPlay); // PP - remove touchend too }); } }; @@ -245,7 +254,7 @@ angular.module('angular-carousel').run(['$templateCache', function($templateCach return { restrict: 'A', scope: true, - // PP try and do a link here too + compile: function(tElement, tAttributes) { // use the compile phase to customize the DOM @@ -354,7 +363,7 @@ angular.module('angular-carousel').run(['$templateCache', function($templateCach } scope.nextSlide = function(slideOptions) { - if (imageLoadingDataShare.get() == 1) + if (imageLoadingDataShare.get() == 1) // PP- If the image is still being loaded, hold on, don't change { console.log ("Image is still loading, not skipping slides"); return; @@ -494,13 +503,14 @@ angular.module('angular-carousel').run(['$templateCache', function($templateCach } if (iAttributes.rnCarouselAutoSlide!==undefined) { + // PP was parseInt, changed to parseFloat so I can specify fractions of seconds var duration = parseFloat(iAttributes.rnCarouselAutoSlide, 10) || options.autoSlideDuration; scope.autoSlide = function() { if (scope.autoSlider) { $interval.cancel(scope.autoSlider); scope.autoSlider = null; } - if (!scope.rnForceStop) //PP + if (!scope.rnForceStop) //PP - don't move slide if this variable is set { scope.autoSlider = $interval(function() { if (!locked && !pressed ) { @@ -2144,3 +2154,4 @@ angular.module('angular-carousel.shifty', []) }); })(); +/* jshint ignore:end */ diff --git a/www/index.html b/www/index.html index 76db4613..5661ddd0 100644 --- a/www/index.html +++ b/www/index.html @@ -32,6 +32,7 @@ + diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index 9df6ac7b..7a7ce39b 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -140,6 +140,14 @@ angular.module('zmApp.controllers') min + "/" + sec + "/"; + myevents[i].Event.relativePath = + myevents[i].Event.MonitorId + "/" + + yy + "/" + + mm + "/" + + dd + "/" + + hh + "/" + + min + "/" + + sec + "/"; } @@ -687,7 +695,7 @@ angular.module('zmApp.controllers') //earlier won't work //-------------------------------------------------------- - $scope.openModal = function (eid, ename, edur, eframes, basepath) { + $scope.openModal = function (eid, ename, edur, eframes, basepath, relativepath) { console.log("Open Modal with Base path " + basepath); $scope.eventName = ename; $scope.eventId = eid; @@ -695,6 +703,7 @@ angular.module('zmApp.controllers') $scope.eventDur = Math.round(edur); $scope.loginData = ZMDataModel.getLogin(); $scope.eventBasePath = basepath; + $scope.relativePath = relativepath; $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111; $scope.slider_modal_options = { @@ -930,6 +939,14 @@ angular.module('zmApp.controllers') hh + "/" + min + "/" + sec + "/"; + + myevents[i].Event.relativePath = myevents[i].Event.MonitorId + "/" + + yy + "/" + + mm + "/" + + dd + "/" + + hh + "/" + + min + "/" + + sec + "/"; myevents[i].Event.height = zm.eventsListDetailsHeight; } diff --git a/www/js/app.js b/www/js/app.js index a9f0b571..03ef336e 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -4,6 +4,7 @@ var appVersion = "0.0.0"; + // core app start stuff angular.module('zmApp', [ 'ionic', @@ -12,7 +13,7 @@ angular.module('zmApp', [ 'fileLogger', 'angular-carousel', 'angularAwesomeSlider' - //'angularAwesomeSlider' + ]) // ------------------------------------------ @@ -163,9 +164,17 @@ angular.module('zmApp', [ // That way the user can try again, and won't get stuck // Also remember you need to add it to .config //------------------------------------------------------------------ -.factory('timeoutHttpIntercept', function ($rootScope, $q,zm) { +.factory('timeoutHttpIntercept', function ($rootScope, $q,zm, $cookieStore) { + var zmCookie = ""; + return { 'request': function (config) { + // config.withCredentials = true; + if (zmCookie) + { + // console.log ("** ADDING COOKIE TO REQUEST "+zmCookie); + config.headers.Cookie = "ZMSESSID="+zmCookie; + } if ( !(config.url.indexOf("/api/states/change/") > -1 || config.url.indexOf("getDiskPercent.json") > -1 )) { @@ -176,6 +185,21 @@ angular.module('zmApp', [ //console.log ("HTTP INTERCEPT:Skipping HTTP timeout for "+config.url); } return config; + }, + + 'response': function (response) + { + //console.log ("******** WHOA RESPONSE CAUGHT ************"); + var cookies = response.headers("Set-Cookie"); + if (cookies !=null) + { + + var zmSess=cookies.match("ZMSESSID=(.*?);"); + console.log ("***RESPONSE HEADER COOKIE " + zmSess[1]); + console.log ("WHOLE STRING " + cookies); + zmCookie=zmSess[1]; + } + return response; } @@ -186,7 +210,7 @@ angular.module('zmApp', [ // This service automatically logs into ZM at periodic intervals //------------------------------------------------------------------ -.factory('zmAutoLogin', function($interval, ZMDataModel, $http,zm) { +.factory('zmAutoLogin', function($interval, ZMDataModel, $http,zm, $browser,$timeout) { var zmAutoLoginHandle; function doLogin() { @@ -195,6 +219,7 @@ angular.module('zmApp', [ var loginData = ZMDataModel.getLogin(); $http({ method:'POST', + //withCredentials: true, url:loginData.url + '/index.php', headers:{ 'Content-Type': 'application/x-www-form-urlencoded', @@ -217,10 +242,14 @@ angular.module('zmApp', [ view:"console" } }) - .success(function(data) + .success(function(data,status,headers) { console.log ("**** ZM Login OK"); ZMDataModel.zmLog("zmAutologin successfully logged into Zoneminder"); + //$cookies.myFavorite = 'oatmeal'; + $timeout( function() {console.log ("***** ALL COOKIES:" + JSON.stringify( $browser.cookies()));},1000); + console.log ("***** ALL HEADERS:" + headers('cookie')); + }) .error(function(error) { @@ -287,7 +316,7 @@ angular.module('zmApp', [ .run(function ($ionicPlatform, $ionicPopup, $rootScope, zm, $state, ZMDataModel, $cordovaSplashscreen, $http, $interval, zmAutoLogin, $fileLogger,$timeout, $ionicHistory, $window, $ionicSideMenuDelegate) { - + $rootScope.zmGlobalCookie=""; ZMDataModel.init(); @@ -407,13 +436,13 @@ angular.module('zmApp', [ { $cordovaSplashscreen.hide(); } - }, 1500); + }, 2000); - if(window.navigator && window.navigator.splashscreen) { + /*if(window.navigator && window.navigator.splashscreen) { window.navigator.splashscreen.hide(); console.log ("Unlocking portrait mode after splash"); window.plugins.orientationLock.unlock(); - } + }*/ var pixelRatio = window.devicePixelRatio || 1; $rootScope.devWidth = ((window.innerWidth > 0) ? window.innerWidth : screen.width); diff --git a/www/lib/angular/.bower.json b/www/lib/angular/.bower.json index 7da70b38..8852ccd5 100644 --- a/www/lib/angular/.bower.json +++ b/www/lib/angular/.bower.json @@ -1,17 +1,17 @@ { "name": "angular", - "version": "1.3.13", + "version": "1.4.3", "main": "./angular.js", "ignore": [], "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.3.13", + "_release": "1.4.3", "_resolution": { "type": "version", - "tag": "v1.3.13", - "commit": "ad68cfecb69ff7cacb27813377ce9d95e072529b" + "tag": "v1.4.3", + "commit": "dbd689e8103a6366e53e1f6786727f7c65ccfd75" }, "_source": "git://github.com/angular/bower-angular.git", - "_target": "1.3.13", + "_target": "1.4.3", "_originalSource": "angular" } diff --git a/www/lib/angular/README.md b/www/lib/angular/README.md index 897fb7f0..d1bc0edd 100644 --- a/www/lib/angular/README.md +++ b/www/lib/angular/README.md @@ -20,10 +20,7 @@ Then add a ` ``` -Note that this package is not in CommonJS format, so doing `require('angular')` will return `undefined`. -If you're using [Browserify](https://github.com/substack/node-browserify), you can use -[exposify](https://github.com/thlorenz/exposify) to have `require('angular')` return the `angular` -global. +Or `require('angular')` from your code. ### bower @@ -46,7 +43,7 @@ Documentation is available on the The MIT License -Copyright (c) 2010-2012 Google, Inc. http://angularjs.org +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 diff --git a/www/lib/angular/angular-csp.css b/www/lib/angular/angular-csp.css index 0ce9d864..f3cd926c 100644 --- a/www/lib/angular/angular-csp.css +++ b/www/lib/angular/angular-csp.css @@ -11,3 +11,11 @@ ng\:form { display: block; } + +.ng-animate-shim { + visibility:hidden; +} + +.ng-anchor { + position:absolute; +} diff --git a/www/lib/angular/angular.js b/www/lib/angular/angular.js index 39ee9501..12044b1f 100644 --- a/www/lib/angular/angular.js +++ b/www/lib/angular/angular.js @@ -1,6 +1,6 @@ /** - * @license AngularJS v1.3.13 - * (c) 2010-2014 Google, Inc. http://angularjs.org + * @license AngularJS v1.4.3 + * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ (function(window, document, undefined) {'use strict'; @@ -38,28 +38,33 @@ function minErr(module, ErrorConstructor) { ErrorConstructor = ErrorConstructor || Error; return function() { - var code = arguments[0], - prefix = '[' + (module ? module + ':' : '') + code + '] ', - template = arguments[1], - templateArgs = arguments, + var SKIP_INDEXES = 2; - message, i; + var templateArgs = arguments, + code = templateArgs[0], + message = '[' + (module ? module + ':' : '') + code + '] ', + template = templateArgs[1], + paramPrefix, i; - message = prefix + template.replace(/\{\d+\}/g, function(match) { - var index = +match.slice(1, -1), arg; + message += template.replace(/\{\d+\}/g, function(match) { + var index = +match.slice(1, -1), + shiftedIndex = index + SKIP_INDEXES; - if (index + 2 < templateArgs.length) { - return toDebugString(templateArgs[index + 2]); + if (shiftedIndex < templateArgs.length) { + return toDebugString(templateArgs[shiftedIndex]); } + return match; }); - message = message + '\nhttp://errors.angularjs.org/1.3.13/' + + message += '\nhttp://errors.angularjs.org/1.4.3/' + (module ? module + '/' : '') + code; - for (i = 2; i < arguments.length; i++) { - message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' + - encodeURIComponent(toDebugString(arguments[i])); + + for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { + message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' + + encodeURIComponent(toDebugString(templateArgs[i])); } + return new ErrorConstructor(message); }; } @@ -86,20 +91,21 @@ function minErr(module, ErrorConstructor) { nodeName_: true, isArrayLike: true, forEach: true, - sortedKeys: true, forEachSorted: true, reverseParams: true, nextUid: true, setHashKey: true, extend: true, - int: true, + toInt: true, inherit: true, + merge: true, noop: true, identity: true, valueFn: true, isUndefined: true, isDefined: true, isObject: true, + isBlankObject: true, isString: true, isNumber: true, isDate: true, @@ -123,12 +129,15 @@ function minErr(module, ErrorConstructor) { shallowCopy: true, equals: true, csp: true, + jq: true, concat: true, sliceArgs: true, bind: true, toJsonReplacer: true, toJson: true, fromJson: true, + convertTimezoneToLocal: true, + timezoneToOffset: true, startingTag: true, tryDecodeURIComponent: true, parseKeyValue: true, @@ -149,6 +158,7 @@ function minErr(module, ErrorConstructor) { createMap: true, NODE_TYPE_ELEMENT: true, + NODE_TYPE_ATTRIBUTE: true, NODE_TYPE_TEXT: true, NODE_TYPE_COMMENT: true, NODE_TYPE_DOCUMENT: true, @@ -235,6 +245,7 @@ var splice = [].splice, push = [].push, toString = Object.prototype.toString, + getPrototypeOf = Object.getPrototypeOf, ngMinErr = minErr('ng'), /** @name angular */ @@ -260,7 +271,9 @@ function isArrayLike(obj) { return false; } - var length = obj.length; + // Support: iOS 8.2 (not reproducible in simulator) + // "length" in obj used to prevent JIT error (gh-11508) + var length = "length" in Object(obj) && obj.length; if (obj.nodeType === NODE_TYPE_ELEMENT && length) { return true; @@ -325,23 +338,32 @@ function forEach(obj, iterator, context) { } } else if (obj.forEach && obj.forEach !== forEach) { obj.forEach(iterator, context, obj); - } else { + } else if (isBlankObject(obj)) { + // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty + for (key in obj) { + iterator.call(context, obj[key], key, obj); + } + } else if (typeof obj.hasOwnProperty === 'function') { + // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed for (key in obj) { if (obj.hasOwnProperty(key)) { iterator.call(context, obj[key], key, obj); } } + } else { + // Slow path for objects which do not have a method `hasOwnProperty` + for (key in obj) { + if (hasOwnProperty.call(obj, key)) { + iterator.call(context, obj[key], key, obj); + } + } } } return obj; } -function sortedKeys(obj) { - return Object.keys(obj).sort(); -} - function forEachSorted(obj, iterator, context) { - var keys = sortedKeys(obj); + var keys = Object.keys(obj).sort(); for (var i = 0; i < keys.length; i++) { iterator.call(context, obj[keys[i]], keys[i]); } @@ -386,6 +408,35 @@ function setHashKey(obj, h) { } } + +function baseExtend(dst, objs, deep) { + var h = dst.$$hashKey; + + for (var i = 0, ii = objs.length; i < ii; ++i) { + var obj = objs[i]; + if (!isObject(obj) && !isFunction(obj)) continue; + var keys = Object.keys(obj); + for (var j = 0, jj = keys.length; j < jj; j++) { + var key = keys[j]; + var src = obj[key]; + + if (deep && isObject(src)) { + if (isDate(src)) { + dst[key] = new Date(src.valueOf()); + } else { + if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {}; + baseExtend(dst[key], [src], true); + } + } else { + dst[key] = src; + } + } + } + + setHashKey(dst, h); + return dst; +} + /** * @ngdoc function * @name angular.extend @@ -396,31 +447,44 @@ function setHashKey(obj, h) { * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s) * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`. - * Note: Keep in mind that `angular.extend` does not support recursive merge (deep copy). + * + * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use + * {@link angular.merge} for this. * * @param {Object} dst Destination object. * @param {...Object} src Source object(s). * @returns {Object} Reference to `dst`. */ function extend(dst) { - var h = dst.$$hashKey; + return baseExtend(dst, slice.call(arguments, 1), false); +} - for (var i = 1, ii = arguments.length; i < ii; i++) { - var obj = arguments[i]; - if (obj) { - var keys = Object.keys(obj); - for (var j = 0, jj = keys.length; j < jj; j++) { - var key = keys[j]; - dst[key] = obj[key]; - } - } - } - setHashKey(dst, h); - return dst; +/** +* @ngdoc function +* @name angular.merge +* @module ng +* @kind function +* +* @description +* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s) +* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so +* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`. +* +* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source +* objects, performing a deep copy. +* +* @param {Object} dst Destination object. +* @param {...Object} src Source object(s). +* @returns {Object} Reference to `dst`. +*/ +function merge(dst) { + return baseExtend(dst, slice.call(arguments, 1), true); } -function int(str) { + + +function toInt(str) { return parseInt(str, 10); } @@ -473,6 +537,11 @@ identity.$inject = []; function valueFn(value) {return function() {return value;};} +function hasCustomToString(obj) { + return isFunction(obj.toString) && obj.toString !== Object.prototype.toString; +} + + /** * @ngdoc function * @name angular.isUndefined @@ -522,6 +591,16 @@ function isObject(value) { } +/** + * Determine if a value is an object with a null prototype + * + * @returns {boolean} True if `value` is an `Object` with a null prototype + */ +function isBlankObject(value) { + return value !== null && typeof value === 'object' && !getPrototypeOf(value); +} + + /** * @ngdoc function * @name angular.isString @@ -546,6 +625,12 @@ function isString(value) {return typeof value === 'string';} * @description * Determines if a reference is a `Number`. * + * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`. + * + * If you wish to exclude these then you can use the native + * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite) + * method. + * * @param {*} value Reference to check. * @returns {boolean} True if `value` is a `Number`. */ @@ -652,6 +737,12 @@ function isPromiseLike(obj) { } +var TYPED_ARRAY_REGEXP = /^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/; +function isTypedArray(value) { + return TYPED_ARRAY_REGEXP.test(toString.call(value)); +} + + var trim = function(value) { return isString(value) ? value.trim() : value; }; @@ -689,8 +780,9 @@ function isElement(node) { */ function makeMap(str) { var obj = {}, items = str.split(","), i; - for (i = 0; i < items.length; i++) + for (i = 0; i < items.length; i++) { obj[items[i]] = true; + } return obj; } @@ -705,9 +797,10 @@ function includes(array, obj) { function arrayRemove(array, value) { var index = array.indexOf(value); - if (index >= 0) + if (index >= 0) { array.splice(index, 1); - return value; + } + return index; } /** @@ -773,20 +866,40 @@ function copy(source, destination, stackSource, stackDest) { throw ngMinErr('cpws', "Can't copy! Making copies of Window or Scope instances is not supported."); } + if (isTypedArray(destination)) { + throw ngMinErr('cpta', + "Can't copy! TypedArray destination cannot be mutated."); + } if (!destination) { destination = source; - if (source) { + if (isObject(source)) { + var index; + if (stackSource && (index = stackSource.indexOf(source)) !== -1) { + return stackDest[index]; + } + + // TypedArray, Date and RegExp have specific copy functionality and must be + // pushed onto the stack before returning. + // Array and other objects create the base object and recurse to copy child + // objects. The array/object will be pushed onto the stack when recursed. if (isArray(source)) { - destination = copy(source, [], stackSource, stackDest); + return copy(source, [], stackSource, stackDest); + } else if (isTypedArray(source)) { + destination = new source.constructor(source); } else if (isDate(source)) { destination = new Date(source.getTime()); } else if (isRegExp(source)) { destination = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]); destination.lastIndex = source.lastIndex; - } else if (isObject(source)) { - var emptyObject = Object.create(Object.getPrototypeOf(source)); - destination = copy(source, emptyObject, stackSource, stackDest); + } else { + var emptyObject = Object.create(getPrototypeOf(source)); + return copy(source, emptyObject, stackSource, stackDest); + } + + if (stackDest) { + stackSource.push(source); + stackDest.push(destination); } } } else { @@ -797,23 +910,15 @@ function copy(source, destination, stackSource, stackDest) { stackDest = stackDest || []; if (isObject(source)) { - var index = stackSource.indexOf(source); - if (index !== -1) return stackDest[index]; - stackSource.push(source); stackDest.push(destination); } - var result; + var result, key; if (isArray(source)) { destination.length = 0; for (var i = 0; i < source.length; i++) { - result = copy(source[i], null, stackSource, stackDest); - if (isObject(source[i])) { - stackSource.push(source[i]); - stackDest.push(result); - } - destination.push(result); + destination.push(copy(source[i], null, stackSource, stackDest)); } } else { var h = destination.$$hashKey; @@ -824,19 +929,28 @@ function copy(source, destination, stackSource, stackDest) { delete destination[key]; }); } - for (var key in source) { - if (source.hasOwnProperty(key)) { - result = copy(source[key], null, stackSource, stackDest); - if (isObject(source[key])) { - stackSource.push(source[key]); - stackDest.push(result); + if (isBlankObject(source)) { + // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty + for (key in source) { + destination[key] = copy(source[key], null, stackSource, stackDest); + } + } else if (source && typeof source.hasOwnProperty === 'function') { + // Slow path, which must rely on hasOwnProperty + for (key in source) { + if (source.hasOwnProperty(key)) { + destination[key] = copy(source[key], null, stackSource, stackDest); + } + } + } else { + // Slowest path --- hasOwnProperty can't be called as a method + for (key in source) { + if (hasOwnProperty.call(source, key)) { + destination[key] = copy(source[key], null, stackSource, stackDest); } - destination[key] = result; } } setHashKey(destination,h); } - } return destination; } @@ -914,18 +1028,19 @@ function equals(o1, o2) { } else if (isDate(o1)) { if (!isDate(o2)) return false; return equals(o1.getTime(), o2.getTime()); - } else if (isRegExp(o1) && isRegExp(o2)) { - return o1.toString() == o2.toString(); + } else if (isRegExp(o1)) { + return isRegExp(o2) ? o1.toString() == o2.toString() : false; } else { - if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false; - keySet = {}; + if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || + isArray(o2) || isDate(o2) || isRegExp(o2)) return false; + keySet = createMap(); for (key in o1) { if (key.charAt(0) === '$' || isFunction(o1[key])) continue; if (!equals(o1[key], o2[key])) return false; keySet[key] = true; } for (key in o2) { - if (!keySet.hasOwnProperty(key) && + if (!(key in keySet) && key.charAt(0) !== '$' && o2[key] !== undefined && !isFunction(o2[key])) return false; @@ -956,7 +1071,58 @@ var csp = function() { return (csp.isActive_ = active); }; +/** + * @ngdoc directive + * @module ng + * @name ngJq + * + * @element ANY + * @param {string=} ngJq the name of the library available under `window` + * to be used for angular.element + * @description + * Use this directive to force the angular.element library. This should be + * used to force either jqLite by leaving ng-jq blank or setting the name of + * the jquery variable under window (eg. jQuery). + * + * Since angular looks for this directive when it is loaded (doesn't wait for the + * DOMContentLoaded event), it must be placed on an element that comes before the script + * which loads angular. Also, only the first instance of `ng-jq` will be used and all + * others ignored. + * + * @example + * This example shows how to force jqLite using the `ngJq` directive to the `html` tag. + ```html + + + ... + ... + + ``` + * @example + * This example shows how to use a jQuery based library of a different name. + * The library name must be available at the top most 'window'. + ```html + + + ... + ... + + ``` + */ +var jq = function() { + if (isDefined(jq.name_)) return jq.name_; + var el; + var i, ii = ngAttrPrefixes.length, prefix, name; + for (i = 0; i < ii; ++i) { + prefix = ngAttrPrefixes[i]; + if (el = document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) { + name = el.getAttribute(prefix + 'jq'); + break; + } + } + return (jq.name_ = name); +}; function concat(array1, array2, index) { return array1.concat(slice.call(array2, index)); @@ -1035,8 +1201,8 @@ function toJsonReplacer(key, value) { * stripped since angular uses this notation internally. * * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON. - * @param {boolean|number=} pretty If set to true, the JSON output will contain newlines and whitespace. - * If set to an integer, the JSON output will contain that many spaces per indentation (the default is 2). + * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace. + * If set to an integer, the JSON output will contain that many spaces per indentation. * @returns {string|undefined} JSON-ified string representing `obj`. */ function toJson(obj, pretty) { @@ -1067,6 +1233,26 @@ function fromJson(json) { } +function timezoneToOffset(timezone, fallback) { + var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000; + return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset; +} + + +function addDateMinutes(date, minutes) { + date = new Date(date.getTime()); + date.setMinutes(date.getMinutes() + minutes); + return date; +} + + +function convertTimezoneToLocal(date, timezone, reverse) { + reverse = reverse ? -1 : 1; + var timezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset()); + return addDateMinutes(date, reverse * (timezoneOffset - date.getTimezoneOffset())); +} + + /** * @returns {string} Returns the string representation of the element. */ @@ -1195,10 +1381,9 @@ var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-']; function getNgAttribute(element, ngAttr) { var attr, i, ii = ngAttrPrefixes.length; - element = jqLite(element); for (i = 0; i < ii; ++i) { attr = ngAttrPrefixes[i] + ngAttr; - if (isString(attr = element.attr(attr))) { + if (isString(attr = element.getAttribute(attr))) { return attr; } } @@ -1529,7 +1714,12 @@ function bindJQuery() { } // bind to jQuery if present; - jQuery = window.jQuery; + var jqName = jq(); + jQuery = window.jQuery; // use default jQuery. + if (isDefined(jqName)) { // `ngJq` present + jQuery = jqName === null ? undefined : window[jqName]; // if empty; use jqLite. if not empty, use jQuery specified by `ngJq`. + } + // Use jQuery if it exists with proper functionality, otherwise default to us. // Angular 1.2+ requires jQuery 1.7+ for on()/off() support. // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older @@ -1668,6 +1858,7 @@ function createMap() { } var NODE_TYPE_ELEMENT = 1; +var NODE_TYPE_ATTRIBUTE = 2; var NODE_TYPE_TEXT = 3; var NODE_TYPE_COMMENT = 8; var NODE_TYPE_DOCUMENT = 9; @@ -1819,7 +2010,7 @@ function setupModuleLoader(window) { * @description * See {@link auto.$provide#provider $provide.provider()}. */ - provider: invokeLater('$provide', 'provider'), + provider: invokeLaterAndSetModuleName('$provide', 'provider'), /** * @ngdoc method @@ -1830,7 +2021,7 @@ function setupModuleLoader(window) { * @description * See {@link auto.$provide#factory $provide.factory()}. */ - factory: invokeLater('$provide', 'factory'), + factory: invokeLaterAndSetModuleName('$provide', 'factory'), /** * @ngdoc method @@ -1841,7 +2032,7 @@ function setupModuleLoader(window) { * @description * See {@link auto.$provide#service $provide.service()}. */ - service: invokeLater('$provide', 'service'), + service: invokeLaterAndSetModuleName('$provide', 'service'), /** * @ngdoc method @@ -1866,6 +2057,18 @@ function setupModuleLoader(window) { */ constant: invokeLater('$provide', 'constant', 'unshift'), + /** + * @ngdoc method + * @name angular.Module#decorator + * @module ng + * @param {string} The name of the service to decorate. + * @param {Function} This function will be invoked when the service needs to be + * instantiated and should return the decorated service instance. + * @description + * See {@link auto.$provide#decorator $provide.decorator()}. + */ + decorator: invokeLaterAndSetModuleName('$provide', 'decorator'), + /** * @ngdoc method * @name angular.Module#animation @@ -1879,7 +2082,7 @@ function setupModuleLoader(window) { * * * Defines an animation hook that can be later used with - * {@link ngAnimate.$animate $animate} service and directives that use this service. + * {@link $animate $animate} service and directives that use this service. * * ```js * module.animation('.animation-name', function($inject1, $inject2) { @@ -1898,18 +2101,25 @@ function setupModuleLoader(window) { * See {@link ng.$animateProvider#register $animateProvider.register()} and * {@link ngAnimate ngAnimate module} for more information. */ - animation: invokeLater('$animateProvider', 'register'), + animation: invokeLaterAndSetModuleName('$animateProvider', 'register'), /** * @ngdoc method * @name angular.Module#filter * @module ng - * @param {string} name Filter name. + * @param {string} name Filter name - this must be a valid angular expression identifier * @param {Function} filterFactory Factory function for creating new instance of filter. * @description * See {@link ng.$filterProvider#register $filterProvider.register()}. + * + *
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
*/ - filter: invokeLater('$filterProvider', 'register'), + filter: invokeLaterAndSetModuleName('$filterProvider', 'register'), /** * @ngdoc method @@ -1921,7 +2131,7 @@ function setupModuleLoader(window) { * @description * See {@link ng.$controllerProvider#register $controllerProvider.register()}. */ - controller: invokeLater('$controllerProvider', 'register'), + controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'), /** * @ngdoc method @@ -1934,7 +2144,7 @@ function setupModuleLoader(window) { * @description * See {@link ng.$compileProvider#directive $compileProvider.directive()}. */ - directive: invokeLater('$compileProvider', 'directive'), + directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'), /** * @ngdoc method @@ -1984,6 +2194,19 @@ function setupModuleLoader(window) { return moduleInstance; }; } + + /** + * @param {string} provider + * @param {string} method + * @returns {angular.Module} + */ + function invokeLaterAndSetModuleName(provider, method) { + return function(recipeName, factoryFunction) { + if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name; + invokeQueue.push([provider, method, arguments]); + return moduleInstance; + }; + } }); }; }); @@ -2075,6 +2298,8 @@ function toDebugString(obj) { $AnchorScrollProvider, $AnimateProvider, + $$CoreAnimateQueueProvider, + $$CoreAnimateRunnerProvider, $BrowserProvider, $CacheFactoryProvider, $ControllerProvider, @@ -2083,7 +2308,10 @@ function toDebugString(obj) { $FilterProvider, $InterpolateProvider, $IntervalProvider, + $$HashMapProvider, $HttpProvider, + $HttpParamSerializerProvider, + $HttpParamSerializerJQLikeProvider, $HttpBackendProvider, $LocationProvider, $LogProvider, @@ -2100,9 +2328,9 @@ function toDebugString(obj) { $$TestabilityProvider, $TimeoutProvider, $$RAFProvider, - $$AsyncCallbackProvider, $WindowProvider, - $$jqLiteProvider + $$jqLiteProvider, + $$CookieReaderProvider */ @@ -2121,11 +2349,11 @@ function toDebugString(obj) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.3.13', // all of these placeholder strings will be replaced by grunt's + full: '1.4.3', // all of these placeholder strings will be replaced by grunt's major: 1, // package task - minor: 3, - dot: 13, - codeName: 'meticulous-riffleshuffle' + minor: 4, + dot: 3, + codeName: 'foam-acceleration' }; @@ -2134,6 +2362,7 @@ function publishExternalAPI(angular) { 'bootstrap': bootstrap, 'copy': copy, 'extend': extend, + 'merge': merge, 'equals': equals, 'element': jqLite, 'forEach': forEach, @@ -2230,6 +2459,8 @@ function publishExternalAPI(angular) { $provide.provider({ $anchorScroll: $AnchorScrollProvider, $animate: $AnimateProvider, + $$animateQueue: $$CoreAnimateQueueProvider, + $$AnimateRunner: $$CoreAnimateRunnerProvider, $browser: $BrowserProvider, $cacheFactory: $CacheFactoryProvider, $controller: $ControllerProvider, @@ -2239,6 +2470,8 @@ function publishExternalAPI(angular) { $interpolate: $InterpolateProvider, $interval: $IntervalProvider, $http: $HttpProvider, + $httpParamSerializer: $HttpParamSerializerProvider, + $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider, $httpBackend: $HttpBackendProvider, $location: $LocationProvider, $log: $LogProvider, @@ -2255,13 +2488,25 @@ function publishExternalAPI(angular) { $timeout: $TimeoutProvider, $window: $WindowProvider, $$rAF: $$RAFProvider, - $$asyncCallback: $$AsyncCallbackProvider, - $$jqLite: $$jqLiteProvider + $$jqLite: $$jqLiteProvider, + $$HashMap: $$HashMapProvider, + $$cookieReader: $$CookieReaderProvider }); } ]); } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + /* global JQLitePrototype: true, addEventListenerFn: true, removeEventListenerFn: true, @@ -2290,7 +2535,7 @@ function publishExternalAPI(angular) { * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most * commonly needed functionality with the goal of having a very small footprint. * - * To use jQuery, simply load it before `DOMContentLoaded` event fired. + * To use `jQuery`, simply ensure it is loaded before the `angular.js` file. * *
**Note:** all element references in Angular are always wrapped with jQuery or * jqLite; they are never raw DOM references.
@@ -2306,7 +2551,7 @@ function publishExternalAPI(angular) { * - [`children()`](http://api.jquery.com/children/) - Does not support selectors * - [`clone()`](http://api.jquery.com/clone/) * - [`contents()`](http://api.jquery.com/contents/) - * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()` + * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`. As a setter, does not convert numbers to strings or append 'px'. * - [`data()`](http://api.jquery.com/data/) * - [`detach()`](http://api.jquery.com/detach/) * - [`empty()`](http://api.jquery.com/empty/) @@ -2433,6 +2678,13 @@ function jqLiteAcceptsData(node) { return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT; } +function jqLiteHasData(node) { + for (var key in jqCache[node.ng339]) { + return true; + } + return false; +} + function jqLiteBuildFragment(html, context) { var tmp, tag, wrap, fragment = context.createDocumentFragment(), @@ -2807,7 +3059,8 @@ function getAliasedAttrName(element, name) { forEach({ data: jqLiteData, - removeData: jqLiteRemoveData + removeData: jqLiteRemoveData, + hasData: jqLiteHasData }, function(fn, name) { JQLite[name] = fn; }); @@ -2849,6 +3102,10 @@ forEach({ }, attr: function(element, name, value) { + var nodeType = element.nodeType; + if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT) { + return; + } var lowercasedName = lowercase(name); if (BOOLEAN_ATTR[lowercasedName]) { if (isDefined(value)) { @@ -3113,8 +3370,9 @@ forEach({ children: function(element) { var children = []; forEach(element.childNodes, function(element) { - if (element.nodeType === NODE_TYPE_ELEMENT) + if (element.nodeType === NODE_TYPE_ELEMENT) { children.push(element); + } }); return children; }, @@ -3360,6 +3618,12 @@ HashMap.prototype = { } }; +var $$HashMapProvider = [function() { + this.$get = [function() { + return HashMap; + }]; +}]; + /** * @ngdoc function * @module ng @@ -3539,7 +3803,7 @@ function annotate(fn, strictDi, name) { * Return an instance of the service. * * @param {string} name The name of the instance to retrieve. - * @param {string} caller An optional string to provide the origin of the function call for error messages. + * @param {string=} caller An optional string to provide the origin of the function call for error messages. * @return {*} The instance. */ @@ -3550,8 +3814,8 @@ function annotate(fn, strictDi, name) { * @description * Invoke the method and supply the method arguments from the `$injector`. * - * @param {!Function} fn The function to invoke. Function parameters are injected according to the - * {@link guide/di $inject Annotation} rules. + * @param {Function|Array.} fn The injectable function to invoke. Function parameters are + * injected according to the {@link guide/di $inject Annotation} rules. * @param {Object=} self The `this` for the invoked method. * @param {Object=} locals Optional object. If preset then any argument names are read from this * object first, before the `$injector` is consulted. @@ -3818,8 +4082,8 @@ function annotate(fn, strictDi, name) { * configure your service in a provider. * * @param {string} name The name of the instance. - * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand - * for `$provide.provider(name, {$get: $getFn})`. + * @param {Function|Array.} $getFn The injectable $getFn for the instance creation. + * Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`. * @returns {Object} registered provider instance * * @example @@ -3854,7 +4118,8 @@ function annotate(fn, strictDi, name) { * as a type/class. * * @param {string} name The name of the instance. - * @param {Function} constructor A class (constructor function) that will be instantiated. + * @param {Function|Array.} constructor An injectable class (constructor function) + * that will be instantiated. * @returns {Object} registered provider instance * * @example @@ -3953,7 +4218,7 @@ function annotate(fn, strictDi, name) { * object which replaces or wraps and delegates to the original service. * * @param {string} name The name of the service to decorate. - * @param {function()} decorator This function will be invoked when the service needs to be + * @param {Function|Array.} decorator This function will be invoked when the service needs to be * instantiated and should return the decorated service instance. The function is called using * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable. * Local injection arguments: @@ -4004,7 +4269,7 @@ function createInjector(modulesToLoad, strictDi) { })); - forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); }); + forEach(loadModules(modulesToLoad), function(fn) { if (fn) instanceInjector.invoke(fn); }); return instanceInjector; @@ -4247,9 +4512,10 @@ function $AnchorScrollProvider() { * @requires $rootScope * * @description - * When called, it checks the current value of {@link ng.$location#hash $location.hash()} and - * scrolls to the related element, according to the rules specified in the - * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document). + * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the + * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified + * in the + * [HTML5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document). * * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to * match any anchor whenever it changes. This can be disabled by calling @@ -4258,6 +4524,9 @@ function $AnchorScrollProvider() { * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a * vertical scroll-offset (either fixed or dynamic). * + * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of + * {@link ng.$location#hash $location.hash()} will be used. + * * @property {(number|function|jqLite)} yOffset * If set, specifies a vertical scroll-offset. This is often useful when there are fixed * positioned elements at the top of the page, such as navbars, headers etc. @@ -4441,8 +4710,9 @@ function $AnchorScrollProvider() { } } - function scroll() { - var hash = $location.hash(), elm; + function scroll(hash) { + hash = isString(hash) ? hash : $location.hash(); + var elm; // empty hash, scroll to the top of the page if (!hash) scrollTo(null); @@ -4476,6 +4746,168 @@ function $AnchorScrollProvider() { } var $animateMinErr = minErr('$animate'); +var ELEMENT_NODE = 1; +var NG_ANIMATE_CLASSNAME = 'ng-animate'; + +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 extractElementNode(element) { + for (var i = 0; i < element.length; i++) { + var elm = element[i]; + if (elm.nodeType === ELEMENT_NODE) { + return elm; + } + } +} + +function splitClasses(classes) { + if (isString(classes)) { + classes = classes.split(' '); + } + + // Use createMap() to prevent class assumptions involving property names in + // Object.prototype + var obj = createMap(); + 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; +} + +// if any other type of options value besides an Object value is +// passed into the $animate.method() animation then this helper code +// will be run which will ignore it. While this patch is not the +// greatest solution to this, a lot of existing plugins depend on +// $animate to either call the callback (< 1.2) or return a promise +// that can be changed. This helper function ensures that the options +// are wiped clean incase a callback function is provided. +function prepareAnimateOptions(options) { + return isObject(options) + ? options + : {}; +} + +var $$CoreAnimateRunnerProvider = function() { + this.$get = ['$q', '$$rAF', function($q, $$rAF) { + function AnimateRunner() {} + AnimateRunner.all = noop; + AnimateRunner.chain = noop; + AnimateRunner.prototype = { + end: noop, + cancel: noop, + resume: noop, + pause: noop, + complete: noop, + then: function(pass, fail) { + return $q(function(resolve) { + $$rAF(function() { + resolve(); + }); + }).then(pass, fail); + } + }; + return AnimateRunner; + }]; +}; + +// this is prefixed with Core since it conflicts with +// the animateQueueProvider defined in ngAnimate/animateQueue.js +var $$CoreAnimateQueueProvider = function() { + var postDigestQueue = new HashMap(); + var postDigestElements = []; + + this.$get = ['$$AnimateRunner', '$rootScope', + function($$AnimateRunner, $rootScope) { + return { + enabled: noop, + on: noop, + off: noop, + pin: noop, + + push: function(element, event, options, domOperation) { + domOperation && domOperation(); + + options = options || {}; + options.from && element.css(options.from); + options.to && element.css(options.to); + + if (options.addClass || options.removeClass) { + addRemoveClassesPostDigest(element, options.addClass, options.removeClass); + } + + return new $$AnimateRunner(); // jshint ignore:line + } + }; + + function addRemoveClassesPostDigest(element, add, remove) { + var data = postDigestQueue.get(element); + var classVal; + + if (!data) { + postDigestQueue.put(element, data = {}); + postDigestElements.push(element); + } + + if (add) { + forEach(add.split(' '), function(className) { + if (className) { + data[className] = true; + } + }); + } + + if (remove) { + forEach(remove.split(' '), function(className) { + if (className) { + data[className] = false; + } + }); + } + + if (postDigestElements.length > 1) return; + + $rootScope.$$postDigest(function() { + forEach(postDigestElements, function(element) { + var data = postDigestQueue.get(element); + if (data) { + var existing = splitClasses(element.attr('class')); + var toAdd = ''; + var toRemove = ''; + forEach(data, function(status, className) { + var hasClass = !!existing[className]; + if (status !== hasClass) { + if (status) { + toAdd += (toAdd.length ? ' ' : '') + className; + } else { + toRemove += (toRemove.length ? ' ' : '') + className; + } + } + }); + + forEach(element, function(elm) { + toAdd && jqLiteAddClass(elm, toAdd); + toRemove && jqLiteRemoveClass(elm, toRemove); + }); + postDigestQueue.remove(element); + } + }); + + postDigestElements.length = 0; + }); + } + }]; +}; /** * @ngdoc provider @@ -4483,20 +4915,18 @@ var $animateMinErr = minErr('$animate'); * * @description * Default implementation of $animate that doesn't perform any animations, instead just - * synchronously performs DOM - * updates and calls done() callbacks. + * synchronously performs DOM updates and resolves the returned runner promise. * - * In order to enable animations the ngAnimate module has to be loaded. + * In order to enable animations the `ngAnimate` module has to be loaded. * - * To see the functional implementation check out src/ngAnimate/animate.js + * To see the functional implementation check out `src/ngAnimate/animate.js`. */ var $AnimateProvider = ['$provide', function($provide) { + var provider = this; + this.$$registeredAnimations = Object.create(null); - this.$$selectors = {}; - - - /** + /** * @ngdoc method * @name $animateProvider#register * @@ -4505,33 +4935,43 @@ var $AnimateProvider = ['$provide', function($provide) { * animation object which contains callback functions for each event that is expected to be * animated. * - * * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction` - * must be called once the element animation is complete. If a function is returned then the - * animation service will use this function to cancel the animation whenever a cancel event is - * triggered. + * * `eventFn`: `function(element, ... , doneFunction, options)` + * The element to animate, the `doneFunction` and the options fed into the animation. Depending + * on the type of animation additional arguments will be injected into the animation function. The + * list below explains the function signatures for the different animation methods: * + * - setClass: function(element, addedClasses, removedClasses, doneFunction, options) + * - addClass: function(element, addedClasses, doneFunction, options) + * - removeClass: function(element, removedClasses, doneFunction, options) + * - enter, leave, move: function(element, doneFunction, options) + * - animate: function(element, fromStyles, toStyles, doneFunction, options) + * + * Make sure to trigger the `doneFunction` once the animation is fully complete. * * ```js * return { - * eventFn : function(element, done) { - * //code to run the animation - * //once complete, then run done() - * return function cancellationFunction() { - * //code to cancel the animation - * } - * } - * } + * //enter, leave, move signature + * eventFn : function(element, done, options) { + * //code to run the animation + * //once complete, then run done() + * return function endFunction(wasCancelled) { + * //code to cancel the animation + * } + * } + * } * ``` * - * @param {string} name The name of the animation. + * @param {string} name The name of the animation (this is what the class-based CSS value will be compared to). * @param {Function} factory The factory function that will be executed to return the animation * object. */ this.register = function(name, factory) { + if (name && name.charAt(0) !== '.') { + throw $animateMinErr('notcsel', "Expecting class selector starting with '.' got '{0}'.", name); + } + var key = name + '-animation'; - if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel', - "Expecting class selector starting with '.' got '{0}'.", name); - this.$$selectors[name.substr(1)] = key; + provider.$$registeredAnimations[name.substr(1)] = key; $provide.factory(key, factory); }; @@ -4542,8 +4982,8 @@ var $AnimateProvider = ['$provide', function($provide) { * @description * Sets and/or returns the CSS class regular expression that is checked when performing * an animation. Upon bootstrap the classNameFilter value is not set at all and will - * therefore enable $animate to attempt to perform an animation on any element. - * When setting the classNameFilter value, animations will only be performed on elements + * therefore enable $animate to attempt to perform an animation on any element that is triggered. + * When setting the `classNameFilter` value, animations will only be performed on elements * that successfully match the filter expression. This in turn can boost performance * for low-powered devices as well as applications containing a lot of structural operations. * @param {RegExp=} expression The className expression which will be checked against all animations @@ -4552,295 +4992,344 @@ var $AnimateProvider = ['$provide', function($provide) { this.classNameFilter = function(expression) { if (arguments.length === 1) { this.$$classNameFilter = (expression instanceof RegExp) ? expression : null; - } - return this.$$classNameFilter; - }; - - this.$get = ['$$q', '$$asyncCallback', '$rootScope', function($$q, $$asyncCallback, $rootScope) { - - var currentDefer; - - function runAnimationPostDigest(fn) { - var cancelFn, defer = $$q.defer(); - defer.promise.$$cancelFn = function ngAnimateMaybeCancel() { - cancelFn && cancelFn(); - }; - - $rootScope.$$postDigest(function ngAnimatePostDigest() { - cancelFn = fn(function ngAnimateNotifyComplete() { - defer.resolve(); - }); - }); - - return defer.promise; - } - - function resolveElementClasses(element, classes) { - var toAdd = [], toRemove = []; - - var hasClasses = createMap(); - forEach((element.attr('class') || '').split(/\s+/), function(className) { - hasClasses[className] = true; - }); + if (this.$$classNameFilter) { + var reservedRegex = new RegExp("(\\s+|\\/)" + NG_ANIMATE_CLASSNAME + "(\\s+|\\/)"); + if (reservedRegex.test(this.$$classNameFilter.toString())) { + throw $animateMinErr('nongcls','$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', NG_ANIMATE_CLASSNAME); - forEach(classes, function(status, className) { - var hasClass = hasClasses[className]; - - // If the most recent class manipulation (via $animate) was to remove the class, and the - // element currently has the class, the class is scheduled for removal. Otherwise, if - // the most recent class manipulation (via $animate) was to add the class, and the - // element does not currently have the class, the class is scheduled to be added. - if (status === false && hasClass) { - toRemove.push(className); - } else if (status === true && !hasClass) { - toAdd.push(className); } - }); - - return (toAdd.length + toRemove.length) > 0 && - [toAdd.length ? toAdd : null, toRemove.length ? toRemove : null]; - } - - function cachedClassManipulation(cache, classes, op) { - for (var i=0, ii = classes.length; i < ii; ++i) { - var className = classes[i]; - cache[className] = op; - } - } - - function asyncPromise() { - // only serve one instance of a promise in order to save CPU cycles - if (!currentDefer) { - currentDefer = $$q.defer(); - $$asyncCallback(function() { - currentDefer.resolve(); - currentDefer = null; - }); } - return currentDefer.promise; } + return this.$$classNameFilter; + }; - function applyStyles(element, options) { - if (angular.isObject(options)) { - var styles = extend(options.from || {}, options.to || {}); - element.css(styles); + this.$get = ['$$animateQueue', function($$animateQueue) { + function domInsert(element, parentElement, afterElement) { + // if for some reason the previous element was removed + // from the dom sometime before this code runs then let's + // just stick to using the parent element as the anchor + if (afterElement) { + var afterNode = extractElementNode(afterElement); + if (afterNode && !afterNode.parentNode && !afterNode.previousElementSibling) { + afterElement = null; + } } + afterElement ? afterElement.after(element) : parentElement.prepend(element); } /** - * * @ngdoc service * @name $animate - * @description The $animate service provides rudimentary DOM manipulation functions to - * insert, remove and move elements within the DOM, as well as adding and removing classes. - * This service is the core service used by the ngAnimate $animator service which provides - * high-level animation hooks for CSS and JavaScript. + * @description The $animate service exposes a series of DOM utility methods that provide support + * for animation hooks. The default behavior is the application of DOM operations, however, + * when an animation is detected (and animations are enabled), $animate will do the heavy lifting + * to ensure that animation runs with the triggered DOM operation. * - * $animate is available in the AngularJS core, however, the ngAnimate module must be included - * to enable full out animation support. Otherwise, $animate will only perform simple DOM - * manipulation operations. + * By default $animate doesn't trigger an animations. This is because the `ngAnimate` module isn't + * included and only when it is active then the animation hooks that `$animate` triggers will be + * functional. Once active then all structural `ng-` directives will trigger animations as they perform + * their DOM-related operations (enter, leave and move). Other directives such as `ngClass`, + * `ngShow`, `ngHide` and `ngMessages` also provide support for animations. * - * To learn more about enabling animation support, click here to visit the {@link ngAnimate - * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service - * page}. + * It is recommended that the`$animate` service is always used when executing DOM-related procedures within directives. + * + * To learn more about enabling animation support, click here to visit the + * {@link ngAnimate ngAnimate module page}. */ return { - animate: function(element, from, to) { - applyStyles(element, { from: from, to: to }); - return asyncPromise(); - }, + // we don't call it directly since non-existant arguments may + // be interpreted as null within the sub enabled function /** * * @ngdoc method - * @name $animate#enter + * @name $animate#on * @kind function - * @description Inserts the element into the DOM either after the `after` element or - * as the first child within the `parent` element. When the function is called a promise - * is returned that will be resolved at a later time. - * @param {DOMElement} element the element which will be inserted into the DOM - * @param {DOMElement} parent the parent element which will append the element as - * a child (if the after element is not present) - * @param {DOMElement} after the sibling element which will append the element - * after itself - * @param {object=} options an optional collection of styles that will be applied to the element. - * @return {Promise} the animation callback promise + * @description Sets up an event listener to fire whenever the animation event (enter, leave, move, etc...) + * has fired on the given element or among any of its children. Once the listener is fired, the provided callback + * is fired with the following params: + * + * ```js + * $animate.on('enter', container, + * function callback(element, phase) { + * // cool we detected an enter animation within the container + * } + * ); + * ``` + * + * @param {string} event the animation event that will be captured (e.g. enter, leave, move, addClass, removeClass, etc...) + * @param {DOMElement} container the container element that will capture each of the animation events that are fired on itself + * as well as among its children + * @param {Function} callback the callback function that will be fired when the listener is triggered + * + * The arguments present in the callback function are: + * * `element` - The captured DOM element that the animation was fired on. + * * `phase` - The phase of the animation. The two possible phases are **start** (when the animation starts) and **close** (when it ends). */ - enter: function(element, parent, after, options) { - applyStyles(element, options); - after ? after.after(element) - : parent.prepend(element); - return asyncPromise(); - }, + on: $$animateQueue.on, /** * * @ngdoc method - * @name $animate#leave + * @name $animate#off * @kind function - * @description Removes the element from the DOM. When the function is called a promise - * is returned that will be resolved at a later time. - * @param {DOMElement} element the element which will be removed from the DOM - * @param {object=} options an optional collection of options that will be applied to the element. - * @return {Promise} the animation callback promise + * @description Deregisters an event listener based on the event which has been associated with the provided element. This method + * can be used in three different ways depending on the arguments: + * + * ```js + * // remove all the animation event listeners listening for `enter` + * $animate.off('enter'); + * + * // remove all the animation event listeners listening for `enter` on the given element and its children + * $animate.off('enter', container); + * + * // remove the event listener function provided by `listenerFn` that is set + * // to listen for `enter` on the given `element` as well as its children + * $animate.off('enter', container, callback); + * ``` + * + * @param {string} event the animation event (e.g. enter, leave, move, addClass, removeClass, etc...) + * @param {DOMElement=} container the container element the event listener was placed on + * @param {Function=} callback the callback function that was registered as the listener */ - leave: function(element, options) { - element.remove(); - return asyncPromise(); - }, + off: $$animateQueue.off, /** - * * @ngdoc method - * @name $animate#move + * @name $animate#pin * @kind function - * @description Moves the position of the provided element within the DOM to be placed - * either after the `after` element or inside of the `parent` element. When the function - * is called a promise is returned that will be resolved at a later time. + * @description Associates the provided element with a host parent element to allow the element to be animated even if it exists + * outside of the DOM structure of the Angular application. By doing so, any animation triggered via `$animate` can be issued on the + * element despite being outside the realm of the application or within another application. Say for example if the application + * was bootstrapped on an element that is somewhere inside of the `` tag, but we wanted to allow for an element to be situated + * as a direct child of `document.body`, then this can be achieved by pinning the element via `$animate.pin(element)`. Keep in mind + * that calling `$animate.pin(element, parentElement)` will not actually insert into the DOM anywhere; it will just create the association. * - * @param {DOMElement} element the element which will be moved around within the - * DOM - * @param {DOMElement} parent the parent element where the element will be - * inserted into (if the after element is not present) - * @param {DOMElement} after the sibling element where the element will be - * positioned next to - * @param {object=} options an optional collection of options that will be applied to the element. - * @return {Promise} the animation callback promise + * Note that this feature is only active when the `ngAnimate` module is used. + * + * @param {DOMElement} element the external element that will be pinned + * @param {DOMElement} parentElement the host parent element that will be associated with the external element */ - move: function(element, parent, after, options) { - // Do not remove element before insert. Removing will cause data associated with the - // element to be dropped. Insert will implicitly do the remove. - return this.enter(element, parent, after, options); - }, + pin: $$animateQueue.pin, /** * * @ngdoc method - * @name $animate#addClass + * @name $animate#enabled * @kind function - * @description Adds the provided className CSS class value to the provided element. - * When the function is called a promise is returned that will be resolved at a later time. - * @param {DOMElement} element the element which will have the className value - * added to it - * @param {string} className the CSS class which will be added to the element - * @param {object=} options an optional collection of options that will be applied to the element. - * @return {Promise} the animation callback promise - */ - addClass: function(element, className, options) { - return this.setClass(element, className, [], options); - }, - - $$addClassImmediately: function(element, className, options) { - element = jqLite(element); - className = !isString(className) - ? (isArray(className) ? className.join(' ') : '') - : className; - forEach(element, function(element) { - jqLiteAddClass(element, className); - }); - applyStyles(element, options); - return asyncPromise(); + * @description Used to get and set whether animations are enabled or not on the entire application or on an element and its children. This + * function can be called in four ways: + * + * ```js + * // returns true or false + * $animate.enabled(); + * + * // changes the enabled state for all animations + * $animate.enabled(false); + * $animate.enabled(true); + * + * // returns true or false if animations are enabled for an element + * $animate.enabled(element); + * + * // changes the enabled state for an element and its children + * $animate.enabled(element, true); + * $animate.enabled(element, false); + * ``` + * + * @param {DOMElement=} element the element that will be considered for checking/setting the enabled state + * @param {boolean=} enabled whether or not the animations will be enabled for the element + * + * @return {boolean} whether or not animations are enabled + */ + enabled: $$animateQueue.enabled, + + /** + * @ngdoc method + * @name $animate#cancel + * @kind function + * @description Cancels the provided animation. + * + * @param {Promise} animationPromise The animation promise that is returned when an animation is started. + */ + cancel: function(runner) { + runner.end && runner.end(); }, /** * * @ngdoc method - * @name $animate#removeClass + * @name $animate#enter * @kind function - * @description Removes the provided className CSS class value from the provided element. - * When the function is called a promise is returned that will be resolved at a later time. - * @param {DOMElement} element the element which will have the className value - * removed from it - * @param {string} className the CSS class which will be removed from the element - * @param {object=} options an optional collection of options that will be applied to the element. + * @description Inserts the element into the DOM either after the `after` element (if provided) or + * as the first child within the `parent` element and then triggers an animation. + * A promise is returned that will be resolved during the next digest once the animation + * has completed. + * + * @param {DOMElement} element the element which will be inserted into the DOM + * @param {DOMElement} parent the parent element which will append the element as + * a child (so long as the after element is not present) + * @param {DOMElement=} after the sibling element after which the element will be appended + * @param {object=} options an optional collection of options/styles that will be applied to the element + * * @return {Promise} the animation callback promise */ - removeClass: function(element, className, options) { - return this.setClass(element, [], className, options); + enter: function(element, parent, after, options) { + parent = parent && jqLite(parent); + after = after && jqLite(after); + parent = parent || after.parent(); + domInsert(element, parent, after); + return $$animateQueue.push(element, 'enter', prepareAnimateOptions(options)); + }, + + /** + * + * @ngdoc method + * @name $animate#move + * @kind function + * @description Inserts (moves) the element into its new position in the DOM either after + * the `after` element (if provided) or as the first child within the `parent` element + * and then triggers an animation. A promise is returned that will be resolved + * during the next digest once the animation has completed. + * + * @param {DOMElement} element the element which will be moved into the new DOM position + * @param {DOMElement} parent the parent element which will append the element as + * a child (so long as the after element is not present) + * @param {DOMElement=} after the sibling element after which the element will be appended + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + move: function(element, parent, after, options) { + parent = parent && jqLite(parent); + after = after && jqLite(after); + parent = parent || after.parent(); + domInsert(element, parent, after); + return $$animateQueue.push(element, 'move', prepareAnimateOptions(options)); }, - $$removeClassImmediately: function(element, className, options) { - element = jqLite(element); - className = !isString(className) - ? (isArray(className) ? className.join(' ') : '') - : className; - forEach(element, function(element) { - jqLiteRemoveClass(element, className); + /** + * @ngdoc method + * @name $animate#leave + * @kind function + * @description Triggers an animation and then removes the element from the DOM. + * When the function is called a promise is returned that will be resolved during the next + * digest once the animation has completed. + * + * @param {DOMElement} element the element which will be removed from the DOM + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + leave: function(element, options) { + return $$animateQueue.push(element, 'leave', prepareAnimateOptions(options), function() { + element.remove(); }); - applyStyles(element, options); - return asyncPromise(); }, /** + * @ngdoc method + * @name $animate#addClass + * @kind function + * + * @description Triggers an addClass animation surrounding the addition of the provided CSS class(es). Upon + * execution, the addClass operation will only be handled after the next digest and it will not trigger an + * animation if element already contains the CSS class or if the class is removed at a later step. + * Note that class-based animations are treated differently compared to structural animations + * (like enter, move and leave) since the CSS classes may be added/removed at different points + * depending if CSS or JavaScript animations are used. + * + * @param {DOMElement} element the element which the CSS classes will be applied to + * @param {string} className the CSS class(es) that will be added (multiple classes are separated via spaces) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + addClass: function(element, className, options) { + options = prepareAnimateOptions(options); + options.addClass = mergeClasses(options.addclass, className); + return $$animateQueue.push(element, 'addClass', options); + }, + + /** + * @ngdoc method + * @name $animate#removeClass + * @kind function + * + * @description Triggers a removeClass animation surrounding the removal of the provided CSS class(es). Upon + * execution, the removeClass operation will only be handled after the next digest and it will not trigger an + * animation if element does not contain the CSS class or if the class is added at a later step. + * Note that class-based animations are treated differently compared to structural animations + * (like enter, move and leave) since the CSS classes may be added/removed at different points + * depending if CSS or JavaScript animations are used. + * + * @param {DOMElement} element the element which the CSS classes will be applied to + * @param {string} className the CSS class(es) that will be removed (multiple classes are separated via spaces) + * @param {object=} options an optional collection of options/styles that will be applied to the element * + * @return {Promise} the animation callback promise + */ + removeClass: function(element, className, options) { + options = prepareAnimateOptions(options); + options.removeClass = mergeClasses(options.removeClass, className); + return $$animateQueue.push(element, 'removeClass', options); + }, + + /** * @ngdoc method * @name $animate#setClass * @kind function - * @description Adds and/or removes the given CSS classes to and from the element. - * When the function is called a promise is returned that will be resolved at a later time. - * @param {DOMElement} element the element which will have its CSS classes changed - * removed from it - * @param {string} add the CSS classes which will be added to the element - * @param {string} remove the CSS class which will be removed from the element - * @param {object=} options an optional collection of options that will be applied to the element. + * + * @description Performs both the addition and removal of a CSS classes on an element and (during the process) + * triggers an animation surrounding the class addition/removal. Much like `$animate.addClass` and + * `$animate.removeClass`, `setClass` will only evaluate the classes being added/removed once a digest has + * passed. Note that class-based animations are treated differently compared to structural animations + * (like enter, move and leave) since the CSS classes may be added/removed at different points + * depending if CSS or JavaScript animations are used. + * + * @param {DOMElement} element the element which the CSS classes will be applied to + * @param {string} add the CSS class(es) that will be added (multiple classes are separated via spaces) + * @param {string} remove the CSS class(es) that will be removed (multiple classes are separated via spaces) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * * @return {Promise} the animation callback promise */ setClass: function(element, add, remove, options) { - var self = this; - var STORAGE_KEY = '$$animateClasses'; - var createdCache = false; - element = jqLite(element); - - var cache = element.data(STORAGE_KEY); - if (!cache) { - cache = { - classes: {}, - options: options - }; - createdCache = true; - } else if (options && cache.options) { - cache.options = angular.extend(cache.options || {}, options); - } - - var classes = cache.classes; - - add = isArray(add) ? add : add.split(' '); - remove = isArray(remove) ? remove : remove.split(' '); - cachedClassManipulation(classes, add, true); - cachedClassManipulation(classes, remove, false); - - if (createdCache) { - cache.promise = runAnimationPostDigest(function(done) { - var cache = element.data(STORAGE_KEY); - element.removeData(STORAGE_KEY); - - // in the event that the element is removed before postDigest - // is run then the cache will be undefined and there will be - // no need anymore to add or remove and of the element classes - if (cache) { - var classes = resolveElementClasses(element, cache.classes); - if (classes) { - self.$$setClassImmediately(element, classes[0], classes[1], cache.options); - } - } - - done(); - }); - element.data(STORAGE_KEY, cache); - } - - return cache.promise; + options = prepareAnimateOptions(options); + options.addClass = mergeClasses(options.addClass, add); + options.removeClass = mergeClasses(options.removeClass, remove); + return $$animateQueue.push(element, 'setClass', options); }, - $$setClassImmediately: function(element, add, remove, options) { - add && this.$$addClassImmediately(element, add); - remove && this.$$removeClassImmediately(element, remove); - applyStyles(element, options); - return asyncPromise(); - }, + /** + * @ngdoc method + * @name $animate#animate + * @kind function + * + * @description Performs an inline animation on the element which applies the provided to and from CSS styles to the element. + * If any detected CSS transition, keyframe or JavaScript matches the provided className value then the animation will take + * on the provided styles. For example, if a transition animation is set for the given className then the provided from and + * to styles will be applied alongside the given transition. If a JavaScript animation is detected then the provided styles + * will be given in as function paramters into the `animate` method (or as apart of the `options` parameter). + * + * @param {DOMElement} element the element which the CSS styles will be applied to + * @param {object} from the from (starting) CSS styles that will be applied to the element and across the animation. + * @param {object} to the to (destination) CSS styles that will be applied to the element and across the animation. + * @param {string=} className an optional CSS class that will be applied to the element for the duration of the animation. If + * this value is left as empty then a CSS class of `ng-inline-animate` will be applied to the element. + * (Note that if no animation is detected then this value will not be appplied to the element.) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + animate: function(element, from, to, className, options) { + options = prepareAnimateOptions(options); + options.from = options.from ? extend(options.from, from) : from; + options.to = options.to ? extend(options.to, to) : to; - enabled: noop, - cancel: noop + className = className || 'ng-inline-animate'; + options.tempClasses = mergeClasses(options.tempClasses, className); + return $$animateQueue.push(element, 'animate', options); + } }; }]; }]; @@ -4919,7 +5408,7 @@ function Browser(window, document, $log, $sniffer) { function getHash(url) { var index = url.indexOf('#'); - return index === -1 ? '' : url.substr(index + 1); + return index === -1 ? '' : url.substr(index); } /** @@ -4929,11 +5418,6 @@ function Browser(window, document, $log, $sniffer) { * @param {function()} callback Function that will be called when no outstanding request */ self.notifyWhenNoOutstandingRequests = function(callback) { - // force browser to execute all pollFns - this is needed so that cookies and other pollers fire - // at some deterministic time in respect to the test runner's actions. Leaving things up to the - // regular poller would result in flaky tests. - forEach(pollFns, function(pollFn) { pollFn(); }); - if (outstandingRequestCount === 0) { callback(); } else { @@ -4941,44 +5425,6 @@ function Browser(window, document, $log, $sniffer) { } }; - ////////////////////////////////////////////////////////////// - // Poll Watcher API - ////////////////////////////////////////////////////////////// - var pollFns = [], - pollTimeout; - - /** - * @name $browser#addPollFn - * - * @param {function()} fn Poll function to add - * - * @description - * Adds a function to the list of functions that poller periodically executes, - * and starts polling if not started yet. - * - * @returns {function()} the added function - */ - self.addPollFn = function(fn) { - if (isUndefined(pollTimeout)) startPoller(100, setTimeout); - pollFns.push(fn); - return fn; - }; - - /** - * @param {number} interval How often should browser call poll functions (ms) - * @param {function()} setTimeout Reference to a real or fake `setTimeout` function. - * - * @description - * Configures the poller to run in the specified intervals, using the specified - * setTimeout fn and kicks it off. - */ - function startPoller(interval, setTimeout) { - (function check() { - forEach(pollFns, function(pollFn) { pollFn(); }); - pollTimeout = setTimeout(check, interval); - })(); - } - ////////////////////////////////////////////////////////////// // URL API ////////////////////////////////////////////////////////////// @@ -5046,7 +5492,7 @@ function Browser(window, document, $log, $sniffer) { // Do the assignment again so that those two variables are referentially identical. lastHistoryState = cachedState; } else { - if (!sameBase) { + if (!sameBase || reloadLocation) { reloadLocation = url; } if (replace) { @@ -5089,11 +5535,19 @@ function Browser(window, document, $log, $sniffer) { fireUrlChange(); } + function getCurrentState() { + try { + return history.state; + } catch (e) { + // MSIE can reportedly throw when there is no state (UNCONFIRMED). + } + } + // This variable should be used *only* inside the cacheState function. var lastCachedState = null; function cacheState() { // This should be the only place in $browser where `history.state` is read. - cachedState = window.history.state; + cachedState = getCurrentState(); cachedState = isUndefined(cachedState) ? null : cachedState; // Prevent callbacks fo fire twice if both hashchange & popstate were fired. @@ -5155,6 +5609,16 @@ function Browser(window, document, $log, $sniffer) { return callback; }; + /** + * @private + * Remove popstate and hashchange handler from window. + * + * NOTE: this api is intended for use only by $rootScope. + */ + self.$$applicationDestroyed = function() { + jqLite(window).off('hashchange popstate', cacheStateAndFireUrlChange); + }; + /** * Checks whether the url has changed outside of Angular. * Needs to be exported to be able to check for changes that have been done in sync, @@ -5180,89 +5644,6 @@ function Browser(window, document, $log, $sniffer) { return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : ''; }; - ////////////////////////////////////////////////////////////// - // Cookies API - ////////////////////////////////////////////////////////////// - var lastCookies = {}; - var lastCookieString = ''; - var cookiePath = self.baseHref(); - - function safeDecodeURIComponent(str) { - try { - return decodeURIComponent(str); - } catch (e) { - return str; - } - } - - /** - * @name $browser#cookies - * - * @param {string=} name Cookie name - * @param {string=} value Cookie value - * - * @description - * The cookies method provides a 'private' low level access to browser cookies. - * It is not meant to be used directly, use the $cookie service instead. - * - * The return values vary depending on the arguments that the method was called with as follows: - * - * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify - * it - * - cookies(name, value) -> set name to value, if value is undefined delete the cookie - * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that - * way) - * - * @returns {Object} Hash of all cookies (if called without any parameter) - */ - self.cookies = function(name, value) { - var cookieLength, cookieArray, cookie, i, index; - - if (name) { - if (value === undefined) { - rawDocument.cookie = encodeURIComponent(name) + "=;path=" + cookiePath + - ";expires=Thu, 01 Jan 1970 00:00:00 GMT"; - } else { - if (isString(value)) { - cookieLength = (rawDocument.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + - ';path=' + cookiePath).length + 1; - - // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum: - // - 300 cookies - // - 20 cookies per unique domain - // - 4096 bytes per cookie - if (cookieLength > 4096) { - $log.warn("Cookie '" + name + - "' possibly not set or overflowed because it was too large (" + - cookieLength + " > 4096 bytes)!"); - } - } - } - } else { - if (rawDocument.cookie !== lastCookieString) { - lastCookieString = rawDocument.cookie; - cookieArray = lastCookieString.split("; "); - lastCookies = {}; - - for (i = 0; i < cookieArray.length; i++) { - cookie = cookieArray[i]; - index = cookie.indexOf('='); - if (index > 0) { //ignore nameless cookies - name = safeDecodeURIComponent(cookie.substring(0, index)); - // the first value that is seen for a cookie is the most - // specific one. values for the same cookie name that - // follow are for less specific paths. - if (lastCookies[name] === undefined) { - lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1)); - } - } - } - } - return lastCookies; - } - }; - - /** * @name $browser#defer * @param {function()} fn A function, who's execution should be deferred. @@ -5477,13 +5858,13 @@ function $CacheFactoryProvider() { * @returns {*} the value stored. */ put: function(key, value) { + if (isUndefined(value)) return; if (capacity < Number.MAX_VALUE) { var lruEntry = lruHash[key] || (lruHash[key] = {key: key}); refresh(lruEntry); } - if (isUndefined(value)) return; if (!(key in data)) size++; data[key] = value; @@ -5690,7 +6071,7 @@ function $CacheFactoryProvider() { * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE, * element with ng-app attribute), otherwise the template will be ignored. * - * Adding via the $templateCache service: + * Adding via the `$templateCache` service: * * ```js * var myApp = angular.module('myApp', []); @@ -5718,6 +6099,17 @@ function $TemplateCacheProvider() { }]; } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + /* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE! * * DOM-related variables: @@ -5782,7 +6174,8 @@ function $TemplateCacheProvider() { * templateNamespace: 'html', * scope: false, * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... }, - * controllerAs: 'stringAlias', + * controllerAs: 'stringIdentifier', + * bindToController: false, * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'], * compile: function compile(tElement, tAttrs, transclude) { * return { @@ -5929,7 +6322,8 @@ function $TemplateCacheProvider() { * Require another directive and inject its controller as the fourth argument to the linking function. The * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the * injected argument will be an array in corresponding order. If no such directive can be - * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with: + * found, or if the directive does not have a controller, then an error is raised (unless no link function + * is specified, in which case error checking is skipped). The name can be prefixed with: * * * (no prefix) - Locate the required controller on the current element. Throw an error if not found. * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found. @@ -5942,9 +6336,10 @@ function $TemplateCacheProvider() { * * * #### `controllerAs` - * Controller alias at the directive scope. An alias for the controller so it - * can be referenced at the directive template. The directive needs to define a scope for this - * configuration to be used. Useful in the case when directive is used as component. + * Identifier name for a reference to the controller in the directive's scope. + * This allows the controller to be referenced from the directive template. The directive + * needs to define a scope for this configuration to be used. Useful in the case when + * directive is used as component. * * * #### `restrict` @@ -6063,7 +6458,7 @@ function $TemplateCacheProvider() { * `templateUrl` declaration or manual compilation inside the compile function. * * - *
+ *
* **Note:** The `transclude` function that is passed to the compile function is deprecated, as it * e.g. does not know about the right outer scope. Please use the transclude function that is passed * to the link function instead. @@ -6100,9 +6495,18 @@ function $TemplateCacheProvider() { * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared * between all directive linking functions. * - * * `controller` - a controller instance - A controller instance if at least one directive on the - * element defines a controller. The controller is shared among all the directives, which allows - * the directives to use the controllers as a communication channel. + * * `controller` - the directive's required controller instance(s) - Instances are shared + * among all directives, which allows the directives to use the controllers as a communication + * channel. The exact value depends on the directive's `require` property: + * * no controller(s) required: the directive's own controller, or `undefined` if it doesn't have one + * * `string`: the controller instance + * * `array`: array of controller instances + * + * If a required controller cannot be found, and it is optional, the instance is `null`, + * otherwise the {@link error:$compile:ctreq Missing Required Controller} error is thrown. + * + * Note that you can also require the directive's own controller - it will be made available like + * like any other controller. * * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope. * This is the same as the `$transclude` @@ -6195,7 +6599,7 @@ function $TemplateCacheProvider() { * *
* **Best Practice**: if you intend to add and remove transcluded content manually in your directive - * (by calling the transclude function to get the DOM and and calling `element.remove()` to remove it), + * (by calling the transclude function to get the DOM and calling `element.remove()` to remove it), * then you are also responsible for calling `$destroy` on the transclusion scope. *
* @@ -6319,8 +6723,8 @@ function $TemplateCacheProvider() { }]);
-
-
+
+
@@ -6342,7 +6746,7 @@ function $TemplateCacheProvider() { * @param {string|DOMElement} element Element or HTML string to compile into a template function. * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED. * - *
+ *
* **Note:** Passing a `transclude` function to the $compile function is deprecated, as it * e.g. will not use the right outer scope. Please pass the transclude function as a * `parentBoundTranscludeFn` to the link function instead. @@ -6357,7 +6761,7 @@ function $TemplateCacheProvider() { * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the * `template` and call the `cloneAttachFn` function allowing the caller to attach the * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is - * called as:
`cloneAttachFn(clonedElement, scope)` where: + * called as:
`cloneAttachFn(clonedElement, scope)` where: * * * `clonedElement` - is a clone of the original `element` passed into the compiler. * * `scope` - is the current scope with which the linking function is working with. @@ -6430,7 +6834,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { // 'on' and be composed of only English letters. var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/; - function parseIsolateBindings(scope, directiveName) { + function parseIsolateBindings(scope, directiveName, isController) { var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/; var bindings = {}; @@ -6440,9 +6844,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (!match) { throw $compileMinErr('iscp', - "Invalid isolate scope definition for directive '{0}'." + + "Invalid {3} for directive '{0}'." + " Definition: {... {1}: '{2}' ...}", - directiveName, scopeName, definition); + directiveName, scopeName, definition, + (isController ? "controller bindings definition" : + "isolate scope definition")); } bindings[scopeName] = { @@ -6456,6 +6862,55 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return bindings; } + function parseDirectiveBindings(directive, directiveName) { + var bindings = { + isolateScope: null, + bindToController: null + }; + if (isObject(directive.scope)) { + if (directive.bindToController === true) { + bindings.bindToController = parseIsolateBindings(directive.scope, + directiveName, true); + bindings.isolateScope = {}; + } else { + bindings.isolateScope = parseIsolateBindings(directive.scope, + directiveName, false); + } + } + if (isObject(directive.bindToController)) { + bindings.bindToController = + parseIsolateBindings(directive.bindToController, directiveName, true); + } + if (isObject(bindings.bindToController)) { + var controller = directive.controller; + var controllerAs = directive.controllerAs; + if (!controller) { + // There is no controller, there may or may not be a controllerAs property + throw $compileMinErr('noctrl', + "Cannot bind to controller without directive '{0}'s controller.", + directiveName); + } else if (!identifierForController(controller, controllerAs)) { + // There is a controller, but no identifier or controllerAs property + throw $compileMinErr('noident', + "Cannot bind to controller without identifier for directive '{0}'.", + directiveName); + } + } + return bindings; + } + + function assertValidDirectiveName(name) { + var letter = name.charAt(0); + if (!letter || letter !== lowercase(letter)) { + throw $compileMinErr('baddir', "Directive name '{0}' is invalid. The first character must be a lowercase letter", name); + } + if (name !== name.trim()) { + throw $compileMinErr('baddir', + "Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces", + name); + } + } + /** * @ngdoc method * @name $compileProvider#directive @@ -6474,6 +6929,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { this.directive = function registerDirective(name, directiveFactory) { assertNotHasOwnProperty(name, 'directive'); if (isString(name)) { + assertValidDirectiveName(name); assertArg(directiveFactory, 'directiveFactory'); if (!hasDirectives.hasOwnProperty(name)) { hasDirectives[name] = []; @@ -6493,9 +6949,12 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { directive.name = directive.name || name; directive.require = directive.require || (directive.controller && directive.name); directive.restrict = directive.restrict || 'EA'; - if (isObject(directive.scope)) { - directive.$$isolateBindings = parseIsolateBindings(directive.scope, directive.name); + var bindings = directive.$$bindings = + parseDirectiveBindings(directive, directive.name); + if (isObject(bindings.isolateScope)) { + directive.$$isolateBindings = bindings.isolateScope; } + directive.$$moduleName = directiveFactory.$$moduleName; directives.push(directive); } catch (e) { $exceptionHandler(e); @@ -7056,14 +7515,18 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (nodeLinkFn.scope) { childScope = scope.$new(); compile.$$addScopeInfo(jqLite(node), childScope); + var destroyBindings = nodeLinkFn.$$destroyBindings; + if (destroyBindings) { + nodeLinkFn.$$destroyBindings = null; + childScope.$on('$destroyed', destroyBindings); + } } else { childScope = scope; } if (nodeLinkFn.transcludeOnThisElement) { childBoundTranscludeFn = createBoundTranscludeFn( - scope, nodeLinkFn.transclude, parentBoundTranscludeFn, - nodeLinkFn.elementTranscludeOnThisElement); + scope, nodeLinkFn.transclude, parentBoundTranscludeFn); } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) { childBoundTranscludeFn = parentBoundTranscludeFn; @@ -7075,7 +7538,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { childBoundTranscludeFn = null; } - nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn); + nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn, + nodeLinkFn); } else if (childLinkFn) { childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn); @@ -7084,7 +7548,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } } - function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn, elementTransclusion) { + function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) { var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) { @@ -7183,6 +7647,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } break; case NODE_TYPE_TEXT: /* Text Node */ + if (msie === 11) { + // Workaround for #11781 + while (node.parentNode && node.nextSibling && node.nextSibling.nodeType === NODE_TYPE_TEXT) { + node.nodeValue = node.nodeValue + node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } addTextInterpolateDirective(directives, node.nodeValue); break; case NODE_TYPE_COMMENT: /* Comment */ @@ -7282,9 +7753,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { previousCompileContext = previousCompileContext || {}; var terminalPriority = -Number.MAX_VALUE, - newScopeDirective, + newScopeDirective = previousCompileContext.newScopeDirective, controllerDirectives = previousCompileContext.controllerDirectives, - controllers, newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective, templateDirective = previousCompileContext.templateDirective, nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective, @@ -7342,7 +7812,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (!directive.templateUrl && directive.controller) { directiveValue = directive.controller; - controllerDirectives = controllerDirectives || {}; + controllerDirectives = controllerDirectives || createMap(); assertNoDuplicate("'" + directiveName + "' controller", controllerDirectives[directiveName], directive, $compileNode); controllerDirectives[directiveName] = directive; @@ -7449,6 +7919,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode, templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, { controllerDirectives: controllerDirectives, + newScopeDirective: (newScopeDirective !== directive) && newScopeDirective, newIsolateScopeDirective: newIsolateScopeDirective, templateDirective: templateDirective, nonTlbTranscludeDirective: nonTlbTranscludeDirective @@ -7476,7 +7947,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true; nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective; - nodeLinkFn.elementTranscludeOnThisElement = hasElementTranscludeDirective; nodeLinkFn.templateOnThisElement = hasTemplate; nodeLinkFn.transclude = childTranscludeFn; @@ -7510,53 +7980,77 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { function getControllers(directiveName, require, $element, elementControllers) { - var value, retrievalMethod = 'data', optional = false; - var $searchElement = $element; - var match; - if (isString(require)) { - match = require.match(REQUIRE_PREFIX_REGEXP); - require = require.substring(match[0].length); + var value; - if (match[3]) { - if (match[1]) match[3] = null; - else match[1] = match[3]; - } - if (match[1] === '^') { - retrievalMethod = 'inheritedData'; - } else if (match[1] === '^^') { - retrievalMethod = 'inheritedData'; - $searchElement = $element.parent(); - } - if (match[2] === '?') { - optional = true; + if (isString(require)) { + var match = require.match(REQUIRE_PREFIX_REGEXP); + var name = require.substring(match[0].length); + var inheritType = match[1] || match[3]; + var optional = match[2] === '?'; + + //If only parents then start at the parent element + if (inheritType === '^^') { + $element = $element.parent(); + //Otherwise attempt getting the controller from elementControllers in case + //the element is transcluded (and has no data) and to avoid .data if possible + } else { + value = elementControllers && elementControllers[name]; + value = value && value.instance; } - value = null; - - if (elementControllers && retrievalMethod === 'data') { - if (value = elementControllers[require]) { - value = value.instance; - } + if (!value) { + var dataName = '$' + name + 'Controller'; + value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName); } - value = value || $searchElement[retrievalMethod]('$' + require + 'Controller'); if (!value && !optional) { throw $compileMinErr('ctreq', "Controller '{0}', required by directive '{1}', can't be found!", - require, directiveName); + name, directiveName); } - return value || null; } else if (isArray(require)) { value = []; - forEach(require, function(require) { - value.push(getControllers(directiveName, require, $element, elementControllers)); - }); + for (var i = 0, ii = require.length; i < ii; i++) { + value[i] = getControllers(directiveName, require[i], $element, elementControllers); + } } - return value; + + return value || null; } + function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope) { + var elementControllers = createMap(); + for (var controllerKey in controllerDirectives) { + var directive = controllerDirectives[controllerKey]; + var locals = { + $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope, + $element: $element, + $attrs: attrs, + $transclude: transcludeFn + }; + + var controller = directive.controller; + if (controller == '@') { + controller = attrs[directive.name]; + } + + var controllerInstance = $controller(controller, locals, true, directive.controllerAs); + + // For directives with element transclusion the element is a comment, + // but jQuery .data doesn't support attaching data to comment nodes as it's hard to + // clean up (http://bugs.jquery.com/ticket/8335). + // Instead, we save the controllers for the element in a local hash and attach to .data + // later, once we have the actual element. + elementControllers[directive.name] = controllerInstance; + if (!hasElementTranscludeDirective) { + $element.data('$' + directive.name + 'Controller', controllerInstance.instance); + } + } + return elementControllers; + } - function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) { + function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn, + thisLinkFn) { var i, ii, linkFn, controller, isolateScope, elementControllers, transcludeFn, $element, attrs; @@ -7580,126 +8074,53 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } if (controllerDirectives) { - // TODO: merge `controllers` and `elementControllers` into single object. - controllers = {}; - elementControllers = {}; - forEach(controllerDirectives, function(directive) { - var locals = { - $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope, - $element: $element, - $attrs: attrs, - $transclude: transcludeFn - }, controllerInstance; - - controller = directive.controller; - if (controller == '@') { - controller = attrs[directive.name]; - } - - controllerInstance = $controller(controller, locals, true, directive.controllerAs); - - // For directives with element transclusion the element is a comment, - // but jQuery .data doesn't support attaching data to comment nodes as it's hard to - // clean up (http://bugs.jquery.com/ticket/8335). - // Instead, we save the controllers for the element in a local hash and attach to .data - // later, once we have the actual element. - elementControllers[directive.name] = controllerInstance; - if (!hasElementTranscludeDirective) { - $element.data('$' + directive.name + 'Controller', controllerInstance.instance); - } - - controllers[directive.name] = controllerInstance; - }); + elementControllers = setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope); } if (newIsolateScopeDirective) { + // Initialize isolate scope bindings for new isolate scope directive. compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective || templateDirective === newIsolateScopeDirective.$$originalDirective))); compile.$$addScopeClass($element, true); - - var isolateScopeController = controllers && controllers[newIsolateScopeDirective.name]; - var isolateBindingContext = isolateScope; - if (isolateScopeController && isolateScopeController.identifier && - newIsolateScopeDirective.bindToController === true) { - isolateBindingContext = isolateScopeController.instance; + isolateScope.$$isolateBindings = + newIsolateScopeDirective.$$isolateBindings; + initializeDirectiveBindings(scope, attrs, isolateScope, + isolateScope.$$isolateBindings, + newIsolateScopeDirective, isolateScope); + } + if (elementControllers) { + // Initialize bindToController bindings for new/isolate scopes + var scopeDirective = newIsolateScopeDirective || newScopeDirective; + var bindings; + var controllerForBindings; + if (scopeDirective && elementControllers[scopeDirective.name]) { + bindings = scopeDirective.$$bindings.bindToController; + controller = elementControllers[scopeDirective.name]; + + if (controller && controller.identifier && bindings) { + controllerForBindings = controller; + thisLinkFn.$$destroyBindings = + initializeDirectiveBindings(scope, attrs, controller.instance, + bindings, scopeDirective); + } } - - forEach(isolateScope.$$isolateBindings = newIsolateScopeDirective.$$isolateBindings, function(definition, scopeName) { - var attrName = definition.attrName, - optional = definition.optional, - mode = definition.mode, // @, =, or & - lastValue, - parentGet, parentSet, compare; - - switch (mode) { - - case '@': - attrs.$observe(attrName, function(value) { - isolateBindingContext[scopeName] = value; - }); - attrs.$$observers[attrName].$$scope = scope; - if (attrs[attrName]) { - // If the attribute has been provided then we trigger an interpolation to ensure - // the value is there for use in the link fn - isolateBindingContext[scopeName] = $interpolate(attrs[attrName])(scope); - } - break; - - case '=': - if (optional && !attrs[attrName]) { - return; - } - parentGet = $parse(attrs[attrName]); - if (parentGet.literal) { - compare = equals; - } else { - compare = function(a, b) { return a === b || (a !== a && b !== b); }; - } - parentSet = parentGet.assign || function() { - // reset the change, or we will throw this exception on every $digest - lastValue = isolateBindingContext[scopeName] = parentGet(scope); - throw $compileMinErr('nonassign', - "Expression '{0}' used with directive '{1}' is non-assignable!", - attrs[attrName], newIsolateScopeDirective.name); - }; - lastValue = isolateBindingContext[scopeName] = parentGet(scope); - var parentValueWatch = function parentValueWatch(parentValue) { - if (!compare(parentValue, isolateBindingContext[scopeName])) { - // we are out of sync and need to copy - if (!compare(parentValue, lastValue)) { - // parent changed and it has precedence - isolateBindingContext[scopeName] = parentValue; - } else { - // if the parent can be assigned then do so - parentSet(scope, parentValue = isolateBindingContext[scopeName]); - } - } - return lastValue = parentValue; - }; - parentValueWatch.$stateful = true; - var unwatch; - if (definition.collection) { - unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch); - } else { - unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); - } - isolateScope.$on('$destroy', unwatch); - break; - - case '&': - parentGet = $parse(attrs[attrName]); - isolateBindingContext[scopeName] = function(locals) { - return parentGet(scope, locals); - }; - break; + for (i in elementControllers) { + controller = elementControllers[i]; + var controllerResult = controller(); + + if (controllerResult !== controller.instance) { + // If the controller constructor has a return value, overwrite the instance + // from setupControllers and update the element data + controller.instance = controllerResult; + $element.data('$' + i + 'Controller', controllerResult); + if (controller === controllerForBindings) { + // Remove and re-install bindToController bindings + thisLinkFn.$$destroyBindings(); + thisLinkFn.$$destroyBindings = + initializeDirectiveBindings(scope, attrs, controllerResult, bindings, scopeDirective); + } } - }); - } - if (controllers) { - forEach(controllers, function(controller) { - controller(); - }); - controllers = null; + } } // PRELINKING @@ -7883,7 +8304,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { $compileNode.empty(); - $templateRequest($sce.getTrustedResourceUrl(templateUrl)) + $templateRequest(templateUrl) .then(function(content) { var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn; @@ -7957,7 +8378,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { childBoundTranscludeFn = boundTranscludeFn; } afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement, - childBoundTranscludeFn); + childBoundTranscludeFn, afterTemplateNodeLinkFn); } linkQueue = null; }); @@ -7974,7 +8395,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (afterTemplateNodeLinkFn.transcludeOnThisElement) { childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn); } - afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn); + afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn, + afterTemplateNodeLinkFn); } }; } @@ -7990,11 +8412,18 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return a.index - b.index; } - function assertNoDuplicate(what, previousDirective, directive, element) { + + function wrapModuleNameIfDefined(moduleName) { + return moduleName ? + (' (module: ' + moduleName + ')') : + ''; + } + if (previousDirective) { - throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}', - previousDirective.name, directive.name, what, startingTag(element)); + throw $compileMinErr('multidir', 'Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}', + previousDirective.name, wrapModuleNameIfDefined(previousDirective.$$moduleName), + directive.name, wrapModuleNameIfDefined(directive.$$moduleName), what, startingTag(element)); } } @@ -8175,26 +8604,28 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var fragment = document.createDocumentFragment(); fragment.appendChild(firstElementToRemove); - // Copy over user data (that includes Angular's $scope etc.). Don't copy private - // data here because there's no public interface in jQuery to do that and copying over - // event listeners (which is the main use of private data) wouldn't work anyway. - jqLite(newNode).data(jqLite(firstElementToRemove).data()); - - // Remove data of the replaced element. We cannot just call .remove() - // on the element it since that would deallocate scope that is needed - // for the new node. Instead, remove the data "manually". - if (!jQuery) { - delete jqLite.cache[firstElementToRemove[jqLite.expando]]; - } else { - // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after - // the replaced element. The cleanData version monkey-patched by Angular would cause - // the scope to be trashed and we do need the very same scope to work with the new - // element. However, we cannot just cache the non-patched version and use it here as - // that would break if another library patches the method after Angular does (one - // example is jQuery UI). Instead, set a flag indicating scope destroying should be - // skipped this one time. - skipDestroyOnNextJQueryCleanData = true; - jQuery.cleanData([firstElementToRemove]); + if (jqLite.hasData(firstElementToRemove)) { + // Copy over user data (that includes Angular's $scope etc.). Don't copy private + // data here because there's no public interface in jQuery to do that and copying over + // event listeners (which is the main use of private data) wouldn't work anyway. + jqLite(newNode).data(jqLite(firstElementToRemove).data()); + + // Remove data of the replaced element. We cannot just call .remove() + // on the element it since that would deallocate scope that is needed + // for the new node. Instead, remove the data "manually". + if (!jQuery) { + delete jqLite.cache[firstElementToRemove[jqLite.expando]]; + } else { + // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after + // the replaced element. The cleanData version monkey-patched by Angular would cause + // the scope to be trashed and we do need the very same scope to work with the new + // element. However, we cannot just cache the non-patched version and use it here as + // that would break if another library patches the method after Angular does (one + // example is jQuery UI). Instead, set a flag indicating scope destroying should be + // skipped this one time. + skipDestroyOnNextJQueryCleanData = true; + jQuery.cleanData([firstElementToRemove]); + } } for (var k = 1, kk = elementsToRemove.length; k < kk; k++) { @@ -8221,22 +8652,126 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { $exceptionHandler(e, startingTag($element)); } } - }]; -} -var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i; -/** - * Converts all accepted directives format into proper directive name. - * @param name Name to normalize - */ -function directiveNormalize(name) { - return camelCase(name.replace(PREFIX_REGEXP, '')); -} -/** - * @ngdoc type - * @name $compile.directive.Attributes - * + // Set up $watches for isolate scope and controller bindings. This process + // only occurs for isolate scopes and new scopes with controllerAs. + function initializeDirectiveBindings(scope, attrs, destination, bindings, + directive, newScope) { + var onNewScopeDestroyed; + forEach(bindings, function(definition, scopeName) { + var attrName = definition.attrName, + optional = definition.optional, + mode = definition.mode, // @, =, or & + lastValue, + parentGet, parentSet, compare; + + if (!hasOwnProperty.call(attrs, attrName)) { + // In the case of user defined a binding with the same name as a method in Object.prototype but didn't set + // the corresponding attribute. We need to make sure subsequent code won't access to the prototype function + attrs[attrName] = undefined; + } + + switch (mode) { + + case '@': + if (!attrs[attrName] && !optional) { + destination[scopeName] = undefined; + } + + attrs.$observe(attrName, function(value) { + destination[scopeName] = value; + }); + attrs.$$observers[attrName].$$scope = scope; + if (attrs[attrName]) { + // If the attribute has been provided then we trigger an interpolation to ensure + // the value is there for use in the link fn + destination[scopeName] = $interpolate(attrs[attrName])(scope); + } + break; + + case '=': + if (optional && !attrs[attrName]) { + return; + } + parentGet = $parse(attrs[attrName]); + + if (parentGet.literal) { + compare = equals; + } else { + compare = function(a, b) { return a === b || (a !== a && b !== b); }; + } + parentSet = parentGet.assign || function() { + // reset the change, or we will throw this exception on every $digest + lastValue = destination[scopeName] = parentGet(scope); + throw $compileMinErr('nonassign', + "Expression '{0}' used with directive '{1}' is non-assignable!", + attrs[attrName], directive.name); + }; + lastValue = destination[scopeName] = parentGet(scope); + var parentValueWatch = function parentValueWatch(parentValue) { + if (!compare(parentValue, destination[scopeName])) { + // we are out of sync and need to copy + if (!compare(parentValue, lastValue)) { + // parent changed and it has precedence + destination[scopeName] = parentValue; + } else { + // if the parent can be assigned then do so + parentSet(scope, parentValue = destination[scopeName]); + } + } + return lastValue = parentValue; + }; + parentValueWatch.$stateful = true; + var unwatch; + if (definition.collection) { + unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch); + } else { + unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); + } + onNewScopeDestroyed = (onNewScopeDestroyed || []); + onNewScopeDestroyed.push(unwatch); + break; + + case '&': + parentGet = $parse(attrs[attrName]); + + // Don't assign noop to destination if expression is not valid + if (parentGet === noop && optional) break; + + destination[scopeName] = function(locals) { + return parentGet(scope, locals); + }; + break; + } + }); + var destroyBindings = onNewScopeDestroyed ? function destroyBindings() { + for (var i = 0, ii = onNewScopeDestroyed.length; i < ii; ++i) { + onNewScopeDestroyed[i](); + } + } : noop; + if (newScope && destroyBindings !== noop) { + newScope.$on('$destroy', destroyBindings); + return noop; + } + return destroyBindings; + } + }]; +} + +var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i; +/** + * Converts all accepted directives format into proper directive name. + * @param name Name to normalize + */ +function directiveNormalize(name) { + return camelCase(name.replace(PREFIX_REGEXP, '')); +} + +/** + * @ngdoc type + * @name $compile.directive.Attributes + * * @description * A shared object between directive compile / linking functions which contains normalized DOM * element attributes. The values reflect current binding state `{{ }}`. The normalization is @@ -8328,6 +8863,17 @@ function removeComments(jqNodes) { var $controllerMinErr = minErr('$controller'); + +var CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/; +function identifierForController(controller, ident) { + if (ident && isString(ident)) return ident; + if (isString(controller)) { + var match = CNTRL_REG.exec(controller); + if (match) return match[3]; + } +} + + /** * @ngdoc provider * @name $controllerProvider @@ -8340,9 +8886,7 @@ var $controllerMinErr = minErr('$controller'); */ function $ControllerProvider() { var controllers = {}, - globals = false, - CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/; - + globals = false; /** * @ngdoc method @@ -8450,8 +8994,16 @@ function $ControllerProvider() { addIdentifier(locals, identifier, instance, constructor || expression.name); } - return extend(function() { - $injector.invoke(expression, instance, locals, constructor); + var instantiate; + return instantiate = extend(function() { + var result = $injector.invoke(expression, instance, locals, constructor); + if (result !== instance && (isObject(result) || isFunction(result))) { + instance = result; + if (identifier) { + // If result changed, re-assign controllerAs value to scope. + addIdentifier(locals, identifier, instance, constructor || expression.name); + } + } return instance; }, { instance: instance, @@ -8568,6 +9120,123 @@ var JSON_ENDS = { }; var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/; +function serializeValue(v) { + if (isObject(v)) { + return isDate(v) ? v.toISOString() : toJson(v); + } + return v; +} + + +function $HttpParamSerializerProvider() { + /** + * @ngdoc service + * @name $httpParamSerializer + * @description + * + * Default {@link $http `$http`} params serializer that converts objects to strings + * according to the following rules: + * + * * `{'foo': 'bar'}` results in `foo=bar` + * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object) + * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element) + * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object) + * + * Note that serializer will sort the request parameters alphabetically. + * */ + + this.$get = function() { + return function ngParamSerializer(params) { + if (!params) return ''; + var parts = []; + forEachSorted(params, function(value, key) { + if (value === null || isUndefined(value)) return; + if (isArray(value)) { + forEach(value, function(v, k) { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(v))); + }); + } else { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value))); + } + }); + + return parts.join('&'); + }; + }; +} + +function $HttpParamSerializerJQLikeProvider() { + /** + * @ngdoc service + * @name $httpParamSerializerJQLike + * @description + * + * Alternative {@link $http `$http`} params serializer that follows + * jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic. + * The serializer will also sort the params alphabetically. + * + * To use it for serializing `$http` request parameters, set it as the `paramSerializer` property: + * + * ```js + * $http({ + * url: myUrl, + * method: 'GET', + * params: myParams, + * paramSerializer: '$httpParamSerializerJQLike' + * }); + * ``` + * + * It is also possible to set it as the default `paramSerializer` in the + * {@link $httpProvider#defaults `$httpProvider`}. + * + * Additionally, you can inject the serializer and use it explicitly, for example to serialize + * form data for submission: + * + * ```js + * .controller(function($http, $httpParamSerializerJQLike) { + * //... + * + * $http({ + * url: myUrl, + * method: 'POST', + * data: $httpParamSerializerJQLike(myData), + * headers: { + * 'Content-Type': 'application/x-www-form-urlencoded' + * } + * }); + * + * }); + * ``` + * + * */ + this.$get = function() { + return function jQueryLikeParamSerializer(params) { + if (!params) return ''; + var parts = []; + serialize(params, '', true); + return parts.join('&'); + + function serialize(toSerialize, prefix, topLevel) { + if (toSerialize === null || isUndefined(toSerialize)) return; + if (isArray(toSerialize)) { + forEach(toSerialize, function(value) { + serialize(value, prefix + '[]'); + }); + } else if (isObject(toSerialize) && !isDate(toSerialize)) { + forEachSorted(toSerialize, function(value, key) { + serialize(value, prefix + + (topLevel ? '' : '[') + + key + + (topLevel ? '' : ']')); + }); + } else { + parts.push(encodeUriQuery(prefix) + '=' + encodeUriQuery(serializeValue(toSerialize))); + } + } + }; + }; +} + function defaultHttpResponseTransform(data, headers) { if (isString(data)) { // Strip json vulnerability protection prefix and trim whitespace @@ -8596,19 +9265,24 @@ function isJsonLike(str) { * @returns {Object} Parsed headers as key value object */ function parseHeaders(headers) { - var parsed = createMap(), key, val, i; - - if (!headers) return parsed; - - forEach(headers.split('\n'), function(line) { - i = line.indexOf(':'); - key = lowercase(trim(line.substr(0, i))); - val = trim(line.substr(i + 1)); + var parsed = createMap(), i; + function fillInParsed(key, val) { if (key) { parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } - }); + } + + if (isString(headers)) { + forEach(headers.split('\n'), function(line) { + i = line.indexOf(':'); + fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1))); + }); + } else if (isObject(headers)) { + forEach(headers, function(headerVal, headerKey) { + fillInParsed(lowercase(headerKey), trim(headerVal)); + }); + } return parsed; } @@ -8627,7 +9301,7 @@ function parseHeaders(headers) { * - if called with no arguments returns an object containing all headers. */ function headersGetter(headers) { - var headersObj = isObject(headers) ? headers : undefined; + var headersObj; return function(name) { if (!headersObj) headersObj = parseHeaders(headers); @@ -8657,8 +9331,9 @@ function headersGetter(headers) { * @returns {*} Transformed data. */ function transformData(data, headers, status, fns) { - if (isFunction(fns)) + if (isFunction(fns)) { return fns(data, headers, status); + } forEach(fns, function(fn) { data = fn(data, headers, status); @@ -8689,7 +9364,7 @@ function $HttpProvider() { * * - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`} * that will provide the cache for all requests who set their `cache` property to `true`. - * If you set the `default.cache = false` then only requests that specify their own custom + * If you set the `defaults.cache = false` then only requests that specify their own custom * cache object will be cached. See {@link $http#caching $http Caching} for more information. * * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token. @@ -8706,6 +9381,12 @@ function $HttpProvider() { * - **`defaults.headers.put`** * - **`defaults.headers.patch`** * + * + * - **`defaults.paramSerializer`** - `{string|function(Object):string}` - A function + * used to the prepare string representation of request parameters (specified as an object). + * If specified as string, it is interpreted as a function registered with the {@link auto.$injector $injector}. + * Defaults to {@link ng.$httpParamSerializer $httpParamSerializer}. + * **/ var defaults = this.defaults = { // transform incoming response data @@ -8727,7 +9408,9 @@ function $HttpProvider() { }, xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN' + xsrfHeaderName: 'X-XSRF-TOKEN', + + paramSerializer: '$httpParamSerializer' }; var useApplyAsync = false; @@ -8741,7 +9424,7 @@ function $HttpProvider() { * significant performance improvement for bigger applications that make many HTTP requests * concurrently (common during application bootstrap). * - * Defaults to false. If no value is specifed, returns the current configured value. + * Defaults to false. If no value is specified, returns the current configured value. * * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred * "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window @@ -8773,11 +9456,17 @@ function $HttpProvider() { **/ var interceptorFactories = this.interceptors = []; - this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector', - function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) { + this.$get = ['$httpBackend', '$$cookieReader', '$cacheFactory', '$rootScope', '$q', '$injector', + function($httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector) { var defaultCache = $cacheFactory('$http'); + /** + * Make sure that default param serializer is exposed as a function + */ + defaults.paramSerializer = isString(defaults.paramSerializer) ? + $injector.get(defaults.paramSerializer) : defaults.paramSerializer; + /** * Interceptors stored in reverse order. Inner interceptors before outer interceptors. * The reversal is needed so that we can build up the interception chain around the @@ -8906,7 +9595,7 @@ function $HttpProvider() { * To add or overwrite these defaults, simply add or remove a property from these configuration * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object * with the lowercased HTTP method name as the key, e.g. - * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }. + * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }`. * * The defaults can also be set at runtime via the `$http.defaults` object in the same * fashion. For example: @@ -8930,7 +9619,7 @@ function $HttpProvider() { * headers: { * 'Content-Type': undefined * }, - * data: { test: 'test' }, + * data: { test: 'test' } * } * * $http(req).success(function(){...}).error(function(){...}); @@ -9162,19 +9851,21 @@ function $HttpProvider() { * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time, * or the per-request config object. * + * In order to prevent collisions in environments where multiple Angular apps share the + * same domain or subdomain, we recommend that each application uses unique cookie name. + * * * @param {object} config Object describing the request to be made and how it should be * processed. The object has following properties: * * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc) * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested. - * - **params** – `{Object.}` – Map of strings or objects which will be turned - * to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be - * JSONified. + * - **params** – `{Object.}` – Map of strings or objects which will be serialized + * with the `paramSerializer` and appended as GET parameters. * - **data** – `{string|Object}` – Data to be sent as the request message data. * - **headers** – `{Object}` – Map of strings or functions which return strings representing * HTTP headers to send to the server. If the return value of a function is null, the - * header will not be sent. + * header will not be sent. Functions accept a config object as an argument. * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token. * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token. * - **transformRequest** – @@ -9188,7 +9879,14 @@ function $HttpProvider() { * transform function or an array of such functions. The transform function takes the http * response body, headers and status and returns its transformed (typically deserialized) version. * See {@link ng.$http#overriding-the-default-transformations-per-request - * Overriding the Default Transformations} + * Overriding the Default TransformationjqLiks} + * - **paramSerializer** - `{string|function(Object):string}` - A function used to + * prepare the string representation of request parameters (specified as an object). + * If specified as string, it is interpreted as function registered with the + * {@link $injector $injector}, which means you can create your own serializer + * by registering it as a {@link auto.$provide#service service}. + * The default serializer is the {@link $httpParamSerializer $httpParamSerializer}; + * alternatively, you can use the {@link $httpParamSerializerJQLike $httpParamSerializerJQLike} * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the * GET request, otherwise if a cache instance built with * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for @@ -9199,7 +9897,7 @@ function $HttpProvider() { * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials) * for more information. * - **responseType** - `{string}` - see - * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType). + * [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest-responsetype). * * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the * standard `then` method and two http specific methods: `success` and `error`. The `then` @@ -9224,11 +9922,11 @@ function $HttpProvider() {
- - +
+
@@ -11617,6 +12340,17 @@ function $LogProvider() { }]; } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + var $parseMinErr = minErr('$parse'); // Sandboxing Angular Expressions @@ -11699,57 +12433,8 @@ function ensureSafeFunction(obj, fullExpression) { } } -//Keyword constants -var CONSTANTS = createMap(); -forEach({ - 'null': function() { return null; }, - 'true': function() { return true; }, - 'false': function() { return false; }, - 'undefined': function() {} -}, function(constantGetter, name) { - constantGetter.constant = constantGetter.literal = constantGetter.sharedGetter = true; - CONSTANTS[name] = constantGetter; -}); - -//Not quite a constant, but can be lex/parsed the same -CONSTANTS['this'] = function(self) { return self; }; -CONSTANTS['this'].sharedGetter = true; - - -//Operators - will be wrapped by binaryFn/unaryFn/assignment/filter -var OPERATORS = extend(createMap(), { - '+':function(self, locals, a, b) { - a=a(self, locals); b=b(self, locals); - if (isDefined(a)) { - if (isDefined(b)) { - return a + b; - } - return a; - } - return isDefined(b) ? b : undefined;}, - '-':function(self, locals, a, b) { - a=a(self, locals); b=b(self, locals); - return (isDefined(a) ? a : 0) - (isDefined(b) ? b : 0); - }, - '*':function(self, locals, a, b) {return a(self, locals) * b(self, locals);}, - '/':function(self, locals, a, b) {return a(self, locals) / b(self, locals);}, - '%':function(self, locals, a, b) {return a(self, locals) % b(self, locals);}, - '===':function(self, locals, a, b) {return a(self, locals) === b(self, locals);}, - '!==':function(self, locals, a, b) {return a(self, locals) !== b(self, locals);}, - '==':function(self, locals, a, b) {return a(self, locals) == b(self, locals);}, - '!=':function(self, locals, a, b) {return a(self, locals) != b(self, locals);}, - '<':function(self, locals, a, b) {return a(self, locals) < b(self, locals);}, - '>':function(self, locals, a, b) {return a(self, locals) > b(self, locals);}, - '<=':function(self, locals, a, b) {return a(self, locals) <= b(self, locals);}, - '>=':function(self, locals, a, b) {return a(self, locals) >= b(self, locals);}, - '&&':function(self, locals, a, b) {return a(self, locals) && b(self, locals);}, - '||':function(self, locals, a, b) {return a(self, locals) || b(self, locals);}, - '!':function(self, locals, a) {return !a(self, locals);}, - - //Tokenized as operators but parsed as assignment/filters - '=':true, - '|':true -}); +var OPERATORS = createMap(); +forEach('+ - * / % === !== == != < > <= >= && || ! = |'.split(' '), function(operator) { OPERATORS[operator] = true; }); var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'}; @@ -11901,8 +12586,9 @@ Lexer.prototype = { if (escape) { if (ch === 'u') { var hex = this.text.substring(this.index + 1, this.index + 5); - if (!hex.match(/[\da-f]{4}/i)) + if (!hex.match(/[\da-f]{4}/i)) { this.throwError('Invalid unicode escape [\\u' + hex + ']'); + } this.index += 4; string += String.fromCharCode(parseInt(hex, 16)); } else { @@ -11930,295 +12616,106 @@ Lexer.prototype = { } }; - -function isConstant(exp) { - return exp.constant; -} - -/** - * @constructor - */ -var Parser = function(lexer, $filter, options) { +var AST = function(lexer, options) { this.lexer = lexer; - this.$filter = $filter; this.options = options; }; -Parser.ZERO = extend(function() { - return 0; -}, { - sharedGetter: true, - constant: true -}); - -Parser.prototype = { - constructor: Parser, - - parse: function(text) { +AST.Program = 'Program'; +AST.ExpressionStatement = 'ExpressionStatement'; +AST.AssignmentExpression = 'AssignmentExpression'; +AST.ConditionalExpression = 'ConditionalExpression'; +AST.LogicalExpression = 'LogicalExpression'; +AST.BinaryExpression = 'BinaryExpression'; +AST.UnaryExpression = 'UnaryExpression'; +AST.CallExpression = 'CallExpression'; +AST.MemberExpression = 'MemberExpression'; +AST.Identifier = 'Identifier'; +AST.Literal = 'Literal'; +AST.ArrayExpression = 'ArrayExpression'; +AST.Property = 'Property'; +AST.ObjectExpression = 'ObjectExpression'; +AST.ThisExpression = 'ThisExpression'; + +// Internal use only +AST.NGValueParameter = 'NGValueParameter'; + +AST.prototype = { + ast: function(text) { this.text = text; this.tokens = this.lexer.lex(text); - var value = this.statements(); + var value = this.program(); if (this.tokens.length !== 0) { this.throwError('is an unexpected token', this.tokens[0]); } - value.literal = !!value.literal; - value.constant = !!value.constant; - return value; }, - primary: function() { - var primary; - if (this.expect('(')) { - primary = this.filterChain(); - this.consume(')'); - } else if (this.expect('[')) { - primary = this.arrayDeclaration(); - } else if (this.expect('{')) { - primary = this.object(); - } else if (this.peek().identifier && this.peek().text in CONSTANTS) { - primary = CONSTANTS[this.consume().text]; - } else if (this.peek().identifier) { - primary = this.identifier(); - } else if (this.peek().constant) { - primary = this.constant(); - } else { - this.throwError('not a primary expression', this.peek()); + program: function() { + var body = []; + while (true) { + if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']')) + body.push(this.expressionStatement()); + if (!this.expect(';')) { + return { type: AST.Program, body: body}; + } } + }, - var next, context; - while ((next = this.expect('(', '[', '.'))) { - if (next.text === '(') { - primary = this.functionCall(primary, context); - context = null; - } else if (next.text === '[') { - context = primary; - primary = this.objectIndex(primary); - } else if (next.text === '.') { - context = primary; - primary = this.fieldAccess(primary); - } else { - this.throwError('IMPOSSIBLE'); - } + expressionStatement: function() { + return { type: AST.ExpressionStatement, expression: this.filterChain() }; + }, + + filterChain: function() { + var left = this.expression(); + var token; + while ((token = this.expect('|'))) { + left = this.filter(left); } - return primary; + return left; }, - throwError: function(msg, token) { - throw $parseMinErr('syntax', - 'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].', - token.text, msg, (token.index + 1), this.text, this.text.substring(token.index)); + expression: function() { + return this.assignment(); }, - peekToken: function() { - if (this.tokens.length === 0) - throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); - return this.tokens[0]; + assignment: function() { + var result = this.ternary(); + if (this.expect('=')) { + result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: '='}; + } + return result; }, - peek: function(e1, e2, e3, e4) { - return this.peekAhead(0, e1, e2, e3, e4); - }, - peekAhead: function(i, e1, e2, e3, e4) { - if (this.tokens.length > i) { - var token = this.tokens[i]; - var t = token.text; - if (t === e1 || t === e2 || t === e3 || t === e4 || - (!e1 && !e2 && !e3 && !e4)) { - return token; - } - } - return false; - }, - - expect: function(e1, e2, e3, e4) { - var token = this.peek(e1, e2, e3, e4); - if (token) { - this.tokens.shift(); - return token; - } - return false; - }, - - consume: function(e1) { - if (this.tokens.length === 0) { - throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); - } - - var token = this.expect(e1); - if (!token) { - this.throwError('is unexpected, expecting [' + e1 + ']', this.peek()); - } - return token; - }, - - unaryFn: function(op, right) { - var fn = OPERATORS[op]; - return extend(function $parseUnaryFn(self, locals) { - return fn(self, locals, right); - }, { - constant:right.constant, - inputs: [right] - }); - }, - - binaryFn: function(left, op, right, isBranching) { - var fn = OPERATORS[op]; - return extend(function $parseBinaryFn(self, locals) { - return fn(self, locals, left, right); - }, { - constant: left.constant && right.constant, - inputs: !isBranching && [left, right] - }); - }, - - identifier: function() { - var id = this.consume().text; - - //Continue reading each `.identifier` unless it is a method invocation - while (this.peek('.') && this.peekAhead(1).identifier && !this.peekAhead(2, '(')) { - id += this.consume().text + this.consume().text; - } - - return getterFn(id, this.options, this.text); - }, - - constant: function() { - var value = this.consume().value; - - return extend(function $parseConstant() { - return value; - }, { - constant: true, - literal: true - }); - }, - - statements: function() { - var statements = []; - while (true) { - if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']')) - statements.push(this.filterChain()); - if (!this.expect(';')) { - // optimize for the common case where there is only one statement. - // TODO(size): maybe we should not support multiple statements? - return (statements.length === 1) - ? statements[0] - : function $parseStatements(self, locals) { - var value; - for (var i = 0, ii = statements.length; i < ii; i++) { - value = statements[i](self, locals); - } - return value; - }; - } - } - }, - - filterChain: function() { - var left = this.expression(); - var token; - while ((token = this.expect('|'))) { - left = this.filter(left); - } - return left; - }, - - filter: function(inputFn) { - var fn = this.$filter(this.consume().text); - var argsFn; - var args; - - if (this.peek(':')) { - argsFn = []; - args = []; // we can safely reuse the array - while (this.expect(':')) { - argsFn.push(this.expression()); - } - } - - var inputs = [inputFn].concat(argsFn || []); - - return extend(function $parseFilter(self, locals) { - var input = inputFn(self, locals); - if (args) { - args[0] = input; - - var i = argsFn.length; - while (i--) { - args[i + 1] = argsFn[i](self, locals); - } - - return fn.apply(undefined, args); - } - - return fn(input); - }, { - constant: !fn.$stateful && inputs.every(isConstant), - inputs: !fn.$stateful && inputs - }); - }, - - expression: function() { - return this.assignment(); - }, - - assignment: function() { - var left = this.ternary(); - var right; - var token; - if ((token = this.expect('='))) { - if (!left.assign) { - this.throwError('implies assignment but [' + - this.text.substring(0, token.index) + '] can not be assigned to', token); - } - right = this.ternary(); - return extend(function $parseAssignment(scope, locals) { - return left.assign(scope, right(scope, locals), locals); - }, { - inputs: [left, right] - }); - } - return left; - }, - - ternary: function() { - var left = this.logicalOR(); - var middle; - var token; - if ((token = this.expect('?'))) { - middle = this.assignment(); - if (this.consume(':')) { - var right = this.assignment(); - - return extend(function $parseTernary(self, locals) { - return left(self, locals) ? middle(self, locals) : right(self, locals); - }, { - constant: left.constant && middle.constant && right.constant - }); - } - } - - return left; + ternary: function() { + var test = this.logicalOR(); + var alternate; + var consequent; + if (this.expect('?')) { + alternate = this.expression(); + if (this.consume(':')) { + consequent = this.expression(); + return { type: AST.ConditionalExpression, test: test, alternate: alternate, consequent: consequent}; + } + } + return test; }, logicalOR: function() { var left = this.logicalAND(); - var token; - while ((token = this.expect('||'))) { - left = this.binaryFn(left, token.text, this.logicalAND(), true); + while (this.expect('||')) { + left = { type: AST.LogicalExpression, operator: '||', left: left, right: this.logicalAND() }; } return left; }, logicalAND: function() { var left = this.equality(); - var token; - while ((token = this.expect('&&'))) { - left = this.binaryFn(left, token.text, this.equality(), true); + while (this.expect('&&')) { + left = { type: AST.LogicalExpression, operator: '&&', left: left, right: this.equality()}; } return left; }, @@ -12227,7 +12724,7 @@ Parser.prototype = { var left = this.relational(); var token; while ((token = this.expect('==','!=','===','!=='))) { - left = this.binaryFn(left, token.text, this.relational()); + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.relational() }; } return left; }, @@ -12236,7 +12733,7 @@ Parser.prototype = { var left = this.additive(); var token; while ((token = this.expect('<', '>', '<=', '>='))) { - left = this.binaryFn(left, token.text, this.additive()); + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.additive() }; } return left; }, @@ -12245,7 +12742,7 @@ Parser.prototype = { var left = this.multiplicative(); var token; while ((token = this.expect('+','-'))) { - left = this.binaryFn(left, token.text, this.multiplicative()); + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.multiplicative() }; } return left; }, @@ -12254,1332 +12751,2283 @@ Parser.prototype = { var left = this.unary(); var token; while ((token = this.expect('*','/','%'))) { - left = this.binaryFn(left, token.text, this.unary()); + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.unary() }; } return left; }, unary: function() { var token; - if (this.expect('+')) { - return this.primary(); - } else if ((token = this.expect('-'))) { - return this.binaryFn(Parser.ZERO, token.text, this.unary()); - } else if ((token = this.expect('!'))) { - return this.unaryFn(token.text, this.unary()); + if ((token = this.expect('+', '-', '!'))) { + return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() }; } else { return this.primary(); } }, - fieldAccess: function(object) { - var getter = this.identifier(); + primary: function() { + var primary; + if (this.expect('(')) { + primary = this.filterChain(); + this.consume(')'); + } else if (this.expect('[')) { + primary = this.arrayDeclaration(); + } else if (this.expect('{')) { + primary = this.object(); + } else if (this.constants.hasOwnProperty(this.peek().text)) { + primary = copy(this.constants[this.consume().text]); + } else if (this.peek().identifier) { + primary = this.identifier(); + } else if (this.peek().constant) { + primary = this.constant(); + } else { + this.throwError('not a primary expression', this.peek()); + } - return extend(function $parseFieldAccess(scope, locals, self) { - var o = self || object(scope, locals); - return (o == null) ? undefined : getter(o); - }, { - assign: function(scope, value, locals) { - var o = object(scope, locals); - if (!o) object.assign(scope, o = {}, locals); - return getter.assign(o, value); + var next; + while ((next = this.expect('(', '[', '.'))) { + if (next.text === '(') { + primary = {type: AST.CallExpression, callee: primary, arguments: this.parseArguments() }; + this.consume(')'); + } else if (next.text === '[') { + primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true }; + this.consume(']'); + } else if (next.text === '.') { + primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false }; + } else { + this.throwError('IMPOSSIBLE'); } - }); + } + return primary; }, - objectIndex: function(obj) { - var expression = this.text; + filter: function(baseExpression) { + var args = [baseExpression]; + var result = {type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true}; - var indexFn = this.expression(); - this.consume(']'); + while (this.expect(':')) { + args.push(this.expression()); + } - return extend(function $parseObjectIndex(self, locals) { - var o = obj(self, locals), - i = indexFn(self, locals), - v; - - ensureSafeMemberName(i, expression); - if (!o) return undefined; - v = ensureSafeObject(o[i], expression); - return v; - }, { - assign: function(self, value, locals) { - var key = ensureSafeMemberName(indexFn(self, locals), expression); - // prevent overwriting of Function.constructor which would break ensureSafeObject check - var o = ensureSafeObject(obj(self, locals), expression); - if (!o) obj.assign(self, o = {}, locals); - return o[key] = value; - } - }); + return result; }, - functionCall: function(fnGetter, contextGetter) { - var argsFn = []; + parseArguments: function() { + var args = []; if (this.peekToken().text !== ')') { do { - argsFn.push(this.expression()); + args.push(this.expression()); } while (this.expect(',')); } - this.consume(')'); - - var expressionText = this.text; - // we can safely reuse the array across invocations - var args = argsFn.length ? [] : null; - - return function $parseFunctionCall(scope, locals) { - var context = contextGetter ? contextGetter(scope, locals) : isDefined(contextGetter) ? undefined : scope; - var fn = fnGetter(scope, locals, context) || noop; - - if (args) { - var i = argsFn.length; - while (i--) { - args[i] = ensureSafeObject(argsFn[i](scope, locals), expressionText); - } - } - - ensureSafeObject(context, expressionText); - ensureSafeFunction(fn, expressionText); - - // IE doesn't have apply for some native functions - var v = fn.apply - ? fn.apply(context, args) - : fn(args[0], args[1], args[2], args[3], args[4]); + return args; + }, - if (args) { - // Free-up the memory (arguments of the last function call). - args.length = 0; - } + identifier: function() { + var token = this.consume(); + if (!token.identifier) { + this.throwError('is not a valid identifier', token); + } + return { type: AST.Identifier, name: token.text }; + }, - return ensureSafeObject(v, expressionText); - }; + constant: function() { + // TODO check that it is a constant + return { type: AST.Literal, value: this.consume().value }; }, - // This is used with json array declaration arrayDeclaration: function() { - var elementFns = []; + var elements = []; if (this.peekToken().text !== ']') { do { if (this.peek(']')) { // Support trailing commas per ES5.1. break; } - elementFns.push(this.expression()); + elements.push(this.expression()); } while (this.expect(',')); } this.consume(']'); - return extend(function $parseArrayLiteral(self, locals) { - var array = []; - for (var i = 0, ii = elementFns.length; i < ii; i++) { - array.push(elementFns[i](self, locals)); - } - return array; - }, { - literal: true, - constant: elementFns.every(isConstant), - inputs: elementFns - }); + return { type: AST.ArrayExpression, elements: elements }; }, object: function() { - var keys = [], valueFns = []; + var properties = [], property; if (this.peekToken().text !== '}') { do { if (this.peek('}')) { // Support trailing commas per ES5.1. break; } - var token = this.consume(); - if (token.constant) { - keys.push(token.value); - } else if (token.identifier) { - keys.push(token.text); + property = {type: AST.Property, kind: 'init'}; + if (this.peek().constant) { + property.key = this.constant(); + } else if (this.peek().identifier) { + property.key = this.identifier(); } else { - this.throwError("invalid key", token); + this.throwError("invalid key", this.peek()); } this.consume(':'); - valueFns.push(this.expression()); + property.value = this.expression(); + properties.push(property); } while (this.expect(',')); } this.consume('}'); - return extend(function $parseObjectLiteral(self, locals) { - var object = {}; - for (var i = 0, ii = valueFns.length; i < ii; i++) { - object[keys[i]] = valueFns[i](self, locals); - } - return object; - }, { - literal: true, - constant: valueFns.every(isConstant), - inputs: valueFns - }); - } -}; + return {type: AST.ObjectExpression, properties: properties }; + }, + throwError: function(msg, token) { + throw $parseMinErr('syntax', + 'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].', + token.text, msg, (token.index + 1), this.text, this.text.substring(token.index)); + }, -////////////////////////////////////////////////// -// Parser helper functions -////////////////////////////////////////////////// + consume: function(e1) { + if (this.tokens.length === 0) { + throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); + } -function setter(obj, locals, path, setValue, fullExp) { - ensureSafeObject(obj, fullExp); - ensureSafeObject(locals, fullExp); + var token = this.expect(e1); + if (!token) { + this.throwError('is unexpected, expecting [' + e1 + ']', this.peek()); + } + return token; + }, - var element = path.split('.'), key; - for (var i = 0; element.length > 1; i++) { - key = ensureSafeMemberName(element.shift(), fullExp); - var propertyObj = (i === 0 && locals && locals[key]) || obj[key]; - if (!propertyObj) { - propertyObj = {}; - obj[key] = propertyObj; + peekToken: function() { + if (this.tokens.length === 0) { + throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); } - obj = ensureSafeObject(propertyObj, fullExp); - } - key = ensureSafeMemberName(element.shift(), fullExp); - ensureSafeObject(obj[key], fullExp); - obj[key] = setValue; - return setValue; -} + return this.tokens[0]; + }, -var getterFnCacheDefault = createMap(); -var getterFnCacheExpensive = createMap(); + peek: function(e1, e2, e3, e4) { + return this.peekAhead(0, e1, e2, e3, e4); + }, -function isPossiblyDangerousMemberName(name) { - return name == 'constructor'; -} + peekAhead: function(i, e1, e2, e3, e4) { + if (this.tokens.length > i) { + var token = this.tokens[i]; + var t = token.text; + if (t === e1 || t === e2 || t === e3 || t === e4 || + (!e1 && !e2 && !e3 && !e4)) { + return token; + } + } + return false; + }, -/** - * Implementation of the "Black Hole" variant from: - * - http://jsperf.com/angularjs-parse-getter/4 - * - http://jsperf.com/path-evaluation-simplified/7 - */ -function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, expensiveChecks) { - ensureSafeMemberName(key0, fullExp); - ensureSafeMemberName(key1, fullExp); - ensureSafeMemberName(key2, fullExp); - ensureSafeMemberName(key3, fullExp); - ensureSafeMemberName(key4, fullExp); - var eso = function(o) { - return ensureSafeObject(o, fullExp); - }; - var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity; - var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity; - var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity; - var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity; - var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity; + expect: function(e1, e2, e3, e4) { + var token = this.peek(e1, e2, e3, e4); + if (token) { + this.tokens.shift(); + return token; + } + return false; + }, - return function cspSafeGetter(scope, locals) { - var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope; - if (pathVal == null) return pathVal; - pathVal = eso0(pathVal[key0]); + /* `undefined` is not a constant, it is an identifier, + * but using it as an identifier is not supported + */ + constants: { + 'true': { type: AST.Literal, value: true }, + 'false': { type: AST.Literal, value: false }, + 'null': { type: AST.Literal, value: null }, + 'undefined': {type: AST.Literal, value: undefined }, + 'this': {type: AST.ThisExpression } + } +}; - if (!key1) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso1(pathVal[key1]); +function ifDefined(v, d) { + return typeof v !== 'undefined' ? v : d; +} - if (!key2) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso2(pathVal[key2]); +function plusFn(l, r) { + if (typeof l === 'undefined') return r; + if (typeof r === 'undefined') return l; + return l + r; +} - if (!key3) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso3(pathVal[key3]); +function isStateless($filter, filterName) { + var fn = $filter(filterName); + return !fn.$stateful; +} - if (!key4) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso4(pathVal[key4]); +function findConstantAndWatchExpressions(ast, $filter) { + var allConstants; + var argsToWatch; + switch (ast.type) { + case AST.Program: + allConstants = true; + forEach(ast.body, function(expr) { + findConstantAndWatchExpressions(expr.expression, $filter); + allConstants = allConstants && expr.expression.constant; + }); + ast.constant = allConstants; + break; + case AST.Literal: + ast.constant = true; + ast.toWatch = []; + break; + case AST.UnaryExpression: + findConstantAndWatchExpressions(ast.argument, $filter); + ast.constant = ast.argument.constant; + ast.toWatch = ast.argument.toWatch; + break; + case AST.BinaryExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch); + break; + case AST.LogicalExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = ast.constant ? [] : [ast]; + break; + case AST.ConditionalExpression: + findConstantAndWatchExpressions(ast.test, $filter); + findConstantAndWatchExpressions(ast.alternate, $filter); + findConstantAndWatchExpressions(ast.consequent, $filter); + ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant; + ast.toWatch = ast.constant ? [] : [ast]; + break; + case AST.Identifier: + ast.constant = false; + ast.toWatch = [ast]; + break; + case AST.MemberExpression: + findConstantAndWatchExpressions(ast.object, $filter); + if (ast.computed) { + findConstantAndWatchExpressions(ast.property, $filter); + } + ast.constant = ast.object.constant && (!ast.computed || ast.property.constant); + ast.toWatch = [ast]; + break; + case AST.CallExpression: + allConstants = ast.filter ? isStateless($filter, ast.callee.name) : false; + argsToWatch = []; + forEach(ast.arguments, function(expr) { + findConstantAndWatchExpressions(expr, $filter); + allConstants = allConstants && expr.constant; + if (!expr.constant) { + argsToWatch.push.apply(argsToWatch, expr.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = ast.filter && isStateless($filter, ast.callee.name) ? argsToWatch : [ast]; + break; + case AST.AssignmentExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = [ast]; + break; + case AST.ArrayExpression: + allConstants = true; + argsToWatch = []; + forEach(ast.elements, function(expr) { + findConstantAndWatchExpressions(expr, $filter); + allConstants = allConstants && expr.constant; + if (!expr.constant) { + argsToWatch.push.apply(argsToWatch, expr.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = argsToWatch; + break; + case AST.ObjectExpression: + allConstants = true; + argsToWatch = []; + forEach(ast.properties, function(property) { + findConstantAndWatchExpressions(property.value, $filter); + allConstants = allConstants && property.value.constant; + if (!property.value.constant) { + argsToWatch.push.apply(argsToWatch, property.value.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = argsToWatch; + break; + case AST.ThisExpression: + ast.constant = false; + ast.toWatch = []; + break; + } +} - return pathVal; - }; +function getInputs(body) { + if (body.length != 1) return; + var lastExpression = body[0].expression; + var candidate = lastExpression.toWatch; + if (candidate.length !== 1) return candidate; + return candidate[0] !== lastExpression ? candidate : undefined; } -function getterFnWithEnsureSafeObject(fn, fullExpression) { - return function(s, l) { - return fn(s, l, ensureSafeObject, fullExpression); - }; +function isAssignable(ast) { + return ast.type === AST.Identifier || ast.type === AST.MemberExpression; } -function getterFn(path, options, fullExp) { - var expensiveChecks = options.expensiveChecks; - var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault); - var fn = getterFnCache[path]; - if (fn) return fn; +function assignableAST(ast) { + if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) { + return {type: AST.AssignmentExpression, left: ast.body[0].expression, right: {type: AST.NGValueParameter}, operator: '='}; + } +} +function isLiteral(ast) { + return ast.body.length === 0 || + ast.body.length === 1 && ( + ast.body[0].expression.type === AST.Literal || + ast.body[0].expression.type === AST.ArrayExpression || + ast.body[0].expression.type === AST.ObjectExpression); +} - var pathKeys = path.split('.'), - pathKeysLength = pathKeys.length; +function isConstant(ast) { + return ast.constant; +} - // http://jsperf.com/angularjs-parse-getter/6 - if (options.csp) { - if (pathKeysLength < 6) { - fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp, expensiveChecks); - } else { - fn = function cspSafeGetter(scope, locals) { - var i = 0, val; - do { - val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++], - pathKeys[i++], fullExp, expensiveChecks)(scope, locals); +function ASTCompiler(astBuilder, $filter) { + this.astBuilder = astBuilder; + this.$filter = $filter; +} - locals = undefined; // clear after first iteration - scope = val; - } while (i < pathKeysLength); - return val; - }; - } - } else { - var code = ''; - if (expensiveChecks) { - code += 's = eso(s, fe);\nl = eso(l, fe);\n'; - } - var needsEnsureSafeObject = expensiveChecks; - forEach(pathKeys, function(key, index) { - ensureSafeMemberName(key, fullExp); - var lookupJs = (index - // we simply dereference 's' on any .dot notation - ? 's' - // but if we are first then we check locals first, and if so read it first - : '((l&&l.hasOwnProperty("' + key + '"))?l:s)') + '.' + key; - if (expensiveChecks || isPossiblyDangerousMemberName(key)) { - lookupJs = 'eso(' + lookupJs + ', fe)'; - needsEnsureSafeObject = true; - } - code += 'if(s == null) return undefined;\n' + - 's=' + lookupJs + ';\n'; +ASTCompiler.prototype = { + compile: function(expression, expensiveChecks) { + var self = this; + var ast = this.astBuilder.ast(expression); + this.state = { + nextId: 0, + filters: {}, + expensiveChecks: expensiveChecks, + fn: {vars: [], body: [], own: {}}, + assign: {vars: [], body: [], own: {}}, + inputs: [] + }; + findConstantAndWatchExpressions(ast, self.$filter); + var extra = ''; + var assignable; + this.stage = 'assign'; + if ((assignable = assignableAST(ast))) { + this.state.computing = 'assign'; + var result = this.nextId(); + this.recurse(assignable, result); + extra = 'fn.assign=' + this.generateFunction('assign', 's,v,l'); + } + var toWatch = getInputs(ast.body); + self.stage = 'inputs'; + forEach(toWatch, function(watch, key) { + var fnKey = 'fn' + key; + self.state[fnKey] = {vars: [], body: [], own: {}}; + self.state.computing = fnKey; + var intoId = self.nextId(); + self.recurse(watch, intoId); + self.return_(intoId); + self.state.inputs.push(fnKey); + watch.watchId = key; }); - code += 'return s;'; + this.state.computing = 'fn'; + this.stage = 'main'; + this.recurse(ast); + var fnString = + // The build and minification steps remove the string "use strict" from the code, but this is done using a regex. + // This is a workaround for this until we do a better job at only removing the prefix only when we should. + '"' + this.USE + ' ' + this.STRICT + '";\n' + + this.filterPrefix() + + 'var fn=' + this.generateFunction('fn', 's,l,a,i') + + extra + + this.watchFns() + + 'return fn;'; /* jshint -W054 */ - var evaledFnGetter = new Function('s', 'l', 'eso', 'fe', code); // s=scope, l=locals, eso=ensureSafeObject + var fn = (new Function('$filter', + 'ensureSafeMemberName', + 'ensureSafeObject', + 'ensureSafeFunction', + 'ifDefined', + 'plus', + 'text', + fnString))( + this.$filter, + ensureSafeMemberName, + ensureSafeObject, + ensureSafeFunction, + ifDefined, + plusFn, + expression); /* jshint +W054 */ - evaledFnGetter.toString = valueFn(code); - if (needsEnsureSafeObject) { - evaledFnGetter = getterFnWithEnsureSafeObject(evaledFnGetter, fullExp); - } - fn = evaledFnGetter; - } + this.state = this.stage = undefined; + fn.literal = isLiteral(ast); + fn.constant = isConstant(ast); + return fn; + }, - fn.sharedGetter = true; - fn.assign = function(self, value, locals) { - return setter(self, locals, path, value, path); - }; - getterFnCache[path] = fn; - return fn; -} + USE: 'use', -var objectValueOf = Object.prototype.valueOf; + STRICT: 'strict', -function getValueOf(value) { - return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value); -} + watchFns: function() { + var result = []; + var fns = this.state.inputs; + var self = this; + forEach(fns, function(name) { + result.push('var ' + name + '=' + self.generateFunction(name, 's')); + }); + if (fns.length) { + result.push('fn.inputs=[' + fns.join(',') + '];'); + } + return result.join(''); + }, -/////////////////////////////////// + generateFunction: function(name, params) { + return 'function(' + params + '){' + + this.varsPrefix(name) + + this.body(name) + + '};'; + }, -/** - * @ngdoc service - * @name $parse - * @kind function - * - * @description - * - * Converts Angular {@link guide/expression expression} into a function. - * - * ```js - * var getter = $parse('user.name'); - * var setter = getter.assign; - * var context = {user:{name:'angular'}}; - * var locals = {user:{name:'local'}}; - * - * expect(getter(context)).toEqual('angular'); - * setter(context, 'newValue'); - * expect(context.user.name).toEqual('newValue'); - * expect(getter(context, locals)).toEqual('local'); - * ``` - * - * - * @param {string} expression String expression to compile. - * @returns {function(context, locals)} a function which represents the compiled expression: - * - * * `context` – `{object}` – an object against which any expressions embedded in the strings - * are evaluated against (typically a scope object). - * * `locals` – `{object=}` – local variables context object, useful for overriding values in - * `context`. - * - * The returned function also has the following properties: - * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript - * literal. - * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript - * constant literals. - * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be - * set to a function to change its value on the given context. - * - */ + filterPrefix: function() { + var parts = []; + var self = this; + forEach(this.state.filters, function(id, filter) { + parts.push(id + '=$filter(' + self.escape(filter) + ')'); + }); + if (parts.length) return 'var ' + parts.join(',') + ';'; + return ''; + }, + varsPrefix: function(section) { + return this.state[section].vars.length ? 'var ' + this.state[section].vars.join(',') + ';' : ''; + }, -/** - * @ngdoc provider - * @name $parseProvider - * - * @description - * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse} - * service. - */ -function $ParseProvider() { - var cacheDefault = createMap(); - var cacheExpensive = createMap(); + body: function(section) { + return this.state[section].body.join(''); + }, + recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) { + var left, right, self = this, args, expression; + recursionFn = recursionFn || noop; + if (!skipWatchIdCheck && isDefined(ast.watchId)) { + intoId = intoId || this.nextId(); + this.if_('i', + this.lazyAssign(intoId, this.computedMember('i', ast.watchId)), + this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true) + ); + return; + } + switch (ast.type) { + case AST.Program: + forEach(ast.body, function(expression, pos) { + self.recurse(expression.expression, undefined, undefined, function(expr) { right = expr; }); + if (pos !== ast.body.length - 1) { + self.current().body.push(right, ';'); + } else { + self.return_(right); + } + }); + break; + case AST.Literal: + expression = this.escape(ast.value); + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.UnaryExpression: + this.recurse(ast.argument, undefined, undefined, function(expr) { right = expr; }); + expression = ast.operator + '(' + this.ifDefined(right, 0) + ')'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.BinaryExpression: + this.recurse(ast.left, undefined, undefined, function(expr) { left = expr; }); + this.recurse(ast.right, undefined, undefined, function(expr) { right = expr; }); + if (ast.operator === '+') { + expression = this.plus(left, right); + } else if (ast.operator === '-') { + expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0); + } else { + expression = '(' + left + ')' + ast.operator + '(' + right + ')'; + } + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.LogicalExpression: + intoId = intoId || this.nextId(); + self.recurse(ast.left, intoId); + self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId)); + recursionFn(intoId); + break; + case AST.ConditionalExpression: + intoId = intoId || this.nextId(); + self.recurse(ast.test, intoId); + self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId)); + recursionFn(intoId); + break; + case AST.Identifier: + intoId = intoId || this.nextId(); + if (nameId) { + nameId.context = self.stage === 'inputs' ? 's' : this.assign(this.nextId(), this.getHasOwnProperty('l', ast.name) + '?l:s'); + nameId.computed = false; + nameId.name = ast.name; + } + ensureSafeMemberName(ast.name); + self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)), + function() { + self.if_(self.stage === 'inputs' || 's', function() { + if (create && create !== 1) { + self.if_( + self.not(self.nonComputedMember('s', ast.name)), + self.lazyAssign(self.nonComputedMember('s', ast.name), '{}')); + } + self.assign(intoId, self.nonComputedMember('s', ast.name)); + }); + }, intoId && self.lazyAssign(intoId, self.nonComputedMember('l', ast.name)) + ); + if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.name)) { + self.addEnsureSafeObject(intoId); + } + recursionFn(intoId); + break; + case AST.MemberExpression: + left = nameId && (nameId.context = this.nextId()) || this.nextId(); + intoId = intoId || this.nextId(); + self.recurse(ast.object, left, undefined, function() { + self.if_(self.notNull(left), function() { + if (ast.computed) { + right = self.nextId(); + self.recurse(ast.property, right); + self.addEnsureSafeMemberName(right); + if (create && create !== 1) { + self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}')); + } + expression = self.ensureSafeObject(self.computedMember(left, right)); + self.assign(intoId, expression); + if (nameId) { + nameId.computed = true; + nameId.name = right; + } + } else { + ensureSafeMemberName(ast.property.name); + if (create && create !== 1) { + self.if_(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}')); + } + expression = self.nonComputedMember(left, ast.property.name); + if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.property.name)) { + expression = self.ensureSafeObject(expression); + } + self.assign(intoId, expression); + if (nameId) { + nameId.computed = false; + nameId.name = ast.property.name; + } + } + }, function() { + self.assign(intoId, 'undefined'); + }); + recursionFn(intoId); + }, !!create); + break; + case AST.CallExpression: + intoId = intoId || this.nextId(); + if (ast.filter) { + right = self.filter(ast.callee.name); + args = []; + forEach(ast.arguments, function(expr) { + var argument = self.nextId(); + self.recurse(expr, argument); + args.push(argument); + }); + expression = right + '(' + args.join(',') + ')'; + self.assign(intoId, expression); + recursionFn(intoId); + } else { + right = self.nextId(); + left = {}; + args = []; + self.recurse(ast.callee, right, left, function() { + self.if_(self.notNull(right), function() { + self.addEnsureSafeFunction(right); + forEach(ast.arguments, function(expr) { + self.recurse(expr, self.nextId(), undefined, function(argument) { + args.push(self.ensureSafeObject(argument)); + }); + }); + if (left.name) { + if (!self.state.expensiveChecks) { + self.addEnsureSafeObject(left.context); + } + expression = self.member(left.context, left.name, left.computed) + '(' + args.join(',') + ')'; + } else { + expression = right + '(' + args.join(',') + ')'; + } + expression = self.ensureSafeObject(expression); + self.assign(intoId, expression); + }, function() { + self.assign(intoId, 'undefined'); + }); + recursionFn(intoId); + }); + } + break; + case AST.AssignmentExpression: + right = this.nextId(); + left = {}; + if (!isAssignable(ast.left)) { + throw $parseMinErr('lval', 'Trying to assing a value to a non l-value'); + } + this.recurse(ast.left, undefined, left, function() { + self.if_(self.notNull(left.context), function() { + self.recurse(ast.right, right); + self.addEnsureSafeObject(self.member(left.context, left.name, left.computed)); + expression = self.member(left.context, left.name, left.computed) + ast.operator + right; + self.assign(intoId, expression); + recursionFn(intoId || expression); + }); + }, 1); + break; + case AST.ArrayExpression: + args = []; + forEach(ast.elements, function(expr) { + self.recurse(expr, self.nextId(), undefined, function(argument) { + args.push(argument); + }); + }); + expression = '[' + args.join(',') + ']'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.ObjectExpression: + args = []; + forEach(ast.properties, function(property) { + self.recurse(property.value, self.nextId(), undefined, function(expr) { + args.push(self.escape( + property.key.type === AST.Identifier ? property.key.name : + ('' + property.key.value)) + + ':' + expr); + }); + }); + expression = '{' + args.join(',') + '}'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.ThisExpression: + this.assign(intoId, 's'); + recursionFn('s'); + break; + case AST.NGValueParameter: + this.assign(intoId, 'v'); + recursionFn('v'); + break; + } + }, + getHasOwnProperty: function(element, property) { + var key = element + '.' + property; + var own = this.current().own; + if (!own.hasOwnProperty(key)) { + own[key] = this.nextId(false, element + '&&(' + this.escape(property) + ' in ' + element + ')'); + } + return own[key]; + }, - this.$get = ['$filter', '$sniffer', function($filter, $sniffer) { - var $parseOptions = { - csp: $sniffer.csp, - expensiveChecks: false - }, - $parseOptionsExpensive = { - csp: $sniffer.csp, - expensiveChecks: true - }; + assign: function(id, value) { + if (!id) return; + this.current().body.push(id, '=', value, ';'); + return id; + }, - function wrapSharedExpression(exp) { - var wrapped = exp; + filter: function(filterName) { + if (!this.state.filters.hasOwnProperty(filterName)) { + this.state.filters[filterName] = this.nextId(true); + } + return this.state.filters[filterName]; + }, - if (exp.sharedGetter) { - wrapped = function $parseWrapper(self, locals) { - return exp(self, locals); - }; - wrapped.literal = exp.literal; - wrapped.constant = exp.constant; - wrapped.assign = exp.assign; - } + ifDefined: function(id, defaultValue) { + return 'ifDefined(' + id + ',' + this.escape(defaultValue) + ')'; + }, + + plus: function(left, right) { + return 'plus(' + left + ',' + right + ')'; + }, + + return_: function(id) { + this.current().body.push('return ', id, ';'); + }, - return wrapped; + if_: function(test, alternate, consequent) { + if (test === true) { + alternate(); + } else { + var body = this.current().body; + body.push('if(', test, '){'); + alternate(); + body.push('}'); + if (consequent) { + body.push('else{'); + consequent(); + body.push('}'); + } } + }, - return function $parse(exp, interceptorFn, expensiveChecks) { - var parsedExpression, oneTime, cacheKey; + not: function(expression) { + return '!(' + expression + ')'; + }, - switch (typeof exp) { - case 'string': - cacheKey = exp = exp.trim(); + notNull: function(expression) { + return expression + '!=null'; + }, - var cache = (expensiveChecks ? cacheExpensive : cacheDefault); - parsedExpression = cache[cacheKey]; + nonComputedMember: function(left, right) { + return left + '.' + right; + }, - if (!parsedExpression) { - if (exp.charAt(0) === ':' && exp.charAt(1) === ':') { - oneTime = true; - exp = exp.substring(2); - } + computedMember: function(left, right) { + return left + '[' + right + ']'; + }, - var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions; - var lexer = new Lexer(parseOptions); - var parser = new Parser(lexer, $filter, parseOptions); - parsedExpression = parser.parse(exp); + member: function(left, right, computed) { + if (computed) return this.computedMember(left, right); + return this.nonComputedMember(left, right); + }, - if (parsedExpression.constant) { - parsedExpression.$$watchDelegate = constantWatchDelegate; - } else if (oneTime) { - //oneTime is not part of the exp passed to the Parser so we may have to - //wrap the parsedExpression before adding a $$watchDelegate - parsedExpression = wrapSharedExpression(parsedExpression); - parsedExpression.$$watchDelegate = parsedExpression.literal ? - oneTimeLiteralWatchDelegate : oneTimeWatchDelegate; - } else if (parsedExpression.inputs) { - parsedExpression.$$watchDelegate = inputsWatchDelegate; - } + addEnsureSafeObject: function(item) { + this.current().body.push(this.ensureSafeObject(item), ';'); + }, - cache[cacheKey] = parsedExpression; - } - return addInterceptor(parsedExpression, interceptorFn); + addEnsureSafeMemberName: function(item) { + this.current().body.push(this.ensureSafeMemberName(item), ';'); + }, - case 'function': - return addInterceptor(exp, interceptorFn); + addEnsureSafeFunction: function(item) { + this.current().body.push(this.ensureSafeFunction(item), ';'); + }, - default: - return addInterceptor(noop, interceptorFn); - } - }; + ensureSafeObject: function(item) { + return 'ensureSafeObject(' + item + ',text)'; + }, - function collectExpressionInputs(inputs, list) { - for (var i = 0, ii = inputs.length; i < ii; i++) { - var input = inputs[i]; - if (!input.constant) { - if (input.inputs) { - collectExpressionInputs(input.inputs, list); - } else if (list.indexOf(input) === -1) { // TODO(perf) can we do better? - list.push(input); - } - } - } + ensureSafeMemberName: function(item) { + return 'ensureSafeMemberName(' + item + ',text)'; + }, - return list; - } + ensureSafeFunction: function(item) { + return 'ensureSafeFunction(' + item + ',text)'; + }, - function expressionInputDirtyCheck(newValue, oldValueOfValue) { + lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) { + var self = this; + return function() { + self.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck); + }; + }, - if (newValue == null || oldValueOfValue == null) { // null/undefined - return newValue === oldValueOfValue; - } + lazyAssign: function(id, value) { + var self = this; + return function() { + self.assign(id, value); + }; + }, - if (typeof newValue === 'object') { + stringEscapeRegex: /[^ a-zA-Z0-9]/g, - // attempt to convert the value to a primitive type - // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can - // be cheaply dirty-checked - newValue = getValueOf(newValue); + stringEscapeFn: function(c) { + return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4); + }, - if (typeof newValue === 'object') { - // objects/arrays are not supported - deep-watching them would be too expensive - return false; - } + escape: function(value) { + if (isString(value)) return "'" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'"; + if (isNumber(value)) return value.toString(); + if (value === true) return 'true'; + if (value === false) return 'false'; + if (value === null) return 'null'; + if (typeof value === 'undefined') return 'undefined'; - // fall-through to the primitive equality check - } + throw $parseMinErr('esc', 'IMPOSSIBLE'); + }, - //Primitive or NaN - return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue); + nextId: function(skip, init) { + var id = 'v' + (this.state.nextId++); + if (!skip) { + this.current().vars.push(id + (init ? '=' + init : '')); } + return id; + }, - function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression) { - var inputExpressions = parsedExpression.$$inputs || - (parsedExpression.$$inputs = collectExpressionInputs(parsedExpression.inputs, [])); - - var lastResult; + current: function() { + return this.state[this.state.computing]; + } +}; - if (inputExpressions.length === 1) { - var oldInputValue = expressionInputDirtyCheck; // init to something unique so that equals check fails - inputExpressions = inputExpressions[0]; - return scope.$watch(function expressionInputWatch(scope) { - var newInputValue = inputExpressions(scope); - if (!expressionInputDirtyCheck(newInputValue, oldInputValue)) { - lastResult = parsedExpression(scope); - oldInputValue = newInputValue && getValueOf(newInputValue); - } - return lastResult; - }, listener, objectEquality); - } - var oldInputValueOfValues = []; - for (var i = 0, ii = inputExpressions.length; i < ii; i++) { - oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails - } +function ASTInterpreter(astBuilder, $filter) { + this.astBuilder = astBuilder; + this.$filter = $filter; +} - return scope.$watch(function expressionInputsWatch(scope) { - var changed = false; +ASTInterpreter.prototype = { + compile: function(expression, expensiveChecks) { + var self = this; + var ast = this.astBuilder.ast(expression); + this.expression = expression; + this.expensiveChecks = expensiveChecks; + findConstantAndWatchExpressions(ast, self.$filter); + var assignable; + var assign; + if ((assignable = assignableAST(ast))) { + assign = this.recurse(assignable); + } + var toWatch = getInputs(ast.body); + var inputs; + if (toWatch) { + inputs = []; + forEach(toWatch, function(watch, key) { + var input = self.recurse(watch); + watch.input = input; + inputs.push(input); + watch.watchId = key; + }); + } + var expressions = []; + forEach(ast.body, function(expression) { + expressions.push(self.recurse(expression.expression)); + }); + var fn = ast.body.length === 0 ? function() {} : + ast.body.length === 1 ? expressions[0] : + function(scope, locals) { + var lastValue; + forEach(expressions, function(exp) { + lastValue = exp(scope, locals); + }); + return lastValue; + }; + if (assign) { + fn.assign = function(scope, value, locals) { + return assign(scope, locals, value); + }; + } + if (inputs) { + fn.inputs = inputs; + } + fn.literal = isLiteral(ast); + fn.constant = isConstant(ast); + return fn; + }, - for (var i = 0, ii = inputExpressions.length; i < ii; i++) { - var newInputValue = inputExpressions[i](scope); - if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) { - oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue); + recurse: function(ast, context, create) { + var left, right, self = this, args, expression; + if (ast.input) { + return this.inputs(ast.input, ast.watchId); + } + switch (ast.type) { + case AST.Literal: + return this.value(ast.value, context); + case AST.UnaryExpression: + right = this.recurse(ast.argument); + return this['unary' + ast.operator](right, context); + case AST.BinaryExpression: + left = this.recurse(ast.left); + right = this.recurse(ast.right); + return this['binary' + ast.operator](left, right, context); + case AST.LogicalExpression: + left = this.recurse(ast.left); + right = this.recurse(ast.right); + return this['binary' + ast.operator](left, right, context); + case AST.ConditionalExpression: + return this['ternary?:']( + this.recurse(ast.test), + this.recurse(ast.alternate), + this.recurse(ast.consequent), + context + ); + case AST.Identifier: + ensureSafeMemberName(ast.name, self.expression); + return self.identifier(ast.name, + self.expensiveChecks || isPossiblyDangerousMemberName(ast.name), + context, create, self.expression); + case AST.MemberExpression: + left = this.recurse(ast.object, false, !!create); + if (!ast.computed) { + ensureSafeMemberName(ast.property.name, self.expression); + right = ast.property.name; + } + if (ast.computed) right = this.recurse(ast.property); + return ast.computed ? + this.computedMember(left, right, context, create, self.expression) : + this.nonComputedMember(left, right, self.expensiveChecks, context, create, self.expression); + case AST.CallExpression: + args = []; + forEach(ast.arguments, function(expr) { + args.push(self.recurse(expr)); + }); + if (ast.filter) right = this.$filter(ast.callee.name); + if (!ast.filter) right = this.recurse(ast.callee, true); + return ast.filter ? + function(scope, locals, assign, inputs) { + var values = []; + for (var i = 0; i < args.length; ++i) { + values.push(args[i](scope, locals, assign, inputs)); + } + var value = right.apply(undefined, values, inputs); + return context ? {context: undefined, name: undefined, value: value} : value; + } : + function(scope, locals, assign, inputs) { + var rhs = right(scope, locals, assign, inputs); + var value; + if (rhs.value != null) { + ensureSafeObject(rhs.context, self.expression); + ensureSafeFunction(rhs.value, self.expression); + var values = []; + for (var i = 0; i < args.length; ++i) { + values.push(ensureSafeObject(args[i](scope, locals, assign, inputs), self.expression)); + } + value = ensureSafeObject(rhs.value.apply(rhs.context, values), self.expression); } + return context ? {value: value} : value; + }; + case AST.AssignmentExpression: + left = this.recurse(ast.left, true, 1); + right = this.recurse(ast.right); + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + ensureSafeObject(lhs.value, self.expression); + lhs.context[lhs.name] = rhs; + return context ? {value: rhs} : rhs; + }; + case AST.ArrayExpression: + args = []; + forEach(ast.elements, function(expr) { + args.push(self.recurse(expr)); + }); + return function(scope, locals, assign, inputs) { + var value = []; + for (var i = 0; i < args.length; ++i) { + value.push(args[i](scope, locals, assign, inputs)); } - - if (changed) { - lastResult = parsedExpression(scope); + return context ? {value: value} : value; + }; + case AST.ObjectExpression: + args = []; + forEach(ast.properties, function(property) { + args.push({key: property.key.type === AST.Identifier ? + property.key.name : + ('' + property.key.value), + value: self.recurse(property.value) + }); + }); + return function(scope, locals, assign, inputs) { + var value = {}; + for (var i = 0; i < args.length; ++i) { + value[args[i].key] = args[i].value(scope, locals, assign, inputs); } - - return lastResult; - }, listener, objectEquality); - } - - function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) { - var unwatch, lastValue; - return unwatch = scope.$watch(function oneTimeWatch(scope) { - return parsedExpression(scope); - }, function oneTimeListener(value, old, scope) { - lastValue = value; - if (isFunction(listener)) { - listener.apply(this, arguments); - } - if (isDefined(value)) { - scope.$$postDigest(function() { - if (isDefined(lastValue)) { - unwatch(); - } - }); - } - }, objectEquality); + return context ? {value: value} : value; + }; + case AST.ThisExpression: + return function(scope) { + return context ? {value: scope} : scope; + }; + case AST.NGValueParameter: + return function(scope, locals, assign, inputs) { + return context ? {value: assign} : assign; + }; } + }, - function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) { - var unwatch, lastValue; - return unwatch = scope.$watch(function oneTimeWatch(scope) { - return parsedExpression(scope); - }, function oneTimeListener(value, old, scope) { - lastValue = value; - if (isFunction(listener)) { - listener.call(this, value, old, scope); - } - if (isAllDefined(value)) { - scope.$$postDigest(function() { - if (isAllDefined(lastValue)) unwatch(); - }); + 'unary+': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = argument(scope, locals, assign, inputs); + if (isDefined(arg)) { + arg = +arg; + } else { + arg = 0; + } + return context ? {value: arg} : arg; + }; + }, + 'unary-': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = argument(scope, locals, assign, inputs); + if (isDefined(arg)) { + arg = -arg; + } else { + arg = 0; + } + return context ? {value: arg} : arg; + }; + }, + 'unary!': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = !argument(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary+': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + var arg = plusFn(lhs, rhs); + return context ? {value: arg} : arg; + }; + }, + 'binary-': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0); + return context ? {value: arg} : arg; + }; + }, + 'binary*': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary/': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary%': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary===': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary!==': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary==': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary!=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary<': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary>': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary<=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary>=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary&&': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary||': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'ternary?:': function(test, alternate, consequent, context) { + return function(scope, locals, assign, inputs) { + var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + value: function(value, context) { + return function() { return context ? {context: undefined, name: undefined, value: value} : value; }; + }, + identifier: function(name, expensiveChecks, context, create, expression) { + return function(scope, locals, assign, inputs) { + var base = locals && (name in locals) ? locals : scope; + if (create && create !== 1 && base && !(base[name])) { + base[name] = {}; + } + var value = base ? base[name] : undefined; + if (expensiveChecks) { + ensureSafeObject(value, expression); + } + if (context) { + return {context: base, name: name, value: value}; + } else { + return value; + } + }; + }, + computedMember: function(left, right, context, create, expression) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs; + var value; + if (lhs != null) { + rhs = right(scope, locals, assign, inputs); + ensureSafeMemberName(rhs, expression); + if (create && create !== 1 && lhs && !(lhs[rhs])) { + lhs[rhs] = {}; } - }, objectEquality); - - function isAllDefined(value) { - var allDefined = true; - forEach(value, function(val) { - if (!isDefined(val)) allDefined = false; - }); - return allDefined; + value = lhs[rhs]; + ensureSafeObject(value, expression); } - } + if (context) { + return {context: lhs, name: rhs, value: value}; + } else { + return value; + } + }; + }, + nonComputedMember: function(left, right, expensiveChecks, context, create, expression) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + if (create && create !== 1 && lhs && !(lhs[right])) { + lhs[right] = {}; + } + var value = lhs != null ? lhs[right] : undefined; + if (expensiveChecks || isPossiblyDangerousMemberName(right)) { + ensureSafeObject(value, expression); + } + if (context) { + return {context: lhs, name: right, value: value}; + } else { + return value; + } + }; + }, + inputs: function(input, watchId) { + return function(scope, value, locals, inputs) { + if (inputs) return inputs[watchId]; + return input(scope, value, locals); + }; + } +}; - function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) { - var unwatch; - return unwatch = scope.$watch(function constantWatch(scope) { - return parsedExpression(scope); - }, function constantListener(value, old, scope) { - if (isFunction(listener)) { - listener.apply(this, arguments); - } - unwatch(); - }, objectEquality); - } +/** + * @constructor + */ +var Parser = function(lexer, $filter, options) { + this.lexer = lexer; + this.$filter = $filter; + this.options = options; + this.ast = new AST(this.lexer); + this.astCompiler = options.csp ? new ASTInterpreter(this.ast, $filter) : + new ASTCompiler(this.ast, $filter); +}; - function addInterceptor(parsedExpression, interceptorFn) { - if (!interceptorFn) return parsedExpression; - var watchDelegate = parsedExpression.$$watchDelegate; +Parser.prototype = { + constructor: Parser, - var regularWatch = - watchDelegate !== oneTimeLiteralWatchDelegate && - watchDelegate !== oneTimeWatchDelegate; + parse: function(text) { + return this.astCompiler.compile(text, this.options.expensiveChecks); + } +}; - var fn = regularWatch ? function regularInterceptedExpression(scope, locals) { - var value = parsedExpression(scope, locals); - return interceptorFn(value, scope, locals); - } : function oneTimeInterceptedExpression(scope, locals) { - var value = parsedExpression(scope, locals); - var result = interceptorFn(value, scope, locals); - // we only return the interceptor's result if the - // initial value is defined (for bind-once) - return isDefined(value) ? result : value; - }; +////////////////////////////////////////////////// +// Parser helper functions +////////////////////////////////////////////////// - // Propagate $$watchDelegates other then inputsWatchDelegate - if (parsedExpression.$$watchDelegate && - parsedExpression.$$watchDelegate !== inputsWatchDelegate) { - fn.$$watchDelegate = parsedExpression.$$watchDelegate; - } else if (!interceptorFn.$stateful) { - // If there is an interceptor, but no watchDelegate then treat the interceptor like - // we treat filters - it is assumed to be a pure function unless flagged with $stateful - fn.$$watchDelegate = inputsWatchDelegate; - fn.inputs = [parsedExpression]; - } +function setter(obj, path, setValue, fullExp) { + ensureSafeObject(obj, fullExp); - return fn; + var element = path.split('.'), key; + for (var i = 0; element.length > 1; i++) { + key = ensureSafeMemberName(element.shift(), fullExp); + var propertyObj = ensureSafeObject(obj[key], fullExp); + if (!propertyObj) { + propertyObj = {}; + obj[key] = propertyObj; } - }]; + obj = propertyObj; + } + key = ensureSafeMemberName(element.shift(), fullExp); + ensureSafeObject(obj[key], fullExp); + obj[key] = setValue; + return setValue; +} + +var getterFnCacheDefault = createMap(); +var getterFnCacheExpensive = createMap(); + +function isPossiblyDangerousMemberName(name) { + return name == 'constructor'; +} + +var objectValueOf = Object.prototype.valueOf; + +function getValueOf(value) { + return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value); } +/////////////////////////////////// + /** * @ngdoc service - * @name $q - * @requires $rootScope + * @name $parse + * @kind function * * @description - * A service that helps you run functions asynchronously, and use their return values (or exceptions) - * when they are done processing. - * - * This is an implementation of promises/deferred objects inspired by - * [Kris Kowal's Q](https://github.com/kriskowal/q). - * - * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred - * implementations, and the other which resembles ES6 promises to some degree. - * - * # $q constructor - * - * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver` - * function as the first argument. This is similar to the native Promise implementation from ES6 Harmony, - * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). * - * While the constructor-style use is supported, not all of the supporting methods from ES6 Harmony promises are - * available yet. - * - * It can be used like so: + * Converts Angular {@link guide/expression expression} into a function. * * ```js - * // for the purpose of this example let's assume that variables `$q` and `okToGreet` - * // are available in the current lexical scope (they could have been injected or passed in). - * - * function asyncGreet(name) { - * // perform some asynchronous operation, resolve or reject the promise when appropriate. - * return $q(function(resolve, reject) { - * setTimeout(function() { - * if (okToGreet(name)) { - * resolve('Hello, ' + name + '!'); - * } else { - * reject('Greeting ' + name + ' is not allowed.'); - * } - * }, 1000); - * }); - * } + * var getter = $parse('user.name'); + * var setter = getter.assign; + * var context = {user:{name:'angular'}}; + * var locals = {user:{name:'local'}}; * - * var promise = asyncGreet('Robin Hood'); - * promise.then(function(greeting) { - * alert('Success: ' + greeting); - * }, function(reason) { - * alert('Failed: ' + reason); - * }); + * expect(getter(context)).toEqual('angular'); + * setter(context, 'newValue'); + * expect(context.user.name).toEqual('newValue'); + * expect(getter(context, locals)).toEqual('local'); * ``` * - * Note: progress/notify callbacks are not currently supported via the ES6-style interface. * - * However, the more traditional CommonJS-style usage is still available, and documented below. + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: * - * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an - * interface for interacting with an object that represents the result of an action that is - * performed asynchronously, and may or may not be finished at any given point in time. + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. * - * From the perspective of dealing with error handling, deferred and promise APIs are to - * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming. + * The returned function also has the following properties: + * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript + * literal. + * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript + * constant literals. + * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be + * set to a function to change its value on the given context. * - * ```js - * // for the purpose of this example let's assume that variables `$q` and `okToGreet` - * // are available in the current lexical scope (they could have been injected or passed in). - * - * function asyncGreet(name) { - * var deferred = $q.defer(); - * - * setTimeout(function() { - * deferred.notify('About to greet ' + name + '.'); - * - * if (okToGreet(name)) { - * deferred.resolve('Hello, ' + name + '!'); - * } else { - * deferred.reject('Greeting ' + name + ' is not allowed.'); - * } - * }, 1000); - * - * return deferred.promise; - * } - * - * var promise = asyncGreet('Robin Hood'); - * promise.then(function(greeting) { - * alert('Success: ' + greeting); - * }, function(reason) { - * alert('Failed: ' + reason); - * }, function(update) { - * alert('Got notification: ' + update); - * }); - * ``` - * - * At first it might not be obvious why this extra complexity is worth the trouble. The payoff - * comes in the way of guarantees that promise and deferred APIs make, see - * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md. - * - * Additionally the promise api allows for composition that is very hard to do with the - * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach. - * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the - * section on serial or parallel joining of promises. - * - * # The Deferred API - * - * A new instance of deferred is constructed by calling `$q.defer()`. - * - * The purpose of the deferred object is to expose the associated Promise instance as well as APIs - * that can be used for signaling the successful or unsuccessful completion, as well as the status - * of the task. - * - * **Methods** - * - * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection - * constructed via `$q.reject`, the promise will be rejected instead. - * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to - * resolving it with a rejection constructed via `$q.reject`. - * - `notify(value)` - provides updates on the status of the promise's execution. This may be called - * multiple times before the promise is either resolved or rejected. - * - * **Properties** - * - * - promise – `{Promise}` – promise object associated with this deferred. - * - * - * # The Promise API - * - * A new promise instance is created when a deferred instance is created and can be retrieved by - * calling `deferred.promise`. - * - * The purpose of the promise object is to allow for interested parties to get access to the result - * of the deferred task when it completes. - * - * **Methods** - * - * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or - * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously - * as soon as the result is available. The callbacks are called with a single argument: the result - * or rejection reason. Additionally, the notify callback may be called zero or more times to - * provide a progress indication, before the promise is resolved or rejected. - * - * This method *returns a new promise* which is resolved or rejected via the return value of the - * `successCallback`, `errorCallback`. It also notifies via the return value of the - * `notifyCallback` method. The promise cannot be resolved or rejected from the notifyCallback - * method. - * - * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)` - * - * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise, - * but to do so without modifying the final value. This is useful to release resources or do some - * clean-up that needs to be done whether the promise was rejected or resolved. See the [full - * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for - * more information. - * - * # Chaining promises - * - * Because calling the `then` method of a promise returns a new derived promise, it is easily - * possible to create a chain of promises: - * - * ```js - * promiseB = promiseA.then(function(result) { - * return result + 1; - * }); - * - * // promiseB will be resolved immediately after promiseA is resolved and its value - * // will be the result of promiseA incremented by 1 - * ``` - * - * It is possible to create chains of any length and since a promise can be resolved with another - * promise (which will defer its resolution further), it is possible to pause/defer resolution of - * the promises at any point in the chain. This makes it possible to implement powerful APIs like - * $http's response interceptors. - * - * - * # Differences between Kris Kowal's Q and $q - * - * There are two main differences: - * - * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation - * mechanism in angular, which means faster propagation of resolution or rejection into your - * models and avoiding unnecessary browser repaints, which would result in flickering UI. - * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains - * all the important functionality needed for common async tasks. - * - * # Testing - * - * ```js - * it('should simulate promise', inject(function($q, $rootScope) { - * var deferred = $q.defer(); - * var promise = deferred.promise; - * var resolvedValue; - * - * promise.then(function(value) { resolvedValue = value; }); - * expect(resolvedValue).toBeUndefined(); - * - * // Simulate resolving of promise - * deferred.resolve(123); - * // Note that the 'then' function does not get called synchronously. - * // This is because we want the promise API to always be async, whether or not - * // it got called synchronously or asynchronously. - * expect(resolvedValue).toBeUndefined(); - * - * // Propagate promise resolution to 'then' functions using $apply(). - * $rootScope.$apply(); - * expect(resolvedValue).toEqual(123); - * })); - * ``` - * - * @param {function(function, function)} resolver Function which is responsible for resolving or - * rejecting the newly created promise. The first parameter is a function which resolves the - * promise, the second parameter is a function which rejects the promise. - * - * @returns {Promise} The newly created promise. */ -function $QProvider() { - - this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) { - return qFactory(function(callback) { - $rootScope.$evalAsync(callback); - }, $exceptionHandler); - }]; -} -function $$QProvider() { - this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) { - return qFactory(function(callback) { - $browser.defer(callback); - }, $exceptionHandler); - }]; -} /** - * Constructs a promise manager. + * @ngdoc provider + * @name $parseProvider * - * @param {function(function)} nextTick Function for executing functions in the next turn. - * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for - * debugging purposes. - * @returns {object} Promise manager. + * @description + * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse} + * service. */ -function qFactory(nextTick, exceptionHandler) { - var $qMinErr = minErr('$q', TypeError); - function callOnce(self, resolveFn, rejectFn) { - var called = false; - function wrap(fn) { - return function(value) { - if (called) return; - called = true; - fn.call(self, value); - }; - } +function $ParseProvider() { + var cacheDefault = createMap(); + var cacheExpensive = createMap(); - return [wrap(resolveFn), wrap(rejectFn)]; - } + this.$get = ['$filter', '$sniffer', function($filter, $sniffer) { + var $parseOptions = { + csp: $sniffer.csp, + expensiveChecks: false + }, + $parseOptionsExpensive = { + csp: $sniffer.csp, + expensiveChecks: true + }; - /** - * @ngdoc method - * @name ng.$q#defer - * @kind function - * - * @description - * Creates a `Deferred` object which represents a task which will finish in the future. - * - * @returns {Deferred} Returns a new instance of deferred. - */ - var defer = function() { - return new Deferred(); - }; + return function $parse(exp, interceptorFn, expensiveChecks) { + var parsedExpression, oneTime, cacheKey; - function Promise() { - this.$$state = { status: 0 }; - } + switch (typeof exp) { + case 'string': + exp = exp.trim(); + cacheKey = exp; - Promise.prototype = { - then: function(onFulfilled, onRejected, progressBack) { - var result = new Deferred(); + var cache = (expensiveChecks ? cacheExpensive : cacheDefault); + parsedExpression = cache[cacheKey]; - this.$$state.pending = this.$$state.pending || []; - this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]); - if (this.$$state.status > 0) scheduleProcessQueue(this.$$state); + if (!parsedExpression) { + if (exp.charAt(0) === ':' && exp.charAt(1) === ':') { + oneTime = true; + exp = exp.substring(2); + } + var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions; + var lexer = new Lexer(parseOptions); + var parser = new Parser(lexer, $filter, parseOptions); + parsedExpression = parser.parse(exp); + if (parsedExpression.constant) { + parsedExpression.$$watchDelegate = constantWatchDelegate; + } else if (oneTime) { + parsedExpression.$$watchDelegate = parsedExpression.literal ? + oneTimeLiteralWatchDelegate : oneTimeWatchDelegate; + } else if (parsedExpression.inputs) { + parsedExpression.$$watchDelegate = inputsWatchDelegate; + } + cache[cacheKey] = parsedExpression; + } + return addInterceptor(parsedExpression, interceptorFn); - return result.promise; - }, + case 'function': + return addInterceptor(exp, interceptorFn); - "catch": function(callback) { - return this.then(null, callback); - }, + default: + return noop; + } + }; - "finally": function(callback, progressBack) { - return this.then(function(value) { - return handleCallback(value, true, callback); - }, function(error) { - return handleCallback(error, false, callback); - }, progressBack); - } - }; + function expressionInputDirtyCheck(newValue, oldValueOfValue) { - //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native - function simpleBind(context, fn) { - return function(value) { - fn.call(context, value); - }; - } + if (newValue == null || oldValueOfValue == null) { // null/undefined + return newValue === oldValueOfValue; + } - function processQueue(state) { - var fn, promise, pending; + if (typeof newValue === 'object') { - pending = state.pending; - state.processScheduled = false; - state.pending = undefined; - for (var i = 0, ii = pending.length; i < ii; ++i) { - promise = pending[i][0]; - fn = pending[i][state.status]; - try { - if (isFunction(fn)) { - promise.resolve(fn(state.value)); - } else if (state.status === 1) { - promise.resolve(state.value); - } else { - promise.reject(state.value); + // attempt to convert the value to a primitive type + // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can + // be cheaply dirty-checked + newValue = getValueOf(newValue); + + if (typeof newValue === 'object') { + // objects/arrays are not supported - deep-watching them would be too expensive + return false; } - } catch (e) { - promise.reject(e); - exceptionHandler(e); + + // fall-through to the primitive equality check } + + //Primitive or NaN + return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue); } - } - function scheduleProcessQueue(state) { - if (state.processScheduled || !state.pending) return; - state.processScheduled = true; - nextTick(function() { processQueue(state); }); - } + function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) { + var inputExpressions = parsedExpression.inputs; + var lastResult; - function Deferred() { - this.promise = new Promise(); - //Necessary to support unbound execution :/ - this.resolve = simpleBind(this, this.resolve); - this.reject = simpleBind(this, this.reject); - this.notify = simpleBind(this, this.notify); - } + if (inputExpressions.length === 1) { + var oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails + inputExpressions = inputExpressions[0]; + return scope.$watch(function expressionInputWatch(scope) { + var newInputValue = inputExpressions(scope); + if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) { + lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]); + oldInputValueOf = newInputValue && getValueOf(newInputValue); + } + return lastResult; + }, listener, objectEquality, prettyPrintExpression); + } - Deferred.prototype = { - resolve: function(val) { - if (this.promise.$$state.status) return; - if (val === this.promise) { - this.$$reject($qMinErr( - 'qcycle', - "Expected promise to be resolved with value other than itself '{0}'", - val)); - } else { - this.$$resolve(val); + var oldInputValueOfValues = []; + var oldInputValues = []; + for (var i = 0, ii = inputExpressions.length; i < ii; i++) { + oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails + oldInputValues[i] = null; } - }, + return scope.$watch(function expressionInputsWatch(scope) { + var changed = false; - $$resolve: function(val) { - var then, fns; + for (var i = 0, ii = inputExpressions.length; i < ii; i++) { + var newInputValue = inputExpressions[i](scope); + if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) { + oldInputValues[i] = newInputValue; + oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue); + } + } - fns = callOnce(this, this.$$resolve, this.$$reject); - try { - if ((isObject(val) || isFunction(val))) then = val && val.then; - if (isFunction(then)) { - this.promise.$$state.status = -1; - then.call(val, fns[0], fns[1], this.notify); - } else { - this.promise.$$state.value = val; - this.promise.$$state.status = 1; - scheduleProcessQueue(this.promise.$$state); + if (changed) { + lastResult = parsedExpression(scope, undefined, undefined, oldInputValues); } - } catch (e) { - fns[1](e); - exceptionHandler(e); - } - }, - reject: function(reason) { - if (this.promise.$$state.status) return; - this.$$reject(reason); - }, + return lastResult; + }, listener, objectEquality, prettyPrintExpression); + } - $$reject: function(reason) { - this.promise.$$state.value = reason; - this.promise.$$state.status = 2; - scheduleProcessQueue(this.promise.$$state); - }, + function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var unwatch, lastValue; + return unwatch = scope.$watch(function oneTimeWatch(scope) { + return parsedExpression(scope); + }, function oneTimeListener(value, old, scope) { + lastValue = value; + if (isFunction(listener)) { + listener.apply(this, arguments); + } + if (isDefined(value)) { + scope.$$postDigest(function() { + if (isDefined(lastValue)) { + unwatch(); + } + }); + } + }, objectEquality); + } - notify: function(progress) { - var callbacks = this.promise.$$state.pending; + function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var unwatch, lastValue; + return unwatch = scope.$watch(function oneTimeWatch(scope) { + return parsedExpression(scope); + }, function oneTimeListener(value, old, scope) { + lastValue = value; + if (isFunction(listener)) { + listener.call(this, value, old, scope); + } + if (isAllDefined(value)) { + scope.$$postDigest(function() { + if (isAllDefined(lastValue)) unwatch(); + }); + } + }, objectEquality); - if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) { - nextTick(function() { - var callback, result; - for (var i = 0, ii = callbacks.length; i < ii; i++) { - result = callbacks[i][0]; - callback = callbacks[i][3]; - try { - result.notify(isFunction(callback) ? callback(progress) : progress); - } catch (e) { - exceptionHandler(e); - } - } + function isAllDefined(value) { + var allDefined = true; + forEach(value, function(val) { + if (!isDefined(val)) allDefined = false; }); + return allDefined; } } - }; - - /** - * @ngdoc method - * @name $q#reject - * @kind function - * - * @description - * Creates a promise that is resolved as rejected with the specified `reason`. This api should be - * used to forward rejection in a chain of promises. If you are dealing with the last promise in - * a promise chain, you don't need to worry about it. - * - * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of - * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via - * a promise error callback and you want to forward the error to the promise derived from the - * current promise, you have to "rethrow" the error by returning a rejection constructed via - * `reject`. - * - * ```js - * promiseB = promiseA.then(function(result) { - * // success: do something and resolve promiseB - * // with the old or a new result - * return result; - * }, function(reason) { - * // error: handle the error if possible and - * // resolve promiseB with newPromiseOrValue, - * // otherwise forward the rejection to promiseB - * if (canHandle(reason)) { - * // handle the error and recover - * return newPromiseOrValue; - * } - * return $q.reject(reason); - * }); - * ``` - * - * @param {*} reason Constant, message, exception or an object representing the rejection reason. - * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`. - */ - var reject = function(reason) { - var result = new Deferred(); - result.reject(reason); - return result.promise; - }; - var makePromise = function makePromise(value, resolved) { - var result = new Deferred(); - if (resolved) { - result.resolve(value); - } else { - result.reject(value); + function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var unwatch; + return unwatch = scope.$watch(function constantWatch(scope) { + return parsedExpression(scope); + }, function constantListener(value, old, scope) { + if (isFunction(listener)) { + listener.apply(this, arguments); + } + unwatch(); + }, objectEquality); } - return result.promise; - }; - var handleCallback = function handleCallback(value, isResolved, callback) { - var callbackOutput = null; - try { - if (isFunction(callback)) callbackOutput = callback(); - } catch (e) { - return makePromise(e, false); - } - if (isPromiseLike(callbackOutput)) { - return callbackOutput.then(function() { - return makePromise(value, isResolved); - }, function(error) { - return makePromise(error, false); - }); - } else { - return makePromise(value, isResolved); - } - }; + function addInterceptor(parsedExpression, interceptorFn) { + if (!interceptorFn) return parsedExpression; + var watchDelegate = parsedExpression.$$watchDelegate; - /** - * @ngdoc method - * @name $q#when - * @kind function - * - * @description - * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. - * This is useful when you are dealing with an object that might or might not be a promise, or if - * the promise comes from a source that can't be trusted. - * - * @param {*} value Value or a promise - * @returns {Promise} Returns a promise of the passed value or promise - */ - - - var when = function(value, callback, errback, progressBack) { - var result = new Deferred(); - result.resolve(value); - return result.promise.then(callback, errback, progressBack); - }; - - /** - * @ngdoc method - * @name $q#all - * @kind function - * - * @description - * Combines multiple promises into a single promise that is resolved when all of the input - * promises are resolved. - * - * @param {Array.|Object.} promises An array or hash of promises. - * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values, - * each value corresponding to the promise at the same index/key in the `promises` array/hash. - * If any of the promises is resolved with a rejection, this resulting promise will be rejected - * with the same rejection value. - */ - - function all(promises) { - var deferred = new Deferred(), - counter = 0, - results = isArray(promises) ? [] : {}; - - forEach(promises, function(promise, key) { - counter++; - when(promise).then(function(value) { - if (results.hasOwnProperty(key)) return; - results[key] = value; - if (!(--counter)) deferred.resolve(results); - }, function(reason) { - if (results.hasOwnProperty(key)) return; - deferred.reject(reason); - }); - }); - - if (counter === 0) { - deferred.resolve(results); - } - - return deferred.promise; - } - - var $Q = function Q(resolver) { - if (!isFunction(resolver)) { - throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver); - } - - if (!(this instanceof Q)) { - // More useful when $Q is the Promise itself. - return new Q(resolver); - } + var regularWatch = + watchDelegate !== oneTimeLiteralWatchDelegate && + watchDelegate !== oneTimeWatchDelegate; - var deferred = new Deferred(); + var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) { + var value = parsedExpression(scope, locals, assign, inputs); + return interceptorFn(value, scope, locals); + } : function oneTimeInterceptedExpression(scope, locals, assign, inputs) { + var value = parsedExpression(scope, locals, assign, inputs); + var result = interceptorFn(value, scope, locals); + // we only return the interceptor's result if the + // initial value is defined (for bind-once) + return isDefined(value) ? result : value; + }; - function resolveFn(value) { - deferred.resolve(value); - } + // Propagate $$watchDelegates other then inputsWatchDelegate + if (parsedExpression.$$watchDelegate && + parsedExpression.$$watchDelegate !== inputsWatchDelegate) { + fn.$$watchDelegate = parsedExpression.$$watchDelegate; + } else if (!interceptorFn.$stateful) { + // If there is an interceptor, but no watchDelegate then treat the interceptor like + // we treat filters - it is assumed to be a pure function unless flagged with $stateful + fn.$$watchDelegate = inputsWatchDelegate; + fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression]; + } - function rejectFn(reason) { - deferred.reject(reason); + return fn; } - - resolver(resolveFn, rejectFn); - - return deferred.promise; - }; - - $Q.defer = defer; - $Q.reject = reject; - $Q.when = when; - $Q.all = all; - - return $Q; -} - -function $$RAFProvider() { //rAF - this.$get = ['$window', '$timeout', function($window, $timeout) { - var requestAnimationFrame = $window.requestAnimationFrame || - $window.webkitRequestAnimationFrame; - - var cancelAnimationFrame = $window.cancelAnimationFrame || - $window.webkitCancelAnimationFrame || - $window.webkitCancelRequestAnimationFrame; - - var rafSupported = !!requestAnimationFrame; - var raf = rafSupported - ? function(fn) { - var id = requestAnimationFrame(fn); - return function() { - cancelAnimationFrame(id); - }; - } - : function(fn) { - var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666 - return function() { - $timeout.cancel(timer); - }; - }; - - raf.supported = rafSupported; - - return raf; }]; } /** - * DESIGN NOTES + * @ngdoc service + * @name $q + * @requires $rootScope * - * The design decisions behind the scope are heavily favored for speed and memory consumption. + * @description + * A service that helps you run functions asynchronously, and use their return values (or exceptions) + * when they are done processing. * - * The typical use of scope is to watch the expressions, which most of the time return the same - * value as last time so we optimize the operation. + * This is an implementation of promises/deferred objects inspired by + * [Kris Kowal's Q](https://github.com/kriskowal/q). * - * Closures construction is expensive in terms of speed as well as memory: - * - No closures, instead use prototypical inheritance for API - * - Internal state needs to be stored on scope directly, which means that private state is - * exposed as $$____ properties + * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred + * implementations, and the other which resembles ES6 promises to some degree. * - * Loop operations are optimized by using while(count--) { ... } - * - this means that in order to keep the same order of execution as addition we have to add - * items to the array at the beginning (unshift) instead of at the end (push) + * # $q constructor * - * Child scopes are created and removed often - * - Using an array would be slow since inserts in middle are expensive so we use linked list + * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver` + * function as the first argument. This is similar to the native Promise implementation from ES6 Harmony, + * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). * - * There are few watches then a lot of observers. This is why you don't want the observer to be - * implemented in the same way as watch. Watch requires return of initialization function which - * are expensive to construct. - */ - - -/** - * @ngdoc provider - * @name $rootScopeProvider - * @description + * While the constructor-style use is supported, not all of the supporting methods from ES6 Harmony promises are + * available yet. * - * Provider for the $rootScope service. - */ - -/** - * @ngdoc method - * @name $rootScopeProvider#digestTtl - * @description + * It can be used like so: * - * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and - * assuming that the model is unstable. + * ```js + * // for the purpose of this example let's assume that variables `$q` and `okToGreet` + * // are available in the current lexical scope (they could have been injected or passed in). * - * The current default is 10 iterations. + * function asyncGreet(name) { + * // perform some asynchronous operation, resolve or reject the promise when appropriate. + * return $q(function(resolve, reject) { + * setTimeout(function() { + * if (okToGreet(name)) { + * resolve('Hello, ' + name + '!'); + * } else { + * reject('Greeting ' + name + ' is not allowed.'); + * } + * }, 1000); + * }); + * } * - * In complex applications it's possible that the dependencies between `$watch`s will result in - * several digest iterations. However if an application needs more than the default 10 digest - * iterations for its model to stabilize then you should investigate what is causing the model to - * continuously change during the digest. + * var promise = asyncGreet('Robin Hood'); + * promise.then(function(greeting) { + * alert('Success: ' + greeting); + * }, function(reason) { + * alert('Failed: ' + reason); + * }); + * ``` * - * Increasing the TTL could have performance implications, so you should not change it without - * proper justification. + * Note: progress/notify callbacks are not currently supported via the ES6-style interface. * - * @param {number} limit The number of digest iterations. - */ - - -/** - * @ngdoc service - * @name $rootScope - * @description + * However, the more traditional CommonJS-style usage is still available, and documented below. * - * Every application has a single root {@link ng.$rootScope.Scope scope}. - * All other scopes are descendant scopes of the root scope. Scopes provide separation - * between the model and the view, via a mechanism for watching the model for changes. - * They also provide an event emission/broadcast and subscription facility. See the - * {@link guide/scope developer guide on scopes}. - */ -function $RootScopeProvider() { - var TTL = 10; - var $rootScopeMinErr = minErr('$rootScope'); - var lastDirtyWatch = null; - var applyAsyncId = null; - - this.digestTtl = function(value) { - if (arguments.length) { - TTL = value; - } - return TTL; - }; - - this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser', - function($injector, $exceptionHandler, $parse, $browser) { - - /** - * @ngdoc type - * @name $rootScope.Scope - * - * @description - * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the - * {@link auto.$injector $injector}. Child scopes are created using the - * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when - * compiled HTML template is executed.) - * - * Here is a simple scope snippet to show how you can interact with the scope. - * ```html - * - * ``` - * - * # Inheritance - * A scope can inherit from a parent scope, as in this example: - * ```js - var parent = $rootScope; - var child = parent.$new(); - - parent.salutation = "Hello"; - expect(child.salutation).toEqual('Hello'); - - child.salutation = "Welcome"; + * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an + * interface for interacting with an object that represents the result of an action that is + * performed asynchronously, and may or may not be finished at any given point in time. + * + * From the perspective of dealing with error handling, deferred and promise APIs are to + * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming. + * + * ```js + * // for the purpose of this example let's assume that variables `$q` and `okToGreet` + * // are available in the current lexical scope (they could have been injected or passed in). + * + * function asyncGreet(name) { + * var deferred = $q.defer(); + * + * setTimeout(function() { + * deferred.notify('About to greet ' + name + '.'); + * + * if (okToGreet(name)) { + * deferred.resolve('Hello, ' + name + '!'); + * } else { + * deferred.reject('Greeting ' + name + ' is not allowed.'); + * } + * }, 1000); + * + * return deferred.promise; + * } + * + * var promise = asyncGreet('Robin Hood'); + * promise.then(function(greeting) { + * alert('Success: ' + greeting); + * }, function(reason) { + * alert('Failed: ' + reason); + * }, function(update) { + * alert('Got notification: ' + update); + * }); + * ``` + * + * At first it might not be obvious why this extra complexity is worth the trouble. The payoff + * comes in the way of guarantees that promise and deferred APIs make, see + * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md. + * + * Additionally the promise api allows for composition that is very hard to do with the + * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach. + * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the + * section on serial or parallel joining of promises. + * + * # The Deferred API + * + * A new instance of deferred is constructed by calling `$q.defer()`. + * + * The purpose of the deferred object is to expose the associated Promise instance as well as APIs + * that can be used for signaling the successful or unsuccessful completion, as well as the status + * of the task. + * + * **Methods** + * + * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection + * constructed via `$q.reject`, the promise will be rejected instead. + * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to + * resolving it with a rejection constructed via `$q.reject`. + * - `notify(value)` - provides updates on the status of the promise's execution. This may be called + * multiple times before the promise is either resolved or rejected. + * + * **Properties** + * + * - promise – `{Promise}` – promise object associated with this deferred. + * + * + * # The Promise API + * + * A new promise instance is created when a deferred instance is created and can be retrieved by + * calling `deferred.promise`. + * + * The purpose of the promise object is to allow for interested parties to get access to the result + * of the deferred task when it completes. + * + * **Methods** + * + * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or + * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously + * as soon as the result is available. The callbacks are called with a single argument: the result + * or rejection reason. Additionally, the notify callback may be called zero or more times to + * provide a progress indication, before the promise is resolved or rejected. + * + * This method *returns a new promise* which is resolved or rejected via the return value of the + * `successCallback`, `errorCallback` (unless that value is a promise, in which case it is resolved + * with the value which is resolved in that promise using + * [promise chaining](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promises-queues)). + * It also notifies via the return value of the `notifyCallback` method. The promise cannot be + * resolved or rejected from the notifyCallback method. + * + * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)` + * + * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise, + * but to do so without modifying the final value. This is useful to release resources or do some + * clean-up that needs to be done whether the promise was rejected or resolved. See the [full + * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for + * more information. + * + * # Chaining promises + * + * Because calling the `then` method of a promise returns a new derived promise, it is easily + * possible to create a chain of promises: + * + * ```js + * promiseB = promiseA.then(function(result) { + * return result + 1; + * }); + * + * // promiseB will be resolved immediately after promiseA is resolved and its value + * // will be the result of promiseA incremented by 1 + * ``` + * + * It is possible to create chains of any length and since a promise can be resolved with another + * promise (which will defer its resolution further), it is possible to pause/defer resolution of + * the promises at any point in the chain. This makes it possible to implement powerful APIs like + * $http's response interceptors. + * + * + * # Differences between Kris Kowal's Q and $q + * + * There are two main differences: + * + * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation + * mechanism in angular, which means faster propagation of resolution or rejection into your + * models and avoiding unnecessary browser repaints, which would result in flickering UI. + * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains + * all the important functionality needed for common async tasks. + * + * # Testing + * + * ```js + * it('should simulate promise', inject(function($q, $rootScope) { + * var deferred = $q.defer(); + * var promise = deferred.promise; + * var resolvedValue; + * + * promise.then(function(value) { resolvedValue = value; }); + * expect(resolvedValue).toBeUndefined(); + * + * // Simulate resolving of promise + * deferred.resolve(123); + * // Note that the 'then' function does not get called synchronously. + * // This is because we want the promise API to always be async, whether or not + * // it got called synchronously or asynchronously. + * expect(resolvedValue).toBeUndefined(); + * + * // Propagate promise resolution to 'then' functions using $apply(). + * $rootScope.$apply(); + * expect(resolvedValue).toEqual(123); + * })); + * ``` + * + * @param {function(function, function)} resolver Function which is responsible for resolving or + * rejecting the newly created promise. The first parameter is a function which resolves the + * promise, the second parameter is a function which rejects the promise. + * + * @returns {Promise} The newly created promise. + */ +function $QProvider() { + + this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) { + return qFactory(function(callback) { + $rootScope.$evalAsync(callback); + }, $exceptionHandler); + }]; +} + +function $$QProvider() { + this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) { + return qFactory(function(callback) { + $browser.defer(callback); + }, $exceptionHandler); + }]; +} + +/** + * Constructs a promise manager. + * + * @param {function(function)} nextTick Function for executing functions in the next turn. + * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for + * debugging purposes. + * @returns {object} Promise manager. + */ +function qFactory(nextTick, exceptionHandler) { + var $qMinErr = minErr('$q', TypeError); + function callOnce(self, resolveFn, rejectFn) { + var called = false; + function wrap(fn) { + return function(value) { + if (called) return; + called = true; + fn.call(self, value); + }; + } + + return [wrap(resolveFn), wrap(rejectFn)]; + } + + /** + * @ngdoc method + * @name ng.$q#defer + * @kind function + * + * @description + * Creates a `Deferred` object which represents a task which will finish in the future. + * + * @returns {Deferred} Returns a new instance of deferred. + */ + var defer = function() { + return new Deferred(); + }; + + function Promise() { + this.$$state = { status: 0 }; + } + + Promise.prototype = { + then: function(onFulfilled, onRejected, progressBack) { + var result = new Deferred(); + + this.$$state.pending = this.$$state.pending || []; + this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]); + if (this.$$state.status > 0) scheduleProcessQueue(this.$$state); + + return result.promise; + }, + + "catch": function(callback) { + return this.then(null, callback); + }, + + "finally": function(callback, progressBack) { + return this.then(function(value) { + return handleCallback(value, true, callback); + }, function(error) { + return handleCallback(error, false, callback); + }, progressBack); + } + }; + + //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native + function simpleBind(context, fn) { + return function(value) { + fn.call(context, value); + }; + } + + function processQueue(state) { + var fn, deferred, pending; + + pending = state.pending; + state.processScheduled = false; + state.pending = undefined; + for (var i = 0, ii = pending.length; i < ii; ++i) { + deferred = pending[i][0]; + fn = pending[i][state.status]; + try { + if (isFunction(fn)) { + deferred.resolve(fn(state.value)); + } else if (state.status === 1) { + deferred.resolve(state.value); + } else { + deferred.reject(state.value); + } + } catch (e) { + deferred.reject(e); + exceptionHandler(e); + } + } + } + + function scheduleProcessQueue(state) { + if (state.processScheduled || !state.pending) return; + state.processScheduled = true; + nextTick(function() { processQueue(state); }); + } + + function Deferred() { + this.promise = new Promise(); + //Necessary to support unbound execution :/ + this.resolve = simpleBind(this, this.resolve); + this.reject = simpleBind(this, this.reject); + this.notify = simpleBind(this, this.notify); + } + + Deferred.prototype = { + resolve: function(val) { + if (this.promise.$$state.status) return; + if (val === this.promise) { + this.$$reject($qMinErr( + 'qcycle', + "Expected promise to be resolved with value other than itself '{0}'", + val)); + } else { + this.$$resolve(val); + } + + }, + + $$resolve: function(val) { + var then, fns; + + fns = callOnce(this, this.$$resolve, this.$$reject); + try { + if ((isObject(val) || isFunction(val))) then = val && val.then; + if (isFunction(then)) { + this.promise.$$state.status = -1; + then.call(val, fns[0], fns[1], this.notify); + } else { + this.promise.$$state.value = val; + this.promise.$$state.status = 1; + scheduleProcessQueue(this.promise.$$state); + } + } catch (e) { + fns[1](e); + exceptionHandler(e); + } + }, + + reject: function(reason) { + if (this.promise.$$state.status) return; + this.$$reject(reason); + }, + + $$reject: function(reason) { + this.promise.$$state.value = reason; + this.promise.$$state.status = 2; + scheduleProcessQueue(this.promise.$$state); + }, + + notify: function(progress) { + var callbacks = this.promise.$$state.pending; + + if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) { + nextTick(function() { + var callback, result; + for (var i = 0, ii = callbacks.length; i < ii; i++) { + result = callbacks[i][0]; + callback = callbacks[i][3]; + try { + result.notify(isFunction(callback) ? callback(progress) : progress); + } catch (e) { + exceptionHandler(e); + } + } + }); + } + } + }; + + /** + * @ngdoc method + * @name $q#reject + * @kind function + * + * @description + * Creates a promise that is resolved as rejected with the specified `reason`. This api should be + * used to forward rejection in a chain of promises. If you are dealing with the last promise in + * a promise chain, you don't need to worry about it. + * + * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of + * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via + * a promise error callback and you want to forward the error to the promise derived from the + * current promise, you have to "rethrow" the error by returning a rejection constructed via + * `reject`. + * + * ```js + * promiseB = promiseA.then(function(result) { + * // success: do something and resolve promiseB + * // with the old or a new result + * return result; + * }, function(reason) { + * // error: handle the error if possible and + * // resolve promiseB with newPromiseOrValue, + * // otherwise forward the rejection to promiseB + * if (canHandle(reason)) { + * // handle the error and recover + * return newPromiseOrValue; + * } + * return $q.reject(reason); + * }); + * ``` + * + * @param {*} reason Constant, message, exception or an object representing the rejection reason. + * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`. + */ + var reject = function(reason) { + var result = new Deferred(); + result.reject(reason); + return result.promise; + }; + + var makePromise = function makePromise(value, resolved) { + var result = new Deferred(); + if (resolved) { + result.resolve(value); + } else { + result.reject(value); + } + return result.promise; + }; + + var handleCallback = function handleCallback(value, isResolved, callback) { + var callbackOutput = null; + try { + if (isFunction(callback)) callbackOutput = callback(); + } catch (e) { + return makePromise(e, false); + } + if (isPromiseLike(callbackOutput)) { + return callbackOutput.then(function() { + return makePromise(value, isResolved); + }, function(error) { + return makePromise(error, false); + }); + } else { + return makePromise(value, isResolved); + } + }; + + /** + * @ngdoc method + * @name $q#when + * @kind function + * + * @description + * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. + * This is useful when you are dealing with an object that might or might not be a promise, or if + * the promise comes from a source that can't be trusted. + * + * @param {*} value Value or a promise + * @returns {Promise} Returns a promise of the passed value or promise + */ + + + var when = function(value, callback, errback, progressBack) { + var result = new Deferred(); + result.resolve(value); + return result.promise.then(callback, errback, progressBack); + }; + + /** + * @ngdoc method + * @name $q#resolve + * @kind function + * + * @description + * Alias of {@link ng.$q#when when} to maintain naming consistency with ES6. + * + * @param {*} value Value or a promise + * @returns {Promise} Returns a promise of the passed value or promise + */ + var resolve = when; + + /** + * @ngdoc method + * @name $q#all + * @kind function + * + * @description + * Combines multiple promises into a single promise that is resolved when all of the input + * promises are resolved. + * + * @param {Array.|Object.} promises An array or hash of promises. + * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values, + * each value corresponding to the promise at the same index/key in the `promises` array/hash. + * If any of the promises is resolved with a rejection, this resulting promise will be rejected + * with the same rejection value. + */ + + function all(promises) { + var deferred = new Deferred(), + counter = 0, + results = isArray(promises) ? [] : {}; + + forEach(promises, function(promise, key) { + counter++; + when(promise).then(function(value) { + if (results.hasOwnProperty(key)) return; + results[key] = value; + if (!(--counter)) deferred.resolve(results); + }, function(reason) { + if (results.hasOwnProperty(key)) return; + deferred.reject(reason); + }); + }); + + if (counter === 0) { + deferred.resolve(results); + } + + return deferred.promise; + } + + var $Q = function Q(resolver) { + if (!isFunction(resolver)) { + throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver); + } + + if (!(this instanceof Q)) { + // More useful when $Q is the Promise itself. + return new Q(resolver); + } + + var deferred = new Deferred(); + + function resolveFn(value) { + deferred.resolve(value); + } + + function rejectFn(reason) { + deferred.reject(reason); + } + + resolver(resolveFn, rejectFn); + + return deferred.promise; + }; + + $Q.defer = defer; + $Q.reject = reject; + $Q.when = when; + $Q.resolve = resolve; + $Q.all = all; + + return $Q; +} + +function $$RAFProvider() { //rAF + this.$get = ['$window', '$timeout', function($window, $timeout) { + var requestAnimationFrame = $window.requestAnimationFrame || + $window.webkitRequestAnimationFrame; + + var cancelAnimationFrame = $window.cancelAnimationFrame || + $window.webkitCancelAnimationFrame || + $window.webkitCancelRequestAnimationFrame; + + var rafSupported = !!requestAnimationFrame; + var rafFn = rafSupported + ? function(fn) { + var id = requestAnimationFrame(fn); + return function() { + cancelAnimationFrame(id); + }; + } + : function(fn) { + var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666 + return function() { + $timeout.cancel(timer); + }; + }; + + queueFn.supported = rafSupported; + + var cancelLastRAF; + var taskCount = 0; + var taskQueue = []; + return queueFn; + + function flush() { + for (var i = 0; i < taskQueue.length; i++) { + var task = taskQueue[i]; + if (task) { + taskQueue[i] = null; + task(); + } + } + taskCount = taskQueue.length = 0; + } + + function queueFn(asyncFn) { + var index = taskQueue.length; + + taskCount++; + taskQueue.push(asyncFn); + + if (index === 0) { + cancelLastRAF = rafFn(flush); + } + + return function cancelQueueFn() { + if (index >= 0) { + taskQueue[index] = null; + index = null; + + if (--taskCount === 0 && cancelLastRAF) { + cancelLastRAF(); + cancelLastRAF = null; + taskQueue.length = 0; + } + } + }; + } + }]; +} + +/** + * DESIGN NOTES + * + * The design decisions behind the scope are heavily favored for speed and memory consumption. + * + * The typical use of scope is to watch the expressions, which most of the time return the same + * value as last time so we optimize the operation. + * + * Closures construction is expensive in terms of speed as well as memory: + * - No closures, instead use prototypical inheritance for API + * - Internal state needs to be stored on scope directly, which means that private state is + * exposed as $$____ properties + * + * Loop operations are optimized by using while(count--) { ... } + * - this means that in order to keep the same order of execution as addition we have to add + * items to the array at the beginning (unshift) instead of at the end (push) + * + * Child scopes are created and removed often + * - Using an array would be slow since inserts in middle are expensive so we use linked list + * + * There are few watches then a lot of observers. This is why you don't want the observer to be + * implemented in the same way as watch. Watch requires return of initialization function which + * are expensive to construct. + */ + + +/** + * @ngdoc provider + * @name $rootScopeProvider + * @description + * + * Provider for the $rootScope service. + */ + +/** + * @ngdoc method + * @name $rootScopeProvider#digestTtl + * @description + * + * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and + * assuming that the model is unstable. + * + * The current default is 10 iterations. + * + * In complex applications it's possible that the dependencies between `$watch`s will result in + * several digest iterations. However if an application needs more than the default 10 digest + * iterations for its model to stabilize then you should investigate what is causing the model to + * continuously change during the digest. + * + * Increasing the TTL could have performance implications, so you should not change it without + * proper justification. + * + * @param {number} limit The number of digest iterations. + */ + + +/** + * @ngdoc service + * @name $rootScope + * @description + * + * Every application has a single root {@link ng.$rootScope.Scope scope}. + * All other scopes are descendant scopes of the root scope. Scopes provide separation + * between the model and the view, via a mechanism for watching the model for changes. + * They also provide an event emission/broadcast and subscription facility. See the + * {@link guide/scope developer guide on scopes}. + */ +function $RootScopeProvider() { + var TTL = 10; + var $rootScopeMinErr = minErr('$rootScope'); + var lastDirtyWatch = null; + var applyAsyncId = null; + + this.digestTtl = function(value) { + if (arguments.length) { + TTL = value; + } + return TTL; + }; + + function createChildScopeClass(parent) { + function ChildScope() { + this.$$watchers = this.$$nextSibling = + this.$$childHead = this.$$childTail = null; + this.$$listeners = {}; + this.$$listenerCount = {}; + this.$$watchersCount = 0; + this.$id = nextUid(); + this.$$ChildScope = null; + } + ChildScope.prototype = parent; + return ChildScope; + } + + this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser', + function($injector, $exceptionHandler, $parse, $browser) { + + function destroyChildScope($event) { + $event.currentScope.$$destroyed = true; + } + + /** + * @ngdoc type + * @name $rootScope.Scope + * + * @description + * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the + * {@link auto.$injector $injector}. Child scopes are created using the + * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when + * compiled HTML template is executed.) + * + * Here is a simple scope snippet to show how you can interact with the scope. + * ```html + * + * ``` + * + * # Inheritance + * A scope can inherit from a parent scope, as in this example: + * ```js + var parent = $rootScope; + var child = parent.$new(); + + parent.salutation = "Hello"; + expect(child.salutation).toEqual('Hello'); + + child.salutation = "Welcome"; expect(child.salutation).toEqual('Welcome'); expect(parent.salutation).toEqual('Hello'); * ``` @@ -13607,6 +15055,7 @@ function $RootScopeProvider() { this.$$destroyed = false; this.$$listeners = {}; this.$$listenerCount = {}; + this.$$watchersCount = 0; this.$$isolateBindings = null; } @@ -13677,15 +15126,7 @@ function $RootScopeProvider() { // Only create a child scope class if somebody asks for one, // but cache it to allow the VM to optimize lookups. if (!this.$$ChildScope) { - this.$$ChildScope = function ChildScope() { - this.$$watchers = this.$$nextSibling = - this.$$childHead = this.$$childTail = null; - this.$$listeners = {}; - this.$$listenerCount = {}; - this.$id = nextUid(); - this.$$ChildScope = null; - }; - this.$$ChildScope.prototype = this; + this.$$ChildScope = createChildScopeClass(this); } child = new this.$$ChildScope(); } @@ -13703,13 +15144,9 @@ function $RootScopeProvider() { // prototypically. In all other cases, this property needs to be set // when the parent scope is destroyed. // The listener needs to be added after the parent is set - if (isolate || parent != this) child.$on('$destroy', destroyChild); + if (isolate || parent != this) child.$on('$destroy', destroyChildScope); return child; - - function destroyChild() { - child.$$destroyed = true; - } }, /** @@ -13828,11 +15265,11 @@ function $RootScopeProvider() { * comparing for reference equality. * @returns {function()} Returns a deregistration function for this listener. */ - $watch: function(watchExp, listener, objectEquality) { + $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) { var get = $parse(watchExp); if (get.$$watchDelegate) { - return get.$$watchDelegate(this, listener, objectEquality, get); + return get.$$watchDelegate(this, listener, objectEquality, get, watchExp); } var scope = this, array = scope.$$watchers, @@ -13840,7 +15277,7 @@ function $RootScopeProvider() { fn: listener, last: initWatchVal, get: get, - exp: watchExp, + exp: prettyPrintExpression || watchExp, eq: !!objectEquality }; @@ -13856,9 +15293,12 @@ function $RootScopeProvider() { // we use unshift since we use a while loop in $digest for speed. // the while loop reads in reverse order. array.unshift(watcher); + incrementWatchersCount(this, 1); return function deregisterWatch() { - arrayRemove(array, watcher); + if (arrayRemove(array, watcher) >= 0) { + incrementWatchersCount(scope, -1); + } lastDirtyWatch = null; }; }, @@ -14266,7 +15706,7 @@ function $RootScopeProvider() { // Insanity Warning: scope depth-first traversal // yes, this code is a bit crazy, but it works and we have tests to prove it! // this piece should be kept in sync with the traversal in $broadcast - if (!(next = (current.$$childHead || + if (!(next = ((current.$$watchersCount && current.$$childHead) || (current !== target && current.$$nextSibling)))) { while (current !== target && !(next = current.$$nextSibling)) { current = current.$parent; @@ -14333,22 +15773,27 @@ function $RootScopeProvider() { * clean up DOM bindings before an element is removed from the DOM. */ $destroy: function() { - // we can't destroy the root scope or a scope that has been already destroyed + // We can't destroy a scope that has been already destroyed. if (this.$$destroyed) return; var parent = this.$parent; this.$broadcast('$destroy'); this.$$destroyed = true; - if (this === $rootScope) return; + if (this === $rootScope) { + //Remove handlers attached to window when $rootScope is removed + $browser.$$applicationDestroyed(); + } + + incrementWatchersCount(this, -this.$$watchersCount); for (var eventName in this.$$listenerCount) { decrementListenerCount(this, this.$$listenerCount[eventName], eventName); } // sever all the references to parent scopes (after this cleanup, the current scope should // not be retained by any of our references and should be eligible for garbage collection) - if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; - if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; + if (parent && parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; + if (parent && parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling; if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling; @@ -14762,6 +16207,11 @@ function $RootScopeProvider() { $rootScope.$$phase = null; } + function incrementWatchersCount(current, count) { + do { + current.$$watchersCount += count; + } while ((current = current.$parent)); + } function decrementListenerCount(current, count, name) { do { @@ -14870,6 +16320,17 @@ function $$SanitizeUriProvider() { }; } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + var $sceMinErr = minErr('$sce'); var SCE_CONTEXTS = { @@ -15283,7 +16744,7 @@ function $SceDelegateProvider() { * Here's an example of a binding in a privileged context: * * ``` - * + * *
* ``` * @@ -15667,7 +17128,7 @@ function $SceProvider() { * escaping. * * @param {string} type The kind of context in which this value is safe for use. e.g. url, - * resource_url, html, js and css. + * resourceUrl, html, js and css. * @param {*} value The value that that should be considered trusted/safe. * @returns {*} A value that can be used to stand in for the provided `value` in places * where Angular expects a $sce.trustAs() return value. @@ -15936,7 +17397,7 @@ function $SnifferProvider() { this.$get = ['$window', '$document', function($window, $document) { var eventSupport = {}, android = - int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]), + toInt((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]), boxee = /Boxee/i.test(($window.navigator || {}).userAgent), document = $document[0] || {}, vendorPrefix, @@ -15963,8 +17424,8 @@ function $SnifferProvider() { animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle)); if (android && (!transitions || !animations)) { - transitions = isString(document.body.style.webkitTransition); - animations = isString(document.body.style.webkitAnimation); + transitions = isString(bodyStyle.webkitTransition); + animations = isString(bodyStyle.webkitAnimation); } } @@ -16012,23 +17473,34 @@ var $compileMinErr = minErr('$compile'); * @name $templateRequest * * @description - * The `$templateRequest` service downloads the provided template using `$http` and, upon success, - * stores the contents inside of `$templateCache`. If the HTTP request fails or the response data - * of the HTTP request is empty, a `$compile` error will be thrown (the exception can be thwarted - * by setting the 2nd parameter of the function to true). - * - * @param {string} tpl The HTTP request template URL + * The `$templateRequest` service runs security checks then downloads the provided template using + * `$http` and, upon success, stores the contents inside of `$templateCache`. If the HTTP request + * fails or the response data of the HTTP request is empty, a `$compile` error will be thrown (the + * exception can be thwarted by setting the 2nd parameter of the function to true). Note that the + * contents of `$templateCache` are trusted, so the call to `$sce.getTrustedUrl(tpl)` is omitted + * when `tpl` is of type string and `$templateCache` has the matching entry. + * + * @param {string|TrustedResourceUrl} tpl The HTTP request template URL * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty * - * @return {Promise} the HTTP Promise for the given. + * @return {Promise} a promise for the HTTP response data of the given URL. * * @property {number} totalPendingRequests total amount of pending template requests being downloaded. */ function $TemplateRequestProvider() { - this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) { + this.$get = ['$templateCache', '$http', '$q', '$sce', function($templateCache, $http, $q, $sce) { function handleRequestFn(tpl, ignoreRequestError) { handleRequestFn.totalPendingRequests++; + // We consider the template cache holds only trusted templates, so + // there's no need to go through whitelisting again for keys that already + // are included in there. This also makes Angular accept any script + // directive, no matter its name. However, we still need to unwrap trusted + // types. + if (!isString(tpl) || !$templateCache.get(tpl)) { + tpl = $sce.getTrustedResourceUrl(tpl); + } + var transformResponse = $http.defaults && $http.defaults.transformResponse; if (isArray(transformResponse)) { @@ -16045,16 +17517,18 @@ function $TemplateRequestProvider() { }; return $http.get(tpl, httpOptions) - .finally(function() { + ['finally'](function() { handleRequestFn.totalPendingRequests--; }) .then(function(response) { + $templateCache.put(tpl, response.data); return response.data; }, handleError); function handleError(resp) { if (!ignoreRequestError) { - throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl); + throw $compileMinErr('tpload', 'Failed to load template: {0} (HTTP status: {1} {2})', + tpl, resp.status, resp.statusText); } return $q.reject(resp); } @@ -16184,6 +17658,7 @@ function $$TestabilityProvider() { function $TimeoutProvider() { this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler', function($rootScope, $browser, $q, $$q, $exceptionHandler) { + var deferreds = {}; @@ -16196,31 +17671,42 @@ function $TimeoutProvider() { * block and delegates any exceptions to * {@link ng.$exceptionHandler $exceptionHandler} service. * - * The return value of registering a timeout function is a promise, which will be resolved when - * the timeout is reached and the timeout function is executed. + * The return value of calling `$timeout` is a promise, which will be resolved when + * the delay has passed and the timeout function, if provided, is executed. * * To cancel a timeout request, call `$timeout.cancel(promise)`. * * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to * synchronously flush the queue of deferred functions. * - * @param {function()} fn A function, whose execution should be delayed. + * If you only want a promise that will be resolved after some specified delay + * then you can call `$timeout` without the `fn` function. + * + * @param {function()=} fn A function, whose execution should be delayed. * @param {number=} [delay=0] Delay in milliseconds. * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @param {...*=} Pass additional parameters to the executed function. * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this * promise will be resolved with is the return value of the `fn` function. * */ function timeout(fn, delay, invokeApply) { - var skipApply = (isDefined(invokeApply) && !invokeApply), + if (!isFunction(fn)) { + invokeApply = delay; + delay = fn; + fn = noop; + } + + var args = sliceArgs(arguments, 3), + skipApply = (isDefined(invokeApply) && !invokeApply), deferred = (skipApply ? $$q : $q).defer(), promise = deferred.promise, timeoutId; timeoutId = $browser.defer(function() { try { - deferred.resolve(fn()); + deferred.resolve(fn.apply(null, args)); } catch (e) { deferred.reject(e); $exceptionHandler(e); @@ -16395,7 +17881,7 @@ function urlIsSameOrigin(requestUrl) { }]);
- +
@@ -16412,6 +17898,61 @@ function $WindowProvider() { this.$get = valueFn(window); } +/** + * @name $$cookieReader + * @requires $document + * + * @description + * This is a private service for reading cookies used by $http and ngCookies + * + * @return {Object} a key/value map of the current cookies + */ +function $$CookieReader($document) { + var rawDocument = $document[0] || {}; + var lastCookies = {}; + var lastCookieString = ''; + + function safeDecodeURIComponent(str) { + try { + return decodeURIComponent(str); + } catch (e) { + return str; + } + } + + return function() { + var cookieArray, cookie, i, index, name; + var currentCookieString = rawDocument.cookie || ''; + + if (currentCookieString !== lastCookieString) { + lastCookieString = currentCookieString; + cookieArray = lastCookieString.split('; '); + lastCookies = {}; + + for (i = 0; i < cookieArray.length; i++) { + cookie = cookieArray[i]; + index = cookie.indexOf('='); + if (index > 0) { //ignore nameless cookies + name = safeDecodeURIComponent(cookie.substring(0, index)); + // the first value that is seen for a cookie is the most + // specific one. values for the same cookie name that + // follow are for less specific paths. + if (lastCookies[name] === undefined) { + lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1)); + } + } + } + } + return lastCookies; + }; +} + +$$CookieReader.$inject = ['$document']; + +function $$CookieReaderProvider() { + this.$get = $$CookieReader; +} + /* global currencyFilter: true, dateFilter: true, filterFilter: true, @@ -16432,6 +17973,13 @@ function $WindowProvider() { * Dependency Injected. To achieve this a filter definition consists of a factory function which is * annotated with dependencies and is responsible for creating a filter function. * + *
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
+ * * ```js * // Filter registration * function MyModule($provide, $filterProvider) { @@ -16513,6 +18061,13 @@ function $FilterProvider($provide) { * @name $filterProvider#register * @param {string|Object} name Name of the filter function, or an object map of filters where * the keys are the filter names and the values are the filter factories. + * + *
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
* @returns {Object} Registered filter instance, or if a map of filters was provided then a map * of the registered filter instances. */ @@ -16594,9 +18149,11 @@ function $FilterProvider($provide) { * `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but * **will** be matched by `{$: 'John'}`. * - * - `function(value, index)`: A predicate function can be used to write arbitrary filters. The - * function is called for each element of `array`. The final result is an array of those - * elements that the predicate returned true for. + * - `function(value, index, array)`: A predicate function can be used to write arbitrary filters. + * The function is called for each element of the array, with the element, its index, and + * the entire array itself as arguments. + * + * The final result is an array of those elements that the predicate returned true for. * * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in * determining if the expected value (from the filter expression) and actual value (from @@ -16614,6 +18171,9 @@ function $FilterProvider($provide) { * - `false|undefined`: A short hand for a function which will look for a substring match in case * insensitive way. * + * Primitive values are converted to strings. Objects are not compared against primitives, + * unless they have a custom `toString` method (e.g. `Date` objects). + * * @example @@ -16624,7 +18184,7 @@ function $FilterProvider($provide) { {name:'Julie', phone:'555-8765'}, {name:'Juliette', phone:'555-5678'}]">
- Search: + @@ -16633,10 +18193,10 @@ function $FilterProvider($provide) {
NamePhone

- Any:
- Name only
- Phone only
- Equality
+
+
+
+
@@ -16684,16 +18244,24 @@ function $FilterProvider($provide) { */ function filterFilter() { return function(array, expression, comparator) { - if (!isArray(array)) return array; + if (!isArrayLike(array)) { + if (array == null) { + return array; + } else { + throw minErr('filter')('notarray', 'Expected array but received: {0}', array); + } + } + var expressionType = getTypeForFilter(expression); var predicateFn; var matchAgainstAnyProp; - switch (typeof expression) { + switch (expressionType) { case 'function': predicateFn = expression; break; case 'boolean': + case 'null': case 'number': case 'string': matchAgainstAnyProp = true; @@ -16706,7 +18274,7 @@ function filterFilter() { return array; } - return array.filter(predicateFn); + return Array.prototype.filter.call(array, predicateFn); }; } @@ -16719,8 +18287,16 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) { comparator = equals; } else if (!isFunction(comparator)) { comparator = function(actual, expected) { - if (isObject(actual) || isObject(expected)) { - // Prevent an object to be considered equal to a string like `'[object'` + if (isUndefined(actual)) { + // No substring matching against `undefined` + return false; + } + if ((actual === null) || (expected === null)) { + // No substring matching against `null`; only match against `null` + return actual === expected; + } + if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) { + // Should not compare primitives against objects, unless they have custom `toString` method return false; } @@ -16741,8 +18317,8 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) { } function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) { - var actualType = typeof actual; - var expectedType = typeof expected; + var actualType = getTypeForFilter(actual); + var expectedType = getTypeForFilter(expected); if ((expectedType === 'string') && (expected.charAt(0) === '!')) { return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp); @@ -16767,7 +18343,7 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc } else if (expectedType === 'object') { for (key in expected) { var expectedVal = expected[key]; - if (isFunction(expectedVal)) { + if (isFunction(expectedVal) || isUndefined(expectedVal)) { continue; } @@ -16789,6 +18365,11 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc } } +// Used for easily differentiating between `null` and actual `object` +function getTypeForFilter(val) { + return (val === null) ? 'null' : typeof val; +} + /** * @ngdoc filter * @name currency @@ -16814,7 +18395,7 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc }]);
-
+
default currency symbol ($): {{amount | currency}}
custom currency identifier (USD$): {{amount | currency:"USD$"}} no fractions (0): {{amount | currency:"USD$":0}} @@ -16869,8 +18450,11 @@ function currencyFilter($locale) { * @description * Formats a number as text. * + * If the input is null or undefined, it will just be returned. + * If the input is infinite (Infinity/-Infinity) the Infinity symbol '∞' is returned. * If the input is not a number an empty string is returned. * + * * @param {number|string} number Number to format. * @param {(number|string)=} fractionSize Number of decimal places to round the number to. * If this is not provided then the fraction size is computed from the current locale's number @@ -16887,7 +18471,7 @@ function currencyFilter($locale) { }]);
- Enter number:
+
Default formatting: {{val | number}}
No fractions: {{val | number:0}}
Negative number: {{-val | number:4}} @@ -16927,16 +18511,22 @@ function numberFilter($locale) { var DECIMAL_SEP = '.'; function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { - if (!isFinite(number) || isObject(number)) return ''; + if (isObject(number)) return ''; var isNegative = number < 0; number = Math.abs(number); + + var isInfinity = number === Infinity; + if (!isInfinity && !isFinite(number)) return ''; + var numStr = number + '', formatedText = '', + hasExponent = false, parts = []; - var hasExponent = false; - if (numStr.indexOf('e') !== -1) { + if (isInfinity) formatedText = '\u221e'; + + if (!isInfinity && numStr.indexOf('e') !== -1) { var match = numStr.match(/([\d\.]+)e(-?)(\d+)/); if (match && match[2] == '-' && match[3] > fractionSize + 1) { number = 0; @@ -16946,7 +18536,7 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { } } - if (!hasExponent) { + if (!isInfinity && !hasExponent) { var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length; // determine fractionSize if it is not specified @@ -17015,8 +18605,9 @@ function padNumber(num, digits, trim) { } num = '' + num; while (num.length < digits) num = '0' + num; - if (trim) + if (trim) { num = num.substr(num.length - digits); + } return neg + num; } @@ -17025,8 +18616,9 @@ function dateGetter(name, size, offset, trim) { offset = offset || 0; return function(date) { var value = date['get' + name](); - if (offset > 0 || value > -offset) + if (offset > 0 || value > -offset) { value += offset; + } if (value === 0 && offset == -12) value = 12; return padNumber(value, size, trim); }; @@ -17041,8 +18633,8 @@ function dateStrGetter(name, shortForm) { }; } -function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset(); +function timeZoneGetter(date, formats, offset) { + var zone = -1 * offset; var paddedZone = (zone >= 0) ? "+" : ""; paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) + @@ -17081,6 +18673,14 @@ function ampmGetter(date, formats) { return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1]; } +function eraGetter(date, formats) { + return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1]; +} + +function longEraGetter(date, formats) { + return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1]; +} + var DATE_FORMATS = { yyyy: dateGetter('FullYear', 4), yy: dateGetter('FullYear', 2, 0, true), @@ -17107,10 +18707,14 @@ var DATE_FORMATS = { a: ampmGetter, Z: timeZoneGetter, ww: weekGetter(2), - w: weekGetter(1) + w: weekGetter(1), + G: eraGetter, + GG: eraGetter, + GGG: eraGetter, + GGGG: longEraGetter }; -var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/, +var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, NUMBER_STRING = /^\-?\d+$/; /** @@ -17147,6 +18751,8 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200) * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year * * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year + * * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD') + * * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini') * * `format` string can also be one of the following predefined * {@link guide/i18n localizable formats}: @@ -17172,7 +18778,9 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d * specified in the string input, the time is considered to be in the local timezone. * @param {string=} format Formatting rules (see Description). If not specified, * `mediumDate` is used. - * @param {string=} timezone Timezone to be used for formatting. Right now, only `'UTC'` is supported. + * @param {string=} timezone Timezone to be used for formatting. It understands UTC/GMT and the + * continental US time zone abbreviations, but for general use, use a time zone offset, for + * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian) * If not specified, the timezone of the browser will be used. * @returns {string} Formatted string or the input if input is not recognized as date/millis. * @@ -17218,13 +18826,13 @@ function dateFilter($locale) { timeSetter = match[8] ? date.setUTCHours : date.setHours; if (match[9]) { - tzHour = int(match[9] + match[10]); - tzMin = int(match[9] + match[11]); + tzHour = toInt(match[9] + match[10]); + tzMin = toInt(match[9] + match[11]); } - dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3])); - var h = int(match[4] || 0) - tzHour; - var m = int(match[5] || 0) - tzMin; - var s = int(match[6] || 0); + dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3])); + var h = toInt(match[4] || 0) - tzHour; + var m = toInt(match[5] || 0) - tzMin; + var s = toInt(match[6] || 0); var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000); timeSetter.call(date, h, m, s, ms); return date; @@ -17241,14 +18849,14 @@ function dateFilter($locale) { format = format || 'mediumDate'; format = $locale.DATETIME_FORMATS[format] || format; if (isString(date)) { - date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date); + date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date); } if (isNumber(date)) { date = new Date(date); } - if (!isDate(date)) { + if (!isDate(date) || !isFinite(date.getTime())) { return date; } @@ -17263,13 +18871,14 @@ function dateFilter($locale) { } } - if (timezone && timezone === 'UTC') { - date = new Date(date.getTime()); - date.setMinutes(date.getMinutes() + date.getTimezoneOffset()); + var dateTimezoneOffset = date.getTimezoneOffset(); + if (timezone) { + dateTimezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset()); + date = convertTimezoneToLocal(date, timezone, true); } forEach(parts, function(value) { fn = DATE_FORMATS[value]; - text += fn ? fn(date, $locale.DATETIME_FORMATS) + text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset) : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); }); @@ -17355,7 +18964,10 @@ var uppercaseFilter = valueFn(uppercase); * @param {string|number} limit The length of the returned array or string. If the `limit` number * is positive, `limit` number of items from the beginning of the source array/string are copied. * If the number is negative, `limit` number of items from the end of the source array/string - * are copied. The `limit` will be trimmed if it exceeds `array.length` + * are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined, + * the input will be returned unchanged. + * @param {(string|number)=} begin Index at which to begin limitation. As a negative index, `begin` + * indicates an offset from the end of `input`. Defaults to `0`. * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array * had less than `limit` elements. * @@ -17374,11 +18986,20 @@ var uppercaseFilter = valueFn(uppercase); }]);
- Limit {{numbers}} to: +

Output numbers: {{ numbers | limitTo:numLimit }}

- Limit {{letters}} to: +

Output letters: {{ letters | limitTo:letterLimit }}

- Limit {{longNumber}} to: +

Output long number: {{ longNumber | limitTo:longNumberLimit }}

@@ -17427,21 +19048,28 @@ var uppercaseFilter = valueFn(uppercase); */ function limitToFilter() { - return function(input, limit) { - if (isNumber(input)) input = input.toString(); - if (!isArray(input) && !isString(input)) return input; - + return function(input, limit, begin) { if (Math.abs(Number(limit)) === Infinity) { limit = Number(limit); } else { - limit = int(limit); + limit = toInt(limit); } + if (isNaN(limit)) return input; + + if (isNumber(input)) input = input.toString(); + if (!isArray(input) && !isString(input)) return input; - //NaN check on limit - if (limit) { - return limit > 0 ? input.slice(0, limit) : input.slice(limit); + begin = (!begin || isNaN(begin)) ? 0 : toInt(begin); + begin = (begin < 0 && begin >= -input.length) ? input.length + begin : begin; + + if (limit >= 0) { + return input.slice(begin, begin + limit); } else { - return isString(input) ? "" : []; + if (begin === 0) { + return input.slice(limit, input.length); + } else { + return input.slice(Math.max(0, begin + limit), begin); + } } }; } @@ -17454,7 +19082,7 @@ function limitToFilter() { * @description * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically * for strings and numerically for numbers. Note: if you notice numbers are not being sorted - * correctly, make sure they are actually being saved as numbers and not strings. + * as expected, make sure they are actually being saved as numbers and not strings. * * @param {Array} array The array to sort. * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be @@ -17463,7 +19091,7 @@ function limitToFilter() { * Can be one of: * * - `function`: Getter function. The result of this function will be sorted using the - * `<`, `=`, `>` operator. + * `<`, `===`, `>` operator. * - `string`: An Angular expression. The result of this expression is used to compare elements * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by * 3 first characters of a property called `name`). The result of a constant expression @@ -17480,6 +19108,43 @@ function limitToFilter() { * @param {boolean=} reverse Reverse the order of the array. * @returns {Array} Sorted copy of the source array. * + * + * @example + * The example below demonstrates a simple ngRepeat, where the data is sorted + * by age in descending order (predicate is set to `'-age'`). + * `reverse` is not set, which means it defaults to `false`. + + + +
+
NamePhone
+ + + + + + + + + + +
NamePhone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + + * + * The predicate and reverse parameters can be controlled dynamically through scope properties, + * as shown in the next example. * @example @@ -17492,19 +19157,40 @@ function limitToFilter() { {name:'Mike', phone:'555-4321', age:21}, {name:'Adam', phone:'555-5678', age:35}, {name:'Julie', phone:'555-8765', age:29}]; - $scope.predicate = '-age'; + $scope.predicate = 'age'; + $scope.reverse = true; + $scope.order = function(predicate) { + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; + $scope.predicate = predicate; + }; }]); +
Sorting predicate = {{predicate}}; reverse = {{reverse}}

[ unsorted ] - - - + + + @@ -17564,90 +19250,116 @@ function limitToFilter() { orderByFilter.$inject = ['$parse']; function orderByFilter($parse) { return function(array, sortPredicate, reverseOrder) { + if (!(isArrayLike(array))) return array; - sortPredicate = isArray(sortPredicate) ? sortPredicate : [sortPredicate]; + + if (!isArray(sortPredicate)) { sortPredicate = [sortPredicate]; } if (sortPredicate.length === 0) { sortPredicate = ['+']; } - sortPredicate = sortPredicate.map(function(predicate) { - var descending = false, get = predicate || identity; - if (isString(predicate)) { + + var predicates = processPredicates(sortPredicate, reverseOrder); + + // The next three lines are a version of a Swartzian Transform idiom from Perl + // (sometimes called the Decorate-Sort-Undecorate idiom) + // See https://en.wikipedia.org/wiki/Schwartzian_transform + var compareValues = Array.prototype.map.call(array, getComparisonObject); + compareValues.sort(doComparison); + array = compareValues.map(function(item) { return item.value; }); + + return array; + + function getComparisonObject(value, index) { + return { + value: value, + predicateValues: predicates.map(function(predicate) { + return getPredicateValue(predicate.get(value), index); + }) + }; + } + + function doComparison(v1, v2) { + var result = 0; + for (var index=0, length = predicates.length; index < length; ++index) { + result = compare(v1.predicateValues[index], v2.predicateValues[index]) * predicates[index].descending; + if (result) break; + } + return result; + } + }; + + function processPredicates(sortPredicate, reverseOrder) { + reverseOrder = reverseOrder ? -1 : 1; + return sortPredicate.map(function(predicate) { + var descending = 1, get = identity; + + if (isFunction(predicate)) { + get = predicate; + } else if (isString(predicate)) { if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) { - descending = predicate.charAt(0) == '-'; + descending = predicate.charAt(0) == '-' ? -1 : 1; predicate = predicate.substring(1); } - if (predicate === '') { - // Effectively no predicate was passed so we compare identity - return reverseComparator(compare, descending); - } - get = $parse(predicate); - if (get.constant) { - var key = get(); - return reverseComparator(function(a, b) { - return compare(a[key], b[key]); - }, descending); + if (predicate !== '') { + get = $parse(predicate); + if (get.constant) { + var key = get(); + get = function(value) { return value[key]; }; + } } } - return reverseComparator(function(a, b) { - return compare(get(a),get(b)); - }, descending); + return { get: get, descending: descending * reverseOrder }; }); - return slice.call(array).sort(reverseComparator(comparator, reverseOrder)); + } - function comparator(o1, o2) { - for (var i = 0; i < sortPredicate.length; i++) { - var comp = sortPredicate[i](o1, o2); - if (comp !== 0) return comp; - } - return 0; - } - function reverseComparator(comp, descending) { - return descending - ? function(a, b) {return comp(b,a);} - : comp; + function isPrimitive(value) { + switch (typeof value) { + case 'number': /* falls through */ + case 'boolean': /* falls through */ + case 'string': + return true; + default: + return false; } + } - function isPrimitive(value) { - switch (typeof value) { - case 'number': /* falls through */ - case 'boolean': /* falls through */ - case 'string': - return true; - default: - return false; - } + function objectValue(value, index) { + // If `valueOf` is a valid function use that + if (typeof value.valueOf === 'function') { + value = value.valueOf(); + if (isPrimitive(value)) return value; } - - function objectToString(value) { - if (value === null) return 'null'; - if (typeof value.valueOf === 'function') { - value = value.valueOf(); - if (isPrimitive(value)) return value; - } - if (typeof value.toString === 'function') { - value = value.toString(); - if (isPrimitive(value)) return value; - } - return ''; + // If `toString` is a valid function and not the one from `Object.prototype` use that + if (hasCustomToString(value)) { + value = value.toString(); + if (isPrimitive(value)) return value; } + // We have a basic object so we use the position of the object in the collection + return index; + } - function compare(v1, v2) { - var t1 = typeof v1; - var t2 = typeof v2; - if (t1 === t2 && t1 === "object") { - v1 = objectToString(v1); - v2 = objectToString(v2); - } - if (t1 === t2) { - if (t1 === "string") { - v1 = v1.toLowerCase(); - v2 = v2.toLowerCase(); - } - if (v1 === v2) return 0; - return v1 < v2 ? -1 : 1; - } else { - return t1 < t2 ? -1 : 1; + function getPredicateValue(value, index) { + var type = typeof value; + if (value === null) { + type = 'string'; + value = 'null'; + } else if (type === 'string') { + value = value.toLowerCase(); + } else if (type === 'object') { + value = objectValue(value, index); + } + return { value: value, type: type }; + } + + function compare(v1, v2) { + var result = 0; + if (v1.type === v2.type) { + if (v1.value !== v2.value) { + result = v1.value < v2.value ? -1 : 1; } + } else { + result = v1.type < v2.type ? -1 : 1; } - }; + return result; + } } function ngDirective(directive) { @@ -17676,7 +19388,7 @@ function ngDirective(directive) { var htmlAnchorDirective = valueFn({ restrict: 'E', compile: function(element, attr) { - if (!attr.href && !attr.xlinkHref && !attr.name) { + if (!attr.href && !attr.xlinkHref) { return function(scope, element) { // If the linked element is not an anchor tag anymore, do nothing if (element[0].nodeName.toLowerCase() !== 'a') return; @@ -17763,7 +19475,7 @@ var htmlAnchorDirective = valueFn({ }, 5000, 'page should navigate to /123'); }); - xit('should execute ng-click but not reload when href empty string and name specified', function() { + it('should execute ng-click but not reload when href empty string and name specified', function() { element(by.id('link-4')).click(); expect(element(by.model('value')).getAttribute('value')).toEqual('4'); expect(element(by.id('link-4')).getAttribute('href')).toBe(''); @@ -17808,12 +19520,12 @@ var htmlAnchorDirective = valueFn({ * * The buggy way to write it: * ```html - * + * Description * ``` * * The correct way to write it: * ```html - * + * Description * ``` * * @element IMG @@ -17834,12 +19546,12 @@ var htmlAnchorDirective = valueFn({ * * The buggy way to write it: * ```html - * + * Description * ``` * * The correct way to write it: * ```html - * + * Description * ``` * * @element IMG @@ -17854,25 +19566,29 @@ var htmlAnchorDirective = valueFn({ * * @description * - * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs: + * This directive sets the `disabled` attribute on the element if the + * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `disabled` + * attribute. The following example would make the button enabled on Chrome/Firefox + * but not on older IEs: + * * ```html - *
- * + * + *
+ * *
* ``` * - * The HTML specification does not require browsers to preserve the values of boolean attributes - * such as disabled. (Their presence means true and their absence means false.) + * This is because the HTML specification does not require browsers to preserve the values of + * boolean attributes such as `disabled` (Their presence means true and their absence means false.) * If we put an Angular interpolation expression into such an attribute then the * binding information would be lost when the browser removes the attribute. - * The `ngDisabled` directive solves this problem for the `disabled` attribute. - * This complementary directive is not removed by the browser and so provides - * a permanent reliable place to store the binding information. * * @example - Click me to toggle:
+
@@ -17886,7 +19602,7 @@ var htmlAnchorDirective = valueFn({ * * @element INPUT * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy, - * then special attribute "disabled" will be set on the element + * then the `disabled` attribute will be set on the element */ @@ -17897,6 +19613,13 @@ var htmlAnchorDirective = valueFn({ * @priority 100 * * @description + * Sets the `checked` attribute on the element, if the expression inside `ngChecked` is truthy. + * + * Note that this directive should not be used together with {@link ngModel `ngModel`}, + * as this can lead to unexpected behavior. + * + * ### Why do we need `ngChecked`? + * * The HTML specification does not require browsers to preserve the values of boolean attributes * such as checked. (Their presence means true and their absence means false.) * If we put an Angular interpolation expression into such an attribute then the @@ -17907,8 +19630,8 @@ var htmlAnchorDirective = valueFn({ * @example - Check me to check both:
- +
+
it('should check both checkBoxes', function() { @@ -17921,7 +19644,7 @@ var htmlAnchorDirective = valueFn({ * * @element INPUT * @param {expression} ngChecked If the {@link guide/expression expression} is truthy, - * then special attribute "checked" will be set on the element + * then the `checked` attribute will be set on the element */ @@ -17942,8 +19665,8 @@ var htmlAnchorDirective = valueFn({ * @example - Check me to make text readonly:
- +
+
it('should toggle readonly attr', function() { @@ -17978,8 +19701,8 @@ var htmlAnchorDirective = valueFn({ * @example - Check me to select:
-
+ @@ -18015,7 +19738,7 @@ var htmlAnchorDirective = valueFn({ * @example - Check me check multiple:
+
Show/Hide me
@@ -18036,22 +19759,34 @@ var htmlAnchorDirective = valueFn({ var ngAttributeAliasDirectives = {}; - // boolean attrs are evaluated forEach(BOOLEAN_ATTR, function(propName, attrName) { // binding to multiple is not supported if (propName == "multiple") return; + function defaultLinkFn(scope, element, attr) { + scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) { + attr.$set(attrName, !!value); + }); + } + var normalized = directiveNormalize('ng-' + attrName); + var linkFn = defaultLinkFn; + + if (propName === 'checked') { + linkFn = function(scope, element, attr) { + // ensuring ngChecked doesn't interfere with ngModel when both are set on the same input + if (attr.ngModel !== attr[normalized]) { + defaultLinkFn(scope, element, attr); + } + }; + } + ngAttributeAliasDirectives[normalized] = function() { return { restrict: 'A', priority: 100, - link: function(scope, element, attr) { - scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) { - attr.$set(attrName, !!value); - }); - } + link: linkFn }; }; }); @@ -18434,7 +20169,7 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { * * # Alias: {@link ng.directive:ngForm `ngForm`} * - * In Angular forms can be nested. This means that the outer form is valid when all of the child + * In Angular, forms can be nested. This means that the outer form is valid when all of the child * forms are valid as well. However, browsers do not allow nesting of `
` elements, so * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to * `` but can be nested. This allows you to have nested forms, which is very useful when @@ -18533,11 +20268,11 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { userType: Required!
- userType = {{userType}}
- myForm.input.$valid = {{myForm.input.$valid}}
- myForm.input.$error = {{myForm.input.$error}}
- myForm.$valid = {{myForm.$valid}}
- myForm.$error.required = {{!!myForm.$error.required}}
+ userType = {{userType}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
@@ -18572,10 +20307,12 @@ var formDirectiveFactory = function(isNgForm) { name: 'form', restrict: isNgForm ? 'EAC' : 'E', controller: FormController, - compile: function ngFormCompile(formElement) { + compile: function ngFormCompile(formElement, attr) { // Setup initial state of the control formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS); + var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false); + return { pre: function ngFormPreLink(scope, formElement, attr, controller) { // if `action` attr is not present on the form, prevent the default action (submission) @@ -18606,23 +20343,21 @@ var formDirectiveFactory = function(isNgForm) { }); } - var parentFormCtrl = controller.$$parentForm, - alias = controller.$name; - - if (alias) { - setter(scope, null, alias, controller, alias); - attr.$observe(attr.name ? 'name' : 'ngForm', function(newValue) { - if (alias === newValue) return; - setter(scope, null, alias, undefined, alias); - alias = newValue; - setter(scope, null, alias, controller, alias); - parentFormCtrl.$$renameControl(controller, alias); + var parentFormCtrl = controller.$$parentForm; + + if (nameAttr) { + setter(scope, controller.$name, controller, controller.$name); + attr.$observe(nameAttr, function(newValue) { + if (controller.$name === newValue) return; + setter(scope, controller.$name, undefined, controller.$name); + parentFormCtrl.$$renameControl(controller, newValue); + setter(scope, controller.$name, controller, controller.$name); }); } formElement.on('$destroy', function() { parentFormCtrl.$removeControl(controller); - if (alias) { - setter(scope, null, alias, undefined, alias); + if (nameAttr) { + setter(scope, attr[nameAttr], undefined, controller.$name); } extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards }); @@ -18651,7 +20386,7 @@ var ngFormDirective = formDirectiveFactory(true); var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/; var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/; var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; -var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; +var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/; var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/; var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/; @@ -18684,9 +20419,13 @@ var inputType = { * as in the ngPattern directive. * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match * a RegExp found by evaluating the Angular expression given in the attribute value. - * If the expression evaluates to a RegExp object then this is used directly. - * If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$` - * characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. * @param {string=} ngChange Angular expression to be executed when input changes due to user * interaction with the input element. * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input. @@ -18706,13 +20445,16 @@ var inputType = { }]);
- Single word: - - Required! - - Single word only! - + +
+ + Required! + + Single word only! +
text = {{example.text}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -18791,13 +20533,15 @@ var inputType = { }]); - Pick a date in 2013: + - - Required! - - Not a valid date! +
+ + Required! + + Not a valid date! +
value = {{example.value | date: "yyyy-MM-dd"}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -18884,13 +20628,15 @@ var inputType = { }]); - Pick a date between in 2013: + - - Required! - - Not a valid date! +
+ + Required! + + Not a valid date! +
value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -18978,13 +20724,15 @@ var inputType = { }]); - Pick a between 8am and 5pm: + - - Required! - - Not a valid date! +
+ + Required! + + Not a valid date! +
value = {{example.value | date: "HH:mm:ss"}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -19071,13 +20819,17 @@ var inputType = { }]); - Pick a date between in 2013: - - - Required! - - Not a valid date! + +
+ + Required! + + Not a valid date! +
value = {{example.value | date: "yyyy-Www"}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -19164,13 +20916,15 @@ var inputType = { }]); - Pick a month in 2013: + - - Required! - - Not a valid month! +
+ + Required! + + Not a valid month! +
value = {{example.value | date: "yyyy-MM"}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -19225,7 +20979,21 @@ var inputType = { * Text input with number validation and transformation. Sets the `number` validation * error if not a valid number. * - * The model must always be a number, otherwise Angular will throw an error. + *
+ * The model must always be of type `number` otherwise Angular will throw an error. + * Be aware that a string containing a number is not enough. See the {@link ngModel:numfmt} + * error docs for more information and an example of how to convert your model if necessary. + *
+ * + * ## Issues with HTML5 constraint validation + * + * In browsers that follow the + * [HTML5 specification](https://html.spec.whatwg.org/multipage/forms.html#number-state-%28type=number%29), + * `input[number]` does not work as expected with {@link ngModelOptions `ngModelOptions.allowInvalid`}. + * If a non-number is entered in the input, the browser will report the value as an empty string, + * which means the view / model values in `ngModel` and subsequently the scope value + * will also be an empty string. + * * * @param {string} ngModel Assignable angular expression to data-bind to. * @param {string=} name Property name of the form under which the control is published. @@ -19245,9 +21013,13 @@ var inputType = { * as in the ngPattern directive. * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match * a RegExp found by evaluating the Angular expression given in the attribute value. - * If the expression evaluates to a RegExp object then this is used directly. - * If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$` - * characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. * @param {string=} ngChange Angular expression to be executed when input changes due to user * interaction with the input element. * @@ -19263,12 +21035,16 @@ var inputType = { }]); - Number: - - Required! - - Not valid number! + +
+ + Required! + + Not valid number! +
value = {{example.value}}
myForm.input.$valid = {{myForm.input.$valid}}
myForm.input.$error = {{myForm.input.$error}}
@@ -19335,9 +21111,13 @@ var inputType = { * as in the ngPattern directive. * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match * a RegExp found by evaluating the Angular expression given in the attribute value. - * If the expression evaluates to a RegExp object then this is used directly. - * If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$` - * characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. * @param {string=} ngChange Angular expression to be executed when input changes due to user * interaction with the input element. * @@ -19353,11 +21133,15 @@ var inputType = { }]); - URL: - - Required! - - Not valid url! +
@@ -20295,7 +22124,7 @@ var ngValueDirective = function() { }]);
- Enter name:
+
Hello !
@@ -20356,8 +22185,8 @@ var ngBindDirective = ['$compile', function($compile) { }]);
- Salutation:
- Name:
+
+

        
@@ -20582,7 +22411,9 @@ function classDirective(name, selector) { } function digestClassCounts(classes, count) { - var classCounts = element.data('$classCounts') || {}; + // Use createMap() to prevent class assumptions involving property + // names in Object.prototype + var classCounts = element.data('$classCounts') || createMap(); var classesToUpdate = []; forEach(classes, function(className) { if (count > 0 || classCounts[className]) { @@ -20639,12 +22470,15 @@ function classDirective(name, selector) { } function arrayClasses(classVal) { + var classes = []; if (isArray(classVal)) { - return classVal; + forEach(classVal, function(v) { + classes = classes.concat(arrayClasses(v)); + }); + return classes; } else if (isString(classVal)) { return classVal.split(' '); } else if (isObject(classVal)) { - var classes = []; forEach(classVal, function(v, k) { if (v) { classes = classes.concat(k.split(' ')); @@ -20672,16 +22506,18 @@ function classDirective(name, selector) { * 1. If the expression evaluates to a string, the string should be one or more space-delimited class * names. * - * 2. If the expression evaluates to an array, each element of the array should be a string that is - * one or more space-delimited class names. - * - * 3. If the expression evaluates to an object, then for each key-value pair of the + * 2. If the expression evaluates to an object, then for each key-value pair of the * object with a truthy value the corresponding key is used as a class name. * + * 3. If the expression evaluates to an array, each element of the array should either be a string as in + * type 1 or an object as in type 2. This means that you can mix strings and objects together in an array + * to give you more control over what CSS classes appear. See the code below for an example of this. + * + * * The directive won't add duplicate classes if a particular class was already set. * - * When the expression changes, the previously added classes are removed and only then the - * new classes are added. + * When the expression changes, the previously added classes are removed and only then are the + * new classes added. * * @animations * **add** - happens just before the class is applied to the elements @@ -20698,22 +22534,39 @@ function classDirective(name, selector) { * @example Example that demonstrates basic bindings via ngClass directive. -

Map Syntax Example

- deleted (apply "strike" class)
- important (apply "bold" class)
- error (apply "red" class) +

Map Syntax Example

+
+
+

Using String Syntax

- +

Using Array Syntax

-
-
-
+
+
+
+
+

Using Array and Map Syntax

+
+
.strike { - text-decoration: line-through; + text-decoration: line-through; } .bold { font-weight: bold; @@ -20721,6 +22574,13 @@ function classDirective(name, selector) { .red { color: red; } + .has-error { + color: red; + background-color: yellow; + } + .orange { + color: orange; + } var ps = element.all(by.css('p')); @@ -20728,13 +22588,13 @@ function classDirective(name, selector) { it('should let you toggle the class', function() { expect(ps.first().getAttribute('class')).not.toMatch(/bold/); - expect(ps.first().getAttribute('class')).not.toMatch(/red/); + expect(ps.first().getAttribute('class')).not.toMatch(/has-error/); element(by.model('important')).click(); expect(ps.first().getAttribute('class')).toMatch(/bold/); element(by.model('error')).click(); - expect(ps.first().getAttribute('class')).toMatch(/red/); + expect(ps.first().getAttribute('class')).toMatch(/has-error/); }); it('should let you toggle string example', function() { @@ -20745,11 +22605,18 @@ function classDirective(name, selector) { }); it('array example should have 3 classes', function() { - expect(ps.last().getAttribute('class')).toBe(''); + expect(ps.get(2).getAttribute('class')).toBe(''); element(by.model('style1')).sendKeys('bold'); element(by.model('style2')).sendKeys('strike'); element(by.model('style3')).sendKeys('red'); - expect(ps.last().getAttribute('class')).toBe('bold strike red'); + expect(ps.get(2).getAttribute('class')).toBe('bold strike red'); + }); + + it('array with map example should have 2 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style4')).sendKeys('bold'); + element(by.model('warning')).click(); + expect(ps.last().getAttribute('class')).toBe('bold orange'); });
@@ -20799,8 +22666,8 @@ function classDirective(name, selector) { The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure. Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure - to view the step by step details of {@link ng.$animate#addClass $animate.addClass} and - {@link ng.$animate#removeClass $animate.removeClass}. + to view the step by step details of {@link $animate#addClass $animate.addClass} and + {@link $animate#removeClass $animate.removeClass}. */ var ngClassDirective = classDirective('', true); @@ -20933,17 +22800,13 @@ var ngClassEvenDirective = classDirective('Even', 1); * document; alternatively, the css rule above must be included in the external stylesheet of the * application. * - * Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they - * cannot match the `[ng\:cloak]` selector. To work around this limitation, you must add the css - * class `ng-cloak` in addition to the `ngCloak` directive as shown in the example below. - * * @element ANY * * @example
{{ 'hello' }}
-
{{ 'hello IE7' }}
+
{{ 'world' }}
it('should remove the template directive and css class', function() { @@ -21027,20 +22890,20 @@ var ngCloakDirective = ngDirective({ * * *
- * Name: - * [ greet ]
+ * + *
* Contact: *
    *
  • - * * * * - * - * [ clear - * | X ] + * + * + * *
  • - *
  • [ add ]
  • + *
  • *
*
*
@@ -21090,12 +22953,12 @@ var ngCloakDirective = ngDirective({ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe('john.smith@example.org'); * - * firstRepeat.element(by.linkText('clear')).click(); + * firstRepeat.element(by.buttonText('clear')).click(); * * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe(''); * - * container.element(by.linkText('add')).click(); + * container.element(by.buttonText('add')).click(); * * expect(container.element(by.repeater('contact in settings.contacts').row(2)) * .element(by.model('contact.value')) @@ -21110,20 +22973,20 @@ var ngCloakDirective = ngDirective({ * * *
- * Name: - * [ greet ]
+ * + *
* Contact: *
    *
  • - * * * * - * - * [ clear - * | X ] + * + * + * *
  • - *
  • [ add ]
  • + *
  • [ ]
  • *
*
*
@@ -21173,12 +23036,12 @@ var ngCloakDirective = ngDirective({ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe('john.smith@example.org'); * - * firstRepeat.element(by.linkText('clear')).click(); + * firstRepeat.element(by.buttonText('clear')).click(); * * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe(''); * - * container.element(by.linkText('add')).click(); + * container.element(by.buttonText('add')).click(); * * expect(container.element(by.repeater('contact in contacts').row(2)) * .element(by.model('contact.value')) @@ -21859,6 +23722,7 @@ forEach( * @ngdoc directive * @name ngIf * @restrict A + * @multiElement * * @description * The `ngIf` directive removes or recreates a portion of the DOM tree based on an @@ -21901,7 +23765,7 @@ forEach( * @example - Click me:
+
Show when checked: This is removed when the checkbox is unchecked. @@ -22157,8 +24021,8 @@ var ngIfDirective = ['$animate', function($animate) { * @param {Object} angularEvent Synthetic event object. * @param {String} src URL of content to load. */ -var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', '$sce', - function($templateRequest, $anchorScroll, $animate, $sce) { +var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', + function($templateRequest, $anchorScroll, $animate) { return { restrict: 'ECA', priority: 400, @@ -22194,7 +24058,7 @@ var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', '$sce } }; - scope.$watch($sce.parseAsResourceUrl(srcExp), function ngIncludeWatchAction(src) { + scope.$watch(srcExp, function ngIncludeWatchAction(src) { var afterAnimation = function() { if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) { $anchorScroll(); @@ -22282,7 +24146,7 @@ var ngIncludeFillContentDirective = ['$compile', * The `ngInit` directive allows you to evaluate an expression in the * current scope. * - *
+ *
* The only appropriate use of `ngInit` is for aliasing special properties of * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you * should use {@link guide/controller controllers} rather than `ngInit` @@ -22369,9 +24233,11 @@ var ngInitDirective = ngDirective({ * * *
- * List: - * + * + * + * * Required! + * *
* names = {{names}}
* myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
@@ -22595,8 +24461,8 @@ is set to `true`. The parse error is stored in `ngModel.$error.parse`. * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`) * collaborate together to achieve the desired result. * - * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element - * contents be edited in place by the user. This will not work on older browsers. + * `contenteditable` is an HTML5 attribute, which tells the browser to let the element + * contents be edited in place by the user. * * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize} * module to automatically remove "bad" content like inline event listener (e.g. ``). @@ -22658,7 +24524,7 @@ is set to `true`. The parse error is stored in `ngModel.$error.parse`. required>Change me!
Required!
- + @@ -22710,1129 +24576,1876 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ ngModelGet = parsedNgModel, ngModelSet = parsedNgModelAssign, pendingDebounce = null, + parserValid, ctrl = this; - this.$$setOptions = function(options) { - ctrl.$options = options; - if (options && options.getterSetter) { - var invokeModelGetter = $parse($attr.ngModel + '()'), - invokeModelSetter = $parse($attr.ngModel + '($$$p)'); + this.$$setOptions = function(options) { + ctrl.$options = options; + if (options && options.getterSetter) { + var invokeModelGetter = $parse($attr.ngModel + '()'), + invokeModelSetter = $parse($attr.ngModel + '($$$p)'); + + ngModelGet = function($scope) { + var modelValue = parsedNgModel($scope); + if (isFunction(modelValue)) { + modelValue = invokeModelGetter($scope); + } + return modelValue; + }; + ngModelSet = function($scope, newValue) { + if (isFunction(parsedNgModel($scope))) { + invokeModelSetter($scope, {$$$p: ctrl.$modelValue}); + } else { + parsedNgModelAssign($scope, ctrl.$modelValue); + } + }; + } else if (!parsedNgModel.assign) { + throw $ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}", + $attr.ngModel, startingTag($element)); + } + }; + + /** + * @ngdoc method + * @name ngModel.NgModelController#$render + * + * @description + * Called when the view needs to be updated. It is expected that the user of the ng-model + * directive will implement this method. + * + * The `$render()` method is invoked in the following situations: + * + * * `$rollbackViewValue()` is called. If we are rolling back the view value to the last + * committed value then `$render()` is called to update the input control. + * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and + * the `$viewValue` are different from last time. + * + * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of + * `$modelValue` and `$viewValue` are actually different from their previous value. If `$modelValue` + * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be + * invoked if you only change a property on the objects. + */ + this.$render = noop; + + /** + * @ngdoc method + * @name ngModel.NgModelController#$isEmpty + * + * @description + * This is called when we need to determine if the value of an input is empty. + * + * For instance, the required directive does this to work out if the input has data or not. + * + * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`. + * + * You can override this for input directives whose concept of being empty is different from the + * default. The `checkboxInputType` directive does this because in its case a value of `false` + * implies empty. + * + * @param {*} value The value of the input to check for emptiness. + * @returns {boolean} True if `value` is "empty". + */ + this.$isEmpty = function(value) { + return isUndefined(value) || value === '' || value === null || value !== value; + }; + + var parentForm = $element.inheritedData('$formController') || nullFormCtrl, + currentValidationRunId = 0; + + /** + * @ngdoc method + * @name ngModel.NgModelController#$setValidity + * + * @description + * Change the validity state, and notify the form. + * + * This method can be called within $parsers/$formatters or a custom validation implementation. + * However, in most cases it should be sufficient to use the `ngModel.$validators` and + * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically. + * + * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned + * to either `$error[validationErrorKey]` or `$pending[validationErrorKey]` + * (for unfulfilled `$asyncValidators`), so that it is available for data-binding. + * The `validationErrorKey` should be in camelCase and will get converted into dash-case + * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error` + * class and can be bound to as `{{someForm.someControl.$error.myError}}` . + * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined), + * or skipped (null). Pending is used for unfulfilled `$asyncValidators`. + * Skipped is used by Angular when validators do not run because of parse errors and + * when `$asyncValidators` do not run because any of the `$validators` failed. + */ + addSetValidityMethod({ + ctrl: this, + $element: $element, + set: function(object, property) { + object[property] = true; + }, + unset: function(object, property) { + delete object[property]; + }, + parentForm: parentForm, + $animate: $animate + }); + + /** + * @ngdoc method + * @name ngModel.NgModelController#$setPristine + * + * @description + * Sets the control to its pristine state. + * + * This method can be called to remove the `ng-dirty` class and set the control to its pristine + * state (`ng-pristine` class). A model is considered to be pristine when the control + * has not been changed from when first compiled. + */ + this.$setPristine = function() { + ctrl.$dirty = false; + ctrl.$pristine = true; + $animate.removeClass($element, DIRTY_CLASS); + $animate.addClass($element, PRISTINE_CLASS); + }; - ngModelGet = function($scope) { - var modelValue = parsedNgModel($scope); - if (isFunction(modelValue)) { - modelValue = invokeModelGetter($scope); - } - return modelValue; - }; - ngModelSet = function($scope, newValue) { - if (isFunction(parsedNgModel($scope))) { - invokeModelSetter($scope, {$$$p: ctrl.$modelValue}); - } else { - parsedNgModelAssign($scope, ctrl.$modelValue); - } - }; - } else if (!parsedNgModel.assign) { - throw $ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}", - $attr.ngModel, startingTag($element)); - } + /** + * @ngdoc method + * @name ngModel.NgModelController#$setDirty + * + * @description + * Sets the control to its dirty state. + * + * This method can be called to remove the `ng-pristine` class and set the control to its dirty + * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed + * from when first compiled. + */ + this.$setDirty = function() { + ctrl.$dirty = true; + ctrl.$pristine = false; + $animate.removeClass($element, PRISTINE_CLASS); + $animate.addClass($element, DIRTY_CLASS); + parentForm.$setDirty(); }; /** * @ngdoc method - * @name ngModel.NgModelController#$render + * @name ngModel.NgModelController#$setUntouched * * @description - * Called when the view needs to be updated. It is expected that the user of the ng-model - * directive will implement this method. + * Sets the control to its untouched state. * - * The `$render()` method is invoked in the following situations: + * This method can be called to remove the `ng-touched` class and set the control to its + * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched + * by default, however this function can be used to restore that state if the model has + * already been touched by the user. + */ + this.$setUntouched = function() { + ctrl.$touched = false; + ctrl.$untouched = true; + $animate.setClass($element, UNTOUCHED_CLASS, TOUCHED_CLASS); + }; + + /** + * @ngdoc method + * @name ngModel.NgModelController#$setTouched * - * * `$rollbackViewValue()` is called. If we are rolling back the view value to the last - * committed value then `$render()` is called to update the input control. - * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and - * the `$viewValue` are different to last time. + * @description + * Sets the control to its touched state. * - * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of - * `$modelValue` and `$viewValue` are actually different to their previous value. If `$modelValue` - * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be - * invoked if you only change a property on the objects. + * This method can be called to remove the `ng-untouched` class and set the control to its + * touched state (`ng-touched` class). A model is considered to be touched when the user has + * first focused the control element and then shifted focus away from the control (blur event). */ - this.$render = noop; + this.$setTouched = function() { + ctrl.$touched = true; + ctrl.$untouched = false; + $animate.setClass($element, TOUCHED_CLASS, UNTOUCHED_CLASS); + }; /** * @ngdoc method - * @name ngModel.NgModelController#$isEmpty + * @name ngModel.NgModelController#$rollbackViewValue * * @description - * This is called when we need to determine if the value of an input is empty. + * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`, + * which may be caused by a pending debounced event or because the input is waiting for a some + * future event. * - * For instance, the required directive does this to work out if the input has data or not. + * If you have an input that uses `ng-model-options` to set up debounced events or events such + * as blur you can have a situation where there is a period when the `$viewValue` + * is out of synch with the ngModel's `$modelValue`. * - * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`. + * In this case, you can run into difficulties if you try to update the ngModel's `$modelValue` + * programmatically before these debounced/future events have resolved/occurred, because Angular's + * dirty checking mechanism is not able to tell whether the model has actually changed or not. * - * You can override this for input directives whose concept of being empty is different to the - * default. The `checkboxInputType` directive does this because in its case a value of `false` - * implies empty. + * The `$rollbackViewValue()` method should be called before programmatically changing the model of an + * input which may have such events pending. This is important in order to make sure that the + * input field will be updated with the new model value and any pending operations are cancelled. * - * @param {*} value The value of the input to check for emptiness. - * @returns {boolean} True if `value` is "empty". + * + * + * angular.module('cancel-update-example', []) + * + * .controller('CancelUpdateController', ['$scope', function($scope) { + * $scope.resetWithCancel = function(e) { + * if (e.keyCode == 27) { + * $scope.myForm.myInput1.$rollbackViewValue(); + * $scope.myValue = ''; + * } + * }; + * $scope.resetWithoutCancel = function(e) { + * if (e.keyCode == 27) { + * $scope.myValue = ''; + * } + * }; + * }]); + * + * + *
+ *

Try typing something in each input. See that the model only updates when you + * blur off the input. + *

+ *

Now see what happens if you start typing then press the Escape key

+ * + *
+ *

With $rollbackViewValue()

+ *
+ * myValue: "{{ myValue }}" + * + *

Without $rollbackViewValue()

+ *
+ * myValue: "{{ myValue }}" + * + *
+ *
+ *
*/ - this.$isEmpty = function(value) { - return isUndefined(value) || value === '' || value === null || value !== value; + this.$rollbackViewValue = function() { + $timeout.cancel(pendingDebounce); + ctrl.$viewValue = ctrl.$$lastCommittedViewValue; + ctrl.$render(); + }; + + /** + * @ngdoc method + * @name ngModel.NgModelController#$validate + * + * @description + * Runs each of the registered validators (first synchronous validators and then + * asynchronous validators). + * If the validity changes to invalid, the model will be set to `undefined`, + * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`. + * If the validity changes to valid, it will set the model to the last available valid + * `$modelValue`, i.e. either the last parsed value or the last value set from the scope. + */ + this.$validate = function() { + // ignore $validate before model is initialized + if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) { + return; + } + + var viewValue = ctrl.$$lastCommittedViewValue; + // Note: we use the $$rawModelValue as $modelValue might have been + // set to undefined during a view -> model update that found validation + // errors. We can't parse the view here, since that could change + // the model although neither viewValue nor the model on the scope changed + var modelValue = ctrl.$$rawModelValue; + + var prevValid = ctrl.$valid; + var prevModelValue = ctrl.$modelValue; + + var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid; + + ctrl.$$runValidators(modelValue, viewValue, function(allValid) { + // If there was no change in validity, don't update the model + // This prevents changing an invalid modelValue to undefined + if (!allowInvalid && prevValid !== allValid) { + // Note: Don't check ctrl.$valid here, as we could have + // external validators (e.g. calculated on the server), + // that just call $setValidity and need the model value + // to calculate their validity. + ctrl.$modelValue = allValid ? modelValue : undefined; + + if (ctrl.$modelValue !== prevModelValue) { + ctrl.$$writeModelToScope(); + } + } + }); + }; - var parentForm = $element.inheritedData('$formController') || nullFormCtrl, - currentValidationRunId = 0; + this.$$runValidators = function(modelValue, viewValue, doneCallback) { + currentValidationRunId++; + var localValidationRunId = currentValidationRunId; + + // check parser error + if (!processParseErrors()) { + validationDone(false); + return; + } + if (!processSyncValidators()) { + validationDone(false); + return; + } + processAsyncValidators(); + + function processParseErrors() { + var errorKey = ctrl.$$parserName || 'parse'; + if (parserValid === undefined) { + setValidity(errorKey, null); + } else { + if (!parserValid) { + forEach(ctrl.$validators, function(v, name) { + setValidity(name, null); + }); + forEach(ctrl.$asyncValidators, function(v, name) { + setValidity(name, null); + }); + } + // Set the parse error last, to prevent unsetting it, should a $validators key == parserName + setValidity(errorKey, parserValid); + return parserValid; + } + return true; + } + + function processSyncValidators() { + var syncValidatorsValid = true; + forEach(ctrl.$validators, function(validator, name) { + var result = validator(modelValue, viewValue); + syncValidatorsValid = syncValidatorsValid && result; + setValidity(name, result); + }); + if (!syncValidatorsValid) { + forEach(ctrl.$asyncValidators, function(v, name) { + setValidity(name, null); + }); + return false; + } + return true; + } + + function processAsyncValidators() { + var validatorPromises = []; + var allValid = true; + forEach(ctrl.$asyncValidators, function(validator, name) { + var promise = validator(modelValue, viewValue); + if (!isPromiseLike(promise)) { + throw $ngModelMinErr("$asyncValidators", + "Expected asynchronous validator to return a promise but got '{0}' instead.", promise); + } + setValidity(name, undefined); + validatorPromises.push(promise.then(function() { + setValidity(name, true); + }, function(error) { + allValid = false; + setValidity(name, false); + })); + }); + if (!validatorPromises.length) { + validationDone(true); + } else { + $q.all(validatorPromises).then(function() { + validationDone(allValid); + }, noop); + } + } + + function setValidity(name, isValid) { + if (localValidationRunId === currentValidationRunId) { + ctrl.$setValidity(name, isValid); + } + } - /** - * @ngdoc method - * @name ngModel.NgModelController#$setValidity - * - * @description - * Change the validity state, and notify the form. - * - * This method can be called within $parsers/$formatters or a custom validation implementation. - * However, in most cases it should be sufficient to use the `ngModel.$validators` and - * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically. - * - * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned - * to either `$error[validationErrorKey]` or `$pending[validationErrorKey]` - * (for unfulfilled `$asyncValidators`), so that it is available for data-binding. - * The `validationErrorKey` should be in camelCase and will get converted into dash-case - * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error` - * class and can be bound to as `{{someForm.someControl.$error.myError}}` . - * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined), - * or skipped (null). Pending is used for unfulfilled `$asyncValidators`. - * Skipped is used by Angular when validators do not run because of parse errors and - * when `$asyncValidators` do not run because any of the `$validators` failed. - */ - addSetValidityMethod({ - ctrl: this, - $element: $element, - set: function(object, property) { - object[property] = true; - }, - unset: function(object, property) { - delete object[property]; - }, - parentForm: parentForm, - $animate: $animate - }); + function validationDone(allValid) { + if (localValidationRunId === currentValidationRunId) { - /** - * @ngdoc method - * @name ngModel.NgModelController#$setPristine - * - * @description - * Sets the control to its pristine state. - * - * This method can be called to remove the `ng-dirty` class and set the control to its pristine - * state (`ng-pristine` class). A model is considered to be pristine when the control - * has not been changed from when first compiled. - */ - this.$setPristine = function() { - ctrl.$dirty = false; - ctrl.$pristine = true; - $animate.removeClass($element, DIRTY_CLASS); - $animate.addClass($element, PRISTINE_CLASS); + doneCallback(allValid); + } + } }; /** * @ngdoc method - * @name ngModel.NgModelController#$setDirty + * @name ngModel.NgModelController#$commitViewValue * * @description - * Sets the control to its dirty state. + * Commit a pending update to the `$modelValue`. * - * This method can be called to remove the `ng-pristine` class and set the control to its dirty - * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed - * from when first compiled. + * Updates may be pending by a debounced event or because the input is waiting for a some future + * event defined in `ng-model-options`. this method is rarely needed as `NgModelController` + * usually handles calling this in response to input events. */ - this.$setDirty = function() { - ctrl.$dirty = true; - ctrl.$pristine = false; - $animate.removeClass($element, PRISTINE_CLASS); - $animate.addClass($element, DIRTY_CLASS); - parentForm.$setDirty(); + this.$commitViewValue = function() { + var viewValue = ctrl.$viewValue; + + $timeout.cancel(pendingDebounce); + + // If the view value has not changed then we should just exit, except in the case where there is + // a native validator on the element. In this case the validation state may have changed even though + // the viewValue has stayed empty. + if (ctrl.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !ctrl.$$hasNativeValidators)) { + return; + } + ctrl.$$lastCommittedViewValue = viewValue; + + // change to dirty + if (ctrl.$pristine) { + this.$setDirty(); + } + this.$$parseAndValidate(); }; - /** - * @ngdoc method - * @name ngModel.NgModelController#$setUntouched - * - * @description - * Sets the control to its untouched state. - * - * This method can be called to remove the `ng-touched` class and set the control to its - * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched - * by default, however this function can be used to restore that state if the model has - * already been touched by the user. - */ - this.$setUntouched = function() { - ctrl.$touched = false; - ctrl.$untouched = true; - $animate.setClass($element, UNTOUCHED_CLASS, TOUCHED_CLASS); + this.$$parseAndValidate = function() { + var viewValue = ctrl.$$lastCommittedViewValue; + var modelValue = viewValue; + parserValid = isUndefined(modelValue) ? undefined : true; + + if (parserValid) { + for (var i = 0; i < ctrl.$parsers.length; i++) { + modelValue = ctrl.$parsers[i](modelValue); + if (isUndefined(modelValue)) { + parserValid = false; + break; + } + } + } + if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) { + // ctrl.$modelValue has not been touched yet... + ctrl.$modelValue = ngModelGet($scope); + } + var prevModelValue = ctrl.$modelValue; + var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid; + ctrl.$$rawModelValue = modelValue; + + if (allowInvalid) { + ctrl.$modelValue = modelValue; + writeToModelIfNeeded(); + } + + // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date. + // This can happen if e.g. $setViewValue is called from inside a parser + ctrl.$$runValidators(modelValue, ctrl.$$lastCommittedViewValue, function(allValid) { + if (!allowInvalid) { + // Note: Don't check ctrl.$valid here, as we could have + // external validators (e.g. calculated on the server), + // that just call $setValidity and need the model value + // to calculate their validity. + ctrl.$modelValue = allValid ? modelValue : undefined; + writeToModelIfNeeded(); + } + }); + + function writeToModelIfNeeded() { + if (ctrl.$modelValue !== prevModelValue) { + ctrl.$$writeModelToScope(); + } + } }; - /** - * @ngdoc method - * @name ngModel.NgModelController#$setTouched - * - * @description - * Sets the control to its touched state. - * - * This method can be called to remove the `ng-untouched` class and set the control to its - * touched state (`ng-touched` class). A model is considered to be touched when the user has - * first focused the control element and then shifted focus away from the control (blur event). - */ - this.$setTouched = function() { - ctrl.$touched = true; - ctrl.$untouched = false; - $animate.setClass($element, TOUCHED_CLASS, UNTOUCHED_CLASS); + this.$$writeModelToScope = function() { + ngModelSet($scope, ctrl.$modelValue); + forEach(ctrl.$viewChangeListeners, function(listener) { + try { + listener(); + } catch (e) { + $exceptionHandler(e); + } + }); }; /** * @ngdoc method - * @name ngModel.NgModelController#$rollbackViewValue + * @name ngModel.NgModelController#$setViewValue * * @description - * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`, - * which may be caused by a pending debounced event or because the input is waiting for a some - * future event. + * Update the view value. * - * If you have an input that uses `ng-model-options` to set up debounced events or events such - * as blur you can have a situation where there is a period when the `$viewValue` - * is out of synch with the ngModel's `$modelValue`. + * This method should be called when an input directive want to change the view value; typically, + * this is done from within a DOM event handler. * - * In this case, you can run into difficulties if you try to update the ngModel's `$modelValue` - * programmatically before these debounced/future events have resolved/occurred, because Angular's - * dirty checking mechanism is not able to tell whether the model has actually changed or not. + * For example {@link ng.directive:input input} calls it when the value of the input changes and + * {@link ng.directive:select select} calls it when an option is selected. * - * The `$rollbackViewValue()` method should be called before programmatically changing the model of an - * input which may have such events pending. This is important in order to make sure that the - * input field will be updated with the new model value and any pending operations are cancelled. + * If the new `value` is an object (rather than a string or a number), we should make a copy of the + * object before passing it to `$setViewValue`. This is because `ngModel` does not perform a deep + * watch of objects, it only looks for a change of identity. If you only change the property of + * the object then ngModel will not realise that the object has changed and will not invoke the + * `$parsers` and `$validators` pipelines. * - * - * - * angular.module('cancel-update-example', []) + * For this reason, you should not change properties of the copy once it has been passed to + * `$setViewValue`. Otherwise you may cause the model value on the scope to change incorrectly. * - * .controller('CancelUpdateController', ['$scope', function($scope) { - * $scope.resetWithCancel = function(e) { - * if (e.keyCode == 27) { - * $scope.myForm.myInput1.$rollbackViewValue(); - * $scope.myValue = ''; - * } - * }; - * $scope.resetWithoutCancel = function(e) { - * if (e.keyCode == 27) { - * $scope.myValue = ''; - * } - * }; - * }]); - * - * - *
- *

Try typing something in each input. See that the model only updates when you - * blur off the input. - *

- *

Now see what happens if you start typing then press the Escape key

+ * When this method is called, the new `value` will be staged for committing through the `$parsers` + * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged + * value sent directly for processing, finally to be applied to `$modelValue` and then the + * **expression** specified in the `ng-model` attribute. * - *
- *

With $rollbackViewValue()

- *
- * myValue: "{{ myValue }}" + * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called. * - *

Without $rollbackViewValue()

- *
- * myValue: "{{ myValue }}" - * - *
- *
- *
+ * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn` + * and the `default` trigger is not listed, all those actions will remain pending until one of the + * `updateOn` events is triggered on the DOM element. + * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions} + * directive is used with a custom debounce for this particular event. + * + * Note that calling this function does not trigger a `$digest`. + * + * @param {string} value Value from the view. + * @param {string} trigger Event that triggered the update. */ - this.$rollbackViewValue = function() { + this.$setViewValue = function(value, trigger) { + ctrl.$viewValue = value; + if (!ctrl.$options || ctrl.$options.updateOnDefault) { + ctrl.$$debounceViewValueCommit(trigger); + } + }; + + this.$$debounceViewValueCommit = function(trigger) { + var debounceDelay = 0, + options = ctrl.$options, + debounce; + + if (options && isDefined(options.debounce)) { + debounce = options.debounce; + if (isNumber(debounce)) { + debounceDelay = debounce; + } else if (isNumber(debounce[trigger])) { + debounceDelay = debounce[trigger]; + } else if (isNumber(debounce['default'])) { + debounceDelay = debounce['default']; + } + } + $timeout.cancel(pendingDebounce); - ctrl.$viewValue = ctrl.$$lastCommittedViewValue; - ctrl.$render(); + if (debounceDelay) { + pendingDebounce = $timeout(function() { + ctrl.$commitViewValue(); + }, debounceDelay); + } else if ($rootScope.$$phase) { + ctrl.$commitViewValue(); + } else { + $scope.$apply(function() { + ctrl.$commitViewValue(); + }); + } }; - /** - * @ngdoc method - * @name ngModel.NgModelController#$validate - * - * @description - * Runs each of the registered validators (first synchronous validators and then - * asynchronous validators). - * If the validity changes to invalid, the model will be set to `undefined`, - * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`. - * If the validity changes to valid, it will set the model to the last available valid - * modelValue, i.e. either the last parsed value or the last value set from the scope. - */ - this.$validate = function() { - // ignore $validate before model is initialized - if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) { - return; + // model -> value + // Note: we cannot use a normal scope.$watch as we want to detect the following: + // 1. scope value is 'a' + // 2. user enters 'b' + // 3. ng-change kicks in and reverts scope value to 'a' + // -> scope value did not change since the last digest as + // ng-change executes in apply phase + // 4. view should be changed back to 'a' + $scope.$watch(function ngModelWatch() { + var modelValue = ngModelGet($scope); + + // if scope model value and ngModel value are out of sync + // TODO(perf): why not move this to the action fn? + if (modelValue !== ctrl.$modelValue && + // checks for NaN is needed to allow setting the model to NaN when there's an asyncValidator + (ctrl.$modelValue === ctrl.$modelValue || modelValue === modelValue) + ) { + ctrl.$modelValue = ctrl.$$rawModelValue = modelValue; + parserValid = undefined; + + var formatters = ctrl.$formatters, + idx = formatters.length; + + var viewValue = modelValue; + while (idx--) { + viewValue = formatters[idx](viewValue); + } + if (ctrl.$viewValue !== viewValue) { + ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue; + ctrl.$render(); + + ctrl.$$runValidators(modelValue, viewValue, noop); + } } - var viewValue = ctrl.$$lastCommittedViewValue; - // Note: we use the $$rawModelValue as $modelValue might have been - // set to undefined during a view -> model update that found validation - // errors. We can't parse the view here, since that could change - // the model although neither viewValue nor the model on the scope changed - var modelValue = ctrl.$$rawModelValue; + return modelValue; + }); +}]; + + +/** + * @ngdoc directive + * @name ngModel + * + * @element input + * @priority 1 + * + * @description + * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a + * property on the scope using {@link ngModel.NgModelController NgModelController}, + * which is created and exposed by this directive. + * + * `ngModel` is responsible for: + * + * - Binding the view into the model, which other directives such as `input`, `textarea` or `select` + * require. + * - Providing validation behavior (i.e. required, number, email, url). + * - Keeping the state of the control (valid/invalid, dirty/pristine, touched/untouched, validation errors). + * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`, `ng-touched`, `ng-untouched`) including animations. + * - Registering the control with its parent {@link ng.directive:form form}. + * + * Note: `ngModel` will try to bind to the property given by evaluating the expression on the + * current scope. If the property doesn't already exist on this scope, it will be created + * implicitly and added to the scope. + * + * For best practices on using `ngModel`, see: + * + * - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes) + * + * For basic examples, how to use `ngModel`, see: + * + * - {@link ng.directive:input input} + * - {@link input[text] text} + * - {@link input[checkbox] checkbox} + * - {@link input[radio] radio} + * - {@link input[number] number} + * - {@link input[email] email} + * - {@link input[url] url} + * - {@link input[date] date} + * - {@link input[datetime-local] datetime-local} + * - {@link input[time] time} + * - {@link input[month] month} + * - {@link input[week] week} + * - {@link ng.directive:select select} + * - {@link ng.directive:textarea textarea} + * + * # CSS classes + * The following CSS classes are added and removed on the associated input/select/textarea element + * depending on the validity of the model. + * + * - `ng-valid`: the model is valid + * - `ng-invalid`: the model is invalid + * - `ng-valid-[key]`: for each valid key added by `$setValidity` + * - `ng-invalid-[key]`: for each invalid key added by `$setValidity` + * - `ng-pristine`: the control hasn't been interacted with yet + * - `ng-dirty`: the control has been interacted with + * - `ng-touched`: the control has been blurred + * - `ng-untouched`: the control hasn't been blurred + * - `ng-pending`: any `$asyncValidators` are unfulfilled + * + * Keep in mind that ngAnimate can detect each of these classes when added and removed. + * + * ## Animation Hooks + * + * Animations within models are triggered when any of the associated CSS classes are added and removed + * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`, + * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself. + * The animations that are triggered within ngModel are similar to how they work in ngClass and + * animations can be hooked into using CSS transitions, keyframes as well as JS animations. + * + * The following example shows a simple way to utilize CSS transitions to style an input element + * that has been rendered as invalid after it has been validated: + * + *
+ * //be sure to include ngAnimate as a module to hook into more
+ * //advanced animations
+ * .my-input {
+ *   transition:0.5s linear all;
+ *   background: white;
+ * }
+ * .my-input.ng-invalid {
+ *   background: red;
+ *   color:white;
+ * }
+ * 
+ * + * @example + * + + + +

+ Update input to see transitions when valid/invalid. + Integer is a valid value. +

+
+ + +
+ *
+ * + * ## Binding to a getter/setter + * + * Sometimes it's helpful to bind `ngModel` to a getter/setter function. A getter/setter is a + * function that returns a representation of the model when called with zero arguments, and sets + * the internal state of a model when called with an argument. It's sometimes useful to use this + * for models that have an internal representation that's different from what the model exposes + * to the view. + * + *
+ * **Best Practice:** It's best to keep getters fast because Angular is likely to call them more + * frequently than other parts of your code. + *
+ * + * You use this behavior by adding `ng-model-options="{ getterSetter: true }"` to an element that + * has `ng-model` attached to it. You can also add `ng-model-options="{ getterSetter: true }"` to + * a `
`, which will enable this behavior for all ``s within it. See + * {@link ng.directive:ngModelOptions `ngModelOptions`} for more. + * + * The following example shows how to use `ngModel` with a getter/setter: + * + * @example + * + +
+ + + +
user.name = 
+
+
+ + angular.module('getterSetterExample', []) + .controller('ExampleController', ['$scope', function($scope) { + var _name = 'Brian'; + $scope.user = { + name: function(newName) { + // Note that newName can be undefined for two reasons: + // 1. Because it is called as a getter and thus called with no arguments + // 2. Because the property should actually be set to undefined. This happens e.g. if the + // input is invalid + return arguments.length ? (_name = newName) : _name; + } + }; + }]); + + *
+ */ +var ngModelDirective = ['$rootScope', function($rootScope) { + return { + restrict: 'A', + require: ['ngModel', '^?form', '^?ngModelOptions'], + controller: NgModelController, + // Prelink needs to run before any input directive + // so that we can set the NgModelOptions in NgModelController + // before anyone else uses it. + priority: 1, + compile: function ngModelCompile(element) { + // Setup initial state of the control + element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS); + + return { + pre: function ngModelPreLink(scope, element, attr, ctrls) { + var modelCtrl = ctrls[0], + formCtrl = ctrls[1] || nullFormCtrl; - // Check if the there's a parse error, so we don't unset it accidentially - var parserName = ctrl.$$parserName || 'parse'; - var parserValid = ctrl.$error[parserName] ? false : undefined; + modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options); - var prevValid = ctrl.$valid; - var prevModelValue = ctrl.$modelValue; + // notify others, especially parent forms + formCtrl.$addControl(modelCtrl); - var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid; + attr.$observe('name', function(newValue) { + if (modelCtrl.$name !== newValue) { + formCtrl.$$renameControl(modelCtrl, newValue); + } + }); - ctrl.$$runValidators(parserValid, modelValue, viewValue, function(allValid) { - // If there was no change in validity, don't update the model - // This prevents changing an invalid modelValue to undefined - if (!allowInvalid && prevValid !== allValid) { - // Note: Don't check ctrl.$valid here, as we could have - // external validators (e.g. calculated on the server), - // that just call $setValidity and need the model value - // to calculate their validity. - ctrl.$modelValue = allValid ? modelValue : undefined; + scope.$on('$destroy', function() { + formCtrl.$removeControl(modelCtrl); + }); + }, + post: function ngModelPostLink(scope, element, attr, ctrls) { + var modelCtrl = ctrls[0]; + if (modelCtrl.$options && modelCtrl.$options.updateOn) { + element.on(modelCtrl.$options.updateOn, function(ev) { + modelCtrl.$$debounceViewValueCommit(ev && ev.type); + }); + } - if (ctrl.$modelValue !== prevModelValue) { - ctrl.$$writeModelToScope(); - } - } - }); + element.on('blur', function(ev) { + if (modelCtrl.$touched) return; + if ($rootScope.$$phase) { + scope.$evalAsync(modelCtrl.$setTouched); + } else { + scope.$apply(modelCtrl.$setTouched); + } + }); + } + }; + } }; +}]; - this.$$runValidators = function(parseValid, modelValue, viewValue, doneCallback) { - currentValidationRunId++; - var localValidationRunId = currentValidationRunId; +var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/; - // check parser error - if (!processParseErrors(parseValid)) { - validationDone(false); - return; - } - if (!processSyncValidators()) { - validationDone(false); - return; - } - processAsyncValidators(); +/** + * @ngdoc directive + * @name ngModelOptions + * + * @description + * Allows tuning how model updates are done. Using `ngModelOptions` you can specify a custom list of + * events that will trigger a model update and/or a debouncing delay so that the actual update only + * takes place when a timer expires; this timer will be reset after another change takes place. + * + * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might + * be different from the value in the actual model. This means that if you update the model you + * should also invoke {@link ngModel.NgModelController `$rollbackViewValue`} on the relevant input field in + * order to make sure it is synchronized with the model and that any debounced action is canceled. + * + * The easiest way to reference the control's {@link ngModel.NgModelController `$rollbackViewValue`} + * method is by making sure the input is placed inside a form that has a `name` attribute. This is + * important because `form` controllers are published to the related scope under the name in their + * `name` attribute. + * + * Any pending changes will take place immediately when an enclosing form is submitted via the + * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit` + * to have access to the updated model. + * + * `ngModelOptions` has an effect on the element it's declared on and its descendants. + * + * @param {Object} ngModelOptions options to apply to the current model. Valid keys are: + * - `updateOn`: string specifying which event should the input be bound to. You can set several + * events using an space delimited list. There is a special event called `default` that + * matches the default events belonging of the control. + * - `debounce`: integer value which contains the debounce model update value in milliseconds. A + * value of 0 triggers an immediate update. If an object is supplied instead, you can specify a + * custom value for each event. For example: + * `ng-model-options="{ updateOn: 'default blur', debounce: { 'default': 500, 'blur': 0 } }"` + * - `allowInvalid`: boolean value which indicates that the model can be set with values that did + * not validate correctly instead of the default behavior of setting the model to undefined. + * - `getterSetter`: boolean value which determines whether or not to treat functions bound to + `ngModel` as getters/setters. + * - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for + * ``, ``, ... . It understands UTC/GMT and the + * continental US time zone abbreviations, but for general use, use a time zone offset, for + * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian) + * If not specified, the timezone of the browser will be used. + * + * @example - function processParseErrors(parseValid) { - var errorKey = ctrl.$$parserName || 'parse'; - if (parseValid === undefined) { - setValidity(errorKey, null); - } else { - setValidity(errorKey, parseValid); - if (!parseValid) { - forEach(ctrl.$validators, function(v, name) { - setValidity(name, null); - }); - forEach(ctrl.$asyncValidators, function(v, name) { - setValidity(name, null); - }); - return false; - } - } - return true; - } + The following example shows how to override immediate updates. Changes on the inputs within the + form will update the model only when the control loses focus (blur event). If `escape` key is + pressed while the input field is focused, the value is reset to the value in the current model. - function processSyncValidators() { - var syncValidatorsValid = true; - forEach(ctrl.$validators, function(validator, name) { - var result = validator(modelValue, viewValue); - syncValidatorsValid = syncValidatorsValid && result; - setValidity(name, result); + + +
+
+
+
+ +
user.name = 
+
+
+ + angular.module('optionsExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.user = { name: 'say', data: '' }; + + $scope.cancel = function(e) { + if (e.keyCode == 27) { + $scope.userForm.userName.$rollbackViewValue(); + } + }; + }]); + + + var model = element(by.binding('user.name')); + var input = element(by.model('user.name')); + var other = element(by.model('user.data')); + + it('should allow custom events', function() { + input.sendKeys(' hello'); + input.click(); + expect(model.getText()).toEqual('say'); + other.click(); + expect(model.getText()).toEqual('say hello'); }); - if (!syncValidatorsValid) { - forEach(ctrl.$asyncValidators, function(v, name) { - setValidity(name, null); - }); - return false; - } - return true; - } - function processAsyncValidators() { - var validatorPromises = []; - var allValid = true; - forEach(ctrl.$asyncValidators, function(validator, name) { - var promise = validator(modelValue, viewValue); - if (!isPromiseLike(promise)) { - throw $ngModelMinErr("$asyncValidators", - "Expected asynchronous validator to return a promise but got '{0}' instead.", promise); - } - setValidity(name, undefined); - validatorPromises.push(promise.then(function() { - setValidity(name, true); - }, function(error) { - allValid = false; - setValidity(name, false); + it('should $rollbackViewValue when model changes', function() { + input.sendKeys(' hello'); + expect(input.getAttribute('value')).toEqual('say hello'); + input.sendKeys(protractor.Key.ESCAPE); + expect(input.getAttribute('value')).toEqual('say'); + other.click(); + expect(model.getText()).toEqual('say'); + }); + +
+ + This one shows how to debounce model changes. Model will be updated only 1 sec after last change. + If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty. + + + +
+
+ + +
+ +
user.name = 
+
+
+ + angular.module('optionsExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.user = { name: 'say' }; + }]); + +
+ + This one shows how to bind to getter/setters: + + + +
+
+ + +
user.name = 
+
+
+ + angular.module('getterSetterExample', []) + .controller('ExampleController', ['$scope', function($scope) { + var _name = 'Brian'; + $scope.user = { + name: function(newName) { + // Note that newName can be undefined for two reasons: + // 1. Because it is called as a getter and thus called with no arguments + // 2. Because the property should actually be set to undefined. This happens e.g. if the + // input is invalid + return arguments.length ? (_name = newName) : _name; + } + }; + }]); + +
+ */ +var ngModelOptionsDirective = function() { + return { + restrict: 'A', + controller: ['$scope', '$attrs', function($scope, $attrs) { + var that = this; + this.$options = copy($scope.$eval($attrs.ngModelOptions)); + // Allow adding/overriding bound events + if (this.$options.updateOn !== undefined) { + this.$options.updateOnDefault = false; + // extract "default" pseudo-event from list of events that can trigger a model update + this.$options.updateOn = trim(this.$options.updateOn.replace(DEFAULT_REGEXP, function() { + that.$options.updateOnDefault = true; + return ' '; })); - }); - if (!validatorPromises.length) { - validationDone(true); } else { - $q.all(validatorPromises).then(function() { - validationDone(allValid); - }, noop); - } - } - - function setValidity(name, isValid) { - if (localValidationRunId === currentValidationRunId) { - ctrl.$setValidity(name, isValid); - } - } - - function validationDone(allValid) { - if (localValidationRunId === currentValidationRunId) { - - doneCallback(allValid); + this.$options.updateOnDefault = true; } - } + }] }; +}; - /** - * @ngdoc method - * @name ngModel.NgModelController#$commitViewValue - * - * @description - * Commit a pending update to the `$modelValue`. - * - * Updates may be pending by a debounced event or because the input is waiting for a some future - * event defined in `ng-model-options`. this method is rarely needed as `NgModelController` - * usually handles calling this in response to input events. - */ - this.$commitViewValue = function() { - var viewValue = ctrl.$viewValue; - $timeout.cancel(pendingDebounce); - // If the view value has not changed then we should just exit, except in the case where there is - // a native validator on the element. In this case the validation state may have changed even though - // the viewValue has stayed empty. - if (ctrl.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !ctrl.$$hasNativeValidators)) { - return; - } - ctrl.$$lastCommittedViewValue = viewValue; +// helper methods +function addSetValidityMethod(context) { + var ctrl = context.ctrl, + $element = context.$element, + classCache = {}, + set = context.set, + unset = context.unset, + parentForm = context.parentForm, + $animate = context.$animate; - // change to dirty - if (ctrl.$pristine) { - this.$setDirty(); - } - this.$$parseAndValidate(); - }; + classCache[INVALID_CLASS] = !(classCache[VALID_CLASS] = $element.hasClass(VALID_CLASS)); - this.$$parseAndValidate = function() { - var viewValue = ctrl.$$lastCommittedViewValue; - var modelValue = viewValue; - var parserValid = isUndefined(modelValue) ? undefined : true; + ctrl.$setValidity = setValidity; - if (parserValid) { - for (var i = 0; i < ctrl.$parsers.length; i++) { - modelValue = ctrl.$parsers[i](modelValue); - if (isUndefined(modelValue)) { - parserValid = false; - break; - } - } + function setValidity(validationErrorKey, state, controller) { + if (state === undefined) { + createAndSet('$pending', validationErrorKey, controller); + } else { + unsetAndCleanup('$pending', validationErrorKey, controller); } - if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) { - // ctrl.$modelValue has not been touched yet... - ctrl.$modelValue = ngModelGet($scope); + if (!isBoolean(state)) { + unset(ctrl.$error, validationErrorKey, controller); + unset(ctrl.$$success, validationErrorKey, controller); + } else { + if (state) { + unset(ctrl.$error, validationErrorKey, controller); + set(ctrl.$$success, validationErrorKey, controller); + } else { + set(ctrl.$error, validationErrorKey, controller); + unset(ctrl.$$success, validationErrorKey, controller); + } } - var prevModelValue = ctrl.$modelValue; - var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid; - ctrl.$$rawModelValue = modelValue; - - if (allowInvalid) { - ctrl.$modelValue = modelValue; - writeToModelIfNeeded(); + if (ctrl.$pending) { + cachedToggleClass(PENDING_CLASS, true); + ctrl.$valid = ctrl.$invalid = undefined; + toggleValidationCss('', null); + } else { + cachedToggleClass(PENDING_CLASS, false); + ctrl.$valid = isObjectEmpty(ctrl.$error); + ctrl.$invalid = !ctrl.$valid; + toggleValidationCss('', ctrl.$valid); } - // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date. - // This can happen if e.g. $setViewValue is called from inside a parser - ctrl.$$runValidators(parserValid, modelValue, ctrl.$$lastCommittedViewValue, function(allValid) { - if (!allowInvalid) { - // Note: Don't check ctrl.$valid here, as we could have - // external validators (e.g. calculated on the server), - // that just call $setValidity and need the model value - // to calculate their validity. - ctrl.$modelValue = allValid ? modelValue : undefined; - writeToModelIfNeeded(); - } - }); - - function writeToModelIfNeeded() { - if (ctrl.$modelValue !== prevModelValue) { - ctrl.$$writeModelToScope(); - } + // re-read the state as the set/unset methods could have + // combined state in ctrl.$error[validationError] (used for forms), + // where setting/unsetting only increments/decrements the value, + // and does not replace it. + var combinedState; + if (ctrl.$pending && ctrl.$pending[validationErrorKey]) { + combinedState = undefined; + } else if (ctrl.$error[validationErrorKey]) { + combinedState = false; + } else if (ctrl.$$success[validationErrorKey]) { + combinedState = true; + } else { + combinedState = null; } - }; - this.$$writeModelToScope = function() { - ngModelSet($scope, ctrl.$modelValue); - forEach(ctrl.$viewChangeListeners, function(listener) { - try { - listener(); - } catch (e) { - $exceptionHandler(e); - } - }); - }; + toggleValidationCss(validationErrorKey, combinedState); + parentForm.$setValidity(validationErrorKey, combinedState, ctrl); + } - /** - * @ngdoc method - * @name ngModel.NgModelController#$setViewValue - * - * @description - * Update the view value. - * - * This method should be called when an input directive want to change the view value; typically, - * this is done from within a DOM event handler. - * - * For example {@link ng.directive:input input} calls it when the value of the input changes and - * {@link ng.directive:select select} calls it when an option is selected. - * - * If the new `value` is an object (rather than a string or a number), we should make a copy of the - * object before passing it to `$setViewValue`. This is because `ngModel` does not perform a deep - * watch of objects, it only looks for a change of identity. If you only change the property of - * the object then ngModel will not realise that the object has changed and will not invoke the - * `$parsers` and `$validators` pipelines. - * - * For this reason, you should not change properties of the copy once it has been passed to - * `$setViewValue`. Otherwise you may cause the model value on the scope to change incorrectly. - * - * When this method is called, the new `value` will be staged for committing through the `$parsers` - * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged - * value sent directly for processing, finally to be applied to `$modelValue` and then the - * **expression** specified in the `ng-model` attribute. - * - * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called. - * - * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn` - * and the `default` trigger is not listed, all those actions will remain pending until one of the - * `updateOn` events is triggered on the DOM element. - * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions} - * directive is used with a custom debounce for this particular event. - * - * Note that calling this function does not trigger a `$digest`. - * - * @param {string} value Value from the view. - * @param {string} trigger Event that triggered the update. - */ - this.$setViewValue = function(value, trigger) { - ctrl.$viewValue = value; - if (!ctrl.$options || ctrl.$options.updateOnDefault) { - ctrl.$$debounceViewValueCommit(trigger); + function createAndSet(name, value, controller) { + if (!ctrl[name]) { + ctrl[name] = {}; } - }; - - this.$$debounceViewValueCommit = function(trigger) { - var debounceDelay = 0, - options = ctrl.$options, - debounce; + set(ctrl[name], value, controller); + } - if (options && isDefined(options.debounce)) { - debounce = options.debounce; - if (isNumber(debounce)) { - debounceDelay = debounce; - } else if (isNumber(debounce[trigger])) { - debounceDelay = debounce[trigger]; - } else if (isNumber(debounce['default'])) { - debounceDelay = debounce['default']; - } + function unsetAndCleanup(name, value, controller) { + if (ctrl[name]) { + unset(ctrl[name], value, controller); } - - $timeout.cancel(pendingDebounce); - if (debounceDelay) { - pendingDebounce = $timeout(function() { - ctrl.$commitViewValue(); - }, debounceDelay); - } else if ($rootScope.$$phase) { - ctrl.$commitViewValue(); - } else { - $scope.$apply(function() { - ctrl.$commitViewValue(); - }); + if (isObjectEmpty(ctrl[name])) { + ctrl[name] = undefined; } - }; - - // model -> value - // Note: we cannot use a normal scope.$watch as we want to detect the following: - // 1. scope value is 'a' - // 2. user enters 'b' - // 3. ng-change kicks in and reverts scope value to 'a' - // -> scope value did not change since the last digest as - // ng-change executes in apply phase - // 4. view should be changed back to 'a' - $scope.$watch(function ngModelWatch() { - var modelValue = ngModelGet($scope); + } - // if scope model value and ngModel value are out of sync - // TODO(perf): why not move this to the action fn? - if (modelValue !== ctrl.$modelValue) { - ctrl.$modelValue = ctrl.$$rawModelValue = modelValue; + function cachedToggleClass(className, switchValue) { + if (switchValue && !classCache[className]) { + $animate.addClass($element, className); + classCache[className] = true; + } else if (!switchValue && classCache[className]) { + $animate.removeClass($element, className); + classCache[className] = false; + } + } - var formatters = ctrl.$formatters, - idx = formatters.length; + function toggleValidationCss(validationErrorKey, isValid) { + validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : ''; - var viewValue = modelValue; - while (idx--) { - viewValue = formatters[idx](viewValue); - } - if (ctrl.$viewValue !== viewValue) { - ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue; - ctrl.$render(); + cachedToggleClass(VALID_CLASS + validationErrorKey, isValid === true); + cachedToggleClass(INVALID_CLASS + validationErrorKey, isValid === false); + } +} - ctrl.$$runValidators(undefined, modelValue, viewValue, noop); +function isObjectEmpty(obj) { + if (obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + return false; } } + } + return true; +} - return modelValue; - }); -}]; +/** + * @ngdoc directive + * @name ngNonBindable + * @restrict AC + * @priority 1000 + * + * @description + * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current + * DOM element. This is useful if the element contains what appears to be Angular directives and + * bindings but which should be ignored by Angular. This could be the case if you have a site that + * displays snippets of code, for instance. + * + * @element ANY + * + * @example + * In this example there are two locations where a simple interpolation binding (`{{}}`) is present, + * but the one wrapped in `ngNonBindable` is left alone. + * + * @example + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+
+ + it('should check ng-non-bindable', function() { + expect(element(by.binding('1 + 2')).getText()).toContain('3'); + expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/); + }); + +
+ */ +var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 }); +/* global jqLiteRemove */ + +var ngOptionsMinErr = minErr('ngOptions'); /** * @ngdoc directive - * @name ngModel - * - * @element input - * @priority 1 + * @name ngOptions + * @restrict A * * @description - * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a - * property on the scope using {@link ngModel.NgModelController NgModelController}, - * which is created and exposed by this directive. * - * `ngModel` is responsible for: + * The `ngOptions` attribute can be used to dynamically generate a list of `` + * DOM element. + * * `disable`: The result of this expression will be used to disable the rendered `
- - it('should check ng-options', function() { - expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red'); - element.all(by.model('myColor')).first().click(); - element.all(by.css('select[ng-model="myColor"] option')).first().click(); - expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black'); - element(by.css('.nullable select[ng-model="myColor"]')).click(); - element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click(); - expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null'); - }); - - - */ - -var ngOptionsDirective = valueFn({ - restrict: 'A', - terminal: true -}); - -// jshint maxlen: false -var selectDirective = ['$compile', '$parse', function($compile, $parse) { - //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888 - var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/, - nullModelCtrl = {$setViewValue: noop}; -// jshint maxlen: 100 + * @ngdoc directive + * @name script + * @restrict E + * + * @description + * Load the content of a ` + Load inlined template +
+ + + it('should load template defined inside script tag', function() { + element(by.css('#tpl-link')).click(); + expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/); + }); + + + */ +var scriptDirective = ['$templateCache', function($templateCache) { return { restrict: 'E', - require: ['select', '?ngModel'], - controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) { - var self = this, - optionsMap = {}, - ngModelCtrl = nullModelCtrl, - nullOption, - unknownOption; - - - self.databound = $attrs.ngModel; + terminal: true, + compile: function(element, attr) { + if (attr.type == 'text/ng-template') { + var templateUrl = attr.id, + text = element[0].text; + $templateCache.put(templateUrl, text); + } + } + }; +}]; - self.init = function(ngModelCtrl_, nullOption_, unknownOption_) { - ngModelCtrl = ngModelCtrl_; - nullOption = nullOption_; - unknownOption = unknownOption_; - }; +var noopNgModelController = { $setViewValue: noop, $render: noop }; +/** + * @ngdoc type + * @name select.SelectController + * @description + * The controller for the ` and IE barfs otherwise. + self.unknownOption = jqLite(document.createElement('option')); + self.renderUnknownOption = function(val) { + var unknownVal = '? ' + hashKey(val) + ' ?'; + self.unknownOption.val(unknownVal); + $element.prepend(self.unknownOption); + $element.val(unknownVal); + }; - if (ngModelCtrl.$viewValue == value) { - $element.val(value); - if (unknownOption.parent()) unknownOption.remove(); - } - // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459 - // Adding an + * + * + * + * {{ model }} + * + * + * angular.module('nonStringSelect', []) + * .run(function($rootScope) { + * $rootScope.model = { id: 2 }; + * }) + * .directive('convertToNumber', function() { + * return { + * require: 'ngModel', + * link: function(scope, element, attrs, ngModel) { + * ngModel.$parsers.push(function(val) { + * return parseInt(val, 10); + * }); + * ngModel.$formatters.push(function(val) { + * return '' + val; + * }); + * } + * }; + * }); + * + * + * it('should initialize to model', function() { + * var select = element(by.css('select')); + * expect(element(by.model('model.id')).$('option:checked').getText()).toEqual('Two'); + * }); + * + * + * + */ +var selectDirective = function() { - if (optionsExp) setupAsOptions(scope, element, ngModelCtrl); - else if (multiple) setupAsMultiple(scope, element, ngModelCtrl); - else setupAsSingle(scope, element, ngModelCtrl, selectCtrl); + return { + restrict: 'E', + require: ['select', '?ngModel'], + controller: SelectController, + link: function(scope, element, attr, ctrls) { + // if ngModel is not defined, we don't need to do anything + var ngModelCtrl = ctrls[1]; + if (!ngModelCtrl) return; - //////////////////////////// + var selectCtrl = ctrls[0]; + selectCtrl.ngModelCtrl = ngModelCtrl; + // We delegate rendering to the `writeValue` method, which can be changed + // if the select can have multiple selected values or if the options are being + // generated by `ngOptions` + ngModelCtrl.$render = function() { + selectCtrl.writeValue(ngModelCtrl.$viewValue); + }; - function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) { - ngModelCtrl.$render = function() { - var viewValue = ngModelCtrl.$viewValue; + // When the selected item(s) changes we delegate getting the value of the select control + // to the `readValue` method, which can be changed if the select can have multiple + // selected values or if the options are being generated by `ngOptions` + element.on('change', function() { + scope.$apply(function() { + ngModelCtrl.$setViewValue(selectCtrl.readValue()); + }); + }); - if (selectCtrl.hasOption(viewValue)) { - if (unknownOption.parent()) unknownOption.remove(); - selectElement.val(viewValue); - if (viewValue === '') emptyOption.prop('selected', true); // to make IE9 happy - } else { - if (isUndefined(viewValue) && emptyOption) { - selectElement.val(''); - } else { - selectCtrl.renderUnknownOption(viewValue); + // If the select allows multiple values then we need to modify how we read and write + // values from and to the control; also what it means for the value to be empty and + // we have to add an extra watch since ngModel doesn't work well with arrays - it + // doesn't trigger rendering if only an item in the array changes. + if (attr.multiple) { + + // Read value now needs to check each option to see if it is selected + selectCtrl.readValue = function readMultipleValue() { + var array = []; + forEach(element.find('option'), function(option) { + if (option.selected) { + array.push(option.value); } - } - }; - - selectElement.on('change', function() { - scope.$apply(function() { - if (unknownOption.parent()) unknownOption.remove(); - ngModelCtrl.$setViewValue(selectElement.val()); }); - }); - } + return array; + }; - function setupAsMultiple(scope, selectElement, ctrl) { - var lastView; - ctrl.$render = function() { - var items = new HashMap(ctrl.$viewValue); - forEach(selectElement.find('option'), function(option) { + // Write value now needs to set the selected property of each matching option + selectCtrl.writeValue = function writeMultipleValue(value) { + var items = new HashMap(value); + forEach(element.find('option'), function(option) { option.selected = isDefined(items.get(option.value)); }); }; // we have to do it on each watch since ngModel watches reference, but // we need to work of an array, so we need to see if anything was inserted/removed + var lastView, lastViewRef = NaN; scope.$watch(function selectMultipleWatch() { - if (!equals(lastView, ctrl.$viewValue)) { - lastView = shallowCopy(ctrl.$viewValue); - ctrl.$render(); + if (lastViewRef === ngModelCtrl.$viewValue && !equals(lastView, ngModelCtrl.$viewValue)) { + lastView = shallowCopy(ngModelCtrl.$viewValue); + ngModelCtrl.$render(); } + lastViewRef = ngModelCtrl.$viewValue; }); - selectElement.on('change', function() { - scope.$apply(function() { - var array = []; - forEach(selectElement.find('option'), function(option) { - if (option.selected) { - array.push(option.value); - } - }); - ctrl.$setViewValue(array); - }); - }); - } - - function setupAsOptions(scope, selectElement, ctrl) { - var match; - - if (!(match = optionsExp.match(NG_OPTIONS_REGEXP))) { - throw ngOptionsMinErr('iexp', - "Expected expression in form of " + - "'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" + - " but got '{0}'. Element: {1}", - optionsExp, startingTag(selectElement)); - } - - var displayFn = $parse(match[2] || match[1]), - valueName = match[4] || match[6], - selectAs = / as /.test(match[0]) && match[1], - selectAsFn = selectAs ? $parse(selectAs) : null, - keyName = match[5], - groupByFn = $parse(match[3] || ''), - valueFn = $parse(match[2] ? match[1] : valueName), - valuesFn = $parse(match[7]), - track = match[8], - trackFn = track ? $parse(match[8]) : null, - trackKeysCache = {}, - // This is an array of array of existing option groups in DOM. - // We try to reuse these if possible - // - optionGroupsCache[0] is the options with no option group - // - optionGroupsCache[?][0] is the parent: either the SELECT or OPTGROUP element - optionGroupsCache = [[{element: selectElement, label:''}]], - //re-usable object to represent option's locals - locals = {}; - - if (nullOption) { - // compile the element since there might be bindings in it - $compile(nullOption)(scope); - - // remove the class, which is added automatically because we recompile the element and it - // becomes the compilation root - nullOption.removeClass('ng-scope'); - - // we need to remove it before calling selectElement.empty() because otherwise IE will - // remove the label from the element. wtf? - nullOption.remove(); - } - - // clear contents, we'll add what's needed based on the model - selectElement.empty(); - - selectElement.on('change', selectionChanged); - - ctrl.$render = render; - - scope.$watchCollection(valuesFn, scheduleRendering); - scope.$watchCollection(getLabels, scheduleRendering); - - if (multiple) { - scope.$watchCollection(function() { return ctrl.$modelValue; }, scheduleRendering); - } - - // ------------------------------------------------------------------ // - - function callExpression(exprFn, key, value) { - locals[valueName] = value; - if (keyName) locals[keyName] = key; - return exprFn(scope, locals); - } - - function selectionChanged() { - scope.$apply(function() { - var collection = valuesFn(scope) || []; - var viewValue; - if (multiple) { - viewValue = []; - forEach(selectElement.val(), function(selectedKey) { - selectedKey = trackFn ? trackKeysCache[selectedKey] : selectedKey; - viewValue.push(getViewValue(selectedKey, collection[selectedKey])); - }); - } else { - var selectedKey = trackFn ? trackKeysCache[selectElement.val()] : selectElement.val(); - viewValue = getViewValue(selectedKey, collection[selectedKey]); - } - ctrl.$setViewValue(viewValue); - render(); - }); - } - - function getViewValue(key, value) { - if (key === '?') { - return undefined; - } else if (key === '') { - return null; - } else { - var viewValueFn = selectAsFn ? selectAsFn : valueFn; - return callExpression(viewValueFn, key, value); - } - } - - function getLabels() { - var values = valuesFn(scope); - var toDisplay; - if (values && isArray(values)) { - toDisplay = new Array(values.length); - for (var i = 0, ii = values.length; i < ii; i++) { - toDisplay[i] = callExpression(displayFn, i, values[i]); - } - return toDisplay; - } else if (values) { - // TODO: Add a test for this case - toDisplay = {}; - for (var prop in values) { - if (values.hasOwnProperty(prop)) { - toDisplay[prop] = callExpression(displayFn, prop, values[prop]); - } - } - } - return toDisplay; - } - - function createIsSelectedFn(viewValue) { - var selectedSet; - if (multiple) { - if (trackFn && isArray(viewValue)) { - - selectedSet = new HashMap([]); - for (var trackIndex = 0; trackIndex < viewValue.length; trackIndex++) { - // tracking by key - selectedSet.put(callExpression(trackFn, null, viewValue[trackIndex]), true); - } - } else { - selectedSet = new HashMap(viewValue); - } - } else if (trackFn) { - viewValue = callExpression(trackFn, null, viewValue); - } - - return function isSelected(key, value) { - var compareValueFn; - if (trackFn) { - compareValueFn = trackFn; - } else if (selectAsFn) { - compareValueFn = selectAsFn; - } else { - compareValueFn = valueFn; - } - - if (multiple) { - return isDefined(selectedSet.remove(callExpression(compareValueFn, key, value))); - } else { - return viewValue === callExpression(compareValueFn, key, value); - } - }; - } - - function scheduleRendering() { - if (!renderScheduled) { - scope.$$postDigest(render); - renderScheduled = true; - } - } - - /** - * A new labelMap is created with each render. - * This function is called for each existing option with added=false, - * and each new option with added=true. - * - Labels that are passed to this method twice, - * (once with added=true and once with added=false) will end up with a value of 0, and - * will cause no change to happen to the corresponding option. - * - Labels that are passed to this method only once with added=false will end up with a - * value of -1 and will eventually be passed to selectCtrl.removeOption() - * - Labels that are passed to this method only once with added=true will end up with a - * value of 1 and will eventually be passed to selectCtrl.addOption() - */ - function updateLabelMap(labelMap, label, added) { - labelMap[label] = labelMap[label] || 0; - labelMap[label] += (added ? 1 : -1); - } - - function render() { - renderScheduled = false; - - // Temporary location for the option groups before we render them - var optionGroups = {'':[]}, - optionGroupNames = [''], - optionGroupName, - optionGroup, - option, - existingParent, existingOptions, existingOption, - viewValue = ctrl.$viewValue, - values = valuesFn(scope) || [], - keys = keyName ? sortedKeys(values) : values, - key, - value, - groupLength, length, - groupIndex, index, - labelMap = {}, - selected, - isSelected = createIsSelectedFn(viewValue), - anySelected = false, - lastElement, - element, - label, - optionId; - - trackKeysCache = {}; - - // We now build up the list of options we need (we merge later) - for (index = 0; length = keys.length, index < length; index++) { - key = index; - if (keyName) { - key = keys[index]; - if (key.charAt(0) === '$') continue; - } - value = values[key]; - - optionGroupName = callExpression(groupByFn, key, value) || ''; - if (!(optionGroup = optionGroups[optionGroupName])) { - optionGroup = optionGroups[optionGroupName] = []; - optionGroupNames.push(optionGroupName); - } - - selected = isSelected(key, value); - anySelected = anySelected || selected; - - label = callExpression(displayFn, key, value); // what will be seen by the user - - // doing displayFn(scope, locals) || '' overwrites zero values - label = isDefined(label) ? label : ''; - optionId = trackFn ? trackFn(scope, locals) : (keyName ? keys[index] : index); - if (trackFn) { - trackKeysCache[optionId] = key; - } - - optionGroup.push({ - // either the index into array or key from object - id: optionId, - label: label, - selected: selected // determine if we should be selected - }); - } - if (!multiple) { - if (nullOption || viewValue === null) { - // insert null option if we have a placeholder, or the model is null - optionGroups[''].unshift({id:'', label:'', selected:!anySelected}); - } else if (!anySelected) { - // option could not be found, we have to insert the undefined item - optionGroups[''].unshift({id:'?', label:'', selected:true}); - } - } - - // Now we need to update the list of DOM nodes to match the optionGroups we computed above - for (groupIndex = 0, groupLength = optionGroupNames.length; - groupIndex < groupLength; - groupIndex++) { - // current option group name or '' if no group - optionGroupName = optionGroupNames[groupIndex]; - - // list of options for that group. (first item has the parent) - optionGroup = optionGroups[optionGroupName]; - - if (optionGroupsCache.length <= groupIndex) { - // we need to grow the optionGroups - existingParent = { - element: optGroupTemplate.clone().attr('label', optionGroupName), - label: optionGroup.label - }; - existingOptions = [existingParent]; - optionGroupsCache.push(existingOptions); - selectElement.append(existingParent.element); - } else { - existingOptions = optionGroupsCache[groupIndex]; - existingParent = existingOptions[0]; // either SELECT (no group) or OPTGROUP element - - // update the OPTGROUP label if not the same. - if (existingParent.label != optionGroupName) { - existingParent.element.attr('label', existingParent.label = optionGroupName); - } - } - - lastElement = null; // start at the beginning - for (index = 0, length = optionGroup.length; index < length; index++) { - option = optionGroup[index]; - if ((existingOption = existingOptions[index + 1])) { - // reuse elements - lastElement = existingOption.element; - if (existingOption.label !== option.label) { - updateLabelMap(labelMap, existingOption.label, false); - updateLabelMap(labelMap, option.label, true); - lastElement.text(existingOption.label = option.label); - lastElement.prop('label', existingOption.label); - } - if (existingOption.id !== option.id) { - lastElement.val(existingOption.id = option.id); - } - // lastElement.prop('selected') provided by jQuery has side-effects - if (lastElement[0].selected !== option.selected) { - lastElement.prop('selected', (existingOption.selected = option.selected)); - if (msie) { - // See #7692 - // The selected item wouldn't visually update on IE without this. - // Tested on Win7: IE9, IE10 and IE11. Future IEs should be tested as well - lastElement.prop('selected', existingOption.selected); - } - } - } else { - // grow elements - - // if it's a null option - if (option.id === '' && nullOption) { - // put back the pre-compiled element - element = nullOption; - } else { - // jQuery(v1.4.2) Bug: We should be able to chain the method calls, but - // in this version of jQuery on some browser the .text() returns a string - // rather then the element. - (element = optionTemplate.clone()) - .val(option.id) - .prop('selected', option.selected) - .attr('selected', option.selected) - .prop('label', option.label) - .text(option.label); - } + // If we are a multiple select then value is now a collection + // so the meaning of $isEmpty changes + ngModelCtrl.$isEmpty = function(value) { + return !value || value.length === 0; + }; - existingOptions.push(existingOption = { - element: element, - label: option.label, - id: option.id, - selected: option.selected - }); - updateLabelMap(labelMap, option.label, true); - if (lastElement) { - lastElement.after(element); - } else { - existingParent.element.append(element); - } - lastElement = element; - } - } - // remove any excessive OPTIONs in a group - index++; // increment since the existingOptions[0] is parent element not OPTION - while (existingOptions.length > index) { - option = existingOptions.pop(); - updateLabelMap(labelMap, option.label, false); - option.element.remove(); - } - } - // remove any excessive OPTGROUPs from select - while (optionGroupsCache.length > groupIndex) { - // remove all the labels in the option group - optionGroup = optionGroupsCache.pop(); - for (index = 1; index < optionGroup.length; ++index) { - updateLabelMap(labelMap, optionGroup[index].label, false); - } - optionGroup[0].element.remove(); - } - forEach(labelMap, function(count, label) { - if (count > 0) { - selectCtrl.addOption(label); - } else if (count < 0) { - selectCtrl.removeOption(label); - } - }); - } } } }; -}]; +}; + +// The option directive is purely designed to communicate the existence (or lack of) +// of dynamically created (and destroyed) option elements to their containing select +// directive via its controller. var optionDirective = ['$interpolate', function($interpolate) { - var nullSelectCtrl = { - addOption: noop, - removeOption: noop - }; + + function chromeHack(optionElement) { + // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459 + // Adding an
Name - (^)Phone NumberAge + Name + + + Phone Number + + + Age + +
{{friend.name}}
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option;ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead;ia.th=ia.td;var La=R.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===Y.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),R(M).on("load",a))}, -toString:function(){var b=[];s(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?D(this[b]):D(this[this.length+b])},length:0,push:Of,sort:[].sort,splice:[].splice},Fb={};s("multiple selected checked disabled readOnly required open".split(" "),function(b){Fb[Q(b)]=b});var Nc={};s("input select option textarea button form details".split(" "),function(b){Nc[b]=!0});var Oc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"}; -s({data:Wb,removeData:yb},function(b,a){R[a]=b});s({data:Wb,inheritedData:Eb,scope:function(b){return D.data(b,"$scope")||Eb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return D.data(b,"$isolateScope")||D.data(b,"$isolateScopeNoTemplate")},controller:Jc,injector:function(b){return Eb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Bb,css:function(b,a,c){a=db(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=Q(a);if(Fb[d])if(y(c))c? -(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||z).specified?d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(B(b)){var d=a.nodeType;return d===oa||d===qb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(B(a)){if(b.multiple&&"select"===ua(b)){var c=[];s(b.options,function(a){a.selected&& -c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(B(a))return b.innerHTML;xb(b,!0);b.innerHTML=a},empty:Kc},function(b,a){R.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Kc&&(2==b.length&&b!==Bb&&b!==Jc?a:d)===t){if(I(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a, -c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Yf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},hc=function(a){this.options=a};hc.prototype={constructor:hc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text); -},readNumber:function(){for(var a="",c=this.index;this.indexa){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g=== -f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw la("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=nb[a];return x(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=nb[c];return x(function(c,e){return f(c,e,a,d)},{constant:a.constant&& -d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return yf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return x(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0","<=",">=");)a=this.binaryFn(a,c.text, -this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ib.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c= -this.identifier();return x(function(d,e,f){d=f||a(d,e);return null==d?t:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return x(function(e,f){var g=a(e,f),h=d(e,f);ta(h,c);return g?ma(g[h],c):t},{assign:function(e,f,g){var h=ta(d(e,g),c),l=ma(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression()); -while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?t:g,k=a(g,h,l)||z;if(f)for(var m=d.length;m--;)f[m]=ma(d[m](g,h),e);ma(l,e);if(k){if(k.constructor===k)throw la("isecfn",e);if(k===Vf||k===Wf||k===Xf)throw la("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return ma(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(",")) -}this.consume("]");return x(function(c,d){for(var e=[],f=0,g=a.length;fa.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Jb(Math[0=h};d.$observe("min",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:t;e.$validate()})}if(d.max|| -d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||B(l)||a<=l};d.$observe("max",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||Zf.test(d)}},email:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},radio:function(a,c, -d,e){B(d.name)&&c.attr("name",++ob);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),m=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ga(a, -k)});e.$parsers.push(function(a){return a?k:m})},hidden:z,button:z,submit:z,reset:z,file:z},yc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[Q(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],bg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a,c){return bg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value", -a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],$d=["$sce", -"$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=ea({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),be=jc("",!0),de=jc("Odd",0),ce=jc("Even",1),ee=Ja({compile:function(a,c){c.$set("ngCloak", -t);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Dc={},cg={blur:!0,focus:!0};s("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ya("ng-"+a);Dc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})}; -cg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=Y.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=ub(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll", -"$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ca.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,s,r){var t=0,p,v,w,L=function(){v&&(v.remove(),v=null);p&&(p.$destroy(),p=null);w&&(d.leave(w).then(function(){v=null}),v=w,w=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!y(k)||k&&!f.$eval(k)||c()},q=++t;e?(a(e,!0).then(function(a){if(q===t){var c=f.$new(); -s.template=a;a=r(c,function(a){L();d.enter(a,null,g).then(h)});p=c;w=a;p.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){q===t&&(L(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(L(),s.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Gc(f.template,Y).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}], -ke=Ja({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?U(f):f;e.$parsers.push(function(a){if(!B(a)){var c=[];a&&s(a.split(h),function(a){a&&c.push(g?U(a):a)});return c}});e.$formatters.push(function(a){return H(a)?a.join(f):t});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",vd="ng-invalid",Sa="ng-pristine", -Mb="ng-dirty",xd="ng-pending",Ob=new S("ngModel"),dg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success= -{};this.$pending=t;this.$name=m(d.name||"",!1)(a);var n=f(d.ngModel),q=n.assign,u=n,r=q,P=null,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");u=function(a){var d=n(a);G(d)&&(d=c(a));return d};r=function(a,c){G(n(a))?g(a,{$$$p:p.$modelValue}):q(a,p.$modelValue)}}else if(!n.assign)throw Ob("nonassign",d.ngModel,va(e));};this.$render=z;this.$isEmpty=function(a){return B(a)||""===a||null===a||a!==a};var v=e.inheritedData("$formController")|| -Lb,w=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:v,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Mb);g.addClass(e,Sa)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Sa);g.addClass(e,Mb);v.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched", -"ng-untouched")};this.$rollbackViewValue=function(){h.cancel(P);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!V(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(p.$error[p.$$parserName||"parse"]?!1:t,a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=f?a:t,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators=function(a,c,d,e){function f(){var a= -!0;s(p.$validators,function(e,f){var g=e(c,d);a=a&&g;h(f,g)});return a?!0:(s(p.$asyncValidators,function(a,c){h(c,null)}),!1)}function g(){var a=[],e=!0;s(p.$asyncValidators,function(f,g){var l=f(c,d);if(!l||!G(l.then))throw Ob("$asyncValidators",l);h(g,t);a.push(l.then(function(){h(g,!0)},function(a){e=!1;h(g,!1)}))});a.length?k.all(a).then(function(){l(e)},z):l(!0)}function h(a,c){m===w&&p.$setValidity(a,c)}function l(a){m===w&&e(a)}w++;var m=w;(function(a){var c=p.$$parserName||"parse";if(a=== -t)h(c,null);else if(h(c,a),!a)return s(p.$validators,function(a,c){h(c,null)}),s(p.$asyncValidators,function(a,c){h(c,null)}),!1;return!0})(a)?f()?g():l(!1):l(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(P);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=p.$$lastCommittedViewValue,d=B(c)?t:!0;if(d)for(var e=0;eF;)d=r.pop(),m(N,d.label,!1),d.element.remove()}for(;R.length> -x;){l=R.pop();for(F=1;Fa&&q.removeOption(c)})}var n;if(!(n=r.match(d)))throw fg("iexp",r,va(f));var C=c(n[2]||n[1]),x=n[4]||n[6],A=/ as /.test(n[0])&&n[1],B=A?c(A):null,D=n[5],I=c(n[3]||""),F=c(n[2]?n[1]:x),O=c(n[7]),M=n[8]?c(n[8]):null,Q={},R=[[{element:f,label:""}]],S={};z&&(a(z)(e),z.removeClass("ng-scope"),z.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=O(e)||[],c;if(u)c=[],s(f.val(), -function(d){d=M?Q[d]:d;c.push("?"===d?t:""===d?null:h(B?B:F,d,a[d]))});else{var d=M?Q[f.val()]:f.val();c="?"===d?t:""===d?null:h(B?B:F,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(O,l);e.$watchCollection(function(){var a=O(e),c;if(a&&H(a)){c=Array(a.length);for(var d=0,f=a.length;df||e.$isEmpty(c)||c.length<=f}}}}},Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=ba(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};M.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(ca),D(Y).ready(function(){Jd(Y,tc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend(''); +(function(O,U,t){'use strict';function J(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.3/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===Na?M(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(d){return M(c)}}function yc(b){try{return decodeURIComponent(b)}catch(a){}}function zc(b){var a={},c,d;m((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g, +"%20").split("="),d=yc(c[0]),w(d)&&(b=w(c[1])?yc(c[1]):!0,Xa.call(a,d)?G(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Qb(b){var a=[];m(b,function(b,d){G(b)?m(b,function(b){a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))}):a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))});return a.length?a.join("&"):""}function ob(b){return ma(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ma(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g, +"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Yd(b,a){var c,d,e=Oa.length;for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=eb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return d},e= +/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;O&&e.test(O.name)&&(c.debugInfoEnabled=!0,O.name=O.name.replace(e,""));if(O&&!f.test(O.name))return d();O.name=O.name.replace(f,"");ca.resumeBootstrap=function(b){m(b,function(b){a.push(b)});return d()};z(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()}function $d(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.location.reload()}function ae(b){b=ca.element(b).injector();if(!b)throw Fa("test");return b.get("$$testability")}function Bc(b,a){a=a|| +"_";return b.replace(be,function(b,d){return(d?a:"")+b.toLowerCase()})}function ce(){var b;if(!Cc){var a=pb();la=O.jQuery;w(a)&&(la=null===a?t:O[a]);la&&la.fn.on?(y=la,P(la.fn,{scope:Pa.scope,isolateScope:Pa.isolateScope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),b=la.cleanData,la.cleanData=function(a){var d;if(Rb)Rb=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=la._data(f,"events"))&&d.$destroy&&la(f).triggerHandler("$destroy");b(a)}):y=Q;ca.element=y;Cc=!0}}function Sb(b, +a,c){if(!b)throw Fa("areq",a||"?",c||"required");return b}function Qa(b,a,c){c&&G(b)&&(b=b[b.length-1]);Sb(z(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ra(b,a){if("hasOwnProperty"===b)throw Fa("badname",a);}function Dc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=cb(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";m(f,function(a){e.appendChild(a)});return e}function Q(b){if(b instanceof Q)return b;var a;L(b)&&(b=R(b),a=!0);if(!(this instanceof Q)){if(a&&"<"!=b.charAt(0))throw Ub("nosel");return new Q(b)}if(a){a=U; +var c;b=(c=Cf.exec(b))?[a.createElement(c[1])]:(c=Nc(b,a))?c.childNodes:[]}Oc(this,b)}function Vb(b){return b.cloneNode(!0)}function tb(b,a){a||ub(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;dk&&this.remove(s.key);return b}},get:function(a){if(k").parent()[0])});var f=S(a,b,a,c,d,e);Z.$$addScopeClass(a); +var g=null;return function(b,c,d){Sb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?y(Yb(g,y("
").append(a).html())):c?Pa.clone.call(a):a;if(h)for(var k in h)d.data("$"+k+"Controller",h[k].instance);Z.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){function g(a, +c,d,e){var f,k,l,s,n,B,C;if(p)for(C=Array(c.length),s=0;sE.priority)break;if(v=E.scope)E.templateUrl|| +(H(v)?(O("new/isolated scope",u||$,E,ba),u=E):O("new/isolated scope",u,E,ba)),$=$||E;w=E.name;!E.templateUrl&&E.controller&&(v=E.controller,N=N||ga(),O("'"+w+"' controller",N[w],E,ba),N[w]=E);if(v=E.transclude)K=!0,E.$$tlb||(O("transclusion",m,E,ba),m=E),"element"==v?(q=!0,F=E.priority,v=ba,ba=d.$$element=y(U.createComment(" "+w+": "+d[w]+" ")),b=ba[0],T(f,za.call(v,0),b),A=Z(v,e,F,g&&g.name,{nonTlbTranscludeDirective:m})):(v=y(Vb(b)).contents(),ba.empty(),A=Z(v,e));if(E.template)if(I=!0,O("template", +D,E,ba),D=E,v=z(E.template)?E.template(ba,d):E.template,v=fa(v),E.replace){g=E;v=Tb.test(v)?$c(Yb(E.templateNamespace,R(v))):[];b=v[0];if(1!=v.length||b.nodeType!==qa)throw ea("tplrt",w,"");T(f,ba,b);Ta={$attr:{}};v=ha(b,[],Ta);var Q=a.splice(xa+1,a.length-(xa+1));u&&ad(v);a=a.concat(v).concat(Q);J(d,Ta);Ta=a.length}else ba.html(v);if(E.templateUrl)I=!0,O("template",D,E,ba),D=E,E.replace&&(g=E),S=Lf(a.splice(xa,a.length-xa),ba,d,f,K&&A,h,k,{controllerDirectives:N,newScopeDirective:$!==E&&$,newIsolateScopeDirective:u, +templateDirective:D,nonTlbTranscludeDirective:m}),Ta=a.length;else if(E.compile)try{Aa=E.compile(ba,d,A),z(Aa)?n(null,Aa,M,P):Aa&&n(Aa.pre,Aa.post,M,P)}catch(Kf){c(Kf,ua(ba))}E.terminal&&(S.terminal=!0,F=Math.max(F,E.priority))}S.scope=$&&!0===$.scope;S.transcludeOnThisElement=K;S.templateOnThisElement=I;S.transclude=A;s.hasElementTranscludeDirective=q;return S}function ad(a){for(var b=0,c=a.length;bn.priority)&&-1!=n.restrict.indexOf(f)&&(k&&(n=Ob(n,{$$start:k,$$end:l})),b.push(n),h=n)}catch(x){c(x)}}return h}function A(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function Q(a,b){if("srcdoc"==b)return I.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b|| +"ngSrc"==b))return I.RESOURCE_URL}function V(a,c,d,e,f){var g=Q(a,e);f=h[e]||f;var l=b(d,!0,g,f);if(l){if("multiple"===e&&"select"===ta(a))throw ea("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers={});if(k.test(e))throw ea("nodomevents");var s=h[e];s!==d&&(l=s&&b(s,!0,g,f),d=s);l&&(h[e]=l(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(l,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e, +a)}))}}}})}}function T(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=a)return b;for(;a--;)8=== +b[a].nodeType&&Mf.call(b,a,1);return b}function Xe(){var b={},a=!1;this.register=function(a,d){Ra(a,"controller");H(a)?P(b,a):b[a]=d};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(c,d){function e(a,b,c,d){if(!a||!H(a.$scope))throw J("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,l){var k,n,r;h=!0===h;l&&L(l)&&(r=l);if(L(f)){l=f.match(Xc);if(!l)throw Nf("ctrlfmt",f);n=l[1];r=r||l[3];f=b.hasOwnProperty(n)?b[n]:Dc(g.$scope,n,!0)||(a?Dc(d,n,!0):t);Qa(f, +n,!0)}if(h)return h=(G(f)?f[f.length-1]:f).prototype,k=Object.create(h||null),r&&e(g,r,k,n||f.name),P(function(){var a=c.invoke(f,k,g,n);a!==k&&(H(a)||z(a))&&(k=a,r&&e(g,r,k,n||f.name));return k},{instance:k,identifier:r});k=c.instantiate(f,g,n);r&&e(g,r,k,n||f.name);return k}}]}function Ye(){this.$get=["$window",function(b){return y(b.document)}]}function Ze(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b){return H(b)?aa(b)?b.toISOString():db(b):b} +function cf(){this.$get=function(){return function(b){if(!b)return"";var a=[];oc(b,function(b,d){null===b||A(b)||(G(b)?m(b,function(b,c){a.push(ma(d)+"="+ma(Zb(b)))}):a.push(ma(d)+"="+ma(Zb(b))))});return a.join("&")}}}function df(){this.$get=function(){return function(b){function a(b,e,f){null===b||A(b)||(G(b)?m(b,function(b){a(b,e+"[]")}):H(b)&&!aa(b)?oc(b,function(b,c){a(b,e+(f?"":"[")+c+(f?"":"]"))}):c.push(ma(e)+"="+ma(Zb(b))))}if(!b)return"";var c=[];a(b,"",!0);return c.join("&")}}}function $b(b, +a){if(L(b)){var c=b.replace(Of,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(cd))||(d=(d=c.match(Pf))&&Qf[d[0]].test(c));d&&(b=wc(c))}}return b}function dd(b){var a=ga(),c;L(b)?m(b.split("\n"),function(b){c=b.indexOf(":");var e=M(R(b.substr(0,c)));b=R(b.substr(c+1));e&&(a[e]=a[e]?a[e]+", "+b:b)}):H(b)&&m(b,function(b,c){var f=M(c),g=R(b);f&&(a[f]=a[f]?a[f]+", "+g:g)});return a}function ed(b){var a;return function(c){a||(a=dd(b));return c?(c=a[M(c)],void 0===c&&(c=null),c):a}}function fd(b, +a,c,d){if(z(d))return d(b,a,c);m(d,function(d){b=d(b,a,c)});return b}function bf(){var b=this.defaults={transformResponse:[$b],transformRequest:[function(a){return H(a)&&"[object File]"!==sa.call(a)&&"[object Blob]"!==sa.call(a)&&"[object FormData]"!==sa.call(a)?db(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia(ac),put:ia(ac),patch:ia(ac)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},a=!1;this.useApplyAsync=function(b){return w(b)? +(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=P({},a);b.data=a.data?fd(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a,b){var c,e={};m(a,function(a,d){z(a)?(c=a(b),null!=c&&(e[d]=c)):e[d]=a});return e}if(!ca.isObject(a))throw J("$http")("badreq",a);var e=P({method:"get",transformRequest:b.transformRequest, +transformResponse:b.transformResponse,paramSerializer:b.paramSerializer},a);e.headers=function(a){var c=b.headers,e=P({},a.headers),f,g,h,c=P({},c.common,c[M(a.method)]);a:for(f in c){g=M(f);for(h in e)if(M(h)===g)continue a;e[f]=c[f]}return d(e,ia(a))}(a);e.method=rb(e.method);e.paramSerializer=L(e.paramSerializer)?l.get(e.paramSerializer):e.paramSerializer;var f=[function(a){var d=a.headers,e=fd(a.data,ed(d),t,a.transformRequest);A(e)&&m(d,function(a,b){"content-type"===M(b)&&delete d[b]});A(a.withCredentials)&& +!A(b.withCredentials)&&(a.withCredentials=b.withCredentials);return n(a,e).then(c,c)},t],g=h.when(e);for(m(x,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var k=f.shift(),g=g.then(a,k)}g.success=function(a){Qa(a,"fn");g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){Qa(a,"fn");g.then(null,function(b){a(b.data,b.status,b.headers,e)});return g};return g} +function n(c,f){function l(b,c,d,e){function f(){n(c,b,d,e)}N&&(200<=b&&300>b?N.put(S,[b,c,dd(d),e]):N.remove(S));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function n(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?I.resolve:I.reject)({data:a,status:b,headers:ed(d),config:c,statusText:e})}function x(a){n(a.data,a.status,ia(a.headers()),a.statusText)}function m(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var I=h.defer(),B=I.promise,N,D,q=c.headers,S=r(c.url,c.paramSerializer(c.params)); +k.pendingRequests.push(c);B.then(m,m);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(N=H(c.cache)?c.cache:H(b.cache)?b.cache:s);N&&(D=N.get(S),w(D)?D&&z(D.then)?D.then(x,x):G(D)?n(D[1],D[0],ia(D[2]),D[3]):n(D,200,{},"OK"):N.put(S,B));A(D)&&((D=gd(c.url)?e()[c.xsrfCookieName||b.xsrfCookieName]:t)&&(q[c.xsrfHeaderName||b.xsrfHeaderName]=D),d(c.method,S,f,l,q,c.timeout,c.withCredentials,c.responseType));return B}function r(a,b){0=l&&(u.resolve(C),x(p.$$intervalId),delete f[p.$$intervalId]);F||b.$apply()},h);f[p.$$intervalId]=u;return p}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}function ge(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".", +GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), +SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a",ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"]},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=ob(b[a]);return b.join("/")}function hd(b,a){var c=Ba(b);a.$$protocol=c.protocol; +a.$$host=c.hostname;a.$$port=W(c.port)||Tf[c.protocol]||null}function id(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Ba(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=zc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ya(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ja(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Bb(b){return b.replace(/(#.+)|#$/, +"$1")}function cc(b){return b.substr(0,Ja(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);hd(b,this);this.$$parse=function(a){var b=ya(c,a);if(!L(b))throw Cb("ipthprfx",a,c);id(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Qb(this.$$search),b=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)), +!0;var f,g;(f=ya(b,d))!==t?(g=f,g=(f=ya(a,f))!==t?c+(ya("/",f)||f):b+g):(f=ya(c,d))!==t?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);hd(b,this);this.$$parse=function(d){var e=ya(b,d)||ya(c,d),f;A(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",A(e)&&(b=d,this.replace())):(f=ya(a,e),A(f)&&(f=e));id(f,this);d=this.$$path;var e=b,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(d=(f=g.exec(d))?f[1]:d);this.$$path=d;this.$$compose()};this.$$compose= +function(){var c=Qb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ja(b)==Ja(a)?(this.$$parse(a),!0):!1}}function jd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ja(d)?f=d:(g=ya(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c= +Qb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Db(b){return function(){return this[b]}}function kd(b,a){return function(c){if(A(c))return this[b];this[b]=a(c);this.$$compose();return this}}function ff(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return w(a)?(b=a,this):b};this.html5Mode=function(b){return ab(b)?(a.enabled=b,this):H(b)?(ab(b.enabled)&&(a.enabled=b.enabled), +ab(b.requireBase)&&(a.requireBase=b.requireBase),ab(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,n;n=d.baseHref();var r=d.url(),s;if(a.enabled){if(!n&&a.requireBase)throw Cb("nobase");s=r.substring(0, +r.indexOf("/",r.indexOf("//")+2))+(n||"/");n=e.history?dc:jd}else s=Ja(r),n=ec;k=new n(s,"#"+b);k.$$parseLinkUrl(r,r);k.$$state=d.state();var x=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=y(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");H(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ba(h.animVal).href);x.test(h)|| +!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Bb(k.absUrl())!=Bb(r)&&d.url(k.absUrl(),!0);var C=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(C=!1,l(d,e)))});c.$$phase||c.$digest()});c.$watch(function(){var a= +Bb(d.url()),b=Bb(k.absUrl()),f=d.state(),g=k.$$replace,n=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(C||n)C=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(n&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function gf(){var b=!0,a=this;this.debugEnabled=function(a){return w(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&& +(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||v;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];m(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]} +function Ca(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw da("isecfld",a);return b}function oa(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b.window===b)throw da("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw da("isecdom",a);if(b===Object)throw da("isecobj",a);}return b}function ld(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b===Uf||b===Vf||b===Wf)throw da("isecff",a); +}}function Xf(b,a){return"undefined"!==typeof b?b:a}function md(b,a){return"undefined"===typeof b?a:"undefined"===typeof a?b:b+a}function T(b,a){var c,d;switch(b.type){case q.Program:c=!0;m(b.body,function(b){T(b.expression,a);c=c&&b.expression.constant});b.constant=c;break;case q.Literal:b.constant=!0;b.toWatch=[];break;case q.UnaryExpression:T(b.argument,a);b.constant=b.argument.constant;b.toWatch=b.argument.toWatch;break;case q.BinaryExpression:T(b.left,a);T(b.right,a);b.constant=b.left.constant&& +b.right.constant;b.toWatch=b.left.toWatch.concat(b.right.toWatch);break;case q.LogicalExpression:T(b.left,a);T(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=b.constant?[]:[b];break;case q.ConditionalExpression:T(b.test,a);T(b.alternate,a);T(b.consequent,a);b.constant=b.test.constant&&b.alternate.constant&&b.consequent.constant;b.toWatch=b.constant?[]:[b];break;case q.Identifier:b.constant=!1;b.toWatch=[b];break;case q.MemberExpression:T(b.object,a);b.computed&&T(b.property,a); +b.constant=b.object.constant&&(!b.computed||b.property.constant);b.toWatch=[b];break;case q.CallExpression:c=b.filter?!a(b.callee.name).$stateful:!1;d=[];m(b.arguments,function(b){T(b,a);c=c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=b.filter&&!a(b.callee.name).$stateful?d:[b];break;case q.AssignmentExpression:T(b.left,a);T(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=[b];break;case q.ArrayExpression:c=!0;d=[];m(b.elements,function(b){T(b,a);c= +c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=d;break;case q.ObjectExpression:c=!0;d=[];m(b.properties,function(b){T(b.value,a);c=c&&b.value.constant;b.value.constant||d.push.apply(d,b.value.toWatch)});b.constant=c;b.toWatch=d;break;case q.ThisExpression:b.constant=!1,b.toWatch=[]}}function nd(b){if(1==b.length){b=b[0].expression;var a=b.toWatch;return 1!==a.length?a:a[0]!==b?a:t}}function od(b){return b.type===q.Identifier||b.type===q.MemberExpression}function pd(b){if(1=== +b.body.length&&od(b.body[0].expression))return{type:q.AssignmentExpression,left:b.body[0].expression,right:{type:q.NGValueParameter},operator:"="}}function qd(b){return 0===b.body.length||1===b.body.length&&(b.body[0].expression.type===q.Literal||b.body[0].expression.type===q.ArrayExpression||b.body[0].expression.type===q.ObjectExpression)}function rd(b,a){this.astBuilder=b;this.$filter=a}function sd(b,a){this.astBuilder=b;this.$filter=a}function Eb(b,a,c,d){oa(b,d);a=a.split(".");for(var e,f=0;1< +a.length;f++){e=Ca(a.shift(),d);var g=oa(b[e],d);g||(g={},b[e]=g);b=g}e=Ca(a.shift(),d);oa(b[e],d);return b[e]=c}function Fb(b){return"constructor"==b}function fc(b){return z(b.valueOf)?b.valueOf():Yf.call(b)}function hf(){var b=ga(),a=ga();this.$get=["$filter","$sniffer",function(c,d){function e(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function f(a,b,c,d,f){var g=d.inputs,h;if(1===g.length){var k=e,g=g[0];return a.$watch(function(a){var b= +g(a);e(b,k)||(h=d(a,t,t,[b]),k=b&&fc(b));return h},b,c,f)}for(var l=[],n=[],r=0,m=g.length;r=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;fa)for(b in l++,f)e.hasOwnProperty(b)|| +(m--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1m&&(E=4-m,u[E]||(u[E]=[]),u[E].push({msg:z(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));else if(b===d){s=!1;break a}}catch(A){g(A)}if(!(k=x.$$watchersCount&&x.$$childHead||x!==this&&x.$$nextSibling))for(;x!== +this&&!(k=x.$$nextSibling);)x=x.$parent}while(x=k);if((s||t.length)&&!m--)throw p.$$phase=null,c("infdig",a,u);}while(s||t.length);for(p.$$phase=null;w.length;)try{w.shift()()}catch(y){g(y)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===p&&l.$$applicationDestroyed();s(this,-this.$$watchersCount);for(var b in this.$$listenerCount)x(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail== +this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=v;this.$on=this.$watch=this.$watchGroup=function(){return v};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(a,b){return h(a)(this,b)}, +$evalAsync:function(a,b){p.$$phase||t.length||l.defer(function(){t.length&&p.$digest()});t.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){w.push(a)},$apply:function(a){try{return r("$apply"),this.$eval(a)}catch(b){g(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&I.push(b);u()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]|| +(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,x(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=cb([h],arguments,1),l,n;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(n=d.length;lUa)throw Da("iequirks");var d=ia(pa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs= +d.getTrusted=function(a,b){return b},d.valueOf=Ya);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;m(pa,function(a,b){var c=M(b);d[hb("parse_as_"+c)]=function(b){return e(a,b)};d[hb("get_trusted_"+c)]=function(b){return f(a,b)};d[hb("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function of(){this.$get=["$window","$document",function(b,a){var c={},d=W((/android (\d+)/.exec(M((b.navigator|| +{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,n=!1;if(l){for(var r in l)if(k=h.exec(r)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);n=!!("animation"in l||g+"Animation"in l);!d||k&&n||(k=L(l.webkitTransition),n=L(l.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"=== +a&&11>=Ua)return!1;if(A(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:fb(),vendorPrefix:g,transitions:k,animations:n,android:d}}]}function qf(){this.$get=["$templateCache","$http","$q","$sce",function(b,a,c,d){function e(f,g){e.totalPendingRequests++;L(f)&&b.get(f)||(f=d.getTrustedResourceUrl(f));var h=a.defaults&&a.defaults.transformResponse;G(h)?h=h.filter(function(a){return a!==$b}):h===$b&&(h=null);return a.get(f,{cache:b,transformResponse:h})["finally"](function(){e.totalPendingRequests--}).then(function(a){b.put(f, +a.data);return a.data},function(a){if(!g)throw ea("tpload",f,a.status,a.statusText);return c.reject(a)})}e.totalPendingRequests=0;return e}]}function rf(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];m(a,function(a){var d=ca.element(a).data("$binding");d&&m(d,function(d){c?(new RegExp("(^|\\s)"+ud(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a, +b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;hb;b=Math.abs(b);var g=Infinity===b;if(!g&&!isFinite(b))return"";var h=b+"",l="",k=!1,n=[];g&&(l="\u221e"); +if(!g&&-1!==h.indexOf("e")){var r=h.match(/([\d\.]+)e(-?)(\d+)/);r&&"-"==r[2]&&r[3]>e+1?b=0:(l=h,k=!0)}if(g||k)0b&&(l=b.toFixed(e),b=parseFloat(l));else{g=(h.split(Dd)[1]||"").length;A(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(Dd),h=g[0],g=g[1]||"",r=0,s=a.lgSize,m=a.gSize;if(h.length>=s+m)for(r=h.length-s,k=0;kb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Gb(e,a,d)}}function Hb(b,a){return function(c,d){var e=c["get"+b](),f=rb(a?"SHORT"+b:b);return d[f][e]}}function Ed(b){var a= +(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function Fd(b){return function(a){var c=Ed(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Gb(a,b)}}function jc(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function zd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=W(b[9]+b[10]),g=W(b[9]+b[11]));h.call(a,W(b[1]), +W(b[2])-1,W(b[3]));f=W(b[4]||0)-f;g=W(b[5]||0)-g;h=W(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;L(c)&&(c=fg.test(c)?W(c):a(c));V(c)&&(c=new Date(c));if(!aa(c)||!isFinite(c.getTime()))return c;for(;e;)(k=gg.exec(e))?(h=cb(h,k,1),e=h.pop()):(h.push(e),e=null);var n=c.getTimezoneOffset(); +f&&(n=xc(f,c.getTimezoneOffset()),c=Pb(c,f,!0));m(h,function(a){l=hg[a];g+=l?l(c,b.DATETIME_FORMATS,n):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ag(){return function(b,a){A(a)&&(a=2);return db(b,a)}}function bg(){return function(b,a,c){a=Infinity===Math.abs(Number(a))?Number(a):W(a);if(isNaN(a))return b;V(b)&&(b=b.toString());if(!G(b)&&!L(b))return b;c=!c||isNaN(c)?0:W(c);c=0>c&&c>=-b.length?b.length+c:c;return 0<=a?b.slice(c,c+a):0===c?b.slice(a,b.length):b.slice(Math.max(0, +c+a),c)}}function Bd(b){function a(a,c){c=c?-1:1;return a.map(function(a){var d=1,h=Ya;if(z(a))h=a;else if(L(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))d="-"==a.charAt(0)?-1:1,a=a.substring(1);if(""!==a&&(h=b(a),h.constant))var l=h(),h=function(a){return a[l]}}return{get:h,descending:d*c}})}function c(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(b,e,f){if(!Ea(b))return b;G(e)||(e=[e]);0===e.length&&(e=["+"]);var g=a(e,f);b=Array.prototype.map.call(b, +function(a,b){return{value:a,predicateValues:g.map(function(d){var e=d.get(a);d=typeof e;if(null===e)d="string",e="null";else if("string"===d)e=e.toLowerCase();else if("object"===d)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),c(e)))break a;if(rc(e)&&(e=e.toString(),c(e)))break a;e=b}return{value:e,type:d}})}});b.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",n)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}function Kb(b,a){return function(c,d){var e,f;if(aa(c))return c;if(L(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1)); +if(ig.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},m(e,function(b,c){c=F};g.$observe("min",function(a){F=s(a);h.$validate()})}if(w(g.max)||g.ngMax){var u; +h.$validators.max=function(a){return!r(a)||A(u)||c(a)<=u};g.$observe("max",function(a){u=s(a);h.$validate()})}}}function Id(b,a,c,d){(d.$$hasNativeValidators=H(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function Jd(b,a,c,d,e){if(w(d)){b=b(d);if(!b.constant)throw J("ngModel")("constexpr",c,d);return b(a)}return e}function lc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,Af=/<([\w:]+)/,Bf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,na={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};na.optgroup=na.option;na.tbody=na.tfoot=na.colgroup=na.caption=na.thead; +na.th=na.td;var Pa=Q.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===U.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),Q(O).on("load",a))},toString:function(){var b=[];m(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?y(this[b]):y(this[this.length+b])},length:0,push:kg,sort:[].sort,splice:[].splice},Ab={};m("multiple selected checked disabled readOnly required open".split(" "),function(b){Ab[M(b)]=b});var Tc={};m("input select option textarea button form details".split(" "), +function(b){Tc[b]=!0});var Uc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};m({data:Wb,removeData:ub,hasData:function(b){for(var a in ib[b.ng339])return!0;return!1}},function(b,a){Q[a]=b});m({data:Wb,inheritedData:zb,scope:function(b){return y.data(b,"$scope")||zb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return y.data(b,"$isolateScope")||y.data(b,"$isolateScopeNoTemplate")},controller:Qc,injector:function(b){return zb(b, +"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:wb,css:function(b,a,c){a=hb(a);if(w(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=b.nodeType;if(d!==Na&&2!==d&&8!==d)if(d=M(a),Ab[d])if(w(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||v).specified?d:t;else if(w(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(w(c))b[a]=c;else return b[a]}, +text:function(){function b(a,b){if(A(b)){var d=a.nodeType;return d===qa||d===Na?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(A(a)){if(b.multiple&&"select"===ta(b)){var c=[];m(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(A(a))return b.innerHTML;tb(b,!0);b.innerHTML=a},empty:Rc},function(b,a){Q.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Rc&&(2==b.length&&b!==wb&&b!==Qc? +a:d)===t){if(H(a)){for(e=0;e <= >= && || ! = |".split(" "),function(a){Mb[a]=!0});var qg={n:"\n",f:"\f",r:"\r", +t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a|| +"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=w(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw da("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">=");)a={type:q.BinaryExpression,operator:c.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a={type:q.BinaryExpression,operator:c.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:c.text, +left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=fa(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant(): +this.throwError("not a primary expression",this.peek());for(var c;c=this.expect("(","[",".");)"("===c.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===c.text?(a={type:q.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===c.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var c={type:q.CallExpression,callee:this.identifier(), +arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return c},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:q.Identifier,name:a.text}},constant:function(){return{type:q.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break; +a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:q.ArrayExpression,elements:a}},object:function(){var a=[],c;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;c={type:q.Property,kind:"init"};this.peek().constant?c.key=this.constant():this.peek().identifier?c.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");c.value=this.expression();a.push(c)}while(this.expect(","))}this.consume("}");return{type:q.ObjectExpression,properties:a}}, +throwError:function(a,c){throw da("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},consume:function(a){if(0===this.tokens.length)throw da("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},peekToken:function(){if(0===this.tokens.length)throw da("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a]; +var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},constants:{"true":{type:q.Literal,value:!0},"false":{type:q.Literal,value:!1},"null":{type:q.Literal,value:null},undefined:{type:q.Literal,value:t},"this":{type:q.ThisExpression}}};rd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:c,fn:{vars:[],body:[],own:{}},assign:{vars:[], +body:[],own:{}},inputs:[]};T(e,d.$filter);var f="",g;this.stage="assign";if(g=pd(e))this.state.computing="assign",f=this.nextId(),this.recurse(g,f),f="fn.assign="+this.generateFunction("assign","s,v,l");g=nd(e.body);d.stage="inputs";m(g,function(a,c){var e="fn"+c;d.state[e]={vars:[],body:[],own:{}};d.state.computing=e;var f=d.nextId();d.recurse(a,f);d.return_(f);d.state.inputs.push(e);a.watchId=c});this.state.computing="fn";this.stage="main";this.recurse(e);f='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+ +"var fn="+this.generateFunction("fn","s,l,a,i")+f+this.watchFns()+"return fn;";f=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","ifDefined","plus","text",f))(this.$filter,Ca,oa,ld,Xf,md,a);this.state=this.stage=t;f.literal=qd(e);f.constant=e.constant;return f},USE:"use",STRICT:"strict",watchFns:function(){var a=[],c=this.state.inputs,d=this;m(c,function(c){a.push("var "+c+"="+d.generateFunction(c,"s"))});c.length&&a.push("fn.inputs=["+c.join(",")+"];");return a.join("")}, +generateFunction:function(a,c){return"function("+c+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],c=this;m(this.state.filters,function(d,e){a.push(d+"=$filter("+c.escape(e)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,c,d,e,f,g){var h,l,k=this,n,r;e=e||v;if(!g&&w(a.watchId))c=c||this.nextId(),this.if_("i", +this.lazyAssign(c,this.computedMember("i",a.watchId)),this.lazyRecurse(a,c,d,e,f,!0));else switch(a.type){case q.Program:m(a.body,function(c,d){k.recurse(c.expression,t,t,function(a){l=a});d!==a.body.length-1?k.current().body.push(l,";"):k.return_(l)});break;case q.Literal:r=this.escape(a.value);this.assign(c,r);e(r);break;case q.UnaryExpression:this.recurse(a.argument,t,t,function(a){l=a});r=a.operator+"("+this.ifDefined(l,0)+")";this.assign(c,r);e(r);break;case q.BinaryExpression:this.recurse(a.left, +t,t,function(a){h=a});this.recurse(a.right,t,t,function(a){l=a});r="+"===a.operator?this.plus(h,l):"-"===a.operator?this.ifDefined(h,0)+a.operator+this.ifDefined(l,0):"("+h+")"+a.operator+"("+l+")";this.assign(c,r);e(r);break;case q.LogicalExpression:c=c||this.nextId();k.recurse(a.left,c);k.if_("&&"===a.operator?c:k.not(c),k.lazyRecurse(a.right,c));e(c);break;case q.ConditionalExpression:c=c||this.nextId();k.recurse(a.test,c);k.if_(c,k.lazyRecurse(a.alternate,c),k.lazyRecurse(a.consequent,c));e(c); +break;case q.Identifier:c=c||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ca(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){f&&1!==f&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(c,k.nonComputedMember("s",a.name))})},c&&k.lazyAssign(c,k.nonComputedMember("l", +a.name)));(k.state.expensiveChecks||Fb(a.name))&&k.addEnsureSafeObject(c);e(c);break;case q.MemberExpression:h=d&&(d.context=this.nextId())||this.nextId();c=c||this.nextId();k.recurse(a.object,h,t,function(){k.if_(k.notNull(h),function(){if(a.computed)l=k.nextId(),k.recurse(a.property,l),k.addEnsureSafeMemberName(l),f&&1!==f&&k.if_(k.not(k.computedMember(h,l)),k.lazyAssign(k.computedMember(h,l),"{}")),r=k.ensureSafeObject(k.computedMember(h,l)),k.assign(c,r),d&&(d.computed=!0,d.name=l);else{Ca(a.property.name); +f&&1!==f&&k.if_(k.not(k.nonComputedMember(h,a.property.name)),k.lazyAssign(k.nonComputedMember(h,a.property.name),"{}"));r=k.nonComputedMember(h,a.property.name);if(k.state.expensiveChecks||Fb(a.property.name))r=k.ensureSafeObject(r);k.assign(c,r);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(c,"undefined")});e(c)},!!f);break;case q.CallExpression:c=c||this.nextId();a.filter?(l=k.filter(a.callee.name),n=[],m(a.arguments,function(a){var c=k.nextId();k.recurse(a,c);n.push(c)}),r=l+ +"("+n.join(",")+")",k.assign(c,r),e(c)):(l=k.nextId(),h={},n=[],k.recurse(a.callee,l,h,function(){k.if_(k.notNull(l),function(){k.addEnsureSafeFunction(l);m(a.arguments,function(a){k.recurse(a,k.nextId(),t,function(a){n.push(k.ensureSafeObject(a))})});h.name?(k.state.expensiveChecks||k.addEnsureSafeObject(h.context),r=k.member(h.context,h.name,h.computed)+"("+n.join(",")+")"):r=l+"("+n.join(",")+")";r=k.ensureSafeObject(r);k.assign(c,r)},function(){k.assign(c,"undefined")});e(c)}));break;case q.AssignmentExpression:l= +this.nextId();h={};if(!od(a.left))throw da("lval");this.recurse(a.left,t,h,function(){k.if_(k.notNull(h.context),function(){k.recurse(a.right,l);k.addEnsureSafeObject(k.member(h.context,h.name,h.computed));r=k.member(h.context,h.name,h.computed)+a.operator+l;k.assign(c,r);e(c||r)})},1);break;case q.ArrayExpression:n=[];m(a.elements,function(a){k.recurse(a,k.nextId(),t,function(a){n.push(a)})});r="["+n.join(",")+"]";this.assign(c,r);e(r);break;case q.ObjectExpression:n=[];m(a.properties,function(a){k.recurse(a.value, +k.nextId(),t,function(c){n.push(k.escape(a.key.type===q.Identifier?a.key.name:""+a.key.value)+":"+c)})});r="{"+n.join(",")+"}";this.assign(c,r);e(r);break;case q.ThisExpression:this.assign(c,"s");e("s");break;case q.NGValueParameter:this.assign(c,"v"),e("v")}},getHasOwnProperty:function(a,c){var d=a+"."+c,e=this.current().own;e.hasOwnProperty(d)||(e[d]=this.nextId(!1,a+"&&("+this.escape(c)+" in "+a+")"));return e[d]},assign:function(a,c){if(a)return this.current().body.push(a,"=",c,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)|| +(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,c){return"ifDefined("+a+","+this.escape(c)+")"},plus:function(a,c){return"plus("+a+","+c+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,c,d){if(!0===a)c();else{var e=this.current().body;e.push("if(",a,"){");c();e.push("}");d&&(e.push("else{"),d(),e.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,c){return a+ +"."+c},computedMember:function(a,c){return a+"["+c+"]"},member:function(a,c,d){return d?this.computedMember(a,c):this.nonComputedMember(a,c)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+ +a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},lazyRecurse:function(a,c,d,e,f,g){var h=this;return function(){h.recurse(a,c,d,e,f,g)}},lazyAssign:function(a,c){var d=this;return function(){d.assign(a,c)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(L(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(V(a))return a.toString();if(!0===a)return"true"; +if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw da("esc");},nextId:function(a,c){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(c?"="+c:""));return d},current:function(){return this.state[this.state.computing]}};sd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=c;T(e,d.$filter);var f,g;if(f=pd(e))g=this.recurse(f);f=nd(e.body);var h;f&&(h=[],m(f,function(a,c){var e=d.recurse(a); +a.input=e;h.push(e);a.watchId=c}));var l=[];m(e.body,function(a){l.push(d.recurse(a.expression))});f=0===e.body.length?function(){}:1===e.body.length?l[0]:function(a,c){var d;m(l,function(e){d=e(a,c)});return d};g&&(f.assign=function(a,c,d){return g(a,d,c)});h&&(f.inputs=h);f.literal=qd(e);f.constant=e.constant;return f},recurse:function(a,c,d){var e,f,g=this,h;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,c);case q.UnaryExpression:return f= +this.recurse(a.argument),this["unary"+a.operator](f,c);case q.BinaryExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case q.LogicalExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),c);case q.Identifier:return Ca(a.name,g.expression),g.identifier(a.name,g.expensiveChecks||Fb(a.name), +c,d,g.expression);case q.MemberExpression:return e=this.recurse(a.object,!1,!!d),a.computed||(Ca(a.property.name,g.expression),f=a.property.name),a.computed&&(f=this.recurse(a.property)),a.computed?this.computedMember(e,f,c,d,g.expression):this.nonComputedMember(e,f,g.expensiveChecks,c,d,g.expression);case q.CallExpression:return h=[],m(a.arguments,function(a){h.push(g.recurse(a))}),a.filter&&(f=this.$filter(a.callee.name)),a.filter||(f=this.recurse(a.callee,!0)),a.filter?function(a,d,e,g){for(var m= +[],q=0;q":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>c(e,f,g,h);return d?{value:e}:e}},"binary<=":function(a,c,d){return function(e, +f,g,h){e=a(e,f,g,h)<=c(e,f,g,h);return d?{value:e}:e}},"binary>=":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>=c(e,f,g,h);return d?{value:e}:e}},"binary&&":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)&&c(e,f,g,h);return d?{value:e}:e}},"binary||":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)||c(e,f,g,h);return d?{value:e}:e}},"ternary?:":function(a,c,d,e){return function(f,g,h,l){f=a(f,g,h,l)?c(f,g,h,l):d(f,g,h,l);return e?{value:f}:f}},value:function(a,c){return function(){return c? +{context:t,name:t,value:a}:a}},identifier:function(a,c,d,e,f){return function(g,h,l,k){g=h&&a in h?h:g;e&&1!==e&&g&&!g[a]&&(g[a]={});h=g?g[a]:t;c&&oa(h,f);return d?{context:g,name:a,value:h}:h}},computedMember:function(a,c,d,e,f){return function(g,h,l,k){var n=a(g,h,l,k),m,s;null!=n&&(m=c(g,h,l,k),Ca(m,f),e&&1!==e&&n&&!n[m]&&(n[m]={}),s=n[m],oa(s,f));return d?{context:n,name:m,value:s}:s}},nonComputedMember:function(a,c,d,e,f,g){return function(h,l,k,n){h=a(h,l,k,n);f&&1!==f&&h&&!h[c]&&(h[c]={}); +l=null!=h?h[c]:t;(d||Fb(c))&&oa(l,g);return e?{context:h,name:c,value:l}:l}},inputs:function(a,c){return function(d,e,f,g){return g?g[c]:a(d,e,f)}}};var hc=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d;this.ast=new q(this.lexer);this.astCompiler=d.csp?new sd(this.ast,c):new rd(this.ast,c)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};ga();ga();var Yf=Object.prototype.valueOf,Da=J("$sce"),pa={HTML:"html",CSS:"css",URL:"url", +RESOURCE_URL:"resourceUrl",JS:"js"},ea=J("$compile"),X=U.createElement("a"),wd=Ba(O.location.href);xd.$inject=["$document"];Lc.$inject=["$provide"];yd.$inject=["$locale"];Ad.$inject=["$locale"];var Dd=".",hg={yyyy:Y("FullYear",4),yy:Y("FullYear",2,0,!0),y:Y("FullYear",1),MMMM:Hb("Month"),MMM:Hb("Month",!0),MM:Y("Month",2,1),M:Y("Month",1,1),dd:Y("Date",2),d:Y("Date",1),HH:Y("Hours",2),H:Y("Hours",1),hh:Y("Hours",2,-12),h:Y("Hours",1,-12),mm:Y("Minutes",2),m:Y("Minutes",1),ss:Y("Seconds",2),s:Y("Seconds", +1),sss:Y("Milliseconds",3),EEEE:Hb("Day"),EEE:Hb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a,c,d){a=-1*d;return a=(0<=a?"+":"")+(Gb(Math[0=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},gg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,fg=/^\-?\d+$/;zd.$inject=["$locale"];var cg=ra(M),dg=ra(rb);Bd.$inject= +["$parse"];var ie=ra({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===sa.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),sb={};m(Ab,function(a,c){function d(a,d,f){a.$watch(f[e],function(a){f.$set(c,!!a)})}if("multiple"!=a){var e=wa("ng-"+c),f=d;"checked"===a&&(f=function(a,c,f){f.ngModel!==f[e]&&d(a,c,f)});sb[e]=function(){return{restrict:"A", +priority:100,link:f}}}});m(Uc,function(a,c){sb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(jg))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});m(["src","srcset","href"],function(a){var c=wa("ng-"+a);sb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===sa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href", +g=null);f.$observe(c,function(c){c?(f.$set(h,c),Ua&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Ib={$addControl:v,$$renameControl:function(a,c){a.$name=c},$removeControl:v,$setValidity:v,$setDirty:v,$setPristine:v,$setSubmitted:v};Gd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Od=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Gd,compile:function(d,e){d.addClass(Va).addClass(mb);var f=e.name?"name":a&&e.ngForm?"ngForm": +!1;return{pre:function(a,d,e,k){if(!("action"in e)){var n=function(c){a.$apply(function(){k.$commitViewValue();k.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",n,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",n,!1)},0,!1)})}var m=k.$$parentForm;f&&(Eb(a,k.$name,k,k.$name),e.$observe(f,function(c){k.$name!==c&&(Eb(a,k.$name,t,k.$name),m.$$renameControl(k,c),Eb(a,k.$name,k,k.$name))}));d.on("$destroy",function(){m.$removeControl(k);f&&Eb(a,e[f],t, +k.$name);P(k,Ib)})}}}}}]},je=Od(),we=Od(!0),ig=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,rg=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,sg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,tg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Pd=/^(\d{4})-(\d{2})-(\d{2})$/,Qd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,mc=/^(\d{4})-W(\d\d)$/,Rd=/^(\d{4})-(\d\d)$/, +Sd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Td={text:function(a,c,d,e,f,g){kb(a,c,d,e,f,g);kc(e)},date:lb("date",Pd,Kb(Pd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":lb("datetimelocal",Qd,Kb(Qd,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:lb("time",Sd,Kb(Sd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:lb("week",mc,function(a,c){if(aa(a))return a;if(L(a)){mc.lastIndex=0;var d=mc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=Ed(e),f=7*(f-1);c&&(d=c.getHours(),g= +c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:lb("month",Rd,Kb(Rd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){Id(a,c,d,e);kb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:tg.test(a)?parseFloat(a):t});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!V(a))throw Lb("numfmt",a);a=a.toString()}return a});if(w(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)|| +A(h)||a>=h};d.$observe("min",function(a){w(a)&&!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:t;e.$validate()})}if(w(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||A(l)||a<=l};d.$observe("max",function(a){w(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){kb(a,c,d,e,f,g);kc(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||rg.test(d)}},email:function(a,c,d,e,f,g){kb(a,c,d,e,f,g);kc(e); +e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||sg.test(d)}},radio:function(a,c,d,e){A(d.name)&&c.attr("name",++nb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=Jd(l,a,"ngTrueValue",d.ngTrueValue,!0),n=Jd(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&& +a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ka(a,k)});e.$parsers.push(function(a){return a?k:n})},hidden:v,button:v,submit:v,reset:v,file:v},Fc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Td[M(h.type)]||Td.text)(f,g,h,l[0],c,a,d,e)}}}}],ug=/^(true|false|\d+)$/,Oe=function(){return{restrict:"A",priority:100,compile:function(a, +c){return ug.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},oe=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],qe=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate)); +c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],pe=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Ne=ra({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), +re=lc("",!0),te=lc("Odd",0),se=lc("Even",1),ue=Ma({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),ve=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Kc={},vg={blur:!0,focus:!0};m("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=wa("ng-"+a);Kc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h= +d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};vg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ye=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=U.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k= +qb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],ze=["$templateRequest","$anchorScroll","$animate",function(a,c,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ca.noop,compile:function(e,f){var g=f.ngInclude||f.src,h=f.onload||"",l=f.autoscroll;return function(e,f,m,s,q){var t=0,F,u,p,v=function(){u&&(u.remove(),u=null);F&&(F.$destroy(),F=null);p&&(d.leave(p).then(function(){u=null}),u=p,p=null)};e.$watch(g,function(g){var m=function(){!w(l)||l&&!e.$eval(l)|| +c()},r=++t;g?(a(g,!0).then(function(a){if(r===t){var c=e.$new();s.template=a;a=q(c,function(a){v();d.enter(a,null,f).then(m)});F=c;p=a;F.$emit("$includeContentLoaded",g);e.$eval(h)}},function(){r===t&&(v(),e.$emit("$includeContentError",g))}),e.$emit("$includeContentRequested",g)):(v(),s.template=null)})}}}}],Qe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Nc(f.template,U).childNodes)(c,function(a){d.append(a)}, +{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],Ae=Ma({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),Me=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?R(f):f;e.$parsers.push(function(a){if(!A(a)){var c=[];a&&m(a.split(h),function(a){a&&c.push(g?R(a):a)});return c}});e.$formatters.push(function(a){return G(a)?a.join(f):t});e.$isEmpty=function(a){return!a|| +!a.length}}}},mb="ng-valid",Kd="ng-invalid",Va="ng-pristine",Jb="ng-dirty",Md="ng-pending",Lb=new J("ngModel"),wg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,n){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty= +!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=t;this.$name=n(d.name||"",!1)(a);var r=f(d.ngModel),s=r.assign,q=r,C=s,F=null,u,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");q=function(a){var d=r(a);z(d)&&(d=c(a));return d};C=function(a,c){z(r(a))?g(a,{$$$p:p.$modelValue}):s(a,p.$modelValue)}}else if(!r.assign)throw Lb("nonassign",d.ngModel,ua(e));};this.$render=v;this.$isEmpty=function(a){return A(a)|| +""===a||null===a||a!==a};var K=e.inheritedData("$formController")||Ib,y=0;Hd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:K,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Jb);g.addClass(e,Va)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Va);g.addClass(e,Jb);K.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched= +function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(F);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!V(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=f?a:t,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators= +function(a,c,d){function e(){var d=!0;m(p.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(m(p.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;m(p.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!z(k.then))throw Lb("$asyncValidators",k);g(h,t);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},v):h(!0)}function g(a,c){l===y&&p.$setValidity(a,c)}function h(a){l===y&&d(a)}y++;var l=y;(function(){var a= +p.$$parserName||"parse";if(u===t)g(a,null);else return u||(m(p.$validators,function(a,c){g(c,null)}),m(p.$asyncValidators,function(a,c){g(c,null)})),g(a,u),u;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(F);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=p.$$lastCommittedViewValue;if(u=A(c)?t:!0)for(var d= +0;df||e.$isEmpty(c)||c.length<=f}}}}},Ic=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=W(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};O.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(ce(),ee(ca),y(U).ready(function(){Zd(U,Ac)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document.head).prepend(''); //# sourceMappingURL=angular.min.js.map diff --git a/www/lib/angular/angular.min.js.gzip b/www/lib/angular/angular.min.js.gzip index 5379d021..64c240da 100644 Binary files a/www/lib/angular/angular.min.js.gzip and b/www/lib/angular/angular.min.js.gzip differ diff --git a/www/lib/angular/angular.min.js.map b/www/lib/angular/angular.min.js.map index 5917a9a2..71ce90dc 100644 --- a/www/lib/angular/angular.min.js.map +++ b/www/lib/angular/angular.min.js.map @@ -1,8 +1,8 @@ { "version":3, "file":"angular.min.js", -"lineCount":249, -"mappings":"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", +"lineCount":289, +"mappings":"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", "sources":["angular.js"], -"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","forEachSorted","keys","Object","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","j","jj","int","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","push","result","Date","getTime","RegExp","match","lastIndex","emptyObject","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","createMap","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","$$jqLite","$$jqLiteProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","prototype","returnedValue","annotate","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","check","pollFns","pollFn","pollTimeout","cacheStateAndFireUrlChange","cacheState","fireUrlChange","cachedState","history","state","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","safeDecodeURIComponent","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","newValue","$$inter","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","expensiveChecks","eso","o","eso0","eso1","eso2","eso3","eso4","cspSafeGetter","pathVal","getterFnWithEnsureSafeObject","s","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","code","needsEnsureSafeObject","lookupJs","evaledFnGetter","Function","sharedGetter","fn.assign","getValueOf","objectValueOf","cacheDefault","cacheExpensive","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$listeners","$$listenerCount","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","destroyChild","child","$$ChildScope","this.$$ChildScope","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","isNaN","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","currentScope","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","msie","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","spacing","limit","Infinity","sortPredicate","reverseOrder","reverseComparator","comp","descending","objectToString","v1","v2","map","predicate","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","applyStyles","styles","from","to","animate","enter","leave","move","$$addClassImmediately","$$removeClassImmediately","add","createdCache","STORAGE_KEY","$$setClassImmediately","APPLICATION_JSON","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","&&","||","!","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","operator","throwError","chars","isExpOperator","start","end","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","peekToken","e1","e2","e3","e4","peekAhead","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseConstant","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","$parseFieldAccess","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","ngFormPreLink","handleFormSubmission","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","$event","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","parserValid","allValid","$$writeModelToScope","this.$$runValidators","parseValid","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","tempClasses","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","trackFn","trackIndex","isSelected","compareValueFn","selectAsFn","scheduleRendering","renderScheduled","render","updateLabelMap","labelMap","label","added","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","anySelected","optionId","trackKeysCache","groupByFn","displayFn","nullOption","groupIndex","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","selectAs","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","$$csp"] +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","Object","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","baseExtend","dst","objs","deep","ii","isObject","j","jj","src","isDate","Date","valueOf","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","hasCustomToString","toString","prototype","isUndefined","isDefined","getPrototypeOf","isNumber","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","TYPED_ARRAY_REGEXP","test","push","constructor","getTime","RegExp","match","lastIndex","emptyObject","shallowCopy","charAt","equals","o1","o2","t1","t2","keySet","createMap","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","timezoneOffset","getTimezoneOffset","setMinutes","getMinutes","minutes","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$CoreAnimateRunnerProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","result","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","returnedValue","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","bindToController","controllerAs","CNTRL_REG","$$bindings","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","destroyBindings","$new","$$destroyBindings","$on","transcludeOnThisElement","createBoundTranscludeFn","transclude","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","msie","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","substring","inheritType","dataName","setupControllers","controllerDirectives","controllerKey","$scope","$attrs","$transclude","controllerInstance","hasElementTranscludeDirective","linkNode","thisLinkFn","controllersBoundTransclude","cloneAttachFn","scopeToChild","templateDirective","$$originalDirective","initializeDirectiveBindings","scopeDirective","newScopeDirective","controllerForBindings","identifier","controllerResult","invokeLinkFn","template","templateUrl","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","wrapModuleNameIfDefined","moduleName","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","hasData","expando","k","kk","annotation","newScope","onNewScopeDestroyed","lastValue","parentGet","parentSet","compare","$observe","literal","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","throwNoconcat","compute","interpolationFn","$$watchDelegate","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","ERANAMES","ERAS","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","base","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","objectEquality","parsedExpression","prettyPrintExpression","inputExpressions","inputs","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","expensiveChecks","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","flush","taskQueue","task","taskCount","queueFn","asyncFn","cancelLastRAF","rafFn","cancelQueueFn","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","Scope","$parent","$$prevSibling","$root","beginPhase","phase","incrementWatchersCount","current","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isNegative","abs","isInfinity","Infinity","isFinite","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","eraGetter","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","format","NUMBER_STRING","DATE_FORMATS_SPLIT","dateTimezoneOffset","DATE_FORMATS","spacing","limit","processPredicates","sortPredicate","reverseOrder","map","predicate","descending","predicates","compareValues","getComparisonObject","predicateValues","doComparison","v1","v2","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","isActive_","active","Function","name_","el","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","jqLiteHasData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","AnimateRunner","end","resume","pause","complete","pass","fail","postDigestElements","addRemoveClassesPostDigest","add","existing","pin","domOperation","from","to","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","runner","enter","move","leave","addclass","animate","tempClasses","APPLICATION_JSON","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","isExpOperator","start","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","constants","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","generateFunction","fnKey","intoId","return_","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","stringEscapeRegex","stringEscapeFn","c","charCodeAt","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","nameAttr","ngFormPreLink","handleFormSubmission","parentFormCtrl","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","updateOptionElement","addOrReuseElement","removeExcessElements","skipEmptyAndUnknownOptions","emptyOption_","emptyOption","unknownOption_","unknownOption","updateOptions","previousValue","selectCtrl","readValue","groupMap","providedEmptyOption","updateOption","optionElement","groupElement","currentOptionElement","ngModelCtrl","nextValue","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","addOption","self.addOption","removeOption","self.removeOption","self.hasOption","ngModelCtrl.$render","lastView","lastViewRef","selectMultipleWatch","chromeHack","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","$$csp","head"] } diff --git a/www/lib/angular/bower.json b/www/lib/angular/bower.json index 8bf80df4..25dbde94 100644 --- a/www/lib/angular/bower.json +++ b/www/lib/angular/bower.json @@ -1,6 +1,6 @@ { "name": "angular", - "version": "1.3.13", + "version": "1.4.3", "main": "./angular.js", "ignore": [], "dependencies": { diff --git a/www/lib/angular/index.js b/www/lib/angular/index.js new file mode 100644 index 00000000..5c1aafcc --- /dev/null +++ b/www/lib/angular/index.js @@ -0,0 +1,2 @@ +require('./angular'); +module.exports = angular; diff --git a/www/lib/angular/package.json b/www/lib/angular/package.json index ce0638a0..28ac057c 100644 --- a/www/lib/angular/package.json +++ b/www/lib/angular/package.json @@ -1,8 +1,8 @@ { "name": "angular", - "version": "1.3.13", + "version": "1.4.3", "description": "HTML enhanced for web apps", - "main": "angular.js", + "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/www/templates/events-modal.html b/www/templates/events-modal.html index 86f52489..2b0c2abe 100644 --- a/www/templates/events-modal.html +++ b/www/templates/events-modal.html @@ -13,10 +13,15 @@
  • - + +
  • diff --git a/www/templates/events.html b/www/templates/events.html index 547305ec..efd6cfd3 100644 --- a/www/templates/events.html +++ b/www/templates/events.html @@ -94,7 +94,7 @@ @@ -133,10 +133,22 @@ rn-carousel-index="mycarousel.index" rn-carousel-auto-slide="{{calcMsTimer(event.Event.Frames, event.Event.Length)/1000.0}}" rn-carousel-pause-on-hover >
  • - +
    + + + + +
  • -- cgit v1.2.3