{"version":3,"file":"favorite-toggle.b7dd8366.js","mappings":";iLAEIA,EAAY,SAAUC,EAAMC,EAAOC,GACnC,QAAYF,EAAMC,EAAOC,IAGzBC,EAAY,SAAUH,GACtB,IAAII,EAAO,QAAYJ,GACvB,OAAO,OAAaI,+GCRpBC,EAAsC,WAStC,OARAA,EAAWC,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,GAEJH,EAASa,MAAMC,KAAMP,YAE5BQ,EAAkC,SAAUC,EAAGV,GAC/C,IAAIW,EAAsB,mBAAXC,QAAyBF,EAAEE,OAAOC,UACjD,IAAKF,EAAG,OAAOD,EACf,IAAmBI,EAAYC,EAA3BhB,EAAIY,EAAEL,KAAKI,GAAOM,EAAK,GAC3B,IACI,WAAc,IAANhB,GAAgBA,KAAM,MAAQc,EAAIf,EAAEkB,QAAQC,MAAMF,EAAGG,KAAKL,EAAExB,OAExE,MAAO8B,GAASL,EAAI,CAAEK,MAAOA,GAC7B,QACI,IACQN,IAAMA,EAAEI,OAASP,EAAIZ,EAAU,SAAIY,EAAEL,KAAKP,GAElD,QAAU,GAAIgB,EAAG,MAAMA,EAAEK,OAE7B,OAAOJ,GAMPK,EAAiB,SAAUC,GAC3B,IAAIC,EAAKD,EAAGC,GAAIC,EAAgBF,EAAGE,cAC/BC,EAAKhB,GAAO,IAAAiB,WAAS,GAAQ,GAAIC,EAAaF,EAAG,GAAIG,EAAgBH,EAAG,GAgB5E,IALA,IAAAI,YAAU,WACN,IAAIC,EAAY,UACZC,EAAoB,QAA0BR,EAAIO,GACtDF,EAAcG,KACf,CAACR,KACCA,EACD,OAAO,KACX,IACIS,EAAa,CACbC,IAAK,MACLC,OAAQ,SACRC,SAAU,YAOd,MALa,OANFC,SAASC,gBAAgBC,OAOhCN,EAAWC,IAAM,SACjBD,EAAWE,OAAS,QACpBF,EAAWG,SAAW,YAElB,UAAM,SAAUzC,EAAS,CAAE6C,UAAW,mBAAqBZ,EAAa,gCAAkC,KAAOH,EAAgB,IAAMA,EAAgB,IAAKgB,QAAS,WAAc,OA5BhK,SAAUjB,GACjC,IAAIO,EAAY,UAChB,GAAI,QAA0BP,EAAIO,GAG9B,OAFA,WAA6BP,EAAIO,QACjCF,GAAc,GAGlB,QAA0BL,EAAIO,GAC9BF,GAAc,GAoBgLa,CAAqBlB,KAAU,CAAEmB,SAAU,EAAC,SAAK,MAAOhD,EAAS,CAAE6C,UAAW,wBAAyBI,KAAM,eAAgBC,MAAO,6BAA8BC,QAAS,iBAAmB,CAAEH,UAAU,SAAK,OAAQ,CAAEI,KAAM,eAAgBC,EAAG,wNAAqN,UAAY,IAAS,UAAM,OAAQrD,EAAS,CAAE6C,UAAW,UAAW,YAAa,UAAY,CAAEG,SAAU,CAACf,EAAaK,EAAWE,OAASF,EAAWC,IAAK,IAAKD,EAAWG,iBAAc,WAAa,wEC9D/0B1B,EAAkC,SAAUC,EAAGV,GAC/C,IAAIW,EAAsB,mBAAXC,QAAyBF,EAAEE,OAAOC,UACjD,IAAKF,EAAG,OAAOD,EACf,IAAmBI,EAAYC,EAA3BhB,EAAIY,EAAEL,KAAKI,GAAOM,EAAK,GAC3B,IACI,WAAc,IAANhB,GAAgBA,KAAM,MAAQc,EAAIf,EAAEkB,QAAQC,MAAMF,EAAGG,KAAKL,EAAExB,OAExE,MAAO8B,GAASL,EAAI,CAAEK,MAAOA,GAC7B,QACI,IACQN,IAAMA,EAAEI,OAASP,EAAIZ,EAAU,SAAIY,EAAEL,KAAKP,GAElD,QAAU,GAAIgB,EAAG,MAAMA,EAAEK,OAE7B,OAAOJ,GAEPgC,EAAgD,SAAUC,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBlD,UAAUC,OAAc,IAAK,IAA4Bc,EAAxBjB,EAAI,EAAGqD,EAAIF,EAAKhD,OAAYH,EAAIqD,EAAGrD,KACxEiB,GAAQjB,KAAKmD,IACRlC,IAAIA,EAAKqC,MAAMjD,UAAUkD,MAAMhD,KAAK4C,EAAM,EAAGnD,IAClDiB,EAAGjB,GAAKmD,EAAKnD,IAGrB,OAAOkD,EAAGM,OAAOvC,GAAMqC,MAAMjD,UAAUkD,MAAMhD,KAAK4C,KAG3CM,EAAwB,gBAC/BC,EAAiB,CACjBC,KAAM,IACNC,SAAU,SACVC,QAAQ,EACRC,QAAS,KAqBFC,EAAwB,CAAEC,IAnB3B,WACN,IAAIjC,GAAY,QAAU0B,GAC1B,OAAK1B,GACM,CAAEkC,WAAY,KAgBkBC,IAZrC,SAAU1C,EAAIO,GACpB,IAAIkC,EAAahB,EAAcA,EAAc,GAAIvC,GAASqB,MAAAA,OAA6C,EAASA,EAAUkC,YAAclC,EAAUkC,WAAa,KAAM,GAAQ,CACzKzC,IACD,GAEH,OADA,QAAUiC,EAAuBU,KAAKC,UAAU,CAAEH,WAAYA,IAAeP,GACtE,CAAEO,WAAYA,IAOgC9B,OAL5C,SAAUX,EAAIO,GACvB,IAAIkC,EAAalC,EAAUkC,WAAWI,QAAO,SAAU9E,GAAS,OAAOA,IAAUiC,KAEjF,OADA,QAAUiC,EAAuBU,KAAKC,UAAU,CAAEH,WAAYA,IAAeP,GACtE,CAAEO,WAAYA,IAEgDK,IAb/D,SAAU9C,EAAIO,GAAa,IAAIR,EAAI,OAA6F,QAArFA,EAAKQ,MAAAA,OAA6C,EAASA,EAAUkC,kBAA+B,IAAP1C,OAAgB,EAASA,EAAGgD,SAAS/C,yBCrCvL,SAAS3B,EAAQ2E,GACf,IAAK,IAAIxE,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIyE,EAASvE,UAAUF,GACvB,IAAK,IAAI0E,KAAOD,EACdD,EAAOE,GAAOD,EAAOC,GAGzB,OAAOF,EAyHT,IAAIG,EAlGJ,SAASC,EAAMC,EAAWC,GACxB,SAASZ,EAAKQ,EAAKnF,EAAOwF,GACxB,GAAwB,oBAAb1C,SAAX,CAMkC,iBAFlC0C,EAAalF,EAAO,GAAIiF,EAAmBC,IAErBjB,UACpBiB,EAAWjB,QAAU,IAAIkB,KAAKA,KAAKC,MAA6B,MAArBF,EAAWjB,UAEpDiB,EAAWjB,UACbiB,EAAWjB,QAAUiB,EAAWjB,QAAQoB,eAG1CR,EAAMS,mBAAmBT,GACtBU,QAAQ,uBAAwBC,oBAChCD,QAAQ,QAASE,QAEpB,IAAIC,EAAwB,GAC5B,IAAK,IAAIC,KAAiBT,EACnBA,EAAWS,KAIhBD,GAAyB,KAAOC,GAEE,IAA9BT,EAAWS,KAWfD,GAAyB,IAAMR,EAAWS,GAAeC,MAAM,KAAK,KAGtE,OAAQpD,SAASqD,OACfhB,EAAM,IAAMG,EAAUc,MAAMpG,EAAOmF,GAAOa,GA6B9C,OAAO3F,OAAOgG,OACZ,CACE1B,IAAKA,EACLF,IA7BJ,SAAcU,GACZ,GAAwB,oBAAbrC,YAA6BnC,UAAUC,QAAWuE,GAA7D,CAQA,IAFA,IAAImB,EAAUxD,SAASqD,OAASrD,SAASqD,OAAOD,MAAM,MAAQ,GAC1DK,EAAM,GACD9F,EAAI,EAAGA,EAAI6F,EAAQ1F,OAAQH,IAAK,CACvC,IAAI+F,EAAQF,EAAQ7F,GAAGyF,MAAM,KACzBlG,EAAQwG,EAAMxC,MAAM,GAAGyC,KAAK,KAEhC,IACE,IAAIC,EAAWZ,mBAAmBU,EAAM,IAGxC,GAFAD,EAAIG,GAAYpB,EAAUqB,KAAK3G,EAAO0G,GAElCvB,IAAQuB,EACV,MAEF,MAAOjF,KAGX,OAAO0D,EAAMoB,EAAIpB,GAAOoB,IAOtB3D,OAAQ,SAAUuC,EAAKK,GACrBb,EACEQ,EACA,GACA7E,EAAO,GAAIkF,EAAY,CACrBjB,SAAU,MAIhBqC,eAAgB,SAAUpB,GACxB,OAAOH,EAAKnE,KAAKoE,UAAWhF,EAAO,GAAIY,KAAKsE,WAAYA,KAE1DqB,cAAe,SAAUvB,GACvB,OAAOD,EAAK/E,EAAO,GAAIY,KAAKoE,UAAWA,GAAYpE,KAAKsE,cAG5D,CACEA,WAAY,CAAExF,MAAOK,OAAOyG,OAAOvB,IACnCD,UAAW,CAAEtF,MAAOK,OAAOyG,OAAOxB,MAK9BD,CApHa,CACrBsB,KAAM,SAAU3G,GAId,MAHiB,MAAbA,EAAM,KACRA,EAAQA,EAAMgE,MAAM,GAAI,IAEnBhE,EAAM6F,QAAQ,mBAAoBC,qBAE3CM,MAAO,SAAUpG,GACf,OAAO4F,mBAAmB5F,GAAO6F,QAC/B,2CACAC,sBA0G2B,CAAE1B,KAAM,MAGzC","sources":["webpack://ucn/./src/common/cookie/cookie.ts","webpack://ucn/./src/react/components/ui/FavoriteToggle/FavoriteToggle.tsx","webpack://ucn/./src/services/favorites/favorite-cookie-service.ts","webpack://ucn/./node_modules/js-cookie/dist/js.cookie.mjs"],"sourcesContent":["import Cookies from \"js-cookie\";\nimport { tryParseJson } from \"@common/try-parse-json.js\";\nvar setCookie = function (name, value, options) {\n Cookies.set(name, value, options);\n};\nvar removeCookie = function (name) { return Cookies.remove(name); };\nvar getCookie = function (name) {\n var data = Cookies.get(name);\n return tryParseJson(data);\n};\nexport { setCookie, removeCookie, getCookie };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport \"./styles.scss\";\nimport { useEffect, useState } from \"react\";\nimport { favoriteCookieService } from \"@services/favorites/favorite-cookie-service\";\nvar FavoriteToggle = function (_a) {\n var id = _a.id, modifierClass = _a.modifierClass;\n var _b = __read(useState(false), 2), isSelected = _b[0], setIsSelected = _b[1];\n var handleFavoriteToggle = function (id) {\n var favorites = favoriteCookieService.get();\n if (favoriteCookieService.has(id, favorites)) {\n favoriteCookieService.remove(id, favorites);\n setIsSelected(false);\n return;\n }\n favoriteCookieService.set(id, favorites);\n setIsSelected(true);\n };\n useEffect(function () {\n var favorites = favoriteCookieService.get();\n var isSelectedOnMount = favoriteCookieService.has(id, favorites);\n setIsSelected(isSelectedOnMount);\n }, [id]);\n if (!id)\n return null;\n var lang = document.documentElement.lang;\n var dictionary = {\n add: \"Add\",\n remove: \"Remove\",\n favorite: \"favorite\",\n };\n if (lang === \"da\") {\n dictionary.add = \"Tilføj\";\n dictionary.remove = \"Fjern\";\n dictionary.favorite = \"favorit\";\n }\n return (_jsxs(\"button\", __assign({ className: \"favorite-toggle\" + (isSelected ? \" favorite-toggle--is-selected\" : \"\") + (modifierClass ? \" \" + modifierClass : \"\"), onClick: function () { return handleFavoriteToggle(id); } }, { children: [_jsx(\"svg\", __assign({ className: \"favorite-toggle__icon\", role: \"presentation\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"-50 0 612 512\" }, { children: _jsx(\"path\", { fill: \"currentColor\", d: \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\" }, void 0) }), void 0), _jsxs(\"span\", __assign({ className: \"sr-only\", \"aria-live\": \"polite\" }, { children: [isSelected ? dictionary.remove : dictionary.add, \" \", dictionary.favorite] }), void 0)] }), void 0));\n};\nexport { FavoriteToggle };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getCookie, setCookie } from \"@common/cookie/cookie\";\nexport var FAVORITES_COOKIE_NAME = \"ucn-favorites\";\nvar COOKIE_OPTIONS = {\n path: \"/\",\n sameSite: \"strict\",\n secure: true,\n expires: 500,\n};\nvar get = function () {\n var favorites = getCookie(FAVORITES_COOKIE_NAME);\n if (!favorites)\n return { collection: [] };\n return favorites;\n};\nvar has = function (id, favorites) { var _a; return (_a = favorites === null || favorites === void 0 ? void 0 : favorites.collection) === null || _a === void 0 ? void 0 : _a.includes(id); };\nvar set = function (id, favorites) {\n var collection = __spreadArray(__spreadArray([], __read(((favorites === null || favorites === void 0 ? void 0 : favorites.collection) ? favorites.collection : [])), false), [\n id,\n ], false);\n setCookie(FAVORITES_COOKIE_NAME, JSON.stringify({ collection: collection }), COOKIE_OPTIONS);\n return { collection: collection };\n};\nvar remove = function (id, favorites) {\n var collection = favorites.collection.filter(function (value) { return value !== id; });\n setCookie(FAVORITES_COOKIE_NAME, JSON.stringify({ collection: collection }), COOKIE_OPTIONS);\n return { collection: collection };\n};\nexport var favoriteCookieService = { get: get, set: set, remove: remove, has: has };\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n"],"names":["setCookie","name","value","options","getCookie","data","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__read","o","m","Symbol","iterator","r","e","ar","next","done","push","error","FavoriteToggle","_a","id","modifierClass","_b","useState","isSelected","setIsSelected","useEffect","favorites","isSelectedOnMount","dictionary","add","remove","favorite","document","documentElement","lang","className","onClick","handleFavoriteToggle","children","role","xmlns","viewBox","fill","d","__spreadArray","to","from","pack","l","Array","slice","concat","FAVORITES_COOKIE_NAME","COOKIE_OPTIONS","path","sameSite","secure","expires","favoriteCookieService","get","collection","set","JSON","stringify","filter","has","includes","target","source","key","api","init","converter","defaultAttributes","attributes","Date","now","toUTCString","encodeURIComponent","replace","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","create","cookies","jar","parts","join","foundKey","read","withAttributes","withConverter","freeze"],"sourceRoot":""}