emoji-mart
Version:
Customizable Slack-like emoji picker for React
59 lines (50 loc) • 1.11 kB
JavaScript
var NAMESPACE = 'emoji-mart';
var isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;
var getter;
var setter;
function setHandlers(handlers) {
handlers || (handlers = {});
getter = handlers.getter;
setter = handlers.setter;
}
function setNamespace(namespace) {
NAMESPACE = namespace;
}
function update(state) {
for (var key in state) {
var value = state[key];
set(key, value);
}
}
function set(key, value) {
if (setter) {
setter(key, value);
} else {
if (!isLocalStorageSupported) return;
try {
window.localStorage["".concat(NAMESPACE, ".").concat(key)] = JSON.stringify(value);
} catch (e) {}
}
}
function get(key) {
if (getter) {
return getter(key);
} else {
if (!isLocalStorageSupported) return;
try {
var value = window.localStorage["".concat(NAMESPACE, ".").concat(key)];
if (value) {
return JSON.parse(value);
}
} catch (e) {
return;
}
}
}
export default {
update: update,
set: set,
get: get,
setNamespace: setNamespace,
setHandlers: setHandlers
};