Source

cookies.js

/** @module Cookies */

/**
 * Get a cookie with a given name
 * @author Moreno van Rooijen <moreno@notanumber.digital>
 * @param {string} cookie_name name of the cookie
 * 
 * @example
 * import { getCookie } from "nan-design-system/utils";
 * const cookie = getCookie("my_cookie");
 */
export function getCookie(cookie_name) {
  if (typeof document !== "undefined") {
    var name = cookie_name + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(";");
    for (var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == " ") {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
  }
  return "";
}
/**
 * Set a cookie
 * @author Moreno van Rooijen <moreno@notanumber.digital>
 * @param {string} cookie_name name of the cookie
 * @param {string} cookie_value value of the cookie
 * @param {float} exdays days until expiration
 * @param {string} domain domain of the cookie
 * 
 * @example
 * import { setCookie } from "nan-design-system/utils";
 * const cookie = setCookie("my_cookie", "my_cookie_value", 7);
 */
export function setCookie(cookie_name, cookie_value, exdays, domain = "") {
  var d = new Date();
  d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
  var expires = "expires=" + d.toUTCString();
  if (domain.length > 0) {
    domain = "; domain=." + domain;
  }
  document.cookie = cookie_name + "=" + cookie_value + ";" + expires + ";path=/" + domain;
}
/**
 * Remove cookie with a given name
 * @author Moreno van Rooijen <moreno@notanumber.digital>
 * @param {string} cookie_name name of the cookie
 * @param {string} domain domain of the cookie
 * @example
 * import { removeCookie } from "nan-design-system/utils";
 * const cookie = removeCookie("my_cookie");
 */
export function removeCookie(cookie_name, domain = "") {
  setCookie(cookie_name, "", -1, domain);
}