X-Git-Url: http://repos.xcallymotion.com/?a=blobdiff_plain;f=public%2Fbower_components%2Fangular-local-storage%2Fangular-local-storage.js;h=e731ad144aecaa69306d4e3639a20d352e873caa;hb=221ba7c2ffc043570bbad1e8f0d6074fb4ff1fb0;hp=4bd5a1456983046008db0d82a9d42e9817d4c684;hpb=5d92478b1cb7479f39a43973775a6f6147fba8ac;p=motion.git diff --git a/public/bower_components/angular-local-storage/angular-local-storage.js b/public/bower_components/angular-local-storage/angular-local-storage.js index 4bd5a14..e731ad1 100644 --- a/public/bower_components/angular-local-storage/angular-local-storage.js +++ b/public/bower_components/angular-local-storage/angular-local-storage.js @@ -1,11 +1,14 @@ /** * An Angular module that gives you access to the browsers local storage - * @version v0.2.6 - 2016-03-16 + * @version v0.2.3 - 2015-10-11 * @link https://github.com/grevory/angular-local-storage * @author grevory * @license MIT License, http://www.opensource.org/licenses/MIT */ -(function (window, angular) { +(function ( window, angular, undefined ) { +/*jshint globalstrict:true*/ +'use strict'; + var isDefined = angular.isDefined, isUndefined = angular.isUndefined, isNumber = angular.isNumber, @@ -13,434 +16,434 @@ var isDefined = angular.isDefined, isArray = angular.isArray, extend = angular.extend, toJson = angular.toJson; - -angular - .module('LocalStorageModule', []) - .provider('localStorageService', function() { - // You should set a prefix to avoid overwriting any local storage variables from the rest of your app - // e.g. localStorageServiceProvider.setPrefix('yourAppName'); - // With provider you can use config as this: - // myApp.config(function (localStorageServiceProvider) { - // localStorageServiceProvider.prefix = 'yourAppName'; - // }); - this.prefix = 'ls'; - - // You could change web storage type localstorage or sessionStorage - this.storageType = 'localStorage'; - - // Cookie options (usually in case of fallback) - // expiry = Number of days before cookies expire // 0 = Does not expire - // path = The web path the cookie represents - this.cookie = { - expiry: 30, - path: '/' - }; - - // Send signals for each of the following actions? +var angularLocalStorage = angular.module('LocalStorageModule', []); + +angularLocalStorage.provider('localStorageService', function() { + + // You should set a prefix to avoid overwriting any local storage variables from the rest of your app + // e.g. localStorageServiceProvider.setPrefix('yourAppName'); + // With provider you can use config as this: + // myApp.config(function (localStorageServiceProvider) { + // localStorageServiceProvider.prefix = 'yourAppName'; + // }); + this.prefix = 'ls'; + + // You could change web storage type localstorage or sessionStorage + this.storageType = 'localStorage'; + + // Cookie options (usually in case of fallback) + // expiry = Number of days before cookies expire // 0 = Does not expire + // path = The web path the cookie represents + this.cookie = { + expiry: 30, + path: '/' + }; + + // Send signals for each of the following actions? + this.notify = { + setItem: true, + removeItem: false + }; + + // Setter for the prefix + this.setPrefix = function(prefix) { + this.prefix = prefix; + return this; + }; + + // Setter for the storageType + this.setStorageType = function(storageType) { + this.storageType = storageType; + return this; + }; + + // Setter for cookie config + this.setStorageCookie = function(exp, path) { + this.cookie.expiry = exp; + this.cookie.path = path; + return this; + }; + + // Setter for cookie domain + this.setStorageCookieDomain = function(domain) { + this.cookie.domain = domain; + return this; + }; + + // Setter for notification config + // itemSet & itemRemove should be booleans + this.setNotify = function(itemSet, itemRemove) { this.notify = { - setItem: true, - removeItem: false + setItem: itemSet, + removeItem: itemRemove }; - - // Setter for the prefix - this.setPrefix = function(prefix) { - this.prefix = prefix; - return this; - }; - - // Setter for the storageType - this.setStorageType = function(storageType) { - this.storageType = storageType; - return this; - }; - - // Setter for cookie config - this.setStorageCookie = function(exp, path) { - this.cookie.expiry = exp; - this.cookie.path = path; - return this; - }; - - // Setter for cookie domain - this.setStorageCookieDomain = function(domain) { - this.cookie.domain = domain; - return this; - }; - - // Setter for notification config - // itemSet & itemRemove should be booleans - this.setNotify = function(itemSet, itemRemove) { - this.notify = { - setItem: itemSet, - removeItem: itemRemove - }; - return this; + return this; + }; + + this.$get = ['$rootScope', '$window', '$document', '$parse', function($rootScope, $window, $document, $parse) { + var self = this; + var prefix = self.prefix; + var cookie = self.cookie; + var notify = self.notify; + var storageType = self.storageType; + var webStorage; + + // When Angular's $document is not available + if (!$document) { + $document = document; + } else if ($document[0]) { + $document = $document[0]; + } + + // If there is a prefix set in the config lets use that with an appended period for readability + if (prefix.substr(-1) !== '.') { + prefix = !!prefix ? prefix + '.' : ''; + } + var deriveQualifiedKey = function(key) { + return prefix + key; }; + // Checks the browser to see if local storage is supported + var browserSupportsLocalStorage = (function () { + try { + var supported = (storageType in $window && $window[storageType] !== null); + + // When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage + // is available, but trying to call .setItem throws an exception. + // + // "QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage + // that exceeded the quota." + var key = deriveQualifiedKey('__' + Math.round(Math.random() * 1e7)); + if (supported) { + webStorage = $window[storageType]; + webStorage.setItem(key, ''); + webStorage.removeItem(key); + } - this.$get = ['$rootScope', '$window', '$document', '$parse', function($rootScope, $window, $document, $parse) { - var self = this; - var prefix = self.prefix; - var cookie = self.cookie; - var notify = self.notify; - var storageType = self.storageType; - var webStorage; - - // When Angular's $document is not available - if (!$document) { - $document = document; - } else if ($document[0]) { - $document = $document[0]; + return supported; + } catch (e) { + storageType = 'cookie'; + $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); + return false; + } + }()); + + // Directly adds a value to local storage + // If local storage is not available in the browser use cookies + // Example use: localStorageService.add('library','angular'); + var addToLocalStorage = function (key, value) { + // Let's convert undefined values to null to get the value consistent + if (isUndefined(value)) { + value = null; + } else { + value = toJson(value); } - // If there is a prefix set in the config lets use that with an appended period for readability - if (prefix.substr(-1) !== '.') { - prefix = !!prefix ? prefix + '.' : ''; + // If this browser does not support local storage use cookies + if (!browserSupportsLocalStorage || self.storageType === 'cookie') { + if (!browserSupportsLocalStorage) { + $rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED'); + } + + if (notify.setItem) { + $rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: 'cookie'}); + } + return addToCookies(key, value); } - var deriveQualifiedKey = function(key) { - return prefix + key; - }; - // Checks the browser to see if local storage is supported - var browserSupportsLocalStorage = (function () { - try { - var supported = (storageType in $window && $window[storageType] !== null); - - // When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage - // is available, but trying to call .setItem throws an exception. - // - // "QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage - // that exceeded the quota." - var key = deriveQualifiedKey('__' + Math.round(Math.random() * 1e7)); - if (supported) { - webStorage = $window[storageType]; - webStorage.setItem(key, ''); - webStorage.removeItem(key); - } - return supported; - } catch (e) { - storageType = 'cookie'; - $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); - return false; + try { + if (webStorage) { + webStorage.setItem(deriveQualifiedKey(key), value); } - }()); - - // Directly adds a value to local storage - // If local storage is not available in the browser use cookies - // Example use: localStorageService.add('library','angular'); - var addToLocalStorage = function (key, value) { - // Let's convert undefined values to null to get the value consistent - if (isUndefined(value)) { - value = null; - } else { - value = toJson(value); + if (notify.setItem) { + $rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: self.storageType}); } + } catch (e) { + $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); + return addToCookies(key, value); + } + return true; + }; - // If this browser does not support local storage use cookies - if (!browserSupportsLocalStorage || self.storageType === 'cookie') { - if (!browserSupportsLocalStorage) { - $rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED'); - } + // Directly get a value from local storage + // Example use: localStorageService.get('library'); // returns 'angular' + var getFromLocalStorage = function (key) { - if (notify.setItem) { - $rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: 'cookie'}); - } - return addToCookies(key, value); + if (!browserSupportsLocalStorage || self.storageType === 'cookie') { + if (!browserSupportsLocalStorage) { + $rootScope.$broadcast('LocalStorageModule.notification.warning','LOCAL_STORAGE_NOT_SUPPORTED'); } - try { - if (webStorage) { - webStorage.setItem(deriveQualifiedKey(key), value); - } - if (notify.setItem) { - $rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: self.storageType}); - } - } catch (e) { - $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); - return addToCookies(key, value); - } - return true; - }; + return getFromCookies(key); + } - // Directly get a value from local storage - // Example use: localStorageService.get('library'); // returns 'angular' - var getFromLocalStorage = function (key) { + var item = webStorage ? webStorage.getItem(deriveQualifiedKey(key)) : null; + // angular.toJson will convert null to 'null', so a proper conversion is needed + // FIXME not a perfect solution, since a valid 'null' string can't be stored + if (!item || item === 'null') { + return null; + } + try { + return JSON.parse(item); + } catch (e) { + return item; + } + }; + + // Remove an item from local storage + // Example use: localStorageService.remove('library'); // removes the key/value pair of library='angular' + var removeFromLocalStorage = function () { + var i, key; + for (i=0; i 0 || - ($document.cookie = "test").indexOf.call($document.cookie, "test") > -1)); - } catch (e) { - $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); - return false; - } - }()); + ($document.cookie = "test").indexOf.call($document.cookie, "test") > -1)); + } catch (e) { + $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); + return false; + } + }()); - // Directly adds a value to cookies - // Typically used as a fallback is local storage is not available in the browser - // Example use: localStorageService.cookie.add('library','angular'); - var addToCookies = function (key, value, daysToExpiry) { + // Directly adds a value to cookies + // Typically used as a fallback is local storage is not available in the browser + // Example use: localStorageService.cookie.add('library','angular'); + var addToCookies = function (key, value, daysToExpiry) { - if (isUndefined(value)) { - return false; - } else if(isArray(value) || isObject(value)) { - value = toJson(value); - } + if (isUndefined(value)) { + return false; + } else if(isArray(value) || isObject(value)) { + value = toJson(value); + } - if (!browserSupportsCookies) { - $rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED'); - return false; - } + if (!browserSupportsCookies) { + $rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED'); + return false; + } - try { - var expiry = '', + try { + var expiry = '', expiryDate = new Date(), cookieDomain = ''; - if (value === null) { - // Mark that the cookie has expired one day ago - expiryDate.setTime(expiryDate.getTime() + (-1 * 24 * 60 * 60 * 1000)); - expiry = "; expires=" + expiryDate.toGMTString(); - value = ''; - } else if (isNumber(daysToExpiry) && daysToExpiry !== 0) { - expiryDate.setTime(expiryDate.getTime() + (daysToExpiry * 24 * 60 * 60 * 1000)); - expiry = "; expires=" + expiryDate.toGMTString(); - } else if (cookie.expiry !== 0) { - expiryDate.setTime(expiryDate.getTime() + (cookie.expiry * 24 * 60 * 60 * 1000)); - expiry = "; expires=" + expiryDate.toGMTString(); - } - if (!!key) { - var cookiePath = "; path=" + cookie.path; - if(cookie.domain){ - cookieDomain = "; domain=" + cookie.domain; - } - $document.cookie = deriveQualifiedKey(key) + "=" + encodeURIComponent(value) + expiry + cookiePath + cookieDomain; - } - } catch (e) { - $rootScope.$broadcast('LocalStorageModule.notification.error', e.message); - return false; - } - return true; - }; - - // Directly get a value from a cookie - // Example use: localStorageService.cookie.get('library'); // returns 'angular' - var getFromCookies = function (key) { - if (!browserSupportsCookies) { - $rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED'); - return false; + if (value === null) { + // Mark that the cookie has expired one day ago + expiryDate.setTime(expiryDate.getTime() + (-1 * 24 * 60 * 60 * 1000)); + expiry = "; expires=" + expiryDate.toGMTString(); + value = ''; + } else if (isNumber(daysToExpiry) && daysToExpiry !== 0) { + expiryDate.setTime(expiryDate.getTime() + (daysToExpiry * 24 * 60 * 60 * 1000)); + expiry = "; expires=" + expiryDate.toGMTString(); + } else if (cookie.expiry !== 0) { + expiryDate.setTime(expiryDate.getTime() + (cookie.expiry * 24 * 60 * 60 * 1000)); + expiry = "; expires=" + expiryDate.toGMTString(); + } + if (!!key) { + var cookiePath = "; path=" + cookie.path; + if(cookie.domain){ + cookieDomain = "; domain=" + cookie.domain; } + $document.cookie = deriveQualifiedKey(key) + "=" + encodeURIComponent(value) + expiry + cookiePath + cookieDomain; + } + } catch (e) { + $rootScope.$broadcast('LocalStorageModule.notification.error',e.message); + return false; + } + return true; + }; - var cookies = $document.cookie && $document.cookie.split(';') || []; - for(var i=0; i < cookies.length; i++) { - var thisCookie = cookies[i]; - while (thisCookie.charAt(0) === ' ') { - thisCookie = thisCookie.substring(1,thisCookie.length); - } - if (thisCookie.indexOf(deriveQualifiedKey(key) + '=') === 0) { - var storedValues = decodeURIComponent(thisCookie.substring(prefix.length + key.length + 1, thisCookie.length)); - try { - return JSON.parse(storedValues); - } catch(e) { - return storedValues; - } - } - } - return null; - }; - - var removeFromCookies = function (key) { - addToCookies(key,null); - }; - - var clearAllFromCookies = function () { - var thisCookie = null, thisKey = null; - var prefixLength = prefix.length; - var cookies = $document.cookie.split(';'); - for(var i = 0; i < cookies.length; i++) { - thisCookie = cookies[i]; - - while (thisCookie.charAt(0) === ' ') { - thisCookie = thisCookie.substring(1, thisCookie.length); - } + // Directly get a value from a cookie + // Example use: localStorageService.cookie.get('library'); // returns 'angular' + var getFromCookies = function (key) { + if (!browserSupportsCookies) { + $rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED'); + return false; + } - var key = thisCookie.substring(prefixLength, thisCookie.indexOf('=')); - removeFromCookies(key); - } - }; - - var getStorageType = function() { - return storageType; - }; - - // Add a listener on scope variable to save its changes to local storage - // Return a function which when called cancels binding - var bindToScope = function(scope, key, def, lsKey) { - lsKey = lsKey || key; - var value = getFromLocalStorage(lsKey); - - if (value === null && isDefined(def)) { - value = def; - } else if (isObject(value) && isObject(def)) { - value = extend(value, def); + var cookies = $document.cookie && $document.cookie.split(';') || []; + for(var i=0; i < cookies.length; i++) { + var thisCookie = cookies[i]; + while (thisCookie.charAt(0) === ' ') { + thisCookie = thisCookie.substring(1,thisCookie.length); + } + if (thisCookie.indexOf(deriveQualifiedKey(key) + '=') === 0) { + var storedValues = decodeURIComponent(thisCookie.substring(prefix.length + key.length + 1, thisCookie.length)); + try { + return JSON.parse(storedValues); + } catch(e) { + return storedValues; } + } + } + return null; + }; - $parse(key).assign(scope, value); - - return scope.$watch(key, function(newVal) { - addToLocalStorage(lsKey, newVal); - }, isObject(scope[key])); - }; - - // Return localStorageService.length - // ignore keys that not owned - var lengthOfLocalStorage = function() { - var count = 0; - var storage = $window[storageType]; - for(var i = 0; i < storage.length; i++) { - if(storage.key(i).indexOf(prefix) === 0 ) { - count++; - } - } - return count; - }; - - return { - isSupported: browserSupportsLocalStorage, - getStorageType: getStorageType, - set: addToLocalStorage, - add: addToLocalStorage, //DEPRECATED - get: getFromLocalStorage, - keys: getKeysForLocalStorage, - remove: removeFromLocalStorage, - clearAll: clearAllFromLocalStorage, - bind: bindToScope, - deriveKey: deriveQualifiedKey, - length: lengthOfLocalStorage, - cookie: { - isSupported: browserSupportsCookies, - set: addToCookies, - add: addToCookies, //DEPRECATED - get: getFromCookies, - remove: removeFromCookies, - clearAll: clearAllFromCookies - } - }; - }]; - }); -})(window, window.angular); \ No newline at end of file + var removeFromCookies = function (key) { + addToCookies(key,null); + }; + + var clearAllFromCookies = function () { + var thisCookie = null, thisKey = null; + var prefixLength = prefix.length; + var cookies = $document.cookie.split(';'); + for(var i = 0; i < cookies.length; i++) { + thisCookie = cookies[i]; + + while (thisCookie.charAt(0) === ' ') { + thisCookie = thisCookie.substring(1, thisCookie.length); + } + + var key = thisCookie.substring(prefixLength, thisCookie.indexOf('=')); + removeFromCookies(key); + } + }; + + var getStorageType = function() { + return storageType; + }; + + // Add a listener on scope variable to save its changes to local storage + // Return a function which when called cancels binding + var bindToScope = function(scope, key, def, lsKey) { + lsKey = lsKey || key; + var value = getFromLocalStorage(lsKey); + + if (value === null && isDefined(def)) { + value = def; + } else if (isObject(value) && isObject(def)) { + value = extend(def, value); + } + + $parse(key).assign(scope, value); + + return scope.$watch(key, function(newVal) { + addToLocalStorage(lsKey, newVal); + }, isObject(scope[key])); + }; + + // Return localStorageService.length + // ignore keys that not owned + var lengthOfLocalStorage = function() { + var count = 0; + var storage = $window[storageType]; + for(var i = 0; i < storage.length; i++) { + if(storage.key(i).indexOf(prefix) === 0 ) { + count++; + } + } + return count; + }; + + return { + isSupported: browserSupportsLocalStorage, + getStorageType: getStorageType, + set: addToLocalStorage, + add: addToLocalStorage, //DEPRECATED + get: getFromLocalStorage, + keys: getKeysForLocalStorage, + remove: removeFromLocalStorage, + clearAll: clearAllFromLocalStorage, + bind: bindToScope, + deriveKey: deriveQualifiedKey, + length: lengthOfLocalStorage, + cookie: { + isSupported: browserSupportsCookies, + set: addToCookies, + add: addToCookies, //DEPRECATED + get: getFromCookies, + remove: removeFromCookies, + clearAll: clearAllFromCookies + } + }; + }]; +}); +})( window, window.angular ); \ No newline at end of file