PageSourceSearch

https://www.roundhillfishkill.com/plugins/emoji-picker/js/util.js

js roundhillfishkill.com collected 2026-09-26 05:00:36 UTC 5,737 bytes, 225 lines download raw bytes

1'use strict';
2
3function cancelEvent (event) {
4  event = event || window.event;
5  if (event) {
6    event = event.originalEvent || event;
7
8    if (event.stopPropagation) event.stopPropagation();
9    if (event.preventDefault) event.preventDefault();
10  }
11
12  return false;
13}
14
15function getGuid() {
16    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
17        var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
18        return v.toString(16);
19    });
20}
21
22//ConfigStorage
23(function(window)
24{
25    var keyPrefix = '';
26    var noPrefix = false;
27    var cache = {};
28    var useCs = !!(window.chrome && chrome.storage && chrome.storage.local);
29    var useLs = !useCs && !!window.localStorage;
30
31    function storageSetPrefix(newPrefix)
32    {
33        keyPrefix = newPrefix;
34    }
35
36    function storageSetNoPrefix()
37    {
38        noPrefix = true;
39    }
40
41    function storageGetPrefix()
42    {
43        if (noPrefix)
44        {
45            noPrefix = false;
46            return '';
47        }
48        return keyPrefix;
49    }
50
51    function storageGetValue()
52    {
53        var keys = Array.prototype.slice.call(arguments),
54            callback = keys.pop(),
55            result = [],
56            single = keys.length == 1,
57            value,
58            allFound = true,
59            prefix = storageGetPrefix(),
60            i, key;
61
62        for (i = 0; i < keys.length; i++)
63        {
64            key = keys[i] = prefix + keys[i];
65            if (key.substr(0, 3) != 'xt_' && cache[key] !== undefined)
66            {
67                result.push(cache[key]);
68            }
69            else if (useLs)
70            {
71                try
72                {
73                    value = localStorage.getItem(key);
74                }
75                catch (e)
76                {
77                    useLs = false;
78                }
79                try
80                {
81                    value = (value === undefined || value === null) ? false : JSON.parse(value);
82                }
83                catch (e)
84                {
85                    value = false;
86                }
87                result.push(cache[key] = value);
88            }
89            else if (!useCs)
90            {
91                result.push(cache[key] = false);
92            }
93            else
94            {
95                allFound = false;
96            }
97        }
98
99        if (allFound)
100        {
101            return callback(single ? result[0] : result);
102        }
103
104        chrome.storage.local.get(keys, function(resultObj)
105        {
106            var value;
107            result = [];
108            for (i = 0; i < keys.length; i++)
109            {
110                key = keys[i];
111                value = resultObj[key];
112                value = value === undefined || value === null ? false : JSON.parse(value);
113                result.push(cache[key] = value);
114            }
115
116            callback(single ? result[0] : result);
117        });
118    };
119
120    function storageSetValue(obj, callback)
121    {
122        var keyValues = {},
123            prefix = storageGetPrefix(),
124            key, value;
125
126        for (key in obj)
127        {
128            if (obj.hasOwnProperty(key))
129            {
130                value = obj[key];
131                key = prefix + key;
132                cache[key] = value;
133                value = JSON.stringify(value);
134                if (useLs)
135                {
136                    try
137                    {
138                        localStorage.setItem(key, value);
139                    }
140                    catch (e)
141                    {
142                        useLs = false;
143                    }
144                }
145                else
146                {
147                    keyValues[key] = value;
148                }
149            }
150        }
151
152        if (useLs || !useCs)
153        {
154            if (callback)
155            {
156                callback();
157            }
158            return;
159        }
160
161        chrome.storage.local.set(keyValues, callback);
162    };
163
164    function storageRemoveValue()
165    {
166        var keys = Array.prototype.slice.call(arguments),
167            prefix = storageGetPrefix(),
168            i, key, callback;
169
170        if (typeof keys[keys.length - 1] === 'function')
171        {
172            callback = keys.pop();
173        }
174
175        for (i = 0; i < keys.length; i++)
176        {
177            key = keys[i] = prefix + keys[i];
178            delete cache[key];
179            if (useLs)
180            {
181                try
182                {
183                    localStorage.removeItem(key);
184                }
185                catch (e)
186                {
187                    useLs = false;
188                }
189            }
190        }
191        if (useCs)
192        {
193            chrome.storage.local.remove(keys, callback);
194        }
195        else if (callback)
196        {
197            callback();
198        }
199    };
200
201    window.ConfigStorage = {
202        prefix: storageSetPrefix,
203        noPrefix: storageSetNoPrefix,
204        get: storageGetValue,
205        set: storageSetValue,
206        remove: storageRemoveValue
207    };
208})(this);
209
210// Pollyfill for IE 9 support of CustomEvent
211(function () {
212
213  if ( typeof window.CustomEvent === "function" ) return false;
214
215  function CustomEvent ( event, params ) {
216    params = params || { bubbles: false, cancelable: false, detail: undefined };
217    var evt = document.createEvent( 'CustomEvent' );
218    evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
219    return evt;
220   }
221
222  CustomEvent.prototype = window.Event.prototype;
223
224  window.CustomEvent = CustomEvent;
225})();

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.