From 1c872d3d501b2f9894510dac27b284409b555df1 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Tue, 23 Sep 2014 09:12:24 +0200 Subject: update angular --- js/vendor/angular-mocks/.bower.json | 10 +- js/vendor/angular-mocks/angular-mocks.js | 2 +- js/vendor/angular-mocks/bower.json | 4 +- js/vendor/angular-route/.bower.json | 10 +- js/vendor/angular-route/angular-route.js | 3 +- js/vendor/angular-route/angular-route.min.js | 2 +- js/vendor/angular-route/angular-route.min.js.map | 2 +- js/vendor/angular-route/bower.json | 4 +- js/vendor/angular-sanitize/.bower.json | 10 +- js/vendor/angular-sanitize/angular-sanitize.js | 2 +- js/vendor/angular-sanitize/angular-sanitize.min.js | 2 +- js/vendor/angular-sanitize/bower.json | 4 +- js/vendor/angular/.bower.json | 8 +- js/vendor/angular/angular.js | 475 +++++++++++++++------ js/vendor/angular/angular.min.js | 466 ++++++++++---------- js/vendor/angular/angular.min.js.gzip | Bin 43132 -> 39789 bytes js/vendor/angular/angular.min.js.map | 6 +- js/vendor/angular/bower.json | 2 +- 18 files changed, 618 insertions(+), 394 deletions(-) (limited to 'js') diff --git a/js/vendor/angular-mocks/.bower.json b/js/vendor/angular-mocks/.bower.json index 896ed107b..17e2635b5 100644 --- a/js/vendor/angular-mocks/.bower.json +++ b/js/vendor/angular-mocks/.bower.json @@ -1,16 +1,16 @@ { "name": "angular-mocks", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular-mocks.js", "dependencies": { - "angular": "1.3.0-rc.1" + "angular": "1.3.0-rc.2" }, "homepage": "https://github.com/angular/bower-angular-mocks", - "_release": "1.3.0-rc.1", + "_release": "1.3.0-rc.2", "_resolution": { "type": "version", - "tag": "v1.3.0-rc.1", - "commit": "08f9095ff675e3505bd5bc6f215b1805836fe322" + "tag": "v1.3.0-rc.2", + "commit": "fcea404efd84f620fb3dd013aea7061ee8817dbc" }, "_source": "git://github.com/angular/bower-angular-mocks.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-mocks/angular-mocks.js b/js/vendor/angular-mocks/angular-mocks.js index 733dad24a..a44e0c715 100644 --- a/js/vendor/angular-mocks/angular-mocks.js +++ b/js/vendor/angular-mocks/angular-mocks.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.0-rc.1 + * @license AngularJS v1.3.0-rc.2 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-mocks/bower.json b/js/vendor/angular-mocks/bower.json index 569036533..0a97aabde 100644 --- a/js/vendor/angular-mocks/bower.json +++ b/js/vendor/angular-mocks/bower.json @@ -1,8 +1,8 @@ { "name": "angular-mocks", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular-mocks.js", "dependencies": { - "angular": "1.3.0-rc.1" + "angular": "1.3.0-rc.2" } } diff --git a/js/vendor/angular-route/.bower.json b/js/vendor/angular-route/.bower.json index bae8fb76c..ee018afbd 100644 --- a/js/vendor/angular-route/.bower.json +++ b/js/vendor/angular-route/.bower.json @@ -1,16 +1,16 @@ { "name": "angular-route", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular-route.js", "dependencies": { - "angular": "1.3.0-rc.1" + "angular": "1.3.0-rc.2" }, "homepage": "https://github.com/angular/bower-angular-route", - "_release": "1.3.0-rc.1", + "_release": "1.3.0-rc.2", "_resolution": { "type": "version", - "tag": "v1.3.0-rc.1", - "commit": "b3904c0050ef60c36f5b0fd7777d177f09273406" + "tag": "v1.3.0-rc.2", + "commit": "16232470b65ff42b493ef6e3f30d28628797ce94" }, "_source": "git://github.com/angular/bower-angular-route.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-route/angular-route.js b/js/vendor/angular-route/angular-route.js index 305d92e85..cf4542fef 100644 --- a/js/vendor/angular-route/angular-route.js +++ b/js/vendor/angular-route/angular-route.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.0-rc.1 + * @license AngularJS v1.3.0-rc.2 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -802,7 +802,6 @@ ngRouteModule.directive('ngView', ngViewFillContentFactory); controllerAs: 'chapter' }); - // configure html5 to get links working on jsfiddle $locationProvider.html5Mode(true); }]) .controller('MainCtrl', ['$route', '$routeParams', '$location', diff --git a/js/vendor/angular-route/angular-route.min.js b/js/vendor/angular-route/angular-route.min.js index 03da279ec..4c035642b 100644 --- a/js/vendor/angular-route/angular-route.min.js +++ b/js/vendor/angular-route/angular-route.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.3.0-rc.1 + AngularJS v1.3.0-rc.2 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-route/angular-route.min.js.map b/js/vendor/angular-route/angular-route.min.js.map index 474b4ff0c..1bef1cb2d 100644 --- a/js/vendor/angular-route/angular-route.min.js.map +++ b/js/vendor/angular-route/angular-route.min.js.map @@ -2,7 +2,7 @@ "version":3, "file":"angular-route.min.js", "lineCount":13, -"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CA80BtCC,QAASA,EAAa,CAAIC,CAAJ,CAAcC,CAAd,CAA+BC,CAA/B,CAAyC,CAC7D,MAAO,CACLC,SAAU,KADL,CAELC,SAAU,CAAA,CAFL,CAGLC,SAAU,GAHL,CAILC,WAAY,SAJP,CAKLC,KAAMA,QAAQ,CAACC,CAAD,CAAQC,CAAR,CAAkBC,CAAlB,CAAwBC,CAAxB,CAA8BC,CAA9B,CAA2C,CAUrDC,QAASA,EAAe,EAAG,CACtBC,CAAH,GACEA,CAAAC,OAAA,EACA,CAAAD,CAAA,CAAkB,IAFpB,CAIGE,EAAH,GACEA,CAAAC,SAAA,EACA,CAAAD,CAAA,CAAe,IAFjB,CAIGE,EAAH,GACEhB,CAAAiB,MAAA,CAAeD,CAAf,CAAAE,KAAA,CAAoC,QAAQ,EAAG,CAC7CN,CAAA,CAAkB,IAD2B,CAA/C,CAIA,CADAA,CACA,CADkBI,CAClB,CAAAA,CAAA,CAAiB,IALnB,CATyB,CAkB3BG,QAASA,EAAM,EAAG,CAAA,IACZC,EAAStB,CAAAuB,QAATD,EAA2BtB,CAAAuB,QAAAD,OAG/B,IAAIzB,CAAA2B,UAAA,CAFWF,CAEX,EAFqBA,CAAAG,UAErB,CAAJ,CAAiC,CAC3BC,IAAAA,EAAWlB,CAAAmB,KAAA,EAAXD,CACAH,EAAUvB,CAAAuB,QAkBdL,EAAA,CAVYN,CAAAgB,CAAYF,CAAZE,CAAsB,QAAQ,CAACA,CAAD,CAAQ,CAChD1B,CAAA2B,MAAA,CAAeD,CAAf,CAAsB,IAAtB,CAA4BV,CAA5B,EAA8CT,CAA9C,CAAAW,KAAA,CAA6DU,QAAuB,EAAG,CACjF,CAAAjC,CAAA2B,UAAA,CAAkBO,CAAlB,CAAJ,EACOA,CADP,EACwB,CAAAvB,CAAAwB,MAAA,CAAYD,CAAZ,CADxB,EAEE9B,CAAA,EAHmF,CAAvF,CAMAY,EAAA,EAPgD,CAAtCe,CAWZZ,EAAA,CAAeO,CAAAf,MAAf,CAA+BkB,CAC/BV,EAAAiB,MAAA,CAAmB,oBAAnB,CACAjB;CAAAgB,MAAA,CAAmBE,CAAnB,CAvB+B,CAAjC,IAyBErB,EAAA,EA7Bc,CA5BmC,IACjDG,CADiD,CAEjDE,CAFiD,CAGjDJ,CAHiD,CAIjDiB,EAAgBrB,CAAAyB,WAJiC,CAKjDD,EAAYxB,CAAA0B,OAAZF,EAA2B,EAE/B1B,EAAA6B,IAAA,CAAU,qBAAV,CAAiChB,CAAjC,CACAA,EAAA,EARqD,CALpD,CADsD,CA4E/DiB,QAASA,EAAwB,CAACC,CAAD,CAAWC,CAAX,CAAwBxC,CAAxB,CAAgC,CAC/D,MAAO,CACLG,SAAU,KADL,CAELE,SAAW,IAFN,CAGLE,KAAMA,QAAQ,CAACC,CAAD,CAAQC,CAAR,CAAkB,CAAA,IAC1Bc,EAAUvB,CAAAuB,QADgB,CAE1BD,EAASC,CAAAD,OAEbb,EAAAgC,KAAA,CAAcnB,CAAAG,UAAd,CAEA,KAAIlB,EAAOgC,CAAA,CAAS9B,CAAAiC,SAAA,EAAT,CAEPnB,EAAAoB,WAAJ,GACErB,CAAAsB,OAMA,CANgBpC,CAMhB,CALImC,CAKJ,CALiBH,CAAA,CAAYjB,CAAAoB,WAAZ,CAAgCrB,CAAhC,CAKjB,CAJIC,CAAAsB,aAIJ,GAHErC,CAAA,CAAMe,CAAAsB,aAAN,CAGF,CAHgCF,CAGhC,EADAlC,CAAAqC,KAAA,CAAc,yBAAd,CAAyCH,CAAzC,CACA,CAAAlC,CAAAsC,SAAA,EAAAD,KAAA,CAAyB,yBAAzB,CAAoDH,CAApD,CAPF,CAUApC,EAAA,CAAKC,CAAL,CAlB8B,CAH3B,CADwD,CAx4B7DwC,CAAAA,CAAgBnD,CAAAoD,OAAA,CAAe,SAAf,CAA0B,CAAC,IAAD,CAA1B,CAAAC,SAAA,CACa,QADb,CAkBpBC,QAAuB,EAAE,CACvBC,QAASA,EAAO,CAACC,CAAD,CAASC,CAAT,CAAgB,CAC9B,MAAOzD,EAAA0D,OAAA,CAAe,KAAK1D,CAAA0D,OAAA,CAAe,QAAQ,EAAG,EAA1B;AAA8B,CAACC,UAAUH,CAAX,CAA9B,CAAL,CAAf,CAA0EC,CAA1E,CADuB,CA0IhCG,QAASA,EAAU,CAACC,CAAD,CAAOC,CAAP,CAAa,CAAA,IAC1BC,EAAcD,CAAAE,qBADY,CAE1BC,EAAM,CACJC,aAAcL,CADV,CAEJM,OAAQN,CAFJ,CAFoB,CAM1BO,EAAOH,CAAAG,KAAPA,CAAkB,EAEtBP,EAAA,CAAOA,CAAAQ,QAAA,CACI,UADJ,CACgB,MADhB,CAAAA,QAAA,CAEI,uBAFJ,CAE6B,QAAQ,CAACC,CAAD,CAAIC,CAAJ,CAAWC,CAAX,CAAgBC,CAAhB,CAAuB,CAC3DC,CAAAA,CAAsB,GAAX,GAAAD,CAAA,CAAiBA,CAAjB,CAA0B,IACrCE,EAAAA,CAAkB,GAAX,GAAAF,CAAA,CAAiBA,CAAjB,CAA0B,IACrCL,EAAAQ,KAAA,CAAU,CAAEC,KAAML,CAAR,CAAaE,SAAU,CAAEA,CAAAA,CAAzB,CAAV,CACAH,EAAA,CAAQA,CAAR,EAAiB,EACjB,OAAO,EAAP,EACKG,CAAA,CAAW,EAAX,CAAgBH,CADrB,EAEI,KAFJ,EAGKG,CAAA,CAAWH,CAAX,CAAmB,EAHxB,GAIKI,CAJL,EAIa,OAJb,EAIwB,SAJxB,GAKKD,CALL,EAKiB,EALjB,EAMI,GANJ,EAOKA,CAPL,EAOiB,EAPjB,CAL+D,CAF5D,CAAAL,QAAA,CAgBI,YAhBJ,CAgBkB,MAhBlB,CAkBPJ,EAAAE,OAAA,CAAa,IAAIW,MAAJ,CAAW,GAAX,CAAiBjB,CAAjB,CAAwB,GAAxB,CAA6BE,CAAA,CAAc,GAAd,CAAoB,EAAjD,CACb,OAAOE,EA3BuB,CAtIhC,IAAIc,EAAS,EAqGb,KAAAC,KAAA,CAAYC,QAAQ,CAACpB,CAAD,CAAOqB,CAAP,CAAc,CAChCH,CAAA,CAAOlB,CAAP,CAAA,CAAe7D,CAAA0D,OAAA,CACb,CAACyB,eAAgB,CAAA,CAAjB,CADa,CAEbD,CAFa,CAGbrB,CAHa,EAGLD,CAAA,CAAWC,CAAX,CAAiBqB,CAAjB,CAHK,CAOf,IAAIrB,CAAJ,CAAU,CACR,IAAIuB;AAAuC,GAAxB,EAACvB,CAAA,CAAKA,CAAAwB,OAAL,CAAiB,CAAjB,CAAD,CACXxB,CAAAyB,OAAA,CAAY,CAAZ,CAAezB,CAAAwB,OAAf,CAA2B,CAA3B,CADW,CAEXxB,CAFW,CAEL,GAEdkB,EAAA,CAAOK,CAAP,CAAA,CAAuBpF,CAAA0D,OAAA,CACrB,CAAC6B,WAAY1B,CAAb,CADqB,CAErBD,CAAA,CAAWwB,CAAX,CAAyBF,CAAzB,CAFqB,CALf,CAWV,MAAO,KAnByB,CA2ElC,KAAAM,UAAA,CAAiBC,QAAQ,CAACC,CAAD,CAAS,CACV,QAAtB,GAAI,MAAOA,EAAX,GACEA,CADF,CACW,CAACH,WAAYG,CAAb,CADX,CAGA,KAAAV,KAAA,CAAU,IAAV,CAAgBU,CAAhB,CACA,OAAO,KALyB,CASlC,KAAAC,KAAA,CAAY,CAAC,YAAD,CACC,WADD,CAEC,cAFD,CAGC,IAHD,CAIC,WAJD,CAKC,kBALD,CAMC,MAND,CAOR,QAAQ,CAACC,CAAD,CAAaC,CAAb,CAAwBC,CAAxB,CAAsCC,CAAtC,CAA0CC,CAA1C,CAAqDC,CAArD,CAAuEC,CAAvE,CAA6E,CAuRvFC,QAASA,EAAW,EAAG,CAAA,IACjBC,EAAOC,CAAA,EADU,CAEjBC,EAAOnG,CAAAuB,QAEX,IAAI0E,CAAJ,EAAYE,CAAZ,EAAoBF,CAAAG,QAApB,GAAqCD,CAAAC,QAArC,EACOvG,CAAAwG,OAAA,CAAeJ,CAAAK,WAAf,CAAgCH,CAAAG,WAAhC,CADP,EAEQtB,CAAAiB,CAAAjB,eAFR,EAEgCuB,CAAAA,CAFhC,CAGEJ,CAAAZ,OAEA,CAFcU,CAAAV,OAEd,CADA1F,CAAA2G,KAAA,CAAaL,CAAAZ,OAAb,CAA0BI,CAA1B,CACA,CAAAF,CAAAgB,WAAA,CAAsB,cAAtB;AAAsCN,CAAtC,CALF,KAMO,IAAIF,CAAJ,EAAYE,CAAZ,CACLI,CAeA,CAfc,CAAA,CAed,CAdAd,CAAAgB,WAAA,CAAsB,mBAAtB,CAA2CR,CAA3C,CAAiDE,CAAjD,CAcA,EAbAnG,CAAAuB,QAaA,CAbiB0E,CAajB,GAXMA,CAAAb,WAWN,GAVQvF,CAAA6G,SAAA,CAAiBT,CAAAb,WAAjB,CAAJ,CACEM,CAAAhC,KAAA,CAAeiD,CAAA,CAAYV,CAAAb,WAAZ,CAA6Ba,CAAAV,OAA7B,CAAf,CAAAqB,OAAA,CAAiEX,CAAAV,OAAjE,CAAArB,QAAA,EADF,CAIEwB,CAAAmB,IAAA,CAAcZ,CAAAb,WAAA,CAAgBa,CAAAK,WAAhB,CAAiCZ,CAAAhC,KAAA,EAAjC,CAAmDgC,CAAAkB,OAAA,EAAnD,CAAd,CAAA1C,QAAA,EAMN,EAAA0B,CAAAf,KAAA,CAAQoB,CAAR,CAAA7E,KAAA,CACO,QAAQ,EAAG,CACd,GAAI6E,CAAJ,CAAU,CAAA,IACJ3E,EAASzB,CAAA0D,OAAA,CAAe,EAAf,CAAmB0C,CAAAa,QAAnB,CADL,CAEJC,CAFI,CAEMC,CAEdnH,EAAAoH,QAAA,CAAgB3F,CAAhB,CAAwB,QAAQ,CAAC4F,CAAD,CAAQ7C,CAAR,CAAa,CAC3C/C,CAAA,CAAO+C,CAAP,CAAA,CAAcxE,CAAA6G,SAAA,CAAiBQ,CAAjB,CAAA,CACVrB,CAAAsB,IAAA,CAAcD,CAAd,CADU,CACarB,CAAAuB,OAAA,CAAiBF,CAAjB,CAAwB,IAAxB,CAA8B,IAA9B,CAAoC7C,CAApC,CAFgB,CAA7C,CAKIxE,EAAA2B,UAAA,CAAkBuF,CAAlB,CAA6Bd,CAAAc,SAA7B,CAAJ,CACMlH,CAAAwH,WAAA,CAAmBN,CAAnB,CADN,GAEIA,CAFJ,CAEeA,CAAA,CAASd,CAAAV,OAAT,CAFf,EAIW1F,CAAA2B,UAAA,CAAkBwF,CAAlB,CAAgCf,CAAAe,YAAhC,CAJX,GAKMnH,CAAAwH,WAAA,CAAmBL,CAAnB,CAIJ,GAHEA,CAGF,CAHgBA,CAAA,CAAYf,CAAAV,OAAZ,CAGhB;AADAyB,CACA,CADcjB,CAAAuB,sBAAA,CAA2BN,CAA3B,CACd,CAAInH,CAAA2B,UAAA,CAAkBwF,CAAlB,CAAJ,GACEf,CAAAsB,kBACA,CADyBP,CACzB,CAAAD,CAAA,CAAWjB,CAAA,CAAiBkB,CAAjB,CAFb,CATF,CAcInH,EAAA2B,UAAA,CAAkBuF,CAAlB,CAAJ,GACEzF,CAAA,UADF,CACwByF,CADxB,CAGA,OAAOnB,EAAA4B,IAAA,CAAOlG,CAAP,CA1BC,CADI,CADlB,CAAAF,KAAA,CAgCO,QAAQ,CAACE,CAAD,CAAS,CAChB2E,CAAJ,EAAYjG,CAAAuB,QAAZ,GACM0E,CAIJ,GAHEA,CAAA3E,OACA,CADcA,CACd,CAAAzB,CAAA2G,KAAA,CAAaP,CAAAV,OAAb,CAA0BI,CAA1B,CAEF,EAAAF,CAAAgB,WAAA,CAAsB,qBAAtB,CAA6CR,CAA7C,CAAmDE,CAAnD,CALF,CADoB,CAhCxB,CAwCK,QAAQ,CAACsB,CAAD,CAAQ,CACbxB,CAAJ,EAAYjG,CAAAuB,QAAZ,EACEkE,CAAAgB,WAAA,CAAsB,mBAAtB,CAA2CR,CAA3C,CAAiDE,CAAjD,CAAuDsB,CAAvD,CAFe,CAxCrB,CA1BmB,CA8EvBvB,QAASA,EAAU,EAAG,CAAA,IAEhBX,CAFgB,CAERmC,CACZ7H,EAAAoH,QAAA,CAAgBrC,CAAhB,CAAwB,QAAQ,CAACG,CAAD,CAAQrB,CAAR,CAAc,CACxC,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,IAAA,EAAA,CAAA,KAAA,EAtGbO,EAAAA,CAsGac,CAtGNd,KAAX,KACIsB,EAAS,EAEb,IAmGiBR,CAnGZf,OAAL,CAGA,GADI2D,CACJ,CAgGiB5C,CAjGTf,OAAA4D,KAAA,CAAkBC,CAAlB,CACR,CAAA,CAEA,IATqC,IAS5BC,EAAI,CATwB,CASrBC,EAAMJ,CAAAzC,OAAtB,CAAgC4C,CAAhC,CAAoCC,CAApC,CAAyC,EAAED,CAA3C,CAA8C,CAC5C,IAAIzD,EAAMJ,CAAA,CAAK6D,CAAL,CAAS,CAAT,CAAV,CAEIE,EAAML,CAAA,CAAEG,CAAF,CAENzD,EAAJ,EAAW2D,CAAX,GACEzC,CAAA,CAAOlB,CAAAK,KAAP,CADF;AACqBsD,CADrB,CAL4C,CAS9C,CAAA,CAAOzC,CAXP,CAAA,IAAQ,EAAA,CAAO,IAHf,KAAmB,EAAA,CAAO,IAmGT,EAAA,CAAA,CAAA,CAAA,CAAX,CAAA,CAAJ,GACEmC,CAGA,CAHQtE,CAAA,CAAQ2B,CAAR,CAAe,CACrBQ,OAAQ1F,CAAA0D,OAAA,CAAe,EAAf,CAAmBmC,CAAAkB,OAAA,EAAnB,CAAuCrB,CAAvC,CADa,CAErBe,WAAYf,CAFS,CAAf,CAGR,CAAAmC,CAAAtB,QAAA,CAAgBrB,CAJlB,CAD4C,CAA9C,CASA,OAAO2C,EAAP,EAAgB9C,CAAA,CAAO,IAAP,CAAhB,EAAgCxB,CAAA,CAAQwB,CAAA,CAAO,IAAP,CAAR,CAAsB,CAACW,OAAQ,EAAT,CAAae,WAAW,EAAxB,CAAtB,CAZZ,CAkBtBK,QAASA,EAAW,CAACsB,CAAD,CAAS1C,CAAT,CAAiB,CACnC,IAAI2C,EAAS,EACbrI,EAAAoH,QAAA,CAAgBkB,CAACF,CAADE,EAAS,EAATA,OAAA,CAAmB,GAAnB,CAAhB,CAAyC,QAAQ,CAACC,CAAD,CAAUN,CAAV,CAAa,CAC5D,GAAU,CAAV,GAAIA,CAAJ,CACEI,CAAAzD,KAAA,CAAY2D,CAAZ,CADF,KAEO,CACL,IAAIC,EAAeD,CAAAV,MAAA,CAAc,WAAd,CAAnB,CACIrD,EAAMgE,CAAA,CAAa,CAAb,CACVH,EAAAzD,KAAA,CAAYc,CAAA,CAAOlB,CAAP,CAAZ,CACA6D,EAAAzD,KAAA,CAAY4D,CAAA,CAAa,CAAb,CAAZ,EAA+B,EAA/B,CACA,QAAO9C,CAAA,CAAOlB,CAAP,CALF,CAHqD,CAA9D,CAWA,OAAO6D,EAAAI,KAAA,CAAY,EAAZ,CAb4B,CAvXkD,IA8LnF/B,EAAc,CAAA,CA9LqE,CA+LnFvG,EAAS,CACP4E,OAAQA,CADD,CAcP2D,OAAQA,QAAQ,EAAG,CACjBhC,CAAA,CAAc,CAAA,CACdd,EAAA+C,WAAA,CAAsBxC,CAAtB,CAFiB,CAdZ,CAgCPyC,aAAcA,QAAQ,CAACC,CAAD,CAAY,CAChC,GAAI,IAAAnH,QAAJ,EAAoB,IAAAA,QAAA6E,QAApB,CAA0C,CAAA,IACpCuC,EAAe,EADqB,CACjBC,EAAK,IAE5B/I,EAAAoH,QAAA,CAAgB4B,MAAA5E,KAAA,CAAYyE,CAAZ,CAAhB;AAAwC,QAAQ,CAACrE,CAAD,CAAM,CAC/CuE,CAAArH,QAAA+E,WAAA,CAAwBjC,CAAxB,CAAL,GAAmCsE,CAAA,CAAatE,CAAb,CAAnC,CAAuDqE,CAAA,CAAUrE,CAAV,CAAvD,CADoD,CAAtD,CAIAqE,EAAA,CAAY7I,CAAA0D,OAAA,CAAe,EAAf,CAAmB,IAAAhC,QAAAgE,OAAnB,CAAwCmD,CAAxC,CACZhD,EAAAhC,KAAA,CAAeiD,CAAA,CAAY,IAAApF,QAAA6E,QAAArC,aAAZ,CAA+C2E,CAA/C,CAAf,CACAhD,EAAAkB,OAAA,CAAiB/G,CAAA0D,OAAA,CAAe,EAAf,CAAmBmC,CAAAkB,OAAA,EAAnB,CAAuC+B,CAAvC,CAAjB,CATwC,CAA1C,IAYE,MAAMG,EAAA,CAAa,QAAb,CAAN,CAb8B,CAhC3B,CAkDbrD,EAAApD,IAAA,CAAe,wBAAf,CAAyC2D,CAAzC,CAEA,OAAOhG,EAnPgF,CAP7E,CA9LW,CAlBL,CAApB,KAEI8I,EAAejJ,CAAAkJ,SAAA,CAAiB,SAAjB,CA8lBnB/F,EAAAE,SAAA,CAAuB,cAAvB,CAoCA8F,QAA6B,EAAG,CAC9B,IAAAxD,KAAA,CAAYyD,QAAQ,EAAG,CAAE,MAAO,EAAT,CADO,CApChC,CAwCAjG,EAAAkG,UAAA,CAAwB,QAAxB,CAAkCnJ,CAAlC,CACAiD,EAAAkG,UAAA,CAAwB,QAAxB,CAAkC5G,CAAlC,CAkLAvC,EAAAoJ,QAAA,CAAwB,CAAC,QAAD,CAAW,eAAX,CAA4B,UAA5B,CA4ExB7G,EAAA6G,QAAA,CAAmC,CAAC,UAAD,CAAa,aAAb,CAA4B,QAA5B,CAz5BG,CAArC,CAAD,CAs7BGvJ,MAt7BH,CAs7BWA,MAAAC,QAt7BX;", +"mappings":"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", "sources":["angular-route.js"], "names":["window","angular","undefined","ngViewFactory","$route","$anchorScroll","$animate","restrict","terminal","priority","transclude","link","scope","$element","attr","ctrl","$transclude","cleanupLastView","previousElement","remove","currentScope","$destroy","currentElement","leave","then","update","locals","current","isDefined","$template","newScope","$new","clone","enter","onNgViewEnter","autoScrollExp","$eval","$emit","onloadExp","autoscroll","onload","$on","ngViewFillContentFactory","$compile","$controller","html","contents","controller","$scope","controllerAs","data","children","ngRouteModule","module","provider","$RouteProvider","inherit","parent","extra","extend","prototype","pathRegExp","path","opts","insensitive","caseInsensitiveMatch","ret","originalPath","regexp","keys","replace","_","slash","key","option","optional","star","push","name","RegExp","routes","when","this.when","route","reloadOnSearch","redirectPath","length","substr","redirectTo","otherwise","this.otherwise","params","$get","$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce","updateRoute","next","parseRoute","last","$$route","equals","pathParams","forceReload","copy","$broadcast","isString","interpolate","search","url","resolve","template","templateUrl","forEach","value","get","invoke","isFunction","getTrustedResourceUrl","loadedTemplateUrl","all","error","match","m","exec","on","i","len","val","string","result","split","segment","segmentMatch","join","reload","$evalAsync","updateParams","newParams","searchParams","self","Object","$routeMinErr","$$minErr","$RouteParamsProvider","this.$get","directive","$inject"] } diff --git a/js/vendor/angular-route/bower.json b/js/vendor/angular-route/bower.json index af76c02ae..de72e63e9 100644 --- a/js/vendor/angular-route/bower.json +++ b/js/vendor/angular-route/bower.json @@ -1,8 +1,8 @@ { "name": "angular-route", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular-route.js", "dependencies": { - "angular": "1.3.0-rc.1" + "angular": "1.3.0-rc.2" } } diff --git a/js/vendor/angular-sanitize/.bower.json b/js/vendor/angular-sanitize/.bower.json index 359b7d41f..d25115307 100644 --- a/js/vendor/angular-sanitize/.bower.json +++ b/js/vendor/angular-sanitize/.bower.json @@ -1,16 +1,16 @@ { "name": "angular-sanitize", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular-sanitize.js", "dependencies": { - "angular": "1.3.0-rc.1" + "angular": "1.3.0-rc.2" }, "homepage": "https://github.com/angular/bower-angular-sanitize", - "_release": "1.3.0-rc.1", + "_release": "1.3.0-rc.2", "_resolution": { "type": "version", - "tag": "v1.3.0-rc.1", - "commit": "66227343d84946479ed5bba6b8bdc3d045f48f74" + "tag": "v1.3.0-rc.2", + "commit": "9d76dfb777982f3010d5bbc7f835fcd01cd06ec6" }, "_source": "git://github.com/angular/bower-angular-sanitize.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-sanitize/angular-sanitize.js b/js/vendor/angular-sanitize/angular-sanitize.js index ec46895f6..4e1916460 100644 --- a/js/vendor/angular-sanitize/angular-sanitize.js +++ b/js/vendor/angular-sanitize/angular-sanitize.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.0-rc.1 + * @license AngularJS v1.3.0-rc.2 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-sanitize/angular-sanitize.min.js b/js/vendor/angular-sanitize/angular-sanitize.min.js index ce99bba18..fa7707912 100644 --- a/js/vendor/angular-sanitize/angular-sanitize.min.js +++ b/js/vendor/angular-sanitize/angular-sanitize.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.3.0-rc.1 + AngularJS v1.3.0-rc.2 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-sanitize/bower.json b/js/vendor/angular-sanitize/bower.json index 0c8e0a127..09fc50822 100644 --- a/js/vendor/angular-sanitize/bower.json +++ b/js/vendor/angular-sanitize/bower.json @@ -1,8 +1,8 @@ { "name": "angular-sanitize", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular-sanitize.js", "dependencies": { - "angular": "1.3.0-rc.1" + "angular": "1.3.0-rc.2" } } diff --git a/js/vendor/angular/.bower.json b/js/vendor/angular/.bower.json index 716ec4e9b..6cb135a42 100644 --- a/js/vendor/angular/.bower.json +++ b/js/vendor/angular/.bower.json @@ -1,14 +1,14 @@ { "name": "angular", - "version": "1.3.0-rc.1", + "version": "1.3.0-rc.2", "main": "./angular.js", "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.3.0-rc.1", + "_release": "1.3.0-rc.2", "_resolution": { "type": "version", - "tag": "v1.3.0-rc.1", - "commit": "c7bdad874c48aa3cf83a8baca35a03eeba7a2cf7" + "tag": "v1.3.0-rc.2", + "commit": "dbe57c6c9495752c3d1cf3a75fc5aa624ff3ba06" }, "_source": "git://github.com/angular/bower-angular.git", "_target": "~1.3.*", diff --git a/js/vendor/angular/angular.js b/js/vendor/angular/angular.js index bdc97abb0..a3527e899 100644 --- a/js/vendor/angular/angular.js +++ b/js/vendor/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.0-rc.1 + * @license AngularJS v1.3.0-rc.2 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -71,7 +71,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message = message + '\nhttp://errors.angularjs.org/1.3.0-rc.1/' + + message = message + '\nhttp://errors.angularjs.org/1.3.0-rc.2/' + (module ? module + '/' : '') + code; for (i = 2; i < arguments.length; i++) { message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' + @@ -1535,7 +1535,7 @@ function reloadWithDebugInfo() { window.location.reload(); } -/* +/** * @name angular.getTestability * @module ng * @description @@ -2122,11 +2122,11 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.3.0-rc.1', // all of these placeholder strings will be replaced by grunt's + full: '1.3.0-rc.2', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 3, dot: 0, - codeName: 'backyard-atomicity' + codeName: 'tactile-perception' }; @@ -2957,7 +2957,6 @@ forEach({ function createEventHandler(element, events) { var eventHandler = function (event, type) { - // jQuery specific api event.isDefaultPrevented = function() { return event.defaultPrevented; @@ -2968,13 +2967,34 @@ function createEventHandler(element, events) { if (!eventFnsLength) return; + if (isUndefined(event.immediatePropagationStopped)) { + var originalStopImmediatePropagation = event.stopImmediatePropagation; + event.stopImmediatePropagation = function() { + event.immediatePropagationStopped = true; + + if (event.stopPropagation) { + event.stopPropagation(); + } + + if (originalStopImmediatePropagation) { + originalStopImmediatePropagation.call(event); + } + }; + } + + event.isImmediatePropagationStopped = function() { + return event.immediatePropagationStopped === true; + }; + // Copy event handlers in case event handlers array is modified during execution. if ((eventFnsLength > 1)) { eventFns = shallowCopy(eventFns); } for (var i = 0; i < eventFnsLength; i++) { - eventFns[i].call(element, event); + if (!event.isImmediatePropagationStopped()) { + eventFns[i].call(element, event); + } } }; @@ -3175,11 +3195,12 @@ forEach({ var eventFns = events && events[eventName]; if (eventFns) { - // Create a dummy event to pass to the handlers dummyEvent = { preventDefault: function() { this.defaultPrevented = true; }, isDefaultPrevented: function() { return this.defaultPrevented === true; }, + stopImmediatePropagation: function() { this.immediatePropagationStopped = true; }, + isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; }, stopPropagation: noop, type: eventName, target: element @@ -3195,9 +3216,10 @@ forEach({ handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent]; forEach(eventFnsCopy, function(fn) { - fn.apply(element, handlerArgs); + if (!dummyEvent.isImmediatePropagationStopped()) { + fn.apply(element, handlerArgs); + } }); - } } }, function(fn, name){ @@ -5845,6 +5867,31 @@ 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) { + var LOCAL_REGEXP = /^\s*([@=&])(\??)\s*(\w*)\s*$/; + + var bindings = {}; + + forEach(scope, function(definition, scopeName) { + var match = definition.match(LOCAL_REGEXP); + + if (!match) { + throw $compileMinErr('iscp', + "Invalid isolate scope definition for directive '{0}'." + + " Definition: {... {1}: '{2}' ...}", + directiveName, scopeName, definition); + } + + bindings[scopeName] = { + attrName: match[3] || scopeName, + mode: match[1], + optional: match[2] === '?' + }; + }); + + return bindings; + } + /** * @ngdoc method * @name $compileProvider#directive @@ -5882,6 +5929,9 @@ 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); + } directives.push(directive); } catch (e) { $exceptionHandler(e); @@ -6928,21 +6978,19 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { newIsolateScopeDirective.bindToController === true) { isolateBindingContext = isolateScopeController.instance; } - forEach(newIsolateScopeDirective.scope, function(definition, scopeName) { - var match = definition.match(LOCAL_REGEXP) || [], - attrName = match[3] || scopeName, - optional = (match[2] == '?'), - mode = match[1], // @, =, or & + + forEach(isolateScope.$$isolateBindings = newIsolateScopeDirective.$$isolateBindings, function(definition, scopeName) { + var attrName = definition.attrName, + optional = definition.optional, + mode = definition.mode, // @, =, or & lastValue, parentGet, parentSet, compare; - isolateScope.$$isolateBindings[scopeName] = mode + attrName; - switch (mode) { case '@': attrs.$observe(attrName, function(value) { - isolateScope[scopeName] = value; + isolateBindingContext[scopeName] = value; }); attrs.$$observers[attrName].$$scope = scope; if( attrs[attrName] ) { @@ -6970,7 +7018,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { attrs[attrName], newIsolateScopeDirective.name); }; lastValue = isolateBindingContext[scopeName] = parentGet(scope); - var unwatch = scope.$watch($parse(attrs[attrName], function parentValueWatch(parentValue) { + var parentValueWatch = function parentValueWatch(parentValue) { if (!compare(parentValue, isolateBindingContext[scopeName])) { // we are out of sync and need to copy if (!compare(parentValue, lastValue)) { @@ -6982,7 +7030,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } } return lastValue = parentValue; - }), null, parentGet.literal); + }; + parentValueWatch.$stateful = true; + var unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); isolateScope.$on('$destroy', unwatch); break; @@ -6992,12 +7042,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return parentGet(scope, locals); }; break; - - default: - throw $compileMinErr('iscp', - "Invalid isolate scope definition for directive '{0}'." + - " Definition: {... {1}: '{2}' ...}", - newIsolateScopeDirective.name, scopeName, definition); } }); } @@ -10749,7 +10793,6 @@ var OPERATORS = extend(createMap(), { '/':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);}, - '=':noop, '===':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);}, @@ -10761,9 +10804,11 @@ var OPERATORS = extend(createMap(), { '&&':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|b;}, - '|':function(self, locals, a,b){return b(self, locals)(self, locals, a(self, locals));}, - '!':function(self, locals, a){return !a(self, locals);} + '!':function(self, locals, a){return !a(self, locals);}, + + //Tokenized as operators but parsed as assignment/filters + '=':true, + '|':true }); /* jshint bitwise: true */ var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'}; @@ -11012,6 +11057,10 @@ Lexer.prototype = { }; +function isConstant(exp) { + return exp.constant; +} + /** * @constructor */ @@ -11126,26 +11175,20 @@ Parser.prototype = { }, unaryFn: function(fn, right) { - return extend(function(self, locals) { + return extend(function $parseUnaryFn(self, locals) { return fn(self, locals, right); }, { - constant:right.constant - }); - }, - - ternaryFn: function(left, middle, right){ - return extend(function(self, locals){ - return left(self, locals) ? middle(self, locals) : right(self, locals); - }, { - constant: left.constant && middle.constant && right.constant + constant:right.constant, + inputs: [right] }); }, - binaryFn: function(left, fn, right) { - return extend(function(self, locals) { + binaryFn: function(left, fn, right, isBranching) { + return extend(function $parseBinaryFn(self, locals) { return fn(self, locals, left, right); }, { - constant:left.constant && right.constant + constant: left.constant && right.constant, + inputs: !isBranching && [left, right] }); }, @@ -11174,12 +11217,12 @@ Parser.prototype = { var left = this.expression(); var token; while ((token = this.expect('|'))) { - left = this.binaryFn(left, token.fn, this.filter()); + left = this.filter(left); } return left; }, - filter: function() { + filter: function(inputFn) { var token = this.expect(); var fn = this.$filter(token.text); var argsFn; @@ -11193,7 +11236,10 @@ Parser.prototype = { } } - return valueFn(function $parseFilter(self, locals, input) { + var inputs = [inputFn].concat(argsFn || []); + + return extend(function $parseFilter(self, locals) { + var input = inputFn(self, locals); if (args) { args[0] = input; @@ -11206,6 +11252,9 @@ Parser.prototype = { } return fn(input); + }, { + constant: !fn.$stateful && inputs.every(isConstant), + inputs: !fn.$stateful && inputs }); }, @@ -11223,9 +11272,11 @@ Parser.prototype = { this.text.substring(0, token.index) + '] can not be assigned to', token); } right = this.ternary(); - return function $parseAssignment(scope, locals) { + return extend(function $parseAssignment(scope, locals) { return left.assign(scope, right(scope, locals), locals); - }; + }, { + inputs: [left, right] + }); } return left; }, @@ -11237,20 +11288,27 @@ Parser.prototype = { if ((token = this.expect('?'))) { middle = this.assignment(); if ((token = this.expect(':'))) { - return this.ternaryFn(left, middle, this.assignment()); + 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 + }); + } else { this.throwError('expected :', token); } - } else { - return left; } + + return left; }, logicalOR: function() { var left = this.logicalAND(); var token; while ((token = this.expect('||'))) { - left = this.binaryFn(left, token.fn, this.logicalAND()); + left = this.binaryFn(left, token.fn, this.logicalAND(), true); } return left; }, @@ -11259,7 +11317,7 @@ Parser.prototype = { var left = this.equality(); var token; if ((token = this.expect('&&'))) { - left = this.binaryFn(left, token.fn, this.logicalAND()); + left = this.binaryFn(left, token.fn, this.logicalAND(), true); } return left; }, @@ -11394,7 +11452,6 @@ Parser.prototype = { // This is used with json array declaration arrayDeclaration: function () { var elementFns = []; - var allConstant = true; if (this.peekToken().text !== ']') { do { if (this.peek(']')) { @@ -11403,9 +11460,6 @@ Parser.prototype = { } var elementFn = this.expression(); elementFns.push(elementFn); - if (!elementFn.constant) { - allConstant = false; - } } while (this.expect(',')); } this.consume(']'); @@ -11418,41 +11472,38 @@ Parser.prototype = { return array; }, { literal: true, - constant: allConstant + constant: elementFns.every(isConstant), + inputs: elementFns }); }, object: function () { - var keyValues = []; - var allConstant = true; + var keys = [], valueFns = []; if (this.peekToken().text !== '}') { do { if (this.peek('}')) { // Support trailing commas per ES5.1. break; } - var token = this.expect(), - key = token.string || token.text; + var token = this.expect(); + keys.push(token.string || token.text); this.consume(':'); var value = this.expression(); - keyValues.push({key: key, value: value}); - if (!value.constant) { - allConstant = false; - } + valueFns.push(value); } while (this.expect(',')); } this.consume('}'); return extend(function $parseObjectLiteral(self, locals) { var object = {}; - for (var i = 0, ii = keyValues.length; i < ii; i++) { - var keyValue = keyValues[i]; - object[keyValue.key] = keyValue.value(self, locals); + for (var i = 0, ii = valueFns.length; i < ii; i++) { + object[keys[i]] = valueFns[i](self, locals); } return object; }, { literal: true, - constant: allConstant + constant: valueFns.every(isConstant), + inputs: valueFns }); } }; @@ -11534,7 +11585,7 @@ function getterFn(path, options, fullExp) { if (pathKeysLength < 6) { fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp); } else { - fn = function(scope, locals) { + fn = function cspSafeGetter(scope, locals) { var i = 0, val; do { val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++], @@ -11563,14 +11614,14 @@ function getterFn(path, options, fullExp) { var evaledFnGetter = new Function('s', 'l', code); // s=scope, l=locals /* jshint +W054 */ evaledFnGetter.toString = valueFn(code); - evaledFnGetter.assign = function(self, value) { - return setter(self, path, value, path); - }; fn = evaledFnGetter; } fn.sharedGetter = true; + fn.assign = function(self, value) { + return setter(self, path, value, path); + }; getterFnCache[path] = fn; return fn; } @@ -11679,6 +11730,8 @@ function $ParseProvider() { parsedExpression = wrapSharedExpression(parsedExpression); parsedExpression.$$watchDelegate = parsedExpression.literal ? oneTimeLiteralWatchDelegate : oneTimeWatchDelegate; + } else if (parsedExpression.inputs) { + parsedExpression.$$watchDelegate = inputsWatchDelegate; } cache[cacheKey] = parsedExpression; @@ -11693,6 +11746,88 @@ function $ParseProvider() { } }; + 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); + } + } + } + + return list; + } + + function expressionInputDirtyCheck(newValue, oldValueOfValue) { + + if (newValue == null || oldValueOfValue == null) { // null/undefined + return newValue === oldValueOfValue; + } + + if (typeof newValue === 'object') { + + // 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 = newValue.valueOf(); + + if (typeof newValue === 'object') { + // objects/arrays are not supported - deep-watching them would be too expensive + return false; + } + + // fall-through to the primitive equality check + } + + //Primitive or NaN + return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue); + } + + function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var inputExpressions = parsedExpression.$$inputs || + (parsedExpression.$$inputs = collectExpressionInputs(parsedExpression.inputs, [])); + + var lastResult; + + 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 && newInputValue.valueOf(); + } + 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 + } + + return scope.$watch(function expressionInputsWatch(scope) { + var changed = false; + + 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 && newInputValue.valueOf(); + } + } + + if (changed) { + lastResult = parsedExpression(scope); + } + + return lastResult; + }, listener, objectEquality); + } + function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) { var unwatch, lastValue; return unwatch = scope.$watch(function oneTimeWatch(scope) { @@ -11758,7 +11893,18 @@ function $ParseProvider() { // initial value is defined (for bind-once) return isDefined(value) ? result : value; }; - fn.$$watchDelegate = parsedExpression.$$watchDelegate; + + // 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]; + } + return fn; } }]; @@ -12496,7 +12642,7 @@ function $RootScopeProvider(){ this.$$postDigestQueue = []; this.$$listeners = {}; this.$$listenerCount = {}; - this.$$isolateBindings = {}; + this.$$isolateBindings = null; this.$$applyAsyncQueue = []; } @@ -12877,6 +13023,8 @@ function $RootScopeProvider(){ * de-registration function is executed, the internal watch operation is terminated. */ $watchCollection: function(obj, listener) { + $watchCollectionInterceptor.$stateful = true; + var self = this; // the current value, updated on each dirty-check run var newValue; @@ -16199,10 +16347,11 @@ var uppercaseFilter = valueFn(uppercase); * * @description * Creates a new array or string containing only a specified number of elements. The elements - * are taken from either the beginning or the end of the source array or string, as specified by - * the value and sign (positive or negative) of `limit`. + * are taken from either the beginning or the end of the source array, string or number, as specified by + * the value and sign (positive or negative) of `limit`. If a number is used as input, it is + * converted to a string. * - * @param {Array|string} input Source array or string to be limited. + * @param {Array|string|number} input Source array, string or number to be limited. * @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 @@ -16218,8 +16367,10 @@ var uppercaseFilter = valueFn(uppercase); .controller('ExampleController', ['$scope', function($scope) { $scope.numbers = [1,2,3,4,5,6,7,8,9]; $scope.letters = "abcdefghi"; + $scope.longNumber = 2345432342; $scope.numLimit = 3; $scope.letterLimit = 3; + $scope.longNumberLimit = 3; }]);
@@ -16227,19 +16378,25 @@ var uppercaseFilter = valueFn(uppercase);

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

Limit {{letters}} to:

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

+ Limit {{longNumber}} to: +

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

var numLimitInput = element(by.model('numLimit')); var letterLimitInput = element(by.model('letterLimit')); + var longNumberLimitInput = element(by.model('longNumberLimit')); var limitedNumbers = element(by.binding('numbers | limitTo:numLimit')); var limitedLetters = element(by.binding('letters | limitTo:letterLimit')); + var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit')); it('should limit the number array to first three items', function() { expect(numLimitInput.getAttribute('value')).toBe('3'); expect(letterLimitInput.getAttribute('value')).toBe('3'); + expect(longNumberLimitInput.getAttribute('value')).toBe('3'); expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]'); expect(limitedLetters.getText()).toEqual('Output letters: abc'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 234'); }); it('should update the output when -3 is entered', function() { @@ -16247,8 +16404,11 @@ var uppercaseFilter = valueFn(uppercase); numLimitInput.sendKeys('-3'); letterLimitInput.clear(); letterLimitInput.sendKeys('-3'); + longNumberLimitInput.clear(); + longNumberLimitInput.sendKeys('-3'); expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); expect(limitedLetters.getText()).toEqual('Output letters: ghi'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 342'); }); it('should not exceed the maximum size of input array', function() { @@ -16256,14 +16416,18 @@ var uppercaseFilter = valueFn(uppercase); numLimitInput.sendKeys('100'); letterLimitInput.clear(); letterLimitInput.sendKeys('100'); + longNumberLimitInput.clear(); + longNumberLimitInput.sendKeys('100'); expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]'); expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342'); }); */ function limitToFilter(){ return function(input, limit) { + if (isNumber(input)) input = input.toString(); if (!isArray(input) && !isString(input)) return input; if (Math.abs(Number(limit)) === Infinity) { @@ -18436,11 +18600,11 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { element.on('change', listener); ctrl.$render = function() { - element.val(ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue); + element.val(ctrl.$isEmpty(ctrl.$modelValue) ? '' : ctrl.$viewValue); }; } -function weekParser(isoWeek) { +function weekParser(isoWeek, existingDate) { if (isDate(isoWeek)) { return isoWeek; } @@ -18451,9 +18615,21 @@ function weekParser(isoWeek) { if (parts) { var year = +parts[1], week = +parts[2], + hours = 0, + minutes = 0, + seconds = 0, + milliseconds = 0, firstThurs = getFirstThursdayOfYear(year), addDays = (week - 1) * 7; - return new Date(year, 0, firstThurs.getDate() + addDays); + + if (existingDate) { + hours = existingDate.getHours(); + minutes = existingDate.getMinutes(); + seconds = existingDate.getSeconds(); + milliseconds = existingDate.getMilliseconds(); + } + + return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds); } } @@ -18461,7 +18637,7 @@ function weekParser(isoWeek) { } function createDateParser(regexp, mapping) { - return function(iso) { + return function(iso, date) { var parts, map; if (isDate(iso)) { @@ -18483,14 +18659,26 @@ function createDateParser(regexp, mapping) { if (parts) { parts.shift(); - map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0 }; + if (date) { + map = { + yyyy: date.getFullYear(), + MM: date.getMonth() + 1, + dd: date.getDate(), + HH: date.getHours(), + mm: date.getMinutes(), + ss: date.getSeconds(), + sss: date.getMilliseconds() + }; + } else { + map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 }; + } forEach(parts, function(part, index) { if (index < mapping.length) { map[mapping[index]] = +part; } }); - return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0); + return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss || 0); } } @@ -18508,7 +18696,12 @@ function createDateInputType(type, regexp, parseDate, format) { ctrl.$parsers.push(function(value) { if (ctrl.$isEmpty(value)) return null; if (regexp.test(value)) { - var parsedDate = parseDate(value); + var previousDate = ctrl.$modelValue; + if (previousDate && timezone === 'UTC') { + var timezoneOffset = 60000 * previousDate.getTimezoneOffset(); + previousDate = new Date(previousDate.getTime() + timezoneOffset); + } + var parsedDate = parseDate(value, previousDate); if (timezone === 'UTC') { parsedDate.setMinutes(parsedDate.getMinutes() - parsedDate.getTimezoneOffset()); } @@ -18628,8 +18821,7 @@ function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) { stringBasedInputType(ctrl); ctrl.$$parserName = 'url'; - ctrl.$validators.url = function(modelValue, viewValue) { - var value = modelValue || viewValue; + ctrl.$validators.url = function(value) { return ctrl.$isEmpty(value) || URL_REGEXP.test(value); }; } @@ -18641,8 +18833,7 @@ function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) { stringBasedInputType(ctrl); ctrl.$$parserName = 'email'; - ctrl.$validators.email = function(modelValue, viewValue) { - var value = modelValue || viewValue; + ctrl.$validators.email = function(value) { return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value); }; } @@ -18696,7 +18887,7 @@ function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filt element[0].checked = ctrl.$viewValue; }; - // Override the standard `$isEmpty` because a value of `false` means empty in a checkbox. + // Override the standard `$isEmpty` because an empty checkbox is never equal to the trueValue ctrl.$isEmpty = function(value) { return value !== trueValue; }; @@ -19155,7 +19346,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ * default. The `checkboxInputType` directive does this because in its case a value of `false` * implies empty. * - * @param {*} value Reference to check. + * @param {*} value Model value to check. * @returns {boolean} True if `value` is empty. */ this.$isEmpty = function(value) { @@ -19342,9 +19533,11 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ // check parser error if (!processParseErrors(parseValid)) { + validationDone(false); return; } if (!processSyncValidators()) { + validationDone(false); return; } processAsyncValidators(); @@ -19362,7 +19555,6 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ forEach(ctrl.$asyncValidators, function(v, name) { setValidity(name, null); }); - validationDone(); return false; } } @@ -19380,7 +19572,6 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ forEach(ctrl.$asyncValidators, function(v, name) { setValidity(name, null); }); - validationDone(); return false; } return true; @@ -19388,6 +19579,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ function processAsyncValidators() { var validatorPromises = []; + var allValid = true; forEach(ctrl.$asyncValidators, function(validator, name) { var promise = validator(modelValue, viewValue); if (!isPromiseLike(promise)) { @@ -19398,13 +19590,16 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ validatorPromises.push(promise.then(function() { setValidity(name, true); }, function(error) { + allValid = false; setValidity(name, false); })); }); if (!validatorPromises.length) { - validationDone(); + validationDone(true); } else { - $q.all(validatorPromises).then(validationDone); + $q.all(validatorPromises).then(function() { + validationDone(allValid); + }, noop); } } @@ -19414,10 +19609,10 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ } } - function validationDone() { + function validationDone(allValid) { if (localValidationRunId === currentValidationRunId) { - doneCallback(); + doneCallback(allValid); } } }; @@ -19478,9 +19673,13 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ ctrl.$modelValue = modelValue; writeToModelIfNeeded(); } - ctrl.$$runValidators(parserValid, modelValue, viewValue, function() { + ctrl.$$runValidators(parserValid, modelValue, viewValue, function(allValid) { if (!allowInvalid) { - ctrl.$modelValue = ctrl.$valid ? modelValue : undefined; + // 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(); } }); @@ -19899,8 +20098,8 @@ var requiredDirective = function() { if (!ctrl) return; attr.required = true; // force truthy in case we are on non input element - ctrl.$validators.required = function(modelValue, viewValue) { - return !attr.required || !ctrl.$isEmpty(viewValue); + ctrl.$validators.required = function(value) { + return !attr.required || !ctrl.$isEmpty(value); }; attr.$observe('required', function() { @@ -19955,7 +20154,7 @@ var maxlengthDirective = function() { ctrl.$validate(); }); ctrl.$validators.maxlength = function(modelValue, viewValue) { - return ctrl.$isEmpty(viewValue) || viewValue.length <= maxlength; + return ctrl.$isEmpty(modelValue) || viewValue.length <= maxlength; }; } }; @@ -19974,7 +20173,7 @@ var minlengthDirective = function() { ctrl.$validate(); }); ctrl.$validators.minlength = function(modelValue, viewValue) { - return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength; + return ctrl.$isEmpty(modelValue) || viewValue.length >= minlength; }; } }; @@ -20204,6 +20403,8 @@ var ngValueDirective = function() { * `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 be the input bound to. You can set several * events using an space delimited list. There is a special event called `default` that @@ -21415,15 +21616,14 @@ var forceAsyncEvents = { }; forEach( 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '), - function(name) { - var directiveName = directiveNormalize('ng-' + name); + function(eventName) { + var directiveName = directiveNormalize('ng-' + eventName); ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) { return { restrict: 'A', compile: function($element, attr) { var fn = $parse(attr[directiveName]); return function ngEventHandler(scope, element) { - var eventName = lowercase(name); element.on(eventName, function(event) { var callback = function() { fn(scope, {$event:event}); @@ -22123,6 +22323,9 @@ var ngIfDirective = ['$animate', function($animate) { *