diff --git a/.gitignore b/.gitignore index 4d86e47..76a8483 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ node_modules/ popup/popup.css popup/popup.js background/background.js +/contentscripts/ dist/ build/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..53bca18 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +## v0.4.0 + +- [x] Store tags in IndexedDB instead of Local Storage +- [x] Pagination +- [x] Filter tags by status +- [x] Handle new Shazam login & API +- [x] Manually select the track we want from Spotify +- [x] Audio preview +- [x] Set a track as "not found" if none of the results is corresponding +- [x] New icons +- [x] Handle "Too Many Requests" error on Spotify +- [x] Update AngularJS to 1.5.9 +- [x] Update scripts handle versions like 0.2.10 (two diggits / part) +- [x] Do not match a Spotify track if the title is not the same (lower case matching) +- [x] Bugfixes \ No newline at end of file diff --git a/README.md b/README.md index 1805533..40a4091 100644 --- a/README.md +++ b/README.md @@ -56,11 +56,14 @@ grunt build grunt bundle ``` -## Roadmap for v0.2.5 - -- Custom update scripts, handle versions like 0.2.10 -- Add tracks in order on Spotify - - Reorder existing tracks +## Roadmap for v1.0 + +- [ ] Refactor. Code is messy at some places... +- [ ] Use React/Inferno/Vue.js/Angular 2.x instead of Angular 1.x +- [ ] Use Promises instead of callbacks +- [ ] Use bulk* methods from Dexie.js to speedup tags addition/update to DB or transactions +- [ ] Put "new search" (in TagsCtrl) in a separate directive/controller +- [ ] Add volume control for audio preview ## Disclaimer diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 8ee2feb..987a828 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -61,12 +61,24 @@ "message": "Updating tags...", "description": "" }, + "loadingTags": { + "message": "Loading...", + "description": "" + }, + "updatingApp": { + "message": "Shazify is updating to latest version...", + "description": "" + }, "doNotCloseBrowser": { "message": "Please do not close your browser", "description": "" }, + "all": { + "message": "all", + "description": "" + }, "searchTrackButton": { - "message": "Try a new search", + "message": "Search", "description": "" }, "trackField": { @@ -78,11 +90,11 @@ "description": "" }, "trackNotFound": { - "message": "Oops ! We cannot find this track on Spotify...", + "message": "Oops ! We cannot find this track on Spotify... Please check/correct the search query below and then select the right track from the results that will be displayed.", "description": "" }, - "searchQueryPrompt": { - "message": "Please help us by entering/updating the search query below.", + "changeTrackSearch": { + "message": "Not the right track found? You can change the search query below and then select the right track from the results that will be displayed.", "description": "" }, "noTrackFoundQuery": { @@ -95,6 +107,30 @@ } } }, + "searchResults": { + "message": "Search results", + "description": "" + }, + "searchResultsPleaseSelect": { + "message": "Please select the right track below", + "description": "" + }, + "notFound": { + "message": "Not found", + "description": "" + }, + "notFoundText": { + "message": "No track is matching.", + "description": "" + }, + "saveSelectedTrack": { + "message": "Save the selected track", + "description": "" + }, + "searchResults": { + "message": "Search results", + "description": "" + }, "settings": { "message": "Settings", "description": "" diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index c3a83c9..5d4f1bf 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -61,12 +61,24 @@ "message": "Mise à jour des tags en cours...", "description": "" }, + "loadingTags": { + "message": "Chargement...", + "description": "" + }, + "updatingApp": { + "message": "Shazify se met à jour à la dernière version...", + "description": "" + }, "doNotCloseBrowser": { "message": "Veuillez ne pas fermer votre navigateur", "description": "" }, + "all": { + "message": "tous", + "description": "" + }, "searchTrackButton": { - "message": "Lancer une nouvelle recherche", + "message": "Rechercher", "description": "" }, "trackField": { @@ -78,12 +90,12 @@ "description": "" }, "trackNotFound": { - "message": "Oops ! Nous ne trouvons pas ce morceau sur Spotify...", + "message": "Oops ! Nous ne trouvons pas ce morceau sur Spotify... Veuillez modifier la requête de recherche ci-dessous et sélectionner le bon morceau dans les résultats qui s'afficheront.", "description": "" }, - "searchQueryPrompt": { - "message": "Aidez-nous en entrant une nouvelle requête de recherche :", - "description": "" + "changeTrackSearch": { + "message": "Pas le bon morceau trouvé? Vous pouvez modifier la requête de recherche ci-dessous et sélectionner celui qui correspond le mieux.", + "description": "" }, "noTrackFoundQuery": { "message": "Aucun morceau trouvé... veuillez modifier les champs ci-dessus et réessayer.", @@ -95,6 +107,26 @@ } } }, + "searchResults": { + "message": "Résultats de recherche", + "description": "" + }, + "searchResultsPleaseSelect": { + "message": "Veuillez sélectionner le bon morceau ci-dessous.", + "description": "" + }, + "notFound": { + "message": "Non trouvé", + "description": "" + }, + "notFoundText": { + "message": "Aucun morceau ne correspond.", + "description": "" + }, + "saveSelectedTrack": { + "message": "Sauvegarder ce choix", + "description": "" + }, "settings": { "message": "Paramètres", "description": "" diff --git a/gruntfile.js b/gruntfile.js index 0e9f204..6961a3d 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -4,7 +4,10 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), archive_name: 'shazify-<%= pkg.version %>', jshint: { - globals: { angular: true }, + options: { + globals: { angular: true }, + ignores: 'src/background/lib/*' + }, all: ['gruntfile.js', 'src/popup/js/**/*.js', 'src/background/**/*.js'], gruntfile: ['gruntfile.js'] }, @@ -14,11 +17,15 @@ module.exports = function(grunt) { }, css: { files: { - 'popup/popup.css': ['src/popup/css/*.css'] + 'popup/popup.css': ['src/popup/css/*.css'], + 'contentscripts/shazam.css': ['src/contentscripts/shazam.css'] } }, js: { files: { + 'contentscripts/shazamLocalStorage.js': [ + 'src/contentscripts/shazamLocalStorage.js' + ], 'popup/popup.js': [ 'src/popup/js/app.js', 'src/popup/js/**/*.js' @@ -29,6 +36,7 @@ module.exports = function(grunt) { 'src/background/Helper.js', 'src/background/ChromeHelper.js', 'src/background/CanvasIcon.js', + 'src/background/DbService.js', 'src/background/LoggerService.js', 'src/background/StorageHelper.js', 'src/background/SpotifyService.js', @@ -48,14 +56,14 @@ module.exports = function(grunt) { } }, css: { - files: ['src/popup/css/*.css'], + files: ['src/popup/css/*.css', 'src/contentscripts/*.css'], tasks: ['build:css'], options: { spawn: false, } }, js: { - files: ['src/popup/js/**/*.js', 'src/background/**/*.js'], + files: ['src/contentscripts/*.js', 'src/popup/js/**/*.js', 'src/background/**/*.js'], tasks: ['build:js'], options: { spawn: false, diff --git a/manifest.json b/manifest.json index 6c3d0e9..c4bbf20 100755 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,7 @@ { + "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAopSL/q/2d97dHxCQ1w26B4EONSEo4CZZYFqu3MlJKA5ifSXkyoNSlkG6afDuNoXmiTWFCAawRgGwuO3yi0QvfeMJpz+M9nXnt8PQsVP10Mb7o3SHIihxIXRMFAJvggvHW4NCuDznJixpo2ixEeCL8LGkS0ZL93MgYtEOuaGPdcBTiAUya3Nr3mdkn+nTHldQvthassiDYZystDTuKwkf0vTZkDCyWC8bfI7xZTxQ6IFcS2WQgUm0ix5hgv+qyOQzOwh26R6BQmZTFj7YiSqhgZsZRebhMcn+hxd8kSegS1ZAcKv/oS63Ej5/IAB5NijrPXR3zivQZ6oIJjr+xMOU9wIDAQAB", "name": "Shazify", - "version": "0.3.2", + "version": "0.4.0", "manifest_version": 2, "description": "__MSG_appDesc__", "homepage_url": "http://www.leeroy.me", @@ -26,7 +27,7 @@ "http://www.shazam.com/*", "https://www.shazam.com/*", "https://api.spotify.com/*", - "https://accounts.spotify.com/api/*" + "https://accounts.spotify.com/*" ], "content_security_policy": "script-src 'self' https://ssl.google-analytics.com https://fonts.googleapis.com; object-src 'self'" } \ No newline at end of file diff --git a/package.json b/package.json index 34c5c44..90d46c2 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,18 @@ { "name": "chrome-shazify", - "version": "0.3.2", + "version": "0.4.0", "author": "Leeroy Brun ", "private": true, "description": "Easily sync your Shazam tracks with a Spotify playlist", "devDependencies": { - "grunt": "*", - "grunt-cli": "*", - "grunt-contrib-concat": "*", - "grunt-contrib-jshint": "*", - "grunt-contrib-watch": "*", - "grunt-contrib-compress": "*", - "grunt-contrib-copy": "*", - "grunt-contrib-clean": "*" + "grunt": "^1.0.1", + "grunt-cli": "^1.2.0", + "grunt-contrib-clean": "^1.0.0", + "grunt-contrib-compress": "^1.3.0", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-jshint": "^1.1.0", + "grunt-contrib-watch": "^1.0.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/popup/fonts/Simple-Line-Icons.eot b/popup/fonts/Simple-Line-Icons.eot new file mode 100755 index 0000000..f0ca6e8 Binary files /dev/null and b/popup/fonts/Simple-Line-Icons.eot differ diff --git a/popup/fonts/Simple-Line-Icons.svg b/popup/fonts/Simple-Line-Icons.svg new file mode 100755 index 0000000..4988524 --- /dev/null +++ b/popup/fonts/Simple-Line-Icons.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/popup/fonts/Simple-Line-Icons.ttf b/popup/fonts/Simple-Line-Icons.ttf new file mode 100755 index 0000000..6ecb686 Binary files /dev/null and b/popup/fonts/Simple-Line-Icons.ttf differ diff --git a/popup/fonts/Simple-Line-Icons.woff b/popup/fonts/Simple-Line-Icons.woff new file mode 100755 index 0000000..b17d694 Binary files /dev/null and b/popup/fonts/Simple-Line-Icons.woff differ diff --git a/popup/fonts/Simple-Line-Icons.woff2 b/popup/fonts/Simple-Line-Icons.woff2 new file mode 100755 index 0000000..c49fccf Binary files /dev/null and b/popup/fonts/Simple-Line-Icons.woff2 differ diff --git a/popup/lib/angular-animate.min.js b/popup/lib/angular-animate.min.js index 0b45d94..cabd0cf 100644 --- a/popup/lib/angular-animate.min.js +++ b/popup/lib/angular-animate.min.js @@ -1,28 +1,57 @@ /* - AngularJS v1.2.26 - (c) 2010-2014 Google, Inc. http://angularjs.org + AngularJS v1.5.9 + (c) 2010-2016 Google, Inc. http://angularjs.org License: MIT */ -(function(F,e,O){'use strict';e.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(G,s,g){g=g.ngAnimateChildren;e.isString(g)&&0===g.length?s.data("$$ngAnimateChildren",!0):G.$watch(g,function(e){s.data("$$ngAnimateChildren",!!e)})}}).factory("$$animateReflow",["$$rAF","$document",function(e,s){return function(g){return e(function(){g()})}}]).config(["$provide","$animateProvider",function(G,s){function g(e){for(var g=0;g=y&&b>=v&&e()}var h=g(b);a=b.data(q);if(-1!=h.getAttribute("class").indexOf(d)&&a){var m="";u(d.split(" "),function(a,b){m+=(0=a&&(a=e,e=0,b.push(k),k=[]);k.push(g.fn);g.children.forEach(function(a){e++;c.push(a)});a--}k.length&&b.push(k);return b}(c)}var u=[],C=Z(a);return function(n,Q,t){function H(a){a= +a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];s(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function T(a){var b=[],c={};s(a,function(a,d){var h=y(a.element),e=0<=["enter","move"].indexOf(a.event),h=a.structural?H(h):[];if(h.length){var k=e?"to":"from";s(h,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:d,element:F(a)}})}else b.push(a)});var d={},e={};s(c,function(c,k){var r=c.from, +p=c.to;if(r&&p){var z=a[r.animationID],g=a[p.animationID],A=r.animationID.toString();if(!e[A]){var n=e[A]={structural:!0,beforeStart:function(){z.beforeStart();g.beforeStart()},close:function(){z.close();g.close()},classes:O(z.classes,g.classes),from:z,to:g,anchors:[]};n.classes.length?b.push(n):(b.push(z),b.push(g))}e[A].anchors.push({out:r.element,"in":p.element})}else r=r?r.animationID:p.animationID,p=r.toString(),d[p]||(d[p]=!0,b.push(a[r]))});return b}function O(a,b){a=a.split(" ");b=b.split(" "); +for(var c=[],d=0;d=R&&b>=m&&(F=!0,k())}function N(){function b(){if(!w){M(!1);s(x,function(a){h.style[a[0]]=a[1]});T(a,f);e.addClass(a,ea);if(q.recalculateTimingStyles){na= +h.className+" "+ga;ia=B(h,na);D=H(h,na,ia);ca=D.maxDelay;J=Math.max(ca,0);m=D.maxDuration;if(0===m){k();return}q.hasTransitions=0l.expectedEndTime)?n.cancel(l.timer):g.push(k)}N&&(p=n(c,p,!1),g[0]={timer:p,expectedEndTime:d},g.push(k),a.data("$$animateCss",g));if(fa.length)a.on(fa.join(" "),z);f.to&&(f.cleanupStyles&&Ka(A,h,Object.keys(f.to)),Ga(a,f))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d").append(b).html();try{return 3===b[0].nodeType?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function dc(b){try{return decodeURIComponent(b)}catch(a){}}function ec(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=dc(c[0]),y(d)&&(b=y(c[1])?dc(c[1]):!0,kb.call(a,d)?J(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Cb(b){var a= -[];r(b,function(b,d){J(b)?r(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""}function lb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app", -"data-ng-app"],k=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(X.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=k.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function fc(b,a){var c=function(){b=w(b);if(b.injector()){var c=b[0]===X? -"document":ia(b);throw Ta("btstrpd",c.replace(//,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=gc(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(W&&!d.test(W.name))return c();W.name=W.name.replace(d,"");Va.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function mb(b,a){a= -a||"_";return b.replace(Yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function Db(b,a,c){if(!b)throw Ta("areq",a||"?",c||"required");return b}function Wa(b,a,c){c&&J(b)&&(b=b[b.length-1]);Db(P(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Da(b,a){if("hasOwnProperty"===b)throw Ta("badname",a);}function hc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g "+e[1]+a.replace(me,"<$1>")+e[2];d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a=Q?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ka(b,a){var c=typeof b,d;"function"==c||"object"==c&&null!==b?"function"==typeof(d= -b.$$hashKey)?d=b.$$hashKey():d===t&&(d=b.$$hashKey=(a||hb)()):d=b;return c+":"+d}function bb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function sc(b){var a,c;"function"===typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(pe,""),c=c.match(qe),r(c[1].split(re),function(b){b.replace(se,function(b,c,d){a.push(d)})})),b.$inject=a):J(b)?(c=b.length-1,Wa(b[c],"fn"),a=b.slice(0,c)):Wa(b,"fn",!0);return a}function gc(b){function a(a){return function(b,c){if(T(b))r(b, -$b(a));else return a(b,c)}}function c(a,b){Da(a,"service");if(P(b)||J(b))b=n.instantiate(b);if(!b.$get)throw cb("pget",a);return l[a+k]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,k;r(a,function(a){if(!h.get(a)){h.put(a,!0);try{if(v(a))for(c=Ya(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,k=d.length;f 4096 bytes)!"));else{if(m.cookie!== -da)for(da=m.cookie,d=da.split("; "),O={},f=0;fh&&this.remove(p.key),b},get:function(a){if(h").parent()[0])});var f=L(a,b,a,c,d,e);ca(a,"ng-scope");return function(b,c,d,e){Db(b,"scope");var g=c?La.clone.call(a):a;r(d,function(a,b){g.data("$"+b+"Controller",a)});d=0;for(var m=g.length;darguments.length&& -(b=a,a=t);K&&(c=da);return p(a,b,c)}var u,M,z,O,I,B,da={},rb;u=c===f?d:ha(d,new Ob(w(f),d.$attr));M=u.$$element;if(L){var Na=/^\s*([@=&])(\??)\s*(\w*)\s*$/;B=e.$new(!0);!H||H!==L&&H!==L.$$originalDirective?M.data("$isolateScopeNoTemplate",B):M.data("$isolateScope",B);ca(M,"ng-isolate-scope");r(L.scope,function(a,c){var d=a.match(Na)||[],f=d[3]||c,g="?"==d[2],d=d[1],m,l,n,p;B.$$isolateBindings[c]=d+f;switch(d){case "@":u.$observe(f,function(a){B[c]=a});u.$$observers[f].$$scope=e;u[f]&&(B[c]=b(u[f])(e)); -break;case "=":if(g&&!u[f])break;l=q(u[f]);p=l.literal?Aa:function(a,b){return a===b||a!==a&&b!==b};n=l.assign||function(){m=B[c]=l(e);throw ja("nonassign",u[f],L.name);};m=B[c]=l(e);B.$watch(function(){var a=l(e);p(a,B[c])||(p(a,m)?n(e,a=B[c]):B[c]=a);return m=a},null,l.literal);break;case "&":l=q(u[f]);B[c]=function(a){return l(e,a)};break;default:throw ja("iscp",L.name,c,a);}})}rb=p&&F;R&&r(R,function(a){var b={$scope:a===L||a.$$isolateScope?B:e,$element:M,$attrs:u,$transclude:rb},c;I=a.controller; -"@"==I&&(I=u[a.name]);c=s(I,b);da[a.name]=c;K||M.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(z=m.length;gG.priority)break;if(V=G.scope)O=O||G,G.templateUrl||(db("new/isolated scope",L,G,Z),T(V)&&(L=G));C=G.name;!G.templateUrl&&G.controller&&(V=G.controller,R=R||{},db("'"+C+"' controller",R[C],G,Z),R[C]=G);if(V=G.transclude)x=!0,G.$$tlb|| -(db("transclusion",fa,G,Z),fa=G),"element"==V?(K=!0,u=G.priority,V=Z,Z=d.$$element=w(X.createComment(" "+C+": "+d[C]+" ")),c=Z[0],Na(f,Ba.call(V,0),c),S=z(V,e,u,g&&g.name,{nonTlbTranscludeDirective:fa})):(V=w(Kb(c)).contents(),Z.empty(),S=z(V,e));if(G.template)if(D=!0,db("template",H,G,Z),H=G,V=P(G.template)?G.template(Z,d):G.template,V=W(V),G.replace){g=G;V=Ib.test(V)?w(aa(V)):[];c=V[0];if(1!=V.length||1!==c.nodeType)throw ja("tplrt",C,"");Na(f,Z,c);qa={$attr:{}};V=da(c,[],qa);var $=a.splice(Fa+ -1,a.length-(Fa+1));L&&y(V);a=a.concat(V).concat($);E(d,qa);qa=a.length}else Z.html(V);if(G.templateUrl)D=!0,db("template",H,G,Z),H=G,G.replace&&(g=G),N=ue(a.splice(Fa,a.length-Fa),Z,d,f,x&&S,m,n,{controllerDirectives:R,newIsolateScopeDirective:L,templateDirective:H,nonTlbTranscludeDirective:fa}),qa=a.length;else if(G.compile)try{Q=G.compile(Z,d,S),P(Q)?F(null,Q,U,Y):Q&&F(Q.pre,Q.post,U,Y)}catch(ve){l(ve,ia(Z))}G.terminal&&(N.terminal=!0,u=Math.max(u,G.priority))}N.scope=O&&!0===O.scope;N.transcludeOnThisElement= -x;N.templateOnThisElement=D;N.transclude=S;p.hasElementTranscludeDirective=K;return N}function y(a){for(var b=0,c=a.length;bp.priority)&&-1!=p.restrict.indexOf(f)&&(q&&(p=bc(p,{$$start:q,$$end:n})),b.push(p),h=p)}catch(F){l(F)}}return h}function E(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!= -e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(ca(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function ue(a,b,c,d,e,f,g,h){var m=[],l,q,s=b[0],u=a.shift(),F=D({},u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),N=P(u.templateUrl)?u.templateUrl(b,c):u.templateUrl; -b.empty();n.get(A.getTrustedResourceUrl(N),{cache:p}).success(function(n){var p,A;n=W(n);if(u.replace){n=Ib.test(n)?w(aa(n)):[];p=n[0];if(1!=n.length||1!==p.nodeType)throw ja("tplrt",u.name,N);n={$attr:{}};Na(d,b,p);var z=da(p,[],n);T(u.scope)&&y(z);a=z.concat(a);E(c,n)}else p=s,b.html(n);a.unshift(F);l=H(a,p,c,e,b,u,f,g,h);r(d,function(a,c){a==p&&(d[c]=b[0])});for(q=L(b[0].childNodes,e);m.length;){n=m.shift();A=m.shift();var R=m.shift(),I=m.shift(),z=b[0];if(A!==s){var B=A.className;h.hasElementTranscludeDirective&& -u.replace||(z=Kb(p));Na(R,w(A),z);ca(w(z),B)}A=l.transcludeOnThisElement?O(n,l.transclude,I):I;l(q,n,z,d,A)}m=null}).error(function(a,b,c,d){throw ja("tpload",d.url);});return function(a,b,c,d,e){a=e;m?(m.push(b),m.push(c),m.push(d),m.push(a)):(l.transcludeOnThisElement&&(a=O(b,l.transclude,e)),l(q,b,c,d,a))}}function x(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.namea.status?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=D({},a.headers),d,f,b=D({},b.common,b[K(a.method)]); -a:for(d in b){a=K(d);for(f in c)if(K(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){P(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);return c}(a);D(c,a);c.headers=d;c.method=Ia(c.method);var f=[function(a){d=a.headers;var c=xc(a.data,wc(d),a.transformRequest);x(c)&&r(d,function(a,b){"content-type"===K(b)&&delete d[b]});x(a.withCredentials)&&!x(e.withCredentials)&&(a.withCredentials=e.withCredentials);return s(a,c,d).then(b,b)},t],g=n.when(c);for(r(A,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 m=f.shift(),g=g.then(a,m)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function s(c,f,g){function h(a,b,c,e){I&&(200<=a&&300>a?I.put(w,[a,b,vc(c),e]):I.remove(w));p(b,a,c,e);d.$$phase||d.$apply()}function p(a,b,d,e){b=Math.max(b,0);(200<= -b&&300>b?A.resolve:A.reject)({data:a,status:b,headers:wc(d),config:c,statusText:e})}function s(){var a=Ra(q.pendingRequests,c);-1!==a&&q.pendingRequests.splice(a,1)}var A=n.defer(),r=A.promise,I,H,w=F(c.url,c.params);q.pendingRequests.push(c);r.then(s,s);!c.cache&&!e.cache||(!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method)||(I=T(c.cache)?c.cache:T(e.cache)?e.cache:u);if(I)if(H=I.get(w),y(H)){if(H&&P(H.then))return H.then(s,s),H;J(H)?p(H[1],H[0],ha(H[2]),H[3]):p(H,200,{},"OK")}else I.put(w,r);x(H)&& -((H=Pb(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:t)&&(g[c.xsrfHeaderName||e.xsrfHeaderName]=H),a(c.method,w,f,h,g,c.timeout,c.withCredentials,c.responseType));return r}function F(a,b){if(!b)return a;var c=[];Tc(b,function(a,b){null===a||x(a)||(J(a)||(a=[a]),r(a,function(a){T(a)&&(a=ta(a)?a.toISOString():na(a));c.push(Ca(b)+"="+Ca(a))}))});0=Q&&(!b.match(/^(get|post|head|put|delete|options)$/i)|| -!W.XMLHttpRequest))return new W.ActiveXObject("Microsoft.XMLHTTP");if(W.XMLHttpRequest)return new W.XMLHttpRequest;throw C("$httpBackend")("noxhr");}function Vd(){this.$get=["$browser","$window","$document",function(b,a,c){return ye(b,xe,b.defer,a.angular.callbacks,c[0])}]}function ye(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){$a(f,"load",g);$a(f,"error",g);e.body.removeChild(f);f=null;var k=-1,s="unknown";a&&("load"!== -a.type||d[b].called||(a={type:"error"}),s=a.type,k="error"===a.type?404:200);c&&c(k,s)};sb(f,"load",g);sb(f,"error",g);8>=Q&&(f.onreadystatechange=function(){v(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))});e.body.appendChild(f);return g}var g=-1;return function(e,m,h,l,n,p,q,s){function F(){A=g;R&&R();z&&z.abort()}function u(a,d,e,f,g){L&&c.cancel(L);R=z=null;0===d&&(d=e?200:"file"==ua(m).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(E)} -var A;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==K(e)){var N="_"+(d.counter++).toString(36);d[N]=function(a){d[N].data=a;d[N].called=!0};var R=f(m.replace("JSON_CALLBACK","angular.callbacks."+N),N,function(a,b){u(l,a,d[N].data,"",b);d[N]=E})}else{var z=a(e);z.open(e,m,!0);r(n,function(a,b){y(a)&&z.setRequestHeader(b,a)});z.onreadystatechange=function(){if(z&&4==z.readyState){var a=null,b=null,c="";A!==g&&(a=z.getAllResponseHeaders(),b="response"in z?z.response:z.responseText);A===g&& -10>Q||(c=z.statusText);u(l,A||z.status,b,a,c)}};q&&(z.withCredentials=!0);if(s)try{z.responseType=s}catch(ca){if("json"!==s)throw ca;}z.send(h||null)}if(0=k&&(n.resolve(q),l(p.$$intervalId),delete e[p.$$intervalId]);s||b.$apply()},g);e[p.$$intervalId]=n;return p}var e={};d.cancel= -function(b){return b&&b.$$intervalId in e?(e[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete e[b.$$intervalId],!0):!1};return d}]}function bd(){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"},pluralCat:function(b){return 1===b?"one":"other"}}}}function Qb(b){b=b.split("/");for(var a=b.length;a--;)b[a]= -lb(b[a]);return b.join("/")}function zc(b,a,c){b=ua(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=U(b.port)||ze[b.protocol]||null}function Ac(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=ua(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=ec(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ra(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function eb(b){var a= -b.indexOf("#");return-1==a?b:b.substr(0,a)}function Rb(b){return b.substr(0,eb(b).lastIndexOf("/")+1)}function Bc(b,a){this.$$html5=!0;a=a||"";var c=Rb(b);zc(b,this,b);this.$$parse=function(a){var e=ra(c,a);if(!v(e))throw Sb("ipthprfx",a,c);Ac(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Cb(this.$$search),b=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e; -if((e=ra(b,d))!==t)return d=e,(e=ra(a,e))!==t?c+(ra("/",e)||e):b+d;if((e=ra(c,d))!==t)return c+e;if(c==d+"/")return c}}function Tb(b,a){var c=Rb(b);zc(b,this,b);this.$$parse=function(d){var e=ra(b,d)||ra(c,d),e="#"==e.charAt(0)?ra(a,e):this.$$html5?e:"";if(!v(e))throw Sb("ihshprfx",d,a);Ac(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash? -"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(eb(b)==eb(a))return a}}function Ub(b,a){this.$$html5=!0;Tb.apply(this,arguments);var c=Rb(b);this.$$rewrite=function(d){var e;if(b==eb(d))return d;if(e=ra(c,d))return b+a+e;if(c===d+"/")return c};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function tb(b){return function(){return this[b]}} -function Cc(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Wd(){var b="",a=!1;this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return y(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",k.absUrl(),a)}var k,m,h=d.baseHref(),l=d.url(),n;a?(n=l.substring(0,l.indexOf("/",l.indexOf("//")+2))+(h||"/"),m=e.history?Bc:Ub):(n= -eb(l),m=Tb);k=new m(n,"#"+b);k.$$parse(k.$$rewrite(l));var p=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var e=w(a.target);"a"!==K(e[0].nodeName);)if(e[0]===f[0]||!(e=e.parent())[0])return;var g=e.prop("href");T(g)&&"[object SVGAnimatedString]"===g.toString()&&(g=ua(g.animVal).href);if(!p.test(g)){if(m===Ub){var h=e.attr("href")||e.attr("xlink:href");if(h&&0>h.indexOf("://"))if(g="#"+b,"/"==h[0])g=n+g+h;else if("#"==h[0])g=n+g+(k.path()||"/")+h; -else{var l=k.path().split("/"),h=h.split("/");2!==l.length||l[1]||(l.length=1);for(var q=0;qe?Dc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var g=0,k;do k=Dc(d[g++],d[g++],d[g++],d[g++],d[g++],c,a)(b,f),f=t,b=k;while(ga)for(b in h++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(r--,delete e[b])}else e!==d&&(e=d,h++);return h},function(){n?(n=!1,b(d,d,c)):b(d,g,c);if(k)if(T(d))if(Pa(d)){g=Array(d.length);for(var a=0;at&&(w=4-t,O[w]||(O[w]=[]),B=P(d.exp)?"fn: "+(d.exp.name||d.exp.toString()): -d.exp,B+="; newVal: "+na(f)+"; oldVal: "+na(k),O[w].push(B));else if(d===c){z=!1;break a}}catch(y){p.$$phase=null,e(y)}if(!(h=L.$$childHead||L!==this&&L.$$nextSibling))for(;L!==this&&!(h=L.$$nextSibling);)L=L.$parent}while(L=h);if((z||l.length)&&!t--)throw p.$$phase=null,a("infdig",b,na(O));}while(z||l.length);for(p.$$phase=null;r.length;)try{r.shift()()}catch(v){e(v)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==p&&(r(this.$$listenerCount, -Bb(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=E,this.$on= -this.$watch=function(){return E})}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){p.$$phase||p.$$asyncQueue.length||g.defer(function(){p.$$asyncQueue.length&&p.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return m("$apply"),this.$eval(a)}catch(b){e(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw e(c),c;}}},$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(){c[Ra(c,b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,g=!1,k={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){k.defaultPrevented=!0},defaultPrevented:!1},h=[k].concat(Ba.call(arguments,1)),l,m;do{d=f.$$listeners[a]||c;k.currentScope=f;l=0;for(m=d.length;lc.msieDocumentMode)throw xa("iequirks");var e=ha(ga);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b}, -e.valueOf=Qa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,k=e.trustAs;r(ga,function(a,b){var c=K(b);e[Za("parse_as_"+c)]=function(b){return f(a,b)};e[Za("get_trusted_"+c)]=function(b){return g(a,b)};e[Za("trust_as_"+c)]=function(b){return k(a,b)}});return e}]}function ce(){this.$get=["$window","$document",function(b,a){var c={},d=U((/android (\d+)/.exec(K((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator|| -{}).userAgent),f=a[0]||{},g=f.documentMode,k,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,h=f.body&&f.body.style,l=!1,n=!1;if(h){for(var p in h)if(l=m.exec(p)){k=l[0];k=k.substr(0,1).toUpperCase()+k.substr(1);break}k||(k="WebkitOpacity"in h&&"webkit");l=!!("transition"in h||k+"Transition"in h);n=!!("animation"in h||k+"Animation"in h);!d||l&&n||(l=v(f.body.style.webkitTransition),n=v(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7< -g),hasEvent:function(a){if("input"==a&&9==Q)return!1;if(x(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Xa(),vendorPrefix:k,transitions:l,animations:n,android:d,msie:Q,msieDocumentMode:g}}]}function ee(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,k,m){var h=c.defer(),l=h.promise,n=y(m)&&!m;k=a.defer(function(){try{h.resolve(e())}catch(a){h.reject(a),d(a)}finally{delete f[l.$$timeoutId]}n||b.$apply()},k);l.$$timeoutId=k;f[k]=h; -return l}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function ua(b,a){var c=b;Q&&(Y.setAttribute("href",c),c=Y.href);Y.setAttribute("href",c);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname: -"/"+Y.pathname}}function Pb(b){b=v(b)?ua(b):b;return b.protocol===Hc.protocol&&b.host===Hc.host}function fe(){this.$get=ba(W)}function mc(b){function a(d,e){if(T(d)){var f={};r(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Ic);a("date",Jc);a("filter",Ce);a("json",De);a("limitTo",Ee);a("lowercase",Fe);a("number",Kc);a("orderBy",Lc);a("uppercase",Ge)}function Ce(){return function(b, -a,c){if(!J(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;bb;b=Math.abs(b);var g=b+"",k="",m=[],h=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&& -l[3]>e+1?(g="0",b=0):(k=g,h=!0)}if(h)0b)&&(k=b.toFixed(e));else{g=(g.split(Nc)[1]||"").length;x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(Nc);g=b[0];b=b[1]||"";var l=0,n=a.lgSize,p=a.gSize;if(g.length>=n+p)for(l=g.length-n,h=0;hb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Xb(e,a,d)}}function vb(b,a){return function(c,d){var e=c["get"+b](),f=Ia(a?"SHORT"+b:b);return d[f][e]}}function Jc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,k=b[8]? -a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=U(b[9]+b[10]),g=U(b[9]+b[11]));k.call(a,U(b[1]),U(b[2])-1,U(b[3]));f=U(b[4]||0)-f;g=U(b[5]||0)-g;k=U(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,g,k,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){var f="",g=[],k,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;v(c)&&(c=He.test(c)?U(c):a(c));ib(c)&&(c=new Date(c)); -if(!ta(c))return c;for(;e;)(m=Ie.exec(e))?(g=g.concat(Ba.call(m,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){k=Je[a];f+=k?k(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function De(){return function(b){return na(b,!0)}}function Ee(){return function(b,a){if(!J(b)&&!v(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):U(a);if(v(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||q()});if(e.hasEvent("paste"))a.on("paste cut",q)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var s=c.ngPattern;s&&((e=s.match(/^\/(.*)\/([gim]*)$/))?(s=RegExp(e[1],e[2]),e=function(a){return sa(d, -"pattern",d.$isEmpty(a)||s.test(a),a)}):e=function(c){var e=b.$eval(s);if(!e||!e.test)throw C("ngPattern")("noregexp",s,e,ia(a));return sa(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=U(c.ngMinlength);e=function(a){return sa(d,"minlength",d.$isEmpty(a)||a.length>=r,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var u=U(c.ngMaxlength);e=function(a){return sa(d,"maxlength",d.$isEmpty(a)||a.length<=u,a)};d.$parsers.push(e); -d.$formatters.push(e)}}function Yb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;dQ?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Xa=function(){if(y(Xa.isActive_))return Xa.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]")); -if(!b)try{new Function("")}catch(a){b=!0}return Xa.isActive_=b},Yc=/[A-Z]/g,ad={full:"1.2.26",major:1,minor:2,dot:26,codeName:"zucchini-expansion"};S.expando="ng339";var ab=S.cache={},ne=1,sb=W.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},$a=W.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]||{}};var ie=/([\:\-\_]+(.))/g, -je=/^moz([A-Z])/,Hb=C("jqLite"),ke=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Ib=/<|&#?\w+;/,le=/<([\w:]+)/,me=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ea={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ea.optgroup=ea.option;ea.tbody=ea.tfoot=ea.colgroup=ea.caption=ea.thead;ea.th= -ea.td;var La=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(W).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?w(this[b]):w(this[this.length+b])},length:0,push:Me,sort:[].sort,splice:[].splice},qb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){qb[K(b)]=b});var rc={};r("input select option textarea button form details".split(" "), -function(b){rc[Ia(b)]=!0});r({data:Mb,removeData:Lb},function(b,a){S[a]=b});r({data:Mb,inheritedData:pb,scope:function(b){return w.data(b,"$scope")||pb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return w.data(b,"$isolateScope")||w.data(b,"$isolateScopeNoTemplate")},controller:oc,injector:function(b){return pb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Nb,css:function(b,a,c){a=Za(a);if(y(c))b.style[a]=c;else{var d;8>=Q&&(d=b.currentStyle&&b.currentStyle[a], -""===d&&(d="auto"));d=d||b.style[a];8>=Q&&(d=""===d?t:d);return d}},attr:function(b,a,c){var d=K(a);if(qb[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)||E).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(b,d){var e=a[b.nodeType];if(x(d))return e?b[e]:"";b[e]=d}var a=[];9>Q?(a[1]= -"innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(x(a)){if("SELECT"===Ma(b)&&b.multiple){var c=[];r(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(x(a))return b.innerHTML;for(var c=0,d=b.childNodes;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,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 e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Re={n:"\n",f:"\f",r:"\r", -t:"\t",v:"\v","'":"'",'"':'"'},Wb=function(a){this.options=a};Wb.prototype={constructor:Wb,lex:function(a){this.text=a;this.index=0;this.ch=t;this.lastCh=":";for(this.tokens=[];this.index=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.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(fb.ZERO,a.fn, -this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Ec(d,this.options,this.text);return D(function(c,d,k){return e(k||a(c,d))},{assign:function(e,g,k){(k=a(e,k))||a.assign(e,k={});return ub(k,d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return D(function(e,f){var g=a(e,f),k=d(e,f),m;ka(k,c.text);if(!g)return t;(g=va(g[k],c.text))&&(g.then&&c.options.unwrapPromises)&& -(m=g,"$$v"in g||(m.$$v=t,m.then(function(a){m.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var k=ka(d(e,g),c.text);(g=va(a(e,g),c.text))||a.assign(e,g={});return g[k]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var k=[],m=c?c(f,g):f,h=0;ha.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Xb(Math[0< -a?"floor":"ceil"](a/60),2)+Xb(Math.abs(a%60),2))}},Ie=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,He=/^\-?\d+$/;Jc.$inject=["$locale"];var Fe=ba(K),Ge=ba(Ia);Lc.$inject=["$parse"];var dd=ba({restrict:"E",compile:function(a,c){8>=Q&&(c.href||c.name||c.$set("href",""),a.append(X.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===za.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)|| -a.preventDefault()})}}}),Fb={};r(qb,function(a,c){if("multiple"!=a){var d=pa("ng-"+c);Fb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=pa("ng-"+a);Fb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,k=a;"href"===a&&"[object SVGAnimatedString]"===za.call(e.prop("href"))&&(k="xlinkHref",f.$attr[k]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(k,c),Q&&g&&e.prop(g,f[k])):"href"=== -a&&f.$set(k,null)})}}}});var yb={$addControl:E,$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E};Oc.$inject=["$element","$attrs","$scope","$animate"];var Rc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var k=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};sb(e[0],"submit",k);e.on("$destroy",function(){c(function(){$a(e[0],"submit",k)},0,!1)})}var m=e.parent().controller("form"), -h=f.name||f.ngForm;h&&ub(a,h,g,h);if(m)e.on("$destroy",function(){m.$removeControl(g);h&&ub(a,h,t,h);D(g,yb)})}}}}}]},ed=Rc(),rd=Rc(!0),Se=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Te=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ue=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Sc={text:Ab,number:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Ue.test(a))return e.$setValidity("number", -!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return t});Ke(e,"number",Ve,null,e.$$validityState);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return sa(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return sa(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return sa(e,"number",e.$isEmpty(a)|| -ib(a),a)})},url:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"url",e.$isEmpty(a)||Se.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"email",e.$isEmpty(a)||Te.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){x(d.name)&&c.attr("name",hb());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue}; -d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;v(f)||(f=!0);v(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:E,button:E,submit:E,reset:E,file:E},Ve=["badInput"],jc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel", -link:function(d,e,f,g){g&&(Sc[K(f.type)]||Sc.text)(d,e,f,g,c,a)}}}],wb="ng-valid",xb="ng-invalid",Oa="ng-pristine",zb="ng-dirty",We=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function k(a,c){c=c?"-"+mb(c,"-"):"";g.removeClass(e,(a?xb:wb)+c);g.addClass(e,(a?wb:xb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name= -d.name;var m=f(d.ngModel),h=m.assign;if(!h)throw C("ngModel")("nonassign",d.ngModel,ia(e));this.$render=E;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||yb,n=0,p=this.$error={};e.addClass(Oa);k(!0);this.$setValidity=function(a,c){p[a]!==!c&&(c?(p[a]&&n--,n||(k(!0),this.$valid=!0,this.$invalid=!1)):(k(!1),this.$invalid=!0,this.$valid=!1,n++),p[a]=!c,k(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine= -!0;g.removeClass(e,zb);g.addClass(e,Oa)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Oa),g.addClass(e,zb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,h(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var q=this;a.$watch(function(){var c=m(a);if(q.$modelValue!==c){var d=q.$formatters,e=d.length;for(q.$modelValue=c;e--;)c=d[e](c);q.$viewValue!==c&&(q.$viewValue= -c,q.$render())}return c})}],Gd=function(){return{require:["ngModel","^?form"],controller:We,link:function(a,c,d,e){var f=e[0],g=e[1]||yb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Id=ba({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),kc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required", -!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Hd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push(aa(a))});return c}});e.$formatters.push(function(a){return J(a)?a.join(", "):t});e.$isEmpty=function(a){return!a||!a.length}}}},Xe=/^(true|false|\d+)$/,Jd=function(){return{priority:100, -compile:function(a,c){return Xe.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)})}}}},jd=ya({compile:function(a){a.addClass("ng-binding");return function(a,d,e){d.data("$binding",e.ngBind);a.$watch(e.ngBind,function(a){d.text(a==t?"":a)})}}}),ld=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}], -kd=["$sce","$parse",function(a,c){return{compile:function(d){d.addClass("ng-binding");return function(d,f,g){f.data("$binding",g.ngBindHtml);var k=c(g.ngBindHtml);d.$watch(function(){return(k(d)||"").toString()},function(c){f.html(a.getTrustedHtml(k(d))||"")})}}}}],md=Yb("",!0),od=Yb("Odd",0),nd=Yb("Even",1),pd=ya({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),qd=[function(){return{scope:!0,controller:"@",priority:500}}],lc={},Ye={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), -function(a){var c=pa("ng-"+a);lc[c]=["$parse","$rootScope",function(d,e){return{compile:function(f,g){var k=d(g[c]);return function(c,d){d.on(a,function(d){var f=function(){k(c,{$event:d})};Ye[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var td=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var k,m,h;c.$watch(e.ngIf,function(f){Ua(f)?m||(m=c.$new(),g(m,function(c){c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+ -" ");k={clone:c};a.enter(c,d.parent(),d)})):(h&&(h.remove(),h=null),m&&(m.$destroy(),m=null),k&&(h=Eb(k.clone),a.leave(h,function(){h=null}),k=null))})}}}],ud=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Va.noop,compile:function(g,k){var m=k.ngInclude||k.src,h=k.onload||"",l=k.autoscroll;return function(g,k,q,r,F){var u=0,t,w,R,z=function(){w&&(w.remove(),w=null);t&&(t.$destroy(),t=null); -R&&(e.leave(R,function(){w=null}),w=R,R=null)};g.$watch(f.parseAsResourceUrl(m),function(f){var m=function(){!y(l)||l&&!g.$eval(l)||d()},q=++u;f?(a.get(f,{cache:c}).success(function(a){if(q===u){var c=g.$new();r.template=a;a=F(c,function(a){z();e.enter(a,null,k,m)});t=c;R=a;t.$emit("$includeContentLoaded");g.$eval(h)}}).error(function(){q===u&&z()}),g.$emit("$includeContentRequested")):(z(),r.template=null)})}}}}],Kd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude", -link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],vd=ya({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),wd=ya({terminal:!0,priority:1E3}),xd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var k=g.count,m=g.$attr.when&&f.attr(g.$attr.when),h=g.offset||0,l=e.$eval(m)||{},n={},p=c.startSymbol(),q=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(l[K(c.replace("when","").replace("Minus","-"))]= -f.attr(g.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,p+k+"-"+h+q))});e.$watch(function(){var c=parseFloat(e.$eval(k));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-h));return n[c](e,f,!0)},function(a){f.text(a)})}}}],yd=["$parse","$animate",function(a,c){var d=C("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,k,m){var h=g.ngRepeat,l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,p,q,s,t,u,A={$id:Ka};if(!l)throw d("iexp", -h);g=l[1];k=l[2];(l=l[3])?(n=a(l),p=function(a,c,d){u&&(A[u]=a);A[t]=c;A.$index=d;return n(e,A)}):(q=function(a,c){return Ka(c)},s=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",g);t=l[3]||l[1];u=l[2];var y={};e.$watchCollection(k,function(a){var g,k,l=f[0],n,A={},B,I,H,v,E,C,x,J=[];if(Pa(a))C=a,E=p||q;else{E=p||s;C=[];for(H in a)a.hasOwnProperty(H)&&"$"!=H.charAt(0)&&C.push(H);C.sort()}B=C.length;k=J.length=C.length;for(g=0;gB;)d=t.pop(),p.removeOption(d.label),d.element.remove()}for(;z.length>M;)z.pop()[0].element.remove()}var h;if(!(h=s.match(d)))throw Ze("iexp",s,ia(f));var l=c(h[2]||h[1]),m=h[4]||h[6],n=h[5],r=c(h[3]||""),u=c(h[2]? -h[1]:m),w=c(h[7]),x=h[8]?c(h[8]):null,z=[[{element:f,label:""}]];F&&(a(F)(e),F.removeClass("ng-scope"),F.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=w(e)||[],d={},h,l,p,r,s,v,y;if(q)for(l=[],r=0,v=z.length;r@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}'); -//# sourceMappingURL=angular.min.js.map \ No newline at end of file +(function(B){'use strict';function N(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.9/"+(a?a+"/":"")+b;for(b=1;b").append(a).html();try{return a[0].nodeType===Ma?P(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+P(b)})}catch(c){return P(d)}}function Gc(a){try{return decodeURIComponent(a)}catch(b){}}function Hc(a){var b={};q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"), +c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=Gc(e),u(e)&&(f=u(f)?Gc(f):!0,sa.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Wb(a){var b=[];q(a,function(a,c){K(a)?q(a,function(a){b.push(ca(c,!0)+(!0===a?"":"="+ca(a,!0)))}):b.push(ca(c,!0)+(!0===a?"":"="+ca(a,!0)))});return b.length?b.join("&"):""}function tb(a){return ca(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ca(a,b){return encodeURIComponent(a).replace(/%40/gi, +"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function te(a,b){var d,c,e=Na.length;for(c=0;c protocol indicates an extension, document.location.href does not match."))}function Ic(a,b,d){I(d)||(d={});d=R({strictDi:!1},d);var c=function(){a=E(a);if(a.injector()){var c=a[0]===B.document?"document":wa(a);throw va("btstrpd",c.replace(//,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]); +b.unshift("ng");c=eb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;B&&e.test(B.name)&&(d.debugInfoEnabled=!0,B.name=B.name.replace(e,""));if(B&&!f.test(B.name))return c();B.name=B.name.replace(f,"");ga.resumeBootstrap=function(a){q(a,function(a){b.push(a)});return c()};F(ga.resumeDeferredBootstrap)&&ga.resumeDeferredBootstrap()}function we(){B.name= +"NG_ENABLE_DEBUG_INFO!"+B.name;B.location.reload()}function xe(a){a=ga.element(a).injector();if(!a)throw va("test");return a.get("$$testability")}function Jc(a,b){b=b||"_";return a.replace(ye,function(a,c){return(c?b:"")+a.toLowerCase()})}function ze(){var a;if(!Kc){var b=ub();(xa=z(b)?B.jQuery:b?B[b]:void 0)&&xa.fn.on?(E=xa,R(xa.fn,{scope:Oa.scope,isolateScope:Oa.isolateScope,controller:Oa.controller,injector:Oa.injector,inheritedData:Oa.inheritedData}),a=xa.cleanData,xa.cleanData=function(b){for(var c, +e=0,f;null!=(f=b[e]);e++)(c=xa._data(f,"events"))&&c.$destroy&&xa(f).triggerHandler("$destroy");a(b)}):E=T;ga.element=E;Kc=!0}}function vb(a,b,d){if(!a)throw va("areq",b||"?",d||"required");return a}function Pa(a,b,d){d&&K(a)&&(a=a[a.length-1]);vb(F(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Qa(a,b){if("hasOwnProperty"===a)throw va("badname",b);}function Lc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g")+c[2];for(c=c[0];c--;)d=d.lastChild;f=bb(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});return e}function Wc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function T(a){if(a instanceof T)return a;var b;H(a)&&(a=U(a),b=!0);if(!(this instanceof T)){if(b&&"<"!==a.charAt(0))throw Zb("nosel");return new T(a)}if(b){b=B.document;var d;a=(d=cg.exec(a))? +[b.createElement(d[1])]:(d=Vc(a,b))?d.childNodes:[]}Xc(this,a)}function $b(a){return a.cloneNode(!0)}function zb(a,b){b||gb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c=Fa?!1:"function"===typeof a&&/^(?:class\b|constructor\()/.test(Function.prototype.toString.call(a)+" ");return d?(c.unshift(null),new (Function.prototype.bind.apply(a, +c))):a.apply(b,c)},instantiate:function(a,b,c){var d=K(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,a))},get:d,annotate:eb.$$annotate,has:function(b){return n.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Ra([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,ma(b),!1)}),constant:d(function(a,b){Qa(a,"constant"); +n[a]=b;x[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=t.invoke(d,c);return t.invoke(b,null,{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){ga.isString(b)&&l.push(b);throw Da("unpr",l.join(" <- "));}),x={},J=h(x,function(a,b){var c=p.get(a+"Provider",b);return t.invoke(c.$get,c,void 0,a)}),t=J;n.$injectorProvider={$get:ma(J)};var s=g(a),t=J.get("$injector");t.strictDi=b;q(s,function(a){a&&t.invoke(a)});return t}function mf(){var a=!0;this.disableAutoScrolling= +function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ua(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;F(c)?c=c():Tb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Z(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=H(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b): +(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===b&&""===a||eg(function(){c.$evalAsync(g)})});return g}]}function jb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;K(a)&&(a=a.join(" "));K(b)&&(b=b.join(" "));return a+" "+b}function ng(a){H(a)&&(a=a.split(" "));var b=S();q(a,function(a){a.length&&(b[a]=!0)});return b}function Ea(a){return I(a)?a:{}}function og(a,b,d,c){function e(a){try{a.apply(null,ta.call(arguments, +1))}finally{if(J--,0===J)for(;t.length;)try{t.pop()()}catch(b){d.error(b)}}}function f(){w=null;g();h()}function g(){s=O();s=z(s)?null:s;oa(s,A)&&(s=A);A=s}function h(){if(y!==k.url()||D!==s)y=k.url(),D=s,q(L,function(a){a(k.url(),s)})}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,x={};k.isMock=!1;var J=0,t=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){J++};k.notifyWhenNoOutstandingRequests=function(a){0===J?a():t.push(a)};var s,D,y=l.href,ib= +b.find("base"),w=null,O=c.history?function(){try{return m.state}catch(a){}}:C;g();D=s;k.url=function(b,d,e){z(e)&&(e=null);l!==a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=D===e;if(y===b&&(!c.history||f))return k;var h=y&&Ja(y)===Ja(b);y=b;D=e;!c.history||h&&f?(h||(w=b),d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b,l.href!==b&&(w=b)):(m[d?"replaceState":"pushState"](e,"",b),g(),D=s);w&&(w=b);return k}return w||l.href.replace(/%27/g,"'")}; +k.state=function(){return s};var L=[],Q=!1,A=null;k.onUrlChange=function(b){if(!Q){if(c.history)E(a).on("popstate",f);E(a).on("hashchange",f);Q=!0}L.push(b);return b};k.$$applicationDestroyed=function(){E(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=ib.attr("href");return a?a.replace(/^(https?:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;J++;c=n(function(){delete x[c];e(a)},b||0);x[c]=!0;return c};k.defer.cancel=function(a){return x[a]?(delete x[a],p(a),e(C), +!0):!1}}function tf(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new og(a,c,b,d)}]}function uf(){this.$get=function(){function a(a,c){function e(a){a!==n&&(p?p===a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!==b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw N("$cacheFactory")("iid",a);var g=0,h=R({},c,{id:a}),k=S(),l=c&&c.capacity||Number.MAX_VALUE,m=S(),n=null,p=null;return b[a]={put:function(a,b){if(!z(b)){if(ll&&this.remove(p.key);return b}},get:function(a){if(l";b=pa.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function Ha(a,b){try{a.addClass(b)}catch(c){}}function $(a,b,c,d,e){a instanceof E||(a=E(a));for(var f=/\S+/,g=0,h=a.length;g").append(a).html())):c?Oa.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);$.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function Aa(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,p,y,x;if(n)for(x=Array(c.length), +m=0;mv.priority)break;if(u=v.scope)v.templateUrl||(I(u)?(X("new/isolated scope",A||y,v,G),A=v):X("new/isolated scope",A,v,G)),y=y||v;w=v.name;if(!Ga&&(v.replace&&(v.templateUrl||v.template)||v.transclude&&!v.$$tlb)){for(u=C+1;Ga=a[u++];)if(Ga.transclude&&!Ga.$$tlb||Ga.replace&& +(Ga.templateUrl||Ga.template)){Ha=!0;break}Ga=!0}!v.templateUrl&&v.controller&&(u=v.controller,x=x||S(),X("'"+w+"' controller",x[w],v,G),x[w]=v);if(u=v.transclude)if(Q=!0,v.$$tlb||(X("transclusion",t,v,G),t=v),"element"===u)J=!0,n=v.priority,M=G,G=d.$$element=E($.$$createComment(w,d[w])),b=G[0],ca(f,ta.call(M,0),b),M[0].$$parentNode=M[0].parentNode,O=fc(Ha,M,e,n,g&&g.name,{nonTlbTranscludeDirective:t});else{var ha=S();M=E($b(b)).contents();if(I(u)){M=[];var N=S(),P=S();q(u,function(a,b){var c="?"=== +a.charAt(0);a=c?a.substring(1):a;N[a]=b;ha[b]=null;P[b]=c});q(G.contents(),function(a){var b=N[Ba(ua(a))];b?(P[b]=!0,ha[b]=ha[b]||[],ha[b].push(a)):M.push(a)});q(P,function(a,b){if(!a)throw da("reqslot",b);});for(var Sa in ha)ha[Sa]&&(ha[Sa]=fc(Ha,ha[Sa],e))}G.empty();O=fc(Ha,M,e,void 0,void 0,{needsNewScope:v.$$isolateScope||v.$$newScope});O.$$slots=ha}if(v.template)if(D=!0,X("template",L,v,G),L=v,u=F(v.template)?v.template(G,d):v.template,u=za(u),v.replace){g=v;M=Yb.test(u)?hd(ba(v.templateNamespace, +U(u))):[];b=M[0];if(1!==M.length||1!==b.nodeType)throw da("tplrt",w,"");ca(f,G,b);Aa={$attr:{}};u=dc(b,[],Aa);var V=a.splice(C+1,a.length-(C+1));(A||y)&&W(u,A,y);a=a.concat(u).concat(V);Z(d,Aa);Aa=a.length}else G.html(u);if(v.templateUrl)D=!0,X("template",L,v,G),L=v,v.replace&&(g=v),p=aa(a.splice(C,a.length-C),G,d,f,Q&&O,h,k,{controllerDirectives:x,newScopeDirective:y!==v&&y,newIsolateScopeDirective:A,templateDirective:L,nonTlbTranscludeDirective:t}),Aa=a.length;else if(v.compile)try{r=v.compile(G, +d,O);var ec=v.$$originalDirective||v;F(r)?m(null,cb(ec,r),B,H):r&&m(cb(ec,r.pre),cb(ec,r.post),B,H)}catch(Y){c(Y,wa(G))}v.terminal&&(p.terminal=!0,n=Math.max(n,v.priority))}p.scope=y&&!0===y.scope;p.transcludeOnThisElement=Q;p.templateOnThisElement=D;p.transclude=O;l.hasElementTranscludeDirective=J;return p}function kb(a,b,c,d){var e;if(H(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e= +g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw da("ctreq",b,a);}else if(K(b))for(e=[],g=0,f=b.length;gp.priority)&&-1!==p.restrict.indexOf(g)){l&&(p=Ub(p,{$$start:l,$$end:m}));if(!p.$$bindings){var x=p,v=p,A=p.name,t={isolateScope:null,bindToController:null};I(v.scope)&&(!0===v.bindToController?(t.bindToController=d(v.scope,A,!0),t.isolateScope={}):t.isolateScope=d(v.scope,A,!1));I(v.bindToController)&& +(t.bindToController=d(v.bindToController,A,!0));if(I(t.bindToController)){var L=v.controller,G=v.controllerAs;if(!L)throw da("noctrl",A);if(!dd(L,G))throw da("noident",A);}var Q=x.$$bindings=t;I(Q.isolateScope)&&(p.$$isolateBindings=Q.isolateScope)}b.push(p);k=p}}catch(J){c(J)}}return k}function Y(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function ia(a,b){if("srcdoc"===b)return A.HTML;var c=ua(a);if("src"===b||"ngSrc"===b){if(-1===["img","video","audio","source","track"].indexOf(c))return A.RESOURCE_URL}else if("xlinkHref"=== +b||"form"===c&&"action"===b)return A.RESOURCE_URL}function ma(a,c,d,e,f){var g=ia(a,e);f=k[e]||f;var h=b(d,!0,g,f);if(h){if("multiple"===e&&"select"===ua(a))throw da("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,c,k){c=k.$$observers||(k.$$observers=S());if(m.test(e))throw da("nodomevents");var l=k[e];l!==d&&(h=l&&b(l,!0,g,f),d=l);h&&(k[e]=h(a),(c[e]||(c[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||a).$watch(h,function(a,b){"class"===e&&a!==b?k.$updateClass(a, +b):k.$set(e,a)}))}}}})}}function ca(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;)8===a[b].nodeType&&pg.call(a,b,1);return a}function dd(a,b){if(b&&H(b))return b;if(H(a)){var d=kd.exec(a);if(d)return d[3]}}function vf(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Qa(b,"controller");I(b)?R(a, +b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!I(a.$scope))throw N("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;h=!0===h;k&&H(k)&&(n=k);if(H(f)){k=f.match(kd);if(!k)throw qg("ctrlfmt",f);m=k[1];n=n||k[3];f=a.hasOwnProperty(m)?a[m]:Lc(g.$scope,m,!0)||(b?Lc(c,m,!0):void 0);Pa(f,m,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),R(function(){var a= +d.invoke(f,l,g,m);a!==l&&(I(a)||F(a))&&(l=a,n&&e(g,n,l,m||f.name));return l},{instance:l,identifier:n});l=d.instantiate(f,g,m);n&&e(g,n,l,m||f.name);return l}}]}function wf(){this.$get=["$window",function(a){return E(a.document)}]}function xf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function hc(a){return I(a)?ba(a)?a.toISOString():db(a):a}function Cf(){this.$get=function(){return function(a){if(!a)return"";var b=[];Ac(a,function(a,c){null===a||z(a)||(K(a)? +q(a,function(a){b.push(ca(c)+"="+ca(hc(a)))}):b.push(ca(c)+"="+ca(hc(a))))});return b.join("&")}}}function Df(){this.$get=function(){return function(a){function b(a,e,f){null===a||z(a)||(K(a)?q(a,function(a,c){b(a,e+"["+(I(a)?c:"")+"]")}):I(a)&&!ba(a)?Ac(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ca(e)+"="+ca(hc(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function ic(a,b){if(H(a)){var d=a.replace(rg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(ld))|| +(c=(c=d.match(sg))&&tg[c[0]].test(d));c&&(a=Ec(d))}}return a}function md(a){var b=S(),d;H(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=P(U(a.substr(0,d)));a=U(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):I(a)&&q(a,function(a,d){var f=P(d),g=U(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function nd(a){var b;return function(d){b||(b=md(a));return d?(d=b[P(d)],void 0===d&&(d=null),d):b}}function od(a,b,d,c){if(F(c))return c(a,b,d);q(c,function(c){a=c(a,b,d)});return a}function Bf(){var a=this.defaults= +{transformResponse:[ic],transformRequest:[function(a){return I(a)&&"[object File]"!==na.call(a)&&"[object Blob]"!==na.call(a)&&"[object FormData]"!==na.call(a)?db(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia(jc),put:ia(jc),patch:ia(jc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return u(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return u(a)?(d=!!a, +this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a,b){for(var d=0,e=b.length;da?b:k.reject(b)}if(!I(b))throw N("$http")("badreq", +b);if(!H(b.url))throw N("$http")("badreq",b.url);var g=R({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);g.headers=function(b){var c=a.headers,d=R({},b.headers),f,g,h,c=R({},c.common,c[P(b.method)]);a:for(f in c){g=P(f);for(h in d)if(P(h)===g)continue a;d[f]=c[f]}return e(d,ia(b))}(b);g.method=xb(g.method);g.paramSerializer=H(g.paramSerializer)?l.get(g.paramSerializer):g.paramSerializer;var h=[],m=[],p=k.when(g);q(J,function(a){(a.request|| +a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&m.push(a.response,a.responseError)});p=c(p,h);p=p.then(function(b){var c=b.headers,d=od(b.data,nd(c),void 0,b.transformRequest);z(d)&&q(c,function(a,b){"content-type"===P(b)&&delete c[b]});z(b.withCredentials)&&!z(a.withCredentials)&&(b.withCredentials=a.withCredentials);return n(b,d).then(f,f)});p=c(p,m);d?(p.success=function(a){Pa(a,"fn");p.then(function(b){a(b.data,b.status,b.headers,g)});return p},p.error=function(a){Pa(a, +"fn");p.then(null,function(b){a(b.data,b.status,b.headers,g)});return p}):(p.success=pd("success"),p.error=pd("error"));return p}function n(c,d){function g(a){if(a){var c={};q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){n(c,a,d,e)}A&&(200<=a&&300>a?A.put(M,[a,c,md(d),e]):A.remove(M));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function n(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?L.resolve:L.reject)({data:a, +status:b,headers:nd(d),config:c,statusText:e})}function J(a){n(a.data,a.status,ia(a.headers()),a.statusText)}function O(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var L=k.defer(),Q=L.promise,A,G,v=c.headers,M=p(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);Q.then(O,O);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(A=I(c.cache)?c.cache:I(a.cache)?a.cache:x);A&&(G=A.get(M),u(G)?G&&F(G.then)?G.then(J,J):K(G)?n(G[1],G[0],ia(G[2]), +G[3]):n(G,200,{},"OK"):A.put(M,Q));z(G)&&((G=qd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(v[c.xsrfHeaderName||a.xsrfHeaderName]=G),e(c.method,M,d,l,v,c.timeout,c.withCredentials,c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return Q}function p(a,b){0=l&&(y.resolve(s),t(q.$$intervalId),delete g[q.$$intervalId]);D||a.$apply()},k);g[q.$$intervalId]=y;return q}var g={};f.cancel=function(a){return a&&a.$$intervalId in +g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function kc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=tb(a[b]);return a.join("/")}function rd(a,b){var d=Ca(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=aa(d.port)||vg[d.protocol]||null}function sd(a,b){if(wg.test(a))throw lb("badpath",a);var d="/"!==a.charAt(0);d&&(a="/"+a);var c=Ca(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1): +c.pathname);b.$$search=Hc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!==b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function ka(a,b){if(0===b.lastIndexOf(a,0))return b.substr(a.length)}function Ja(a){var b=a.indexOf("#");return-1===b?a:a.substr(0,b)}function mb(a){return a.replace(/(#.+)|#$/,"$1")}function lc(a,b,d){this.$$html5=!0;d=d||"";rd(a,this);this.$$parse=function(a){var d=ka(b,a);if(!H(d))throw lb("ipthprfx",a,b);sd(d,this);this.$$path||(this.$$path="/");this.$$compose()}; +this.$$compose=function(){var a=Wb(this.$$search),d=this.$$hash?"#"+tb(this.$$hash):"";this.$$url=kc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;u(f=ka(a,c))?(g=f,g=d&&u(f=ka(d,f))?b+(ka("/",f)||f):a+g):u(f=ka(b,c))?g=b+f:b===c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function mc(a,b,d){rd(a,this);this.$$parse=function(c){var e=ka(a,c)||ka(b,c),f;z(e)||"#"!==e.charAt(0)?this.$$html5?f= +e:(f="",z(e)&&(a=c,this.replace())):(f=ka(d,e),z(f)&&(f=e));sd(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.lastIndexOf(e,0)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Wb(this.$$search),e=this.$$hash?"#"+tb(this.$$hash):"";this.$$url=kc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ja(a)===Ja(b)?(this.$$parse(b),!0):!1}}function td(a,b,d){this.$$html5= +!0;mc.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a===Ja(c)?f=c:(g=ka(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Wb(this.$$search),e=this.$$hash?"#"+tb(this.$$hash):"";this.$$url=kc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Jb(a){return function(){return this[a]}}function ud(a,b){return function(d){if(z(d))return this[a];this[a]=b(d);this.$$compose();return this}} +function Hf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return u(b)?(a=b,this):a};this.html5Mode=function(a){return Ia(a)?(b.enabled=a,this):I(a)?(Ia(a.enabled)&&(b.enabled=a.enabled),Ia(a.requireBase)&&(b.requireBase=a.requireBase),Ia(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e), +l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var n=c.url(),p;if(b.enabled){if(!m&&b.requireBase)throw lb("nobase");p=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(m||"/");m=e.history?lc:td}else p=Ja(n),m=mc;var x=p.substr(0,Ja(p).lastIndexOf("/")+1);l=new m(p,x,"#"+a);l.$$parseLinkUrl(n,n);l.$$state=c.state();var J=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&& +2!==a.which&&2!==a.button){for(var e=E(a.target);"a"!==ua(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");I(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ca(h.animVal).href);J.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!==c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});mb(l.absUrl())!==mb(n)&&c.url(l.absUrl(),!0);var t=!0;c.onUrlChange(function(a, +b){z(ka(x,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=mb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(t=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=mb(c.url()),b=mb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(t||m)t=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart", +b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function If(){var a=!0,b=this;this.debugEnabled=function(b){return u(b)?(a=b,this):a};this.$get=["$window",function(d){function c(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=d.console|| +{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(c(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(){a&&c.apply(b,arguments)}}()}}]}function Ta(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw ea("isecfld",b);return a}function xg(a){return a+ +""}function qa(a,b){if(a){if(a.constructor===a)throw ea("isecfn",b);if(a.window===a)throw ea("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ea("isecdom",b);if(a===Object)throw ea("isecobj",b);}return a}function vd(a,b){if(a){if(a.constructor===a)throw ea("isecfn",b);if(a===yg||a===zg||a===Ag)throw ea("isecff",b);}}function Kb(a,b){if(a&&(a===wd||a===xd||a===yd||a===zd||a===Ad||a===Bd||a===Bg||a===Cg||a===Lb||a===Dg||a===Cd||a===Eg))throw ea("isecaf",b);}function Fg(a,b){return"undefined"!== +typeof a?a:b}function Dd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function W(a,b){var d,c,e;switch(a.type){case r.Program:d=!0;q(a.body,function(a){W(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case r.Literal:a.constant=!0;a.toWatch=[];break;case r.UnaryExpression:W(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case r.BinaryExpression:W(a.left,b);W(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch); +break;case r.LogicalExpression:W(a.left,b);W(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case r.ConditionalExpression:W(a.test,b);W(a.alternate,b);W(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case r.Identifier:a.constant=!1;a.toWatch=[a];break;case r.MemberExpression:W(a.object,b);a.computed&&W(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch= +[a];break;case r.CallExpression:d=e=a.filter?!b(a.callee.name).$stateful:!1;c=[];q(a.arguments,function(a){W(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=e?c:[a];break;case r.AssignmentExpression:W(a.left,b);W(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case r.ArrayExpression:d=!0;c=[];q(a.elements,function(a){W(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case r.ObjectExpression:d= +!0;c=[];q(a.properties,function(a){W(a.value,b);d=d&&a.value.constant&&!a.computed;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case r.ThisExpression:a.constant=!1;a.toWatch=[];break;case r.LocalsExpression:a.constant=!1,a.toWatch=[]}}function Ed(a){if(1===a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function Fd(a){return a.type===r.Identifier||a.type===r.MemberExpression}function Gd(a){if(1===a.body.length&&Fd(a.body[0].expression))return{type:r.AssignmentExpression, +left:a.body[0].expression,right:{type:r.NGValueParameter},operator:"="}}function Hd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===r.Literal||a.body[0].expression.type===r.ArrayExpression||a.body[0].expression.type===r.ObjectExpression)}function Id(a,b){this.astBuilder=a;this.$filter=b}function Jd(a,b){this.astBuilder=a;this.$filter=b}function Mb(a){return"constructor"===a}function nc(a){return F(a.valueOf)?a.valueOf():Gg.call(a)}function Jf(){var a=S(),b=S(),d={"true":!0, +"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns=function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,J;e=e||D;switch(typeof c){case "string":J=c=c.trim();var A=e?b:a;g=A[J];if(!g){":"===c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?s:t;var G=new oc(g);g=(new pc(G,f,g)).parse(c);g.constant?g.$$watchDelegate=p:k?g.$$watchDelegate=g.literal?n:m:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));A[J]= +g}return x(g,d);case "function":return x(c,d);default:return x(C,d)}}function h(a){function b(c,d,e,f){var g=D;D=!0;try{return a(c,d,e,f)}finally{D=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;fa)for(b in l++,f)sa.call(e,b)||(s--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1q&&(z=4-q,u[z]||(u[z]=[]),u[z].push({msg:F(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){s=!1;break a}}catch(E){f(E)}if(!(p=w.$$watchersCount&&w.$$childHead||w!==this&&w.$$nextSibling))for(;w!==this&&!(p=w.$$nextSibling);)w=w.$parent}while(w=p);if((s||y.length)&&!q--)throw D.$$phase=null,d("infdig",b,u);}while(s|| +y.length);for(D.$$phase=null;OFa)throw fa("iequirks");var c=ia(la);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Za);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs, +f=c.getTrusted,g=c.trustAs;q(la,function(a,b){var d=P(b);c[fb("parse_as_"+d)]=function(b){return e(a,b)};c[fb("get_trusted_"+d)]=function(b){return f(a,b)};c[fb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function Pf(){this.$get=["$window","$document",function(a,b){var d={},c=!(a.chrome&&(a.chrome.app&&a.chrome.app.runtime||!a.chrome.app&&a.chrome.runtime&&a.chrome.runtime.id))&&a.history&&a.history.pushState,e=aa((/android (\d+)/.exec(P((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator|| +{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,m=!1,n=!1;if(l){for(var p in l)if(m=k.exec(p)){h=m[0];h=h[0].toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");m=!!("transition"in l||h+"Transition"in l);n=!!("animation"in l||h+"Animation"in l);!e||m&&n||(m=H(l.webkitTransition),n=H(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===a&&11>=Fa)return!1;if(z(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]}, +csp:ya(),vendorPrefix:h,transitions:m,animations:n,android:e}}]}function Rf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;if(!H(g)||z(b.get(g)))g=e.getTrustedResourceUrl(g);var k=d.defaults&&d.defaults.transformResponse;K(k)?k=k.filter(function(a){return a!==ic}):k===ic&&(k=null);return d.get(g,R({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g, +a.data);return a.data},function(a){if(!h)throw Ig("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Sf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];q(a,function(a){var c=ga.element(a).data("$binding");c&&q(c,function(c){d?(new RegExp("(^|\\s)"+Ld(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!==c.indexOf(b)&&g.push(a)})});return g},findModels:function(a, +b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c= +a.length);for(e=0;a.charAt(e)===rc;e++);if(e===(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)===rc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Vd&&(d=d.splice(0,Vd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function Qg(a,b,d,c){var e=a.d,f=e.length-a.i;b=z(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0d-1){for(c=0;c>d;c--)e.unshift(0), +a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;fh;)k.unshift(0),h++;0=b.lgSize&&h.unshift(k.splice(-b.lgSize, +k.length).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize,k.length).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Nb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length-d)f+=d;0===f&&-12===d&&(f=12);return Nb(f,b,c,e)}}function nb(a, +b,d){return function(c,e){var f=c["get"+a](),g=xb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Wd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Xd(a){return function(b){var d=Wd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Nb(b,a)}}function sc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Qd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0, +h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=aa(b[9]+b[10]),g=aa(b[9]+b[11]));h.call(a,aa(b[1]),aa(b[2])-1,aa(b[3]));f=aa(b[4]||0)-f;g=aa(b[5]||0)-g;h=aa(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;H(c)&&(c=Rg.test(c)?aa(c):b(c));Z(c)&& +(c=new Date(c));if(!ba(c)||!isFinite(c.getTime()))return c;for(;d;)(l=Sg.exec(d))?(h=bb(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=Fc(f,m),c=Vb(c,f,!0));q(h,function(b){k=Tg[b];g+=k?k(c,a.DATETIME_FORMATS,m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Kg(){return function(a,b){z(b)&&(b=2);return db(a,b)}}function Lg(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):aa(b);if(X(b))return a;Z(a)&&(a=a.toString());if(!ra(a))return a; +d=!d||isNaN(d)?0:aa(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?tc(a,d,d+b):0===d?tc(a,b,a.length):tc(a,Math.max(0,d+b),d)}}function tc(a,b,d){return H(a)?a.slice(b,d):ta.call(a,b,d)}function Sd(a){function b(b){return b.map(function(b){var c=1,d=Za;if(F(b))d=b;else if(H(b)){if("+"===b.charAt(0)||"-"===b.charAt(0))c="-"===b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(d=a(b),d.constant))var e=d(),d=function(a){return a[e]}}return{get:d,descending:c}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0; +default:return!1}}function c(a,b){var c=0,d=a.type,k=b.type;if(d===k){var k=a.value,l=b.value;"string"===d?(k=k.toLowerCase(),l=l.toLowerCase()):"object"===d&&(I(k)&&(k=a.index),I(l)&&(l=b.index));k!==l&&(c=kb||37<=b&&40>=b|| +m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",l);if($d[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Qb(a,b){return function(d,c){var e,f;if(ba(d))return d;if(H(d)){'"'===d.charAt(0)&&'"'===d.charAt(d.length- +1)&&(d=d.substring(1,d.length-1));if(Ug.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(a,c){c=t};g.$observe("min", +function(a){t=p(a);h.$validate()})}if(u(g.max)||g.ngMax){var s;h.$validators.max=function(a){return!n(a)||z(s)||d(a)<=s};g.$observe("max",function(a){s=p(a);h.$validate()})}}}function vc(a,b,d,c){(c.$$hasNativeValidators=I(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?void 0:a})}function ae(a){a.$$parserName="number";a.$parsers.push(function(b){if(a.$isEmpty(b))return null;if(Vg.test(b))return parseFloat(b)});a.$formatters.push(function(b){if(!a.$isEmpty(b)){if(!Z(b))throw pb("numfmt", +b);b=b.toString()}return b})}function qb(a){u(a)&&!Z(a)&&(a=parseFloat(a));return X(a)?void 0:a}function wc(a){var b=a.toString(),d=b.indexOf(".");return-1===d?-1a&&(a=/e-(\d+)$/.exec(b))?Number(a[1]):0:b.length-d-1}function be(a,b,d,c,e){if(u(c)){a=a(c);if(!a.constant)throw pb("constexpr",d,c);return a(b)}return e}function xc(a,b){a="ngClass"+a;return["$animate",function(d){function c(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Yb=/<|&#?\w+;/,ag=/<([\w:-]+)/,bg=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ja={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"", +""]};ja.optgroup=ja.option;ja.tbody=ja.tfoot=ja.colgroup=ja.caption=ja.thead;ja.th=ja.td;var ig=B.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Oa=T.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===B.document.readyState?B.setTimeout(b):(this.on("DOMContentLoaded",b),T(B).on("load",b))},toString:function(){var a=[];q(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?E(this[a]):E(this[this.length+ +a])},length:0,push:Xg,sort:[].sort,splice:[].splice},Hb={};q("multiple selected checked disabled readOnly required open".split(" "),function(a){Hb[P(a)]=a});var bd={};q("input select option textarea button form details".split(" "),function(a){bd[a]=!0});var jd={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:ac,removeData:gb,hasData:function(a){for(var b in hb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b/, +lg=/^[^\(]*\(\s*([^\)]*)\)/m,Yg=/,/,Zg=/^\s*(_?)(\S+?)\1\s*$/,jg=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Da=N("$injector");eb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw H(d)&&d||(d=a.name||mg(a)),Da("strictdi",d);b=cd(a);q(b[1].split(Yg),function(a){a.replace(Zg,function(a,b,d){c.push(d)})})}a.$inject=c}}else K(a)?(b=a.length-1,Pa(a[b],"fn"),c=a.slice(0,b)):Pa(a,"fn",!0);return c};var fe=N("$animate"),pf=function(){this.$get=C},qf=function(){var a= +new Ra,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=H(b)?b.split(" "):K(b)?b:[],q(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){q(b,function(b){var c=a.get(b);if(c){var d=ng(b.attr("class")),e="",f="";q(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});q(b,function(a){e&&Eb(a,e);f&&Db(a,f)});a.remove(b)}});b.length=0}return{enabled:C,on:C,off:C,pin:C,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from); +k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},nf=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw fe("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&& +(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw fe("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h <= >= && || ! = |".split(" "),function(a){Rb[a]=!0});var ch={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},oc=function(a){this.options=a}; +oc.prototype={constructor:oc,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},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,b)||this.isNumber(a)}, +codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d=a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=u(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ea("lexerr",a,b,this.text); +},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:r.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(), +b;b=this.expect("+","-");)a={type:r.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:r.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:r.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.selfReferential.hasOwnProperty(this.peek().text)?a=pa(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:r.Literal,value:this.options.literals[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 b;b=this.expect("(","[",".");)"("===b.text?(a={type:r.CallExpression, +callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:r.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:r.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:r.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!== +this.peekToken().text){do a.push(this.filterChain());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:r.Identifier,name:a.text}},constant:function(){return{type:r.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:r.ArrayExpression,elements:a}}, +object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:r.Property,kind:"init"};this.peek().constant?(b.key=this.constant(),b.computed=!1,this.consume(":"),b.value=this.expression()):this.peek().identifier?(b.key=this.identifier(),b.computed=!1,this.peek(":")?(this.consume(":"),b.value=this.expression()):b.value=b.key):this.peek("[")?(this.consume("["),b.key=this.expression(),this.consume("]"),b.computed=!0,this.consume(":"),b.value=this.expression()):this.throwError("invalid key", +this.peek());a.push(b)}while(this.expect(","))}this.consume("}");return{type:r.ObjectExpression,properties:a}},throwError:function(a,b){throw ea("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw ea("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ea("ueoe",this.text);return this.tokens[0]},peek:function(a,b, +d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},selfReferential:{"this":{type:r.ThisExpression},$locals:{type:r.LocalsExpression}}};Id.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}}, +assign:{vars:[],body:[],own:{}},inputs:[]};W(c,d.$filter);var e="",f;this.stage="assign";if(f=Gd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign","s,v,l");f=Ed(c.body);d.stage="inputs";q(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+ +" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext","ifDefined","plus","text",e))(this.$filter,Ta,qa,vd,xg,Kb,Fg,Dd,a);this.state=this.stage=void 0;e.literal=Hd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;q(b,function(b){a.push("var "+ +b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;q(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});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,b,d,c,e,f){var g,h,k=this,l,m,n;c=c||C;if(!f&&u(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case r.Program:q(a.body,function(b,c){k.recurse(b.expression,void 0,void 0,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case r.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case r.UnaryExpression:this.recurse(a.argument,void 0,void 0, +function(a){h=a});m=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,m);c(m);break;case r.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){h=a});m="+"===a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case r.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b)); +c(b);break;case r.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case r.Identifier:b=b||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);Ta(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s", +a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Mb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case r.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,void 0,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h), +k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Ta(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Mb(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}}, +function(){k.assign(b,"undefined")});c(b)},!!e);break;case r.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],q(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+l.join(",")+")",k.assign(b,m),c(b)):(h=k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);q(a.arguments,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context), +m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},function(){k.assign(b,"undefined")});c(b)}));break;case r.AssignmentExpression:h=this.nextId();g={};if(!Fd(a.left))throw ea("lval");this.recurse(a.left,void 0,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+ +h;k.assign(b,m);c(b||m)})},1);break;case r.ArrayExpression:l=[];q(a.elements,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case r.ObjectExpression:l=[];n=!1;q(a.properties,function(a){a.computed&&(n=!0)});n?(b=b||this.nextId(),this.assign(b,"{}"),q(a.properties,function(a){a.computed?(g=k.nextId(),k.recurse(a.key,g)):g=a.key.type===r.Identifier?a.key.name:""+a.key.value;h=k.nextId();k.recurse(a.value,h);k.assign(k.member(b,g, +a.computed),h)})):(q(a.properties,function(b){k.recurse(b.value,a.constant?void 0:k.nextId(),void 0,function(a){l.push(k.escape(b.key.type===r.Identifier?b.key.name:""+b.key.value)+":"+a)})}),m="{"+l.join(",")+"}",this.assign(b,m));c(b||m);break;case r.ThisExpression:this.assign(b,"s");c("s");break;case r.LocalsExpression:this.assign(b,"l");c("l");break;case r.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]= +this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body; +c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(b)?a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},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),";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"}, +getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(H(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+ +"'";if(Z(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 ea("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};Jd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;W(c,d.$filter);var e,f;if(e=Gd(c))f=this.recurse(e);e=Ed(c.body); +var g;e&&(g=[],q(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];q(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?C:1===c.body.length?h[0]:function(a,b){var c;q(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=Hd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case r.Literal:return this.value(a.value, +b);case r.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case r.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case r.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case r.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case r.Identifier:return Ta(a.name,f.expression),f.identifier(a.name, +f.expensiveChecks||Mb(a.name),b,d,f.expression);case r.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Ta(a.property.name,f.expression),e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case r.CallExpression:return g=[],q(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter? +function(a,c,d,f){for(var n=[],p=0;p":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c= +a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,name:void 0,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:void 0;b&&qa(g,e);return d?{context:f,name:a, +value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m+="",Ta(m,e),c&&1!==c&&(Kb(l),l&&!l[m]&&(l[m]={})),n=l[m],qa(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Kb(g),g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:void 0;(d||Mb(b))&&qa(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var pc= +function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new r(a,d);this.astCompiler=d.csp?new Jd(this.ast,b):new Id(this.ast,b)};pc.prototype={constructor:pc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var fa=N("$sce"),la={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Ig=N("$compile"),V=B.document.createElement("a"),Nd=Ca(B.location.href);Od.$inject=["$document"];Tc.$inject=["$provide"];var Vd=22,Ud=".",rc="0";Pd.$inject=["$locale"]; +Rd.$inject=["$locale"];var Tg={yyyy:Y("FullYear",4,0,!1,!0),yy:Y("FullYear",2,0,!0,!0),y:Y("FullYear",1,0,!1,!0),MMMM:nb("Month"),MMM:nb("Month",!0),MM:Y("Month",2,1),M:Y("Month",1,1),LLLL:nb("Month",!1,!0),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:nb("Day"),EEE:nb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a, +b,d){a=-1*d;return a=(0<=a?"+":"")+(Nb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},Sg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,Rg=/^\-?\d+$/;Qd.$inject=["$locale"];var Mg=ma(P),Ng=ma(xb);Sd.$inject=["$parse"];var Ee=ma({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e= +"[object SVGAnimatedString]"===na.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),yb={};q(Hb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!==a){var c=Ba("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b,e)});yb[c]=function(){return{restrict:"A",priority:100,link:e}}}});q(jd,function(a,b){yb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"===e.ngPattern.charAt(0)&& +(c=e.ngPattern.match(Wg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});q(["src","srcset","href"],function(a){var b=Ba("ng-"+a);yb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===na.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Fa&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Ob={$addControl:C,$$renameControl:function(a, +b){a.$name=b},$removeControl:C,$setValidity:C,$setDirty:C,$setPristine:C,$setSubmitted:C};Yd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var ge=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||C}return{name:"form",restrict:a?"EAC":"E",require:["form","^^?form"],controller:Yd,compile:function(d,f){d.addClass(Va).addClass(rb);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in +e)){var p=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",p,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",p,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var q=g?c(n.$name):C;g&&(q(a,n),e.$observe(g,function(b){n.$name!==b&&(q(a,void 0),n.$$parentForm.$$renameControl(n,b),q=c(n.$name),q(a,n))}));d.on("$destroy",function(){n.$$parentForm.$removeControl(n);q(a,void 0);R(n,Ob)})}}}}}]},Fe= +ge(),Re=ge(!0),Ug=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,dh=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,eh=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,Vg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,he=/^(\d{4,})-(\d{2})-(\d{2})$/, +ie=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,yc=/^(\d{4,})-W(\d\d)$/,je=/^(\d{4,})-(\d\d)$/,ke=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,$d=S();q(["date","datetime-local","month","time","week"],function(a){$d[a]=!0});var le={text:function(a,b,d,c,e,f){Wa(a,b,d,c,e,f);uc(c)},date:ob("date",he,Qb(he,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":ob("datetimelocal",ie,Qb(ie,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:ob("time",ke,Qb(ke,["HH","mm", +"ss","sss"]),"HH:mm:ss.sss"),week:ob("week",yc,function(a,b){if(ba(a))return a;if(H(a)){yc.lastIndex=0;var d=yc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Wd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:ob("month",je,Qb(je,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){vc(a,b,d,c);Wa(a,b,d,c,e,f);ae(c);var g,h;if(u(d.min)||d.ngMin)c.$validators.min=function(a){return c.$isEmpty(a)|| +z(g)||a>=g},d.$observe("min",function(a){g=qb(a);c.$validate()});if(u(d.max)||d.ngMax)c.$validators.max=function(a){return c.$isEmpty(a)||z(h)||a<=h},d.$observe("max",function(a){h=qb(a);c.$validate()})},url:function(a,b,d,c,e,f){Wa(a,b,d,c,e,f);uc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||dh.test(d)}},email:function(a,b,d,c,e,f){Wa(a,b,d,c,e,f);uc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||eh.test(d)}}, +radio:function(a,b,d,c){z(d.name)&&b.attr("name",++sb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,a&&a.type)});c.$render=function(){b[0].checked=d.value===c.$viewValue};d.$observe("value",c.$render)},range:function(a,b,d,c,e,f){function g(a,c){b.attr(a,d[a]);d.$observe(a,c)}function h(a){n=qb(a);X(c.$modelValue)||(m?(a=b.val(),n>a&&(a=n,b.val(a)),c.$setViewValue(a)):c.$validate())}function k(a){p=qb(a);X(c.$modelValue)||(m?(a=b.val(),p=n}, +g("min",h));e&&(c.$validators.max=m?function(){return!0}:function(a,b){return c.$isEmpty(b)||z(p)||b<=p},g("max",k));f&&(c.$validators.step=m?function(){return!r.stepMismatch}:function(a,b){var d;if(!(d=c.$isEmpty(b)||z(q))){d=n||0;var e=q,f=Number(b);if((f|0)!==f||(d|0)!==d||(e|0)!==e){var g=Math.max(wc(f),wc(d),wc(e)),g=Math.pow(10,g),f=f*g;d*=g;e*=g}d=0===(f-d)%e}return d},g("step",l))},checkbox:function(a,b,d,c,e,f,g,h){var k=be(h,a,"ngTrueValue",d.ngTrueValue,!0),l=be(h,a,"ngFalseValue",d.ngFalseValue, +!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return oa(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:C,button:C,submit:C,reset:C,file:C},Nc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){if(h[0]){var k=P(g.type);"range"!==k||g.hasOwnProperty("ngInputRange")||(k="text"); +(le[k]||le.text)(e,f,g,h[0],b,a,d,c)}}}}}],fh=/^(true|false|\d+)$/,jf=function(){return{restrict:"A",priority:100,compile:function(a,b){return fh.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},Je=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=z(a)?"":a})}}}}],Le= +["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=z(a)?"":a})}}}}],Ke=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(b){return a.valueOf(b)});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml); +b.$watch(g,function(){var d=f(b);c.html(a.getTrustedHtml(d)||"")})}}}}],hf=ma({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Me=xc("",!0),Oe=xc("Odd",0),Ne=xc("Even",1),Pe=Ua({compile:function(a,b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),Qe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Sc={},gh={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), +function(a){var b=Ba("ng-"+a);Sc[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};gh[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Te=["$animate","$compile",function(a,b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]= +b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=wb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Ue=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ga.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,p){var q=0,r,t,s,D=function(){t&&(t.remove(),t=null);r&& +(r.$destroy(),r=null);s&&(d.leave(s).then(function(){t=null}),t=s,s=null)};c.$watch(f,function(f){var m=function(){!u(h)||h&&!c.$eval(h)||b()},w=++q;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&w===q){var b=c.$new();n.template=a;a=p(b,function(a){D();d.enter(a,null,e).then(m)});r=b;s=a;r.$emit("$includeContentLoaded",f);c.$eval(g)}},function(){c.$$destroyed||w!==q||(D(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(D(),n.template=null)})}}}}],lf=["$compile",function(a){return{restrict:"ECA", +priority:-400,require:"ngInclude",link:function(b,d,c,e){na.call(d[0]).match(/SVG/)?(d.empty(),a(Vc(e.template,B.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Ve=Ua({priority:450,compile:function(){return{pre:function(a,b,d){a.$eval(d.ngInit)}}}}),gf=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?U(e):e;c.$parsers.push(function(a){if(!z(a)){var b= +[];a&&q(a.split(g),function(a){a&&b.push(f?U(a):a)});return b}});c.$formatters.push(function(a){if(K(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},rb="ng-valid",ce="ng-invalid",Va="ng-pristine",Pb="ng-dirty",ee="ng-pending",pb=N("ngModel"),hh=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;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=void 0;this.$name=l(d.name||"",!1)(a);this.$$parentForm=Ob;var m=e(d.ngModel),n=m.assign,p=m,r=n,J=null,t,s=this;this.$$setOptions=function(a){if((s.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");p=function(a){var c=m(a);F(c)&&(c=b(a)); +return c};r=function(a,b){F(m(a))?f(a,{$$$p:b}):n(a,b)}}else if(!m.assign)throw pb("nonassign",d.ngModel,wa(c));};this.$render=C;this.$isEmpty=function(a){return z(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){s.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var D=0;Zd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){s.$dirty= +!1;s.$pristine=!0;f.removeClass(c,Pb);f.addClass(c,Va)};this.$setDirty=function(){s.$dirty=!0;s.$pristine=!1;f.removeClass(c,Va);f.addClass(c,Pb);s.$$parentForm.$setDirty()};this.$setUntouched=function(){s.$touched=!1;s.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};this.$setTouched=function(){s.$touched=!0;s.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(J);s.$viewValue=s.$$lastCommittedViewValue;s.$render()};this.$validate=function(){if(!X(s.$modelValue)){var a= +s.$$rawModelValue,b=s.$valid,c=s.$modelValue,d=s.$options&&s.$options.allowInvalid;s.$$runValidators(a,s.$$lastCommittedViewValue,function(e){d||b===e||(s.$modelValue=e?a:void 0,s.$modelValue!==c&&s.$$writeModelToScope())})}};this.$$runValidators=function(a,b,c){function d(){var c=!0;q(s.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(q(s.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;q(s.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!F(h.then))throw pb("nopromise", +h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},C):g(!0)}function f(a,b){h===D&&s.$setValidity(a,b)}function g(a){h===D&&c(a)}D++;var h=D;(function(){var a=s.$$parserName||"parse";if(z(t))f(a,null);else return t||(q(s.$validators,function(a,b){f(b,null)}),q(s.$asyncValidators,function(a,b){f(b,null)})),f(a,t),t;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=s.$viewValue;g.cancel(J);if(s.$$lastCommittedViewValue!== +a||""===a&&s.$$hasNativeValidators)s.$$updateEmptyClasses(a),s.$$lastCommittedViewValue=a,s.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=s.$$lastCommittedViewValue;if(t=z(b)?void 0:!0)for(var c=0;ce||c.$isEmpty(b)||b.length<=e}}}}},Qc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=aa(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};B.angular.bootstrap?B.console&&console.log("WARNING: Tried to load angular more than once."):(ze(),Be(ga),ga.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf("."); +return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "), +WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a, +c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),E(B.document).ready(function(){ue(B.document,Ic)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +//# sourceMappingURL=angular.min.js.map diff --git a/popup/lib/angular.min.js.map b/popup/lib/angular.min.js.map new file mode 100644 index 0000000..d2057cf --- /dev/null +++ b/popup/lib/angular.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular.min.js", +"lineCount":322, +"mappings":"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", +"sources":["angular.js"], +"names":["window","minErr","isArrayLike","obj","isWindow","isArray","isString","jqLite","length","Object","isNumber","Array","item","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","baseExtend","dst","objs","deep","h","$$hashKey","ii","isObject","j","jj","src","isDate","Date","valueOf","isRegExp","RegExp","nodeName","cloneNode","isElement","clone","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","valueRef","hasCustomToString","toString","isUndefined","isDefined","getPrototypeOf","isScope","$evalAsync","$watch","isBoolean","isTypedArray","TYPED_ARRAY_REGEXP","test","node","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","copyRecurse","push","copyElement","stackSource","stackDest","ngMinErr","needsRecurse","copyType","undefined","constructor","buffer","byteOffset","copied","ArrayBuffer","byteLength","set","Uint8Array","re","match","lastIndex","type","equals","o1","o2","t1","t2","getTime","keySet","createMap","charAt","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","document","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","replace","ALL_COLONS","requestedTimezoneOffset","isNumberNaN","convertTimezoneToLocal","date","reverse","dateTimezoneOffset","getTimezoneOffset","timezoneOffset","setMinutes","getMinutes","minutes","startingTag","empty","e","elemHtml","append","html","nodeType","NODE_TYPE_TEXT","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","splitPoint","substring","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","isAutoBootstrapAllowed","strictDi","console","error","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","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","component","run","block","shallowCopy","publishExternalAPI","version","uppercase","$$counter","csp","angularModule","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","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","$animateCss","$CoreAnimateCssProvider","$$animateJs","$$CoreAnimateJsProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$AnimateRunnerFactoryProvider","$$animateAsyncRun","$$AnimateAsyncRunFactoryProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$$forceReflow","$$ForceReflowProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$xhrFactory","$xhrFactoryProvider","$jsonpCallbacks","$jsonpCallbacksProvider","$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_ELEMENT","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","jqLiteWrapNode","wrapper","parentNode","replaceChild","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","unsupported","expandoStore","jqLiteExpandoStore","handle","removeHandler","listenerFns","removeEventListener","MOUSE_EVENT_MAP","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","handlerWrapper","specialHandlerWrapper","defaultHandlerWrapper","handler","specialMouseHandlerWrapper","target","related","relatedTarget","jqLiteContains","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","extractArgs","fnText","Function","prototype","STRIP_COMMENTS","ARROW_ARG","FN_ARGS","anonFn","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","injectionArgs","locals","$inject","$$annotate","msie","Type","ctor","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","protoInstanceInjector","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","style","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","cacheStateAndFireUrlChange","pendingLocation","cacheState","fireUrlChange","cachedState","getCurrentState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","state","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","bindingCache","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","getDirectiveRequire","require","REQUIRE_PREFIX_REGEXP","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","restrict","this.component","makeInjectable","tElement","tAttrs","$element","$attrs","template","templateUrl","ddo","controllerAs","identifierForController","transclude","bindToController","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","TTL","onChangesTtl","this.onChangesTtl","commentDirectivesEnabledConfig","commentDirectivesEnabled","this.commentDirectivesEnabled","cssClassDirectivesEnabledConfig","cssClassDirectivesEnabled","this.cssClassDirectivesEnabled","flushOnChangesQueue","onChangesQueue","errors","Attributes","attributesToCopy","$attr","$$element","setSpecialAttr","specialAttrHolder","attributes","attribute","removeNamedItem","setNamedItem","safeAddClass","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","NOT_EMPTY","domNode","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","needsNewScope","$parent","$new","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","instance","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","transcludeOnThisElement","createBoundTranscludeFn","templateOnThisElement","attrs","linkFnFound","collectDirectives","applyDirectivesToNode","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","boundSlots","$$slots","slotName","attrsMap","addDirective","directiveNormalize","isNgAttr","nAttrs","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","multiElementMatch","MULTI_ELEMENT_DIR_RE","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","collectCommentDirectives","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","groupedElementsLink","compilationGenerator","eager","compiled","lazyCompilation","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","elementControllers","slotTranscludeFn","scopeToChild","controllerScope","newScopeDirective","isSlotFilled","transcludeFn.isSlotFilled","controllerDirectives","setupControllers","templateDirective","$$originalDirective","$$isolateBindings","scopeBindingInfo","initializeDirectiveBindings","removeWatches","$on","controllerDirective","$$bindings","bindingInfo","identifier","controllerResult","getControllers","controllerInstance","$onChanges","initialChanges","$onInit","$doCheck","$onDestroy","callOnDestroyHook","invokeLinkFn","$postLink","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","didScanForMultipleTransclusion","mightHaveMultipleTransclusionError","directiveValue","$$start","$$end","assertNoDuplicate","$$tlb","scanningIndex","candidateDirective","$$createComment","replaceWith","$$parentNode","replaceDirective","slots","contents","slotMap","filledSlots","elementSelector","filled","$$newScope","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectiveScope","mergeTemplateAttributes","compileTemplateUrl","Math","max","inheritType","dataName","property","controllerKey","$scope","$transclude","newScope","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","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","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","hasData","annotation","recordChanges","currentValue","previousValue","$$postDigest","changes","triggerOnChangesHook","SimpleChange","removeWatchCollection","initializeBinding","lastValue","parentGet","parentSet","compare","$observe","_UNINITIALIZED_VALUE","literal","assign","parentValueWatch","parentValue","$stateful","removeWatch","$watchCollection","initialValue","parentValueWatchAction","SIMPLE_ATTR_NAME","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","ALIASED_ATTR","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","compile.$$createComment","comment","createComment","previous","current","str1","str2","values","tokens1","tokens2","token","jqNodes","ident","CNTRL_REG","globals","this.has","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","$controllerMinErr","controllerPrototype","$controllerInit","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","useLegacyPromise","useLegacyPromiseExtensions","this.useLegacyPromiseExtensions","interceptorFactories","interceptors","requestConfig","chainInterceptors","promise","thenFn","rejectFn","executeHeaderFns","headerContent","processedHeaders","headerFn","header","response","resp","reject","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","requestInterceptors","responseInterceptors","when","reversedInterceptors","interceptor","request","requestError","responseError","serverRequest","reqData","withCredentials","sendReq","success","promise.success","promise.error","$httpMinErrLegacyFn","createApplyHandlers","eventHandlers","applyHandlers","callEventHandler","$applyAsync","$$phase","done","headersString","statusText","resolveHttpPromise","resolvePromise","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","uploadEventHandlers","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","$browserDefer","callbacks","rawDocument","jsonpReq","callbackPath","async","body","wasCalled","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","createCallback","getResponse","removeCallback","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","ontimeout","upload","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","constantWatchDelegate","objectEquality","constantInterp","unwatch","constantInterpolateWatch","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","unescapedText","exp","$$watchDelegate","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","endSymbolLength","throwNoconcat","compute","interpolationFn","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","iteration","setInterval","clearInterval","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","DOUBLE_SLASH_REGEX","$locationMinErr","prefixed","$$path","pathname","$$search","search","$$hash","stripBaseUrl","base","lastIndexOf","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","this.$$parse","pathUrl","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","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","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","getStringValue","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ensureSafeAssignContext","ARRAY_CTOR","BOOLEAN_CTOR","FUNCTION_CTOR","NUMBER_CTOR","OBJECT_CTOR","STRING_CTOR","ARRAY_CTOR_PROTO","BOOLEAN_CTOR_PROTO","FUNCTION_CTOR_PROTO","NUMBER_CTOR_PROTO","OBJECT_CTOR_PROTO","STRING_CTOR_PROTO","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","isStatelessFilter","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","LocalsExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","literals","identStart","identContinue","addLiteral","this.addLiteral","literalName","literalValue","setIdentifierFns","this.setIdentifierFns","identifierStart","identifierContinue","interceptorFn","expensiveChecks","parsedExpression","oneTime","cacheKey","runningChecksEnabled","parseOptions","$parseOptionsExpensive","$parseOptions","lexer","Lexer","parser","Parser","oneTimeLiteralWatchDelegate","oneTimeWatchDelegate","inputs","inputsWatchDelegate","expensiveChecksInterceptor","addInterceptor","expensiveCheckFn","expensiveCheckOldValue","expressionInputDirtyCheck","oldValueOfValue","prettyPrintExpression","inputExpressions","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatch","oneTimeListener","old","isAllDefined","allDefined","constantWatch","watchDelegate","useInputs","regularInterceptedExpression","oneTimeInterceptedExpression","noUnsafeEval","isIdentifierStart","isIdentifierContinue","$$runningExpensiveChecks","$parse.$$runningExpensiveChecks","qFactory","nextTick","exceptionHandler","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","that","rejectPromise","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","resolver","resolveFn","all","promises","counter","results","race","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","cleanUpScope","$$prevSibling","$root","Scope","beginPhase","phase","incrementWatchersCount","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","asyncQueuePosition","asyncQueue","$eval","msg","next","postDigestQueuePosition","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","hasHistoryPushState","chrome","app","runtime","pushState","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","httpOptions","this.httpOptions","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","handleError","$templateRequestMinErr","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","anyPropertyKey","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","formatNumber","GROUP_SEP","DECIMAL_SEP","number","numStr","exponent","digits","numberOfIntegerDigits","zeros","ZERO_CHAR","MAX_DIGITS","roundNumber","parsedNumber","minFrac","fractionLen","min","roundAt","digit","k","carry","reduceRight","groupSep","decimalSep","isNaN","isInfinity","isFinite","isZero","abs","formattedText","integerLen","decimals","reduce","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","padNumber","num","negWrap","neg","dateGetter","dateStrGetter","shortForm","standAlone","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","round","eraGetter","ERAS","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","spacing","limit","begin","Infinity","sliceFn","end","processPredicates","sortPredicates","map","predicate","descending","defaultCompare","v1","v2","type1","type2","value1","value2","sortPredicate","reverseOrder","compareFn","predicates","compareValues","getComparisonObject","tieBreaker","predicateValues","doComparison","ngDirective","FormController","controls","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$$parentForm","nullFormCtrl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","$addControl","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","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","PARTIAL_VALIDATION_TYPES","PARTIAL_VALIDATION_EVENTS","validity","origBadInput","badInput","origTypeMismatch","typeMismatch","$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_STATE_PROPERTY","numberFormatterParser","NUMBER_REGEXP","parseNumberAttrVal","countDecimals","numString","decimalSymbolIndex","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","addClasses","digestClassCounts","classCounts","classesToUpdate","updateClasses","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","rules","ngCspElement","ngCspAttribute","noInlineStyle","name_","el","allowAutoBootstrap","currentScript","scriptProtocol","full","major","minor","dot","codeName","expando","JQLite._data","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","Node","contains","compareDocumentPosition","ready","trigger","fired","removeData","jqLiteHasData","jqLiteCleanData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","addHandler","noEventListener","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","postDigestElements","updateData","handleCSSClassChanges","existing","pin","domOperation","from","to","classesAdded","add","classesRemoved","runner","complete","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","enter","move","leave","addclass","animate","tempClasses","waitForTick","waitQueue","passed","AnimateRunner","setHost","rafTick","_doneCallbacks","_tick","this._tick","doc","hidden","_state","chain","AnimateRunner.chain","AnimateRunner.all","runners","onProgress","DONE_COMPLETE_STATE","getPromise","resolveHandler","rejectHandler","pause","resume","_resolve","INITIAL_STATE","DONE_PENDING_STATE","initialOptions","closed","$$prepared","cleanupStyles","start","UNINITIALIZED_VALUE","isFirstChange","SimpleChange.prototype.isFirstChange","offsetWidth","APPLICATION_JSON","$httpMinErr","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","callbackId","called","callbackMap","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","peekMultichar","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","codePointAt","isValidIdentifierStart","isValidIdentifierContinue","cp","charCodeAt","cp1","cp2","isExpOperator","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","selfReferential","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","return_","generateFunction","fnKey","intoId","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeAssignContext","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","UNSAFE_CHARACTERS","SAFE_IDENTIFIER","stringEscapeFn","stringEscapeRegex","c","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","LLLL","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","ctrls","handleFormSubmission","setter","URL_REGEXP","EMAIL_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","rangeInputType","setInitialValueAndObserver","htmlAttrName","changeFn","minChange","$modelValue","supportsRange","elVal","maxChange","stepChange","stepVal","hasMinAttr","hasMaxAttr","hasStepAttr","step","originalRender","rangeUnderflow","rangeOverflow","rangeRender","noopMinValidator","minValidator","noopMaxValidator","maxValidator","nativeStepValidator","stepMismatch","stepValidator","stepBase","decimalCount","multiplier","pow","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","ngBindHtmlGetter","ngBindHtmlWatch","sceValueOf","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","$$updateEmptyClasses","this.$$updateEmptyClasses","NOT_EMPTY_CLASS","EMPTY_CLASS","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","NgModelOptionsController","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","group","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","ngOptionsPreLink","registerOption","ngOptionsPostLink","updateOptionElement","updateOptions","selectCtrl","readValue","groupElementMap","providedEmptyOption","emptyOption","addOption","groupElement","listFragment","optionElement","ngModelCtrl","nextValue","unknownOption","removeEmptyOption","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","pluralCat","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","ngSwitchController","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngTranscludeMinErr","ngTranscludeCompile","fallbackLinkFn","ngTranscludePostLink","useFallbackContent","ngTranscludeSlot","ngTranscludeCloneAttachFn","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","self.addOption","removeOption","self.removeOption","self.hasOption","self.registerOption","optionScope","optionAttrs","interpolateValueFn","interpolateTextFn","valueAttributeObserveAction","interpolateWatchAction","selectPreLink","lastView","lastViewRef","selectMultipleWatch","selectPostLink","ngModelCtrl.$render","selectCtrlName","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","ONE","OTHER","$$csp","head"] +} diff --git a/popup/partials/audio-player.html b/popup/partials/audio-player.html new file mode 100644 index 0000000..9c3d8cd --- /dev/null +++ b/popup/partials/audio-player.html @@ -0,0 +1,17 @@ +
+ + + + +
\ No newline at end of file diff --git a/popup/partials/tags.html b/popup/partials/tags.html index 9307587..e6da118 100644 --- a/popup/partials/tags.html +++ b/popup/partials/tags.html @@ -1,94 +1,115 @@
-

myTags

+

myTags ({{filteredCount}}/{{totalCount}})

-
+
+
+
+ +
+

updatingTags
{{updateStatus}}

+

doNotCloseBrowser

+
+
+
+
+
+ +
+

loadingTags

+
+
+
-
- - - - - - +
+
-

updatingTags
{{updateStatus}}

+

updatingApp

doNotCloseBrowser

-
-

- - - - - +

+

+

noTagsFound

-
+
-
-
- - - - - +
+
+
-
-
- - - - - +
+
+
+
+
+ +
+
{{tag.name}}
{{tag.artist}}
+ + + - \ No newline at end of file diff --git a/src/background/ChromeHelper.js b/src/background/ChromeHelper.js index 26477fe..270f72d 100644 --- a/src/background/ChromeHelper.js +++ b/src/background/ChromeHelper.js @@ -30,13 +30,17 @@ }, // Focus existing tab or create it - focusOrCreateTab: function(url) { + focusOrCreateTab: function(url, callback) { + callback = callback || function(){}; + ChromeHelper.findExistingTab(url, function(existing_tab) { if (existing_tab) { chrome.tabs.reload(existing_tab.id, {'bypassCache': true}); chrome.tabs.update(existing_tab.id, {'selected': true}); + + return callback(existing_tab); } else { - chrome.tabs.create({'url': url, 'selected': true}); + chrome.tabs.create({'url': url, 'selected': true}, callback); } }); }, diff --git a/src/background/DbService.js b/src/background/DbService.js new file mode 100644 index 0000000..5d51557 --- /dev/null +++ b/src/background/DbService.js @@ -0,0 +1,18 @@ +(function(Logger){ + var Db = (function() { + var db = new Dexie('Shazify'); + + db.version(1).stores({ + // shazamId is primary key & unique + tags: 'shazamId, date, spotifyId, status', // name, artist, query, image + }); + + db.open().catch(function (e) { + console.error("Open failed: " + e.stack); + }); + + return db; + }()); + + window.s2s.Db = Db; +})(window.s2s.Logger); \ No newline at end of file diff --git a/src/background/Helper.js b/src/background/Helper.js index bad87c7..26332e3 100644 --- a/src/background/Helper.js +++ b/src/background/Helper.js @@ -31,6 +31,14 @@ text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; + }, + + escapeRegExp: function(string) { + return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); + }, + + replaceAll: function(string, find, replace) { + return string.replace(new RegExp(Helper.escapeRegExp(find), 'g'), replace); } }; diff --git a/src/background/ShazamService.js b/src/background/ShazamService.js index bb4ee54..1e234f9 100644 --- a/src/background/ShazamService.js +++ b/src/background/ShazamService.js @@ -1,49 +1,161 @@ -(function(ChromeHelper, Logger){ +(function(ChromeHelper, Logger, StorageHelper){ + /* + Shazam service + + Handle login to Shazam, getting auth token (with a content script) and calling API to fetch tags + + */ var Shazam = { + // Storage for Shazam data (auth token, etc) + data: new StorageHelper('Shazam', 'sync'), // New storage, synced with other Chrome installs + + receivePageLocalStorage: function (pageLocalStorage) { + console.log('pageLocalStorage', pageLocalStorage); + }, + + getInid: function(tabId) { + listenerAdded = (typeof listenerAdded !== 'undefined') ? listenerAdded : false; + + Logger.info('[Shazam] Injecting content script to get "inid" from Local Storage...'); + + chrome.tabs.insertCSS(tabId, { + file: 'contentscripts/shazam.css', + runAt: 'document_start' + }); + + chrome.tabs.executeScript(tabId, { + file: 'contentscripts/shazamLocalStorage.js', + runAt: 'document_end' + }); + + function receiveMessage(request, sender, sendResponse) { + if(request.shazamLocalStorage && request.shazamLocalStorage.inid) { + Shazam.setAndCheckInid(request.shazamLocalStorage.inid, function(isFine) { + sendResponse({ isFine: isFine }); + + if(!isFine) { + Shazam.data.set({ 'inid': null }); + Logger.info('[Shazam] "inid" returned is not fine...'); + } else { + Logger.info('[Shazam] "inid" returned is fine!'); + chrome.runtime.onMessage.removeListener(receiveMessage); + } + }); + } + + // Let us use "sendResponse" asynchronously + return true; + } + + chrome.runtime.onMessage.addListener(receiveMessage); + }, + + setAndCheckInid: function(inid, callback) { + callback = callback || function(){}; + + Shazam.data.set({ + 'inid': inid + }, function() { + return Shazam.loginStatus(callback); + }); + }, + // Open the MyShazam login page openLogin: function() { Logger.info('[Shazam] Opening login page...'); - ChromeHelper.focusOrCreateTab('https://www.shazam.com/myshazam'); + ChromeHelper.focusOrCreateTab('https://www.shazam.com/myshazam', function(tab) { + // Will inject content script to Shazam page and wait for the inid to be available + // When available, will set and check it + Shazam.getInid(tab.id); + }); }, // Check current login status on MyShazam loginStatus: function(callback) { - $.get('https://www.shazam.com/fragment/myshazam') - .done(function() { - Logger.info('[Shazam] login status : logged.'); - callback(true); - }) - .fail(function(jqXHR, textStatus) { - if(jqXHR.status === 401) { - Logger.info('[Shazam] login status : not logged (401).'); - Logger.error(textStatus); - callback(false); - } else { + Shazam.data.get('inid', function(items) { + if(!items.inid) { + Logger.info('[Shazam] login status : np inid stored.'); + return callback(false); + } + + $.get('https://www.shazam.com/discovery/v4/fr/CH/web/-/tag/'+ items.inid +'?limit=20') + .done(function() { Logger.info('[Shazam] login status : logged.'); - callback(true); - } - }); + return callback(true); + }) + .fail(function(jqXHR, textStatus) { + if(jqXHR.status === 401) { + Logger.info('[Shazam] login status : not logged (401).'); + Logger.error(textStatus); + return callback(false); + } else if(jqXHR.status === 456) { + Logger.info('[Shazam] login status : error (456).'); + Logger.error(textStatus); + return callback(false); + } + + Logger.info('[Shazam] login status : error.'); + Logger.error(textStatus); + return callback(false); + }); + }); }, // Download tags history, parse it and return a tags array - getTags: function(lastUpdate, callback) { - Logger.info('[Shazam] Downloading tags history...'); - $.get('https://www.shazam.com/myshazam/download-history') - .done(function(data) { - if(data) { - Shazam.parseTags(lastUpdate, data, callback); - } else { - Logger.error('[Shazam] Cannot download Shazam history.'); - Logger.error('[Shazam] Data returned : "'+ data +'"'); - - return callback(new Error('Cannot download Shazam history.')); - } - }) - .fail(function(jqXHR, textStatus) { - Logger.info('[Shazam] Tags fetch error : '+textStatus+'.'); + getTags: function(lastUpdate, callback, token) { + token = token || null; + + Logger.info('[Shazam] Getting list of tags...'); + Shazam.data.get('inid', function(items) { + if(!items.inid) { + Logger.error('[Shazam] cannot get tags, seems not to be logged in.'); + return callback(new Error('Cannot get tags, seems not to be logged in.')); + } + + $.getJSON('https://www.shazam.com/discovery/v4/fr/CH/web/-/tag/'+ items.inid +'?limit=200'+ ((token) ? '&token='+ token : '')) + .done(function(data) { + if(data && data.tags) { + Shazam.parseTags(lastUpdate, data, function(error, tags) { + if(error) { + Logger.error('[Shazam] error parsing tags: '+ error +'.'); + return callback(error); + } - return callback(new Error('Tags fetch error : '+textStatus)); - }); + if(!tags || !tags.length) { + return callback(null, []); + } + + var lastTagDate = tags[tags.length-1].date; + + // If Shazam API returned a token, it's that we still have tags we can fetch + if(data.token && lastTagDate >= lastUpdate) { + Logger.info('[Shazam] more tags to fetch, calling getTags again.'); + // Recursive call to get all tags since the last update + Shazam.getTags(lastUpdate, function(error, newTags) { + if(error) { + Logger.error('[Shazam] error getting tags: '+ error +'.'); + return callback(error); + } + + return callback(null, tags.concat(newTags)); + }, data.token); + } else { + return callback(null, tags); + } + }); + } else { + Logger.error('[Shazam] Cannot get tags from Shazam.'); + Logger.error('[Shazam] Data returned : "'+ data +'"'); + + return callback(new Error('Cannot get tags from Shazam.')); + } + }) + .fail(function(jqXHR, textStatus) { + Logger.info('[Shazam] Tags fetch error : '+textStatus+'.'); + + return callback(new Error('Tags fetch error : '+textStatus)); + }); + }); }, // Parse tags from tags history @@ -52,31 +164,26 @@ var tags = []; var stopParsing = false; - var tagsEl = $(data).find('tr'); - Logger.info('[Shazam] Start parsing of '+ tagsEl.length +' elements...'); + Logger.info('[Shazam] Start parsing of '+ data.tags.length +' elements...'); - for(var i = 0; i < tagsEl.length && stopParsing === false; i++) { - if($('td', tagsEl[i]).length === 0) { - continue; - } + var length = data.tags.length; + for(var i = 0; i < length && stopParsing === false; i++) { + var tagDate = new Date(data.tags[i].timestamp); + var tagName = data.tags[i].track.heading.title; + var tagArtist = data.tags[i].track.heading.subtitle; - var date = new Date($('td.time', tagsEl[i]).text()); + if(tagDate > lastUpdate) { + if(tagName && tagArtist) { + var tag = { + shazamId: data.tags[i].tagid, + name: data.tags[i].track.heading.title, + artist: data.tags[i].track.heading.subtitle, + date: tagDate + }; - if(date > lastUpdate) { - var idMatch = (new RegExp('t([0-9]+)', 'g')).exec($('td:nth-child(1) a', tagsEl[i]).attr('href')); - if(!idMatch) { - continue; + tags.push(tag); } - - var tag = { - shazamId: idMatch[1], - name: $('td:nth-child(1) a', tagsEl[i]).text().trim(), - artist: $('td:nth-child(2)', tagsEl[i]).text().trim(), - date: date - }; - - tags.push(tag); } else { // Tag's date is lower than last update date = the following tags were already fetched in previous updates Logger.info('[Shazam] Stop parsing, we reached the last tag not already fetched.'); @@ -84,10 +191,9 @@ } } - callback(null, tags); + return callback(null, tags); } - }; window.s2s.Shazam = Shazam; -})(window.s2s.ChromeHelper, window.s2s.Logger); \ No newline at end of file +})(window.s2s.ChromeHelper, window.s2s.Logger, window.s2s.StorageHelper); \ No newline at end of file diff --git a/src/background/SpotifyService.js b/src/background/SpotifyService.js index 57d6d2c..bf07495 100644 --- a/src/background/SpotifyService.js +++ b/src/background/SpotifyService.js @@ -9,10 +9,10 @@ genQuery: function(track, artist) { var reSpaces = new RegExp(' ', 'g'); - return 'track:'+ track.replace(reSpaces, '+') +' artist:'+ artist.replace('Feat. ', '').replace(reSpaces, '+'); + return 'track:'+ track.replace(reSpaces, '+') +' artist:'+ Helper.replaceAll(artist, 'Feat. ', '').replace(reSpaces, '+'); }, - // Get current user and playlist ir cache or on Spotify + // Get current user and playlist in cache or on Spotify getUserAndPlaylist: function(callback) { Spotify.data.get(['userId', 'playlistId'], function(items) { var userId = items.userId; @@ -203,6 +203,45 @@ }); }, + removeTracks: function(tracksIds, callback) { + if(tracksIds.length === 0) { + Logger.info('[Spotify] No tracks to remove from playlist.'); + return callback(); + } + + Spotify.getUserAndPlaylist(function(err, userId, playlistId) { + if(err) { return callback(err); } + + Logger.info('[Spotify] '+ tracksIds.length +' tracks to remove from playlist.'); + + var tracks = []; + tracksIds.forEach(function(id) { + tracks.push({ uri: 'spotify:track:'+ id }); + }); + + Spotify.call({ + method: 'DELETE', + endpoint: '/v1/users/'+ userId +'/playlists/'+ playlistId +'/tracks', + data: JSON.stringify({ tracks: tracks }) + }, function(err, data) { + if(err) { + Logger.error('[Spotify] Error removing tracks from playlist.'); + Logger.error(err); + + return callback(err); + } + + if(data.snapshot_id) { + return callback(); + } else { + Logger.error('[Spotify] No snapshot_id returned for tracks removal.'); + + return callback(new Error('[Spotify] No snapshot_id returned for tracks removal.')); + } + }); + }); + }, + // Private : called from addTracks, add an array of trackPaths to playlist. // Handle arrays bigger than 100 items (should be splitted in multiple requests for Spotify API) _addTracksPaths: function(tracksPaths, callback) { @@ -261,8 +300,26 @@ } }, + // Get details for a track from it's ID + getTrack: function(trackId, callback) { + Logger.info('[Spotify] Getting details for track "'+ trackId +'"...'); + + Spotify.call({ + endpoint: '/v1/tracks/'+ trackId, + method: 'GET' + }, function(err, data) { + if(err) { + Logger.info('[Spotify] Error getting track "'+ trackId +'".'); + Logger.error(err); + return callback(err); + } + + return callback(null, data); + }); + }, + // Find a track on Spotify - findTrack: function(query, callback) { + findTrack: function(query, trackName, artist, callback) { Logger.info('[Spotify] Searching for track "'+ query +'"...'); Spotify.call({ @@ -271,17 +328,85 @@ params: { q: query, type: 'track', - limit: 1 + limit: 20 } }, function(err, data) { if(err) { Logger.info('[Spotify] Error searching track "'+ query +'".'); Logger.error(err); return callback(err); } if(data.tracks.total === 0) { Logger.info('[Spotify] Track "'+ query +'" not found.'); return callback(new Error('Not found')); } - var track = data.tracks.items[0]; + var found = null; + for(var i = 0; i < data.tracks.items.length && !found; i++) { + var track = data.tracks.items[i]; + + // Only mark as found if the track name is exactly the same + // TODO: should check for artists too + if(track.name.toLowerCase() == trackName.toLowerCase()) { + found = track; + } + } - Logger.info('[Spotify] Track found "'+ track.id +'".'); + if(found) { + Logger.info('[Spotify] Track found "'+ found.id +'".'); - callback(null, track); + return callback(null, found); + } else { + Logger.info('[Spotify] Track "'+ query +'" not found.'); + + return callback(new Error('Not found')); + } + }); + }, + + // Find tracks on Spotify + findTracks: function(query, callback) { + Logger.info('[Spotify] Searching tracks for "'+ query +'"...'); + + Spotify.call({ + endpoint: '/v1/search', + method: 'GET', + params: { + q: query, + type: 'track', + limit: 20 + } + }, function(err, data) { + if(err) { Logger.info('[Spotify] Error searching tracks for "'+ query +'".'); Logger.error(err); return callback(err); } + if(data.tracks.total === 0) { Logger.info('[Spotify] No tracks found for query "'+ query +'".'); return callback(new Error('Not found')); } + + var tracks = []; + + // Loop over all tracks found + for(var i = 0; i < data.tracks.items.length; i++) { + var track = data.tracks.items[i]; + + // Make a string with the artists' names + var artist = ''; + if(track.artists.length > 0) { + artist = track.artists[0].name; + for(var j = 1; j < track.artists.length; j++) { + artist += ', '+ track.artists[j].name; + } + } + + // Create a more concise track object and add to list + tracks.push({ + name: track.name, + artist: artist, + image: track.album.images[track.album.images.length-1].url, + id: track.id, + previewUrl: track.preview_url + }); + } + + if(tracks.length > 0) { + Logger.info('[Spotify] '+ tracks.length +' tracks found.'); + + return callback(null, tracks); + } else { + Logger.info('[Spotify] No tracks found for query "'+ query +'".'); + + return callback(new Error('Not found')); + } }); }, @@ -291,7 +416,7 @@ // Helpers to get URLs for API calls getUrl: { redirect: function() { - return 'https://'+ chrome.runtime.id +'.chromiumapp.org/spotify_cb'; + return chrome.identity.getRedirectURL() +'spotify_cb'; }, authorize: function() { @@ -369,9 +494,15 @@ callback(new Error('Please authorize Shazify to access your Spotify account.')); } }); + // Too many requests, wait and try again + } else if(jqXHR.status === 429) { + Logger.error('[Spotify] Too many requests, waiting 1s... ('+ jqXHR.status +') : '+textStatus+'.'); + setTimeout(function() { + Spotify.call(options, callback); + }, 1000); } else { - callback(new Error('Error calling API')); - Logger.error('[Spotify] Error calling API : '+textStatus+'.'); + callback(new Error('Error calling API ('+ jqXHR.status +').')); + Logger.error('[Spotify] Error calling API ('+ jqXHR.status +') : '+textStatus+'.'); } }); }); @@ -434,8 +565,16 @@ }); }) .fail(function(jqXHR, textStatus) { - Logger.error('[Spotify] Error getting token : '+textStatus+'.'); - callback(false); + if(jqXHR.status === 429) { + Logger.error('[Spotify] Too many requests, waiting 1s... ('+ jqXHR.status +') : '+textStatus+'.'); + + setTimeout(function() { + Spotify.refreshToken(callback); + }, 1000); + } else { + Logger.error('[Spotify] Error getting token : '+textStatus+'.'); + callback(false); + } }); } else { Logger.info('[Spotify] No refresh token stored... open login.'); @@ -465,8 +604,16 @@ Spotify.saveAccessToken(data, callback); }) .fail(function(jqXHR, textStatus) { - Logger.error('[Spotify] Error getting access token : '+ textStatus +'.'); - callback(false); + if(jqXHR.status === 429) { + Logger.error('[Spotify] Too many requests, waiting 1s... ('+ jqXHR.status +') : '+textStatus+'.'); + + setTimeout(function() { + Spotify.getAccessToken(authCode, callback); + }, 1000); + } else { + Logger.error('[Spotify] Error getting access token : '+ textStatus +'.'); + callback(false); + } }); }, diff --git a/src/background/TagsService.js b/src/background/TagsService.js index 8eeb387..bd8dd59 100644 --- a/src/background/TagsService.js +++ b/src/background/TagsService.js @@ -1,14 +1,13 @@ -(function(StorageHelper, Logger, Spotify, Shazam){ +(function(Database, StorageHelper, Logger, Spotify, Shazam){ var Tags = { - list: [], lastUpdate: new Date(0), - // Add/update a tag in the tags list + // Add/update a tag in the tags DB and search for Spotify track add: function(tag, callback) { callback = callback || function(){}; tag.spotifyId = tag.spotifyId || null; - tag.status = tag.status || 1; // Status : 1 = just added, 2 = not found in spotify, 3 = found, 4 = added to playlist + tag.status = tag.status || 1; // Status : 1 = just added, 2 = not found in spotify, 3 = found, 4 = added to playlist, 5 = not found, manual search tag.query = tag.query || Spotify.genQuery(tag.name, tag.artist); @@ -16,13 +15,12 @@ // Search track on Spotify, if not already found if(tag.status < 3) { - Spotify.findTrack(tag.query, function(err, track) { + Spotify.findTrack(tag.query, tag.name, tag.artist, function(err, track) { if(err || !track) { tag.status = 2; } else { tag.status = 3; - tag.image = track.album.images[track.album.images.length-1].url; - tag.spotifyId = track.id; + tag = Tags.setSpotifyInfosToTag(tag, track); } Tags._addToList(tag, callback); @@ -34,27 +32,24 @@ // Private : called from Tags.add, add the specified tag to list or update it _addToList: function(tag, callback) { - // TODO: use Array.prototype.find when available on Chrome - var found = false; - for(var i in Tags.list) { - if(Tags.list[i].shazamId == tag.shazamId) { - found = true; - $.extend(Tags.list[i], tag); // Update existing tag - break; - } - } - - if(!found) { - Tags.list.push(tag); - } + Tags.db.put(tag).then(function() { + return Tags.db.get(tag.shazamId).then(function(tag) { + return callback(null, tag); + }); + }).catch(function(reason) { + Logger.error('[Tags] Error adding/updating tag to DB : '+ reason +'.'); + Logger.error(reason); - Tags.list.sort(function (a, b) { - if (a.date > b.date) { return -1; } - if (a.date < b.date) { return 1; } - return 0; + return callback(reason); }); + }, + + setSpotifyInfosToTag: function(tag, track) { + tag.image = track.album.images[track.album.images.length-1].url; + tag.previewUrl = track.preview_url; + tag.spotifyId = track.id; - callback(); + return tag; }, _updateStatusNbTags: 0, // Nombre de tags au total en cours d'ajout @@ -76,7 +71,7 @@ Shazam.getTags(Tags.lastUpdate, function(err, tags) { if(!err && Array.isArray(tags)) { - Logger.info('[Tags] Got '+ tags.length +' tags from Shazam.'); + Logger.info('[Tags] Got '+ tags.length +' new tags from Shazam.'); Tags._updateStatusNbTags = tags.length; @@ -104,61 +99,303 @@ updatePlaylist: function(callback) { Logger.info('[Tags] Updating playlist on Spotify.'); - var tracksToAdd = []; // Used to revert "status" if an error occurs - var tracksIdsToAdd = []; // Used to add tracks to playlist - - for(var i in Tags.list) { - var tag = Tags.list[i]; + // Used to revert "status" if an error occurs + Tags.db.where('status').equals(3).toArray().then(function(tracksToAdd) { + var tracksIdsToAdd = []; // Used to add tracks to playlist - if(tag.status == 3) { - tracksToAdd.push(tag); - tracksIdsToAdd.push(tag.spotifyId); - tag.status = 4; + for(var i in tracksToAdd) { + tracksIdsToAdd.push(tracksToAdd[i].spotifyId); + tracksToAdd[i].status = 4; // Set status as added, will not be saved to DB if an error occurs } - } - Spotify.playlist.addTracks(tracksIdsToAdd, function(err) { - if(err) { - Logger.info('[Tags] Cannot add tags to playlist, reverting tags status.'); - // If an error occurs, revert tag status to 3. This will let the system retry addition later. - for(var i in tracksToAdd) { - tracksToAdd[i].status = 3; + Spotify.playlist.addTracks(tracksIdsToAdd, function(err) { + if(err) { + Logger.info('[Tags] Cannot add tags to playlist.'); + } else { + // Only update DB if addition succeeded + Tags.db.bulkPut(tracksToAdd).then(function() { + Logger.info('[Tags] Updated in DB.'); + }).catch(function(reason) { + Logger.error('[Tags] Error updating tags in DB.'); + Logger.error(reason); + }); } + + Tags.save(callback); + }); + }).catch(function(reason) { + Logger.error('[Tags] Error getting tags list to add.'); + Logger.error(reason); + }); + }, + + // Manually select a Spotify track for a tag + selectSpotifyTrack: function(shazamId, newSpotifyId, callback) { + var Promise = Dexie.Promise; + + Tags.db.get(shazamId).then(function(tag) { + var oldSpotifyId = tag.spotifyId; + + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' (old: '+ oldSpotifyId +' | new: '+ newSpotifyId +').'); + + // Selected spotifyId is the same as already registered for the track + if(oldSpotifyId && oldSpotifyId === newSpotifyId) { + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' : same, nothing to do.'); + return callback(); + } + + var promise = Promise.resolve(tag); + + // -- Remove old track from playlist -- + // Tag was already linked to a Spotify track, but we link it to a new one + // If other tags are linked to the old track -> don't change anything in playlist + // If no other is linked to it, remove it to playlist + if(oldSpotifyId) { + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' : an other track was already defined.'); + promise.then(function() { + return new Promise(function(resolve, reject) { + Tags.removeTrackFromPlaylist(shazamId, oldSpotifyId, function(err) { + if(err) { + return reject(err); + } + + return resolve(tag); + }); + }); + }); + } + + return promise; + + // -- Add new track to playlist -- + }).then(function(tag) { + return new Promise(function(resolve, reject) { + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' : adding new track to playlist.'); + Spotify.playlist.addTracks([newSpotifyId], function(err) { + if(err) { + return reject(err); + } + + return resolve(tag); + }); + }); + + // -- Getting track details from Spotify -- + }).then(function(tag) { + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' : getting track details from Spotify.'); + return new Promise(function(resolve, reject) { + Spotify.getTrack(newSpotifyId, function(err, track) { + if(err) { + return reject(err); + } + + return resolve({ + tag: tag, + track: track + }); + }); + }); + + // -- Update tag in DB with new spotifyId -- + }).then(function(result) { + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' : updating tag in DB.'); + result.tag = Tags.setSpotifyInfosToTag(result.tag, result.track); + result.tag.status = 4; + + return Tags.db.put(result.tag); + + // -- Finished -- + }).then(function() { + Logger.info('[Tags] Replacing Spotify track for '+ shazamId +' : all done!'); + return callback(); + + // -- Catch all errors -- + }).catch(function(reason) { + Logger.error('[Tags] Error trying to replace Spotify track for '+ shazamId +'.'); + Logger.error(reason); + return callback(reason); + }); + }, + + // Remove track from playlist if not used by another tag + removeTrackFromPlaylist: function(shazamId, spotifyId, callback) { + Tags.db.where('spotifyId').equals(spotifyId).filter(function(tag) { + // Filter to get only tags != to the one for which we want to remove the track + return tag.shazamId !== shazamId; + }).count().then(function(count) { + Logger.info('[Tags] Removing Spotify track '+ spotifyId +' : '+ count +' other tags have the old one too.'); + // No other tags linked to the old Spotify track except this one + if(count === 0) { + Logger.info('[Tags] Removing Spotify track '+ spotifyId +' : no other tag is linked to the old track, removing from playlist.'); + + Spotify.playlist.removeTracks([spotifyId], function(err) { + if(err) { + return callback(err); + } + + return callback(); + }); + } else { + return callback(); + } + }); + }, + + // Set a tag as not found + // Will stop searching automatically for it + setAsNotFound: function(shazamId, callback) { + var Promise = Dexie.Promise; + + Tags.db.get(shazamId).then(function(tag) { + var oldSpotifyId = tag.spotifyId; + + Logger.info('[Tags] Setting '+ shazamId +' as not found.'); + + var promise = Promise.resolve(tag); + + // -- Remove old track from playlist -- + // Tag was already linked to a Spotify track, but we link it to a new one + // If other tags are linked to the old track -> don't change anything in playlist + // If no other is linked to it, remove it to playlist + if(tag.spotifyId) { + Logger.info('[Tags] Checking if we need to remove Spotify track for '+ shazamId +' from playlist.'); + promise.then(function(tag) { + return new Promise(function(resolve, reject) { + Tags.removeTrackFromPlaylist(shazamId, tag.spotifyId, function(err) { + if(err) { + return reject(err); + } + + return resolve(tag); + }); + }); + }); } - Tags.save(callback); + return promise; + + // -- Update tag in DB -- + }).then(function(tag) { + Logger.info('[Tags] Setting '+ shazamId +' as not found: updating tag in DB.'); + tag.image = null; + tag.previewUrl = null; + tag.spotifyId = null; + tag.status = 5; // Manual search + + return Tags.db.put(tag); + + // -- Finished -- + }).then(function() { + Logger.info('[Tags] Setting '+ shazamId +' as not found: all done!'); + return callback(); + + // -- Catch all errors -- + }).catch(function(reason) { + Logger.error('[Tags] Error trying to setting '+ shazamId +' as not found.'); + Logger.error(reason); + return callback(reason); }); }, - // Save tags data (list & lastUpdate) + // Save tags data (lastUpdate) save: function(callback) { callback = callback || function(){}; Logger.info('[Tags] Saving tags data.'); - Tags.data.set({'tagsList': Tags.list, 'lastUpdate': Tags.lastUpdate.getTime()}, function() { + Tags.data.set({'lastUpdate': Tags.lastUpdate.getTime()}, function() { callback(); }); }, + + getList: function(options, callback) { + options = options || {}; + callback = callback || function(){}; + + var tags = Tags.db; + + tags = tags.orderBy('date').reverse(); + + // Count all tags before filtering them + tags.count().then(function(totalCount) { + + /* + { + status: [1, 2, 3, 4], // Will be translated to .where('status').anyOf([1, 2, 3, 4]) + name: 'Hello' // Will be translated to .and('name').equals('Hello') + } + */ + if(options.where) { + tags.filter(function(tag) { + var found = true; + Object.keys(options.where).forEach(function(key) { + if(Array.isArray(options.where[key])) { + found = found && options.where[key].indexOf(tag[key]) !== -1; + } else { + found = found && tag[key] === options.where[key]; + } + }); + + return found; + }); + } + + // Count filtered tags + return tags.count().then(function(count) { + if(options.limit) { + if('offset' in options) { + tags = tags.offset(options.offset); + } + + tags = tags.limit(options.limit); + } + + return tags.toArray().then(function(list) { + return callback(null, { + totalCount: totalCount, + count: count, + list: list + }); + }); + }); + }).catch(function(reason) { + return callback(reason); + }); + }, + + count: function(callback) { + Tags.db.count().then(function(tagsCount) { + return callback(null, tagsCount); + }).catch(function(reason) { + return callback(reason); + }); + }, // Load tags data (list & lastUpdate) load: function(callback) { callback = callback || function(){}; - Tags.data.get(['tagsList', 'lastUpdate'], function(items) { - Tags.list = items.tagsList || []; + Tags.data.get('lastUpdate', function(items) { Tags.lastUpdate = new Date(items.lastUpdate) || new Date(0); Tags.lastUpdate = (!isNaN(Tags.lastUpdate.valueOf())) ? Tags.lastUpdate : new Date(0); - Logger.info('[Tags] Got from storage -> tagsList: '+ Tags.list.length +' items.'); + Tags.count(function(error, tagsCount) { + if(error) { + return Logger.error('[Tags] Error counting tags in DB : '+ error +'.'); + } + + Logger.info('[Tags] '+ tagsCount +' items in DB.'); + }); + Logger.info('[Tags] Got from storage -> lastUpdate: '+ Tags.lastUpdate +'.'); callback(); }); }, - data: new StorageHelper('Tags') + data: new StorageHelper('Tags', 'sync'), + db: Database.tags }; window.s2s.Tags = Tags; -})(window.s2s.StorageHelper, window.s2s.Logger, window.s2s.Spotify, window.s2s.Shazam); \ No newline at end of file +})(window.s2s.Db, window.s2s.StorageHelper, window.s2s.Logger, window.s2s.Spotify, window.s2s.Shazam); \ No newline at end of file diff --git a/src/background/UpdateService.js b/src/background/UpdateService.js index 80c941c..26a83cd 100644 --- a/src/background/UpdateService.js +++ b/src/background/UpdateService.js @@ -1,11 +1,34 @@ -(function(Logger, ChromeHelper, Spotify, Shazam, Tags){ +(function(StorageHelper, Logger, ChromeHelper, Spotify, Shazam, Tags){ var UpdateService = { update: function(initVersionTxt, finalVersionTxt) { - var rePoint = new RegExp('\\.', 'g'); + // Block tags update while updating extention + s2s.updatingApp = true; - // TODO: handle versions 0.2.10 -> 210 -> bigger than 0.3.1 -> 31 ! - var initVersion = parseInt(initVersionTxt.replace(rePoint, '')); - var finalVersion = parseInt(finalVersionTxt.replace(rePoint, '')); + var initVersionParts = initVersionTxt.split('.'); + var finalVersionParts = finalVersionTxt.split('.'); + + initVersionTxt = ''; + finalVersionTxt = ''; + + // Split at each point and make sure each part has a length of 2 + initVersionParts.forEach(function(part) { + if(part.length < 2) { + part = '0'+ part; + } + + initVersionTxt += part; + }); + + finalVersionParts.forEach(function(part) { + if(part.length < 2) { + part = '0'+ part; + } + + finalVersionTxt += part; + }); + + var initVersion = parseInt(initVersionTxt); + var finalVersion = parseInt(finalVersionTxt); var startIndex = null; var endIndex = null; @@ -41,9 +64,12 @@ }); }, function() { Logger.info('[Updater] All update scripts applied !'); + + s2s.updatingApp = false; }); } else { Logger.info('[Updater] No update script defined to go from v'+ initVersionTxt +' to v'+ finalVersionTxt +'.'); + s2s.updatingApp = false; } }, @@ -55,35 +81,110 @@ chrome.tabs.create({'url': chrome.extension.getURL('static/update-'+ version +'-'+ locale +'.html'), 'selected': true}); }, + /* + Use full version number, example : + v0.4.0 -> 00.04.00 -> 400 + v0.4.2 -> 00.04.02 -> 402 + v0.4.15 -> 00.04.15 -> 415 + v1.3.4 -> 01.03.04 -> 10304 + */ _updates: [ {'version': 20, 'perform': function(callback) { - s2s.Logger.info('[Update] Cleaning extension\'s background data.'); + Logger.info('[Update] Cleaning extension\'s background data.'); var popups = chrome.extension.getViews({type: 'popup'}); - if(popups && popups.length) { - popups[0].window.close(); - } + if(popups && popups.length) { + popups[0].window.close(); + } - ChromeHelper.clearStorage(); + ChromeHelper.clearStorage(); - // Clear cached data from background script - Tags.data.clearCache(); - Spotify.data.clearCache(); + // Clear cached data from background script + Tags.data.clearCache(); + Spotify.data.clearCache(); - // Reload tags, will reset list & lastUpdate - s2s.Tags.load(); + // Reload tags, will reset list & lastUpdate + Tags.load(); - UpdateService.openUpdatePage('0.2.0'); + UpdateService.openUpdatePage('0.2.0'); - callback(); + callback(); }}, {'version': 23, 'perform': function(callback) { UpdateService.openUpdatePage('0.2.3'); - callback(); + callback(); + }}, + // v0.04.00 + {'version': 400, 'perform': function(callback) { + Logger.info('[Update] Moving tags from local storage to indexedDB...'); + + var popups = chrome.extension.getViews({type: 'popup'}); + if(popups && popups.length) { + popups[0].window.close(); + } + + function onceDone(lastUpdate) { + Tags.data.clearCache(); + chrome.storage.local.clear(); // Clear local storage, as Tags were stored only locally + + Tags.data.set({ 'lastUpdate': lastUpdate }, function() { + Tags.load(); + + UpdateService.openUpdatePage('0.4.0'); + + return callback(); + }); + } + + function saveTag(tag, cb) { + Logger.info('[Update] Saving tag '+ tag.shazamId +' to DB...'); + + Tags.db.put(tag).then(function() { + return cb(); + }).catch(function(reason) { + return cb(reason); + }); + } + + var oldTagsStorage = new StorageHelper('Tags', 'local'); + oldTagsStorage.get(['tagsList', 'lastUpdate'], function(items) { + if(items.tagsList) { + async.eachLimit(items.tagsList, 5, function(oldTag, cbe) { + Logger.info('[Update] Moving tag '+ oldTag.shazamId +' to DB...'); + + if(!oldTag.spotifyId) { + return saveTag(oldTag, cbe); + } + + Logger.info('[Update] Getting details from Spotify API for '+ oldTag.shazamId +'...'); + + // We need to fetch data from Spotify to get new properties (preview_url, etc) + Spotify.getTrack(oldTag.spotifyId, function(err, track) { + if(err) { + Logger.error(err); + return saveTag(oldTag, cbe); + } + + oldTag = Tags.setSpotifyInfosToTag(oldTag, track); + + return saveTag(oldTag, cbe); + }); + }, function(err) { + if(err) { + Logger.error(err); + Logger.error('[Update] Error moving tags from storage to indexedDB : '+ err +'.'); + } + + return onceDone(items.lastUpdate); + }); + } else { + return onceDone(items.lastUpdate); + } + }); }} ] }; window.s2s.UpdateService = UpdateService; -})(window.s2s.Logger, window.s2s.ChromeHelper, window.s2s.Spotify, window.s2s.Shazam, window.s2s.Tags); \ No newline at end of file +})(window.s2s.StorageHelper, window.s2s.Logger, window.s2s.ChromeHelper, window.s2s.Spotify, window.s2s.Shazam, window.s2s.Tags); \ No newline at end of file diff --git a/src/background/background.js b/src/background/background.js index a418243..1afb29a 100644 --- a/src/background/background.js +++ b/src/background/background.js @@ -5,12 +5,13 @@ $(document).ready(function() { s2s.Logger.info('[init] Loading tags from storage...'); s2s.Tags.load(function() { - s2s.Logger.info('[init] '+ s2s.Tags.list.length +' tags loaded.'); + }); s2s.CanvasIcon.load(); s2s.updating = false; + s2s.updatingApp = false; s2s.getUpdateStatus = s2s.Tags.getUpdateStatus; @@ -20,6 +21,11 @@ $(document).ready(function() { return callback('already_in_progress'); } + if(s2s.updatingApp) { + s2s.Logger.info('[core] App update in progress, please wait.'); + return callback('app_update_in_progress'); + } + s2s.Logger.info('[core] Starting tags update...'); s2s.updating = true; @@ -86,20 +92,28 @@ $(document).ready(function() { s2s.Spotify.data.clearCache(); s2s.CanvasIcon.stopRotation(); - // Reload tags, will reset list & lastUpdate - s2s.Tags.load(); + s2s.Tags.db.clear().then(function() { + // Reload tags, will reset list & lastUpdate + s2s.Tags.load(); + }).catch(function(reason) { + s2s.Logger.error('[core] Cannot clear tags database.'); + s2s.Logger.error(reason); + }); } }); // Check for install/update chrome.runtime.onInstalled.addListener(function(details) { if(details.reason == 'install') { - s2s.Logger.info('[core] Extension installed.'); + s2s.Logger.info('[core] Extension installed.'); } else if(details.reason == 'update') { - var thisVersion = chrome.runtime.getManifest().version; - s2s.Logger.info('[core] Extension updated from '+ details.previousVersion +' to '+ thisVersion +'.'); - - s2s.UpdateService.update(details.previousVersion, thisVersion); + var thisVersion = chrome.runtime.getManifest().version; + + if(details.previousVersion !== thisVersion) { + s2s.Logger.info('[core] Extension updated from '+ details.previousVersion +' to '+ thisVersion +'.'); + + s2s.UpdateService.update(details.previousVersion, thisVersion); + } } }); }); \ No newline at end of file diff --git a/src/background/lib/dexie.js b/src/background/lib/dexie.js new file mode 100644 index 0000000..d01cce4 --- /dev/null +++ b/src/background/lib/dexie.js @@ -0,0 +1,4761 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Dexie = factory()); +}(this, (function () { 'use strict'; + +/* +* Dexie.js - a minimalistic wrapper for IndexedDB +* =============================================== +* +* By David Fahlander, david.fahlander@gmail.com +* +* Version 2.0.0-beta.6, Mon Nov 28 2016 +* www.dexie.com +* Apache License Version 2.0, January 2004, http://www.apache.org/licenses/ +*/ +var keys = Object.keys; +var isArray = Array.isArray; +var _global = typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; + +function extend(obj, extension) { + if (typeof extension !== 'object') return obj; + keys(extension).forEach(function (key) { + obj[key] = extension[key]; + }); + return obj; +} + +var getProto = Object.getPrototypeOf; +var _hasOwn = {}.hasOwnProperty; +function hasOwn(obj, prop) { + return _hasOwn.call(obj, prop); +} + +function props(proto, extension) { + if (typeof extension === 'function') extension = extension(getProto(proto)); + keys(extension).forEach(function (key) { + setProp(proto, key, extension[key]); + }); +} + +var defineProperty = Object.defineProperty; + +function setProp(obj, prop, functionOrGetSet, options) { + defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, "get") && typeof functionOrGetSet.get === 'function' ? { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } : { value: functionOrGetSet, configurable: true, writable: true }, options)); +} + +function derive(Child) { + return { + from: function (Parent) { + Child.prototype = Object.create(Parent.prototype); + setProp(Child.prototype, "constructor", Child); + return { + extend: props.bind(null, Child.prototype) + }; + } + }; +} + +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +function getPropertyDescriptor(obj, prop) { + var pd = getOwnPropertyDescriptor(obj, prop), + proto; + return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop); +} + +var _slice = [].slice; +function slice(args, start, end) { + return _slice.call(args, start, end); +} + +function override(origFunc, overridedFactory) { + return overridedFactory(origFunc); +} + +function doFakeAutoComplete(fn) { + var to = setTimeout(fn, 1000); + clearTimeout(to); +} + +function assert(b) { + if (!b) throw new Error("Assertion Failed"); +} + +function asap(fn) { + if (_global.setImmediate) setImmediate(fn);else setTimeout(fn, 0); +} + + + +/** Generate an object (hash map) based on given array. + * @param extractor Function taking an array item and its index and returning an array of 2 items ([key, value]) to + * instert on the resulting object for each item in the array. If this function returns a falsy value, the + * current item wont affect the resulting object. + */ +function arrayToObject(array, extractor) { + return array.reduce(function (result, item, i) { + var nameAndValue = extractor(item, i); + if (nameAndValue) result[nameAndValue[0]] = nameAndValue[1]; + return result; + }, {}); +} + +function trycatcher(fn, reject) { + return function () { + try { + fn.apply(this, arguments); + } catch (e) { + reject(e); + } + }; +} + +function tryCatch(fn, onerror, args) { + try { + fn.apply(null, args); + } catch (ex) { + onerror && onerror(ex); + } +} + +function getByKeyPath(obj, keyPath) { + // http://www.w3.org/TR/IndexedDB/#steps-for-extracting-a-key-from-a-value-using-a-key-path + if (hasOwn(obj, keyPath)) return obj[keyPath]; // This line is moved from last to first for optimization purpose. + if (!keyPath) return obj; + if (typeof keyPath !== 'string') { + var rv = []; + for (var i = 0, l = keyPath.length; i < l; ++i) { + var val = getByKeyPath(obj, keyPath[i]); + rv.push(val); + } + return rv; + } + var period = keyPath.indexOf('.'); + if (period !== -1) { + var innerObj = obj[keyPath.substr(0, period)]; + return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1)); + } + return undefined; +} + +function setByKeyPath(obj, keyPath, value) { + if (!obj || keyPath === undefined) return; + if ('isFrozen' in Object && Object.isFrozen(obj)) return; + if (typeof keyPath !== 'string' && 'length' in keyPath) { + assert(typeof value !== 'string' && 'length' in value); + for (var i = 0, l = keyPath.length; i < l; ++i) { + setByKeyPath(obj, keyPath[i], value[i]); + } + } else { + var period = keyPath.indexOf('.'); + if (period !== -1) { + var currentKeyPath = keyPath.substr(0, period); + var remainingKeyPath = keyPath.substr(period + 1); + if (remainingKeyPath === "") { + if (value === undefined) delete obj[currentKeyPath];else obj[currentKeyPath] = value; + } else { + var innerObj = obj[currentKeyPath]; + if (!innerObj) innerObj = obj[currentKeyPath] = {}; + setByKeyPath(innerObj, remainingKeyPath, value); + } + } else { + if (value === undefined) delete obj[keyPath];else obj[keyPath] = value; + } + } +} + +function delByKeyPath(obj, keyPath) { + if (typeof keyPath === 'string') setByKeyPath(obj, keyPath, undefined);else if ('length' in keyPath) [].map.call(keyPath, function (kp) { + setByKeyPath(obj, kp, undefined); + }); +} + +function shallowClone(obj) { + var rv = {}; + for (var m in obj) { + if (hasOwn(obj, m)) rv[m] = obj[m]; + } + return rv; +} + +var concat = [].concat; +function flatten(a) { + return concat.apply([], a); +} + +//https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm +var intrinsicTypes = "Boolean,String,Date,RegExp,Blob,File,FileList,ArrayBuffer,DataView,Uint8ClampedArray,ImageData,Map,Set".split(',').concat(flatten([8, 16, 32, 64].map(function (num) { + return ["Int", "Uint", "Float"].map(function (t) { + return t + num + "Array"; + }); +}))).filter(function (t) { + return _global[t]; +}).map(function (t) { + return _global[t]; +}); + +function deepClone(any) { + if (!any || typeof any !== 'object') return any; + var rv; + if (isArray(any)) { + rv = []; + for (var i = 0, l = any.length; i < l; ++i) { + rv.push(deepClone(any[i])); + } + } else if (intrinsicTypes.indexOf(any.constructor) >= 0) { + rv = any; + } else { + rv = any.constructor ? Object.create(any.constructor.prototype) : {}; + for (var prop in any) { + if (hasOwn(any, prop)) { + rv[prop] = deepClone(any[prop]); + } + } + } + return rv; +} + +function getObjectDiff(a, b, rv, prfx) { + // Compares objects a and b and produces a diff object. + rv = rv || {}; + prfx = prfx || ''; + keys(a).forEach(function (prop) { + if (!hasOwn(b, prop)) rv[prfx + prop] = undefined; // Property removed + else { + var ap = a[prop], + bp = b[prop]; + if (typeof ap === 'object' && typeof bp === 'object' && ap && bp && ap.constructor === bp.constructor) + // Same type of object but its properties may have changed + getObjectDiff(ap, bp, rv, prfx + prop + ".");else if (ap !== bp) rv[prfx + prop] = b[prop]; // Primitive value changed + } + }); + keys(b).forEach(function (prop) { + if (!hasOwn(a, prop)) { + rv[prfx + prop] = b[prop]; // Property added + } + }); + return rv; +} + +// If first argument is iterable or array-like, return it as an array +var iteratorSymbol = typeof Symbol !== 'undefined' && Symbol.iterator; +var getIteratorOf = iteratorSymbol ? function (x) { + var i; + return x != null && (i = x[iteratorSymbol]) && i.apply(x); +} : function () { + return null; +}; + +var NO_CHAR_ARRAY = {}; +// Takes one or several arguments and returns an array based on the following criteras: +// * If several arguments provided, return arguments converted to an array in a way that +// still allows javascript engine to optimize the code. +// * If single argument is an array, return a clone of it. +// * If this-pointer equals NO_CHAR_ARRAY, don't accept strings as valid iterables as a special +// case to the two bullets below. +// * If single argument is an iterable, convert it to an array and return the resulting array. +// * If single argument is array-like (has length of type number), convert it to an array. +function getArrayOf(arrayLike) { + var i, a, x, it; + if (arguments.length === 1) { + if (isArray(arrayLike)) return arrayLike.slice(); + if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string') return [arrayLike]; + if (it = getIteratorOf(arrayLike)) { + a = []; + while (x = it.next(), !x.done) { + a.push(x.value); + }return a; + } + if (arrayLike == null) return [arrayLike]; + i = arrayLike.length; + if (typeof i === 'number') { + a = new Array(i); + while (i--) { + a[i] = arrayLike[i]; + }return a; + } + return [arrayLike]; + } + i = arguments.length; + a = new Array(i); + while (i--) { + a[i] = arguments[i]; + }return a; +} + +// By default, debug will be true only if platform is a web platform and its page is served from localhost. +// When debug = true, error's stacks will contain asyncronic long stacks. +var debug = typeof location !== 'undefined' && +// By default, use debug mode if served from localhost. +/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href); + +function setDebug(value, filter) { + debug = value; + libraryFilter = filter; +} + +var libraryFilter = function () { + return true; +}; + +var NEEDS_THROW_FOR_STACK = !new Error("").stack; + +function getErrorWithStack() { + "use strict"; + + if (NEEDS_THROW_FOR_STACK) try { + // Doing something naughty in strict mode here to trigger a specific error + // that can be explicitely ignored in debugger's exception settings. + // If we'd just throw new Error() here, IE's debugger's exception settings + // will just consider it as "exception thrown by javascript code" which is + // something you wouldn't want it to ignore. + getErrorWithStack.arguments; + throw new Error(); // Fallback if above line don't throw. + } catch (e) { + return e; + } + return new Error(); +} + +function prettyStack(exception, numIgnoredFrames) { + var stack = exception.stack; + if (!stack) return ""; + numIgnoredFrames = numIgnoredFrames || 0; + if (stack.indexOf(exception.name) === 0) numIgnoredFrames += (exception.name + exception.message).split('\n').length; + return stack.split('\n').slice(numIgnoredFrames).filter(libraryFilter).map(function (frame) { + return "\n" + frame; + }).join(''); +} + +function deprecated(what, fn) { + return function () { + console.warn(what + " is deprecated. See https://github.com/dfahlander/Dexie.js/wiki/Deprecations. " + prettyStack(getErrorWithStack(), 1)); + return fn.apply(this, arguments); + }; +} + +var dexieErrorNames = ['Modify', 'Bulk', 'OpenFailed', 'VersionChange', 'Schema', 'Upgrade', 'InvalidTable', 'MissingAPI', 'NoSuchDatabase', 'InvalidArgument', 'SubTransaction', 'Unsupported', 'Internal', 'DatabaseClosed', 'PrematureCommit', 'ForeignAwait']; + +var idbDomErrorNames = ['Unknown', 'Constraint', 'Data', 'TransactionInactive', 'ReadOnly', 'Version', 'NotFound', 'InvalidState', 'InvalidAccess', 'Abort', 'Timeout', 'QuotaExceeded', 'Syntax', 'DataClone']; + +var errorList = dexieErrorNames.concat(idbDomErrorNames); + +var defaultTexts = { + VersionChanged: "Database version changed by other database connection", + DatabaseClosed: "Database has been closed", + Abort: "Transaction aborted", + TransactionInactive: "Transaction has already completed or failed" +}; + +// +// DexieError - base class of all out exceptions. +// +function DexieError(name, msg) { + // Reason we don't use ES6 classes is because: + // 1. It bloats transpiled code and increases size of minified code. + // 2. It doesn't give us much in this case. + // 3. It would require sub classes to call super(), which + // is not needed when deriving from Error. + this._e = getErrorWithStack(); + this.name = name; + this.message = msg; +} + +derive(DexieError).from(Error).extend({ + stack: { + get: function () { + return this._stack || (this._stack = this.name + ": " + this.message + prettyStack(this._e, 2)); + } + }, + toString: function () { + return this.name + ": " + this.message; + } +}); + +function getMultiErrorMessage(msg, failures) { + return msg + ". Errors: " + failures.map(function (f) { + return f.toString(); + }).filter(function (v, i, s) { + return s.indexOf(v) === i; + }) // Only unique error strings + .join('\n'); +} + +// +// ModifyError - thrown in Collection.modify() +// Specific constructor because it contains members failures and failedKeys. +// +function ModifyError(msg, failures, successCount, failedKeys) { + this._e = getErrorWithStack(); + this.failures = failures; + this.failedKeys = failedKeys; + this.successCount = successCount; +} +derive(ModifyError).from(DexieError); + +function BulkError(msg, failures) { + this._e = getErrorWithStack(); + this.name = "BulkError"; + this.failures = failures; + this.message = getMultiErrorMessage(msg, failures); +} +derive(BulkError).from(DexieError); + +// +// +// Dynamically generate error names and exception classes based +// on the names in errorList. +// +// + +// Map of {ErrorName -> ErrorName + "Error"} +var errnames = errorList.reduce(function (obj, name) { + return obj[name] = name + "Error", obj; +}, {}); + +// Need an alias for DexieError because we're gonna create subclasses with the same name. +var BaseException = DexieError; +// Map of {ErrorName -> exception constructor} +var exceptions = errorList.reduce(function (obj, name) { + // Let the name be "DexieError" because this name may + // be shown in call stack and when debugging. DexieError is + // the most true name because it derives from DexieError, + // and we cannot change Function.name programatically without + // dynamically create a Function object, which would be considered + // 'eval-evil'. + var fullName = name + "Error"; + function DexieError(msgOrInner, inner) { + this._e = getErrorWithStack(); + this.name = fullName; + if (!msgOrInner) { + this.message = defaultTexts[name] || fullName; + this.inner = null; + } else if (typeof msgOrInner === 'string') { + this.message = msgOrInner; + this.inner = inner || null; + } else if (typeof msgOrInner === 'object') { + this.message = msgOrInner.name + ' ' + msgOrInner.message; + this.inner = msgOrInner; + } + } + derive(DexieError).from(BaseException); + obj[name] = DexieError; + return obj; +}, {}); + +// Use ECMASCRIPT standard exceptions where applicable: +exceptions.Syntax = SyntaxError; +exceptions.Type = TypeError; +exceptions.Range = RangeError; + +var exceptionMap = idbDomErrorNames.reduce(function (obj, name) { + obj[name + "Error"] = exceptions[name]; + return obj; +}, {}); + +function mapError(domError, message) { + if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name]) return domError; + var rv = new exceptionMap[domError.name](message || domError.message, domError); + if ("stack" in domError) { + // Derive stack from inner exception if it has a stack + setProp(rv, "stack", { get: function () { + return this.inner.stack; + } }); + } + return rv; +} + +var fullNameExceptions = errorList.reduce(function (obj, name) { + if (["Syntax", "Type", "Range"].indexOf(name) === -1) obj[name + "Error"] = exceptions[name]; + return obj; +}, {}); + +fullNameExceptions.ModifyError = ModifyError; +fullNameExceptions.DexieError = DexieError; +fullNameExceptions.BulkError = BulkError; + +function nop() {} +function mirror(val) { + return val; +} +function pureFunctionChain(f1, f2) { + // Enables chained events that takes ONE argument and returns it to the next function in chain. + // This pattern is used in the hook("reading") event. + if (f1 == null || f1 === mirror) return f2; + return function (val) { + return f2(f1(val)); + }; +} + +function callBoth(on1, on2) { + return function () { + on1.apply(this, arguments); + on2.apply(this, arguments); + }; +} + +function hookCreatingChain(f1, f2) { + // Enables chained events that takes several arguments and may modify first argument by making a modification and then returning the same instance. + // This pattern is used in the hook("creating") event. + if (f1 === nop) return f2; + return function () { + var res = f1.apply(this, arguments); + if (res !== undefined) arguments[0] = res; + var onsuccess = this.onsuccess, + // In case event listener has set this.onsuccess + onerror = this.onerror; // In case event listener has set this.onerror + this.onsuccess = null; + this.onerror = null; + var res2 = f2.apply(this, arguments); + if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; + if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; + return res2 !== undefined ? res2 : res; + }; +} + +function hookDeletingChain(f1, f2) { + if (f1 === nop) return f2; + return function () { + f1.apply(this, arguments); + var onsuccess = this.onsuccess, + // In case event listener has set this.onsuccess + onerror = this.onerror; // In case event listener has set this.onerror + this.onsuccess = this.onerror = null; + f2.apply(this, arguments); + if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; + if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; + }; +} + +function hookUpdatingChain(f1, f2) { + if (f1 === nop) return f2; + return function (modifications) { + var res = f1.apply(this, arguments); + extend(modifications, res); // If f1 returns new modifications, extend caller's modifications with the result before calling next in chain. + var onsuccess = this.onsuccess, + // In case event listener has set this.onsuccess + onerror = this.onerror; // In case event listener has set this.onerror + this.onsuccess = null; + this.onerror = null; + var res2 = f2.apply(this, arguments); + if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; + if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; + return res === undefined ? res2 === undefined ? undefined : res2 : extend(res, res2); + }; +} + +function reverseStoppableEventChain(f1, f2) { + if (f1 === nop) return f2; + return function () { + if (f2.apply(this, arguments) === false) return false; + return f1.apply(this, arguments); + }; +} + + + +function promisableChain(f1, f2) { + if (f1 === nop) return f2; + return function () { + var res = f1.apply(this, arguments); + if (res && typeof res.then === 'function') { + var thiz = this, + i = arguments.length, + args = new Array(i); + while (i--) { + args[i] = arguments[i]; + }return res.then(function () { + return f2.apply(thiz, args); + }); + } + return f2.apply(this, arguments); + }; +} + +// +// Promise and Zone (PSD) for Dexie library +// +// I started out writing this Promise class by copying promise-light (https://github.com/taylorhakes/promise-light) by +// https://github.com/taylorhakes - an A+ and ECMASCRIPT 6 compliant Promise implementation. +// +// In previous versions this was fixed by not calling setTimeout when knowing that the resolve() or reject() came from another +// tick. In Dexie v1.4.0, I've rewritten the Promise class entirely. Just some fragments of promise-light is left. I use +// another strategy now that simplifies everything a lot: to always execute callbacks in a new micro-task, but have an own micro-task +// engine that is indexedDB compliant across all browsers. +// Promise class has also been optimized a lot with inspiration from bluebird - to avoid closures as much as possible. +// Also with inspiration from bluebird, asyncronic stacks in debug mode. +// +// Specific non-standard features of this Promise class: +// * Custom zone support (a.k.a. PSD) with ability to keep zones also when using native promises as well as +// native async / await. +// * Promise.follow() method built upon the custom zone engine, that allows user to track all promises created from current stack frame +// and below + all promises that those promises creates or awaits. +// * Detect any unhandled promise in a PSD-scope (PSD.onunhandled). +// +// David Fahlander, https://github.com/dfahlander +// + +// Just a pointer that only this module knows about. +// Used in Promise constructor to emulate a private constructor. +var INTERNAL = {}; + +// Async stacks (long stacks) must not grow infinitely. +var LONG_STACKS_CLIP_LIMIT = 100; +var MAX_LONG_STACKS = 20; +var ZONE_ECHO_LIMIT = 7; +var nativePromiseInstanceAndProto = function () { + try { + // Be able to patch native async functions + return new Function('let F=async ()=>{},p=F();return [p,Object.getPrototypeOf(p),Promise.resolve(),F.constructor];')(); + } catch (e) { + var P = _global.Promise; + return P ? [P.resolve(), P.prototype, P.resolve()] : []; + } +}(); +var resolvedNativePromise = nativePromiseInstanceAndProto[0]; +var nativePromiseProto = nativePromiseInstanceAndProto[1]; +var resolvedGlobalPromise = nativePromiseInstanceAndProto[2]; +var nativePromiseThen = nativePromiseProto && nativePromiseProto.then; + +var NativePromise = resolvedNativePromise && resolvedNativePromise.constructor; +var AsyncFunction = nativePromiseInstanceAndProto[3]; + +var stack_being_generated = false; + +/* The default function used only for the very first promise in a promise chain. + As soon as then promise is resolved or rejected, all next tasks will be executed in micro ticks + emulated in this module. For indexedDB compatibility, this means that every method needs to + execute at least one promise before doing an indexedDB operation. Dexie will always call + db.ready().then() for every operation to make sure the indexedDB event is started in an + indexedDB-compatible emulated micro task loop. +*/ +var schedulePhysicalTick = resolvedGlobalPromise ? function () { + resolvedGlobalPromise.then(physicalTick); +} : _global.setImmediate ? +// setImmediate supported. Those modern platforms also supports Function.bind(). +setImmediate.bind(null, physicalTick) : _global.MutationObserver ? +// MutationObserver supported +function () { + var hiddenDiv = document.createElement("div"); + new MutationObserver(function () { + physicalTick(); + hiddenDiv = null; + }).observe(hiddenDiv, { attributes: true }); + hiddenDiv.setAttribute('i', '1'); +} : +// No support for setImmediate or MutationObserver. No worry, setTimeout is only called +// once time. Every tick that follows will be our emulated micro tick. +// Could have uses setTimeout.bind(null, 0, physicalTick) if it wasnt for that FF13 and below has a bug +function () { + setTimeout(physicalTick, 0); +}; + +// Configurable through Promise.scheduler. +// Don't export because it would be unsafe to let unknown +// code call it unless they do try..catch within their callback. +// This function can be retrieved through getter of Promise.scheduler though, +// but users must not do Promise.scheduler = myFuncThatThrowsException +var asap$1 = function (callback, args) { + microtickQueue.push([callback, args]); + if (needsNewPhysicalTick) { + schedulePhysicalTick(); + needsNewPhysicalTick = false; + } +}; + +var isOutsideMicroTick = true; +var needsNewPhysicalTick = true; +var unhandledErrors = []; +var rejectingErrors = []; +var currentFulfiller = null; +var rejectionMapper = mirror; // Remove in next major when removing error mapping of DOMErrors and DOMExceptions + +var globalPSD = { + id: 'global', + global: true, + ref: 0, + unhandleds: [], + onunhandled: globalError, + pgp: false, + env: {}, + finalize: function () { + this.unhandleds.forEach(function (uh) { + try { + globalError(uh[0], uh[1]); + } catch (e) {} + }); + } +}; + +var PSD = globalPSD; + +var microtickQueue = []; // Callbacks to call in this or next physical tick. +var numScheduledCalls = 0; // Number of listener-calls left to do in this physical tick. +var tickFinalizers = []; // Finalizers to call when there are no more async calls scheduled within current physical tick. + +function Promise(fn) { + if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); + this._listeners = []; + this.onuncatched = nop; // Deprecate in next major. Not needed. Better to use global error handler. + + // A library may set `promise._lib = true;` after promise is created to make resolve() or reject() + // execute the microtask engine implicitely within the call to resolve() or reject(). + // To remain A+ compliant, a library must only set `_lib=true` if it can guarantee that the stack + // only contains library code when calling resolve() or reject(). + // RULE OF THUMB: ONLY set _lib = true for promises explicitely resolving/rejecting directly from + // global scope (event handler, timer etc)! + this._lib = false; + // Current async scope + var psd = this._PSD = PSD; + + if (debug) { + this._stackHolder = getErrorWithStack(); + this._prev = null; + this._numPrev = 0; // Number of previous promises (for long stacks) + } + + if (typeof fn !== 'function') { + if (fn !== INTERNAL) throw new TypeError('Not a function'); + // Private constructor (INTERNAL, state, value). + // Used internally by Promise.resolve() and Promise.reject(). + this._state = arguments[1]; + this._value = arguments[2]; + if (this._state === false) handleRejection(this, this._value); // Map error, set stack and addPossiblyUnhandledError(). + return; + } + + this._state = null; // null (=pending), false (=rejected) or true (=resolved) + this._value = null; // error or result + ++psd.ref; // Refcounting current scope + executePromiseTask(this, fn); +} + +// Prepare a property descriptor to put onto Promise.prototype.then +var thenProp = { + get: function () { + var psd = PSD, + microTaskId = totalEchoes; + + function then(onFulfilled, onRejected) { + var _this = this; + + var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes); + if (possibleAwait) decrementExpectedAwaits(); + var rv = new Promise(function (resolve, reject) { + propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait), resolve, reject, psd)); + }); + debug && linkToPreviousPromise(rv, this); + return rv; + } + + then._tQzo = true; // For idempotense, see setter below. + + return then; + }, + // Be idempotent and allow another framework (such as zone.js or another instance of a Dexie.Promise module) to replace Promise.prototype.then + // and when that framework wants to restore the original property, we must identify that and restore the original property descriptor. + set: function (value) { + setProp(this, 'then', value && value._tQzo ? thenProp : // Restore to original property descriptor. + { + get: function () { + return value; // Getter returning provided value (behaves like value is just changed) + }, + set: thenProp.set // Keep a setter that is prepared to restore original. + }); + } +}; + +props(Promise.prototype, { + then: thenProp, // Defined above. + _then: function (onFulfilled, onRejected) { + // A little tinier version of then() that don't have to create a resulting promise. + propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD)); + }, + + catch: function (onRejected) { + if (arguments.length === 1) return this.then(null, onRejected); + // First argument is the Error type to catch + var type = arguments[0], + handler = arguments[1]; + return typeof type === 'function' ? this.then(null, function (err) { + return ( + // Catching errors by its constructor type (similar to java / c++ / c#) + // Sample: promise.catch(TypeError, function (e) { ... }); + err instanceof type ? handler(err) : PromiseReject(err) + ); + }) : this.then(null, function (err) { + return ( + // Catching errors by the error.name property. Makes sense for indexedDB where error type + // is always DOMError but where e.name tells the actual error type. + // Sample: promise.catch('ConstraintError', function (e) { ... }); + err && err.name === type ? handler(err) : PromiseReject(err) + ); + }); + }, + + finally: function (onFinally) { + return this.then(function (value) { + onFinally(); + return value; + }, function (err) { + onFinally(); + return PromiseReject(err); + }); + }, + + stack: { + get: function () { + if (this._stack) return this._stack; + try { + stack_being_generated = true; + var stacks = getStack(this, [], MAX_LONG_STACKS); + var stack = stacks.join("\nFrom previous: "); + if (this._state !== null) this._stack = stack; // Stack may be updated on reject. + return stack; + } finally { + stack_being_generated = false; + } + } + }, + + timeout: function (ms, msg) { + var _this2 = this; + + return ms < Infinity ? new Promise(function (resolve, reject) { + var handle = setTimeout(function () { + return reject(new exceptions.Timeout(msg)); + }, ms); + _this2.then(resolve, reject).finally(clearTimeout.bind(null, handle)); + }) : this; + } +}); + +// Now that Promise.prototype is defined, we have all it takes to set globalPSD.env. +// Environment globals snapshotted on leaving global zone +globalPSD.env = snapShot(); + +function Listener(onFulfilled, onRejected, resolve, reject, zone) { + this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; + this.onRejected = typeof onRejected === 'function' ? onRejected : null; + this.resolve = resolve; + this.reject = reject; + this.psd = zone; +} + +// Promise Static Properties +props(Promise, { + all: function () { + var values = getArrayOf.apply(null, arguments) // Supports iterables, implicit arguments and array-like. + .map(onPossibleParallellAsync); // Handle parallell async/awaits + return new Promise(function (resolve, reject) { + if (values.length === 0) resolve([]); + var remaining = values.length; + values.forEach(function (a, i) { + return Promise.resolve(a).then(function (x) { + values[i] = x; + if (! --remaining) resolve(values); + }, reject); + }); + }); + }, + + resolve: function (value) { + if (value instanceof Promise) return value; + if (value && typeof value.then === 'function') return new Promise(function (resolve, reject) { + value.then(resolve, reject); + }); + var rv = new Promise(INTERNAL, true, value); + linkToPreviousPromise(rv, currentFulfiller); + return rv; + }, + + reject: PromiseReject, + + race: function () { + var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); + return new Promise(function (resolve, reject) { + values.map(function (value) { + return Promise.resolve(value).then(resolve, reject); + }); + }); + }, + + PSD: { + get: function () { + return PSD; + }, + set: function (value) { + return PSD = value; + } + }, + + //totalEchoes: {get: ()=>totalEchoes}, + + //task: {get: ()=>task}, + + newPSD: newScope, + + usePSD: usePSD, + + scheduler: { + get: function () { + return asap$1; + }, + set: function (value) { + asap$1 = value; + } + }, + + rejectionMapper: { + get: function () { + return rejectionMapper; + }, + set: function (value) { + rejectionMapper = value; + } // Map reject failures + }, + + follow: function (fn, zoneProps) { + return new Promise(function (resolve, reject) { + return newScope(function (resolve, reject) { + var psd = PSD; + psd.unhandleds = []; // For unhandled standard- or 3rd party Promises. Checked at psd.finalize() + psd.onunhandled = reject; // Triggered directly on unhandled promises of this library. + psd.finalize = callBoth(function () { + var _this3 = this; + + // Unhandled standard or 3rd part promises are put in PSD.unhandleds and + // examined upon scope completion while unhandled rejections in this Promise + // will trigger directly through psd.onunhandled + run_at_end_of_this_or_next_physical_tick(function () { + _this3.unhandleds.length === 0 ? resolve() : reject(_this3.unhandleds[0]); + }); + }, psd.finalize); + fn(); + }, zoneProps, resolve, reject); + }); + } +}); + +/** +* Take a potentially misbehaving resolver function and make sure +* onFulfilled and onRejected are only called once. +* +* Makes no guarantees about asynchrony. +*/ +function executePromiseTask(promise, fn) { + // Promise Resolution Procedure: + // https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure + try { + fn(function (value) { + if (promise._state !== null) return; // Already settled + if (value === promise) throw new TypeError('A promise cannot be resolved with itself.'); + var shouldExecuteTick = promise._lib && beginMicroTickScope(); + if (value && typeof value.then === 'function') { + executePromiseTask(promise, function (resolve, reject) { + value instanceof Promise ? value._then(resolve, reject) : value.then(resolve, reject); + }); + } else { + promise._state = true; + promise._value = value; + propagateAllListeners(promise); + } + if (shouldExecuteTick) endMicroTickScope(); + }, handleRejection.bind(null, promise)); // If Function.bind is not supported. Exception is handled in catch below + } catch (ex) { + handleRejection(promise, ex); + } +} + +function handleRejection(promise, reason) { + rejectingErrors.push(reason); + if (promise._state !== null) return; + var shouldExecuteTick = promise._lib && beginMicroTickScope(); + reason = rejectionMapper(reason); + promise._state = false; + promise._value = reason; + debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () { + var origProp = getPropertyDescriptor(reason, "stack"); + reason._promise = promise; + setProp(reason, "stack", { + get: function () { + return stack_being_generated ? origProp && (origProp.get ? origProp.get.apply(reason) : origProp.value) : promise.stack; + } + }); + }); + // Add the failure to a list of possibly uncaught errors + addPossiblyUnhandledError(promise); + propagateAllListeners(promise); + if (shouldExecuteTick) endMicroTickScope(); +} + +function propagateAllListeners(promise) { + //debug && linkToPreviousPromise(promise); + var listeners = promise._listeners; + promise._listeners = []; + for (var i = 0, len = listeners.length; i < len; ++i) { + propagateToListener(promise, listeners[i]); + } + var psd = promise._PSD; + --psd.ref || psd.finalize(); // if psd.ref reaches zero, call psd.finalize(); + if (numScheduledCalls === 0) { + // If numScheduledCalls is 0, it means that our stack is not in a callback of a scheduled call, + // and that no deferreds where listening to this rejection or success. + // Since there is a risk that our stack can contain application code that may + // do stuff after this code is finished that may generate new calls, we cannot + // call finalizers here. + ++numScheduledCalls; + asap$1(function () { + if (--numScheduledCalls === 0) finalizePhysicalTick(); // Will detect unhandled errors + }, []); + } +} + +function propagateToListener(promise, listener) { + if (promise._state === null) { + promise._listeners.push(listener); + return; + } + + var cb = promise._state ? listener.onFulfilled : listener.onRejected; + if (cb === null) { + // This Listener doesnt have a listener for the event being triggered (onFulfilled or onReject) so lets forward the event to any eventual listeners on the Promise instance returned by then() or catch() + return (promise._state ? listener.resolve : listener.reject)(promise._value); + } + ++listener.psd.ref; + ++numScheduledCalls; + asap$1(callListener, [cb, promise, listener]); +} + +function callListener(cb, promise, listener) { + try { + // Set static variable currentFulfiller to the promise that is being fullfilled, + // so that we connect the chain of promises (for long stacks support) + currentFulfiller = promise; + + // Call callback and resolve our listener with it's return value. + var ret, + value = promise._value; + + if (promise._state) { + // cb is onResolved + ret = cb(value); + } else { + // cb is onRejected + if (rejectingErrors.length) rejectingErrors = []; + ret = cb(value); + if (rejectingErrors.indexOf(value) === -1) markErrorAsHandled(promise); // Callback didnt do Promise.reject(err) nor reject(err) onto another promise. + } + listener.resolve(ret); + } catch (e) { + // Exception thrown in callback. Reject our listener. + listener.reject(e); + } finally { + // Restore env and currentFulfiller. + currentFulfiller = null; + if (--numScheduledCalls === 0) finalizePhysicalTick(); + --listener.psd.ref || listener.psd.finalize(); + } +} + +function getStack(promise, stacks, limit) { + if (stacks.length === limit) return stacks; + var stack = ""; + if (promise._state === false) { + var failure = promise._value, + errorName, + message; + + if (failure != null) { + errorName = failure.name || "Error"; + message = failure.message || failure; + stack = prettyStack(failure, 0); + } else { + errorName = failure; // If error is undefined or null, show that. + message = ""; + } + stacks.push(errorName + (message ? ": " + message : "") + stack); + } + if (debug) { + stack = prettyStack(promise._stackHolder, 2); + if (stack && stacks.indexOf(stack) === -1) stacks.push(stack); + if (promise._prev) getStack(promise._prev, stacks, limit); + } + return stacks; +} + +function linkToPreviousPromise(promise, prev) { + // Support long stacks by linking to previous completed promise. + var numPrev = prev ? prev._numPrev + 1 : 0; + if (numPrev < LONG_STACKS_CLIP_LIMIT) { + // Prohibit infinite Promise loops to get an infinite long memory consuming "tail". + promise._prev = prev; + promise._numPrev = numPrev; + } +} + +/* The callback to schedule with setImmediate() or setTimeout(). + It runs a virtual microtick and executes any callback registered in microtickQueue. + */ +function physicalTick() { + beginMicroTickScope() && endMicroTickScope(); +} + +function beginMicroTickScope() { + var wasRootExec = isOutsideMicroTick; + isOutsideMicroTick = false; + needsNewPhysicalTick = false; + return wasRootExec; +} + +/* Executes micro-ticks without doing try..catch. + This can be possible because we only use this internally and + the registered functions are exception-safe (they do try..catch + internally before calling any external method). If registering + functions in the microtickQueue that are not exception-safe, this + would destroy the framework and make it instable. So we don't export + our asap method. +*/ +function endMicroTickScope() { + var callbacks, i, l; + do { + while (microtickQueue.length > 0) { + callbacks = microtickQueue; + microtickQueue = []; + l = callbacks.length; + for (i = 0; i < l; ++i) { + var item = callbacks[i]; + item[0].apply(null, item[1]); + } + } + } while (microtickQueue.length > 0); + isOutsideMicroTick = true; + needsNewPhysicalTick = true; +} + +function finalizePhysicalTick() { + var unhandledErrs = unhandledErrors; + unhandledErrors = []; + unhandledErrs.forEach(function (p) { + p._PSD.onunhandled.call(null, p._value, p); + }); + var finalizers = tickFinalizers.slice(0); // Clone first because finalizer may remove itself from list. + var i = finalizers.length; + while (i) { + finalizers[--i](); + } +} + +function run_at_end_of_this_or_next_physical_tick(fn) { + function finalizer() { + fn(); + tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1); + } + tickFinalizers.push(finalizer); + ++numScheduledCalls; + asap$1(function () { + if (--numScheduledCalls === 0) finalizePhysicalTick(); + }, []); +} + +function addPossiblyUnhandledError(promise) { + // Only add to unhandledErrors if not already there. The first one to add to this list + // will be upon the first rejection so that the root cause (first promise in the + // rejection chain) is the one listed. + if (!unhandledErrors.some(function (p) { + return p._value === promise._value; + })) unhandledErrors.push(promise); +} + +function markErrorAsHandled(promise) { + // Called when a reject handled is actually being called. + // Search in unhandledErrors for any promise whos _value is this promise_value (list + // contains only rejected promises, and only one item per error) + var i = unhandledErrors.length; + while (i) { + if (unhandledErrors[--i]._value === promise._value) { + // Found a promise that failed with this same error object pointer, + // Remove that since there is a listener that actually takes care of it. + unhandledErrors.splice(i, 1); + return; + } + } +} + +function PromiseReject(reason) { + return new Promise(INTERNAL, false, reason); +} + +function wrap(fn, errorCatcher) { + var psd = PSD; + return function () { + var wasRootExec = beginMicroTickScope(), + outerScope = PSD; + + try { + switchToZone(psd, true); + return fn.apply(this, arguments); + } catch (e) { + errorCatcher && errorCatcher(e); + } finally { + switchToZone(outerScope, false); + if (wasRootExec) endMicroTickScope(); + } + }; +} + +// +// variables used for native await support +// +var task = { awaits: 0, echoes: 0, id: 0 }; // The ongoing macro-task when using zone-echoing. +var taskCounter = 0; // ID counter for macro tasks. +var zoneStack = []; // Stack of left zones to restore asynchronically. +var zoneEchoes = 0; // zoneEchoes is a must in order to persist zones between native await expressions. +var totalEchoes = 0; // ID counter for micro-tasks. Used to detect possible native await in our Promise.prototype.then. + + +var zone_id_counter = 0; +function newScope(fn, props$$1, a1, a2) { + var parent = PSD, + psd = Object.create(parent); + psd.parent = parent; + psd.ref = 0; + psd.global = false; + psd.id = ++zone_id_counter; + // Prepare for promise patching (done in usePSD): + var globalEnv = globalPSD.env; + psd.env = nativePromiseThen ? { + Promise: Promise, // Changing window.Promise could be omitted for Chrome and Edge, where IDB+Promise plays well! + all: Promise.all, + race: Promise.race, + resolve: Promise.resolve, + reject: Promise.reject, + nthen: getPatchedPromiseThen(globalEnv.nthen, psd), // native then + gthen: getPatchedPromiseThen(globalEnv.gthen, psd) // global then + } : {}; + if (props$$1) extend(psd, props$$1); + + // unhandleds and onunhandled should not be specifically set here. + // Leave them on parent prototype. + // unhandleds.push(err) will push to parent's prototype + // onunhandled() will call parents onunhandled (with this scope's this-pointer though!) + ++parent.ref; + psd.finalize = function () { + --this.parent.ref || this.parent.finalize(); + }; + var rv = usePSD(psd, fn, a1, a2); + if (psd.ref === 0) psd.finalize(); + return rv; +} + +// Function to call if scopeFunc returns NativePromise +// Also for each NativePromise in the arguments to Promise.all() +function incrementExpectedAwaits() { + if (!task.id) task.id = ++taskCounter; + ++task.awaits; + task.echoes += ZONE_ECHO_LIMIT; + return task.id; +} +// Function to call when 'then' calls back on a native promise where onAwaitExpected() had been called. +// Also call this when a native await calls then method on a promise. In that case, don't supply +// sourceTaskId because we already know it refers to current task. +function decrementExpectedAwaits(sourceTaskId) { + if (!task.awaits || sourceTaskId && sourceTaskId !== task.id) return; + if (--task.awaits === 0) task.id = 0; + task.echoes = task.awaits * ZONE_ECHO_LIMIT; // Will reset echoes to 0 if awaits is 0. +} + +// Call from Promise.all() and Promise.race() +function onPossibleParallellAsync(possiblePromise) { + if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) { + incrementExpectedAwaits(); + return possiblePromise.then(function (x) { + decrementExpectedAwaits(); + return x; + }, function (e) { + decrementExpectedAwaits(); + return rejection(e); + }); + } + return possiblePromise; +} + +function zoneEnterEcho(targetZone) { + ++totalEchoes; + if (!task.echoes || --task.echoes === 0) { + task.echoes = task.id = 0; // Cancel zone echoing. + } + + zoneStack.push(PSD); + switchToZone(targetZone, true); +} + +function zoneLeaveEcho() { + var zone = zoneStack[zoneStack.length - 1]; + zoneStack.pop(); + switchToZone(zone, false); +} + +function switchToZone(targetZone, bEnteringZone) { + var currentZone = PSD; + if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (! --zoneEchoes || targetZone !== PSD)) { + // Enter or leave zone asynchronically as well, so that tasks initiated during current tick + // will be surrounded by the zone when they are invoked. + enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho); + } + if (targetZone === PSD) return; + + PSD = targetZone; // The actual zone switch occurs at this line. + + // Snapshot on every leave from global zone. + if (currentZone === globalPSD) globalPSD.env = snapShot(); + + var GlobalPromise = globalPSD.env.Promise; + if (GlobalPromise) { + // Global environment has a promise at this time. Polyfilled or not. Let's patch the global environment. + // Swich environments (may be PSD-zone or the global zone. Both apply.) + var targetEnv = targetZone.env; + + // Change Promise.prototype.then for native and global Promise (they MAY differ on polyfilled environments, but both can be accessed) + // Must be done on each zone change because the patched method contains targetZone in its closure. + nativePromiseProto.then = targetEnv.nthen; + GlobalPromise.prototype.then = targetEnv.gthen; + + if (currentZone.global || targetZone.global) { + // Leaving or entering global zone. It's time to patch / restore global Promise. + + // Set this Promise to window.Promise so that transiled async functions will work on Firefox, Safari and IE, as well as with Zonejs and angular. + _global.Promise = targetEnv.Promise; + + // Support Promise.all() etc to work indexedDB-safe also when people are including es6-promise as a module (they might + // not be accessing global.Promise but a local reference to it) + GlobalPromise.all = targetEnv.all; + GlobalPromise.race = targetEnv.race; + GlobalPromise.resolve = targetEnv.resolve; + GlobalPromise.reject = targetEnv.reject; + } + } +} + +function snapShot() { + var GlobalPromise = _global.Promise; + return GlobalPromise ? { + Promise: GlobalPromise, + all: GlobalPromise.all, + race: GlobalPromise.race, + resolve: GlobalPromise.resolve, + reject: GlobalPromise.reject, + nthen: nativePromiseProto.then, + gthen: GlobalPromise.prototype.then + } : {}; +} + +function usePSD(psd, fn, a1, a2, a3) { + var outerScope = PSD; + try { + switchToZone(psd, true); + return fn(a1, a2, a3); + } finally { + switchToZone(outerScope, false); + } +} + +function enqueueNativeMicroTask(job) { + // + // Precondition: nativePromiseThen !== undefined + // + nativePromiseThen.call(resolvedNativePromise, job); +} + +function nativeAwaitCompatibleWrap(fn, zone, possibleAwait) { + return typeof fn !== 'function' ? fn : function () { + var outerZone = PSD; + if (possibleAwait) incrementExpectedAwaits(); + switchToZone(zone, true); + try { + return fn.apply(this, arguments); + } finally { + switchToZone(outerZone, false); + } + }; +} + +function getPatchedPromiseThen(origThen, zone) { + return function (onResolved, onRejected) { + return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone, false), nativeAwaitCompatibleWrap(onRejected, zone, false)); + }; +} + +var UNHANDLEDREJECTION = "unhandledrejection"; + +function globalError(err, promise) { + var rv; + try { + rv = promise.onuncatched(err); + } catch (e) {} + if (rv !== false) try { + var event, + eventData = { promise: promise, reason: err }; + if (_global.document && document.createEvent) { + event = document.createEvent('Event'); + event.initEvent(UNHANDLEDREJECTION, true, true); + extend(event, eventData); + } else if (_global.CustomEvent) { + event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData }); + extend(event, eventData); + } + if (event && _global.dispatchEvent) { + dispatchEvent(event); + if (!_global.PromiseRejectionEvent && _global.onunhandledrejection) + // No native support for PromiseRejectionEvent but user has set window.onunhandledrejection. Manually call it. + try { + _global.onunhandledrejection(event); + } catch (_) {} + } + if (!event.defaultPrevented) { + console.warn('Unhandled rejection: ' + (err.stack || err)); + } + } catch (e) {} +} + +doFakeAutoComplete(function () { + // Simplify the job for VS Intellisense. This piece of code is one of the keys to the new marvellous intellisense support in Dexie. + asap$1 = function (fn, args) { + setTimeout(function () { + fn.apply(null, args); + }, 0); + }; +}); + +var rejection = Promise.reject; + +function Events(ctx) { + var evs = {}; + var rv = function (eventName, subscriber) { + if (subscriber) { + // Subscribe. If additional arguments than just the subscriber was provided, forward them as well. + var i = arguments.length, + args = new Array(i - 1); + while (--i) { + args[i - 1] = arguments[i]; + }evs[eventName].subscribe.apply(null, args); + return ctx; + } else if (typeof eventName === 'string') { + // Return interface allowing to fire or unsubscribe from event + return evs[eventName]; + } + }; + rv.addEventType = add; + + for (var i = 1, l = arguments.length; i < l; ++i) { + add(arguments[i]); + } + + return rv; + + function add(eventName, chainFunction, defaultFunction) { + if (typeof eventName === 'object') return addConfiguredEvents(eventName); + if (!chainFunction) chainFunction = reverseStoppableEventChain; + if (!defaultFunction) defaultFunction = nop; + + var context = { + subscribers: [], + fire: defaultFunction, + subscribe: function (cb) { + if (context.subscribers.indexOf(cb) === -1) { + context.subscribers.push(cb); + context.fire = chainFunction(context.fire, cb); + } + }, + unsubscribe: function (cb) { + context.subscribers = context.subscribers.filter(function (fn) { + return fn !== cb; + }); + context.fire = context.subscribers.reduce(chainFunction, defaultFunction); + } + }; + evs[eventName] = rv[eventName] = context; + return context; + } + + function addConfiguredEvents(cfg) { + // events(this, {reading: [functionChain, nop]}); + keys(cfg).forEach(function (eventName) { + var args = cfg[eventName]; + if (isArray(args)) { + add(eventName, cfg[eventName][0], cfg[eventName][1]); + } else if (args === 'asap') { + // Rather than approaching event subscription using a functional approach, we here do it in a for-loop where subscriber is executed in its own stack + // enabling that any exception that occur wont disturb the initiator and also not nescessary be catched and forgotten. + var context = add(eventName, mirror, function fire() { + // Optimazation-safe cloning of arguments into args. + var i = arguments.length, + args = new Array(i); + while (i--) { + args[i] = arguments[i]; + } // All each subscriber: + context.subscribers.forEach(function (fn) { + asap(function fireEvent() { + fn.apply(null, args); + }); + }); + }); + } else throw new exceptions.InvalidArgument("Invalid event config"); + }); + } +} + +/* + * Dexie.js - a minimalistic wrapper for IndexedDB + * =============================================== + * + * By David Fahlander, david.fahlander@gmail.com + * + * Version 2.0.0-beta.6, Mon Nov 28 2016 + * + * http://dexie.org + * + * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/ + */ + +var DEXIE_VERSION = '2.0.0-beta.6'; +var maxString = String.fromCharCode(65535); +var maxKey = function () { + try { + IDBKeyRange.only([[]]);return [[]]; + } catch (e) { + return maxString; + } +}(); +var minKey = -Infinity; +var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array."; +var STRING_EXPECTED = "String expected."; +var connections = []; +var isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent); +var hasIEDeleteObjectStoreBug = isIEOrEdge; +var hangsOnDeleteLargeKeyRange = isIEOrEdge; +var dexieStackFrameFilter = function (frame) { + return !/(dexie\.js|dexie\.min\.js)/.test(frame); +}; + +setDebug(debug, dexieStackFrameFilter); + +function Dexie(dbName, options) { + /// Specify only if you wich to control which addons that should run on this instance + var deps = Dexie.dependencies; + var opts = extend({ + // Default Options + addons: Dexie.addons, // Pick statically registered addons by default + autoOpen: true, // Don't require db.open() explicitely. + indexedDB: deps.indexedDB, // Backend IndexedDB api. Default to IDBShim or browser env. + IDBKeyRange: deps.IDBKeyRange // Backend IDBKeyRange api. Default to IDBShim or browser env. + }, options); + var addons = opts.addons, + autoOpen = opts.autoOpen, + indexedDB = opts.indexedDB, + IDBKeyRange = opts.IDBKeyRange; + + var globalSchema = this._dbSchema = {}; + var versions = []; + var dbStoreNames = []; + var allTables = {}; + /// + var idbdb = null; // Instance of IDBDatabase + var dbOpenError = null; + var isBeingOpened = false; + var openComplete = false; + var READONLY = "readonly", + READWRITE = "readwrite"; + var db = this; + var dbReadyResolve, + dbReadyPromise = new Promise(function (resolve) { + dbReadyResolve = resolve; + }), + cancelOpen, + openCanceller = new Promise(function (_, reject) { + cancelOpen = reject; + }); + var autoSchema = true; + var hasNativeGetDatabaseNames = !!getNativeGetDatabaseNamesFn(indexedDB), + hasGetAll; + + function init() { + // Default subscribers to "versionchange" and "blocked". + // Can be overridden by custom handlers. If custom handlers return false, these default + // behaviours will be prevented. + db.on("versionchange", function (ev) { + // Default behavior for versionchange event is to close database connection. + // Caller can override this behavior by doing db.on("versionchange", function(){ return false; }); + // Let's not block the other window from making it's delete() or open() call. + // NOTE! This event is never fired in IE,Edge or Safari. + if (ev.newVersion > 0) console.warn('Another connection wants to upgrade database \'' + db.name + '\'. Closing db now to resume the upgrade.');else console.warn('Another connection wants to delete database \'' + db.name + '\'. Closing db now to resume the delete request.'); + db.close(); + // In many web applications, it would be recommended to force window.reload() + // when this event occurs. To do that, subscribe to the versionchange event + // and call window.location.reload(true) if ev.newVersion > 0 (not a deletion) + // The reason for this is that your current web app obviously has old schema code that needs + // to be updated. Another window got a newer version of the app and needs to upgrade DB but + // your window is blocking it unless we close it here. + }); + db.on("blocked", function (ev) { + if (!ev.newVersion || ev.newVersion < ev.oldVersion) console.warn('Dexie.delete(\'' + db.name + '\') was blocked');else console.warn('Upgrade \'' + db.name + '\' blocked by other connection holding version ' + ev.oldVersion / 10); + }); + } + + // + // + // + // ------------------------- Versioning Framework--------------------------- + // + // + // + + this.version = function (versionNumber) { + /// + /// + if (idbdb || isBeingOpened) throw new exceptions.Schema("Cannot add version when database is open"); + this.verno = Math.max(this.verno, versionNumber); + var versionInstance = versions.filter(function (v) { + return v._cfg.version === versionNumber; + })[0]; + if (versionInstance) return versionInstance; + versionInstance = new Version(versionNumber); + versions.push(versionInstance); + versions.sort(lowerVersionFirst); + // Disable autoschema mode, as at least one version is specified. + autoSchema = false; + return versionInstance; + }; + + function Version(versionNumber) { + this._cfg = { + version: versionNumber, + storesSource: null, + dbschema: {}, + tables: {}, + contentUpgrade: null + }; + this.stores({}); // Derive earlier schemas by default. + } + + extend(Version.prototype, { + stores: function (stores) { + /// + /// Defines the schema for a particular version + /// + /// + /// Example:
+ /// {users: "id++,first,last,&username,*email",
+ /// passwords: "id++,&username"}
+ ///
+ /// Syntax: {Table: "[primaryKey][++],[&][*]index1,[&][*]index2,..."}

+ /// Special characters:
+ /// "&" means unique key,
+ /// "*" means value is multiEntry,
+ /// "++" means auto-increment and only applicable for primary key
+ /// + this._cfg.storesSource = this._cfg.storesSource ? extend(this._cfg.storesSource, stores) : stores; + + // Derive stores from earlier versions if they are not explicitely specified as null or a new syntax. + var storesSpec = {}; + versions.forEach(function (version) { + // 'versions' is always sorted by lowest version first. + extend(storesSpec, version._cfg.storesSource); + }); + + var dbschema = this._cfg.dbschema = {}; + this._parseStoresSpec(storesSpec, dbschema); + // Update the latest schema to this version + // Update API + globalSchema = db._dbSchema = dbschema; + removeTablesApi([allTables, db, Transaction.prototype]); // Keep Transaction.prototype even though it should be depr. + setApiOnPlace([allTables, db, Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema); + dbStoreNames = keys(dbschema); + return this; + }, + upgrade: function (upgradeFunction) { + /// Function that performs upgrading actions. + var self = this; + fakeAutoComplete(function () { + upgradeFunction(db._createTransaction(READWRITE, keys(self._cfg.dbschema), self._cfg.dbschema)); // BUGBUG: No code completion for prev version's tables wont appear. + }); + this._cfg.contentUpgrade = upgradeFunction; + return this; + }, + _parseStoresSpec: function (stores, outSchema) { + keys(stores).forEach(function (tableName) { + if (stores[tableName] !== null) { + var instanceTemplate = {}; + var indexes = parseIndexSyntax(stores[tableName]); + var primKey = indexes.shift(); + if (primKey.multi) throw new exceptions.Schema("Primary key cannot be multi-valued"); + if (primKey.keyPath) setByKeyPath(instanceTemplate, primKey.keyPath, primKey.auto ? 0 : primKey.keyPath); + indexes.forEach(function (idx) { + if (idx.auto) throw new exceptions.Schema("Only primary key can be marked as autoIncrement (++)"); + if (!idx.keyPath) throw new exceptions.Schema("Index must have a name and cannot be an empty string"); + setByKeyPath(instanceTemplate, idx.keyPath, idx.compound ? idx.keyPath.map(function () { + return ""; + }) : ""); + }); + outSchema[tableName] = new TableSchema(tableName, primKey, indexes, instanceTemplate); + } + }); + } + }); + + function runUpgraders(oldVersion, idbtrans, reject) { + var trans = db._createTransaction(READWRITE, dbStoreNames, globalSchema); + trans.create(idbtrans); + trans._completion.catch(reject); + var rejectTransaction = trans._reject.bind(trans); + newScope(function () { + PSD.trans = trans; + if (oldVersion === 0) { + // Create tables: + keys(globalSchema).forEach(function (tableName) { + createTable(idbtrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes); + }); + Promise.follow(function () { + return db.on.populate.fire(trans); + }).catch(rejectTransaction); + } else updateTablesAndIndexes(oldVersion, trans, idbtrans).catch(rejectTransaction); + }); + } + + function updateTablesAndIndexes(oldVersion, trans, idbtrans) { + // Upgrade version to version, step-by-step from oldest to newest version. + // Each transaction object will contain the table set that was current in that version (but also not-yet-deleted tables from its previous version) + var queue = []; + var oldVersionStruct = versions.filter(function (version) { + return version._cfg.version === oldVersion; + })[0]; + if (!oldVersionStruct) throw new exceptions.Upgrade("Dexie specification of currently installed DB version is missing"); + globalSchema = db._dbSchema = oldVersionStruct._cfg.dbschema; + var anyContentUpgraderHasRun = false; + + var versToRun = versions.filter(function (v) { + return v._cfg.version > oldVersion; + }); + versToRun.forEach(function (version) { + /// + queue.push(function () { + var oldSchema = globalSchema; + var newSchema = version._cfg.dbschema; + adjustToExistingIndexNames(oldSchema, idbtrans); + adjustToExistingIndexNames(newSchema, idbtrans); + globalSchema = db._dbSchema = newSchema; + var diff = getSchemaDiff(oldSchema, newSchema); + // Add tables + diff.add.forEach(function (tuple) { + createTable(idbtrans, tuple[0], tuple[1].primKey, tuple[1].indexes); + }); + // Change tables + diff.change.forEach(function (change) { + if (change.recreate) { + throw new exceptions.Upgrade("Not yet support for changing primary key"); + } else { + var store = idbtrans.objectStore(change.name); + // Add indexes + change.add.forEach(function (idx) { + addIndex(store, idx); + }); + // Update indexes + change.change.forEach(function (idx) { + store.deleteIndex(idx.name); + addIndex(store, idx); + }); + // Delete indexes + change.del.forEach(function (idxName) { + store.deleteIndex(idxName); + }); + } + }); + if (version._cfg.contentUpgrade) { + anyContentUpgraderHasRun = true; + return Promise.follow(function () { + version._cfg.contentUpgrade(trans); + }); + } + }); + queue.push(function (idbtrans) { + if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) { + // Dont delete old tables if ieBug is present and a content upgrader has run. Let tables be left in DB so far. This needs to be taken care of. + var newSchema = version._cfg.dbschema; + // Delete old tables + deleteRemovedTables(newSchema, idbtrans); + } + }); + }); + + // Now, create a queue execution engine + function runQueue() { + return queue.length ? Promise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) : Promise.resolve(); + } + + return runQueue().then(function () { + createMissingTables(globalSchema, idbtrans); // At last, make sure to create any missing tables. (Needed by addons that add stores to DB without specifying version) + }); + } + + function getSchemaDiff(oldSchema, newSchema) { + var diff = { + del: [], // Array of table names + add: [], // Array of [tableName, newDefinition] + change: [] // Array of {name: tableName, recreate: newDefinition, del: delIndexNames, add: newIndexDefs, change: changedIndexDefs} + }; + for (var table in oldSchema) { + if (!newSchema[table]) diff.del.push(table); + } + for (table in newSchema) { + var oldDef = oldSchema[table], + newDef = newSchema[table]; + if (!oldDef) { + diff.add.push([table, newDef]); + } else { + var change = { + name: table, + def: newDef, + recreate: false, + del: [], + add: [], + change: [] + }; + if (oldDef.primKey.src !== newDef.primKey.src) { + // Primary key has changed. Remove and re-add table. + change.recreate = true; + diff.change.push(change); + } else { + // Same primary key. Just find out what differs: + var oldIndexes = oldDef.idxByName; + var newIndexes = newDef.idxByName; + for (var idxName in oldIndexes) { + if (!newIndexes[idxName]) change.del.push(idxName); + } + for (idxName in newIndexes) { + var oldIdx = oldIndexes[idxName], + newIdx = newIndexes[idxName]; + if (!oldIdx) change.add.push(newIdx);else if (oldIdx.src !== newIdx.src) change.change.push(newIdx); + } + if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) { + diff.change.push(change); + } + } + } + } + return diff; + } + + function createTable(idbtrans, tableName, primKey, indexes) { + /// + var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ? { keyPath: primKey.keyPath, autoIncrement: primKey.auto } : { autoIncrement: primKey.auto }); + indexes.forEach(function (idx) { + addIndex(store, idx); + }); + return store; + } + + function createMissingTables(newSchema, idbtrans) { + keys(newSchema).forEach(function (tableName) { + if (!idbtrans.db.objectStoreNames.contains(tableName)) { + createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes); + } + }); + } + + function deleteRemovedTables(newSchema, idbtrans) { + for (var i = 0; i < idbtrans.db.objectStoreNames.length; ++i) { + var storeName = idbtrans.db.objectStoreNames[i]; + if (newSchema[storeName] == null) { + idbtrans.db.deleteObjectStore(storeName); + } + } + } + + function addIndex(store, idx) { + store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi }); + } + + // + // + // Dexie Protected API + // + // + + this._allTables = allTables; + + this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { + return new Transaction(mode, storeNames, dbschema, parentTransaction); + }; + + /* Generate a temporary transaction when db operations are done outside a transactino scope. + */ + function tempTransaction(mode, storeNames, fn) { + // Last argument is "writeLocked". But this doesnt apply to oneshot direct db operations, so we ignore it. + if (!openComplete && !PSD.letThrough) { + if (!isBeingOpened) { + if (!autoOpen) return rejection(new exceptions.DatabaseClosed()); + db.open().catch(nop); // Open in background. If if fails, it will be catched by the final promise anyway. + } + return dbReadyPromise.then(function () { + return tempTransaction(mode, storeNames, fn); + }); + } else { + var trans = db._createTransaction(mode, storeNames, globalSchema).create(); + return trans._promise(mode, function (resolve, reject) { + return newScope(function () { + // OPTIMIZATION POSSIBLE? newScope() not needed because it's already done in _promise. + PSD.trans = trans; + return fn(resolve, reject, trans); + }); + }).then(function (result) { + // Instead of resolving value directly, wait with resolving it until transaction has completed. + // Otherwise the data would not be in the DB if requesting it in the then() operation. + // Specifically, to ensure that the following expression will work: + // + // db.friends.put({name: "Arne"}).then(function () { + // db.friends.where("name").equals("Arne").count(function(count) { + // assert (count === 1); + // }); + // }); + // + return trans._completion.then(function () { + return result; + }); + }); /*.catch(err => { // Don't do this as of now. If would affect bulk- and modify methods in a way that could be more intuitive. But wait! Maybe change in next major. + trans._reject(err); + return rejection(err); + });*/ + } + } + + this._whenReady = function (fn) { + return fake || openComplete || PSD.letThrough ? fn() : new Promise(function (resolve, reject) { + if (!isBeingOpened) { + if (!autoOpen) { + reject(new exceptions.DatabaseClosed()); + return; + } + db.open().catch(nop); // Open in background. If if fails, it will be catched by the final promise anyway. + } + dbReadyPromise.then(resolve, reject); + }).then(fn); + }; + + // + // + // + // + // Dexie API + // + // + // + + this.verno = 0; + + this.open = function () { + if (isBeingOpened || idbdb) return dbReadyPromise.then(function () { + return dbOpenError ? rejection(dbOpenError) : db; + }); + debug && (openCanceller._stackHolder = getErrorWithStack()); // Let stacks point to when open() was called rather than where new Dexie() was called. + isBeingOpened = true; + dbOpenError = null; + openComplete = false; + + // Function pointers to call when the core opening process completes. + var resolveDbReady = dbReadyResolve, + + // upgradeTransaction to abort on failure. + upgradeTransaction = null; + + return Promise.race([openCanceller, new Promise(function (resolve, reject) { + doFakeAutoComplete(function () { + return resolve(); + }); + + // Multiply db.verno with 10 will be needed to workaround upgrading bug in IE: + // IE fails when deleting objectStore after reading from it. + // A future version of Dexie.js will stopover an intermediate version to workaround this. + // At that point, we want to be backward compatible. Could have been multiplied with 2, but by using 10, it is easier to map the number to the real version number. + + // If no API, throw! + if (!indexedDB) throw new exceptions.MissingAPI("indexedDB API not found. If using IE10+, make sure to run your code on a server URL " + "(not locally). If using old Safari versions, make sure to include indexedDB polyfill."); + + var req = autoSchema ? indexedDB.open(dbName) : indexedDB.open(dbName, Math.round(db.verno * 10)); + if (!req) throw new exceptions.MissingAPI("IndexedDB API not available"); // May happen in Safari private mode, see https://github.com/dfahlander/Dexie.js/issues/134 + req.onerror = eventRejectHandler(reject); + req.onblocked = wrap(fireOnBlocked); + req.onupgradeneeded = wrap(function (e) { + upgradeTransaction = req.transaction; + if (autoSchema && !db._allowEmptyDB) { + // Unless an addon has specified db._allowEmptyDB, lets make the call fail. + // Caller did not specify a version or schema. Doing that is only acceptable for opening alread existing databases. + // If onupgradeneeded is called it means database did not exist. Reject the open() promise and make sure that we + // do not create a new database by accident here. + req.onerror = preventDefault; // Prohibit onabort error from firing before we're done! + upgradeTransaction.abort(); // Abort transaction (would hope that this would make DB disappear but it doesnt.) + // Close database and delete it. + req.result.close(); + var delreq = indexedDB.deleteDatabase(dbName); // The upgrade transaction is atomic, and javascript is single threaded - meaning that there is no risk that we delete someone elses database here! + delreq.onsuccess = delreq.onerror = wrap(function () { + reject(new exceptions.NoSuchDatabase('Database ' + dbName + ' doesnt exist')); + }); + } else { + upgradeTransaction.onerror = eventRejectHandler(reject); + var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion; // Safari 8 fix. + runUpgraders(oldVer / 10, upgradeTransaction, reject, req); + } + }, reject); + + req.onsuccess = wrap(function () { + // Core opening procedure complete. Now let's just record some stuff. + upgradeTransaction = null; + idbdb = req.result; + connections.push(db); // Used for emulating versionchange event on IE/Edge/Safari. + + if (autoSchema) readGlobalSchema();else if (idbdb.objectStoreNames.length > 0) { + try { + adjustToExistingIndexNames(globalSchema, idbdb.transaction(safariMultiStoreFix(idbdb.objectStoreNames), READONLY)); + } catch (e) { + // Safari may bail out if > 1 store names. However, this shouldnt be a showstopper. Issue #120. + } + } + + idbdb.onversionchange = wrap(function (ev) { + db._vcFired = true; // detect implementations that not support versionchange (IE/Edge/Safari) + db.on("versionchange").fire(ev); + }); + + if (!hasNativeGetDatabaseNames) { + // Update localStorage with list of database names + globalDatabaseList(function (databaseNames) { + if (databaseNames.indexOf(dbName) === -1) return databaseNames.push(dbName); + }); + } + + resolve(); + }, reject); + })]).then(function () { + // Before finally resolving the dbReadyPromise and this promise, + // call and await all on('ready') subscribers: + // Dexie.vip() makes subscribers able to use the database while being opened. + // This is a must since these subscribers take part of the opening procedure. + return Dexie.vip(db.on.ready.fire); + }).then(function () { + // Resolve the db.open() with the db instance. + isBeingOpened = false; + return db; + }).catch(function (err) { + try { + // Did we fail within onupgradeneeded? Make sure to abort the upgrade transaction so it doesnt commit. + upgradeTransaction && upgradeTransaction.abort(); + } catch (e) {} + isBeingOpened = false; // Set before calling db.close() so that it doesnt reject openCanceller again (leads to unhandled rejection event). + db.close(); // Closes and resets idbdb, removes connections, resets dbReadyPromise and openCanceller so that a later db.open() is fresh. + // A call to db.close() may have made on-ready subscribers fail. Use dbOpenError if set, since err could be a follow-up error on that. + dbOpenError = err; // Record the error. It will be used to reject further promises of db operations. + return rejection(dbOpenError); + }).finally(function () { + openComplete = true; + resolveDbReady(); // dbReadyPromise is resolved no matter if open() rejects or resolved. It's just to wake up waiters. + }); + }; + + this.close = function () { + var idx = connections.indexOf(db); + if (idx >= 0) connections.splice(idx, 1); + if (idbdb) { + try { + idbdb.close(); + } catch (e) {} + idbdb = null; + } + autoOpen = false; + dbOpenError = new exceptions.DatabaseClosed(); + if (isBeingOpened) cancelOpen(dbOpenError); + // Reset dbReadyPromise promise: + dbReadyPromise = new Promise(function (resolve) { + dbReadyResolve = resolve; + }); + openCanceller = new Promise(function (_, reject) { + cancelOpen = reject; + }); + }; + + this.delete = function () { + var hasArguments = arguments.length > 0; + return new Promise(function (resolve, reject) { + if (hasArguments) throw new exceptions.InvalidArgument("Arguments not allowed in db.delete()"); + if (isBeingOpened) { + dbReadyPromise.then(doDelete); + } else { + doDelete(); + } + function doDelete() { + db.close(); + var req = indexedDB.deleteDatabase(dbName); + req.onsuccess = wrap(function () { + if (!hasNativeGetDatabaseNames) { + globalDatabaseList(function (databaseNames) { + var pos = databaseNames.indexOf(dbName); + if (pos >= 0) return databaseNames.splice(pos, 1); + }); + } + resolve(); + }); + req.onerror = eventRejectHandler(reject); + req.onblocked = fireOnBlocked; + } + }); + }; + + this.backendDB = function () { + return idbdb; + }; + + this.isOpen = function () { + return idbdb !== null; + }; + this.hasFailed = function () { + return dbOpenError !== null; + }; + this.dynamicallyOpened = function () { + return autoSchema; + }; + + // + // Properties + // + this.name = dbName; + + // db.tables - an array of all Table instances. + setProp(this, "tables", { + get: function () { + /// + return keys(allTables).map(function (name) { + return allTables[name]; + }); + } + }); + + // + // Events + // + this.on = Events(this, "populate", "blocked", "versionchange", { ready: [promisableChain, nop] }); + + this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) { + return function (subscriber, bSticky) { + Dexie.vip(function () { + if (openComplete) { + // Database already open. Call subscriber asap. + if (!dbOpenError) Promise.resolve().then(subscriber); + // bSticky: Also subscribe to future open sucesses (after close / reopen) + if (bSticky) subscribe(subscriber); + } else { + // Database not yet open. Subscribe to it. + subscribe(subscriber); + // If bSticky is falsy, make sure to unsubscribe subscriber when fired once. + if (!bSticky) subscribe(function unsubscribe() { + db.on.ready.unsubscribe(subscriber); + db.on.ready.unsubscribe(unsubscribe); + }); + } + }); + }; + }); + + fakeAutoComplete(function () { + db.on("populate").fire(db._createTransaction(READWRITE, dbStoreNames, globalSchema)); + }); + + this.transaction = function () { + /// + /// + /// + /// "r" for readonly, or "rw" for readwrite + /// Table instance, Array of Table instances, String or String Array of object stores to include in the transaction + /// Function to execute with transaction + + var args = extractTransactionArgs.apply(this, arguments); + return this._transaction.apply(this, args); + }; + + function extractTransactionArgs(mode, _tableArgs_, scopeFunc) { + // Let table arguments be all arguments between mode and last argument. + var i = arguments.length; + if (i < 2) throw new exceptions.InvalidArgument("Too few arguments"); + // Prevent optimzation killer (https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments) + // and clone arguments except the first one into local var 'args'. + var args = new Array(i - 1); + while (--i) { + args[i - 1] = arguments[i]; + } // Let scopeFunc be the last argument and pop it so that args now only contain the table arguments. + scopeFunc = args.pop(); + var tables = flatten(args); // Support using array as middle argument, or a mix of arrays and non-arrays. + return [mode, tables, scopeFunc]; + } + + this._transaction = function (mode, tables, scopeFunc) { + var parentTransaction = PSD.trans; + // Check if parent transactions is bound to this db instance, and if caller wants to reuse it + if (!parentTransaction || parentTransaction.db !== db || mode.indexOf('!') !== -1) parentTransaction = null; + var onlyIfCompatible = mode.indexOf('?') !== -1; + mode = mode.replace('!', '').replace('?', ''); // Ok. Will change arguments[0] as well but we wont touch arguments henceforth. + + try { + // + // Get storeNames from arguments. Either through given table instances, or through given table names. + // + var storeNames = tables.map(function (table) { + var storeName = table instanceof Table ? table.name : table; + if (typeof storeName !== 'string') throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed"); + return storeName; + }); + + // + // Resolve mode. Allow shortcuts "r" and "rw". + // + if (mode == "r" || mode == READONLY) mode = READONLY;else if (mode == "rw" || mode == READWRITE) mode = READWRITE;else throw new exceptions.InvalidArgument("Invalid transaction mode: " + mode); + + if (parentTransaction) { + // Basic checks + if (parentTransaction.mode === READONLY && mode === READWRITE) { + if (onlyIfCompatible) { + // Spawn new transaction instead. + parentTransaction = null; + } else throw new exceptions.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY"); + } + if (parentTransaction) { + storeNames.forEach(function (storeName) { + if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) { + if (onlyIfCompatible) { + // Spawn new transaction instead. + parentTransaction = null; + } else throw new exceptions.SubTransaction("Table " + storeName + " not included in parent transaction."); + } + }); + } + } + } catch (e) { + return parentTransaction ? parentTransaction._promise(null, function (_, reject) { + reject(e); + }) : rejection(e); + } + // If this is a sub-transaction, lock the parent and then launch the sub-transaction. + return parentTransaction ? parentTransaction._promise(mode, enterTransactionScope, "lock") : db._whenReady(enterTransactionScope); + + function enterTransactionScope() { + return Promise.resolve().then(function () { + // Keep a pointer to last non-transactional PSD to use if someone calls Dexie.ignoreTransaction(). + var transless = PSD.transless || PSD; + // Our transaction. + //return new Promise((resolve, reject) => { + var trans = db._createTransaction(mode, storeNames, globalSchema, parentTransaction); + // Let the transaction instance be part of a Promise-specific data (PSD) value. + var zoneProps = { + trans: trans, + transless: transless + }; + + if (parentTransaction) { + // Emulate transaction commit awareness for inner transaction (must 'commit' when the inner transaction has no more operations ongoing) + trans.idbtrans = parentTransaction.idbtrans; + } else { + trans.create(); // Create the backend transaction so that complete() or error() will trigger even if no operation is made upon it. + } + + // Support for native async await. + if (scopeFunc.constructor === AsyncFunction) { + incrementExpectedAwaits(); + } + + var returnValue; + var promiseFollowed = Promise.follow(function () { + // Finally, call the scope function with our table and transaction arguments. + returnValue = scopeFunc.call(trans, trans); + if (returnValue) { + if (returnValue.constructor === NativePromise) { + var decrementor = decrementExpectedAwaits.bind(null, null); + returnValue.then(decrementor, decrementor); + } else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') { + // scopeFunc returned an iterator with throw-support. Handle yield as await. + returnValue = awaitIterator(returnValue); + } + } + }, zoneProps); + return (returnValue && typeof returnValue.then === 'function' ? + // Promise returned. User uses promise-style transactions. + Promise.resolve(returnValue).then(function (x) { + return trans.active ? x // Transaction still active. Continue. + : rejection(new exceptions.PrematureCommit("Transaction committed too early. See http://bit.ly/2eVASrf")); + }) + // No promise returned. Wait for all outstanding promises before continuing. + : promiseFollowed.then(function () { + return returnValue; + })).then(function (x) { + // sub transactions don't react to idbtrans.oncomplete. We must trigger a completion: + if (parentTransaction) trans._resolve(); + // wait for trans._completion + // (if root transaction, this means 'complete' event. If sub-transaction, we've just fired it ourselves) + return trans._completion.then(function () { + return x; + }); + }).catch(function (e) { + trans._reject(e); // Yes, above then-handler were maybe not called because of an unhandled rejection in scopeFunc! + return rejection(e); + }); + }); + } + }; + + this.table = function (tableName) { + /// + if (fake && autoSchema) return new Table(tableName); + if (!hasOwn(allTables, tableName)) { + throw new exceptions.InvalidTable('Table ' + tableName + ' does not exist'); + } + return allTables[tableName]; + }; + + // + // + // + // Table Class + // + // + // + function Table(name, tableSchema, optionalTrans) { + /// + this.name = name; + this.schema = tableSchema; + this._tx = optionalTrans; + this.hook = allTables[name] ? allTables[name].hook : Events(null, { + "creating": [hookCreatingChain, nop], + "reading": [pureFunctionChain, mirror], + "updating": [hookUpdatingChain, nop], + "deleting": [hookDeletingChain, nop] + }); + } + + function BulkErrorHandlerCatchAll(errorList, done, supportHooks) { + return (supportHooks ? hookedEventRejectHandler : eventRejectHandler)(function (e) { + errorList.push(e); + done && done(); + }); + } + + function bulkDelete(idbstore, trans, keysOrTuples, hasDeleteHook, deletingHook) { + // If hasDeleteHook, keysOrTuples must be an array of tuples: [[key1, value2],[key2,value2],...], + // else keysOrTuples must be just an array of keys: [key1, key2, ...]. + return new Promise(function (resolve, reject) { + var len = keysOrTuples.length, + lastItem = len - 1; + if (len === 0) return resolve(); + if (!hasDeleteHook) { + for (var i = 0; i < len; ++i) { + var req = idbstore.delete(keysOrTuples[i]); + req.onerror = eventRejectHandler(reject); + if (i === lastItem) req.onsuccess = wrap(function () { + return resolve(); + }); + } + } else { + var hookCtx, + errorHandler = hookedEventRejectHandler(reject), + successHandler = hookedEventSuccessHandler(null); + tryCatch(function () { + for (var i = 0; i < len; ++i) { + hookCtx = { onsuccess: null, onerror: null }; + var tuple = keysOrTuples[i]; + deletingHook.call(hookCtx, tuple[0], tuple[1], trans); + var req = idbstore.delete(tuple[0]); + req._hookCtx = hookCtx; + req.onerror = errorHandler; + if (i === lastItem) req.onsuccess = hookedEventSuccessHandler(resolve);else req.onsuccess = successHandler; + } + }, function (err) { + hookCtx.onerror && hookCtx.onerror(err); + throw err; + }); + } + }); + } + + props(Table.prototype, { + + // + // Table Protected Methods + // + + _trans: function getTransaction(mode, fn, writeLocked) { + var trans = this._tx || PSD.trans; + return trans && trans.db === db ? trans === PSD.trans ? trans._promise(mode, fn, writeLocked) : newScope(function () { + return trans._promise(mode, fn, writeLocked); + }, { trans: trans, transless: PSD.transless || PSD }) : tempTransaction(mode, [this.name], fn); + }, + _idbstore: function getIDBObjectStore(mode, fn, writeLocked) { + if (fake) return new Promise(fn); // Simplify the work for Intellisense/Code completion. + var tableName = this.name; + function supplyIdbStore(resolve, reject, trans) { + if (trans.storeNames.indexOf(tableName) === -1) throw new exceptions.NotFound("Table" + tableName + " not part of transaction"); + return fn(resolve, reject, trans.idbtrans.objectStore(tableName), trans); + } + return this._trans(mode, supplyIdbStore, writeLocked); + }, + + // + // Table Public Methods + // + get: function (keyOrCrit, cb) { + if (keyOrCrit && keyOrCrit.constructor === Object) return this.where(keyOrCrit).first(cb); + var self = this; + return this._idbstore(READONLY, function (resolve, reject, idbstore) { + fake && resolve(self.schema.instanceTemplate); + var req = idbstore.get(keyOrCrit); + req.onerror = eventRejectHandler(reject); + req.onsuccess = wrap(function () { + resolve(self.hook.reading.fire(req.result)); + }, reject); + }).then(cb); + }, + where: function (indexOrCrit) { + if (typeof indexOrCrit === 'string') return new WhereClause(this, indexOrCrit); + if (isArray(indexOrCrit)) return new WhereClause(this, '[' + indexOrCrit.join('+') + ']'); + // indexOrCrit is an object map of {[keyPath]:value} + var keyPaths = keys(indexOrCrit); + if (keyPaths.length === 1) + // Only one critera. This was the easy case: + return this.where(keyPaths[0]).equals(indexOrCrit[keyPaths[0]]); + + // Multiple criterias. + // Let's try finding a compound index that matches all keyPaths in + // arbritary order: + var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) { + return ix.compound && keyPaths.every(function (keyPath) { + return ix.keyPath.indexOf(keyPath) >= 0; + }) && ix.keyPath.every(function (keyPath) { + return keyPaths.indexOf(keyPath) >= 0; + }); + })[0]; + + if (compoundIndex && maxKey !== maxString) + // Cool! We found such compound index + // and this browser supports compound indexes (maxKey !== maxString)! + return this.where(compoundIndex.name).equals(compoundIndex.keyPath.map(function (kp) { + return indexOrCrit[kp]; + })); + + if (!compoundIndex) console.warn('The query ' + JSON.stringify(indexOrCrit) + ' on ' + this.name + ' would benefit of a ' + ('compound index [' + keyPaths.join('+') + ']')); + + // Ok, now let's fallback to finding at least one matching index + // and filter the rest. + var idxByName = this.schema.idxByName; + var simpleIndex = keyPaths.reduce(function (r, keyPath) { + return [r[0] || idxByName[keyPath], r[0] || !idxByName[keyPath] ? combine(r[1], function (x) { + return '' + getByKeyPath(x, keyPath) == '' + indexOrCrit[keyPath]; + }) : r[1]]; + }, [null, null]); + + var idx = simpleIndex[0]; + return idx ? this.where(idx.name).equals(indexOrCrit[idx.keyPath]).filter(simpleIndex[1]) : compoundIndex ? this.filter(simpleIndex[1]) : // Has compound but browser bad. Allow filter. + this.where(keyPaths).equals(''); // No index at all. Fail lazily. + }, + count: function (cb) { + return this.toCollection().count(cb); + }, + offset: function (offset) { + return this.toCollection().offset(offset); + }, + limit: function (numRows) { + return this.toCollection().limit(numRows); + }, + reverse: function () { + return this.toCollection().reverse(); + }, + filter: function (filterFunction) { + return this.toCollection().and(filterFunction); + }, + each: function (fn) { + return this.toCollection().each(fn); + }, + toArray: function (cb) { + return this.toCollection().toArray(cb); + }, + orderBy: function (index) { + return new Collection(new WhereClause(this, isArray(index) ? '[' + index.join('+') + ']' : index)); + }, + + toCollection: function () { + return new Collection(new WhereClause(this)); + }, + + mapToClass: function (constructor, structure) { + /// + /// Map table to a javascript constructor function. Objects returned from the database will be instances of this class, making + /// it possible to the instanceOf operator as well as extending the class using constructor.prototype.method = function(){...}. + /// + /// Constructor function representing the class. + /// Helps IDE code completion by knowing the members that objects contain and not just the indexes. Also + /// know what type each member has. Example: {name: String, emailAddresses: [String], password} + this.schema.mappedClass = constructor; + var instanceTemplate = Object.create(constructor.prototype); + if (structure) { + // structure and instanceTemplate is for IDE code competion only while constructor.prototype is for actual inheritance. + applyStructure(instanceTemplate, structure); + } + this.schema.instanceTemplate = instanceTemplate; + + // Now, subscribe to the when("reading") event to make all objects that come out from this table inherit from given class + // no matter which method to use for reading (Table.get() or Table.where(...)... ) + var readHook = function (obj) { + if (!obj) return obj; // No valid object. (Value is null). Return as is. + // Create a new object that derives from constructor: + var res = Object.create(constructor.prototype); + // Clone members: + for (var m in obj) { + if (hasOwn(obj, m)) try { + res[m] = obj[m]; + } catch (_) {} + }return res; + }; + + if (this.schema.readHook) { + this.hook.reading.unsubscribe(this.schema.readHook); + } + this.schema.readHook = readHook; + this.hook("reading", readHook); + return constructor; + }, + defineClass: function (structure) { + /// + /// Define all members of the class that represents the table. This will help code completion of when objects are read from the database + /// as well as making it possible to extend the prototype of the returned constructor function. + /// + /// Helps IDE code completion by knowing the members that objects contain and not just the indexes. Also + /// know what type each member has. Example: {name: String, emailAddresses: [String], properties: {shoeSize: Number}} + return this.mapToClass(Dexie.defineClass(structure), structure); + }, + + bulkDelete: function (keys$$1) { + if (this.hook.deleting.fire === nop) { + return this._idbstore(READWRITE, function (resolve, reject, idbstore, trans) { + resolve(bulkDelete(idbstore, trans, keys$$1, false, nop)); + }); + } else { + return this.where(':id').anyOf(keys$$1).delete().then(function () {}); // Resolve with undefined. + } + }, + bulkPut: function (objects, keys$$1) { + var _this = this; + + return this._idbstore(READWRITE, function (resolve, reject, idbstore) { + if (!idbstore.keyPath && !_this.schema.primKey.auto && !keys$$1) throw new exceptions.InvalidArgument("bulkPut() with non-inbound keys requires keys array in second argument"); + if (idbstore.keyPath && keys$$1) throw new exceptions.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys"); + if (keys$$1 && keys$$1.length !== objects.length) throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length"); + if (objects.length === 0) return resolve(); // Caller provided empty list. + var done = function (result) { + if (errorList.length === 0) resolve(result);else reject(new BulkError(_this.name + '.bulkPut(): ' + errorList.length + ' of ' + numObjs + ' operations failed', errorList)); + }; + var req, + errorList = [], + errorHandler, + numObjs = objects.length, + table = _this; + if (_this.hook.creating.fire === nop && _this.hook.updating.fire === nop) { + // + // Standard Bulk (no 'creating' or 'updating' hooks to care about) + // + errorHandler = BulkErrorHandlerCatchAll(errorList); + for (var i = 0, l = objects.length; i < l; ++i) { + req = keys$$1 ? idbstore.put(objects[i], keys$$1[i]) : idbstore.put(objects[i]); + req.onerror = errorHandler; + } + // Only need to catch success or error on the last operation + // according to the IDB spec. + req.onerror = BulkErrorHandlerCatchAll(errorList, done); + req.onsuccess = eventSuccessHandler(done); + } else { + var effectiveKeys = keys$$1 || idbstore.keyPath && objects.map(function (o) { + return getByKeyPath(o, idbstore.keyPath); + }); + // Generate map of {[key]: object} + var objectLookup = effectiveKeys && arrayToObject(effectiveKeys, function (key, i) { + return key != null && [key, objects[i]]; + }); + var promise = !effectiveKeys ? + + // Auto-incremented key-less objects only without any keys argument. + table.bulkAdd(objects) : + + // Keys provided. Either as inbound in provided objects, or as a keys argument. + // Begin with updating those that exists in DB: + table.where(':id').anyOf(effectiveKeys.filter(function (key) { + return key != null; + })).modify(function () { + this.value = objectLookup[this.primKey]; + objectLookup[this.primKey] = null; // Mark as "don't add this" + }).catch(ModifyError, function (e) { + errorList = e.failures; // No need to concat here. These are the first errors added. + }).then(function () { + // Now, let's examine which items didnt exist so we can add them: + var objsToAdd = [], + keysToAdd = keys$$1 && []; + // Iterate backwards. Why? Because if same key was used twice, just add the last one. + for (var i = effectiveKeys.length - 1; i >= 0; --i) { + var key = effectiveKeys[i]; + if (key == null || objectLookup[key]) { + objsToAdd.push(objects[i]); + keys$$1 && keysToAdd.push(key); + if (key != null) objectLookup[key] = null; // Mark as "dont add again" + } + } + // The items are in reverse order so reverse them before adding. + // Could be important in order to get auto-incremented keys the way the caller + // would expect. Could have used unshift instead of push()/reverse(), + // but: http://jsperf.com/unshift-vs-reverse + objsToAdd.reverse(); + keys$$1 && keysToAdd.reverse(); + return table.bulkAdd(objsToAdd, keysToAdd); + }).then(function (lastAddedKey) { + // Resolve with key of the last object in given arguments to bulkPut(): + var lastEffectiveKey = effectiveKeys[effectiveKeys.length - 1]; // Key was provided. + return lastEffectiveKey != null ? lastEffectiveKey : lastAddedKey; + }); + + promise.then(done).catch(BulkError, function (e) { + // Concat failure from ModifyError and reject using our 'done' method. + errorList = errorList.concat(e.failures); + done(); + }).catch(reject); + } + }, "locked"); // If called from transaction scope, lock transaction til all steps are done. + }, + bulkAdd: function (objects, keys$$1) { + var self = this, + creatingHook = this.hook.creating.fire; + return this._idbstore(READWRITE, function (resolve, reject, idbstore, trans) { + if (!idbstore.keyPath && !self.schema.primKey.auto && !keys$$1) throw new exceptions.InvalidArgument("bulkAdd() with non-inbound keys requires keys array in second argument"); + if (idbstore.keyPath && keys$$1) throw new exceptions.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys"); + if (keys$$1 && keys$$1.length !== objects.length) throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length"); + if (objects.length === 0) return resolve(); // Caller provided empty list. + function done(result) { + if (errorList.length === 0) resolve(result);else reject(new BulkError(self.name + '.bulkAdd(): ' + errorList.length + ' of ' + numObjs + ' operations failed', errorList)); + } + var req, + errorList = [], + errorHandler, + successHandler, + numObjs = objects.length; + if (creatingHook !== nop) { + // + // There are subscribers to hook('creating') + // Must behave as documented. + // + var keyPath = idbstore.keyPath, + hookCtx; + errorHandler = BulkErrorHandlerCatchAll(errorList, null, true); + successHandler = hookedEventSuccessHandler(null); + + tryCatch(function () { + for (var i = 0, l = objects.length; i < l; ++i) { + hookCtx = { onerror: null, onsuccess: null }; + var key = keys$$1 && keys$$1[i]; + var obj = objects[i], + effectiveKey = keys$$1 ? key : keyPath ? getByKeyPath(obj, keyPath) : undefined, + keyToUse = creatingHook.call(hookCtx, effectiveKey, obj, trans); + if (effectiveKey == null && keyToUse != null) { + if (keyPath) { + obj = deepClone(obj); + setByKeyPath(obj, keyPath, keyToUse); + } else { + key = keyToUse; + } + } + req = key != null ? idbstore.add(obj, key) : idbstore.add(obj); + req._hookCtx = hookCtx; + if (i < l - 1) { + req.onerror = errorHandler; + if (hookCtx.onsuccess) req.onsuccess = successHandler; + } + } + }, function (err) { + hookCtx.onerror && hookCtx.onerror(err); + throw err; + }); + + req.onerror = BulkErrorHandlerCatchAll(errorList, done, true); + req.onsuccess = hookedEventSuccessHandler(done); + } else { + // + // Standard Bulk (no 'creating' hook to care about) + // + errorHandler = BulkErrorHandlerCatchAll(errorList); + for (var i = 0, l = objects.length; i < l; ++i) { + req = keys$$1 ? idbstore.add(objects[i], keys$$1[i]) : idbstore.add(objects[i]); + req.onerror = errorHandler; + } + // Only need to catch success or error on the last operation + // according to the IDB spec. + req.onerror = BulkErrorHandlerCatchAll(errorList, done); + req.onsuccess = eventSuccessHandler(done); + } + }); + }, + add: function (obj, key) { + /// + /// Add an object to the database. In case an object with same primary key already exists, the object will not be added. + /// + /// A javascript object to insert + /// Primary key + var creatingHook = this.hook.creating.fire; + return this._idbstore(READWRITE, function (resolve, reject, idbstore, trans) { + var hookCtx = { onsuccess: null, onerror: null }; + if (creatingHook !== nop) { + var effectiveKey = key != null ? key : idbstore.keyPath ? getByKeyPath(obj, idbstore.keyPath) : undefined; + var keyToUse = creatingHook.call(hookCtx, effectiveKey, obj, trans); // Allow subscribers to when("creating") to generate the key. + if (effectiveKey == null && keyToUse != null) { + // Using "==" and "!=" to check for either null or undefined! + if (idbstore.keyPath) setByKeyPath(obj, idbstore.keyPath, keyToUse);else key = keyToUse; + } + } + try { + var req = key != null ? idbstore.add(obj, key) : idbstore.add(obj); + req._hookCtx = hookCtx; + req.onerror = hookedEventRejectHandler(reject); + req.onsuccess = hookedEventSuccessHandler(function (result) { + // TODO: Remove these two lines in next major release (2.0?) + // It's no good practice to have side effects on provided parameters + var keyPath = idbstore.keyPath; + if (keyPath) setByKeyPath(obj, keyPath, result); + resolve(result); + }); + } catch (e) { + if (hookCtx.onerror) hookCtx.onerror(e); + throw e; + } + }); + }, + + put: function (obj, key) { + var _this2 = this; + + /// + /// Add an object to the database but in case an object with same primary key alread exists, the existing one will get updated. + /// + /// A javascript object to insert or update + /// Primary key + var creatingHook = this.hook.creating.fire, + updatingHook = this.hook.updating.fire; + if (creatingHook !== nop || updatingHook !== nop) { + // + // People listens to when("creating") or when("updating") events! + // We must know whether the put operation results in an CREATE or UPDATE. + // + var keyPath = this.schema.primKey.keyPath; + var effectiveKey = key !== undefined ? key : keyPath && getByKeyPath(obj, keyPath); + if (effectiveKey == null) // "== null" means checking for either null or undefined. + return this.add(obj); + + // Since key is optional, make sure we get it from obj if not provided + + // Primary key exist. Lock transaction and try modifying existing. If nothing modified, call add(). + // clone obj before this async call. If caller modifies obj the line after put(), the IDB spec requires that it should not affect operation. + obj = deepClone(obj); + return this._trans(READWRITE, function () { + return _this2.where(":id").equals(effectiveKey).modify(function () { + // Replace extisting value with our object + // CRUD event firing handled in Collection.modify() + this.value = obj; + }).then(function (count) { + return count === 0 ? _this2.add(obj, key) : effectiveKey; + }); + }, "locked"); // Lock needed because operation is splitted into modify() and add(). + } else { + // Use the standard IDB put() method. + return this._idbstore(READWRITE, function (resolve, reject, idbstore) { + var req = key !== undefined ? idbstore.put(obj, key) : idbstore.put(obj); + req.onerror = eventRejectHandler(reject); + req.onsuccess = wrap(function (ev) { + var keyPath = idbstore.keyPath; + if (keyPath) setByKeyPath(obj, keyPath, ev.target.result); + resolve(req.result); + }); + }); + } + }, + + 'delete': function (key) { + /// Primary key of the object to delete + if (this.hook.deleting.subscribers.length) { + // People listens to when("deleting") event. Must implement delete using Collection.delete() that will + // call the CRUD event. Only Collection.delete() will know whether an object was actually deleted. + return this.where(":id").equals(key).delete(); + } else { + // No one listens. Use standard IDB delete() method. + return this._idbstore(READWRITE, function (resolve, reject, idbstore) { + var req = idbstore.delete(key); + req.onerror = eventRejectHandler(reject); + req.onsuccess = wrap(function () { + resolve(req.result); + }); + }); + } + }, + + clear: function () { + if (this.hook.deleting.subscribers.length) { + // People listens to when("deleting") event. Must implement delete using Collection.delete() that will + // call the CRUD event. Only Collection.delete() will knows which objects that are actually deleted. + return this.toCollection().delete(); + } else { + return this._idbstore(READWRITE, function (resolve, reject, idbstore) { + var req = idbstore.clear(); + req.onerror = eventRejectHandler(reject); + req.onsuccess = wrap(function () { + resolve(req.result); + }); + }); + } + }, + + update: function (keyOrObject, modifications) { + if (typeof modifications !== 'object' || isArray(modifications)) throw new exceptions.InvalidArgument("Modifications must be an object."); + if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) { + // object to modify. Also modify given object with the modifications: + keys(modifications).forEach(function (keyPath) { + setByKeyPath(keyOrObject, keyPath, modifications[keyPath]); + }); + var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath); + if (key === undefined) return rejection(new exceptions.InvalidArgument("Given object does not contain its primary key")); + return this.where(":id").equals(key).modify(modifications); + } else { + // key to modify + return this.where(":id").equals(keyOrObject).modify(modifications); + } + } + }); + + // + // + // + // Transaction Class + // + // + // + function Transaction(mode, storeNames, dbschema, parent) { + var _this3 = this; + + /// + /// Transaction class. Represents a database transaction. All operations on db goes through a Transaction. + /// + /// Any of "readwrite" or "readonly" + /// Array of table names to operate on + this.db = db; + this.mode = mode; + this.storeNames = storeNames; + this.idbtrans = null; + this.on = Events(this, "complete", "error", "abort"); + this.parent = parent || null; + this.active = true; + this._reculock = 0; + this._blockedFuncs = []; + this._resolve = null; + this._reject = null; + this._waitingFor = null; + this._waitingQueue = null; + this._spinCount = 0; // Just for debugging waitFor() + this._completion = new Promise(function (resolve, reject) { + _this3._resolve = resolve; + _this3._reject = reject; + }); + + this._completion.then(function () { + _this3.on.complete.fire(); + }, function (e) { + _this3.on.error.fire(e); + _this3.parent ? _this3.parent._reject(e) : _this3.active && _this3.idbtrans && _this3.idbtrans.abort(); + _this3.active = false; + return rejection(e); // Indicate we actually DO NOT catch this error. + }); + } + + props(Transaction.prototype, { + // + // Transaction Protected Methods (not required by API users, but needed internally and eventually by dexie extensions) + // + _lock: function () { + assert(!PSD.global); // Locking and unlocking reuires to be within a PSD scope. + // Temporary set all requests into a pending queue if they are called before database is ready. + ++this._reculock; // Recursive read/write lock pattern using PSD (Promise Specific Data) instead of TLS (Thread Local Storage) + if (this._reculock === 1 && !PSD.global) PSD.lockOwnerFor = this; + return this; + }, + _unlock: function () { + assert(!PSD.global); // Locking and unlocking reuires to be within a PSD scope. + if (--this._reculock === 0) { + if (!PSD.global) PSD.lockOwnerFor = null; + while (this._blockedFuncs.length > 0 && !this._locked()) { + var fnAndPSD = this._blockedFuncs.shift(); + try { + usePSD(fnAndPSD[1], fnAndPSD[0]); + } catch (e) {} + } + } + return this; + }, + _locked: function () { + // Checks if any write-lock is applied on this transaction. + // To simplify the Dexie API for extension implementations, we support recursive locks. + // This is accomplished by using "Promise Specific Data" (PSD). + // PSD data is bound to a Promise and any child Promise emitted through then() or resolve( new Promise() ). + // PSD is local to code executing on top of the call stacks of any of any code executed by Promise(): + // * callback given to the Promise() constructor (function (resolve, reject){...}) + // * callbacks given to then()/catch()/finally() methods (function (value){...}) + // If creating a new independant Promise instance from within a Promise call stack, the new Promise will derive the PSD from the call stack of the parent Promise. + // Derivation is done so that the inner PSD __proto__ points to the outer PSD. + // PSD.lockOwnerFor will point to current transaction object if the currently executing PSD scope owns the lock. + return this._reculock && PSD.lockOwnerFor !== this; + }, + create: function (idbtrans) { + var _this4 = this; + + if (!this.mode) return this; + assert(!this.idbtrans); + if (!idbtrans && !idbdb) { + switch (dbOpenError && dbOpenError.name) { + case "DatabaseClosedError": + // Errors where it is no difference whether it was caused by the user operation or an earlier call to db.open() + throw new exceptions.DatabaseClosed(dbOpenError); + case "MissingAPIError": + // Errors where it is no difference whether it was caused by the user operation or an earlier call to db.open() + throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError); + default: + // Make it clear that the user operation was not what caused the error - the error had occurred earlier on db.open()! + throw new exceptions.OpenFailed(dbOpenError); + } + } + if (!this.active) throw new exceptions.TransactionInactive(); + assert(this._completion._state === null); + + idbtrans = this.idbtrans = idbtrans || idbdb.transaction(safariMultiStoreFix(this.storeNames), this.mode); + idbtrans.onerror = wrap(function (ev) { + preventDefault(ev); // Prohibit default bubbling to window.error + _this4._reject(idbtrans.error); + }); + idbtrans.onabort = wrap(function (ev) { + preventDefault(ev); + _this4.active && _this4._reject(new exceptions.Abort()); + _this4.active = false; + _this4.on("abort").fire(ev); + }); + idbtrans.oncomplete = wrap(function () { + _this4.active = false; + _this4._resolve(); + }); + return this; + }, + _promise: function (mode, fn, bWriteLock) { + var _this5 = this; + + if (mode === READWRITE && this.mode !== READWRITE) return rejection(new exceptions.ReadOnly("Transaction is readonly")); + + if (!this.active) return rejection(new exceptions.TransactionInactive()); + + if (this._locked()) { + return new Promise(function (resolve, reject) { + _this5._blockedFuncs.push([function () { + _this5._promise(mode, fn, bWriteLock).then(resolve, reject); + }, PSD]); + }); + } else if (bWriteLock) { + return newScope(function () { + var p = new Promise(function (resolve, reject) { + _this5._lock(); + var rv = fn(resolve, reject, _this5); + if (rv && rv.then) rv.then(resolve, reject); + }); + p.finally(function () { + return _this5._unlock(); + }); + p._lib = true; + return p; + }); + } else { + var p = new Promise(function (resolve, reject) { + var rv = fn(resolve, reject, _this5); + if (rv && rv.then) rv.then(resolve, reject); + }); + p._lib = true; + return p; + } + }, + + _root: function () { + return this.parent ? this.parent._root() : this; + }, + + waitFor: function (promise) { + // Always operate on the root transaction (in case this is a sub stransaction) + var root = this._root(); + // For stability reasons, convert parameter to promise no matter what type is passed to waitFor(). + // (We must be able to call .then() on it.) + promise = Promise.resolve(promise); + if (root._waitingFor) { + // Already called waitFor(). Wait for both to complete. + root._waitingFor = root._waitingFor.then(function () { + return promise; + }); + } else { + // We're not in waiting state. Start waiting state. + root._waitingFor = promise; + root._waitingQueue = []; + // Start interacting with indexedDB until promise completes: + var store = root.idbtrans.objectStore(root.storeNames[0]); + (function spin() { + ++root._spinCount; // For debugging only + while (root._waitingQueue.length) { + root._waitingQueue.shift()(); + }if (root._waitingFor) store.get(-Infinity).onsuccess = spin; + })(); + } + var currentWaitPromise = root._waitingFor; + return new Promise(function (resolve, reject) { + promise.then(function (res) { + return root._waitingQueue.push(wrap(resolve.bind(null, res))); + }, function (err) { + return root._waitingQueue.push(wrap(reject.bind(null, err))); + }).finally(function () { + if (root._waitingFor === currentWaitPromise) { + // No one added a wait after us. Safe to stop the spinning. + root._waitingFor = null; + } + }); + }); + }, + + + // + // Transaction Public Properties and Methods + // + abort: function () { + this.active && this._reject(new exceptions.Abort()); + this.active = false; + }, + + tables: { + get: deprecated("Transaction.tables", function () { + return allTables; + }) + }, + + table: function (name) { + var table = db.table(name); // Don't check that table is part of transaction. It must fail lazily! + return new Table(name, table.schema, this); + } + }); + + // + // + // + // WhereClause + // + // + // + function WhereClause(table, index, orCollection) { + /// + /// + /// + this._ctx = { + table: table, + index: index === ":id" ? null : index, + or: orCollection + }; + } + + props(WhereClause.prototype, function () { + + // WhereClause private methods + + function fail(collectionOrWhereClause, err, T) { + var collection = collectionOrWhereClause instanceof WhereClause ? new Collection(collectionOrWhereClause) : collectionOrWhereClause; + + collection._ctx.error = T ? new T(err) : new TypeError(err); + return collection; + } + + function emptyCollection(whereClause) { + return new Collection(whereClause, function () { + return IDBKeyRange.only(""); + }).limit(0); + } + + function upperFactory(dir) { + return dir === "next" ? function (s) { + return s.toUpperCase(); + } : function (s) { + return s.toLowerCase(); + }; + } + function lowerFactory(dir) { + return dir === "next" ? function (s) { + return s.toLowerCase(); + } : function (s) { + return s.toUpperCase(); + }; + } + function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) { + var length = Math.min(key.length, lowerNeedle.length); + var llp = -1; + for (var i = 0; i < length; ++i) { + var lwrKeyChar = lowerKey[i]; + if (lwrKeyChar !== lowerNeedle[i]) { + if (cmp(key[i], upperNeedle[i]) < 0) return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1); + if (cmp(key[i], lowerNeedle[i]) < 0) return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1); + if (llp >= 0) return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1); + return null; + } + if (cmp(key[i], lwrKeyChar) < 0) llp = i; + } + if (length < lowerNeedle.length && dir === "next") return key + upperNeedle.substr(key.length); + if (length < key.length && dir === "prev") return key.substr(0, upperNeedle.length); + return llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1); + } + + function addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) { + /// + var upper, + lower, + compare, + upperNeedles, + lowerNeedles, + direction, + nextKeySuffix, + needlesLen = needles.length; + if (!needles.every(function (s) { + return typeof s === 'string'; + })) { + return fail(whereClause, STRING_EXPECTED); + } + function initDirection(dir) { + upper = upperFactory(dir); + lower = lowerFactory(dir); + compare = dir === "next" ? simpleCompare : simpleCompareReverse; + var needleBounds = needles.map(function (needle) { + return { lower: lower(needle), upper: upper(needle) }; + }).sort(function (a, b) { + return compare(a.lower, b.lower); + }); + upperNeedles = needleBounds.map(function (nb) { + return nb.upper; + }); + lowerNeedles = needleBounds.map(function (nb) { + return nb.lower; + }); + direction = dir; + nextKeySuffix = dir === "next" ? "" : suffix; + } + initDirection("next"); + + var c = new Collection(whereClause, function () { + return IDBKeyRange.bound(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); + }); + + c._ondirectionchange = function (direction) { + // This event onlys occur before filter is called the first time. + initDirection(direction); + }; + + var firstPossibleNeedle = 0; + + c._addAlgorithm(function (cursor, advance, resolve) { + /// + /// + /// + var key = cursor.key; + if (typeof key !== 'string') return false; + var lowerKey = lower(key); + if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) { + return true; + } else { + var lowestPossibleCasing = null; + for (var i = firstPossibleNeedle; i < needlesLen; ++i) { + var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction); + if (casing === null && lowestPossibleCasing === null) firstPossibleNeedle = i + 1;else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) { + lowestPossibleCasing = casing; + } + } + if (lowestPossibleCasing !== null) { + advance(function () { + cursor.continue(lowestPossibleCasing + nextKeySuffix); + }); + } else { + advance(resolve); + } + return false; + } + }); + return c; + } + + // + // WhereClause public methods + // + return { + between: function (lower, upper, includeLower, includeUpper) { + /// + /// Filter out records whose where-field lays between given lower and upper values. Applies to Strings, Numbers and Dates. + /// + /// + /// + /// Whether items that equals lower should be included. Default true. + /// Whether items that equals upper should be included. Default false. + /// + includeLower = includeLower !== false; // Default to true + includeUpper = includeUpper === true; // Default to false + try { + if (cmp(lower, upper) > 0 || cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)) return emptyCollection(this); // Workaround for idiotic W3C Specification that DataError must be thrown if lower > upper. The natural result would be to return an empty collection. + return new Collection(this, function () { + return IDBKeyRange.bound(lower, upper, !includeLower, !includeUpper); + }); + } catch (e) { + return fail(this, INVALID_KEY_ARGUMENT); + } + }, + equals: function (value) { + return new Collection(this, function () { + return IDBKeyRange.only(value); + }); + }, + above: function (value) { + return new Collection(this, function () { + return IDBKeyRange.lowerBound(value, true); + }); + }, + aboveOrEqual: function (value) { + return new Collection(this, function () { + return IDBKeyRange.lowerBound(value); + }); + }, + below: function (value) { + return new Collection(this, function () { + return IDBKeyRange.upperBound(value, true); + }); + }, + belowOrEqual: function (value) { + return new Collection(this, function () { + return IDBKeyRange.upperBound(value); + }); + }, + startsWith: function (str) { + /// + if (typeof str !== 'string') return fail(this, STRING_EXPECTED); + return this.between(str, str + maxString, true, true); + }, + startsWithIgnoreCase: function (str) { + /// + if (str === "") return this.startsWith(str); + return addIgnoreCaseAlgorithm(this, function (x, a) { + return x.indexOf(a[0]) === 0; + }, [str], maxString); + }, + equalsIgnoreCase: function (str) { + /// + return addIgnoreCaseAlgorithm(this, function (x, a) { + return x === a[0]; + }, [str], ""); + }, + anyOfIgnoreCase: function () { + var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); + if (set.length === 0) return emptyCollection(this); + return addIgnoreCaseAlgorithm(this, function (x, a) { + return a.indexOf(x) !== -1; + }, set, ""); + }, + startsWithAnyOfIgnoreCase: function () { + var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); + if (set.length === 0) return emptyCollection(this); + return addIgnoreCaseAlgorithm(this, function (x, a) { + return a.some(function (n) { + return x.indexOf(n) === 0; + }); + }, set, maxString); + }, + anyOf: function () { + var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); + var compare = ascending; + try { + set.sort(compare); + } catch (e) { + return fail(this, INVALID_KEY_ARGUMENT); + } + if (set.length === 0) return emptyCollection(this); + var c = new Collection(this, function () { + return IDBKeyRange.bound(set[0], set[set.length - 1]); + }); + + c._ondirectionchange = function (direction) { + compare = direction === "next" ? ascending : descending; + set.sort(compare); + }; + var i = 0; + c._addAlgorithm(function (cursor, advance, resolve) { + var key = cursor.key; + while (compare(key, set[i]) > 0) { + // The cursor has passed beyond this key. Check next. + ++i; + if (i === set.length) { + // There is no next. Stop searching. + advance(resolve); + return false; + } + } + if (compare(key, set[i]) === 0) { + // The current cursor value should be included and we should continue a single step in case next item has the same key or possibly our next key in set. + return true; + } else { + // cursor.key not yet at set[i]. Forward cursor to the next key to hunt for. + advance(function () { + cursor.continue(set[i]); + }); + return false; + } + }); + return c; + }, + + notEqual: function (value) { + return this.inAnyRange([[minKey, value], [value, maxKey]], { includeLowers: false, includeUppers: false }); + }, + + noneOf: function () { + var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); + if (set.length === 0) return new Collection(this); // Return entire collection. + try { + set.sort(ascending); + } catch (e) { + return fail(this, INVALID_KEY_ARGUMENT); + } + // Transform ["a","b","c"] to a set of ranges for between/above/below: [[minKey,"a"], ["a","b"], ["b","c"], ["c",maxKey]] + var ranges = set.reduce(function (res, val) { + return res ? res.concat([[res[res.length - 1][1], val]]) : [[minKey, val]]; + }, null); + ranges.push([set[set.length - 1], maxKey]); + return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false }); + }, + + /** Filter out values withing given set of ranges. + * Example, give children and elders a rebate of 50%: + * + * db.friends.where('age').inAnyRange([[0,18],[65,Infinity]]).modify({Rebate: 1/2}); + * + * @param {(string|number|Date|Array)[][]} ranges + * @param {{includeLowers: boolean, includeUppers: boolean}} options + */ + inAnyRange: function (ranges, options) { + if (ranges.length === 0) return emptyCollection(this); + if (!ranges.every(function (range) { + return range[0] !== undefined && range[1] !== undefined && ascending(range[0], range[1]) <= 0; + })) { + return fail(this, "First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower", exceptions.InvalidArgument); + } + var includeLowers = !options || options.includeLowers !== false; // Default to true + var includeUppers = options && options.includeUppers === true; // Default to false + + function addRange(ranges, newRange) { + for (var i = 0, l = ranges.length; i < l; ++i) { + var range = ranges[i]; + if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) { + range[0] = min(range[0], newRange[0]); + range[1] = max(range[1], newRange[1]); + break; + } + } + if (i === l) ranges.push(newRange); + return ranges; + } + + var sortDirection = ascending; + function rangeSorter(a, b) { + return sortDirection(a[0], b[0]); + } + + // Join overlapping ranges + var set; + try { + set = ranges.reduce(addRange, []); + set.sort(rangeSorter); + } catch (ex) { + return fail(this, INVALID_KEY_ARGUMENT); + } + + var i = 0; + var keyIsBeyondCurrentEntry = includeUppers ? function (key) { + return ascending(key, set[i][1]) > 0; + } : function (key) { + return ascending(key, set[i][1]) >= 0; + }; + + var keyIsBeforeCurrentEntry = includeLowers ? function (key) { + return descending(key, set[i][0]) > 0; + } : function (key) { + return descending(key, set[i][0]) >= 0; + }; + + function keyWithinCurrentRange(key) { + return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key); + } + + var checkKey = keyIsBeyondCurrentEntry; + + var c = new Collection(this, function () { + return IDBKeyRange.bound(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); + }); + + c._ondirectionchange = function (direction) { + if (direction === "next") { + checkKey = keyIsBeyondCurrentEntry; + sortDirection = ascending; + } else { + checkKey = keyIsBeforeCurrentEntry; + sortDirection = descending; + } + set.sort(rangeSorter); + }; + + c._addAlgorithm(function (cursor, advance, resolve) { + var key = cursor.key; + while (checkKey(key)) { + // The cursor has passed beyond this key. Check next. + ++i; + if (i === set.length) { + // There is no next. Stop searching. + advance(resolve); + return false; + } + } + if (keyWithinCurrentRange(key)) { + // The current cursor value should be included and we should continue a single step in case next item has the same key or possibly our next key in set. + return true; + } else if (cmp(key, set[i][1]) === 0 || cmp(key, set[i][0]) === 0) { + // includeUpper or includeLower is false so keyWithinCurrentRange() returns false even though we are at range border. + // Continue to next key but don't include this one. + return false; + } else { + // cursor.key not yet at set[i]. Forward cursor to the next key to hunt for. + advance(function () { + if (sortDirection === ascending) cursor.continue(set[i][0]);else cursor.continue(set[i][1]); + }); + return false; + } + }); + return c; + }, + startsWithAnyOf: function () { + var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); + + if (!set.every(function (s) { + return typeof s === 'string'; + })) { + return fail(this, "startsWithAnyOf() only works with strings"); + } + if (set.length === 0) return emptyCollection(this); + + return this.inAnyRange(set.map(function (str) { + return [str, str + maxString]; + })); + } + }; + }); + + // + // + // + // Collection Class + // + // + // + function Collection(whereClause, keyRangeGenerator) { + /// + /// + /// + /// Where clause instance + /// + var keyRange = null, + error = null; + if (keyRangeGenerator) try { + keyRange = keyRangeGenerator(); + } catch (ex) { + error = ex; + } + + var whereCtx = whereClause._ctx, + table = whereCtx.table; + this._ctx = { + table: table, + index: whereCtx.index, + isPrimKey: !whereCtx.index || table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name, + range: keyRange, + keysOnly: false, + dir: "next", + unique: "", + algorithm: null, + filter: null, + replayFilter: null, + justLimit: true, // True if a replayFilter is just a filter that performs a "limit" operation (or none at all) + isMatch: null, + offset: 0, + limit: Infinity, + error: error, // If set, any promise must be rejected with this error + or: whereCtx.or, + valueMapper: table.hook.reading.fire + }; + } + + function isPlainKeyRange(ctx, ignoreLimitFilter) { + return !(ctx.filter || ctx.algorithm || ctx.or) && (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter); + } + + props(Collection.prototype, function () { + + // + // Collection Private Functions + // + + function addFilter(ctx, fn) { + ctx.filter = combine(ctx.filter, fn); + } + + function addReplayFilter(ctx, factory, isLimitFilter) { + var curr = ctx.replayFilter; + ctx.replayFilter = curr ? function () { + return combine(curr(), factory()); + } : factory; + ctx.justLimit = isLimitFilter && !curr; + } + + function addMatchFilter(ctx, fn) { + ctx.isMatch = combine(ctx.isMatch, fn); + } + + /** @param ctx { + * isPrimKey: boolean, + * table: Table, + * index: string + * } + * @param store IDBObjectStore + **/ + function getIndexOrStore(ctx, store) { + if (ctx.isPrimKey) return store; + var indexSpec = ctx.table.schema.idxByName[ctx.index]; + if (!indexSpec) throw new exceptions.Schema("KeyPath " + ctx.index + " on object store " + store.name + " is not indexed"); + return store.index(indexSpec.name); + } + + /** @param ctx { + * isPrimKey: boolean, + * table: Table, + * index: string, + * keysOnly: boolean, + * range?: IDBKeyRange, + * dir: "next" | "prev" + * } + */ + function openCursor(ctx, store) { + var idxOrStore = getIndexOrStore(ctx, store); + return ctx.keysOnly && 'openKeyCursor' in idxOrStore ? idxOrStore.openKeyCursor(ctx.range || null, ctx.dir + ctx.unique) : idxOrStore.openCursor(ctx.range || null, ctx.dir + ctx.unique); + } + + function iter(ctx, fn, resolve, reject, idbstore) { + var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter; + if (!ctx.or) { + iterate(openCursor(ctx, idbstore), combine(ctx.algorithm, filter), fn, resolve, reject, !ctx.keysOnly && ctx.valueMapper); + } else (function () { + var set = {}; + var resolved = 0; + + function resolveboth() { + if (++resolved === 2) resolve(); // Seems like we just support or btwn max 2 expressions, but there are no limit because we do recursion. + } + + function union(item, cursor, advance) { + if (!filter || filter(cursor, advance, resolveboth, reject)) { + var key = cursor.primaryKey.toString(); // Converts any Date to String, String to String, Number to String and Array to comma-separated string + if (!hasOwn(set, key)) { + set[key] = true; + fn(item, cursor, advance); + } + } + } + + ctx.or._iterate(union, resolveboth, reject, idbstore); + iterate(openCursor(ctx, idbstore), ctx.algorithm, union, resolveboth, reject, !ctx.keysOnly && ctx.valueMapper); + })(); + } + function getInstanceTemplate(ctx) { + return ctx.table.schema.instanceTemplate; + } + + return { + + // + // Collection Protected Functions + // + + _read: function (fn, cb) { + var ctx = this._ctx; + return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._idbstore(READONLY, fn).then(cb); + }, + _write: function (fn) { + var ctx = this._ctx; + return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._idbstore(READWRITE, fn, "locked"); // When doing write operations on collections, always lock the operation so that upcoming operations gets queued. + }, + _addAlgorithm: function (fn) { + var ctx = this._ctx; + ctx.algorithm = combine(ctx.algorithm, fn); + }, + + _iterate: function (fn, resolve, reject, idbstore) { + return iter(this._ctx, fn, resolve, reject, idbstore); + }, + + clone: function (props$$1) { + var rv = Object.create(this.constructor.prototype), + ctx = Object.create(this._ctx); + if (props$$1) extend(ctx, props$$1); + rv._ctx = ctx; + return rv; + }, + + raw: function () { + this._ctx.valueMapper = null; + return this; + }, + + // + // Collection Public methods + // + + each: function (fn) { + var ctx = this._ctx; + + if (fake) { + var item = getInstanceTemplate(ctx), + primKeyPath = ctx.table.schema.primKey.keyPath, + key = getByKeyPath(item, ctx.index ? ctx.table.schema.idxByName[ctx.index].keyPath : primKeyPath), + primaryKey = getByKeyPath(item, primKeyPath); + fn(item, { key: key, primaryKey: primaryKey }); + } + + return this._read(function (resolve, reject, idbstore) { + iter(ctx, fn, resolve, reject, idbstore); + }); + }, + + count: function (cb) { + if (fake) return Promise.resolve(0).then(cb); + var ctx = this._ctx; + + if (isPlainKeyRange(ctx, true)) { + // This is a plain key range. We can use the count() method if the index. + return this._read(function (resolve, reject, idbstore) { + var idx = getIndexOrStore(ctx, idbstore); + var req = ctx.range ? idx.count(ctx.range) : idx.count(); + req.onerror = eventRejectHandler(reject); + req.onsuccess = function (e) { + resolve(Math.min(e.target.result, ctx.limit)); + }; + }, cb); + } else { + // Algorithms, filters or expressions are applied. Need to count manually. + var count = 0; + return this._read(function (resolve, reject, idbstore) { + iter(ctx, function () { + ++count;return false; + }, function () { + resolve(count); + }, reject, idbstore); + }, cb); + } + }, + + sortBy: function (keyPath, cb) { + /// + var parts = keyPath.split('.').reverse(), + lastPart = parts[0], + lastIndex = parts.length - 1; + function getval(obj, i) { + if (i) return getval(obj[parts[i]], i - 1); + return obj[lastPart]; + } + var order = this._ctx.dir === "next" ? 1 : -1; + + function sorter(a, b) { + var aVal = getval(a, lastIndex), + bVal = getval(b, lastIndex); + return aVal < bVal ? -order : aVal > bVal ? order : 0; + } + return this.toArray(function (a) { + return a.sort(sorter); + }).then(cb); + }, + + toArray: function (cb) { + var ctx = this._ctx; + return this._read(function (resolve, reject, idbstore) { + fake && resolve([getInstanceTemplate(ctx)]); + if (hasGetAll && ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) { + // Special optimation if we could use IDBObjectStore.getAll() or + // IDBKeyRange.getAll(): + var readingHook = ctx.table.hook.reading.fire; + var idxOrStore = getIndexOrStore(ctx, idbstore); + var req = ctx.limit < Infinity ? idxOrStore.getAll(ctx.range, ctx.limit) : idxOrStore.getAll(ctx.range); + req.onerror = eventRejectHandler(reject); + req.onsuccess = readingHook === mirror ? eventSuccessHandler(resolve) : eventSuccessHandler(function (res) { + try { + resolve(res.map(readingHook)); + } catch (e) { + reject(e); + } + }); + } else { + // Getting array through a cursor. + var a = []; + iter(ctx, function (item) { + a.push(item); + }, function arrayComplete() { + resolve(a); + }, reject, idbstore); + } + }, cb); + }, + + offset: function (offset) { + var ctx = this._ctx; + if (offset <= 0) return this; + ctx.offset += offset; // For count() + if (isPlainKeyRange(ctx)) { + addReplayFilter(ctx, function () { + var offsetLeft = offset; + return function (cursor, advance) { + if (offsetLeft === 0) return true; + if (offsetLeft === 1) { + --offsetLeft;return false; + } + advance(function () { + cursor.advance(offsetLeft); + offsetLeft = 0; + }); + return false; + }; + }); + } else { + addReplayFilter(ctx, function () { + var offsetLeft = offset; + return function () { + return --offsetLeft < 0; + }; + }); + } + return this; + }, + + limit: function (numRows) { + this._ctx.limit = Math.min(this._ctx.limit, numRows); // For count() + addReplayFilter(this._ctx, function () { + var rowsLeft = numRows; + return function (cursor, advance, resolve) { + if (--rowsLeft <= 0) advance(resolve); // Stop after this item has been included + return rowsLeft >= 0; // If numRows is already below 0, return false because then 0 was passed to numRows initially. Otherwise we wouldnt come here. + }; + }, true); + return this; + }, + + until: function (filterFunction, bIncludeStopEntry) { + var ctx = this._ctx; + fake && filterFunction(getInstanceTemplate(ctx)); + addFilter(this._ctx, function (cursor, advance, resolve) { + if (filterFunction(cursor.value)) { + advance(resolve); + return bIncludeStopEntry; + } else { + return true; + } + }); + return this; + }, + + first: function (cb) { + return this.limit(1).toArray(function (a) { + return a[0]; + }).then(cb); + }, + + last: function (cb) { + return this.reverse().first(cb); + }, + + filter: function (filterFunction) { + /// function(val){return true/false} + fake && filterFunction(getInstanceTemplate(this._ctx)); + addFilter(this._ctx, function (cursor) { + return filterFunction(cursor.value); + }); + // match filters not used in Dexie.js but can be used by 3rd part libraries to test a + // collection for a match without querying DB. Used by Dexie.Observable. + addMatchFilter(this._ctx, filterFunction); + return this; + }, + + and: function (filterFunction) { + return this.filter(filterFunction); + }, + + or: function (indexName) { + return new WhereClause(this._ctx.table, indexName, this); + }, + + reverse: function () { + this._ctx.dir = this._ctx.dir === "prev" ? "next" : "prev"; + if (this._ondirectionchange) this._ondirectionchange(this._ctx.dir); + return this; + }, + + desc: function () { + return this.reverse(); + }, + + eachKey: function (cb) { + var ctx = this._ctx; + ctx.keysOnly = !ctx.isMatch; + return this.each(function (val, cursor) { + cb(cursor.key, cursor); + }); + }, + + eachUniqueKey: function (cb) { + this._ctx.unique = "unique"; + return this.eachKey(cb); + }, + + eachPrimaryKey: function (cb) { + var ctx = this._ctx; + ctx.keysOnly = !ctx.isMatch; + return this.each(function (val, cursor) { + cb(cursor.primaryKey, cursor); + }); + }, + + keys: function (cb) { + var ctx = this._ctx; + ctx.keysOnly = !ctx.isMatch; + var a = []; + return this.each(function (item, cursor) { + a.push(cursor.key); + }).then(function () { + return a; + }).then(cb); + }, + + primaryKeys: function (cb) { + var ctx = this._ctx; + if (hasGetAll && ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) { + // Special optimation if we could use IDBObjectStore.getAllKeys() or + // IDBKeyRange.getAllKeys(): + return this._read(function (resolve, reject, idbstore) { + var idxOrStore = getIndexOrStore(ctx, idbstore); + var req = ctx.limit < Infinity ? idxOrStore.getAllKeys(ctx.range, ctx.limit) : idxOrStore.getAllKeys(ctx.range); + req.onerror = eventRejectHandler(reject); + req.onsuccess = eventSuccessHandler(resolve); + }).then(cb); + } + ctx.keysOnly = !ctx.isMatch; + var a = []; + return this.each(function (item, cursor) { + a.push(cursor.primaryKey); + }).then(function () { + return a; + }).then(cb); + }, + + uniqueKeys: function (cb) { + this._ctx.unique = "unique"; + return this.keys(cb); + }, + + firstKey: function (cb) { + return this.limit(1).keys(function (a) { + return a[0]; + }).then(cb); + }, + + lastKey: function (cb) { + return this.reverse().firstKey(cb); + }, + + distinct: function () { + var ctx = this._ctx, + idx = ctx.index && ctx.table.schema.idxByName[ctx.index]; + if (!idx || !idx.multi) return this; // distinct() only makes differencies on multiEntry indexes. + var set = {}; + addFilter(this._ctx, function (cursor) { + var strKey = cursor.primaryKey.toString(); // Converts any Date to String, String to String, Number to String and Array to comma-separated string + var found = hasOwn(set, strKey); + set[strKey] = true; + return !found; + }); + return this; + }, + + // + // Methods that mutate storage + // + + modify: function (changes) { + var self = this, + ctx = this._ctx, + hook = ctx.table.hook, + updatingHook = hook.updating.fire, + deletingHook = hook.deleting.fire; + + fake && typeof changes === 'function' && changes.call({ value: ctx.table.schema.instanceTemplate }, ctx.table.schema.instanceTemplate); + + return this._write(function (resolve, reject, idbstore, trans) { + var modifyer; + if (typeof changes === 'function') { + // Changes is a function that may update, add or delete propterties or even require a deletion the object itself (delete this.item) + if (updatingHook === nop && deletingHook === nop) { + // Noone cares about what is being changed. Just let the modifier function be the given argument as is. + modifyer = changes; + } else { + // People want to know exactly what is being modified or deleted. + // Let modifyer be a proxy function that finds out what changes the caller is actually doing + // and call the hooks accordingly! + modifyer = function (item) { + var origItem = deepClone(item); // Clone the item first so we can compare laters. + if (changes.call(this, item, this) === false) return false; // Call the real modifyer function (If it returns false explicitely, it means it dont want to modify anyting on this object) + if (!hasOwn(this, "value")) { + // The real modifyer function requests a deletion of the object. Inform the deletingHook that a deletion is taking place. + deletingHook.call(this, this.primKey, item, trans); + } else { + // No deletion. Check what was changed + var objectDiff = getObjectDiff(origItem, this.value); + var additionalChanges = updatingHook.call(this, objectDiff, this.primKey, origItem, trans); + if (additionalChanges) { + // Hook want to apply additional modifications. Make sure to fullfill the will of the hook. + item = this.value; + keys(additionalChanges).forEach(function (keyPath) { + setByKeyPath(item, keyPath, additionalChanges[keyPath]); // Adding {keyPath: undefined} means that the keyPath should be deleted. Handled by setByKeyPath + }); + } + } + }; + } + } else if (updatingHook === nop) { + // changes is a set of {keyPath: value} and no one is listening to the updating hook. + var keyPaths = keys(changes); + var numKeys = keyPaths.length; + modifyer = function (item) { + var anythingModified = false; + for (var i = 0; i < numKeys; ++i) { + var keyPath = keyPaths[i], + val = changes[keyPath]; + if (getByKeyPath(item, keyPath) !== val) { + setByKeyPath(item, keyPath, val); // Adding {keyPath: undefined} means that the keyPath should be deleted. Handled by setByKeyPath + anythingModified = true; + } + } + return anythingModified; + }; + } else { + // changes is a set of {keyPath: value} and people are listening to the updating hook so we need to call it and + // allow it to add additional modifications to make. + var origChanges = changes; + changes = shallowClone(origChanges); // Let's work with a clone of the changes keyPath/value set so that we can restore it in case a hook extends it. + modifyer = function (item) { + var anythingModified = false; + var additionalChanges = updatingHook.call(this, changes, this.primKey, deepClone(item), trans); + if (additionalChanges) extend(changes, additionalChanges); + keys(changes).forEach(function (keyPath) { + var val = changes[keyPath]; + if (getByKeyPath(item, keyPath) !== val) { + setByKeyPath(item, keyPath, val); + anythingModified = true; + } + }); + if (additionalChanges) changes = shallowClone(origChanges); // Restore original changes for next iteration + return anythingModified; + }; + } + + var count = 0; + var successCount = 0; + var iterationComplete = false; + var failures = []; + var failKeys = []; + var currentKey = null; + + function modifyItem(item, cursor) { + currentKey = cursor.primaryKey; + var thisContext = { + primKey: cursor.primaryKey, + value: item, + onsuccess: null, + onerror: null + }; + + function onerror(e) { + failures.push(e); + failKeys.push(thisContext.primKey); + checkFinished(); + return true; // Catch these errors and let a final rejection decide whether or not to abort entire transaction + } + + if (modifyer.call(thisContext, item, thisContext) !== false) { + // If a callback explicitely returns false, do not perform the update! + var bDelete = !hasOwn(thisContext, "value"); + ++count; + tryCatch(function () { + var req = bDelete ? cursor.delete() : cursor.update(thisContext.value); + req._hookCtx = thisContext; + req.onerror = hookedEventRejectHandler(onerror); + req.onsuccess = hookedEventSuccessHandler(function () { + ++successCount; + checkFinished(); + }); + }, onerror); + } else if (thisContext.onsuccess) { + // Hook will expect either onerror or onsuccess to always be called! + thisContext.onsuccess(thisContext.value); + } + } + + function doReject(e) { + if (e) { + failures.push(e); + failKeys.push(currentKey); + } + return reject(new ModifyError("Error modifying one or more objects", failures, successCount, failKeys)); + } + + function checkFinished() { + if (iterationComplete && successCount + failures.length === count) { + if (failures.length > 0) doReject();else resolve(successCount); + } + } + self.clone().raw()._iterate(modifyItem, function () { + iterationComplete = true; + checkFinished(); + }, doReject, idbstore); + }); + }, + + 'delete': function () { + var _this6 = this; + + var ctx = this._ctx, + range = ctx.range, + deletingHook = ctx.table.hook.deleting.fire, + hasDeleteHook = deletingHook !== nop; + if (!hasDeleteHook && isPlainKeyRange(ctx) && (ctx.isPrimKey && !hangsOnDeleteLargeKeyRange || !range)) // if no range, we'll use clear(). + { + // May use IDBObjectStore.delete(IDBKeyRange) in this case (Issue #208) + // For chromium, this is the way most optimized version. + // For IE/Edge, this could hang the indexedDB engine and make operating system instable + // (https://gist.github.com/dfahlander/5a39328f029de18222cf2125d56c38f7) + return this._write(function (resolve, reject, idbstore) { + // Our API contract is to return a count of deleted items, so we have to count() before delete(). + var onerror = eventRejectHandler(reject), + countReq = range ? idbstore.count(range) : idbstore.count(); + countReq.onerror = onerror; + countReq.onsuccess = function () { + var count = countReq.result; + tryCatch(function () { + var delReq = range ? idbstore.delete(range) : idbstore.clear(); + delReq.onerror = onerror; + delReq.onsuccess = function () { + return resolve(count); + }; + }, function (err) { + return reject(err); + }); + }; + }); + } + + // Default version to use when collection is not a vanilla IDBKeyRange on the primary key. + // Divide into chunks to not starve RAM. + // If has delete hook, we will have to collect not just keys but also objects, so it will use + // more memory and need lower chunk size. + var CHUNKSIZE = hasDeleteHook ? 2000 : 10000; + + return this._write(function (resolve, reject, idbstore, trans) { + var totalCount = 0; + // Clone collection and change its table and set a limit of CHUNKSIZE on the cloned Collection instance. + var collection = _this6.clone({ + keysOnly: !ctx.isMatch && !hasDeleteHook }) // load just keys (unless filter() or and() or deleteHook has subscribers) + .distinct() // In case multiEntry is used, never delete same key twice because resulting count + // would become larger than actual delete count. + .limit(CHUNKSIZE).raw(); // Don't filter through reading-hooks (like mapped classes etc) + + var keysOrTuples = []; + + // We're gonna do things on as many chunks that are needed. + // Use recursion of nextChunk function: + var nextChunk = function () { + return collection.each(hasDeleteHook ? function (val, cursor) { + // Somebody subscribes to hook('deleting'). Collect all primary keys and their values, + // so that the hook can be called with its values in bulkDelete(). + keysOrTuples.push([cursor.primaryKey, cursor.value]); + } : function (val, cursor) { + // No one subscribes to hook('deleting'). Collect only primary keys: + keysOrTuples.push(cursor.primaryKey); + }).then(function () { + // Chromium deletes faster when doing it in sort order. + hasDeleteHook ? keysOrTuples.sort(function (a, b) { + return ascending(a[0], b[0]); + }) : keysOrTuples.sort(ascending); + return bulkDelete(idbstore, trans, keysOrTuples, hasDeleteHook, deletingHook); + }).then(function () { + var count = keysOrTuples.length; + totalCount += count; + keysOrTuples = []; + return count < CHUNKSIZE ? totalCount : nextChunk(); + }); + }; + + resolve(nextChunk()); + }); + } + }; + }); + + // + // + // + // ------------------------- Help functions --------------------------- + // + // + // + + function lowerVersionFirst(a, b) { + return a._cfg.version - b._cfg.version; + } + + function setApiOnPlace(objs, tableNames, dbschema) { + tableNames.forEach(function (tableName) { + var schema = dbschema[tableName]; + objs.forEach(function (obj) { + if (!(tableName in obj)) { + if (obj === Transaction.prototype || obj instanceof Transaction) { + // obj is a Transaction prototype (or prototype of a subclass to Transaction) + // Make the API a getter that returns this.table(tableName) + setProp(obj, tableName, { + get: function () { + return this.table(tableName); + } + }); + } else { + // Table will not be bound to a transaction (will use Dexie.currentTransaction) + obj[tableName] = new Table(tableName, schema); + } + } + }); + }); + } + + function removeTablesApi(objs) { + objs.forEach(function (obj) { + for (var key in obj) { + if (obj[key] instanceof Table) delete obj[key]; + } + }); + } + + function iterate(req, filter, fn, resolve, reject, valueMapper) { + + // Apply valueMapper (hook('reading') or mappped class) + var mappedFn = valueMapper ? function (x, c, a) { + return fn(valueMapper(x), c, a); + } : fn; + // Wrap fn with PSD and microtick stuff from Promise. + var wrappedFn = wrap(mappedFn, reject); + + if (!req.onerror) req.onerror = eventRejectHandler(reject); + if (filter) { + req.onsuccess = trycatcher(function filter_record() { + var cursor = req.result; + if (cursor) { + var c = function () { + cursor.continue(); + }; + if (filter(cursor, function (advancer) { + c = advancer; + }, resolve, reject)) wrappedFn(cursor.value, cursor, function (advancer) { + c = advancer; + }); + c(); + } else { + resolve(); + } + }, reject); + } else { + req.onsuccess = trycatcher(function filter_record() { + var cursor = req.result; + if (cursor) { + var c = function () { + cursor.continue(); + }; + wrappedFn(cursor.value, cursor, function (advancer) { + c = advancer; + }); + c(); + } else { + resolve(); + } + }, reject); + } + } + + function parseIndexSyntax(indexes) { + /// + /// + var rv = []; + indexes.split(',').forEach(function (index) { + index = index.trim(); + var name = index.replace(/([&*]|\+\+)/g, ""); // Remove "&", "++" and "*" + // Let keyPath of "[a+b]" be ["a","b"]: + var keyPath = /^\[/.test(name) ? name.match(/^\[(.*)\]$/)[1].split('+') : name; + + rv.push(new IndexSpec(name, keyPath || null, /\&/.test(index), /\*/.test(index), /\+\+/.test(index), isArray(keyPath), /\./.test(index))); + }); + return rv; + } + + function cmp(key1, key2) { + return indexedDB.cmp(key1, key2); + } + + function min(a, b) { + return cmp(a, b) < 0 ? a : b; + } + + function max(a, b) { + return cmp(a, b) > 0 ? a : b; + } + + function ascending(a, b) { + return indexedDB.cmp(a, b); + } + + function descending(a, b) { + return indexedDB.cmp(b, a); + } + + function simpleCompare(a, b) { + return a < b ? -1 : a === b ? 0 : 1; + } + + function simpleCompareReverse(a, b) { + return a > b ? -1 : a === b ? 0 : 1; + } + + function combine(filter1, filter2) { + return filter1 ? filter2 ? function () { + return filter1.apply(this, arguments) && filter2.apply(this, arguments); + } : filter1 : filter2; + } + + function readGlobalSchema() { + db.verno = idbdb.version / 10; + db._dbSchema = globalSchema = {}; + dbStoreNames = slice(idbdb.objectStoreNames, 0); + if (dbStoreNames.length === 0) return; // Database contains no stores. + var trans = idbdb.transaction(safariMultiStoreFix(dbStoreNames), 'readonly'); + dbStoreNames.forEach(function (storeName) { + var store = trans.objectStore(storeName), + keyPath = store.keyPath, + dotted = keyPath && typeof keyPath === 'string' && keyPath.indexOf('.') !== -1; + var primKey = new IndexSpec(keyPath, keyPath || "", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== 'string', dotted); + var indexes = []; + for (var j = 0; j < store.indexNames.length; ++j) { + var idbindex = store.index(store.indexNames[j]); + keyPath = idbindex.keyPath; + dotted = keyPath && typeof keyPath === 'string' && keyPath.indexOf('.') !== -1; + var index = new IndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== 'string', dotted); + indexes.push(index); + } + globalSchema[storeName] = new TableSchema(storeName, primKey, indexes, {}); + }); + setApiOnPlace([allTables], keys(globalSchema), globalSchema); + } + + function adjustToExistingIndexNames(schema, idbtrans) { + /// + /// Issue #30 Problem with existing db - adjust to existing index names when migrating from non-dexie db + /// + /// Map between name and TableSchema + /// + var storeNames = idbtrans.db.objectStoreNames; + for (var i = 0; i < storeNames.length; ++i) { + var storeName = storeNames[i]; + var store = idbtrans.objectStore(storeName); + hasGetAll = 'getAll' in store; + for (var j = 0; j < store.indexNames.length; ++j) { + var indexName = store.indexNames[j]; + var keyPath = store.index(indexName).keyPath; + var dexieName = typeof keyPath === 'string' ? keyPath : "[" + slice(keyPath).join('+') + "]"; + if (schema[storeName]) { + var indexSpec = schema[storeName].idxByName[dexieName]; + if (indexSpec) indexSpec.name = indexName; + } + } + } + } + + function fireOnBlocked(ev) { + db.on("blocked").fire(ev); + // Workaround (not fully*) for missing "versionchange" event in IE,Edge and Safari: + connections.filter(function (c) { + return c.name === db.name && c !== db && !c._vcFired; + }).map(function (c) { + return c.on("versionchange").fire(ev); + }); + } + + extend(this, { + Collection: Collection, + Table: Table, + Transaction: Transaction, + Version: Version, + WhereClause: WhereClause + }); + + init(); + + addons.forEach(function (fn) { + fn(db); + }); +} + +var fakeAutoComplete = function () {}; // Will never be changed. We just fake for the IDE that we change it (see doFakeAutoComplete()) +var fake = false; // Will never be changed. We just fake for the IDE that we change it (see doFakeAutoComplete()) + +function parseType(type) { + if (typeof type === 'function') { + return new type(); + } else if (isArray(type)) { + return [parseType(type[0])]; + } else if (type && typeof type === 'object') { + var rv = {}; + applyStructure(rv, type); + return rv; + } else { + return type; + } +} + +function applyStructure(obj, structure) { + keys(structure).forEach(function (member) { + var value = parseType(structure[member]); + obj[member] = value; + }); + return obj; +} + +function hookedEventSuccessHandler(resolve) { + // wrap() is needed when calling hooks because the rare scenario of: + // * hook does a db operation that fails immediately (IDB throws exception) + // For calling db operations on correct transaction, wrap makes sure to set PSD correctly. + // wrap() will also execute in a virtual tick. + // * If not wrapped in a virtual tick, direct exception will launch a new physical tick. + // * If this was the last event in the bulk, the promise will resolve after a physical tick + // and the transaction will have committed already. + // If no hook, the virtual tick will be executed in the reject()/resolve of the final promise, + // because it is always marked with _lib = true when created using Transaction._promise(). + return wrap(function (event) { + var req = event.target, + result = req.result, + ctx = req._hookCtx, + // Contains the hook error handler. Put here instead of closure to boost performance. + hookSuccessHandler = ctx && ctx.onsuccess; + hookSuccessHandler && hookSuccessHandler(result); + resolve && resolve(result); + }, resolve); +} + +function eventRejectHandler(reject) { + return wrap(function (event) { + preventDefault(event); + reject(event.target.error); + return false; + }); +} + +function eventSuccessHandler(resolve) { + return wrap(function (event) { + resolve(event.target.result); + }); +} + +function hookedEventRejectHandler(reject) { + return wrap(function (event) { + // See comment on hookedEventSuccessHandler() why wrap() is needed only when supporting hooks. + + var req = event.target, + err = req.error, + ctx = req._hookCtx, + // Contains the hook error handler. Put here instead of closure to boost performance. + hookErrorHandler = ctx && ctx.onerror; + hookErrorHandler && hookErrorHandler(err); + preventDefault(event); + reject(err); + return false; + }); +} + +function preventDefault(event) { + if (event.stopPropagation) // IndexedDBShim doesnt support this on Safari 8 and below. + event.stopPropagation(); + if (event.preventDefault) // IndexedDBShim doesnt support this on Safari 8 and below. + event.preventDefault(); +} + +function globalDatabaseList(cb) { + var val, + localStorage = Dexie.dependencies.localStorage; + if (!localStorage) return cb([]); // Envs without localStorage support + try { + val = JSON.parse(localStorage.getItem('Dexie.DatabaseNames') || "[]"); + } catch (e) { + val = []; + } + if (cb(val)) { + localStorage.setItem('Dexie.DatabaseNames', JSON.stringify(val)); + } +} + +function awaitIterator(iterator) { + var callNext = function (result) { + return iterator.next(result); + }, + doThrow = function (error) { + return iterator.throw(error); + }, + onSuccess = step(callNext), + onError = step(doThrow); + + function step(getNext) { + return function (val) { + var next = getNext(val), + value = next.value; + + return next.done ? value : !value || typeof value.then !== 'function' ? isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) : value.then(onSuccess, onError); + }; + } + + return step(callNext)(); +} + +// +// IndexSpec struct +// +function IndexSpec(name, keyPath, unique, multi, auto, compound, dotted) { + /// + /// + /// + /// + /// + /// + /// + this.name = name; + this.keyPath = keyPath; + this.unique = unique; + this.multi = multi; + this.auto = auto; + this.compound = compound; + this.dotted = dotted; + var keyPathSrc = typeof keyPath === 'string' ? keyPath : keyPath && '[' + [].join.call(keyPath, '+') + ']'; + this.src = (unique ? '&' : '') + (multi ? '*' : '') + (auto ? "++" : "") + keyPathSrc; +} + +// +// TableSchema struct +// +function TableSchema(name, primKey, indexes, instanceTemplate) { + /// + /// + /// + /// + this.name = name; + this.primKey = primKey || new IndexSpec(); + this.indexes = indexes || [new IndexSpec()]; + this.instanceTemplate = instanceTemplate; + this.mappedClass = null; + this.idxByName = arrayToObject(indexes, function (index) { + return [index.name, index]; + }); +} + +// Used in when defining dependencies later... +// (If IndexedDBShim is loaded, prefer it before standard indexedDB) +var idbshim = _global.idbModules && _global.idbModules.shimIndexedDB ? _global.idbModules : {}; + +function safariMultiStoreFix(storeNames) { + return storeNames.length === 1 ? storeNames[0] : storeNames; +} + +function getNativeGetDatabaseNamesFn(indexedDB) { + var fn = indexedDB && (indexedDB.getDatabaseNames || indexedDB.webkitGetDatabaseNames); + return fn && fn.bind(indexedDB); +} + +// Export Error classes +props(Dexie, fullNameExceptions); // Dexie.XXXError = class XXXError {...}; + +// +// Static methods and properties +// +props(Dexie, { + + // + // Static delete() method. + // + delete: function (databaseName) { + var db = new Dexie(databaseName), + promise = db.delete(); + promise.onblocked = function (fn) { + db.on("blocked", fn); + return this; + }; + return promise; + }, + + // + // Static exists() method. + // + exists: function (name) { + return new Dexie(name).open().then(function (db) { + db.close(); + return true; + }).catch(Dexie.NoSuchDatabaseError, function () { + return false; + }); + }, + + // + // Static method for retrieving a list of all existing databases at current host. + // + getDatabaseNames: function (cb) { + return new Promise(function (resolve, reject) { + var getDatabaseNames = getNativeGetDatabaseNamesFn(indexedDB); + if (getDatabaseNames) { + // In case getDatabaseNames() becomes standard, let's prepare to support it: + var req = getDatabaseNames(); + req.onsuccess = function (event) { + resolve(slice(event.target.result, 0)); // Converst DOMStringList to Array + }; + req.onerror = eventRejectHandler(reject); + } else { + globalDatabaseList(function (val) { + resolve(val); + return false; + }); + } + }).then(cb); + }, + + defineClass: function (structure) { + /// + /// Create a javascript constructor based on given template for which properties to expect in the class. + /// Any property that is a constructor function will act as a type. So {name: String} will be equal to {name: new String()}. + /// + /// Helps IDE code completion by knowing the members that objects contain and not just the indexes. Also + /// know what type each member has. Example: {name: String, emailAddresses: [String], properties: {shoeSize: Number}} + + // Default constructor able to copy given properties into this object. + function Class(properties) { + /// Properties to initialize object with. + /// + properties ? extend(this, properties) : fake && applyStructure(this, structure); + } + return Class; + }, + + applyStructure: applyStructure, + + ignoreTransaction: function (scopeFunc) { + // In case caller is within a transaction but needs to create a separate transaction. + // Example of usage: + // + // Let's say we have a logger function in our app. Other application-logic should be unaware of the + // logger function and not need to include the 'logentries' table in all transaction it performs. + // The logging should always be done in a separate transaction and not be dependant on the current + // running transaction context. Then you could use Dexie.ignoreTransaction() to run code that starts a new transaction. + // + // Dexie.ignoreTransaction(function() { + // db.logentries.add(newLogEntry); + // }); + // + // Unless using Dexie.ignoreTransaction(), the above example would try to reuse the current transaction + // in current Promise-scope. + // + // An alternative to Dexie.ignoreTransaction() would be setImmediate() or setTimeout(). The reason we still provide an + // API for this because + // 1) The intention of writing the statement could be unclear if using setImmediate() or setTimeout(). + // 2) setTimeout() would wait unnescessary until firing. This is however not the case with setImmediate(). + // 3) setImmediate() is not supported in the ES standard. + // 4) You might want to keep other PSD state that was set in a parent PSD, such as PSD.letThrough. + return PSD.trans ? usePSD(PSD.transless, scopeFunc) : // Use the closest parent that was non-transactional. + scopeFunc(); // No need to change scope because there is no ongoing transaction. + }, + + vip: function (fn) { + // To be used by subscribers to the on('ready') event. + // This will let caller through to access DB even when it is blocked while the db.ready() subscribers are firing. + // This would have worked automatically if we were certain that the Provider was using Dexie.Promise for all asyncronic operations. The promise PSD + // from the provider.connect() call would then be derived all the way to when provider would call localDatabase.applyChanges(). But since + // the provider more likely is using non-promise async APIs or other thenable implementations, we cannot assume that. + // Note that this method is only useful for on('ready') subscribers that is returning a Promise from the event. If not using vip() + // the database could deadlock since it wont open until the returned Promise is resolved, and any non-VIPed operation started by + // the caller will not resolve until database is opened. + return newScope(function () { + PSD.letThrough = true; // Make sure we are let through if still blocking db due to onready is firing. + return fn(); + }); + }, + + async: function (generatorFn) { + return function () { + try { + var rv = awaitIterator(generatorFn.apply(this, arguments)); + if (!rv || typeof rv.then !== 'function') return Promise.resolve(rv); + return rv; + } catch (e) { + return rejection(e); + } + }; + }, + + spawn: function (generatorFn, args, thiz) { + try { + var rv = awaitIterator(generatorFn.apply(thiz, args || [])); + if (!rv || typeof rv.then !== 'function') return Promise.resolve(rv); + return rv; + } catch (e) { + return rejection(e); + } + }, + + // Dexie.currentTransaction property + currentTransaction: { + get: function () { + return PSD.trans || null; + } + }, + + waitFor: function (promiseOrFunction, optionalTimeout) { + // If a function is provided, invoke it and pass the returning value to Transaction.waitFor() + var promise = Promise.resolve(typeof promiseOrFunction === 'function' ? Dexie.ignoreTransaction(promiseOrFunction) : promiseOrFunction).timeout(optionalTimeout || 60000); // Default the timeout to one minute. Caller may specify Infinity if required. + + // Run given promise on current transaction. If no current transaction, just return a Dexie promise based + // on given value. + return PSD.trans ? PSD.trans.waitFor(promise) : promise; + }, + + // Export our Promise implementation since it can be handy as a standalone Promise implementation + Promise: Promise, + + // Dexie.debug proptery: + // Dexie.debug = false + // Dexie.debug = true + // Dexie.debug = "dexie" - don't hide dexie's stack frames. + debug: { + get: function () { + return debug; + }, + set: function (value) { + setDebug(value, value === 'dexie' ? function () { + return true; + } : dexieStackFrameFilter); + } + }, + + // Export our derive/extend/override methodology + derive: derive, + extend: extend, + props: props, + override: override, + // Export our Events() function - can be handy as a toolkit + Events: Events, + // Utilities + getByKeyPath: getByKeyPath, + setByKeyPath: setByKeyPath, + delByKeyPath: delByKeyPath, + shallowClone: shallowClone, + deepClone: deepClone, + getObjectDiff: getObjectDiff, + asap: asap, + maxKey: maxKey, + minKey: minKey, + // Addon registry + addons: [], + // Global DB connection list + connections: connections, + + MultiModifyError: exceptions.Modify, // Backward compatibility 0.9.8. Deprecate. + errnames: errnames, + + // Export other static classes + IndexSpec: IndexSpec, + TableSchema: TableSchema, + + // + // Dependencies + // + // These will automatically work in browsers with indexedDB support, or where an indexedDB polyfill has been included. + // + // In node.js, however, these properties must be set "manually" before instansiating a new Dexie(). + // For node.js, you need to require indexeddb-js or similar and then set these deps. + // + dependencies: { + // Required: + indexedDB: idbshim.shimIndexedDB || _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB, + IDBKeyRange: idbshim.IDBKeyRange || _global.IDBKeyRange || _global.webkitIDBKeyRange + }, + + // API Version Number: Type Number, make sure to always set a version number that can be comparable correctly. Example: 0.9, 0.91, 0.92, 1.0, 1.01, 1.1, 1.2, 1.21, etc. + semVer: DEXIE_VERSION, + version: DEXIE_VERSION.split('.').map(function (n) { + return parseInt(n); + }).reduce(function (p, c, i) { + return p + c / Math.pow(10, i * 2); + }), + fakeAutoComplete: fakeAutoComplete, + + // https://github.com/dfahlander/Dexie.js/issues/186 + // typescript compiler tsc in mode ts-->es5 & commonJS, will expect require() to return + // x.default. Workaround: Set Dexie.default = Dexie. + default: Dexie +}); + +tryCatch(function () { + // Optional dependencies + // localStorage + Dexie.dependencies.localStorage = (typeof chrome !== "undefined" && chrome !== null ? chrome.storage : void 0) != null ? null : _global.localStorage; +}); + +// Map DOMErrors and DOMExceptions to corresponding Dexie errors. May change in Dexie v2.0. +Promise.rejectionMapper = mapError; + +// Fool IDE to improve autocomplete. Tested with Visual Studio 2013 and 2015. +doFakeAutoComplete(function () { + Dexie.fakeAutoComplete = fakeAutoComplete = doFakeAutoComplete; + Dexie.fake = fake = true; +}); + +return Dexie; + +}))); +//# sourceMappingURL=dexie.js.map diff --git a/src/contentscripts/shazam.css b/src/contentscripts/shazam.css new file mode 100644 index 0000000..c79cafd --- /dev/null +++ b/src/contentscripts/shazam.css @@ -0,0 +1,45 @@ +/* The Modal (background) */ +.shazify-modal { + position: fixed; /* Stay in place */ + z-index: 2000; /* Sit on top */ + left: 0; + top: 0; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background-color: rgb(0,0,0); /* Fallback color */ + background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ +} + +/* Modal Content/Box */ +.shazify-modal-content { + position:relative; + background-color: #89C161; + margin: 15% auto; /* 15% from the top and centered */ + padding: 30px 25px; + width: 80%; /* Could be more or less, depending on screen size */ +} + +.shazify-modal-content p { + color:white; + letter-spacing: 0.5px; +} + +/* The Close Button */ +.shazify-modal-close { + color: #000000; + position: absolute; + right:15px; + top:15px; + height:15px; + line-height:15px; + font-weight:300; + font-size: 28px; +} + +.shazify-modal-close:hover, +.shazify-modal-close:focus { + color: black; + text-decoration: none; + cursor: pointer; +} \ No newline at end of file diff --git a/src/contentscripts/shazamLocalStorage.js b/src/contentscripts/shazamLocalStorage.js new file mode 100644 index 0000000..73473fb --- /dev/null +++ b/src/contentscripts/shazamLocalStorage.js @@ -0,0 +1,133 @@ +function retrieveWindowVariables(variables) { + var ret = {}; + + var scriptContent = ''; + for (var i = 0; i < variables.length; i++) { + var currVariable = variables[i]; + scriptContent += "if (typeof " + currVariable + " !== 'undefined') document.body.setAttribute('tmp_" + currVariable + "', JSON.stringify(" + currVariable + "));\n" + } + + var script = document.createElement('script'); + script.id = 'tmpScript'; + script.appendChild(document.createTextNode(scriptContent)); + (document.body || document.head || document.documentElement).appendChild(script); + + for (var i = 0; i < variables.length; i++) { + var currVariable = variables[i]; + ret[currVariable] = JSON.parse(document.body.getAttribute('tmp_' + currVariable)); + document.body.removeAttribute('tmp_' + currVariable); + } + + document.getElementById('tmpScript').remove(); + + return ret; +} + +function openModal(text) { + var modalContainer = document.createElement('div'); + modalContainer.className = 'shazify-modal'; + + var modalContent = document.createElement('div'); + modalContent.className = 'shazify-modal-content'; + modalContainer.appendChild(modalContent); + + var modalClose = document.createElement('span'); + modalClose.className = 'shazify-modal-close'; + modalClose.innerHTML = '×'; + + var modalText = document.createElement('p'); + modalText.innerHTML = text; + + modalContent.appendChild(modalClose); + modalContent.appendChild(modalText); + + var closeModal = function() { + modalContainer.remove(); + }; + + modalClose.onclick = closeModal; + modalContainer.onclick = closeModal; + + document.body.appendChild(modalContainer); +} + +var modalOpened = false; +function openModalOnlyOnce(text) { + if(modalOpened) { + return; + } + + return openModal(text); +} + +function getAndSendLocalStorage() { + var pageVars = retrieveWindowVariables(['localStorage']); + + if(pageVars && pageVars.localStorage && pageVars.localStorage.inid) { + console.log('inid found on local storage : '+ pageVars.localStorage.inid); + console.log('Sending to Shazify...'); + + // Send a message to Shazify background script with the page's localStorage + chrome.runtime.sendMessage({ shazamLocalStorage: pageVars.localStorage }, function(response) { + if(!response || ('isFine' in response && response.isFine === false)) { + console.log('inid seems not fine... maybe an old one. Please login again on Shazam.'); + observeForLoginAndGetLocalStorage(); + } else { + console.log('inid seems fine! Congrats! You are now logged in on Shazam.'); + + openModalOnlyOnce('Shazify: Login is successful! Please open Shazify again.'); + } + }); + + return true; + } + + return false; +} + +var observerIsSet = false; + +function observeForLoginAndGetLocalStorage() { + if(observerIsSet) { + return; + } + + observerIsSet = true; + + console.log('Observing for changes on the Shazam webpage, waiting for login...'); + + // Observe for changes on #/myshazam element, and when a change is detected, try to get localStorage again + var target = document.getElementsByClassName('main'); + + if(!target || target.length === 0) { + console.log('DOM not ready yet, waiting 1s...'); + observerIsSet = false; + + setTimeout(function() { + observeForLoginAndGetLocalStorage(); + }, 1000); + + return; + } + + target = target[0]; + + // create an observer instance + var observer = new MutationObserver(function() { + console.log('Change detected on the Shazam page, maybe a successful login... will check for inid in local storage.'); + if(getAndSendLocalStorage()) { + observerIsSet = false; + observer.disconnect(); + } + }); + + // configuration of the observer: + var config = { childList: true }; + + // pass in the target node, as well as the observer options + observer.observe(target, config); +} + +if(!getAndSendLocalStorage()) { + observeForLoginAndGetLocalStorage(); +} \ No newline at end of file diff --git a/src/popup/css/popup.css b/src/popup/css/popup.css index 9508c61..8d511eb 100644 --- a/src/popup/css/popup.css +++ b/src/popup/css/popup.css @@ -46,6 +46,33 @@ https://github.com/yui/pure/blob/master/LICENSE.md width:300px; } + .simplelineicon { + width: 32px; + height: 32px; + display: block; + color: #525151; + } + + .simplelineicon.red { + color:#A94442; + } + + .simplelineicon.green { + color:#3c763d; + } + + .icon-spin { + display:inline-block; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } + + .icon-spin-slow { + display:inline-block; + -webkit-animation: spin 4s infinite linear; + animation: spin 4s infinite linear; + } + .iconmelon { position: relative; width: 32px; @@ -93,8 +120,149 @@ https://github.com/yui/pure/blob/master/LICENSE.md padding:6px 8px; } + hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 5px 0; + padding: 0; + } + + h3 { + font-weight: 500; + font-size: 16px; + margin-bottom: 0; + } + + .button-xsmall { + font-size: 70%; + } + + .button-small { + font-size: 85%; + } + + .button-large { + font-size: 110%; + } + + .button-xlarge { + font-size: 125%; + } + +/* Audio player */ + .audio-player { + position: relative; + text-align: center; + } + + .audio-player button { + cursor: pointer; + position:relative; + display: block; + margin: 0 auto; + padding: 0; + width: 24px; + height: 24px; + background: transparent; + color: #2ECC71; /*1ECD97*/ + border: 2px solid #2ECC71; + border-radius: 50%; + } + + .audio-player svg.progress-circle { + position: absolute; + top: 0; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + pointer-events: none; + } + + .audio-player svg.progress-circle path { + opacity: 0; + fill: none; + } + + .audio-player svg.progress-circle path { + stroke: #2ECC71; + stroke-width: 5; + } + + .audio-player.playing button { + border-color: #ddd; + } + + .audio-player button span { + position:absolute; + top: 2px; + left: 3px; + } + + .audio-player button svg { + color:#2ECC71; + fill:#2ECC71; + stroke: #2ECC71; + } + + .audio-player span.play { + opacity:1; + } + + .audio-player span.pause { + opacity:0; + top: 3px; + left: 3px; + } + + .audio-player.playing span.play { + -webkit-transition: opacity 0.15s; + transition: opacity 0.15s; + opacity:0; + } + + .audio-player.playing span.pause { + -webkit-transition: opacity 0.15s; + transition: opacity 0.15s; + opacity:1; + } + + .audio-player button span { + -webkit-transition: opacity 0.3s 0.1s; + transition: opacity 0.3s 0.1s; + } + + .audio-player.playing svg.progress-circle path { + opacity: 1; + -webkit-transition: stroke-dashoffset 0.3s; + transition: stroke-dashoffset 0.3s; + } + /* Animations */ + @-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(-359deg); + transform: rotate(-359deg); + } + } + + @keyframes spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(-359deg); + transform: rotate(-359deg); + } + } + @-webkit-keyframes enterAnimation { to { opacity: 1; @@ -223,7 +391,7 @@ https://github.com/yui/pure/blob/master/LICENSE.md } .modal input { - width: 270px; + width: 100%;/*270px*/ background-color: white; border: 1px solid #cccccc; padding: 6px 8px; @@ -235,7 +403,7 @@ https://github.com/yui/pure/blob/master/LICENSE.md } /* Updating */ - .updating { + .waiting-overlay { position:absolute; top:0; left:0; @@ -246,20 +414,20 @@ https://github.com/yui/pure/blob/master/LICENSE.md z-index:3000; } - .updating.ng-enter, .modal-overlay.ng-leave { + .waiting-overlay.ng-enter, .waiting-overlay.ng-leave { -webkit-transition: 0.3s ease all; transition: 0.3s ease all; } - .updating.ng-enter, .updating.ng-leave.ng-leave-active { + .waiting-overlay.ng-enter, .waiting-overlay.ng-leave.ng-leave-active { opacity:0; } - .updating.ng-enter.ng-enter-active, .updating.ng-leave { + .waiting-overlay.ng-enter.ng-enter-active, .waiting-overlay.ng-leave { opacity:1; } - .updating .content { + .waiting-overlay .content { width:150px; height:150px; position:absolute; @@ -269,18 +437,40 @@ https://github.com/yui/pure/blob/master/LICENSE.md text-align:center; } - .updating .iconmelon { + .loading .content { + margin-top:40px; + font-size:120%; + } + + .waiting-overlay .iconmelon { width:64px; height:64px; margin:40px auto; display:block; } - .updating .iconmelon svg { + .waiting-overlay .iconmelon svg { padding:8px; margin-left:-10px; } + .waiting-overlay .simplelineicon { + width:64px; + height:64px; + font-size:64px; + line-height:64px; + margin:40px auto 20px auto; + display:block; + } + + .updating .updating-tags { + font-size:120%; + } + + .waiting-overlay .updating-app { + font-size:120%; + } + /* Top bar */ .topbar { @@ -297,11 +487,81 @@ https://github.com/yui/pure/blob/master/LICENSE.md font-size:18px; } + .topbar h2 .tags-count { + font-size:60%; + opacity:0.8; + vertical-align: middle; + } + .topbar .right { float:right; overflow:hidden; } + .topbar .simplelineicon { + width:16px; + height:16px; + font-size:16px; + line-height: 16px; + float:left; + margin-left:7px; + margin-top:6px; + } + + .topbar .dropdown { + position:absolute; + top:44px; + background-color: white; + border:1px solid #cccccc; + padding:10px; + z-index: 2000; + right: 41px; + box-sizing: content-box; + height: 16px; + } + + .topbar .dropdown:after, .topbar .dropdown:before { + bottom: 100%; + left: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + } + + .topbar .dropdown:after { + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #ffffff; + border-width: 6px; + margin-left: -6px; + } + .topbar .dropdown:before { + border-color: rgba(204, 204, 204, 0); + border-bottom-color: #cccccc; + border-width: 7px; + margin-left: -7px; + } + + .topbar .dropdown .filter { + font-size:16px; + line-height: 16px; + height: 16px; + opacity: 0.3; + margin-right:5px; + cursor:pointer; + display:inline-block; + } + + .topbar .dropdown .filter:last-child { + margin-right: 0; + } + + .topbar .dropdown .filter.selected { + opacity:1; + } + .topbar .iconmelon { width:16px; height:16px; @@ -448,21 +708,30 @@ https://github.com/yui/pure/blob/master/LICENSE.md margin:0 auto; } + .no-tags .simplelineicon { + width:64px; + height:64px; + font-size:64px; + line-height:64px; + margin:0 auto; + } + .tags-list { overflow:hidden; position:relative; - min-height:240px; + min-height:310px; } - .tags-list .tag { + .tag { + display:block; overflow:hidden; clear:both; - margin-bottom:7px; + padding-top:7px; border-bottom:1px solid #e0e0e0; padding-bottom:7px; } - .tags-list .tag.ng-enter { + .tag.ng-enter { opacity: 0; transform: translate(0, -50px); @@ -470,20 +739,43 @@ https://github.com/yui/pure/blob/master/LICENSE.md animation: enterAnimation 0.2s ease forwards; } - .tags-list .tag.ng-enter-stagger { - -webkit-animation-delay:50ms; - animation-delay:50ms; + .tag.ng-enter-stagger { + -webkit-animation-delay:10ms; + animation-delay:10ms; -webkit-animation-duration:0; animation-duration:0; } + .tag:hover .tag-actions { + display:block; + } + + .tag-actions { + display:none; + float:right; + margin-left:10px; + margin-top:2px; + } + + .tag-actions .player { + margin-top: 3px; + } + + .tag-status.hidden+.tag-actions { + margin-right:8px; + } + .tag-status { float:right; margin-left:10px; margin-top:2px; } + .tag-status.hidden { + display:none; + } + .tag-status .iconmelon { width:32px; height:32px; @@ -505,6 +797,29 @@ https://github.com/yui/pure/blob/master/LICENSE.md fill:#59ABE3; } + .tag-status .simplelineicon { + width:32px; + height:32px; + font-size:32px; + line-height:32px; + } + + .tag-status .success .simplelineicon { + color:#2ECC71; + } + + .tag-status .success.pending .simplelineicon { + opacity:0.6; + } + + .tag-status .error .simplelineicon { + color:#F9690E; + } + + .tag-status .search .simplelineicon { + color:#59ABE3; + } + .tag.tag-success { } @@ -519,6 +834,7 @@ https://github.com/yui/pure/blob/master/LICENSE.md .tag .tag-image { width:36px; + border-radius: 50%; float:left; margin-right:10px; } @@ -537,6 +853,68 @@ https://github.com/yui/pure/blob/master/LICENSE.md font-weight:normal; } +/* Pagination */ + .pagination { + margin-top:5px; + overflow: hidden; + display: flex; + height:19px; + } + + .pagination-left { + width: 20px; + flex: 0 0 20px; + } + + .pagination-center { + flex: 1; + text-align: center; + } + + .pagination-right { + width: 20px; + flex: 0 0 20px; + } + + .pagination-prev, .pagination-next { + font-size:16px; + line-height: 16px; + height: 16px; + cursor: pointer; + } + + .pagination-prev.disabled, .pagination-next.disabled { + cursor: default; + opacity: 0.4; + } + + .pagination-count { + display:inline-block; + } + + .pagination-limit { + font-size:90%; + } + + .pagination-next { + text-align: right; + } + + .tag.search-result { + + } + + .tag.search-result:hover { + background-color:#efefef; + } + + .new-search-modal { + bottom:20px; + top:20px; + overflow-y:auto; + overflow-x:hidden; + } + /* Settings */ .settings h3 { diff --git a/src/popup/css/simple-line-icons.css b/src/popup/css/simple-line-icons.css new file mode 100755 index 0000000..890ae56 --- /dev/null +++ b/src/popup/css/simple-line-icons.css @@ -0,0 +1,778 @@ +@font-face { + font-family: 'simple-line-icons'; + src: url('fonts/Simple-Line-Icons.eot?v=2.4.0'); + src: url('fonts/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'), url('fonts/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'), url('fonts/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'), url('fonts/Simple-Line-Icons.woff?v=2.4.0') format('woff'), url('fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg'); + font-weight: normal; + font-style: normal; +} +/* + Use the following CSS code if you want to have a class per icon. + Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: +*/ +.icon-user, +.icon-people, +.icon-user-female, +.icon-user-follow, +.icon-user-following, +.icon-user-unfollow, +.icon-login, +.icon-logout, +.icon-emotsmile, +.icon-phone, +.icon-call-end, +.icon-call-in, +.icon-call-out, +.icon-map, +.icon-location-pin, +.icon-direction, +.icon-directions, +.icon-compass, +.icon-layers, +.icon-menu, +.icon-list, +.icon-options-vertical, +.icon-options, +.icon-arrow-down, +.icon-arrow-left, +.icon-arrow-right, +.icon-arrow-up, +.icon-arrow-up-circle, +.icon-arrow-left-circle, +.icon-arrow-right-circle, +.icon-arrow-down-circle, +.icon-check, +.icon-clock, +.icon-plus, +.icon-minus, +.icon-close, +.icon-event, +.icon-exclamation, +.icon-organization, +.icon-trophy, +.icon-screen-smartphone, +.icon-screen-desktop, +.icon-plane, +.icon-notebook, +.icon-mustache, +.icon-mouse, +.icon-magnet, +.icon-energy, +.icon-disc, +.icon-cursor, +.icon-cursor-move, +.icon-crop, +.icon-chemistry, +.icon-speedometer, +.icon-shield, +.icon-screen-tablet, +.icon-magic-wand, +.icon-hourglass, +.icon-graduation, +.icon-ghost, +.icon-game-controller, +.icon-fire, +.icon-eyeglass, +.icon-envelope-open, +.icon-envelope-letter, +.icon-bell, +.icon-badge, +.icon-anchor, +.icon-wallet, +.icon-vector, +.icon-speech, +.icon-puzzle, +.icon-printer, +.icon-present, +.icon-playlist, +.icon-pin, +.icon-picture, +.icon-handbag, +.icon-globe-alt, +.icon-globe, +.icon-folder-alt, +.icon-folder, +.icon-film, +.icon-feed, +.icon-drop, +.icon-drawer, +.icon-docs, +.icon-doc, +.icon-diamond, +.icon-cup, +.icon-calculator, +.icon-bubbles, +.icon-briefcase, +.icon-book-open, +.icon-basket-loaded, +.icon-basket, +.icon-bag, +.icon-action-undo, +.icon-action-redo, +.icon-wrench, +.icon-umbrella, +.icon-trash, +.icon-tag, +.icon-support, +.icon-frame, +.icon-size-fullscreen, +.icon-size-actual, +.icon-shuffle, +.icon-share-alt, +.icon-share, +.icon-rocket, +.icon-question, +.icon-pie-chart, +.icon-pencil, +.icon-note, +.icon-loop, +.icon-home, +.icon-grid, +.icon-graph, +.icon-microphone, +.icon-music-tone-alt, +.icon-music-tone, +.icon-earphones-alt, +.icon-earphones, +.icon-equalizer, +.icon-like, +.icon-dislike, +.icon-control-start, +.icon-control-rewind, +.icon-control-play, +.icon-control-pause, +.icon-control-forward, +.icon-control-end, +.icon-volume-1, +.icon-volume-2, +.icon-volume-off, +.icon-calendar, +.icon-bulb, +.icon-chart, +.icon-ban, +.icon-bubble, +.icon-camrecorder, +.icon-camera, +.icon-cloud-download, +.icon-cloud-upload, +.icon-envelope, +.icon-eye, +.icon-flag, +.icon-heart, +.icon-info, +.icon-key, +.icon-link, +.icon-lock, +.icon-lock-open, +.icon-magnifier, +.icon-magnifier-add, +.icon-magnifier-remove, +.icon-paper-clip, +.icon-paper-plane, +.icon-power, +.icon-refresh, +.icon-reload, +.icon-settings, +.icon-star, +.icon-symbol-female, +.icon-symbol-male, +.icon-target, +.icon-credit-card, +.icon-paypal, +.icon-social-tumblr, +.icon-social-twitter, +.icon-social-facebook, +.icon-social-instagram, +.icon-social-linkedin, +.icon-social-pinterest, +.icon-social-github, +.icon-social-google, +.icon-social-reddit, +.icon-social-skype, +.icon-social-dribbble, +.icon-social-behance, +.icon-social-foursqare, +.icon-social-soundcloud, +.icon-social-spotify, +.icon-social-stumbleupon, +.icon-social-youtube, +.icon-social-dropbox, +.icon-social-vkontakte, +.icon-social-steam { + font-family: 'simple-line-icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-user:before { + content: "\e005"; +} +.icon-people:before { + content: "\e001"; +} +.icon-user-female:before { + content: "\e000"; +} +.icon-user-follow:before { + content: "\e002"; +} +.icon-user-following:before { + content: "\e003"; +} +.icon-user-unfollow:before { + content: "\e004"; +} +.icon-login:before { + content: "\e066"; +} +.icon-logout:before { + content: "\e065"; +} +.icon-emotsmile:before { + content: "\e021"; +} +.icon-phone:before { + content: "\e600"; +} +.icon-call-end:before { + content: "\e048"; +} +.icon-call-in:before { + content: "\e047"; +} +.icon-call-out:before { + content: "\e046"; +} +.icon-map:before { + content: "\e033"; +} +.icon-location-pin:before { + content: "\e096"; +} +.icon-direction:before { + content: "\e042"; +} +.icon-directions:before { + content: "\e041"; +} +.icon-compass:before { + content: "\e045"; +} +.icon-layers:before { + content: "\e034"; +} +.icon-menu:before { + content: "\e601"; +} +.icon-list:before { + content: "\e067"; +} +.icon-options-vertical:before { + content: "\e602"; +} +.icon-options:before { + content: "\e603"; +} +.icon-arrow-down:before { + content: "\e604"; +} +.icon-arrow-left:before { + content: "\e605"; +} +.icon-arrow-right:before { + content: "\e606"; +} +.icon-arrow-up:before { + content: "\e607"; +} +.icon-arrow-up-circle:before { + content: "\e078"; +} +.icon-arrow-left-circle:before { + content: "\e07a"; +} +.icon-arrow-right-circle:before { + content: "\e079"; +} +.icon-arrow-down-circle:before { + content: "\e07b"; +} +.icon-check:before { + content: "\e080"; +} +.icon-clock:before { + content: "\e081"; +} +.icon-plus:before { + content: "\e095"; +} +.icon-minus:before { + content: "\e615"; +} +.icon-close:before { + content: "\e082"; +} +.icon-event:before { + content: "\e619"; +} +.icon-exclamation:before { + content: "\e617"; +} +.icon-organization:before { + content: "\e616"; +} +.icon-trophy:before { + content: "\e006"; +} +.icon-screen-smartphone:before { + content: "\e010"; +} +.icon-screen-desktop:before { + content: "\e011"; +} +.icon-plane:before { + content: "\e012"; +} +.icon-notebook:before { + content: "\e013"; +} +.icon-mustache:before { + content: "\e014"; +} +.icon-mouse:before { + content: "\e015"; +} +.icon-magnet:before { + content: "\e016"; +} +.icon-energy:before { + content: "\e020"; +} +.icon-disc:before { + content: "\e022"; +} +.icon-cursor:before { + content: "\e06e"; +} +.icon-cursor-move:before { + content: "\e023"; +} +.icon-crop:before { + content: "\e024"; +} +.icon-chemistry:before { + content: "\e026"; +} +.icon-speedometer:before { + content: "\e007"; +} +.icon-shield:before { + content: "\e00e"; +} +.icon-screen-tablet:before { + content: "\e00f"; +} +.icon-magic-wand:before { + content: "\e017"; +} +.icon-hourglass:before { + content: "\e018"; +} +.icon-graduation:before { + content: "\e019"; +} +.icon-ghost:before { + content: "\e01a"; +} +.icon-game-controller:before { + content: "\e01b"; +} +.icon-fire:before { + content: "\e01c"; +} +.icon-eyeglass:before { + content: "\e01d"; +} +.icon-envelope-open:before { + content: "\e01e"; +} +.icon-envelope-letter:before { + content: "\e01f"; +} +.icon-bell:before { + content: "\e027"; +} +.icon-badge:before { + content: "\e028"; +} +.icon-anchor:before { + content: "\e029"; +} +.icon-wallet:before { + content: "\e02a"; +} +.icon-vector:before { + content: "\e02b"; +} +.icon-speech:before { + content: "\e02c"; +} +.icon-puzzle:before { + content: "\e02d"; +} +.icon-printer:before { + content: "\e02e"; +} +.icon-present:before { + content: "\e02f"; +} +.icon-playlist:before { + content: "\e030"; +} +.icon-pin:before { + content: "\e031"; +} +.icon-picture:before { + content: "\e032"; +} +.icon-handbag:before { + content: "\e035"; +} +.icon-globe-alt:before { + content: "\e036"; +} +.icon-globe:before { + content: "\e037"; +} +.icon-folder-alt:before { + content: "\e039"; +} +.icon-folder:before { + content: "\e089"; +} +.icon-film:before { + content: "\e03a"; +} +.icon-feed:before { + content: "\e03b"; +} +.icon-drop:before { + content: "\e03e"; +} +.icon-drawer:before { + content: "\e03f"; +} +.icon-docs:before { + content: "\e040"; +} +.icon-doc:before { + content: "\e085"; +} +.icon-diamond:before { + content: "\e043"; +} +.icon-cup:before { + content: "\e044"; +} +.icon-calculator:before { + content: "\e049"; +} +.icon-bubbles:before { + content: "\e04a"; +} +.icon-briefcase:before { + content: "\e04b"; +} +.icon-book-open:before { + content: "\e04c"; +} +.icon-basket-loaded:before { + content: "\e04d"; +} +.icon-basket:before { + content: "\e04e"; +} +.icon-bag:before { + content: "\e04f"; +} +.icon-action-undo:before { + content: "\e050"; +} +.icon-action-redo:before { + content: "\e051"; +} +.icon-wrench:before { + content: "\e052"; +} +.icon-umbrella:before { + content: "\e053"; +} +.icon-trash:before { + content: "\e054"; +} +.icon-tag:before { + content: "\e055"; +} +.icon-support:before { + content: "\e056"; +} +.icon-frame:before { + content: "\e038"; +} +.icon-size-fullscreen:before { + content: "\e057"; +} +.icon-size-actual:before { + content: "\e058"; +} +.icon-shuffle:before { + content: "\e059"; +} +.icon-share-alt:before { + content: "\e05a"; +} +.icon-share:before { + content: "\e05b"; +} +.icon-rocket:before { + content: "\e05c"; +} +.icon-question:before { + content: "\e05d"; +} +.icon-pie-chart:before { + content: "\e05e"; +} +.icon-pencil:before { + content: "\e05f"; +} +.icon-note:before { + content: "\e060"; +} +.icon-loop:before { + content: "\e064"; +} +.icon-home:before { + content: "\e069"; +} +.icon-grid:before { + content: "\e06a"; +} +.icon-graph:before { + content: "\e06b"; +} +.icon-microphone:before { + content: "\e063"; +} +.icon-music-tone-alt:before { + content: "\e061"; +} +.icon-music-tone:before { + content: "\e062"; +} +.icon-earphones-alt:before { + content: "\e03c"; +} +.icon-earphones:before { + content: "\e03d"; +} +.icon-equalizer:before { + content: "\e06c"; +} +.icon-like:before { + content: "\e068"; +} +.icon-dislike:before { + content: "\e06d"; +} +.icon-control-start:before { + content: "\e06f"; +} +.icon-control-rewind:before { + content: "\e070"; +} +.icon-control-play:before { + content: "\e071"; +} +.icon-control-pause:before { + content: "\e072"; +} +.icon-control-forward:before { + content: "\e073"; +} +.icon-control-end:before { + content: "\e074"; +} +.icon-volume-1:before { + content: "\e09f"; +} +.icon-volume-2:before { + content: "\e0a0"; +} +.icon-volume-off:before { + content: "\e0a1"; +} +.icon-calendar:before { + content: "\e075"; +} +.icon-bulb:before { + content: "\e076"; +} +.icon-chart:before { + content: "\e077"; +} +.icon-ban:before { + content: "\e07c"; +} +.icon-bubble:before { + content: "\e07d"; +} +.icon-camrecorder:before { + content: "\e07e"; +} +.icon-camera:before { + content: "\e07f"; +} +.icon-cloud-download:before { + content: "\e083"; +} +.icon-cloud-upload:before { + content: "\e084"; +} +.icon-envelope:before { + content: "\e086"; +} +.icon-eye:before { + content: "\e087"; +} +.icon-flag:before { + content: "\e088"; +} +.icon-heart:before { + content: "\e08a"; +} +.icon-info:before { + content: "\e08b"; +} +.icon-key:before { + content: "\e08c"; +} +.icon-link:before { + content: "\e08d"; +} +.icon-lock:before { + content: "\e08e"; +} +.icon-lock-open:before { + content: "\e08f"; +} +.icon-magnifier:before { + content: "\e090"; +} +.icon-magnifier-add:before { + content: "\e091"; +} +.icon-magnifier-remove:before { + content: "\e092"; +} +.icon-paper-clip:before { + content: "\e093"; +} +.icon-paper-plane:before { + content: "\e094"; +} +.icon-power:before { + content: "\e097"; +} +.icon-refresh:before { + content: "\e098"; +} +.icon-reload:before { + content: "\e099"; +} +.icon-settings:before { + content: "\e09a"; +} +.icon-star:before { + content: "\e09b"; +} +.icon-symbol-female:before { + content: "\e09c"; +} +.icon-symbol-male:before { + content: "\e09d"; +} +.icon-target:before { + content: "\e09e"; +} +.icon-credit-card:before { + content: "\e025"; +} +.icon-paypal:before { + content: "\e608"; +} +.icon-social-tumblr:before { + content: "\e00a"; +} +.icon-social-twitter:before { + content: "\e009"; +} +.icon-social-facebook:before { + content: "\e00b"; +} +.icon-social-instagram:before { + content: "\e609"; +} +.icon-social-linkedin:before { + content: "\e60a"; +} +.icon-social-pinterest:before { + content: "\e60b"; +} +.icon-social-github:before { + content: "\e60c"; +} +.icon-social-google:before { + content: "\e60d"; +} +.icon-social-reddit:before { + content: "\e60e"; +} +.icon-social-skype:before { + content: "\e60f"; +} +.icon-social-dribbble:before { + content: "\e00d"; +} +.icon-social-behance:before { + content: "\e610"; +} +.icon-social-foursqare:before { + content: "\e611"; +} +.icon-social-soundcloud:before { + content: "\e612"; +} +.icon-social-spotify:before { + content: "\e613"; +} +.icon-social-stumbleupon:before { + content: "\e614"; +} +.icon-social-youtube:before { + content: "\e008"; +} +.icon-social-dropbox:before { + content: "\e00c"; +} +.icon-social-vkontakte:before { + content: "\e618"; +} +.icon-social-steam:before { + content: "\e620"; +} diff --git a/src/popup/js/config/svgIcons.js b/src/popup/js/config/svgIcons.js index 6d11548..de68c9b 100644 --- a/src/popup/js/config/svgIcons.js +++ b/src/popup/js/config/svgIcons.js @@ -1,8 +1,11 @@ angular.module('Shazify') .run(function($http, $document) { // Load SVG icons (dirty, should not use jQuery...) - $http.get('img/icons.svg', {responseType: 'html'}). - success(function(data) { - angular.element($document[0]).find('body').prepend(data); - }); + $http.get('img/icons.svg'). + then(function(response) { + //document.body.insertAdjacentHTML('afterbegin', data); + $document.find('body').eq(0).prepend(response.data); + }).catch(function(reason) { + console.log('Cannot load SVG icons : '+ reason); + }); }); \ No newline at end of file diff --git a/src/popup/js/controllers/TagsCtrl.js b/src/popup/js/controllers/TagsCtrl.js index c0d30e5..5d73330 100644 --- a/src/popup/js/controllers/TagsCtrl.js +++ b/src/popup/js/controllers/TagsCtrl.js @@ -1,42 +1,132 @@ -angular.module('Shazify').controller('TagsCtrl', function($scope, $location, $interval, BackgroundService, PopupStorage, LoginService, TagsService) { +angular.module('Shazify').controller('TagsCtrl', function($scope, $location, $interval, $timeout, $anchorScroll, BackgroundService, PopupStorage, LoginService, TagsService, SpotifyService) { $scope.login = LoginService; $scope.updateStatus = ''; $scope.updating = function() { return TagsService.updating(); }; - $scope.tags = function() { return TagsService.list; }; - - $scope.newSearch = { - show: false, - tag: null, - error: null, - query: { - artist: '', - track: '' - }, - send: function() { - TagsService.searchTag($scope.newSearch.query.track, $scope.newSearch.query.artist, $scope.newSearch.tag, function(err) { - if(err) { - $scope.newSearch.error = chrome.i18n.getMessage('noTrackFoundQuery'); - } else { - $scope.newSearch.error = null; - $scope.newSearch.tag = null; - $scope.newSearch.show = false; - } - }); + $scope.updatingApp = function() { return TagsService.updatingApp(); }; + $scope.items = []; + $scope.totalCount = 0; + $scope.filteredCount = 0; + + $scope.loading = true; + + function updateList() { + $scope.loading = true; + TagsService.getList($scope.tagsStatusFilters, $scope.pagination.offset(), $scope.pagination.limit(), function(error, result) { + if(error) { + console.error(error); + return console.error('Error getting tags list : '+ error); + } + + $scope.items = result.list; + $scope.filteredCount = result.count; + $scope.totalCount = result.totalCount; + $scope.loading = false; + }); + } + + $scope.shouldShowFilters = false; + $scope.toggleShowFilters = function() { + $scope.shouldShowFilters = !$scope.shouldShowFilters; + }; + + // Status : 1 = just added, 2 = not found in spotify, 3 = found, 4 = added to playlist, 5 = not found, manual search + $scope.statusFilters = [ + { + icon: 'icon-check', + status: [1, 3, 4] }, - cancel: function() { - $scope.newSearch.error = null; - $scope.newSearch.tag = null; - $scope.newSearch.show = false; + { + icon: 'icon-close', + status: [2, 5] } - }; + ]; - $scope.retryTagSearch = function(tag) { - $scope.newSearch.query.artist = tag.artist; - $scope.newSearch.query.track = tag.name; - $scope.newSearch.tag = tag; - $scope.newSearch.show = true; - }; + $scope.isFilterSelected = function(statusArr) { + if(!Array.isArray(statusArr)) { + statusArr = [statusArr]; + } + + var selected = true; + + statusArr.forEach(function(status) { + selected = selected && $scope.tagsStatusFilters.indexOf(status) !== -1; + }); + + return selected; + }; + + $scope.tagsStatusFilters = [1, 2, 3, 4, 5]; + + $scope.toggleStatusFilter = function(statusArr) { + if(!Array.isArray(statusArr)) { + statusArr = [statusArr]; + } + + statusArr.forEach(function(status) { + var i = $scope.tagsStatusFilters.indexOf(status); + if(i === -1) { + $scope.tagsStatusFilters.push(status); + } else { + delete $scope.tagsStatusFilters[i]; + } + }); + + updateList(); + }; + + $scope.pagination = { + page: 0, + offset: function() { return this.page * this.limit(); }, + limitString: '10', + limit: function() { return parseInt(this.limitString); }, + + limitChanged: function() { + this.page = 0; + + $timeout(function() { + updateList(); + }, 0); + }, + + nbPages: function() { + return (this.limit() === 0) ? 1 : Math.ceil($scope.filteredCount / this.limit()); + }, + + hasNextPage: function() { + return this.page < this.nbPages(); + }, + nextPage: function() { + if(!this.hasNextPage()) { + return; + } + + this.page++; + + $anchorScroll(); + + $timeout(function() { + updateList(); + }, 0); + }, + + hasPrevPage: function() { + return this.page > 0; + }, + prevPage: function() { + if(!this.hasPrevPage()) { + return; + } + + this.page--; + + $anchorScroll(); + + $timeout(function() { + updateList(); + }, 0); + } + }; var updateStatus = function(){ TagsService.getUpdateStatus(function(status){ @@ -45,14 +135,12 @@ angular.module('Shazify').controller('TagsCtrl', function($scope, $location, $in }; var refreshTags = function() { - // This timer will update the status of tags addition - var refreshTimer = setInterval(function(){ + TagsService.updateTags(function() { + // Called multiple times to update list/count during update updateStatus(); - }, 3000); - - TagsService.updateTags(function(err) { - clearInterval(refreshTimer); - + updateList(); + }, function(err) { + // Final callback called only once if(err) { return $location.path('/settings'); } @@ -66,6 +154,97 @@ angular.module('Shazify').controller('TagsCtrl', function($scope, $location, $in $scope.refreshTags = refreshTags; + $scope.newSearch = { + show: false, + tag: null, + error: null, + results: [], + query: { + artist: '', + track: '' + }, + selectedTrack: null, + isSelectedTrack: function(track) { + return this.selectedTrack && track.id == this.selectedTrack.id; + }, + + send: function() { + SpotifyService.genQuery($scope.newSearch.query.track, $scope.newSearch.query.artist, function(query) { + SpotifyService.searchTracks(query, function(err, tracks) { + if(err) { + $scope.newSearch.error = chrome.i18n.getMessage('noTrackFoundQuery'); + } else { + $scope.newSearch.results = tracks; + $scope.newSearch.error = null; + + // We search on list the current selected track + if($scope.newSearch.tag.spotifyId) { + for(var i = 0; i < tracks.length; i++) { + if(tracks[i].id == $scope.newSearch.tag.spotifyId) { + $scope.newSearch.selectedTrack = tracks[i]; + } + } + } + } + }); + }); + }, + + setNotFound: function() { + $scope.newSearch.tag.spotifyId = null; + $scope.newSearch.tag.status = 5; + $scope.newSearch.tag.image = null; + $scope.newSearch.tag.previewUrl = null; + + TagsService.setAsNotFound($scope.newSearch.tag.shazamId, function(err) { + if(err) { + console.error(err); + } + + updateList(); + }); + + $scope.newSearch.error = null; + $scope.newSearch.tag = null; + $scope.newSearch.show = false; + }, + + selectTrack: function(track) { + $scope.newSearch.tag.spotifyId = track.id; + $scope.newSearch.tag.status = 3; + $scope.newSearch.tag.image = track.image; + + TagsService.selectSpotifyTrack($scope.newSearch.tag.shazamId, track.id, function(err) { + if(err) { + console.error(err); + } + + updateList(); + }); + + $scope.newSearch.error = null; + $scope.newSearch.tag = null; + $scope.newSearch.show = false; + }, + + cancel: function() { + $scope.newSearch.error = null; + $scope.newSearch.tag = null; + $scope.newSearch.show = false; + } + }; + + $scope.retryTagSearch = function(tag) { + $scope.newSearch.query.artist = tag.artist; + $scope.newSearch.query.track = tag.name; + $scope.newSearch.tag = tag; + $scope.newSearch.results = []; + $scope.newSearch.selectedTrack = null; + $scope.newSearch.show = true; + + $scope.newSearch.send(); + }; + // Do we need to show intro ? PopupStorage.get('introStep', function(items) { if(items.introStep && items.introStep >= 4) { diff --git a/src/popup/js/directives/audioPlayer.js b/src/popup/js/directives/audioPlayer.js new file mode 100644 index 0000000..f13b0c8 --- /dev/null +++ b/src/popup/js/directives/audioPlayer.js @@ -0,0 +1,47 @@ +angular.module('Shazify').directive('audioPlayer', function(AudioService) { + return { + restrict: 'E', + scope: { + audioSrc: '=' + }, + templateUrl: 'partials/audio-player.html', + link: function(scope, element, attrs) { + var svgProgress = element[0].getElementsByClassName('progress-circle')[0]; + + scope.svgCircleLength = svgProgress.querySelectorAll('path')[0].getTotalLength(); + scope.strokeDashoffset = 0; + + scope.progress = 0; + scope.playing = false; + + scope.togglePlay = function() { + if(scope.playing) { + scope.pause(); + } else { + scope.play(); + } + }; + + scope.play = function() { + AudioService.setOnProgress(scope.onProgress); + AudioService.play(scope.audioSrc); + scope.playing = true; + AudioService.setOnEnd(scope.onEnd); + }; + + scope.onProgress = function(progress) { + scope.progress = progress; + scope.strokeDashoffset = scope.svgCircleLength * (1 - progress); + }; + + scope.onEnd = function(progress) { + scope.playing = false; + }; + + scope.pause = function() { + scope.playing = false; + AudioService.pause(scope.audioSrc); + }; + } + }; +}); \ No newline at end of file diff --git a/src/popup/js/services/AudioService.js b/src/popup/js/services/AudioService.js new file mode 100644 index 0000000..74c26fa --- /dev/null +++ b/src/popup/js/services/AudioService.js @@ -0,0 +1,80 @@ +angular.module('Shazify').factory('AudioService', function($timeout) { + var AudioService = { + setup: function() { + AudioService._audio.volume = 0.5; + + AudioService._audio.addEventListener('ended', function() { + AudioService.callOnEnd(); + AudioService.clearOnProgress(); + }); + }, + + _audio: new Audio(), + + setSrc: function(src) { + AudioService._audio.src = src; + }, + + setOnProgress: function(onProgress) { + AudioService.onProgress = onProgress; + }, + + callOnProgress: function(progress) { + if(typeof AudioService.onProgress === 'function') { + $timeout(function() { + AudioService.onProgress(progress); + }, 0); + } + }, + + setOnEnd: function(onEnd) { + AudioService.onEnd = onEnd; + }, + + callOnEnd: function() { + if(typeof AudioService.onEnd === 'function') { + var onEnd = AudioService.onEnd; + $timeout(function() { + onEnd(); + }, 0); + } + }, + + onEnd: null, + onProgress: null, + progressTimer: null, + + play: function(src) { + src = src || null; + + AudioService.callOnEnd(); + + if(src) { + AudioService.setSrc(src); + } + + AudioService._audio.play(); + + AudioService.progressTimer = setInterval(function() { + if(AudioService._audio.currentTime && AudioService._audio.duration) { + AudioService.callOnProgress(AudioService._audio.currentTime / AudioService._audio.duration); + } + }, 500); + }, + + pause: function() { + AudioService.callOnEnd(); + AudioService._audio.pause(); + AudioService.clearOnProgress(); + }, + + clearOnProgress: function() { + clearInterval(AudioService.progressTimer); + AudioService.progressTimer = null; + } + }; + + AudioService.setup(); + + return AudioService; +}); \ No newline at end of file diff --git a/src/popup/js/services/SpotifyService.js b/src/popup/js/services/SpotifyService.js new file mode 100644 index 0000000..f762e74 --- /dev/null +++ b/src/popup/js/services/SpotifyService.js @@ -0,0 +1,22 @@ +angular.module('Shazify').factory('SpotifyService', function($timeout, $interval, BackgroundService, LoginService) { + var SpotifyService = { + searchTracks: function(query, callback) { + BackgroundService.Spotify.findTracks(query, function(err, tracks) { + $timeout(function() { + console.log(err, tracks); + callback(err, tracks); + }, 0); + }); + }, + + genQuery: function(trackName, artist, callback) { + var query = BackgroundService.Spotify.genQuery(trackName, artist); + + $timeout(function() { + callback(query); + }, 0); + } + }; + + return SpotifyService; +}); \ No newline at end of file diff --git a/src/popup/js/services/TagsService.js b/src/popup/js/services/TagsService.js index 737832d..8fccc4c 100644 --- a/src/popup/js/services/TagsService.js +++ b/src/popup/js/services/TagsService.js @@ -2,9 +2,48 @@ angular.module('Shazify').factory('TagsService', function($timeout, $interval, B // Tags list : http://stackoverflow.com/a/18569690/1160800 var TagsService = { - list: BackgroundService.Tags.list, updateListInterval: null, updating: function() { return BackgroundService.updating; }, + updatingApp: function() { return BackgroundService.updatingApp; }, + + getList: function(status, offset, limit, callback) { + if(TagsService.updatingApp()) { + return callback(null, []); + } + + if(typeof status === 'function') { + callback = status; + status = null; + offset = null; + limit = null; + } + + status = (status === null || typeof status === 'undefined') ? [ 1, 2, 3, 4 ] : status; + offset = (offset === null || typeof offset === 'undefined') ? 0 : offset; + limit = (limit === null || typeof limit === 'undefined') ? 10 : limit; + + BackgroundService.Tags.getList({ + where: { + status: status + }, + offset: offset, + limit: limit + }, function(error, result) { + if(error) { + return callback(error); + } + + /*BackgroundService.Tags.count(function(error, count) { + if(error) { + return callback(error); + }*/ + + $timeout(function() { + return callback(null, result); + }, 0); + //}); + }); + }, getUpdateStatus: function(callback) { $timeout(function() { @@ -12,12 +51,17 @@ angular.module('Shazify').factory('TagsService', function($timeout, $interval, B }, 0); }, - updateTags: function(callback) { + updateTags: function(updateCallback, callback) { + if(TagsService.updatingApp()) { + return callback(); + } + // We define an interval to update the list while tags' updating is in progress if(TagsService.updateListInterval === null) { TagsService.updateListInterval = $interval(function() { - // The intervall will automatically trigger a scope update, so we don't need to redefine the list - //TagsService.list = BackgroundService.Tags.list; + $timeout(function() { + updateCallback(); + }, 0); if(TagsService.updating() === false) { $interval.cancel(TagsService.updateListInterval); @@ -36,7 +80,7 @@ angular.module('Shazify').factory('TagsService', function($timeout, $interval, B } BackgroundService.updateTags(function(err) { - if(err && err == 'already_in_progress') { + if(err && (err == 'already_in_progress' || err == 'app_update_in_progress')) { err = null; } @@ -48,11 +92,39 @@ angular.module('Shazify').factory('TagsService', function($timeout, $interval, B }, searchTag: function(trackName, artist, tag, callback) { + if(TagsService.updatingApp()) { + return callback(); + } + BackgroundService.searchTag(trackName, artist, tag, function(err) { $timeout(function() { callback(err); }, 0); }); + }, + + selectSpotifyTrack: function(shazamId, newSpotifyId, callback) { + if(TagsService.updatingApp()) { + return callback(); + } + + BackgroundService.Tags.selectSpotifyTrack(shazamId, newSpotifyId, function(err) { + $timeout(function() { + callback(err); + }, 0); + }); + }, + + setAsNotFound: function(shazamId, callback) { + if(TagsService.updatingApp()) { + return callback(); + } + + BackgroundService.Tags.setAsNotFound(shazamId, function(err) { + $timeout(function() { + callback(err); + }, 0); + }); } }; diff --git a/static/fonts/Simple-Line-Icons.eot b/static/fonts/Simple-Line-Icons.eot new file mode 100644 index 0000000..f0ca6e8 Binary files /dev/null and b/static/fonts/Simple-Line-Icons.eot differ diff --git a/static/fonts/Simple-Line-Icons.svg b/static/fonts/Simple-Line-Icons.svg new file mode 100644 index 0000000..4988524 --- /dev/null +++ b/static/fonts/Simple-Line-Icons.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/fonts/Simple-Line-Icons.ttf b/static/fonts/Simple-Line-Icons.ttf new file mode 100644 index 0000000..6ecb686 Binary files /dev/null and b/static/fonts/Simple-Line-Icons.ttf differ diff --git a/static/fonts/Simple-Line-Icons.woff b/static/fonts/Simple-Line-Icons.woff new file mode 100644 index 0000000..b17d694 Binary files /dev/null and b/static/fonts/Simple-Line-Icons.woff differ diff --git a/static/fonts/Simple-Line-Icons.woff2 b/static/fonts/Simple-Line-Icons.woff2 new file mode 100644 index 0000000..c49fccf Binary files /dev/null and b/static/fonts/Simple-Line-Icons.woff2 differ diff --git a/static/img/icon128.png b/static/img/icon128.png index 8453f86..093959d 100644 Binary files a/static/img/icon128.png and b/static/img/icon128.png differ diff --git a/static/simple-line-icons.css b/static/simple-line-icons.css new file mode 100644 index 0000000..df84a60 --- /dev/null +++ b/static/simple-line-icons.css @@ -0,0 +1,1346 @@ +@font-face { + font-family: 'simple-line-icons'; + src: url('fonts/Simple-Line-Icons.eot?v=2.4.0'); + src: url('fonts/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'), url('fonts/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'), url('fonts/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'), url('fonts/Simple-Line-Icons.woff?v=2.4.0') format('woff'), url('fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg'); + font-weight: normal; + font-style: normal; +} +/* + Use the following CSS code if you want to have a class per icon. + Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: +*/ +.icon-user, +.icon-people, +.icon-user-female, +.icon-user-follow, +.icon-user-following, +.icon-user-unfollow, +.icon-login, +.icon-logout, +.icon-emotsmile, +.icon-phone, +.icon-call-end, +.icon-call-in, +.icon-call-out, +.icon-map, +.icon-location-pin, +.icon-direction, +.icon-directions, +.icon-compass, +.icon-layers, +.icon-menu, +.icon-list, +.icon-options-vertical, +.icon-options, +.icon-arrow-down, +.icon-arrow-left, +.icon-arrow-right, +.icon-arrow-up, +.icon-arrow-up-circle, +.icon-arrow-left-circle, +.icon-arrow-right-circle, +.icon-arrow-down-circle, +.icon-check, +.icon-clock, +.icon-plus, +.icon-minus, +.icon-close, +.icon-event, +.icon-exclamation, +.icon-organization, +.icon-trophy, +.icon-screen-smartphone, +.icon-screen-desktop, +.icon-plane, +.icon-notebook, +.icon-mustache, +.icon-mouse, +.icon-magnet, +.icon-energy, +.icon-disc, +.icon-cursor, +.icon-cursor-move, +.icon-crop, +.icon-chemistry, +.icon-speedometer, +.icon-shield, +.icon-screen-tablet, +.icon-magic-wand, +.icon-hourglass, +.icon-graduation, +.icon-ghost, +.icon-game-controller, +.icon-fire, +.icon-eyeglass, +.icon-envelope-open, +.icon-envelope-letter, +.icon-bell, +.icon-badge, +.icon-anchor, +.icon-wallet, +.icon-vector, +.icon-speech, +.icon-puzzle, +.icon-printer, +.icon-present, +.icon-playlist, +.icon-pin, +.icon-picture, +.icon-handbag, +.icon-globe-alt, +.icon-globe, +.icon-folder-alt, +.icon-folder, +.icon-film, +.icon-feed, +.icon-drop, +.icon-drawer, +.icon-docs, +.icon-doc, +.icon-diamond, +.icon-cup, +.icon-calculator, +.icon-bubbles, +.icon-briefcase, +.icon-book-open, +.icon-basket-loaded, +.icon-basket, +.icon-bag, +.icon-action-undo, +.icon-action-redo, +.icon-wrench, +.icon-umbrella, +.icon-trash, +.icon-tag, +.icon-support, +.icon-frame, +.icon-size-fullscreen, +.icon-size-actual, +.icon-shuffle, +.icon-share-alt, +.icon-share, +.icon-rocket, +.icon-question, +.icon-pie-chart, +.icon-pencil, +.icon-note, +.icon-loop, +.icon-home, +.icon-grid, +.icon-graph, +.icon-microphone, +.icon-music-tone-alt, +.icon-music-tone, +.icon-earphones-alt, +.icon-earphones, +.icon-equalizer, +.icon-like, +.icon-dislike, +.icon-control-start, +.icon-control-rewind, +.icon-control-play, +.icon-control-pause, +.icon-control-forward, +.icon-control-end, +.icon-volume-1, +.icon-volume-2, +.icon-volume-off, +.icon-calendar, +.icon-bulb, +.icon-chart, +.icon-ban, +.icon-bubble, +.icon-camrecorder, +.icon-camera, +.icon-cloud-download, +.icon-cloud-upload, +.icon-envelope, +.icon-eye, +.icon-flag, +.icon-heart, +.icon-info, +.icon-key, +.icon-link, +.icon-lock, +.icon-lock-open, +.icon-magnifier, +.icon-magnifier-add, +.icon-magnifier-remove, +.icon-paper-clip, +.icon-paper-plane, +.icon-power, +.icon-refresh, +.icon-reload, +.icon-settings, +.icon-star, +.icon-symbol-female, +.icon-symbol-male, +.icon-target, +.icon-credit-card, +.icon-paypal, +.icon-social-tumblr, +.icon-social-twitter, +.icon-social-facebook, +.icon-social-instagram, +.icon-social-linkedin, +.icon-social-pinterest, +.icon-social-github, +.icon-social-google, +.icon-social-reddit, +.icon-social-skype, +.icon-social-dribbble, +.icon-social-behance, +.icon-social-foursqare, +.icon-social-soundcloud, +.icon-social-spotify, +.icon-social-stumbleupon, +.icon-social-youtube, +.icon-social-dropbox, +.icon-social-vkontakte, +.icon-social-steam { + font-family: 'simple-line-icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-user:before { + content: "\e005"; +} +.icon-people:before { + content: "\e001"; +} +.icon-user-female:before { + content: "\e000"; +} +.icon-user-follow:before { + content: "\e002"; +} +.icon-user-following:before { + content: "\e003"; +} +.icon-user-unfollow:before { + content: "\e004"; +} +.icon-login:before { + content: "\e066"; +} +.icon-logout:before { + content: "\e065"; +} +.icon-emotsmile:before { + content: "\e021"; +} +.icon-phone:before { + content: "\e600"; +} +.icon-call-end:before { + content: "\e048"; +} +.icon-call-in:before { + content: "\e047"; +} +.icon-call-out:before { + content: "\e046"; +} +.icon-map:before { + content: "\e033"; +} +.icon-location-pin:before { + content: "\e096"; +} +.icon-direction:before { + content: "\e042"; +} +.icon-directions:before { + content: "\e041"; +} +.icon-compass:before { + content: "\e045"; +} +.icon-layers:before { + content: "\e034"; +} +.icon-menu:before { + content: "\e601"; +} +.icon-list:before { + content: "\e067"; +} +.icon-options-vertical:before { + content: "\e602"; +} +.icon-options:before { + content: "\e603"; +} +.icon-arrow-down:before { + content: "\e604"; +} +.icon-arrow-left:before { + content: "\e605"; +} +.icon-arrow-right:before { + content: "\e606"; +} +.icon-arrow-up:before { + content: "\e607"; +} +.icon-arrow-up-circle:before { + content: "\e078"; +} +.icon-arrow-left-circle:before { + content: "\e07a"; +} +.icon-arrow-right-circle:before { + content: "\e079"; +} +.icon-arrow-down-circle:before { + content: "\e07b"; +} +.icon-check:before { + content: "\e080"; +} +.icon-clock:before { + content: "\e081"; +} +.icon-plus:before { + content: "\e095"; +} +.icon-minus:before { + content: "\e615"; +} +.icon-close:before { + content: "\e082"; +} +.icon-event:before { + content: "\e619"; +} +.icon-exclamation:before { + content: "\e617"; +} +.icon-organization:before { + content: "\e616"; +} +.icon-trophy:before { + content: "\e006"; +} +.icon-screen-smartphone:before { + content: "\e010"; +} +.icon-screen-desktop:before { + content: "\e011"; +} +.icon-plane:before { + content: "\e012"; +} +.icon-notebook:before { + content: "\e013"; +} +.icon-mustache:before { + content: "\e014"; +} +.icon-mouse:before { + content: "\e015"; +} +.icon-magnet:before { + content: "\e016"; +} +.icon-energy:before { + content: "\e020"; +} +.icon-disc:before { + content: "\e022"; +} +.icon-cursor:before { + content: "\e06e"; +} +.icon-cursor-move:before { + content: "\e023"; +} +.icon-crop:before { + content: "\e024"; +} +.icon-chemistry:before { + content: "\e026"; +} +.icon-speedometer:before { + content: "\e007"; +} +.icon-shield:before { + content: "\e00e"; +} +.icon-screen-tablet:before { + content: "\e00f"; +} +.icon-magic-wand:before { + content: "\e017"; +} +.icon-hourglass:before { + content: "\e018"; +} +.icon-graduation:before { + content: "\e019"; +} +.icon-ghost:before { + content: "\e01a"; +} +.icon-game-controller:before { + content: "\e01b"; +} +.icon-fire:before { + content: "\e01c"; +} +.icon-eyeglass:before { + content: "\e01d"; +} +.icon-envelope-open:before { + content: "\e01e"; +} +.icon-envelope-letter:before { + content: "\e01f"; +} +.icon-bell:before { + content: "\e027"; +} +.icon-badge:before { + content: "\e028"; +} +.icon-anchor:before { + content: "\e029"; +} +.icon-wallet:before { + content: "\e02a"; +} +.icon-vector:before { + content: "\e02b"; +} +.icon-speech:before { + content: "\e02c"; +} +.icon-puzzle:before { + content: "\e02d"; +} +.icon-printer:before { + content: "\e02e"; +} +.icon-present:before { + content: "\e02f"; +} +.icon-playlist:before { + content: "\e030"; +} +.icon-pin:before { + content: "\e031"; +} +.icon-picture:before { + content: "\e032"; +} +.icon-handbag:before { + content: "\e035"; +} +.icon-globe-alt:before { + content: "\e036"; +} +.icon-globe:before { + content: "\e037"; +} +.icon-folder-alt:before { + content: "\e039"; +} +.icon-folder:before { + content: "\e089"; +} +.icon-film:before { + content: "\e03a"; +} +.icon-feed:before { + content: "\e03b"; +} +.icon-drop:before { + content: "\e03e"; +} +.icon-drawer:before { + content: "\e03f"; +} +.icon-docs:before { + content: "\e040"; +} +.icon-doc:before { + content: "\e085"; +} +.icon-diamond:before { + content: "\e043"; +} +.icon-cup:before { + content: "\e044"; +} +.icon-calculator:before { + content: "\e049"; +} +.icon-bubbles:before { + content: "\e04a"; +} +.icon-briefcase:before { + content: "\e04b"; +} +.icon-book-open:before { + content: "\e04c"; +} +.icon-basket-loaded:before { + content: "\e04d"; +} +.icon-basket:before { + content: "\e04e"; +} +.icon-bag:before { + content: "\e04f"; +} +.icon-action-undo:before { + content: "\e050"; +} +.icon-action-redo:before { + content: "\e051"; +} +.icon-wrench:before { + content: "\e052"; +} +.icon-umbrella:before { + content: "\e053"; +} +.icon-trash:before { + content: "\e054"; +} +.icon-tag:before { + content: "\e055"; +} +.icon-support:before { + content: "\e056"; +} +.icon-frame:before { + content: "\e038"; +} +.icon-size-fullscreen:before { + content: "\e057"; +} +.icon-size-actual:before { + content: "\e058"; +} +.icon-shuffle:before { + content: "\e059"; +} +.icon-share-alt:before { + content: "\e05a"; +} +.icon-share:before { + content: "\e05b"; +} +.icon-rocket:before { + content: "\e05c"; +} +.icon-question:before { + content: "\e05d"; +} +.icon-pie-chart:before { + content: "\e05e"; +} +.icon-pencil:before { + content: "\e05f"; +} +.icon-note:before { + content: "\e060"; +} +.icon-loop:before { + content: "\e064"; +} +.icon-home:before { + content: "\e069"; +} +.icon-grid:before { + content: "\e06a"; +} +.icon-graph:before { + content: "\e06b"; +} +.icon-microphone:before { + content: "\e063"; +} +.icon-music-tone-alt:before { + content: "\e061"; +} +.icon-music-tone:before { + content: "\e062"; +} +.icon-earphones-alt:before { + content: "\e03c"; +} +.icon-earphones:before { + content: "\e03d"; +} +.icon-equalizer:before { + content: "\e06c"; +} +.icon-like:before { + content: "\e068"; +} +.icon-dislike:before { + content: "\e06d"; +} +.icon-control-start:before { + content: "\e06f"; +} +.icon-control-rewind:before { + content: "\e070"; +} +.icon-control-play:before { + content: "\e071"; +} +.icon-control-pause:before { + content: "\e072"; +} +.icon-control-forward:before { + content: "\e073"; +} +.icon-control-end:before { + content: "\e074"; +} +.icon-volume-1:before { + content: "\e09f"; +} +.icon-volume-2:before { + content: "\e0a0"; +} +.icon-volume-off:before { + content: "\e0a1"; +} +.icon-calendar:before { + content: "\e075"; +} +.icon-bulb:before { + content: "\e076"; +} +.icon-chart:before { + content: "\e077"; +} +.icon-ban:before { + content: "\e07c"; +} +.icon-bubble:before { + content: "\e07d"; +} +.icon-camrecorder:before { + content: "\e07e"; +} +.icon-camera:before { + content: "\e07f"; +} +.icon-cloud-download:before { + content: "\e083"; +} +.icon-cloud-upload:before { + content: "\e084"; +} +.icon-envelope:before { + content: "\e086"; +} +.icon-eye:before { + content: "\e087"; +} +.icon-flag:before { + content: "\e088"; +} +.icon-heart:before { + content: "\e08a"; +} +.icon-info:before { + content: "\e08b"; +} +.icon-key:before { + content: "\e08c"; +} +.icon-link:before { + content: "\e08d"; +} +.icon-lock:before { + content: "\e08e"; +} +.icon-lock-open:before { + content: "\e08f"; +} +.icon-magnifier:before { + content: "\e090"; +} +.icon-magnifier-add:before { + content: "\e091"; +} +.icon-magnifier-remove:before { + content: "\e092"; +} +.icon-paper-clip:before { + content: "\e093"; +} +.icon-paper-plane:before { + content: "\e094"; +} +.icon-power:before { + content: "\e097"; +} +.icon-refresh:before { + content: "\e098"; +} +.icon-reload:before { + content: "\e099"; +} +.icon-settings:before { + content: "\e09a"; +} +.icon-star:before { + content: "\e09b"; +} +.icon-symbol-female:before { + content: "\e09c"; +} +.icon-symbol-male:before { + content: "\e09d"; +} +.icon-target:before { + content: "\e09e"; +} +.icon-credit-card:before { + content: "\e025"; +} +.icon-paypal:before { + content: "\e608"; +} +.icon-social-tumblr:before { + content: "\e00a"; +} +.icon-social-twitter:before { + content: "\e009"; +} +.icon-social-facebook:before { + content: "\e00b"; +} +.icon-social-instagram:before { + content: "\e609"; +} +.icon-social-linkedin:before { + content: "\e60a"; +} +.icon-social-pinterest:before { + content: "\e60b"; +} +.icon-social-github:before { + content: "\e60c"; +} +.icon-social-google:before { + content: "\e60d"; +} +.icon-social-reddit:before { + content: "\e60e"; +} +.icon-social-skype:before { + content: "\e60f"; +} +.icon-social-dribbble:before { + content: "\e00d"; +} +.icon-social-behance:before { + content: "\e610"; +} +.icon-social-foursqare:before { + content: "\e611"; +} +.icon-social-soundcloud:before { + content: "\e612"; +} +.icon-social-spotify:before { + content: "\e613"; +} +.icon-social-stumbleupon:before { + content: "\e614"; +} +.icon-social-youtube:before { + content: "\e008"; +} +.icon-social-dropbox:before { + content: "\e00c"; +} +.icon-social-vkontakte:before { + content: "\e618"; +} +.icon-social-steam:before { + content: "\e620"; +} + +li.bullet-icon-user:before { + content: "\e005"; +} +li.bullet-icon-people:before { + content: "\e001"; +} +li.bullet-icon-user-female:before { + content: "\e000"; +} +li.bullet-icon-user-follow:before { + content: "\e002"; +} +li.bullet-icon-user-following:before { + content: "\e003"; +} +li.bullet-icon-user-unfollow:before { + content: "\e004"; +} +li.bullet-icon-login:before { + content: "\e066"; +} +li.bullet-icon-logout:before { + content: "\e065"; +} +li.bullet-icon-emotsmile:before { + content: "\e021"; +} +li.bullet-icon-phone:before { + content: "\e600"; +} +li.bullet-icon-call-end:before { + content: "\e048"; +} +li.bullet-icon-call-in:before { + content: "\e047"; +} +li.bullet-icon-call-out:before { + content: "\e046"; +} +li.bullet-icon-map:before { + content: "\e033"; +} +li.bullet-icon-location-pin:before { + content: "\e096"; +} +li.bullet-icon-direction:before { + content: "\e042"; +} +li.bullet-icon-directions:before { + content: "\e041"; +} +li.bullet-icon-compass:before { + content: "\e045"; +} +li.bullet-icon-layers:before { + content: "\e034"; +} +li.bullet-icon-menu:before { + content: "\e601"; +} +li.bullet-icon-list:before { + content: "\e067"; +} +li.bullet-icon-options-vertical:before { + content: "\e602"; +} +li.bullet-icon-options:before { + content: "\e603"; +} +li.bullet-icon-arrow-down:before { + content: "\e604"; +} +li.bullet-icon-arrow-left:before { + content: "\e605"; +} +li.bullet-icon-arrow-right:before { + content: "\e606"; +} +li.bullet-icon-arrow-up:before { + content: "\e607"; +} +li.bullet-icon-arrow-up-circle:before { + content: "\e078"; +} +li.bullet-icon-arrow-left-circle:before { + content: "\e07a"; +} +li.bullet-icon-arrow-right-circle:before { + content: "\e079"; +} +li.bullet-icon-arrow-down-circle:before { + content: "\e07b"; +} +li.bullet-icon-check:before { + content: "\e080"; +} +li.bullet-icon-clock:before { + content: "\e081"; +} +li.bullet-icon-plus:before { + content: "\e095"; +} +li.bullet-icon-minus:before { + content: "\e615"; +} +li.bullet-icon-close:before { + content: "\e082"; +} +li.bullet-icon-event:before { + content: "\e619"; +} +li.bullet-icon-exclamation:before { + content: "\e617"; +} +li.bullet-icon-organization:before { + content: "\e616"; +} +li.bullet-icon-trophy:before { + content: "\e006"; +} +li.bullet-icon-screen-smartphone:before { + content: "\e010"; +} +li.bullet-icon-screen-desktop:before { + content: "\e011"; +} +li.bullet-icon-plane:before { + content: "\e012"; +} +li.bullet-icon-notebook:before { + content: "\e013"; +} +li.bullet-icon-mustache:before { + content: "\e014"; +} +li.bullet-icon-mouse:before { + content: "\e015"; +} +li.bullet-icon-magnet:before { + content: "\e016"; +} +li.bullet-icon-energy:before { + content: "\e020"; +} +li.bullet-icon-disc:before { + content: "\e022"; +} +li.bullet-icon-cursor:before { + content: "\e06e"; +} +li.bullet-icon-cursor-move:before { + content: "\e023"; +} +li.bullet-icon-crop:before { + content: "\e024"; +} +li.bullet-icon-chemistry:before { + content: "\e026"; +} +li.bullet-icon-speedometer:before { + content: "\e007"; +} +li.bullet-icon-shield:before { + content: "\e00e"; +} +li.bullet-icon-screen-tablet:before { + content: "\e00f"; +} +li.bullet-icon-magic-wand:before { + content: "\e017"; +} +li.bullet-icon-hourglass:before { + content: "\e018"; +} +li.bullet-icon-graduation:before { + content: "\e019"; +} +li.bullet-icon-ghost:before { + content: "\e01a"; +} +li.bullet-icon-game-controller:before { + content: "\e01b"; +} +li.bullet-icon-fire:before { + content: "\e01c"; +} +li.bullet-icon-eyeglass:before { + content: "\e01d"; +} +li.bullet-icon-envelope-open:before { + content: "\e01e"; +} +li.bullet-icon-envelope-letter:before { + content: "\e01f"; +} +li.bullet-icon-bell:before { + content: "\e027"; +} +li.bullet-icon-badge:before { + content: "\e028"; +} +li.bullet-icon-anchor:before { + content: "\e029"; +} +li.bullet-icon-wallet:before { + content: "\e02a"; +} +li.bullet-icon-vector:before { + content: "\e02b"; +} +li.bullet-icon-speech:before { + content: "\e02c"; +} +li.bullet-icon-puzzle:before { + content: "\e02d"; +} +li.bullet-icon-printer:before { + content: "\e02e"; +} +li.bullet-icon-present:before { + content: "\e02f"; +} +li.bullet-icon-playlist:before { + content: "\e030"; +} +li.bullet-icon-pin:before { + content: "\e031"; +} +li.bullet-icon-picture:before { + content: "\e032"; +} +li.bullet-icon-handbag:before { + content: "\e035"; +} +li.bullet-icon-globe-alt:before { + content: "\e036"; +} +li.bullet-icon-globe:before { + content: "\e037"; +} +li.bullet-icon-folder-alt:before { + content: "\e039"; +} +li.bullet-icon-folder:before { + content: "\e089"; +} +li.bullet-icon-film:before { + content: "\e03a"; +} +li.bullet-icon-feed:before { + content: "\e03b"; +} +li.bullet-icon-drop:before { + content: "\e03e"; +} +li.bullet-icon-drawer:before { + content: "\e03f"; +} +li.bullet-icon-docs:before { + content: "\e040"; +} +li.bullet-icon-doc:before { + content: "\e085"; +} +li.bullet-icon-diamond:before { + content: "\e043"; +} +li.bullet-icon-cup:before { + content: "\e044"; +} +li.bullet-icon-calculator:before { + content: "\e049"; +} +li.bullet-icon-bubbles:before { + content: "\e04a"; +} +li.bullet-icon-briefcase:before { + content: "\e04b"; +} +li.bullet-icon-book-open:before { + content: "\e04c"; +} +li.bullet-icon-basket-loaded:before { + content: "\e04d"; +} +li.bullet-icon-basket:before { + content: "\e04e"; +} +li.bullet-icon-bag:before { + content: "\e04f"; +} +li.bullet-icon-action-undo:before { + content: "\e050"; +} +li.bullet-icon-action-redo:before { + content: "\e051"; +} +li.bullet-icon-wrench:before { + content: "\e052"; +} +li.bullet-icon-umbrella:before { + content: "\e053"; +} +li.bullet-icon-trash:before { + content: "\e054"; +} +li.bullet-icon-tag:before { + content: "\e055"; +} +li.bullet-icon-support:before { + content: "\e056"; +} +li.bullet-icon-frame:before { + content: "\e038"; +} +li.bullet-icon-size-fullscreen:before { + content: "\e057"; +} +li.bullet-icon-size-actual:before { + content: "\e058"; +} +li.bullet-icon-shuffle:before { + content: "\e059"; +} +li.bullet-icon-share-alt:before { + content: "\e05a"; +} +li.bullet-icon-share:before { + content: "\e05b"; +} +li.bullet-icon-rocket:before { + content: "\e05c"; +} +li.bullet-icon-question:before { + content: "\e05d"; +} +li.bullet-icon-pie-chart:before { + content: "\e05e"; +} +li.bullet-icon-pencil:before { + content: "\e05f"; +} +li.bullet-icon-note:before { + content: "\e060"; +} +li.bullet-icon-loop:before { + content: "\e064"; +} +li.bullet-icon-home:before { + content: "\e069"; +} +li.bullet-icon-grid:before { + content: "\e06a"; +} +li.bullet-icon-graph:before { + content: "\e06b"; +} +li.bullet-icon-microphone:before { + content: "\e063"; +} +li.bullet-icon-music-tone-alt:before { + content: "\e061"; +} +li.bullet-icon-music-tone:before { + content: "\e062"; +} +li.bullet-icon-earphones-alt:before { + content: "\e03c"; +} +li.bullet-icon-earphones:before { + content: "\e03d"; +} +li.bullet-icon-equalizer:before { + content: "\e06c"; +} +li.bullet-icon-like:before { + content: "\e068"; +} +li.bullet-icon-dislike:before { + content: "\e06d"; +} +li.bullet-icon-control-start:before { + content: "\e06f"; +} +li.bullet-icon-control-rewind:before { + content: "\e070"; +} +li.bullet-icon-control-play:before { + content: "\e071"; +} +li.bullet-icon-control-pause:before { + content: "\e072"; +} +li.bullet-icon-control-forward:before { + content: "\e073"; +} +li.bullet-icon-control-end:before { + content: "\e074"; +} +li.bullet-icon-volume-1:before { + content: "\e09f"; +} +li.bullet-icon-volume-2:before { + content: "\e0a0"; +} +li.bullet-icon-volume-off:before { + content: "\e0a1"; +} +li.bullet-icon-calendar:before { + content: "\e075"; +} +li.bullet-icon-bulb:before { + content: "\e076"; +} +li.bullet-icon-chart:before { + content: "\e077"; +} +li.bullet-icon-ban:before { + content: "\e07c"; +} +li.bullet-icon-bubble:before { + content: "\e07d"; +} +li.bullet-icon-camrecorder:before { + content: "\e07e"; +} +li.bullet-icon-camera:before { + content: "\e07f"; +} +li.bullet-icon-cloud-download:before { + content: "\e083"; +} +li.bullet-icon-cloud-upload:before { + content: "\e084"; +} +li.bullet-icon-envelope:before { + content: "\e086"; +} +li.bullet-icon-eye:before { + content: "\e087"; +} +li.bullet-icon-flag:before { + content: "\e088"; +} +li.bullet-icon-heart:before { + content: "\e08a"; +} +li.bullet-icon-info:before { + content: "\e08b"; +} +li.bullet-icon-key:before { + content: "\e08c"; +} +li.bullet-icon-link:before { + content: "\e08d"; +} +li.bullet-icon-lock:before { + content: "\e08e"; +} +li.bullet-icon-lock-open:before { + content: "\e08f"; +} +li.bullet-icon-magnifier:before { + content: "\e090"; +} +li.bullet-icon-magnifier-add:before { + content: "\e091"; +} +li.bullet-icon-magnifier-remove:before { + content: "\e092"; +} +li.bullet-icon-paper-clip:before { + content: "\e093"; +} +li.bullet-icon-paper-plane:before { + content: "\e094"; +} +li.bullet-icon-power:before { + content: "\e097"; +} +li.bullet-icon-refresh:before { + content: "\e098"; +} +li.bullet-icon-reload:before { + content: "\e099"; +} +li.bullet-icon-settings:before { + content: "\e09a"; +} +li.bullet-icon-star:before { + content: "\e09b"; +} +li.bullet-icon-symbol-female:before { + content: "\e09c"; +} +li.bullet-icon-symbol-male:before { + content: "\e09d"; +} +li.bullet-icon-target:before { + content: "\e09e"; +} +li.bullet-icon-credit-card:before { + content: "\e025"; +} +li.bullet-icon-paypal:before { + content: "\e608"; +} +li.bullet-icon-social-tumblr:before { + content: "\e00a"; +} +li.bullet-icon-social-twitter:before { + content: "\e009"; +} +li.bullet-icon-social-facebook:before { + content: "\e00b"; +} +li.bullet-icon-social-instagram:before { + content: "\e609"; +} +li.bullet-icon-social-linkedin:before { + content: "\e60a"; +} +li.bullet-icon-social-pinterest:before { + content: "\e60b"; +} +li.bullet-icon-social-github:before { + content: "\e60c"; +} +li.bullet-icon-social-google:before { + content: "\e60d"; +} +li.bullet-icon-social-reddit:before { + content: "\e60e"; +} +li.bullet-icon-social-skype:before { + content: "\e60f"; +} +li.bullet-icon-social-dribbble:before { + content: "\e00d"; +} +li.bullet-icon-social-behance:before { + content: "\e610"; +} +li.bullet-icon-social-foursqare:before { + content: "\e611"; +} +li.bullet-icon-social-soundcloud:before { + content: "\e612"; +} +li.bullet-icon-social-spotify:before { + content: "\e613"; +} +li.bullet-icon-social-stumbleupon:before { + content: "\e614"; +} +li.bullet-icon-social-youtube:before { + content: "\e008"; +} +li.bullet-icon-social-dropbox:before { + content: "\e00c"; +} +li.bullet-icon-social-vkontakte:before { + content: "\e618"; +} +li.bullet-icon-social-steam:before { + content: "\e620"; +} \ No newline at end of file diff --git a/static/style.css b/static/style.css index 410c91e..3340ee1 100644 --- a/static/style.css +++ b/static/style.css @@ -8,7 +8,7 @@ .container { width:600px; margin:60px auto; - font-size:18px; + font-size:17px; font-weight:300; line-height:1.3; } @@ -33,4 +33,60 @@ .signature { text-align:right; font-style:italic; + } + + ul.simplelinebullets { + list-style: none; + padding: 0 0 0 30px; + } + + ul.simplelinebullets li { + position: relative; + padding-left: 20px; + margin: 20px 0 20px 0; + } + + ul.simplelinebullets li:before { + font-family: 'simple-line-icons'; + font-size: 30px; + line-height: 30px; + height:30px; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + color: #2ECC71; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + display:inline-block; + width: 30px; /* same as padding-left set on li */ + + position: absolute; + left: -30px; + top:6px; + } + + ul.simplelinebullets li .title { + font-weight:400; + } + + .text-icon { + vertical-align: middle; + } + + .bigger { + font-size:30px; + margin-left:5px; + } + + .green { + color: #3c763d; + } + + .red { + color: #F9690E; } \ No newline at end of file diff --git a/static/update-0.4.0-en.html b/static/update-0.4.0-en.html new file mode 100644 index 0000000..efeea1b --- /dev/null +++ b/static/update-0.4.0-en.html @@ -0,0 +1,29 @@ + + + + + + + + +
+

Updated Shazify

+

Shazify has been updated with awesome features!

+
    +
  • Shazam API update.
    Handle new Shazam login & API.
  • +
  • Free to choose.
    Manually select the track you want on Spotify.
    Set a track to "not found" if none of the results suits you.
  • +
  • Filtering.
    Filter tags based on their status (not found, found).
  • +
  • Audio preview!
    Preview a track directly in Shazify.
  • +
  • More accurate matching.
    We will not automatically match a Spotify track with a different name than the Shazam tag.
  • +
  • Faster than ever.
    Paginated results for blazing speed. IndexedDB for storage.
  • +
  • Improved UI.
    Clean UI. New icons.
  • +
  • Bugfixes.
    Shazify is more reliable than ever!
  • +
+

Please feel free to contact me or react on Twitter if you have any suggestions or problems.

+

Thanks for using Shazify !

+

Leeroy

+

+

+
+ + \ No newline at end of file diff --git a/static/update-0.4.0-fr.html b/static/update-0.4.0-fr.html new file mode 100644 index 0000000..2045b3a --- /dev/null +++ b/static/update-0.4.0-fr.html @@ -0,0 +1,29 @@ + + + + + + + + +
+

Mise à jour de Shazify

+

Shazify a été mis à jour avec de nouvelles fonctionnalités!

+
    +
  • Mise à jour de l'API Shazam.
    Gestion de la nouvelle méthode de connexion et de l'API de Shazam.
  • +
  • Libre de choisir.
    Sélectionnez manuellement le morceau que vous voulez sur Spotify.
    Définissez un morceau comme "non trouvé" si aucun des résultats ne vous convient.
  • +
  • Filtres.
    Filtrez les morceaux en fonction de leur statut (trouvé, non trouvé).
  • +
  • Aperçu du morceau!
    Écoutez l'aperçu d'un morceau directement dans Shazify.
  • +
  • Meilleure identification.
    Nous ne lions plus automatiquement un morceau sur Spotify si le titre ne correspond pas au tag Shazam.
  • +
  • Plus rapide que jamais.
    Morceaux triés par pages pour un affichage rapide.
    Stockage dans IndexedDB.
  • +
  • Interface améliorée.
    Interface propre. Nouvelles icônes.
  • +
  • Corrections de bugs.
    Shazify est plus fiable que jamais!
  • +
+

N'hésitez pas à me contacter ou réagir sur Twitter si vous avez des suggestions ou problèmes.

+

Merci d'utiliser Shazify !

+

Leeroy

+

+

+
+ + \ No newline at end of file