{"version":3,"file":"9204-68b6663.js","mappings":";6KAiBAA,KAAE,WACAA,IAAE,mBAAmBC,GAAG,SAAS,WAC/B,IAAMC,EAAaF,IAAEG,MAAMC,SAASC,SACjCC,MACAC,KAAK,eAER,GAXJ,SAAwBL,GACtB,MAAsB,qBAAfA,GACe,wBAAfA,CACT,CAQQM,CAAeN,GAAa,CAC9B,IAAMO,EAAgB,IAAIC,KAAKA,KAAKC,MAAS,QAC7CC,EAAAA,EAAAA,GACEV,EAAa,mBACbW,KAAKC,KAAKJ,KAAKC,MAAQ,KACvBF,EAEJ,MACEG,EAAAA,EAAAA,GACEV,EAAa,mBACbW,KAAKC,KAAKJ,KAAKC,MAAQ,KAG7B,GACF,wCC5BA,SAAkB,kGCsClB,QAPwB,oBAAbI,UACsB,UAA7BC,OAAOC,SAASC,SAlBpB,SAA2BC,EAAcC,GACvCC,EAAAA,EAASF,GAAQC,EAAME,UACzB,EAEA,SACEH,EACAC,GAEA,IADAG,EAAgBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAVT,IAAId,KAAKA,KAAKC,MAAS,SAY9BI,SAASY,OACPA,EAAAA,UACER,EACAC,EAAME,WACN,CAACM,QAASL,EAAYM,KAAM,KAElC,qBCxBAC,EAAQC,MAgCR,SAAeC,EAAKC,GAClB,GAAmB,iBAARD,EACT,MAAM,IAAIE,UAAU,iCAGtB,IAAIC,EAAM,CAAC,EAEPC,GADMH,GAAW,CAAC,GACRI,QAAUA,EAEpBC,EAAQ,EACZ,KAAOA,EAAQN,EAAIP,QAAQ,CACzB,IAAIc,EAAQP,EAAIQ,QAAQ,IAAKF,GAG7B,IAAe,IAAXC,EACF,MAGF,IAAIE,EAAST,EAAIQ,QAAQ,IAAKF,GAE9B,IAAgB,IAAZG,EACFA,EAAST,EAAIP,YACR,GAAIgB,EAASF,EAAO,CAEzBD,EAAQN,EAAIU,YAAY,IAAKH,EAAQ,GAAK,EAC1C,QACF,CAEA,IAAII,EAAMX,EAAIY,MAAMN,EAAOC,GAAOM,OAGlC,QAAInB,IAAcS,EAAIQ,GAAM,CAC1B,IAAIG,EAAMd,EAAIY,MAAML,EAAQ,EAAGE,GAAQI,OAGb,KAAtBC,EAAIC,WAAW,KACjBD,EAAMA,EAAIF,MAAM,GAAI,IAGtBT,EAAIQ,GAAOK,EAAUF,EAAKV,EAC5B,CAEAE,EAAQG,EAAS,CACnB,CAEA,OAAON,CACT,EA7EAL,EAAQmB,UA+FR,SAAmB9B,EAAM2B,EAAKb,GAC5B,IAAIiB,EAAMjB,GAAW,CAAC,EAClBkB,EAAMD,EAAIE,QAAUA,EAExB,GAAmB,mBAARD,EACT,MAAM,IAAIjB,UAAU,4BAGtB,IAAKmB,EAAmBC,KAAKnC,GAC3B,MAAM,IAAIe,UAAU,4BAGtB,IAAId,EAAQ+B,EAAIL,GAEhB,GAAI1B,IAAUiC,EAAmBC,KAAKlC,GACpC,MAAM,IAAIc,UAAU,2BAGtB,IAAIF,EAAMb,EAAO,IAAMC,EAEvB,GAAI,MAAQ8B,EAAIK,OAAQ,CACtB,IAAIA,EAASL,EAAIK,OAAS,EAE1B,GAAIC,MAAMD,KAAYE,SAASF,GAC7B,MAAM,IAAIrB,UAAU,4BAGtBF,GAAO,aAAenB,KAAK6C,MAAMH,EACnC,CAEA,GAAIL,EAAIS,OAAQ,CACd,IAAKN,EAAmBC,KAAKJ,EAAIS,QAC/B,MAAM,IAAIzB,UAAU,4BAGtBF,GAAO,YAAckB,EAAIS,MAC3B,CAEA,GAAIT,EAAIrB,KAAM,CACZ,IAAKwB,EAAmBC,KAAKJ,EAAIrB,MAC/B,MAAM,IAAIK,UAAU,0BAGtBF,GAAO,UAAYkB,EAAIrB,IACzB,CAEA,GAAIqB,EAAItB,QAAS,CACf,IAAIA,EAAUsB,EAAItB,QAElB,IA+FJ,SAAiBkB,GACf,MAAgC,kBAAzBc,EAAWC,KAAKf,IACrBA,aAAepC,IACnB,CAlGSoD,CAAOlC,IAAY4B,MAAM5B,EAAQmC,WACpC,MAAM,IAAI7B,UAAU,6BAGtBF,GAAO,aAAeJ,EAAQoC,aAChC,CAEId,EAAIe,WACNjC,GAAO,cAGLkB,EAAIgB,SACNlC,GAAO,YAGLkB,EAAIiB,cACNnC,GAAO,iBAGT,GAAIkB,EAAIkB,SAAU,CAKhB,OAJuC,iBAAjBlB,EAAIkB,SACtBlB,EAAIkB,SAASC,cACbnB,EAAIkB,UAGN,IAAK,MACHpC,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAIE,UAAU,8BAE1B,CAEA,GAAIgB,EAAIoB,SAAU,CAIhB,OAHuC,iBAAjBpB,EAAIoB,SACtBpB,EAAIoB,SAASD,cAAgBnB,EAAIoB,UAGnC,KAAK,EACHtC,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAIE,UAAU,8BAE1B,CAEA,OAAOF,CACT,EAvMA,IAAI4B,EAAaW,OAAOC,UAAUlD,SAU9B+B,EAAqB,wCAsMzB,SAAShB,EAAQL,GACf,OAA6B,IAAtBA,EAAIQ,QAAQ,KACfiC,mBAAmBzC,GACnBA,CACN,CASA,SAASoB,EAAQN,GACf,OAAO4B,mBAAmB5B,EAC5B,CAsBA,SAASE,EAAUhB,EAAKK,GACtB,IACE,OAAOA,EAAOL,EAChB,CAAE,MAAO2C,GACP,OAAO3C,CACT,CACF","sources":["webpack://musicbrainz-server/./root/static/scripts/common/banner.js","webpack://musicbrainz-server/./root/static/scripts/common/utility/_cookies.js","webpack://musicbrainz-server/./root/static/scripts/common/utility/setCookie.js","webpack://musicbrainz-server/./node_modules/cookie/index.js"],"sourcesContent":["/*\n * Copyright (C) 2015 MetaBrainz Foundation\n *\n * This file is part of MusicBrainz, the open internet music database,\n * and is licensed under the GPL version 2, or (at your option) any\n * later version: http://www.gnu.org/licenses/gpl-2.0.txt\n */\n\nimport $ from 'jquery';\n\nimport setCookie from './utility/setCookie.js';\n\nfunction isOneDayBanner(bannerName) {\n  return bannerName === 'birthday_message' ||\n         bannerName === 'anniversary_message';\n}\n\n$(function () {\n  $('.dismiss-banner').on('click', function () {\n    const bannerName = $(this).parent().remove()\n      .end()\n      .data('banner-name');\n\n    if (isOneDayBanner(bannerName)) {\n      const oneDayFromNow = new Date(Date.now() + (1000 * 60 * 60 * 24));\n      setCookie(\n        bannerName + '_dismissed_mtime',\n        Math.ceil(Date.now() / 1000),\n        oneDayFromNow,\n      );\n    } else {\n      setCookie(\n        bannerName + '_dismissed_mtime',\n        Math.ceil(Date.now() / 1000),\n      );\n    }\n  });\n});\n","/*\n * @flow strict\n * Copyright (C) 2018 MetaBrainz Foundation\n *\n * This file is part of MusicBrainz, the open internet music database,\n * and is licensed under the GPL version 2, or (at your option) any\n * later version: http://www.gnu.org/licenses/gpl-2.0.txt\n */\n\nexport default ({}: {[cookie: string]: string});\n","/*\n * @flow strict\n * Copyright (C) 2015 MetaBrainz Foundation\n *\n * This file is part of MusicBrainz, the open internet music database,\n * and is licensed under the GPL version 2, or (at your option) any\n * later version: http://www.gnu.org/licenses/gpl-2.0.txt\n */\n\nimport cookie from 'cookie';\n\nimport _cookies from './_cookies.js';\n\nlet defaultExport: (\n  name: string,\n  value: StrOrNum | boolean,\n  expiration?: Date,\n) => void;\n\nfunction oneYearFromNow(): Date {\n  return new Date(Date.now() + (1000 * 60 * 60 * 24 * 365));\n}\n\nfunction setCookieFallback(name: string, value: StrOrNum | boolean) {\n  _cookies[name] = value.toString();\n}\n\nfunction setCookie(\n  name: string,\n  value: StrOrNum | boolean,\n  expiration: Date = oneYearFromNow(),\n) {\n  document.cookie =\n    cookie.serialize(\n      name,\n      value.toString(),\n      {expires: expiration, path: '/'},\n    );\n}\n\nif (typeof document === 'undefined' ||\n    window.location.protocol === 'file:') {\n  defaultExport = setCookieFallback;\n} else {\n  defaultExport = setCookie;\n}\n\nexport default defaultExport;\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string');\n  }\n\n  var obj = {}\n  var opt = options || {};\n  var dec = opt.decode || decode;\n\n  var index = 0\n  while (index < str.length) {\n    var eqIdx = str.indexOf('=', index)\n\n    // no more cookie pairs\n    if (eqIdx === -1) {\n      break\n    }\n\n    var endIdx = str.indexOf(';', index)\n\n    if (endIdx === -1) {\n      endIdx = str.length\n    } else if (endIdx < eqIdx) {\n      // backtrack on prior semicolon\n      index = str.lastIndexOf(';', eqIdx - 1) + 1\n      continue\n    }\n\n    var key = str.slice(index, eqIdx).trim()\n\n    // only assign once\n    if (undefined === obj[key]) {\n      var val = str.slice(eqIdx + 1, endIdx).trim()\n\n      // quoted values\n      if (val.charCodeAt(0) === 0x22) {\n        val = val.slice(1, -1)\n      }\n\n      obj[key] = tryDecode(val, dec);\n    }\n\n    index = endIdx + 1\n  }\n\n  return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n  var opt = options || {};\n  var enc = opt.encode || encode;\n\n  if (typeof enc !== 'function') {\n    throw new TypeError('option encode is invalid');\n  }\n\n  if (!fieldContentRegExp.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  var value = enc(val);\n\n  if (value && !fieldContentRegExp.test(value)) {\n    throw new TypeError('argument val is invalid');\n  }\n\n  var str = name + '=' + value;\n\n  if (null != opt.maxAge) {\n    var maxAge = opt.maxAge - 0;\n\n    if (isNaN(maxAge) || !isFinite(maxAge)) {\n      throw new TypeError('option maxAge is invalid')\n    }\n\n    str += '; Max-Age=' + Math.floor(maxAge);\n  }\n\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n\n    str += '; Domain=' + opt.domain;\n  }\n\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n\n    str += '; Path=' + opt.path;\n  }\n\n  if (opt.expires) {\n    var expires = opt.expires\n\n    if (!isDate(expires) || isNaN(expires.valueOf())) {\n      throw new TypeError('option expires is invalid');\n    }\n\n    str += '; Expires=' + expires.toUTCString()\n  }\n\n  if (opt.httpOnly) {\n    str += '; HttpOnly';\n  }\n\n  if (opt.secure) {\n    str += '; Secure';\n  }\n\n  if (opt.partitioned) {\n    str += '; Partitioned'\n  }\n\n  if (opt.priority) {\n    var priority = typeof opt.priority === 'string'\n      ? opt.priority.toLowerCase()\n      : opt.priority\n\n    switch (priority) {\n      case 'low':\n        str += '; Priority=Low'\n        break\n      case 'medium':\n        str += '; Priority=Medium'\n        break\n      case 'high':\n        str += '; Priority=High'\n        break\n      default:\n        throw new TypeError('option priority is invalid')\n    }\n  }\n\n  if (opt.sameSite) {\n    var sameSite = typeof opt.sameSite === 'string'\n      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n\n  return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n  return str.indexOf('%') !== -1\n    ? decodeURIComponent(str)\n    : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} val\n * @returns {string}\n */\n\nfunction encode (val) {\n  return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n  return __toString.call(val) === '[object Date]' ||\n    val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n  try {\n    return decode(str);\n  } catch (e) {\n    return str;\n  }\n}\n"],"names":["$","on","bannerName","this","parent","remove","end","data","isOneDayBanner","oneDayFromNow","Date","now","setCookie","Math","ceil","document","window","location","protocol","name","value","_cookies","toString","expiration","arguments","length","undefined","cookie","expires","path","exports","parse","str","options","TypeError","obj","dec","decode","index","eqIdx","indexOf","endIdx","lastIndexOf","key","slice","trim","val","charCodeAt","tryDecode","serialize","opt","enc","encode","fieldContentRegExp","test","maxAge","isNaN","isFinite","floor","domain","__toString","call","isDate","valueOf","toUTCString","httpOnly","secure","partitioned","priority","toLowerCase","sameSite","Object","prototype","decodeURIComponent","encodeURIComponent","e"],"sourceRoot":""}