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