PageSourceSearch

https://is-kras.ru/storage/dist/lib/js/angular-cookies.js

js is-kras.ru collected 2026-10-07 16:34:10 UTC 5,824 bytes, 206 lines download raw bytes

1/**
2 * @license AngularJS v1.2.32
3 * (c) 2010-2014 Google, Inc. http://angularjs.org
4 * License: MIT
5 */
6(function(window, angular, undefined) {'use strict';
7
8/**
9 * @ngdoc module
10 * @name ngCookies
11 * @description
12 *
13 * # ngCookies
14 *
15 * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
16 *
17 *
18 * <div doc-module-components="ngCookies"></div>
19 *
20 * See {@link ngCookies.$cookies `$cookies`} and
21 * {@link ngCookies.$cookieStore `$cookieStore`} for usage.
22 */
23
24
25angular.module('ngCookies', ['ng']).
26  /**
27   * @ngdoc service
28   * @name $cookies
29   *
30   * @description
31   * Provides read/write access to browser's cookies.
32   *
33   * Only a simple Object is exposed and by adding or removing properties to/from this object, new
34   * cookies are created/deleted at the end of current $eval.
35   * The object's properties can only be strings.
36   *
37   * Requires the {@link ngCookies `ngCookies`} module to be installed.
38   *
39   * @example
40   *
41   * ```js
42   * angular.module('cookiesExample', ['ngCookies'])
43   *   .controller('ExampleController', ['$cookies', function($cookies) {
44   *     // Retrieving a cookie
45   *     var favoriteCookie = $cookies.myFavorite;
46   *     // Setting a cookie
47   *     $cookies.myFavorite = 'oatmeal';
48   *   }]);
49   * ```
50   */
51   factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) {
52      var cookies = {},
53          lastCookies = {},
54          lastBrowserCookies,
55          runEval = false,
56          copy = angular.copy,
57          isUndefined = angular.isUndefined;
58
59      //creates a poller fn that copies all cookies from the $browser to service & inits the service
60      $browser.addPollFn(function() {
61        var currentCookies = $browser.cookies();
62        if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl
63          lastBrowserCookies = currentCookies;
64          copy(currentCookies, lastCookies);
65          copy(currentCookies, cookies);
66          if (runEval) $rootScope.$apply();
67        }
68      })();
69
70      runEval = true;
71
72      //at the end of each eval, push cookies
73      //TODO: this should happen before the "delayed" watches fire, because if some cookies are not
74      //      strings or browser refuses to store some cookies, we update the model in the push fn.
75      $rootScope.$watch(push);
76
77      return cookies;
78
79
80      /**
81       * Pushes all the cookies from the service to the browser and verifies if all cookies were
82       * stored.
83       */
84      function push() {
85        var name,
86            value,
87            browserCookies,
88            updated;
89
90        //delete any cookies deleted in $cookies
91        for (name in lastCookies) {
92          if (isUndefined(cookies[name])) {
93            $browser.cookies(name, undefined);
94          }
95        }
96
97        //update all cookies updated in $cookies
98        for(name in cookies) {
99          value = cookies[name];
100          if (!angular.isString(value)) {
101            value = '' + value;
102            cookies[name] = value;
103          }
104          if (value !== lastCookies[name]) {
105            $browser.cookies(name, value);
106            updated = true;
107          }
108        }
109
110        //verify what was actually stored
111        if (updated){
112          updated = false;
113          browserCookies = $browser.cookies();
114
115          for (name in cookies) {
116            if (cookies[name] !== browserCookies[name]) {
117              //delete or reset all cookies that the browser dropped from $cookies
118              if (isUndefined(browserCookies[name])) {
119                delete cookies[name];
120              } else {
121                cookies[name] = browserCookies[name];
122              }
123              updated = true;
124            }
125          }
126        }
127      }
128    }]).
129
130
131  /**
132   * @ngdoc service
133   * @name $cookieStore
134   * @requires $cookies
135   *
136   * @description
137   * Provides a key-value (string-object) storage, that is backed by session cookies.
138   * Objects put or retrieved from this storage are automatically serialized or
139   * deserialized by angular's toJson/fromJson.
140   *
141   * Requires the {@link ngCookies `ngCookies`} module to be installed.
142   *
143   * @example
144   *
145   * ```js
146   * angular.module('cookieStoreExample', ['ngCookies'])
147   *   .controller('ExampleController', ['$cookieStore', function($cookieStore) {
148   *     // Put cookie
149   *     $cookieStore.put('myFavorite','oatmeal');
150   *     // Get cookie
151   *     var favoriteCookie = $cookieStore.get('myFavorite');
152   *     // Removing a cookie
153   *     $cookieStore.remove('myFavorite');
154   *   }]);
155   * ```
156   */
157   factory('$cookieStore', ['$cookies', function($cookies) {
158
159      return {
160        /**
161         * @ngdoc method
162         * @name $cookieStore#get
163         *
164         * @description
165         * Returns the value of given cookie key
166         *
167         * @param {string} key Id to use for lookup.
168         * @returns {Object} Deserialized cookie value.
169         */
170        get: function(key) {
171          var value = $cookies[key];
172          return value ? angular.fromJson(value) : value;
173        },
174
175        /**
176         * @ngdoc method
177         * @name $cookieStore#put
178         *
179         * @description
180         * Sets a value for given cookie key
181         *
182         * @param {string} key Id for the `value`.
183         * @param {Object} value Value to be stored.
184         */
185        put: function(key, value) {
186          $cookies[key] = angular.toJson(value);
187        },
188
189        /**
190         * @ngdoc method
191         * @name $cookieStore#remove
192         *
193         * @description
194         * Remove given cookie
195         *
196         * @param {string} key Id of the key-value pair to delete.
197         */
198        remove: function(key) {
199          delete $cookies[key];
200        }
201      };
202
203    }]);
204
205
206})(window, window.angular);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.