{"version":3,"file":"manage.mjs","sources":["../../../../src/digitalmarketplace/scripts/cookies/manage.ts"],"sourcesContent":["import Cookies from 'js-cookie'\nimport { CookiePreferences, CookieUpdateOption } from './manage.types'\nimport { updateDataLayer } from '../analytics/data-layer'\n\nconst cookieUpdateOptions: CookieUpdateOption[] = [\n  {\n    cookieName: 'usage',\n    cookiePrefixes: ['_ga', '_gi']\n  },\n  {\n    cookieName: 'glassbox',\n    cookiePrefixes: ['_cls']\n  }\n]\n\nconst DOMAINS = [\n  '.marketplace.team',\n  '.digitalmarketplace.service.gov.uk',\n  'www.applytosupply.digitalmarketplace.service.gov.uk'\n]\n\n// When not in production we want to delete cookies in localhost too\nconst getDomains = () => {\n  if (window.location.hostname === 'localhost') {\n    return DOMAINS.concat(['localhost'])\n  }\n\n  return DOMAINS\n}\n\nconst getCookiePreferences = (): CookiePreferences => {\n  const defaultCookieSettings = '{\"usage\":false,\"glassbox\":false}'\n\n  return JSON.parse(Cookies.get('cookie_preferences_dmp') ?? defaultCookieSettings)\n}\n\nconst setCookiePreferences = (usage: boolean) => {\n  const cookiePreferences: CookiePreferences = getCookiePreferences()\n\n  cookiePreferences.usage = usage\n  cookiePreferences.settings_viewed = true\n\n  Cookies.set('cookie_preferences_dmp', JSON.stringify(cookiePreferences), { expires: 365 })\n\n  updateDataLayer(cookiePreferences)\n  removeUnwantedCookies()\n}\n\nconst removeUnwantedCookies = (): void => {\n  const cookieList: string[] = Object.keys(Cookies.get())\n  const cookiesToRemove: string[] = ['digitalmarketplace_cookie_settings_viewed', 'digitalmarketplace_google_analytics_enabled', 'digitalmarketplace_cookie_options_v1', 'dm_cookies_policy']\n  const cookiePreferences: CookiePreferences = getCookiePreferences()\n  const cookiePrefixes: string[] = []\n\n  cookieUpdateOptions.forEach((cookieUpdateOption) => {\n    if (!cookiePreferences[cookieUpdateOption.cookieName]) cookiePrefixes.push(...cookieUpdateOption.cookiePrefixes)\n  })\n\n  for (let i = 0; i < cookieList.length; i++) {\n    const cookieName = cookieList[i]\n\n    if (cookiePrefixes.some((cookiePrefix) => cookieName.startsWith(cookiePrefix))) cookiesToRemove.push(cookieName)\n  }\n\n  getDomains().forEach((domain) => {\n    cookiesToRemove.forEach((cookieName) => { Cookies.remove(cookieName, { path: '/', domain: domain }) })\n  })\n}\n\nexport {\n  getCookiePreferences,\n  setCookiePreferences,\n  removeUnwantedCookies\n}"],"names":["Cookies"],"mappings":";;;AAIA,MAAM,mBAAmB,GAAyB;AAChD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,UAAU;QACtB,cAAc,EAAE,CAAC,MAAM;AACxB;CACF;AAED,MAAM,OAAO,GAAG;IACd,mBAAmB;IACnB,oCAAoC;IACpC;CACD;AAED;AACA,MAAM,UAAU,GAAG,MAAK;IACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,EAAE;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;IACtC;AAEA,IAAA,OAAO,OAAO;AAChB,CAAC;AAED,MAAM,oBAAoB,GAAG,MAAwB;IACnD,MAAM,qBAAqB,GAAG,kCAAkC;AAEhE,IAAA,OAAO,IAAI,CAAC,KAAK,CAACA,GAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,qBAAqB,CAAC;AACnF;AAEA,MAAM,oBAAoB,GAAG,CAAC,KAAc,KAAI;AAC9C,IAAA,MAAM,iBAAiB,GAAsB,oBAAoB,EAAE;AAEnE,IAAA,iBAAiB,CAAC,KAAK,GAAG,KAAK;AAC/B,IAAA,iBAAiB,CAAC,eAAe,GAAG,IAAI;AAExC,IAAAA,GAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAE1F,eAAe,CAAC,iBAAiB,CAAC;AAClC,IAAA,qBAAqB,EAAE;AACzB;AAEA,MAAM,qBAAqB,GAAG,MAAW;IACvC,MAAM,UAAU,GAAa,MAAM,CAAC,IAAI,CAACA,GAAO,CAAC,GAAG,EAAE,CAAC;IACvD,MAAM,eAAe,GAAa,CAAC,2CAA2C,EAAE,6CAA6C,EAAE,sCAAsC,EAAE,mBAAmB,CAAC;AAC3L,IAAA,MAAM,iBAAiB,GAAsB,oBAAoB,EAAE;IACnE,MAAM,cAAc,GAAa,EAAE;AAEnC,IAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,kBAAkB,KAAI;AACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,UAAU,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,cAAc,CAAC;AAClH,IAAA,CAAC,CAAC;AAEF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;AAEhC,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAAE,YAAA,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;IAClH;AAEA,IAAA,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI,EAAGA,GAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC;AACxG,IAAA,CAAC,CAAC;AACJ;;;;"}